diff --git a/src/mame/drivers/magicfly.c b/src/mame/drivers/magicfly.c index 0e94b4d9491..0ad88ccb124 100644 --- a/src/mame/drivers/magicfly.c +++ b/src/mame/drivers/magicfly.c @@ -332,6 +332,12 @@ titled 'BONNE CHANCE!'. Turning the 4th DIP switch ON, the game switch to English, and the title changes to 'GOOD LUCK!' (as the above mentioned games). + To enter the test mode, press SERVICE (key 9). You can see an input-test matrix + to test all the valid inputs. Pressing BET (key M) and START (Key 1) simultaneou- + sly, you can find the book-keeping screen. Pressing once again both BET + START, + a little RAM test will start. As soon as it ends, will exit the mode and will be + back to the game.... + ******************************************************************************* @@ -412,12 +418,12 @@ - Added Bonne Chance!. A French/English poker game prototype of the well known 'Golden Poker' and 'Jack Potten Poker'. - Worked complete inputs from the scratch. Promoted to working. + - Added proper palette. Now the game seems to get accurate colors. - Added some notes. TODO: - - Palette for Bonne Chance!. - Simplify the gfx banks to avoid a custom palette. - Document the correct pinout. - Analyze the PLD. Try to reconstruct the original equations. @@ -455,15 +461,16 @@ public: TILE_GET_INFO_MEMBER(get_magicfly_tile_info); TILE_GET_INFO_MEMBER(get_7mezzo_tile_info); virtual void video_start(); - virtual void palette_init(); + DECLARE_PALETTE_INIT(magicfly); + DECLARE_PALETTE_INIT(bchance); DECLARE_VIDEO_START(7mezzo); UINT32 screen_update_magicfly(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; -/************************* -* Video Hardware * -*************************/ +/********************************************* +* Video Hardware * +*********************************************/ WRITE8_MEMBER(magicfly_state::magicfly_videoram_w) @@ -478,6 +485,7 @@ WRITE8_MEMBER(magicfly_state::magicfly_colorram_w) m_bg_tilemap->mark_tile_dirty(offset); } + TILE_GET_INFO_MEMBER(magicfly_state::get_magicfly_tile_info) { /* - bits - @@ -508,6 +516,7 @@ void magicfly_state::video_start() m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(magicfly_state::get_magicfly_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 29); } + TILE_GET_INFO_MEMBER(magicfly_state::get_7mezzo_tile_info) { /* - bits - @@ -538,13 +547,15 @@ VIDEO_START_MEMBER(magicfly_state,7mezzo) m_bg_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(magicfly_state::get_7mezzo_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 29); } + UINT32 magicfly_state::screen_update_magicfly(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(bitmap, cliprect, 0, 0); return 0; } -void magicfly_state::palette_init() + +PALETTE_INIT_MEMBER(magicfly_state, magicfly) { int i; @@ -571,10 +582,40 @@ void magicfly_state::palette_init() } } +PALETTE_INIT_MEMBER(magicfly_state, bchance) +{ + int i; -/****************************** -* R/W Handlers * -******************************/ + for (i = 0x00; i < 0x10; i += 0x10) + { + /* 1st gfx bank */ + palette_set_color(machine(), i + 0, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 2, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 4, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 6, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 8, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 10, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 12, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 14, MAKE_RGB(0x00, 0x00, 0x00)); + + palette_set_color(machine(), i + 1, MAKE_RGB(0x00, 0x00, 0x00)); + palette_set_color(machine(), i + 3, MAKE_RGB(0xff, 0x00, 0x00)); + palette_set_color(machine(), i + 5, MAKE_RGB(0x00, 0xff, 0x00)); + palette_set_color(machine(), i + 7, MAKE_RGB(0xff, 0xff, 0x00)); + palette_set_color(machine(), i + 9, MAKE_RGB(0x00, 0x00, 0xff)); + palette_set_color(machine(), i + 11, MAKE_RGB(0xff, 0x00, 0xff)); + palette_set_color(machine(), i + 13, MAKE_RGB(0x00, 0xff, 0xff)); + palette_set_color(machine(), i + 15, MAKE_RGB(0xff, 0xff, 0xff)); + } + + palette_set_color(machine(), 0x08 , MAKE_RGB(0xff, 0xff, 0xff)); // white for the cards back logo background. + palette_set_color(machine(), 0x12 , MAKE_RGB(0x00, 0x00, 0x00)); // black for the cards corners (should be transparent) +} + + +/************************************************** +* R/W Handlers * +**************************************************/ READ8_MEMBER(magicfly_state::mux_port_r) @@ -611,9 +652,9 @@ WRITE8_MEMBER(magicfly_state::mux_port_w) } -/************************* -* Memory map information * -*************************/ +/********************************************* +* Memory map information * +*********************************************/ static ADDRESS_MAP_START( magicfly_map, AS_PROGRAM, 8, magicfly_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B NVRAM */ @@ -627,9 +668,9 @@ static ADDRESS_MAP_START( magicfly_map, AS_PROGRAM, 8, magicfly_state ) ADDRESS_MAP_END -/************************* -* Input ports * -*************************/ +/********************************************* +* Input ports * +*********************************************/ static INPUT_PORTS_START( magicfly ) /* Multiplexed 4 x 5 bits. @@ -769,6 +810,8 @@ static INPUT_PORTS_START( bchance ) R2 0 0 0 0 0 R3 0 0 0 0 0 R4 0 0 0 0 0 + + R4C1 + R4C5 to exit... */ PORT_START("IN0-0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // input test R1C1 (coin 1) @@ -801,12 +844,12 @@ static INPUT_PORTS_START( bchance ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN0-3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) // input test R4C1 (start/deal) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) // input test R4C2 (cancel) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) // input test R4C3 (service/test) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) // input test R4C4 (d-up) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") // input test R4C1 (start/deal) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) // input test R4C2 (cancel) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) // input test R4C3 (service/test) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) // input test R4C4 (d-up) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) // input test R4C5 (bet) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) // input test R4C5 (bet) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -831,9 +874,9 @@ static INPUT_PORTS_START( bchance ) INPUT_PORTS_END -/************************* -* Graphics Layouts * -*************************/ +/********************************************* +* Graphics Layouts * +*********************************************/ static const gfx_layout tilelayout = { @@ -858,9 +901,9 @@ static const gfx_layout charlayout = }; -/****************************** -* Graphics Decode Information * -******************************/ +/************************************************** +* Graphics Decode Information * +**************************************************/ static GFXDECODE_START( magicfly ) GFXDECODE_ENTRY( "gfxbnk1", 0, tilelayout, 16, 1 ) @@ -868,9 +911,9 @@ static GFXDECODE_START( magicfly ) GFXDECODE_END -/************************ -* CRTC Interface * -************************/ +/******************************************** +* CRTC Interface * +********************************************/ static MC6845_INTERFACE( mc6845_intf ) { @@ -888,9 +931,9 @@ static MC6845_INTERFACE( mc6845_intf ) }; -/************************* -* Machine Drivers * -*************************/ +/********************************************* +* Machine Drivers * +*********************************************/ static MACHINE_CONFIG_START( magicfly, magicfly_state ) @@ -911,7 +954,7 @@ static MACHINE_CONFIG_START( magicfly, magicfly_state ) MCFG_GFXDECODE(magicfly) MCFG_PALETTE_LENGTH(32) - + MCFG_PALETTE_INIT_OVERRIDE(magicfly_state, magicfly) MCFG_MC6845_ADD("crtc", MC6845, MASTER_CLOCK/16, mc6845_intf) /* guess */ @@ -919,11 +962,11 @@ static MACHINE_CONFIG_START( magicfly, magicfly_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_DAC_ADD("dac") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( 7mezzo, magicfly ) - /* basic machine hardware */ +static MACHINE_CONFIG_DERIVED( 7mezzo, magicfly ) /* video hardware */ MCFG_VIDEO_START_OVERRIDE(magicfly_state,7mezzo) @@ -931,9 +974,17 @@ static MACHINE_CONFIG_DERIVED( 7mezzo, magicfly ) MACHINE_CONFIG_END -/************************* -* Rom Load * -*************************/ +static MACHINE_CONFIG_DERIVED( bchance, magicfly ) + + /* video hardware */ + MCFG_PALETTE_INIT_OVERRIDE(magicfly_state, bchance) + +MACHINE_CONFIG_END + + +/********************************************* +* Rom Load * +*********************************************/ ROM_START( magicfly ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -945,7 +996,6 @@ ROM_START( magicfly ) ROM_LOAD( "magicfly0.bin", 0x4000, 0x2000, CRC(44e3c9d6) SHA1(677d25360d261bf2400f399b8015eeb529ad405e) ) ROM_REGION( 0x0800, "gfxbnk0", 0 ) -// ROM_FILL( 0x0000, 0x1000, 0 ) /* filling the R-G bitplanes */ ROM_COPY( "gfx", 0x1800, 0x0000, 0x0800 ) /* chars */ ROM_REGION( 0x1800, "gfxbnk1", 0 ) @@ -968,7 +1018,6 @@ ROM_START( 7mezzo ) ROM_LOAD( "ns0.bin", 0x4000, 0x2000, CRC(e04fb210) SHA1(81e764e296fe387daf8ca67064d5eba2a4fc3c26) ) /* Renamed as ns0.bin regarding pcb location and content */ ROM_REGION( 0x0800, "gfxbnk0", 0 ) -// ROM_FILL( 0x0000, 0x1000, 0 ) /* filling the R-G bitplanes */ ROM_COPY( "gfx", 0x1800, 0x0000, 0x0800 ) /* chars */ ROM_REGION( 0x1800, "gfxbnk1", 0 ) @@ -984,13 +1033,12 @@ ROM_START( bchance ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "v-pk-4gag.bin", 0xc000, 0x4000, CRC(7c2dd908) SHA1(97b1390fb4c8c838a0d5b78d6904d597a9abe27f) ) - ROM_REGION( 0x6000, "gfx", 0 ) - ROM_LOAD( "n-pk-2.bin", 0x0000, 0x2000, BAD_DUMP CRC(462c3dd7) SHA1(fb30d6147e0d607b3fb631d8bdca35e98eccfd2d) ) // from an exhaustive analysis of 25 different bad dumps + ROM_REGION( 0x6000, "gfx", 0 ) /* ROM n-pk-2.bin was created from an exhaustive analysis of 25 different bad dumps */ + ROM_LOAD( "n-pk-2.bin", 0x0000, 0x2000, BAD_DUMP CRC(462c3dd7) SHA1(fb30d6147e0d607b3fb631d8bdca35e98eccfd2d) ) ROM_LOAD( "n-pk-1.bin", 0x2000, 0x2000, CRC(e35cebd6) SHA1(b0dd86fd4c06f98e486b04e09808985bfa4f0e9c) ) ROM_LOAD( "n-pk-0.bin", 0x4000, 0x2000, CRC(3c64edc4) SHA1(97b677b7c4999b502ab4b4f70c33b40050843796) ) ROM_REGION( 0x0800, "gfxbnk0", 0 ) -// ROM_FILL( 0x0000, 0x1000, 0 ) /* filling the R-G bitplanes */ ROM_COPY( "gfx", 0x1800, 0x0000, 0x0800 ) /* chars */ ROM_REGION( 0x1800, "gfxbnk1", 0 ) @@ -999,15 +1047,15 @@ ROM_START( bchance ) ROM_COPY( "gfx", 0x5800, 0x1000, 0x0800 ) /* 3bpp tiles, bitplane 3 */ ROM_REGION( 0x0200, "plds", 0 ) - ROM_LOAD( "gal16v8-bchance.bin", 0x0000, 0x0104, NO_DUMP ) // protected. + ROM_LOAD( "gal16v8-bchance.bin", 0x0000, 0x0104, NO_DUMP ) /* protected */ ROM_END -/************************* -* Game Drivers * -*************************/ +/********************************************* +* Game Drivers * +*********************************************/ /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */ GAME( 198?, magicfly, 0, magicfly, magicfly, driver_device, 0, ROT0, "P&A Games", "Magic Fly", 0 ) GAME( 198?, 7mezzo, 0, 7mezzo, 7mezzo, driver_device, 0, ROT0, "", "7 e Mezzo", 0 ) -GAME( 198?, bchance, 0, magicfly, bchance, driver_device, 0, ROT0, "", "Bonne Chance! (French/English)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_GRAPHICS ) +GAME( 198?, bchance, 0, bchance, bchance, driver_device, 0, ROT0, "", "Bonne Chance! (French/English)", GAME_IMPERFECT_GRAPHICS )