New clones marked not working

-----------------------------
F-1 Grand Prix (set 3) [nnap]
This commit is contained in:
Ivan Vangelista 2023-04-11 18:18:37 +02:00
parent d5399553bc
commit 5086fe9dcf
2 changed files with 73 additions and 25 deletions

View File

@ -32441,7 +32441,7 @@ danceyesu // 1996.10 Dancing Eyes (US, DC3/VER.C)
danceyesj // 1996.09 Dancing Eyes (Japan, DC1/VER.A)
dunkmnia // 1996.05 Dunk Mania (World, DM2/VER.C)
dunkmniajc // 1996.05 Dunk Mania (Japan, DM1/VER.C)
fambowl // 1997.?? Family Bowl (Ver. 1.00)
fambowl // 1997.?? Family Bowl (Ver. 1.00)
gunbarla // 1999.?? Gunbarl (Japan, GNB1/VER.A)
myangel3 // 1998.03 Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A)
pocketrc // 1997.03 Pocket Racer (Japan, PKR1/VER.B)
@ -44867,7 +44867,8 @@ crshrace2a // (c) 1993 Video System Co.
f1gp // (c) 1991 Video System Co.
f1gp2 // (c) 1992 Video System Co.
f1gpa // (c) 1991 Video System Co.
f1gpb // bootleg
f1gpb // (c) 1991 Video System Co.
f1gpbl // bootleg
@source:vsystem/fromanc2.cpp
fromanc2 // (c) 1995 Video System Co. (Japan)

View File

