summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/funybubl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/funybubl.cpp')
-rw-r--r--src/mame/drivers/funybubl.cpp317
1 files changed, 0 insertions, 317 deletions
diff --git a/src/mame/drivers/funybubl.cpp b/src/mame/drivers/funybubl.cpp
deleted file mode 100644
index 61d0199f67e..00000000000
--- a/src/mame/drivers/funybubl.cpp
+++ /dev/null
@@ -1,317 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/*
-
-Funny Bubble ...
-
-It's a Puzzloop (Lup Lup Puzzle) rip-off .. but with two Z80 CPUs
-
-The program roms say omega 1997
- Omega made Super Lup Lup Puzzle/Lup Lup Puzzle/Puzzle Bang Bang see vamphalf.c
- These games copy the game play of Puzzloop but add adult picture backgrounds.
-
-The gfx roms say 1999
-Title screen has no date
-
-( a z80 as the main cpu in 1999 ??! )
-
-Did In Chang Electronic Co do the "original" version of Funny Bubble?
- Comad either hacked or licensed it. As "In Chang Electronic" are
- spelled out in the default high score table ;-)
-
-todo :
- convert to tilemaps
-
-
- +-----------------------------------------+
- | 8MHz M6295 SU12 UG1 UG3 |
- | SU13 UG2 UG4 |
-++ 6116 Z80 |
-| SU6 |
-|J 6116 6116 |
-|A 6116 A1020B 6116 |
-|M 6116 UM6264 6116 |
-|M |
-|A SW2* SW4* |
-| |
-| SW1 SW3* UG13 UG16 |
-++ UB16 UH13 UG16 |
- | UM6264 UG15 UG17 |
- | Z80 30MHz 12MHZ UH15 UH17 |
- +-----------------------------------------+
-
- Z80: ZiLOG Z0840006PSC (6MHz rated) - Both Z80s
-A1020B: Actel A1020B PL84C
- M6295: OKI M6295 (badged as AD-65)
-
-Note: SW2, SW3 & SW4 not populated
-
-*/
-
-
-
-#include "emu.h"
-#include "includes/funybubl.h"
-
-#include "cpu/z80/z80.h"
-#include "screen.h"
-#include "speaker.h"
-
-
-WRITE8_MEMBER(funybubl_state::vidram_bank_w)
-{
- m_vrambank->set_bank(data & 1);
-}
-
-WRITE8_MEMBER(funybubl_state::cpurombank_w)
-{
- m_mainbank->set_entry(data & 0x3f); // should we add a check that (data&0x3f) < #banks?
-}
-
-WRITE8_MEMBER(funybubl_state::oki_bank_w)
-{
- m_okibank->set_entry(data & 1);
-}
-
-
-void funybubl_state::funybubl_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("mainbank"); // banked port 1?
- map(0xc400, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // palette
- map(0xd000, 0xdfff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); // banked port 0?
- map(0xe000, 0xffff).ram();
-}
-
-void funybubl_state::io_map(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x00).portr("SYSTEM").w(FUNC(funybubl_state::vidram_bank_w)); // vidram bank
- map(0x01, 0x01).portr("P1").w(FUNC(funybubl_state::cpurombank_w)); // rom bank?
- map(0x02, 0x02).portr("P2");
- map(0x03, 0x03).portr("DSW").w(m_soundlatch, FUNC(generic_latch_8_device::write));
- map(0x06, 0x06).nopr(); /* Nothing is done with the data read */
- map(0x06, 0x06).nopw(); /* Written directly after IO port 0 */
- map(0x07, 0x07).nopw(); /* Reset something on startup - Sound CPU ?? */
-}
-
-void funybubl_state::vrambank_map(address_map &map)
-{
- map(0x0000, 0x0fff).ram().w(FUNC(funybubl_state::tilemap_w)).share("tilemapram");
- map(0x1000, 0x1fff).ram().share("spriteram");
-}
-
-/* Sound CPU */
-
-void funybubl_state::sound_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0x87ff).ram();
- map(0x9000, 0x9000).w(FUNC(funybubl_state::oki_bank_w));
- map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
-}
-
-void funybubl_state::oki_map(address_map &map)
-{
- map(0x00000, 0x1ffff).rom();
- map(0x20000, 0x3ffff).bankr("okibank");
-}
-
-
-static INPUT_PORTS_START( funybubl )
- PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
-
- PORT_START("P1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
-
- PORT_START("P2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Maybe unused */
-
- PORT_START("DSW")
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
- PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 3C_2C ) )
- PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Free_Play) )
- PORT_DIPNAME( 0x38, 0x38, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5,6")
- PORT_DIPSETTING( 0x30, DEF_STR( Very_Easy) )
- PORT_DIPSETTING( 0x28, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x38, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x20, "Hard 1" )
- PORT_DIPSETTING( 0x18, "Hard 2" )
- PORT_DIPSETTING( 0x10, "Hard 3" )
- PORT_DIPSETTING( 0x08, "Hard 4" )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x00, "Nudity" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, "Semi" )
- PORT_DIPSETTING( 0x00, "Full" )
-INPUT_PORTS_END
-
-
-
-static const gfx_layout layout_8x8x8 =
-{
- 8,8,
- RGN_FRAC(1,8),
- 8,
- { RGN_FRAC(3,8), RGN_FRAC(2,8), RGN_FRAC(1,8), RGN_FRAC(0,8), RGN_FRAC(7,8), RGN_FRAC(6,8), RGN_FRAC(5,8), RGN_FRAC(4,8) },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
-static const gfx_layout layout_16x16x8 =
-{
- 16,16,
- RGN_FRAC(1,4),
- 8,
- { RGN_FRAC(3,4)+4,RGN_FRAC(3,4)+0, RGN_FRAC(2,4)+4, RGN_FRAC(2,4)+0, RGN_FRAC(1,4)+4, RGN_FRAC(1,4)+0, RGN_FRAC(0,4)+4, RGN_FRAC(0,4)+0 },
- { STEP4(0,1), STEP4(4*2,1), STEP4(16*4*2*2,1), STEP4(16*4*2*2+4*2,1) },
- { STEP16(0,4*2*2) },
- 32*16
-};
-
-
-static GFXDECODE_START( gfx_funybubl )
- GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8, 0x100, 2 )
- GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x000, 1 )
-GFXDECODE_END
-
-
-
-void funybubl_state::machine_start()
-{
- m_mainbank->configure_entries(0, 0x10, memregion("maincpu")->base(), 0x4000);
- m_okibank->configure_entries(0, 2, memregion("oki")->base() + 0x20000, 0x20000);
-
- m_vrambank->set_bank(0);
-}
-
-
-void funybubl_state::funybubl(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, 12000000/2); /* 6 MHz?? */
- m_maincpu->set_addrmap(AS_PROGRAM, &funybubl_state::funybubl_map);
- m_maincpu->set_addrmap(AS_IO, &funybubl_state::io_map);
- m_maincpu->set_vblank_int("screen", FUNC(funybubl_state::irq0_line_hold));
-
- Z80(config, m_audiocpu, 8000000/2); /* 4 MHz?? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &funybubl_state::sound_map);
-
- ADDRESS_MAP_BANK(config, m_vrambank).set_map(&funybubl_state::vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 13, 0x1000);
-
- /* video hardware */
- 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(512, 256);
- screen.set_visarea(12*8, 512-12*8-1, 16, 256-16-1);
-// screen.set_visarea(0*8, 512-1, 0, 256-1);
- screen.set_screen_update(FUNC(funybubl_state::screen_update));
- screen.set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_funybubl);
- PALETTE(config, m_palette).set_format(4, &funybubl_state::funybubl_R6B6G6, 0xc00/4);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- GENERIC_LATCH_8(config, m_soundlatch);
- m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
-
- OKIM6295(config, m_oki, 8000000/8, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
- m_oki->set_addrmap(0, &funybubl_state::oki_map);
- m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
-}
-
-
-
-ROM_START( funybubl )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* main z80, lots of banked data */
- ROM_LOAD( "a.ub16", 0x00000, 0x40000, CRC(4e799cdd) SHA1(c6474fd2f621c27224e847ecb88a1ae17a0dbaf9) )
-
- ROM_REGION( 0x200000, "gfx1", ROMREGION_INVERT ) // bg gfx 8x8x8
- ROM_LOAD( "f.ug13", 0x000000, 0x40000, CRC(64d7163d) SHA1(2619ac96e05779ea23c7f0f71665d284c79ba72f) )
- ROM_LOAD( "g.uh13", 0x040000, 0x40000, CRC(6891e2b8) SHA1(ca711019e5c330759d2a90024dbc0e6731b6227f) )
- ROM_LOAD( "h.ug15", 0x080000, 0x40000, CRC(ca7f7528) SHA1(6becfe8fabd19443a13b948838f41e10e5c9dc87) )
- ROM_LOAD( "i.uh15", 0x0c0000, 0x40000, CRC(23608ec6) SHA1(1c0a5d6e300f9a1abfda73d6a6a31e29a42b30ad) )
- ROM_LOAD( "l.ug16", 0x100000, 0x40000, CRC(0acf8143) SHA1(f49f45496b870d1f51f09a4dda8c5bb7763c40d3) )
- ROM_LOAD( "m.uh16", 0x140000, 0x40000, CRC(55ed8d9c) SHA1(f17bb4d02d4eedc2f297bb008be2fa340bc321d2) )
- ROM_LOAD( "n.ug17", 0x180000, 0x40000, CRC(52398b68) SHA1(522baa8123998e9161fa1ccaf760ac006c5be2dd) )
- ROM_LOAD( "o.uh17", 0x1c0000, 0x40000, CRC(446e31b2) SHA1(7f37a7090c83f2c9b07f1993707540fb32bbed35) )
-
- ROM_REGION( 0x200000, "gfx2", ROMREGION_INVERT )
- ROM_LOAD( "d.ug1", 0x000000, 0x80000, CRC(b7ebbc00) SHA1(92520fda2f8f242b8cd49aeaac21b279f48276bf) ) /* Same as below, different labels */
- ROM_LOAD( "e.ug2", 0x080000, 0x80000, CRC(28afc396) SHA1(555d51948ffb237311112dcfd0516a43f603ff03) )
- ROM_LOAD( "j.ug3", 0x100000, 0x80000, CRC(9e8687cd) SHA1(42fcba2532ae5028fcfc1df50750d99ad2586820) )
- ROM_LOAD( "k.ug4", 0x180000, 0x80000, CRC(63f0e810) SHA1(5c7ed32ee8dc1d9aabc8d136ec370471096356c2) )
-
- ROM_REGION( 0x08000, "audiocpu", 0 ) /* sound z80 (not much code here ..) */
- ROM_LOAD( "p.su6", 0x00000, 0x08000, CRC(33169d4d) SHA1(0ebc932d15b6df022c7e1f44df884e64b25ba745) ) /* Same as below, different label */
-
- ROM_REGION( 0x80000, "oki", 0 )
- ROM_LOAD( "b.su12", 0x00000, 0x20000, CRC(a2d780f4) SHA1(bebba3db21ab9ddde8c6f19db3b67c869df582eb) ) /* Same as below, different label */
- ROM_LOAD( "c.su13", 0x20000, 0x40000, CRC(1f7e9269) SHA1(5c16b49a4e94aec7606d088c2d45a77842ab565b) ) /* Same as below, different label */
-ROM_END
-
-ROM_START( funybublc )
- ROM_REGION( 0x40000, "maincpu", 0 ) /* main z80, lots of banked data */
- ROM_LOAD( "2.ub16", 0x00000, 0x40000, CRC(d684c13f) SHA1(6a58b44dd775f374d6fd476a8fd175c28a83a495) )
-
- ROM_REGION( 0x200000, "gfx1", ROMREGION_INVERT ) // bg gfx 8x8x8
- ROM_LOAD( "7.ug12", 0x000000, 0x40000, CRC(87603d7b) SHA1(21aec4cd011691f8608c3ddab83697bd89634fc8) )
- ROM_LOAD( "8.uh13", 0x040000, 0x40000, CRC(ab6031bd) SHA1(557793817f98c07c82caab4293aed7dffa4dbf7b) )
- ROM_LOAD( "9.ug15", 0x080000, 0x40000, CRC(0e8352ff) SHA1(29679a7ece2585e1a66296439b68bd56c937e313) )
- ROM_LOAD( "10.uh15", 0x0c0000, 0x40000, CRC(df7dd356) SHA1(13b9f40714dfa7b8cebc0191dcdde88b51f5e78c) )
- ROM_LOAD( "13.ug16", 0x100000, 0x40000, CRC(9f57bdd5) SHA1(6fd60da5f5eee0251e3a08957952ed9f037eeaec) )
- ROM_LOAD( "14.uh16", 0x140000, 0x40000, CRC(2ac15ea3) SHA1(de5be6378b4b6eee6faf532c9ef14bd609041cb3) )
- ROM_LOAD( "15.ug17", 0x180000, 0x40000, CRC(9a5e66a6) SHA1(cbe727e4f1e9a7072520d2e30eb0047cc67bff1b) )
- ROM_LOAD( "16.uh17", 0x1c0000, 0x40000, CRC(218060b3) SHA1(35124afce7f0f998b5c4761bbc888235de4e56ef) )
-
- ROM_REGION( 0x200000, "gfx2", ROMREGION_INVERT )
- ROM_LOAD( "5.ug1", 0x000000, 0x80000, CRC(b7ebbc00) SHA1(92520fda2f8f242b8cd49aeaac21b279f48276bf) )
- ROM_LOAD( "6.ug2", 0x080000, 0x80000, CRC(28afc396) SHA1(555d51948ffb237311112dcfd0516a43f603ff03) )
- ROM_LOAD( "11.ug3", 0x100000, 0x80000, CRC(9e8687cd) SHA1(42fcba2532ae5028fcfc1df50750d99ad2586820) )
- ROM_LOAD( "12.ug4", 0x180000, 0x80000, CRC(63f0e810) SHA1(5c7ed32ee8dc1d9aabc8d136ec370471096356c2) )
-
- ROM_REGION( 0x08000, "audiocpu", 0 ) /* sound z80 (not much code here ..) */
- ROM_LOAD( "1.su6", 0x00000, 0x08000, CRC(33169d4d) SHA1(0ebc932d15b6df022c7e1f44df884e64b25ba745) )
-
- ROM_REGION( 0x80000, "oki", 0 )
- ROM_LOAD( "3.su12", 0x00000, 0x20000, CRC(a2d780f4) SHA1(bebba3db21ab9ddde8c6f19db3b67c869df582eb) )
- ROM_LOAD( "4.su13", 0x20000, 0x40000, CRC(1f7e9269) SHA1(5c16b49a4e94aec7606d088c2d45a77842ab565b) )
-ROM_END
-
-
-GAME( 1999, funybubl, 0, funybubl, funybubl, funybubl_state, empty_init, ROT0, "In Chang Electronic Co", "Funny Bubble", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, funybublc,funybubl, funybubl, funybubl, funybubl_state, empty_init, ROT0, "Comad", "Funny Bubble (Comad version)", MACHINE_SUPPORTS_SAVE )