Mundial/Mondial (Italian/French): Implemented the program banking

properly. Now you can choose the program through a DIP switch.
[Roberto Fresca]
This commit is contained in:
Roberto Fresca 2014-02-23 05:53:51 +00:00
parent 5174c3de11
commit f30351f946

View File

@ -985,6 +985,13 @@
- Added technical notes.
[2014-02-23]
- Added a new Videotron set with cards selector.
- Mundial/Mondial (Italian/French): Implemented the program banking
properly. Now you can choose the program through a DIP switch.
TODO:
- Missing PIA connections.
@ -1066,7 +1073,6 @@ public:
DECLARE_DRIVER_INIT(vkdlswwr);
DECLARE_DRIVER_INIT(vkdlswwv);
DECLARE_DRIVER_INIT(bchancep);
DECLARE_DRIVER_INIT(mondial);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(wcrdxtnd_get_bg_tile_info);
virtual void video_start();
@ -1074,6 +1080,8 @@ public:
DECLARE_PALETTE_INIT(witchcrd);
DECLARE_VIDEO_START(wcrdxtnd);
DECLARE_PALETTE_INIT(wcrdxtnd);
DECLARE_MACHINE_START(mondial);
DECLARE_MACHINE_RESET(mondial);
UINT32 screen_update_goldnpkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
optional_device<discrete_device> m_discrete;
@ -3399,6 +3407,9 @@ static INPUT_PORTS_START( mondial )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
/* the following one is connected to DIP switches and is meant
for switch between different programs stored in different
halves of the program ROM */
PORT_START("SELDSW")
PORT_DIPNAME( 0x01, 0x00, "Game Selector" )
PORT_DIPSETTING( 0x00, "Game 1 (Italian" )
@ -3684,6 +3695,24 @@ static const ay8910_interface ay8910_config =
};
/******************************************
* Machine Start & Reset *
******************************************/
MACHINE_START_MEMBER(goldnpkr_state, mondial)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 2, &ROM[0], 0x4000);
}
MACHINE_RESET_MEMBER(goldnpkr_state, mondial)
{
UINT8 seldsw = (ioport("SELDSW")->read() );
popmessage("ROM Bank: %02X", seldsw);
membank("bank1")->set_entry(seldsw);
}
/*********************************************
* Machine Drivers *
*********************************************/
@ -3879,7 +3908,7 @@ static MACHINE_CONFIG_DERIVED( genie, goldnpkr_base )
MCFG_PIA_WRITEPA_HANDLER(WRITE8(goldnpkr_state, mux_port_w))
/* video hardware */
MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state,witchcrd)
MCFG_PALETTE_INIT_OVERRIDE(goldnpkr_state, witchcrd)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -3895,6 +3924,9 @@ static MACHINE_CONFIG_DERIVED( mondial, goldnpkr_base )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mondial_map)
MCFG_MACHINE_START_OVERRIDE(goldnpkr_state, mondial)
MCFG_MACHINE_RESET_OVERRIDE(goldnpkr_state, mondial)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("discrete", DISCRETE, 0)
@ -9693,8 +9725,8 @@ ROM_END
*/
ROM_START( pokermon )
ROM_REGION( 0x18000, "maincpu", 0 ) /* using 1st bank program */
ROM_LOAD( "mbv_bi.bin", 0x10000, 0x8000, CRC(da00e08a) SHA1(98e52915178e29ab3ae674e6b895da14626d3dd8) )
ROM_REGION( 0x10000, "maincpu", 0 ) /* 2 programs, selectable via DIP switch */
ROM_LOAD( "mbv_bi.bin", 0x0000, 0x8000, CRC(da00e08a) SHA1(98e52915178e29ab3ae674e6b895da14626d3dd8) )
ROM_REGION( 0x18000, "gfx", 0 )
ROM_LOAD( "1m.bin", 0x00000, 0x4000, CRC(1b9e73ef) SHA1(fc9b67ab4c233a7e8ec8dc799732884f74166db0) )
@ -10133,22 +10165,6 @@ DRIVER_INIT_MEMBER(goldnpkr_state, bchancep)
}
DRIVER_INIT_MEMBER(goldnpkr_state, mondial)
{
/* Program banking..... */
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 2, &ROM[0x10000], 0x4000);
membank("bank1")->set_entry(0); // for now, fixed in italian.
// UINT8 seldsw = (ioport("SELDSW")->read() );
// popmessage("ROM Bank: %02X", seldsw);
// membank("bank1")->set_entry(seldsw);
}
/*********************************************
* Game Drivers *
*********************************************/
@ -10286,4 +10302,4 @@ GAME( 198?, pokerdub, 0, pottnpkr, goldnpkr, driver_device, 0,
GAME( 198?, pokerduc, 0, goldnpkr, goldnpkr, goldnpkr_state, icp1db, ROT0, "<unknown>", "unknown encrypted poker game", GAME_NOT_WORKING ) // encrypted.
GAMEL( 198?, bchancep, 0, bchancep, goldnpkr, goldnpkr_state, bchancep, ROT0, "<unknown>", "Bonne Chance! (Golden Poker prequel hardware)", GAME_NOT_WORKING, layout_goldnpkr )
GAME( 1987, pokermon, 0, mondial, mondial, goldnpkr_state, mondial, ROT0, "<unknown>", "Mundial/Mondial (Italian/French)", 0 )
GAME( 1987, pokermon, 0, mondial, mondial, driver_device, 0, ROT0, "<unknown>", "Mundial/Mondial (Italian/French)", 0 )