diff options
| author | 2025-10-30 21:32:27 +0100 | |
|---|---|---|
| committer | 2025-10-30 21:32:27 +0100 | |
| commit | eefb402fbc4b5458c36768323cfef2f0e9dfc5b6 (patch) | |
| tree | ea60b6b51a6ff344fd26af607cdeeac0920b1aeb | |
| parent | 73fda89bdd1bc0c7fa74ea416f20df013038759f (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.cpp | 379 | ||||
| -rw-r--r-- | src/mame/mame.lst | 3 | ||||
| -rw-r--r-- | src/mame/misc/cointek.cpp | 4 |
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); |
