Move Wing Co stuff out to a different class

This commit is contained in:
Vas Crabb 2015-03-09 15:38:03 +11:00
parent 014297fbee
commit ad354d52ac
3 changed files with 228 additions and 261 deletions

View File

@ -785,7 +785,7 @@ static ADDRESS_MAP_START( lucky8_map, AS_PROGRAM, 8, goldstar_state )
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
WRITE8_MEMBER(goldstar_state::magodds_outb850_w)
WRITE8_MEMBER(wingco_state::magodds_outb850_w)
{
// guess, could be wrong, this might just be lights
@ -801,12 +801,12 @@ WRITE8_MEMBER(goldstar_state::magodds_outb850_w)
}
WRITE8_MEMBER(goldstar_state::magodds_outb860_w)
WRITE8_MEMBER(wingco_state::magodds_outb860_w)
{
// popmessage("magodds_outb860_w %02x\n", data);
}
static ADDRESS_MAP_START(magodds_map, AS_PROGRAM, 8, goldstar_state )
static ADDRESS_MAP_START( magodds_map, AS_PROGRAM, 8, wingco_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
// where does the extra rom data map?? it seems like it should come straight after the existing rom, but it can't if this is a plain z80?
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
@ -958,7 +958,7 @@ WRITE8_MEMBER(unkch_state::unkcm_0x03_w)
{
//popmessage("unkcm_0x03_w %02x", data);
m_unkch_vidreg = data;
m_vidreg = data;
// -x-- ---- seems to toggle when a 'normal' tilemap should be displayed instead of the reels?
}
@ -7477,22 +7477,22 @@ static GFXDECODE_START( cm97 )
GFXDECODE_END
WRITE8_MEMBER(goldstar_state::system_outputa_w)
WRITE8_MEMBER(wingco_state::system_outputa_w)
{
//popmessage("system_outputa_w %02x",data);
}
WRITE8_MEMBER(goldstar_state::system_outputb_w)
WRITE8_MEMBER(wingco_state::system_outputb_w)
{
//popmessage("system_outputb_w %02x",data);
}
WRITE8_MEMBER(goldstar_state::system_outputc_w)
WRITE8_MEMBER(wingco_state::system_outputc_w)
{
m_lucky8_nmi_enable = data & 8;
m_unkch_vidreg = data & 2;
m_nmi_enable = data & 8;
m_vidreg = data & 2;
//popmessage("system_outputc_w %02x",data);
}
@ -7763,7 +7763,7 @@ PALETTE_INIT_MEMBER(goldstar_state,cmast91)
}
}
PALETTE_INIT_MEMBER(goldstar_state,lucky8)
PALETTE_INIT_MEMBER(goldstar_state, lucky8)
{
/* BBGGGRRR */
@ -8171,19 +8171,19 @@ static MACHINE_CONFIG_START( cmast91, goldstar_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
INTERRUPT_GEN_MEMBER(goldstar_state::lucky8_irq)
INTERRUPT_GEN_MEMBER(wingco_state::masked_irq)
{
if(m_lucky8_nmi_enable)
if (m_nmi_enable)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
static MACHINE_CONFIG_START( lucky8, goldstar_state )
static MACHINE_CONFIG_START( lucky8, wingco_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(lucky8_map)
//MCFG_CPU_IO_MAP(goldstar_readport)
MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, lucky8_irq)
MCFG_CPU_VBLANK_INT_DRIVER("screen", wingco_state, masked_irq)
MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
@ -8197,9 +8197,9 @@ static MACHINE_CONFIG_START( lucky8, goldstar_state )
MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2"))
MCFG_I8255_OUT_PORTA_CB(WRITE8(goldstar_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(goldstar_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(goldstar_state, system_outputc_w))
MCFG_I8255_OUT_PORTA_CB(WRITE8(wingco_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(wingco_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(wingco_state, system_outputc_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -8213,7 +8213,7 @@ static MACHINE_CONFIG_START( lucky8, goldstar_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_FORMAT(BBGGGRRR)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_PALETTE_INIT_OWNER(goldstar_state, lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@ -8232,13 +8232,13 @@ static MACHINE_CONFIG_START( lucky8, goldstar_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( bingowng, goldstar_state )
static MACHINE_CONFIG_START( bingowng, wingco_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(lucky8_map)
//MCFG_CPU_IO_MAP(goldstar_readport)
MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, lucky8_irq)
MCFG_CPU_VBLANK_INT_DRIVER("screen", wingco_state, masked_irq)
MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
@ -8252,9 +8252,9 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2"))
MCFG_I8255_OUT_PORTA_CB(WRITE8(goldstar_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(goldstar_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(goldstar_state, system_outputc_w))
MCFG_I8255_OUT_PORTA_CB(WRITE8(wingco_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(wingco_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(wingco_state, system_outputc_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -8262,7 +8262,7 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_bingowng)
MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_bingowng)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3)
@ -8270,7 +8270,7 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,bingowng)
MCFG_VIDEO_START_OVERRIDE(wingco_state, bingowng)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -8286,61 +8286,11 @@ static MACHINE_CONFIG_START( bingowng, goldstar_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( bingownga, goldstar_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(lucky8_map)
//MCFG_CPU_IO_MAP(goldstar_readport)
MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, lucky8_irq)
MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
MCFG_I8255_IN_PORTB_CB(IOPORT("IN1"))
MCFG_I8255_IN_PORTC_CB(IOPORT("IN2"))
MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("IN3"))
MCFG_I8255_IN_PORTB_CB(IOPORT("IN4"))
MCFG_I8255_IN_PORTC_CB(IOPORT("DSW1"))
MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2"))
MCFG_I8255_OUT_PORTA_CB(WRITE8(goldstar_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(goldstar_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(goldstar_state, system_outputc_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_bingowng)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", bingownga) /* GFX Decode is the only difference with the parent machine */
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,bingowng)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("snsnd", SN76489, PSG_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_SOUND_ADD("aysnd", AY8910, AY_CLOCK)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW3"))
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW4"))
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(goldstar_state, ay8910_outputa_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(goldstar_state, ay8910_outputb_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
static MACHINE_CONFIG_DERIVED( bingownga, bingowng )
MCFG_GFXDECODE_MODIFY("gfxdecode", bingownga)
MACHINE_CONFIG_END
PALETTE_INIT_MEMBER(goldstar_state,magodds)
PALETTE_INIT_MEMBER(wingco_state, magodds)
{
int i;
for (i = 0; i < 0x100; i++)
@ -8357,13 +8307,13 @@ PALETTE_INIT_MEMBER(goldstar_state,magodds)
}
}
static MACHINE_CONFIG_START( magodds, goldstar_state )
static MACHINE_CONFIG_START( magodds, wingco_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(magodds_map)
//MCFG_CPU_IO_MAP(goldstar_readport)
MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, lucky8_irq)
MCFG_CPU_VBLANK_INT_DRIVER("screen", wingco_state, masked_irq)
MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("IN0"))
@ -8377,9 +8327,9 @@ static MACHINE_CONFIG_START( magodds, goldstar_state )
MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2"))
MCFG_I8255_OUT_PORTA_CB(WRITE8(goldstar_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(goldstar_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(goldstar_state, system_outputc_w))
MCFG_I8255_OUT_PORTA_CB(WRITE8(wingco_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(wingco_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(wingco_state, system_outputc_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -8387,15 +8337,15 @@ static MACHINE_CONFIG_START( magodds, goldstar_state )
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_magical)
MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_magical)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", magodds)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,magodds)
MCFG_PALETTE_INIT_OWNER(wingco_state, magodds)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,magical)
MCFG_VIDEO_START_OVERRIDE(wingco_state, magical)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -8443,7 +8393,7 @@ static MACHINE_CONFIG_START( kkotnoli, goldstar_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_PALETTE_INIT_OWNER(goldstar_state, lucky8)
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@ -8483,7 +8433,7 @@ static MACHINE_CONFIG_START( ladylinr, goldstar_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_PALETTE_INIT_OWNER(goldstar_state, lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@ -8499,7 +8449,7 @@ static MACHINE_CONFIG_START( ladylinr, goldstar_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( wcat3, goldstar_state )
static MACHINE_CONFIG_START( wcat3, wingco_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK)
@ -8519,9 +8469,9 @@ static MACHINE_CONFIG_START( wcat3, goldstar_state )
MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2"))
MCFG_I8255_OUT_PORTA_CB(WRITE8(goldstar_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(goldstar_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(goldstar_state, system_outputc_w))
MCFG_I8255_OUT_PORTA_CB(WRITE8(wingco_state, system_outputa_w))
MCFG_I8255_OUT_PORTB_CB(WRITE8(wingco_state, system_outputb_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(wingco_state, system_outputc_w))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -8534,7 +8484,7 @@ static MACHINE_CONFIG_START( wcat3, goldstar_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_PALETTE_INIT_OWNER(goldstar_state, lucky8)
MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@ -8773,12 +8723,10 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cherrys, ncb3 )
MCFG_GFXDECODE_MODIFY("gfxdecode", cherrys)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cm97, ncb3 )
MCFG_GFXDECODE_MODIFY("gfxdecode", cm97)
MACHINE_CONFIG_END
@ -8840,7 +8788,7 @@ static MACHINE_CONFIG_START( megaline, unkch_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", megaline)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_PALETTE_INIT_OWNER(goldstar_state, lucky8)
// MCFG_NVRAM_ADD_1FILL("nvram")
MCFG_VIDEO_START_OVERRIDE(goldstar_state,goldstar)
@ -8885,7 +8833,7 @@ static MACHINE_CONFIG_START( bonusch, unkch_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", megaline)
MCFG_PALETTE_ADD("palette", 256)
MCFG_PALETTE_INIT_OWNER(goldstar_state,lucky8)
MCFG_PALETTE_INIT_OWNER(goldstar_state, lucky8)
MCFG_VIDEO_START_OVERRIDE(goldstar_state, goldstar)
@ -10886,7 +10834,7 @@ YM2203
is this the original Magical Odds?
*/
DRIVER_INIT_MEMBER(goldstar_state,magoddsc)
DRIVER_INIT_MEMBER(wingco_state, magoddsc)
{
int A;
UINT8 *ROM = memregion("maincpu")->base();
@ -13594,7 +13542,7 @@ DRIVER_INIT_MEMBER(goldstar_state,cmast91)
ROM[0x0a92] = 0x9b;
}
DRIVER_INIT_MEMBER(goldstar_state,lucky8a)
DRIVER_INIT_MEMBER(wingco_state, lucky8a)
{
UINT8 *ROM = memregion("maincpu")->base();
@ -14188,9 +14136,9 @@ GAME( 1992, cmast92, 0, cmast91, cmast91, goldstar_state, cmast91,
GAMEL( 1989, lucky8, 0, lucky8, lucky8, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 1, W-4)", 0, layout_lucky8 )
GAMEL( 1989, lucky8a, lucky8, lucky8, lucky8a, goldstar_state, lucky8a, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 2, W-4)", 0, layout_lucky8 )
GAMEL( 1989, lucky8a, lucky8, lucky8, lucky8a, wingco_state, lucky8a, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 2, W-4)", 0, layout_lucky8 )
GAMEL( 1989, lucky8b, lucky8, lucky8, lucky8b, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 3, W-4, extended gfx)", 0, layout_lucky8 )
GAMEL( 1989, lucky8c, lucky8, lucky8, lucky8, goldstar_state, lucky8a, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 4, W-4)", 0, layout_lucky8 )
GAMEL( 1989, lucky8c, lucky8, lucky8, lucky8, wingco_state, lucky8a, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 4, W-4)", 0, layout_lucky8 )
GAMEL( 1989, lucky8d, lucky8, lucky8, lucky8d, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 5, W-4, main 40%, d-up 60%)", 0, layout_lucky8 )
GAMEL( 1989, lucky8e, lucky8, lucky8, lucky8d, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 6, W-4, main 40%, d-up 60%)", 0, layout_lucky8 )
GAMEL( 198?, ns8lines, 0, lucky8, lucky8b, driver_device, 0, ROT0, "<unknown>", "New Lucky 8 Lines / New Super 8 Lines (W-4)", 0, layout_lucky8 )
@ -14211,8 +14159,8 @@ GAMEL( 1993, bingownga, bingowng, bingownga,bingownga,driver_device, 0,
GAME( 1992, magodds, 0, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 1)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
GAME( 1992, magoddsa, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 2)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
GAME( 1992, magoddsb, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 3)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
GAME( 1991, magoddsc, magodds, magodds, magoddsc, goldstar_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 4, custom encrypted CPU block)", GAME_WRONG_COLORS | GAME_NOT_WORKING |GAME_NO_SOUND)
GAME( 1991, magoddsd, magodds, magodds, magoddsc, goldstar_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 5, custom encrypted CPU block)", GAME_WRONG_COLORS | GAME_NOT_WORKING |GAME_NO_SOUND)
GAME( 1991, magoddsc, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 4, custom encrypted CPU block)", GAME_WRONG_COLORS | GAME_NOT_WORKING |GAME_NO_SOUND)
GAME( 1991, magoddsd, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 5, custom encrypted CPU block)", GAME_WRONG_COLORS | GAME_NOT_WORKING |GAME_NO_SOUND)
/* --- Amcoe games --- */

View File

@ -1,8 +1,8 @@
class goldstar_state : public driver_device
{
public:
goldstar_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
goldstar_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_fg_vidram(*this, "fg_vidram"),
m_fg_atrram(*this, "fg_atrram"),
m_bg_vidram(*this, "bg_vidram"),
@ -37,8 +37,6 @@ public:
optional_shared_ptr<UINT8> m_reel3_scroll;
UINT8 m_unkch_vidreg;
tilemap_t *m_reel1_tilemap;
tilemap_t *m_reel2_tilemap;
tilemap_t *m_reel3_tilemap;
@ -50,19 +48,16 @@ public:
UINT8 m_cmaster_girl_pal;
UINT8 m_cm_enable_reg;
UINT8 m_cm_girl_scroll;
UINT8 m_lucky8_nmi_enable;
int m_tile_bank;
DECLARE_WRITE8_MEMBER(protection_w);
DECLARE_READ8_MEMBER(protection_r);
DECLARE_WRITE8_MEMBER(lucky8_outport_w);
DECLARE_WRITE8_MEMBER(ncb3_port81_w);
DECLARE_WRITE8_MEMBER(goldstar_lamps_w);
DECLARE_WRITE8_MEMBER(cb3_lamps_w);
DECLARE_WRITE8_MEMBER(cm_outport1_w);
DECLARE_WRITE8_MEMBER(pkrmast_lamps_w);
DECLARE_WRITE8_MEMBER(lucky8_outport_w);
DECLARE_WRITE8_MEMBER(magodds_outb850_w);
DECLARE_WRITE8_MEMBER(magodds_outb860_w);
DECLARE_WRITE8_MEMBER(ladylinr_outport_w);
DECLARE_READ8_MEMBER(fixedvalb4_r);
DECLARE_READ8_MEMBER(fixedvala8_r);
@ -92,16 +87,12 @@ public:
DECLARE_WRITE8_MEMBER(goldstar_reel3_ram_w);
DECLARE_WRITE8_MEMBER(goldstar_fa00_w);
DECLARE_WRITE8_MEMBER(cm_background_col_w);
DECLARE_WRITE8_MEMBER(system_outputa_w);
DECLARE_WRITE8_MEMBER(system_outputb_w);
DECLARE_WRITE8_MEMBER(system_outputc_w);
DECLARE_WRITE8_MEMBER(ay8910_outputa_w);
DECLARE_WRITE8_MEMBER(ay8910_outputb_w);
DECLARE_DRIVER_INIT(goldstar);
DECLARE_DRIVER_INIT(cmast91);
DECLARE_DRIVER_INIT(nfb96_dk);
DECLARE_DRIVER_INIT(cm);
DECLARE_DRIVER_INIT(lucky8a);
DECLARE_DRIVER_INIT(nfb96sea);
DECLARE_DRIVER_INIT(schery97a);
DECLARE_DRIVER_INIT(rp35);
@ -116,7 +107,6 @@ public:
DECLARE_DRIVER_INIT(po33);
DECLARE_DRIVER_INIT(match133);
DECLARE_DRIVER_INIT(rp36c3);
DECLARE_DRIVER_INIT(magoddsc);
DECLARE_DRIVER_INIT(nfb96_c1);
DECLARE_DRIVER_INIT(fb2010);
DECLARE_DRIVER_INIT(super9);
@ -131,15 +121,9 @@ public:
DECLARE_VIDEO_START(cherrym);
DECLARE_PALETTE_INIT(cmast91);
DECLARE_PALETTE_INIT(lucky8);
DECLARE_VIDEO_START(bingowng);
DECLARE_VIDEO_START(magical);
DECLARE_PALETTE_INIT(magodds);
UINT32 screen_update_goldstar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_cmast91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_bingowng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_amcoe1a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(lucky8_irq);
void do_blockswaps(UINT8* ROM);
void dump_to_file( UINT8* ROM);
required_device<cpu_device> m_maincpu;
@ -148,11 +132,42 @@ public:
};
class wingco_state : public goldstar_state
{
public:
wingco_state(const machine_config &mconfig, device_type type, const char *tag) :
goldstar_state(mconfig, type, tag)
{
}
DECLARE_WRITE8_MEMBER(magodds_outb850_w);
DECLARE_WRITE8_MEMBER(magodds_outb860_w);
DECLARE_WRITE8_MEMBER(system_outputa_w);
DECLARE_WRITE8_MEMBER(system_outputb_w);
DECLARE_WRITE8_MEMBER(system_outputc_w);
DECLARE_DRIVER_INIT(lucky8a);
DECLARE_DRIVER_INIT(magoddsc);
DECLARE_VIDEO_START(bingowng);
DECLARE_VIDEO_START(magical);
DECLARE_PALETTE_INIT(magodds);
UINT32 screen_update_bingowng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(masked_irq);
private:
UINT8 m_nmi_enable;
UINT8 m_vidreg;
};
class cb3_state : public goldstar_state
{
public:
cb3_state(const machine_config &mconfig, device_type type, const char *tag)
: goldstar_state(mconfig, type, tag)
cb3_state(const machine_config &mconfig, device_type type, const char *tag) :
goldstar_state(mconfig, type, tag)
{
}
@ -168,8 +183,8 @@ protected:
class chrygld_state : public goldstar_state
{
public:
chrygld_state(const machine_config &mconfig, device_type type, const char *tag)
: goldstar_state(mconfig, type, tag)
chrygld_state(const machine_config &mconfig, device_type type, const char *tag) :
goldstar_state(mconfig, type, tag)
{
}
@ -184,8 +199,8 @@ protected:
class sangho_state : public goldstar_state
{
public:
sangho_state(const machine_config &mconfig, device_type type, const char *tag)
: goldstar_state(mconfig, type, tag),
sangho_state(const machine_config &mconfig, device_type type, const char *tag) :
goldstar_state(mconfig, type, tag),
m_reel1_attrram(*this, "reel1_attrram"),
m_reel2_attrram(*this, "reel2_attrram"),
m_reel3_attrram(*this, "reel3_attrram")
@ -225,8 +240,8 @@ private:
class unkch_state : public goldstar_state
{
public:
unkch_state(const machine_config &mconfig, device_type type, const char *tag)
: goldstar_state(mconfig, type, tag),
unkch_state(const machine_config &mconfig, device_type type, const char *tag) :
goldstar_state(mconfig, type, tag),
m_reel1_attrram(*this, "reel1_attrram"),
m_reel2_attrram(*this, "reel2_attrram"),
m_reel3_attrram(*this, "reel3_attrram")
@ -260,4 +275,6 @@ private:
required_shared_ptr<UINT8> m_reel1_attrram;
required_shared_ptr<UINT8> m_reel2_attrram;
required_shared_ptr<UINT8> m_reel3_attrram;
UINT8 m_vidreg;
};

View File

@ -162,36 +162,6 @@ VIDEO_START_MEMBER(goldstar_state, goldstar)
m_cm_enable_reg = 0x0b;
}
VIDEO_START_MEMBER(goldstar_state, bingowng)
{
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel1_tilemap->set_scroll_cols(64);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
m_fg_tilemap->set_transparent_pen(0);
// is there an enable reg for this game?
m_cm_enable_reg = 0x0b;
}
VIDEO_START_MEMBER(goldstar_state, magical)
{
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel1_tilemap->set_scroll_cols(32);
m_reel2_tilemap->set_scroll_cols(32);
m_reel3_tilemap->set_scroll_cols(32);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_magical_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
m_fg_tilemap->set_transparent_pen(0);
// is there an enable reg for this game?
m_cm_enable_reg = 0x0b;
}
VIDEO_START_MEMBER(goldstar_state, cherrym)
{
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
@ -311,105 +281,6 @@ UINT32 goldstar_state::screen_update_goldstar(screen_device &screen, bitmap_ind1
}
UINT32 goldstar_state::screen_update_bingowng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
if (m_cm_enable_reg &0x08)
{
for (i= 0;i < 64;i++)
{
m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i]);
}
const rectangle visible1(0*8, (14+48)*8-1, 3*8, (4+7)*8-1);
m_reel1_tilemap->draw(screen, bitmap, visible1, 0, 0);
}
if (m_cm_enable_reg &0x04)
{
if (memregion("user1")->base())
{
gfx_element *gfx = m_gfxdecode->gfx(2);
int girlyscroll = (INT8)((m_cm_girl_scroll & 0xf0));
int girlxscroll = (INT8)((m_cm_girl_scroll & 0x0f)<<4);
gfx->zoom_transpen(bitmap,cliprect,m_cmaster_girl_num,m_cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll), 0x20000, 0x10000,0);
}
}
if (m_cm_enable_reg &0x02)
{
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
return 0;
}
UINT32 goldstar_state::screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
if (m_cm_enable_reg &0x08)
{
// guess, could be wrong, but different screens clearly need different reel layouts
if (m_unkch_vidreg & 2)
{
for (i= 0;i < 32;i++)
{
m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i*2]);
m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i*2]);
// m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i*2]);
}
const rectangle visible1alt(0*8, (16+48)*8-1, 4*8, 16*8-1);
const rectangle visible2alt(0*8, (16+48)*8-1, 16*8, 28*8-1);
m_reel1_tilemap->draw(screen, bitmap, visible1alt, 0, 0);
m_reel2_tilemap->draw(screen, bitmap, visible2alt, 0, 0);
//m_reel3_tilemap->draw(screen, bitmap, &magical_visible3, 0, 0);
}
else
{
for (i= 0;i < 32;i++)
{
m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i*2]);
m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i*2]);
m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i*2]);
}
const rectangle visible1(0*8, (14+48)*8-1, 4*8, (4+8)*8-1);
const rectangle visible2(0*8, (14+48)*8-1, 12*8, (12+8)*8-1);
const rectangle visible3(0*8, (14+48)*8-1, 20*8, (20+8)*8-1);
m_reel1_tilemap->draw(screen, bitmap, visible1, 0, 0);
m_reel2_tilemap->draw(screen, bitmap, visible2, 0, 0);
m_reel3_tilemap->draw(screen, bitmap, visible3, 0, 0);
}
}
if (m_cm_enable_reg &0x02)
{
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
return 0;
}
UINT32 goldstar_state::screen_update_cmast91(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
@ -487,6 +358,137 @@ UINT32 goldstar_state::screen_update_amcoe1a(screen_device &screen, bitmap_ind16
VIDEO_START_MEMBER(wingco_state, bingowng)
{
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel1_tilemap->set_scroll_cols(64);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
m_fg_tilemap->set_transparent_pen(0);
// is there an enable reg for this game?
m_cm_enable_reg = 0x0b;
}
VIDEO_START_MEMBER(wingco_state, magical)
{
m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8);
m_reel1_tilemap->set_scroll_cols(32);
m_reel2_tilemap->set_scroll_cols(32);
m_reel3_tilemap->set_scroll_cols(32);
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_magical_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
m_fg_tilemap->set_transparent_pen(0);
// is there an enable reg for this game?
m_cm_enable_reg = 0x0b;
}
UINT32 wingco_state::screen_update_bingowng(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
if (m_cm_enable_reg &0x08)
{
for (i= 0;i < 64;i++)
{
m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i]);
}
const rectangle visible1(0*8, (14+48)*8-1, 3*8, (4+7)*8-1);
m_reel1_tilemap->draw(screen, bitmap, visible1, 0, 0);
}
if (m_cm_enable_reg &0x04)
{
if (memregion("user1")->base())
{
gfx_element *gfx = m_gfxdecode->gfx(2);
int girlyscroll = (INT8)((m_cm_girl_scroll & 0xf0));
int girlxscroll = (INT8)((m_cm_girl_scroll & 0x0f)<<4);
gfx->zoom_transpen(bitmap,cliprect,m_cmaster_girl_num,m_cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll), 0x20000, 0x10000,0);
}
}
if (m_cm_enable_reg &0x02)
{
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
return 0;
}
UINT32 wingco_state::screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i;
bitmap.fill(m_palette->black_pen(), cliprect);
if (!(m_cm_enable_reg &0x01))
return 0;
if (m_cm_enable_reg &0x08)
{
// guess, could be wrong, but different screens clearly need different reel layouts
if (m_vidreg & 2)
{
for (i= 0;i < 32;i++)
{
m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i*2]);
m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i*2]);
// m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i*2]);
}
const rectangle visible1alt(0*8, (16+48)*8-1, 4*8, 16*8-1);
const rectangle visible2alt(0*8, (16+48)*8-1, 16*8, 28*8-1);
m_reel1_tilemap->draw(screen, bitmap, visible1alt, 0, 0);
m_reel2_tilemap->draw(screen, bitmap, visible2alt, 0, 0);
//m_reel3_tilemap->draw(screen, bitmap, &magical_visible3, 0, 0);
}
else
{
for (i= 0;i < 32;i++)
{
m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i*2]);
m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i*2]);
m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i*2]);
}
const rectangle visible1(0*8, (14+48)*8-1, 4*8, (4+8)*8-1);
const rectangle visible2(0*8, (14+48)*8-1, 12*8, (12+8)*8-1);
const rectangle visible3(0*8, (14+48)*8-1, 20*8, (20+8)*8-1);
m_reel1_tilemap->draw(screen, bitmap, visible1, 0, 0);
m_reel2_tilemap->draw(screen, bitmap, visible2, 0, 0);
m_reel3_tilemap->draw(screen, bitmap, visible3, 0, 0);
}
}
if (m_cm_enable_reg &0x02)
{
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
}
return 0;
}
WRITE8_MEMBER(sangho_state::fg_vidram_w)
{
m_fg_vidram[offset] = data;
@ -714,7 +716,7 @@ VIDEO_START_MEMBER(unkch_state, unkch)
m_cmaster_girl_num = 0;
m_cmaster_girl_pal = 0;
m_unkch_vidreg = 0x00;
m_vidreg = 0x00;
m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_cherrym_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32);
m_fg_tilemap->set_transparent_pen(0);
@ -735,7 +737,7 @@ UINT32 unkch_state::screen_update_unkch(screen_device &screen, bitmap_ind16 &bit
{
// guess, this could be something else completely!!
// only draw the first 'reels' tilemap, but fullscreen, using alt registers? (or no scrolling at all? - doubtful, see girl)
if (m_unkch_vidreg & 0x40)
if (m_vidreg & 0x40)
{
for (i= 0;i < 32;i++)
{