Bonne Chance!: Added proper palette. Now the game seems to get accurate colors.

Also added some descriptive notes and instructions for the service mode. [Roberto Fresca]
This commit is contained in:
Roberto Fresca 2013-01-18 02:01:23 +00:00
parent df619ae8a2
commit 6474a63c62

View File

@ -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, "<unknown>", "7 e Mezzo", 0 )
GAME( 198?, bchance, 0, magicfly, bchance, driver_device, 0, ROT0, "<unknown>", "Bonne Chance! (French/English)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_GRAPHICS )
GAME( 198?, bchance, 0, bchance, bchance, driver_device, 0, ROT0, "<unknown>", "Bonne Chance! (French/English)", GAME_IMPERFECT_GRAPHICS )