Skip to content

Commit

Permalink
New working systems
Browse files Browse the repository at this point in the history
-------------------
Wonder Circus (Japan, v1.1.1) [nnap]
  • Loading branch information
Osso13 committed Dec 11, 2024
1 parent b01b42d commit 21e2da2
Show file tree
Hide file tree
Showing 2 changed files with 143 additions and 1 deletion.
143 changes: 142 additions & 1 deletion src/mame/excellent/lastbank.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Undumped games on similar hardware (ES-9402 or ES-9410):
TODO:
- lastbank: sprites should be clip masked during gameplay (verify);
- fever13: OKI sound volume overdrives a lot;
- wcircus: sound flags / latches are somewhat different, need correct implementation
- hookup hopper device;
**************************************************************************************************/
Expand Down Expand Up @@ -83,7 +84,7 @@ class lastbank_state : public driver_device
void key_select_w(uint8_t data);

TIMER_DEVICE_CALLBACK_MEMBER(scanline_cb);
void audio_map(address_map &map) ATTR_COLD;
virtual void audio_map(address_map &map) ATTR_COLD;
void tc0091lvc_map(address_map &map) ATTR_COLD;
};

Expand All @@ -99,6 +100,17 @@ class fever13_state : public lastbank_state
virtual void audio_io(address_map &map) override ATTR_COLD;
};

class wcircus_state : public fever13_state
{
public:
wcircus_state(const machine_config &mconfig, device_type type, const char *tag)
: fever13_state(mconfig, type, tag)
{ }

protected:
virtual void audio_map(address_map &map) override ATTR_COLD;
};


void lastbank_state::machine_start()
{
Expand Down Expand Up @@ -229,6 +241,13 @@ void fever13_state::audio_io(address_map &map)
map(0xc0, 0xc0).r("soundlatch1", FUNC(generic_latch_8_device::read)).w(FUNC(fever13_state::sound_flags_w));
}

void wcircus_state::audio_map(address_map &map)
{
map(0x0000, 0x7fff).rom(); // TODO: partly banked?
map(0x8000, 0x87ff).ram();
}


static INPUT_PORTS_START( lastbank )
PORT_START("COINS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CODE(KEYCODE_M)
Expand Down Expand Up @@ -608,6 +627,110 @@ static INPUT_PORTS_START( mir7hg )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END

static INPUT_PORTS_START( wcircus )
PORT_INCLUDE( fever13 )

PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x03, 0x03, "Max Bet" ) PORT_DIPLOCATION("DSW1:1,2")
PORT_DIPSETTING( 0x03, "5" )
PORT_DIPSETTING( 0x02, "10" )
PORT_DIPSETTING( 0x01, "50" )
PORT_DIPSETTING( 0x00, "100" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Bet" ) PORT_DIPLOCATION("DSW1:3,4")
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "5" )
PORT_DIPSETTING( 0x04, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_DIPNAME( 0x10, 0x10, "Double Up Game" ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Payout Rate Type" ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x00, "Credit In / Out" )
PORT_DIPSETTING( 0x20, "Game In / Out" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7") // no effect in test mode
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8") // no effect in test mode
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )

PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x07, 0x07, "Credit Limit" ) PORT_DIPLOCATION("DSW2:1,2,3")
PORT_DIPSETTING( 0x07, "1000" )
PORT_DIPSETTING( 0x06, "2000" )
PORT_DIPSETTING( 0x05, "3000" )
PORT_DIPSETTING( 0x04, "5000" )
PORT_DIPSETTING( 0x03, "10000" )
PORT_DIPSETTING( 0x02, "20000" )
PORT_DIPSETTING( 0x01, "30000" )
PORT_DIPSETTING( 0x00, "50000" )
PORT_DIPNAME( 0x38, 0x38, "Win Percentage" ) PORT_DIPLOCATION("DSW2:4,5,6")
PORT_DIPSETTING( 0x00, "55" )
PORT_DIPSETTING( 0x08, "60" )
PORT_DIPSETTING( 0x10, "65" )
PORT_DIPSETTING( 0x18, "70" )
PORT_DIPSETTING( 0x20, "75" )
PORT_DIPSETTING( 0x28, "80" )
PORT_DIPSETTING( 0x30, "85" )
PORT_DIPSETTING( 0x38, "90" )
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )

PORT_MODIFY("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Hopper Motor" ) PORT_DIPLOCATION("DSW3:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Hopper Switch" ) PORT_DIPLOCATION("DSW3:2")
PORT_DIPSETTING( 0x02, "Micro" )
PORT_DIPSETTING( 0x00, "Sensor" )
PORT_DIPNAME( 0x1c, 0x1c, "Coin A / Coin C" ) PORT_DIPLOCATION("DSW3:3,4,5")
PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x14, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x10, "1 Coin / 50 Credits" )
PORT_DIPSETTING( 0x0c, "1 Coin / 100 Credits" )
PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW3:6,7,8")
PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0xa0, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x80, "1 Coin / 50 Credits" )
PORT_DIPSETTING( 0x60, "1 Coin / 100 Credits" )

