Merge pull request #3594 from wilbertpol/funworld_seta2_fix_ledlamp

Funworld seta2 fix ledlamp
This commit is contained in:
ajrhacker 2018-05-21 14:21:22 -04:00 committed by GitHub
commit 7629ebb831
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 148 additions and 118 deletions

View File

@ -3046,13 +3046,14 @@ READ8_MEMBER(funworld_state::funquiz_ay8910_b_r)
* Machine Start & Reset *
********************************/
MACHINE_START_MEMBER(funworld_state, lunapark)
void lunapark_state::machine_start()
{
funworld_state::machine_start();
uint8_t *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 2, &ROM[0], 0x8000);
}
MACHINE_RESET_MEMBER(funworld_state, lunapark)
void lunapark_state::machine_reset()
{
uint8_t seldsw = (ioport("SELDSW")->read() );
popmessage("ROM Bank: %02X", seldsw);
@ -3189,12 +3190,10 @@ MACHINE_CONFIG_START(funworld_state::witchryl)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(funworld_state::lunapark)
MACHINE_CONFIG_START(lunapark_state::lunapark)
fw1stpal(config);
MCFG_DEVICE_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */
MCFG_DEVICE_PROGRAM_MAP(lunapark_map) // mirrored video RAM (4000/5000 to 6000/7000).
MCFG_MACHINE_START_OVERRIDE(funworld_state, lunapark)
MCFG_MACHINE_RESET_OVERRIDE(funworld_state, lunapark)
MACHINE_CONFIG_END
@ -7109,8 +7108,8 @@ GAMEL( 1997, tortufam, 0, cuoreuno, cuoreuno, funworld_state, empty_ini
GAMEL( 1996, potgame, 0, cuoreuno, cuoreuno, funworld_state, empty_init, ROT0, "C.M.C.", "Pot Game (Italian)", 0, layout_jollycrd )
GAMEL( 1996, bottle10, 0, cuoreuno, cuoreuno, funworld_state, empty_init, ROT0, "C.M.C.", "Bottle 10 (Italian, set 1)", 0, layout_jollycrd )
GAMEL( 1996, bottl10b, bottle10, cuoreuno, cuoreuno, funworld_state, empty_init, ROT0, "C.M.C.", "Bottle 10 (Italian, set 2)", 0, layout_jollycrd )
GAMEL( 1998, lunapark, 0, lunapark, lunapark, funworld_state, empty_init, ROT0, "<unknown>", "Luna Park (set 1, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000).
GAMEL( 1998, lunaparkb, lunapark, lunapark, lunapark, funworld_state, empty_init, ROT0, "<unknown>", "Luna Park (set 2, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000).
GAMEL( 1998, lunapark, 0, lunapark, lunapark, lunapark_state, empty_init, ROT0, "<unknown>", "Luna Park (set 1, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000).
GAMEL( 1998, lunaparkb, lunapark, lunapark, lunapark, lunapark_state, empty_init, ROT0, "<unknown>", "Luna Park (set 2, dual program)", 0, layout_jollycrd ) // mirrored video RAM (4000/5000 to 6000/7000).
GAMEL( 1998, lunaparkc, lunapark, cuoreuno, cuoreuno, funworld_state, empty_init, ROT0, "<unknown>", "Luna Park (set 3)", 0, layout_jollycrd ) // regular video RAM 6000/7000.
GAMEL( 1998, crystal, 0, cuoreuno, cuoreuno, funworld_state, empty_init, ROT0, "J.C.D. srl", "Crystal Colours (CMC hardware)", 0, layout_jollycrd )

View File

@ -227,8 +227,9 @@ void seta2_state::gundamex_map(address_map &map)
Wakakusamonogatari Mahjong Yonshimai
***************************************************************************/
MACHINE_START_MEMBER(seta2_state, mj4simai)
void mj4simai_state::machine_start()
{
seta2_state::machine_start();
save_item(NAME(m_keyboard_row));
}
@ -837,13 +838,13 @@ void funcube_touchscreen_device::tra_callback()
// Bus conversion functions:
// RAM shared with the sub CPU
READ32_MEMBER(seta2_state::funcube_nvram_dword_r)
READ32_MEMBER(funcube_state::funcube_nvram_dword_r)
{
uint16_t val = m_nvram[offset];
return ((val & 0xff00) << 8) | (val & 0x00ff);
}
WRITE32_MEMBER(seta2_state::funcube_nvram_dword_w)
WRITE32_MEMBER(funcube_state::funcube_nvram_dword_w)
{
if (ACCESSING_BITS_0_7)
{
@ -868,7 +869,7 @@ READ16_MEMBER(seta2_state::spriteram16_word_r)
// Main CPU
READ32_MEMBER(seta2_state::funcube_debug_r)
READ32_MEMBER(funcube_state::funcube_debug_r)
{
uint32_t ret = ioport("DEBUG")->read();
@ -897,12 +898,12 @@ WRITE32_MEMBER(seta2_state::oki_write)
}
}
void seta2_state::funcube_map(address_map &map)
void funcube_state::funcube_map(address_map &map)
{
map(0x00000000, 0x0007ffff).rom();
map(0x00200000, 0x0020ffff).ram();
map(0x00400000, 0x00400003).r(this, FUNC(seta2_state::funcube_debug_r));
map(0x00400000, 0x00400003).r(this, FUNC(funcube_state::funcube_debug_r));
map(0x00400004, 0x00400007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw();
map(0x00500000, 0x00500003).rw(this, FUNC(seta2_state::oki_read), FUNC(seta2_state::oki_write));
@ -911,18 +912,18 @@ void seta2_state::funcube_map(address_map &map)
map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette
map(0x00860000, 0x0086003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs");
map(0x00c00000, 0x00c002ff).rw(this, FUNC(seta2_state::funcube_nvram_dword_r), FUNC(seta2_state::funcube_nvram_dword_w));
map(0x00c00000, 0x00c002ff).rw(this, FUNC(funcube_state::funcube_nvram_dword_r), FUNC(funcube_state::funcube_nvram_dword_w));
map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR
map(0xffffe000, 0xffffffff).ram(); // SRAM
}
void seta2_state::funcube2_map(address_map &map)
void funcube_state::funcube2_map(address_map &map)
{
map(0x00000000, 0x0007ffff).rom();
map(0x00200000, 0x0020ffff).ram();
map(0x00500000, 0x00500003).r(this, FUNC(seta2_state::funcube_debug_r));
map(0x00500000, 0x00500003).r(this, FUNC(funcube_state::funcube_debug_r));
map(0x00500004, 0x00500007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw();
map(0x00600000, 0x00600003).rw(this, FUNC(seta2_state::oki_read), FUNC(seta2_state::oki_write));
@ -931,7 +932,7 @@ void seta2_state::funcube2_map(address_map &map)
map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
map(0x00860000, 0x0086003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs");
map(0x00c00000, 0x00c002ff).rw(this, FUNC(seta2_state::funcube_nvram_dword_r), FUNC(seta2_state::funcube_nvram_dword_w));
map(0x00c00000, 0x00c002ff).rw(this, FUNC(funcube_state::funcube_nvram_dword_r), FUNC(funcube_state::funcube_nvram_dword_w));
map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR
map(0xffffe000, 0xffffffff).ram(); // SRAM
@ -939,7 +940,7 @@ void seta2_state::funcube2_map(address_map &map)
// Sub CPU
void seta2_state::funcube_sub_map(address_map &map)
void funcube_state::funcube_sub_map(address_map &map)
{
map(0x000000, 0x01ffff).rom();
map(0x200000, 0x20017f).ram().share("nvram");
@ -952,7 +953,7 @@ void seta2_state::funcube_sub_map(address_map &map)
#define FUNCUBE_SUB_CPU_CLOCK (XTAL(14'745'600))
READ16_MEMBER(seta2_state::funcube_coins_r)
READ16_MEMBER(funcube_state::funcube_coins_r)
{
uint8_t ret = ioport("SWITCH")->read();
uint8_t coin_bit0 = 1; // active low
@ -982,14 +983,14 @@ READ16_MEMBER(seta2_state::funcube_coins_r)
return (ret & ~7) | (hopper_bit << 2) | (coin_bit1 << 1) | coin_bit0;
}
void seta2_state::funcube_debug_outputs()
void funcube_state::funcube_debug_outputs()
{
#ifdef MAME_DEBUG
// popmessage("LED: %02x OUT: %02x", (int)*m_funcube_leds, (int)*m_funcube_outputs);
#endif
}
WRITE16_MEMBER(seta2_state::funcube_leds_w)
WRITE16_MEMBER(funcube_state::funcube_leds_w)
{
*m_funcube_leds = data;
@ -1005,13 +1006,13 @@ WRITE16_MEMBER(seta2_state::funcube_leds_w)
funcube_debug_outputs();
}
READ16_MEMBER(seta2_state::funcube_outputs_r)
READ16_MEMBER(funcube_state::funcube_outputs_r)
{
// Bits 1,2,3 read
return *m_funcube_outputs;
}
WRITE16_MEMBER(seta2_state::funcube_outputs_w)
WRITE16_MEMBER(funcube_state::funcube_outputs_w)
{
*m_funcube_outputs = data;
@ -1028,26 +1029,26 @@ WRITE16_MEMBER(seta2_state::funcube_outputs_w)
funcube_debug_outputs();
}
READ16_MEMBER(seta2_state::funcube_battery_r)
READ16_MEMBER(funcube_state::funcube_battery_r)
{
return ioport("BATTERY")->read() ? 0x40 : 0x00;
}
// cabinet linking on sci0
void seta2_state::funcube_sub_io(address_map &map)
void funcube_state::funcube_sub_io(address_map &map)
{
map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(seta2_state::funcube_coins_r));
map(h8_device::PORT_4, h8_device::PORT_4).r(this, FUNC(seta2_state::funcube_battery_r));
map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(seta2_state::funcube_outputs_r), FUNC(seta2_state::funcube_outputs_w)).share("funcube_outputs");
map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(seta2_state::funcube_leds_w)).share("funcube_leds");
map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(funcube_state::funcube_coins_r));
map(h8_device::PORT_4, h8_device::PORT_4).r(this, FUNC(funcube_state::funcube_battery_r));
map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(funcube_state::funcube_outputs_r), FUNC(funcube_state::funcube_outputs_w)).share("funcube_outputs");
map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(funcube_state::funcube_leds_w)).share("funcube_leds");
}
void seta2_state::funcube2_sub_io(address_map &map)
void funcube_state::funcube2_sub_io(address_map &map)
{
map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(seta2_state::funcube_coins_r));
map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(funcube_state::funcube_coins_r));
map(h8_device::PORT_4, h8_device::PORT_4).noprw(); // unused
map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(seta2_state::funcube_outputs_r), FUNC(seta2_state::funcube_outputs_w)).share("funcube_outputs");
map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(seta2_state::funcube_leds_w)).share("funcube_leds");
map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(funcube_state::funcube_outputs_r), FUNC(funcube_state::funcube_outputs_w)).share("funcube_outputs");
map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(funcube_state::funcube_leds_w)).share("funcube_leds");
}
@ -2581,13 +2582,6 @@ MACHINE_CONFIG_START(seta2_state::seta2)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(seta2_state::mj4simai)
seta2(config);
MCFG_MACHINE_START_OVERRIDE(seta2_state, mj4simai)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(seta2_state::gundamex)
seta2(config);
MCFG_DEVICE_MODIFY("maincpu")
@ -2749,7 +2743,7 @@ MACHINE_CONFIG_END
Funcube series
***************************************************************************/
TIMER_DEVICE_CALLBACK_MEMBER(seta2_state::funcube_interrupt)
TIMER_DEVICE_CALLBACK_MEMBER(funcube_state::funcube_interrupt)
{
int scanline = param;
@ -2760,23 +2754,24 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta2_state::funcube_interrupt)
m_maincpu->set_input_line(2, HOLD_LINE);
}
MACHINE_START_MEMBER(seta2_state, funcube)
void funcube_state::machine_start()
{
seta2_state::machine_start();
save_item(NAME(m_funcube_coin_start_cycles));
save_item(NAME(m_funcube_hopper_motor));
}
MACHINE_RESET_MEMBER(seta2_state, funcube)
void funcube_state::machine_reset()
{
m_funcube_coin_start_cycles = 0;
m_funcube_hopper_motor = 0;
}
MACHINE_CONFIG_START(seta2_state::funcube)
MACHINE_CONFIG_START(funcube_state::funcube)
MCFG_DEVICE_ADD("maincpu", MCF5206E, XTAL(25'447'000))
MCFG_DEVICE_PROGRAM_MAP(funcube_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", seta2_state, funcube_interrupt, "screen", 0, 1)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", funcube_state, funcube_interrupt, "screen", 0, 1)
MCFG_DEVICE_ADD("sub", H83007, FUNCUBE_SUB_CPU_CLOCK)
MCFG_DEVICE_PROGRAM_MAP(funcube_sub_map)
@ -2791,9 +2786,6 @@ MACHINE_CONFIG_START(seta2_state::funcube)
MCFG_WATCHDOG_ADD("watchdog")
MCFG_MACHINE_START_OVERRIDE(seta2_state, funcube)
MCFG_MACHINE_RESET_OVERRIDE(seta2_state, funcube)
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@ -2818,7 +2810,7 @@ MACHINE_CONFIG_START(seta2_state::funcube)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(seta2_state::funcube2)
MACHINE_CONFIG_START(funcube_state::funcube2)
funcube(config);
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(funcube2_map)
@ -2832,7 +2824,7 @@ MACHINE_CONFIG_START(seta2_state::funcube2)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(seta2_state::funcube3)
MACHINE_CONFIG_START(funcube_state::funcube3)
funcube2(config);
// video hardware
MCFG_SCREEN_MODIFY("screen")
@ -3072,7 +3064,7 @@ ROM_START( funcube5 )
ROM_LOAD( "fc51_snd-0.u47", 0x000000, 0x200000, CRC(2a504fe1) SHA1(911ad650bf48aa78d9cb3c64284aa526ceb519ba) )
ROM_END
void seta2_state::init_funcube()
void funcube_state::init_funcube()
{
uint32_t *main_cpu = (uint32_t *) memregion("maincpu")->base();
uint16_t *sub_cpu = (uint16_t *) memregion("sub")->base();
@ -3083,7 +3075,7 @@ void seta2_state::init_funcube()
sub_cpu[0x506/2] = 0x5470; // rte -> rts
}
void seta2_state::init_funcube2()
void funcube_state::init_funcube2()
{
uint32_t *main_cpu = (uint32_t *) memregion("maincpu")->base();
uint16_t *sub_cpu = (uint16_t *) memregion("sub")->base();
@ -3096,7 +3088,7 @@ void seta2_state::init_funcube2()
sub_cpu[0x4d4/2] = 0x5470; // rte -> rts
}
void seta2_state::init_funcube3()
void funcube_state::init_funcube3()
{
uint32_t *main_cpu = (uint32_t *) memregion("maincpu")->base();
uint16_t *sub_cpu = (uint16_t *) memregion("sub")->base();
@ -4347,34 +4339,34 @@ ROM_START( telpacfl )
ROM_LOAD( "kc-002c.u52", 0x117, 0x117, NO_DUMP )
ROM_END
GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 )
GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, mj4simai, 0, mj4simai, mj4simai, seta2_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL )
GAME( 1996, myangel, 0, myangel, myangel, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, empty_init, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, empty_init, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, empty_init, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, empty_init, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, empty_init, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, penbros, 0, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Hong Tian Lei (A-Blast) (Japan)", MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi
GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, empty_init, ROT0, "bootleg", "Hong Tian Lei (A-Blast) (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010
GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, empty_init, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2002, trophyht, trophyh, samshoot, trophyht, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0 (Location Test)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, funcube, 0, funcube, funcube, seta2_state, init_funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL )
GAME( 2001, funcube2, 0, funcube2, funcube, seta2_state, init_funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL )
GAME( 2001, funcube3, 0, funcube3, funcube, seta2_state, init_funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL )
GAME( 2001, funcube4, 0, funcube2, funcube, seta2_state, init_funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL )
GAME( 2002, funcube5, 0, funcube2, funcube, seta2_state, init_funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL )
GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 )
GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, mj4simai, 0, seta2, mj4simai, mj4simai_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL )
GAME( 1996, myangel, 0, myangel, myangel, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, empty_init, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, empty_init, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, empty_init, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, empty_init, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, empty_init, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, penbros, 0, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Hong Tian Lei (A-Blast) (Japan)", MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi
GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, empty_init, ROT0, "bootleg", "Hong Tian Lei (A-Blast) (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010
GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, empty_init, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2002, trophyht, trophyh, samshoot, trophyht, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.0 (Location Test)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, funcube, 0, funcube, funcube, funcube_state, init_funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL )
GAME( 2001, funcube2, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL )
GAME( 2001, funcube3, 0, funcube3, funcube, funcube_state, init_funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL )
GAME( 2001, funcube4, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL )
GAME( 2002, funcube5, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL )

