From 68a9117e51b8524a22c7fe56ef3390353340386d Mon Sep 17 00:00:00 2001 From: DavidHaywood <28625134+DavidHaywood@users.noreply.github.com> Date: Tue, 31 Jul 2018 14:51:09 +0100 Subject: [PATCH] new machines marked as WORKING The Burning Cavern (31/03/87) [Miguel Bragado, Recreativas.org, ArcadeHacker, David Haywood] A Day In Space (31/03/87) [Miguel Bragado, Recreativas.org, ArcadeHacker, David Haywood] new clones marked as WORKING War Mission (WM 09/04/87) [Miguel Bragado, Recreativas.org, ArcadeHacker, David Haywood] there was also a disk for Paris Dakar, but the first tracks are damaged beyond repair, and it doesn't work, so haven't added it. --- src/mame/drivers/cedar_magnet.cpp | 70 +++++++++++++++++++++++++------ src/mame/mame.lst | 3 ++ 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/src/mame/drivers/cedar_magnet.cpp b/src/mame/drivers/cedar_magnet.cpp index 7223111e9f4..f2b6f81a13f 100644 --- a/src/mame/drivers/cedar_magnet.cpp +++ b/src/mame/drivers/cedar_magnet.cpp @@ -4,7 +4,7 @@ /* todo: - - fix sound emulation + - fix sound emulation (speed needs verifying + sample playback) - fix sprite communication / banking * bit "output bit 0x02 %d (IC21)" at 0x42 might be important * mag_exzi currently requires a gross hack to stop the sprite CPU crashing on startup @@ -25,8 +25,9 @@ - layer enables on War Mission? (transitions from title screen etc.) notes: - - 2 player mode can be enabled in service mode for War Mission, it is disabled by default - (settings are stored on the disk) + - high scores will be defaulted if the data in the table is corrupt, the games give no + option to do this otherwise. A backup copy of the score table is kept, so you also + have to enter and exit service mode. */ @@ -865,16 +866,54 @@ ROM_START( mag_xain ) ROM_LOAD( "xain.img", 0x00000, 0xf0000, CRC(5647849f) SHA1(edd2f3f6359424583bf526bf4601476dc849e617) ) ROM_END + +/* + Data after 0xd56b0 would not read consistently, however the game only appears to use the first 24 tracks (up to 0x48fff) + as it loads once on startup, not during gameplay, and all tracks before that gave consistent reads. There is data after this + point but it is likely leftovers from another game / whatever was on the disk before, so for our purposes this should be fine. + + Some bullets do seem to spawn from locations where there are no enemies, but I think this is just annoying game design. +*/ ROM_START( mag_war ) BIOS_ROM - /* Data after 0xd56b0 would not read consistently, however the game only appears to use the first 24 tracks (up to 0x48fff) - as it loads once on startup, not during gameplay, and all tracks before that gave consistent reads. There is data after this - point but it is likely leftovers from another game / whatever was on the disk before, so for our purposes this should be fine. - Some bullets do seem to spawn from locations where there are no enemies, but I think this is just annoying game design. - */ ROM_REGION( 0x100000, "flop:disk", ROMREGION_ERASE00 ) - ROM_LOAD( "war mission wm 4_6_87.img", 0x00000, 0xf0000, CRC(e6b35710) SHA1(e24f9adde09e4eacbfb58e359a2df263748fc7de) ) + ROM_LOAD( "war mission wm 4_6_87.img", 0x00000, 0xf0000, CRC(7c813520) SHA1(2ba5999709a52302aa367fb46199b331421a0d56) ) +ROM_END + +/* + Data read 100% consistently with multiple drives +*/ +ROM_START( mag_wara ) + BIOS_ROM + + ROM_REGION( 0x100000, "flop:disk", ROMREGION_ERASE00 ) + ROM_LOAD( "war mission wm 9_4_87.img", 0x00000, 0xf0000, CRC(6296ea6f) SHA1(c0aaf51362bfa3362ef39c3fb1e1c848b73fd780) ) +ROM_END + +/* + Data read 100% consistently with multiple drives +*/ +ROM_START( mag_burn ) + BIOS_ROM + + ROM_REGION( 0x100000, "flop:disk", ROMREGION_ERASE00 ) // + ROM_LOAD( "theburningcavern 31_3_87.img", 0x00000, 0xf0000, CRC(c95911f8) SHA1(eda3bdbbcc3e00a7da83253209e832855c2968b1) ) +ROM_END + +/* + Data read 100% consistently with non-original drive (usually gives worse results) + later tracks showed differences with original drive on each read (around 0xeef80 onwards, doesn't seem to be game data) + + weirdly there's was a single byte in an earlier track that read consistently, but in a different way for each drive + 0x2480e: 9d (non-original) vs 1d (original drive) + 1d seems to be correct as the same data is also elsewhere on the disc +*/ +ROM_START( mag_day ) + BIOS_ROM + + ROM_REGION( 0x100000, "flop:disk", ROMREGION_ERASE00 ) + ROM_LOAD( "adayinspace 31_3_87.img", 0x00000, 0xf0000, CRC(bc65302d) SHA1(6ace68a0b5f7a07a8f5c318c5359011074e7f2ec) ) ROM_END /* @@ -934,7 +973,14 @@ void cedar_magnet_state::kludge_protection() GAME( 1987, cedmag, 0, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Magnet System", MACHINE_IS_BIOS_ROOT ) GAME( 1987, mag_time, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "Time Scanner (TS 2.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Sega -GAME( 1987, mag_exzi, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Exzisus (EX 1.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Taito -GAME( 1987, mag_xain, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Xain'd Sleena (SC 3.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Technos -GAME( 1987, mag_war, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "War Mission (WM 4/6/87)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1987, mag_exzi, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Exzisus (EX 1.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Taito + +GAME( 1987, mag_xain, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Xain'd Sleena (SC 3.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Technos + +GAME( 1987, mag_war, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "War Mission (WM 04/06/87)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // date in program +GAME( 1987, mag_wara, mag_war,cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "War Mission (WM 09/04/87)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // the '9' was handwritten over a printed letter on disk label, date not in program + +GAME( 1987, mag_burn, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "The Burning Cavern (31/03/87)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // date on label + +GAME( 1987, mag_day, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "A Day In Space (31/03/87)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // date on label diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4b0a8260777..408dfa7856e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9576,6 +9576,9 @@ mag_time mag_exzi mag_xain mag_war +mag_wara +mag_burn +mag_day @source:centiped.cpp bullsdrt // (c) 1985 Shinkai