PORT_MODIFY("DSW4")
PORT_DIPNAME( 0x03, 0x03, "Key In" ) PORT_DIPLOCATION("DSW4:1,2")
PORT_DIPSETTING( 0x03, "50 Credits" )
PORT_DIPSETTING( 0x02, "100 Credits" )
PORT_DIPSETTING( 0x01, "500 Credits" )
PORT_DIPSETTING( 0x00, "1000 Credits" )
PORT_DIPNAME( 0x1c, 0x1c, "Pay Out" ) PORT_DIPLOCATION("DSW4:3,4,5")
PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x18, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x14, "1 Coin / 10 Credits" )
PORT_DIPSETTING( 0x10, "1 Coin / 50 Credits" )
PORT_DIPSETTING( 0x0c, "1 Coin / 100 Credits" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:6") // no effect in test mode
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0xc0, "Left / Center / Right Stop Buttons" ) PORT_DIPLOCATION("DSW4:7,8")
PORT_DIPSETTING( 0xc0, "Take / Small / Big" )
PORT_DIPSETTING( 0x80, "W-Up / Small / Big" )
PORT_DIPSETTING( 0x40, "Small / Big / Take" )
PORT_DIPSETTING( 0x00, "Small / Big / W-Up" )
INPUT_PORTS_END


TIMER_DEVICE_CALLBACK_MEMBER(lastbank_state::scanline_cb)
{
Expand Down Expand Up @@ -758,10 +881,28 @@ ROM_START( mir7hg ) // v1.0.2 Feb 19 1996 15:05:17
ROM_LOAD( "5.u60", 0x00000, 0x80000, CRC(13d8c30a) SHA1(1a2dc0c97992e9e1d73c5f3f713db8599d2d2285) ) // 11xxxxxxxxxxxxxxxxx = 0xFF
ROM_END

ROM_START( wcircus )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "6.u9", 0x00000, 0x40000, CRC(6cb29023) SHA1(e1a980f789d4c66ddd80e819d0a94991a5ad1f2b) )

ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "3.u48", 0x00000, 0x10000, CRC(ec8a0ccc) SHA1(84ffb5c9614764500f41cff8f0d6d5ad9f0d8084) )

ROM_REGION( 0x200000, "maincpu:gfx", ROMREGION_ERASEFF )
ROM_LOAD( "27c802.u11", 0x000000, 0x100000, CRC(fefee118) SHA1(21c81e4a7d5ac86e1ebb452647a1908fd4ee9600) ) // 1xxxxxxxxxxxxxxxxxxx = 0xFF

ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "5.u55", 0x00000, 0x40000, CRC(390911e9) SHA1(10ed6fca1a0d183f47c231503a3077faab0d593e) ) // 1xxxxxxxxxxxxxxxxx = 0xFF

ROM_REGION( 0x80000, "essnd", 0 ) // Samples
ROM_LOAD( "7.u60", 0x00000, 0x80000, CRC(d018ed97) SHA1(02eb6559805f81f371d39b9c0660cd6d9d392656) )
ROM_END

} // anonymous namespace


GAME( 1994, lastbank, 0, lastbank, lastbank, lastbank_state, empty_init, ROT0, "Excellent System", "Last Bank (v1.16)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, fever13, 0, lastbank, fever13, fever13_state, empty_init, ROT0, "Excellent System", "Fever 13 (Japan, v1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1995, ukiyobox, fever13, lastbank, ukiyobox, fever13_state, empty_init, ROT0, "Excellent System", "Ukiyo Box (Japan, v1.3.7)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 1996, mir7hg, 0, lastbank, mir7hg, fever13_state, empty_init, ROT0, "Excellent System", "Miracle Seven - Heaven's Gate (Japan, v1.0.2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
GAME( 199?, wcircus, 0, lastbank, wcircus, wcircus_state, empty_init, ROT0, "Cobra", "Wonder Circus (Japan, v1.1.1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
1 change: 1 addition & 0 deletions src/mame/mame.lst
Original file line number Diff line number Diff line change
Expand Up @@ -17943,6 +17943,7 @@ fever13 // (c) 1995 Excellent System
lastbank // (c) 1994 Excellent System
mir7hg // (c) 1996 Excellent System
ukiyobox // (c) 1995 Excellent System
wcircus // (c) 199? Cobra

@source:excellent/witch.cpp
keirinou // (c) 1987 Excellent System
Expand Down

0 comments on commit 21e2da2

Please sign in to comment.