View File

@ -40,8 +40,6 @@ public:
DECLARE_PALETTE_INIT(funworld);
DECLARE_VIDEO_START(magicrd2);
DECLARE_VIDEO_START(chinatow);
DECLARE_MACHINE_START(lunapark);
DECLARE_MACHINE_RESET(lunapark);
uint32_t screen_update_funworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void royalcd1(machine_config &config);
void royalcd2(machine_config &config);
@ -49,7 +47,6 @@ public:
void chinatow(machine_config &config);
void magicrd2(machine_config &config);
void fw_a7_11(machine_config &config);
void lunapark(machine_config &config);
void fw2ndpal(machine_config &config);
void saloon(machine_config &config);
void cuoreuno(machine_config &config);
@ -79,3 +76,18 @@ protected:
required_device<palette_device> m_palette;
output_finder<8> m_lamp;
};
class lunapark_state : public funworld_state
{
public:
lunapark_state(const machine_config &mconfig, device_type type, const char *tag)
: funworld_state(mconfig, type, tag)
{ }
void lunapark(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
};

View File

@ -38,8 +38,6 @@ public:
m_spriteram(*this, "spriteram", 0),
m_tileram(*this, "tileram", 0),
m_vregs(*this, "vregs", 0),
m_funcube_outputs(*this, "funcube_outputs"),
m_funcube_leds(*this, "funcube_leds"),
m_led(*this, "led%u", 0U),
m_lamp(*this, "lamp%u", 0U)
{ }
@ -73,22 +71,6 @@ public:
DECLARE_READ16_MEMBER(gundamex_eeprom_r);
DECLARE_WRITE16_MEMBER(gundamex_eeprom_w);
DECLARE_READ32_MEMBER(funcube_nvram_dword_r);
DECLARE_WRITE32_MEMBER(funcube_nvram_dword_w);
DECLARE_READ32_MEMBER(funcube_debug_r);
DECLARE_READ16_MEMBER(funcube_coins_r);
DECLARE_WRITE16_MEMBER(funcube_leds_w);
DECLARE_READ16_MEMBER(funcube_outputs_r);
DECLARE_WRITE16_MEMBER(funcube_outputs_w);
DECLARE_READ16_MEMBER(funcube_battery_r);
void init_funcube3();
void init_funcube();
void init_funcube2();
DECLARE_MACHINE_START(mj4simai);
DECLARE_MACHINE_START(funcube);
DECLARE_MACHINE_RESET(funcube);
DECLARE_VIDEO_START(yoffset);
DECLARE_VIDEO_START(xoffset);
@ -100,16 +82,10 @@ public:
INTERRUPT_GEN_MEMBER(seta2_interrupt);
INTERRUPT_GEN_MEMBER(samshoot_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(funcube_interrupt);
void funcube_debug_outputs();
void seta2(machine_config &config);
void funcube(machine_config &config);
void funcube3(machine_config &config);
void funcube2(machine_config &config);
void grdians(machine_config &config);
void myangel(machine_config &config);
void mj4simai(machine_config &config);
void penbros(machine_config &config);
void pzlbowl(machine_config &config);
void myangel2(machine_config &config);
@ -120,11 +96,6 @@ public:
void samshoot(machine_config &config);
void namcostr(machine_config &config);
void ablastb_map(address_map &map);
void funcube2_map(address_map &map);
void funcube2_sub_io(address_map &map);
void funcube_map(address_map &map);
void funcube_sub_io(address_map &map);
void funcube_sub_map(address_map &map);
void grdians_map(address_map &map);
void gundamex_map(address_map &map);
void mj4simai_map(address_map &map);
@ -159,8 +130,6 @@ protected:
optional_shared_ptr<uint16_t> m_spriteram;
optional_shared_ptr<uint16_t> m_tileram;
optional_shared_ptr<uint16_t> m_vregs;
optional_shared_ptr<uint16_t> m_funcube_outputs;
optional_shared_ptr<uint16_t> m_funcube_leds;
output_finder<7> m_led;
output_finder<11> m_lamp;
@ -169,6 +138,64 @@ protected:
int m_keyboard_row;
std::unique_ptr<uint16_t[]> m_buffered_spriteram;
};
class mj4simai_state : public seta2_state
{
public:
mj4simai_state(const machine_config &mconfig, device_type type, const char *tag)
: seta2_state(mconfig, type, tag)
{ }
protected:
virtual void machine_start() override;
};
class funcube_state : public seta2_state
{
public:
funcube_state(const machine_config &mconfig, device_type type, const char *tag)
: seta2_state(mconfig, type, tag)
, m_funcube_outputs(*this, "funcube_outputs")
, m_funcube_leds(*this, "funcube_leds")
{ }
void funcube(machine_config &config);
void funcube3(machine_config &config);
void funcube2(machine_config &config);
void init_funcube3();
void init_funcube();
void init_funcube2();
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
DECLARE_READ32_MEMBER(funcube_nvram_dword_r);
DECLARE_WRITE32_MEMBER(funcube_nvram_dword_w);
DECLARE_READ32_MEMBER(funcube_debug_r);
DECLARE_READ16_MEMBER(funcube_coins_r);
DECLARE_WRITE16_MEMBER(funcube_leds_w);
DECLARE_READ16_MEMBER(funcube_outputs_r);
DECLARE_WRITE16_MEMBER(funcube_outputs_w);
DECLARE_READ16_MEMBER(funcube_battery_r);
TIMER_DEVICE_CALLBACK_MEMBER(funcube_interrupt);
void funcube2_map(address_map &map);
void funcube2_sub_io(address_map &map);
void funcube_map(address_map &map);
void funcube_sub_io(address_map &map);
void funcube_sub_map(address_map &map);
void funcube_debug_outputs();
required_shared_ptr<uint16_t> m_funcube_outputs;
required_shared_ptr<uint16_t> m_funcube_leds;
uint64_t m_funcube_coin_start_cycles;
uint8_t m_funcube_hopper_motor;
};