@ -19,6 +19,9 @@
f1gp:
- gfxctrl register not understood - handling of fg/sprite priority to fix
"continue" screen is just a kludge.
f1gpb:
- supposedly supports only steering wheel, but the emulation doesn't seem
to work.
f1gp2:
- sprite lag noticeable in the animation at the end of a race (the wheels
of the car are sprites while the car is the fg tilemap)
@ -85,7 +88,7 @@ public:
m_spr_old(*this, "vsystem_spr_old%u", 1U)
{ }
void f1gpb(machine_config &config);
void f1gpbl(machine_config &config);
void f1gp(machine_config &config);
protected:
@ -115,7 +118,7 @@ protected:
optional_device<cpu_device> m_audiocpu;
optional_device<k053936_device> m_k053936;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch; // not f1gpb
optional_device<generic_latch_8_device> m_soundlatch; // not f1gpbl
required_device<acia6850_device> m_acia;
void sh_bankswitch_w(uint8_t data);
@ -141,16 +144,16 @@ private:
// devices
optional_device_array<vsystem_spr2_device, 2> m_spr_old; // f1gp
void f1gpb_misc_w(uint16_t data);
void f1gpbl_misc_w(uint16_t data);
void rozgfxram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
TILE_GET_INFO_MEMBER(get_roz_tile_info);
uint32_t screen_update_f1gp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_f1gpb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void f1gpb_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
uint32_t screen_update_f1gpbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void f1gpbl_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
void f1gp_cpu1_map(address_map &map);
void f1gpb_cpu1_map(address_map &map);
void f1gpb_cpu2_map(address_map &map);
void f1gpbl_cpu1_map(address_map &map);
void f1gpbl_cpu2_map(address_map &map);
};
class f1gp2_state : public f1gp_state
@ -366,7 +369,7 @@ uint32_t f1gp2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
***************************************************************************/
// BOOTLEG
void f1gp_state::f1gpb_draw_sprites(screen_device &screen,bitmap_ind16 &bitmap,const rectangle &cliprect)
void f1gp_state::f1gpbl_draw_sprites(screen_device &screen,bitmap_ind16 &bitmap,const rectangle &cliprect)
{
int start_offset = m_spriteram.bytes() / 2 - 4;
@ -431,7 +434,7 @@ void f1gp_state::f1gpb_draw_sprites(screen_device &screen,bitmap_ind16 &bitmap,c
}
// BOOTLEG
uint32_t f1gp_state::screen_update_f1gpb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t f1gp_state::screen_update_f1gpbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int const incxy = (int16_t)m_rozregs[1];
int const incyx = -incxy;
@ -451,7 +454,7 @@ uint32_t f1gp_state::screen_update_f1gpb(screen_device &screen, bitmap_ind16 &bi
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 1);
f1gpb_draw_sprites(screen, bitmap, cliprect);
f1gpbl_draw_sprites(screen, bitmap, cliprect);
return 0;
}
@ -545,7 +548,7 @@ void f1gp_state::sound_io_map(address_map &map)
map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
}
void f1gp_state::f1gpb_misc_w(uint16_t data)
void f1gp_state::f1gpbl_misc_w(uint16_t data)
{
/*
static int old=-1;
@ -570,7 +573,7 @@ void f1gp_state::f1gpb_misc_w(uint16_t data)
*/
}
void f1gp_state::f1gpb_cpu1_map(address_map &map)
void f1gp_state::f1gpbl_cpu1_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x2fffff).rom().region("user1", 0);
@ -594,14 +597,14 @@ void f1gp_state::f1gpb_cpu1_map(address_map &map)
map(0xfff006, 0xfff007).nopw();
map(0xfff00a, 0xfff00b).ram().share(m_fgregs);
map(0xfff00f, 0xfff00f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0xfff00c, 0xfff00d).w(FUNC(f1gp_state::f1gpb_misc_w));
map(0xfff00c, 0xfff00d).w(FUNC(f1gp_state::f1gpbl_misc_w));
map(0xfff010, 0xfff011).nopw();
map(0xfff020, 0xfff023).nopw(); // GGA access
map(0xfff050, 0xfff051).portr("DSW3");
map(0xfff800, 0xfff809).ram().share(m_rozregs);
}
void f1gp_state::f1gpb_cpu2_map(address_map &map)
void f1gp_state::f1gpbl_cpu2_map(address_map &map)
{
map(0x000000, 0x01ffff).rom();
map(0xff8000, 0xffbfff).ram();
@ -852,15 +855,15 @@ void f1gp_state::f1gp(machine_config &config)
ymsnd.add_route(2, "rspeaker", 1.0);
}
void f1gp_state::f1gpb(machine_config &config)
void f1gp_state::f1gpbl(machine_config &config)
{
// basic machine hardware
M68000(config, m_maincpu, 10'000'000); // 10 MHz ???
m_maincpu->set_addrmap(AS_PROGRAM, &f1gp_state::f1gpb_cpu1_map);
m_maincpu->set_addrmap(AS_PROGRAM, &f1gp_state::f1gpbl_cpu1_map);
m_maincpu->set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold));
m68000_device &sub(M68000(config, "sub", 10'000'000)); // 10 MHz ???
sub.set_addrmap(AS_PROGRAM, &f1gp_state::f1gpb_cpu2_map);
sub.set_addrmap(AS_PROGRAM, &f1gp_state::f1gpbl_cpu2_map);
sub.set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold));
// NO sound CPU
@ -879,7 +882,7 @@ void f1gp_state::f1gpb(machine_config &config)
screen.set_refresh_hz(60);
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
screen.set_screen_update(FUNC(f1gp_state::screen_update_f1gpb));
screen.set_screen_update(FUNC(f1gp_state::screen_update_f1gpbl));
screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_f1gp);
@ -1006,11 +1009,54 @@ ROM_START( f1gpa )
ROM_LOAD( "rom17-a.08", 0x000000, 0x100000, CRC(ea70303d) SHA1(8de1a0e6d47cd80a622663c1745a1da54cd0ea05) )
ROM_END
ROM_START( f1gpb ) // 0F17-A-04 PCB
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_WORD_SWAP( "rom1.3", 0x00000, 0x40000, CRC(5d945bcd) SHA1(8dc1cce2d0eac21ec4dd716b35944ae67d35ced0) )
ROM_REGION16_BE( 0x200000, "user1", 0 ) // extra ROMs mapped at 100000
ROM_LOAD16_BYTE( "rom10-a.1", 0x000000, 0x40000, CRC(46a289fb) SHA1(6a8c19e08b6d836fe83378fd77fead82a0b2db7c) )
ROM_LOAD16_BYTE( "rom11-a.2", 0x000001, 0x40000, CRC(53df8ea1) SHA1(25d50bb787f3bd35c9a8ae2b0ab9a21e000debb0) )
ROM_LOAD16_BYTE( "rom12-a.3", 0x080000, 0x40000, CRC(d8c1bcf4) SHA1(d6d77354eb1ab413ba8cfa5d973cf5b0c851c23b) )
ROM_LOAD16_BYTE( "rom13-a.4", 0x080001, 0x40000, CRC(7d92e1fa) SHA1(c23f5beea85b0804c61ef9e7f131b186d076221f) )
ROM_LOAD16_BYTE( "rom7-a.5", 0x100000, 0x40000, CRC(7a014ba6) SHA1(8f0abbb68100e396e5a41337254cb6bf1a2ed00b) )
ROM_LOAD16_BYTE( "rom6-a.6", 0x100001, 0x40000, CRC(6d947a3f) SHA1(2cd01ee2a73ab105a45a5464a29fd75aa43ba2db) )
ROM_LOAD16_BYTE( "rom8-a.7", 0x180000, 0x40000, CRC(0ed783c7) SHA1(c0c467ede51c08d84999897c6d5cc8b584b23b67) )
ROM_LOAD16_BYTE( "rom9-a.8", 0x180001, 0x40000, CRC(49286572) SHA1(c5e16bd1ccd43452337a4cd76db70db079ca0706) )
ROM_REGION16_BE( 0x200000, "user2", 0 ) // extra ROMs mapped at a00000 containing gfx data for the 053936
ROM_LOAD16_WORD_SWAP( "rom2-a.06", 0x000000, 0x100000, CRC(747dd112) SHA1(b9264bec61467ab256cf6cb698b6e0ea8f8006e0) )
ROM_LOAD16_WORD_SWAP( "rom3-a.05", 0x100000, 0x100000, CRC(264aed13) SHA1(6f0de860d4299befffc530b7a8f19656982a51c4) )
ROM_REGION( 0x20000, "sub", 0 ) // 68000 code
ROM_LOAD16_WORD_SWAP( "rom4.4", 0x00000, 0x20000, CRC(8e811d36) SHA1(2b806b50a3a307a21894687f16485ace287a7c4c) )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */
ROM_LOAD( "rom5.8", 0x00000, 0x20000, CRC(9ea36e35) SHA1(9254dea8362318d8cfbd5e36e476e0e235e6326a) )
ROM_REGION( 0x200000, "fgtiles", 0 )
ROM_LOAD( "rom3-b.07", 0x000000, 0x100000, CRC(ffb1d489) SHA1(9330b67e0eaaf67d6c38f40a02c72419bd38fb81) )
ROM_LOAD( "rom2-b.04", 0x100000, 0x100000, CRC(d1b3471f) SHA1(d1a95fbaad1c3d9ec2121bf65abbcdb5441bd0ac) )
ROM_REGION( 0x100000, "sprites1", 0 )
ROM_LOAD32_WORD( "rom5-b.2", 0x00000, 0x80000, CRC(17572b36) SHA1(c58327c2f708783a3e8470e290cae0d71454f1da) )
ROM_LOAD32_WORD( "rom4-b.3", 0x00002, 0x80000, CRC(72d12129) SHA1(11da6990a54ae1b6f6d0bed5d0431552f83a0dda) )
ROM_REGION( 0x080000, "sprites2", 0 )
ROM_LOAD32_WORD( "rom7-b.17", 0x00000, 0x40000, CRC(2aed9003) SHA1(45ff9953ad98063573e7fd7b930ae8b0183cdd04) )
ROM_LOAD32_WORD( "rom6-b.16", 0x00002, 0x40000, CRC(6789ef12) SHA1(9b0d1cc6e9c6398ccb7f635c4c148fddd224a21f) )
ROM_REGION( 0x100000, "ymsnd:adpcmb", 0 )
ROM_LOAD( "rom14-a.09", 0x000000, 0x100000, CRC(b4c1ac31) SHA1(acab2e1b5ce4ca3a5c4734562481b54db4b46995) )
ROM_REGION( 0x100000, "ymsnd:adpcma", 0 )
ROM_LOAD( "rom17-a.08", 0x000000, 0x100000, CRC(ea70303d) SHA1(8de1a0e6d47cd80a622663c1745a1da54cd0ea05) )
ROM_END
/* This is a bootleg of f1gp, produced by Playmark in Italy
the video hardware is different, it lacks the sound z80, and has less samples
*/
ROM_START( f1gpb )
ROM_START( f1gpbl )
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 code
// these have extra data at 0x30000 which isn't preset in the f1gp set, is it related to the changed sound hardware?
ROM_LOAD16_BYTE( "1.ic38", 0x00001, 0x20000, CRC(046dd83a) SHA1(ea65fa88f9d9a79664de666e63594a7a7de86650) )
@ -1101,8 +1147,9 @@ ROM_END
} // anonymous namespace
GAME( 1991, f1gp, 0, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix (set 1)", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // censored banners, US McO'River release?
GAME( 1991, f1gpa, f1gp, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix (set 2)", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, f1gp_state, empty_init, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark.
GAME( 1991, f1gp, 0, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix (set 1)", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // censored banners, US McO'River release?
GAME( 1991, f1gpa, f1gp, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix (set 2)", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
GAME( 1991, f1gpb, f1gp, f1gp, f1gp, f1gp_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // supposed to be the earliest version dumped and only work with steering wheel
GAME( 1991, f1gpbl, f1gp, f1gpbl, f1gp, f1gp_state, empty_init, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark.
GAME( 1992, f1gp2, 0, f1gp2, f1gp2, f1gp2_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )
GAME( 1992, f1gp2, 0, f1gp2, f1gp2, f1gp2_state, empty_init, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_LAN | MACHINE_SUPPORTS_SAVE )