From 3110a474b110501bdbca2cd00ecaf74671ba81ac Mon Sep 17 00:00:00 2001 From: angelosa Date: Wed, 2 Oct 2024 11:30:47 +0200 Subject: [PATCH 01/13] jaleco/acommand.cpp: cleanups --- src/mame/jaleco/acommand.cpp | 207 +++++++++++++++-------------------- src/mame/jaleco/jalmah.cpp | 4 +- 2 files changed, 90 insertions(+), 121 deletions(-) diff --git a/src/mame/jaleco/acommand.cpp b/src/mame/jaleco/acommand.cpp index fb512842ffc..7cc8dd9ed37 100644 --- a/src/mame/jaleco/acommand.cpp +++ b/src/mame/jaleco/acommand.cpp @@ -1,23 +1,23 @@ // license:BSD-3-Clause // copyright-holders:Angelo Salese -/******************************************************************************************* +/************************************************************************************************** Alien Command (c) 1993 Jaleco -driver by Angelo Salese - Actually same HW as the Cisco Heat ones. TODO: --Understand what "devices" area needs to make this working.It's likely that the upper switches - controls the UFO's and the lower switches the astronauts. --Back tilemap paging is likely to be incorrect. --3D Artworks for the UFO's,Astronauts etc. --Merge to the Cisco Heat driver. +- Understand what "devices" area needs to make this working. +\- Possibly the upper switches controls the UFO's and the lower switches the astronauts. +- 3D Artworks for the UFO's,Astronauts etc. +- Merge sprite chip with jaleco/cischeat.cpp +\- Uses zooming during attract, and needs pdrawgfx. Notes: --The real HW is a redemption machine with two guns, similar to the "Cosmo Gang the Video" -(Namco) redemption version. +- The real HW is a redemption machine with two guns, similar to namco/cgang.cpp. + +bp 237c4,1,{curpc+=0x10;g} ; to skip initial error checks + ; $f009a & $f009c SW state m68k irq table vectors lev 1 : 0x64 : 0000 04f0 - rte @@ -28,7 +28,7 @@ lev 5 : 0x74 : 0000 04f0 - rte lev 6 : 0x78 : 0000 04f0 - rte lev 7 : 0x7c : 0000 04f0 - rte -=========================================================================================== +=================================================================================================== Jaleco Alien Command Redemption Video Game with Guns @@ -55,16 +55,16 @@ JALMR14 BIN 524,288 02-07-99 1:17a JALMR14.BIN JALCF1 BIN 1,048,576 02-07-99 1:11a JALCF1.BIN -*******************************************************************************************/ +**************************************************************************************************/ #include "emu.h" -#include "ms1_tmap.h" - #include "cpu/m68000/m68000.h" #include "machine/timer.h" #include "sound/okim6295.h" +#include "ms1_tmap.h" + #include "emupal.h" #include "screen.h" #include "speaker.h" @@ -76,17 +76,16 @@ namespace { class acommand_state : public driver_device { public: - acommand_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_spriteram(*this, "spriteram"), - m_maincpu(*this, "maincpu"), - m_oki1(*this, "oki1"), - m_oki2(*this, "oki2"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_bgtmap(*this, "bgtmap"), - m_txtmap(*this, "txtmap"), - m_digits(*this, "digit%u", 0U) + acommand_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "palette") + , m_bgtmap(*this, "bgtmap") + , m_txtmap(*this, "txtmap") + , m_spriteram(*this, "spriteram") + , m_oki(*this, "oki%u", 1U) + , m_digits(*this, "digit%u", 0U) { } void acommand(machine_config &config); @@ -103,23 +102,20 @@ class acommand_state : public driver_device void ext_devices_1_w(uint16_t data); void ext_devices_2_w(uint16_t data); - void ac_unk2_w(uint16_t data); - TILEMAP_MAPPER_MEMBER(bg_scan); - uint32_t screen_update_acommand(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(acommand_scanline); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_DEVICE_CALLBACK_MEMBER(scanline_cb); - void acommand_map(address_map &map) ATTR_COLD; + void main_map(address_map &map) ATTR_COLD; virtual void machine_start() override ATTR_COLD; - required_shared_ptr m_spriteram; required_device m_maincpu; - required_device m_oki1; - required_device m_oki2; required_device m_gfxdecode; required_device m_palette; required_device m_bgtmap; required_device m_txtmap; + required_shared_ptr m_spriteram; + required_device_array m_oki; output_finder<8> m_digits; uint16_t m_7seg0 = 0; @@ -197,7 +193,7 @@ void acommand_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec } -uint32_t acommand_state::screen_update_acommand(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t acommand_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { // reference has black pen background, as weird it might sound bitmap.fill(m_palette->black_pen(), cliprect); @@ -210,15 +206,6 @@ uint32_t acommand_state::screen_update_acommand(screen_device &screen, bitmap_in } -/******************************************************************************************/ - -/*This is always zero ATM*/ -void acommand_state::ac_unk2_w(uint16_t data) -{ - if(data) - popmessage("UNK-2 enabled %04x",data); -} - /************************************* * * I/O @@ -227,13 +214,13 @@ void acommand_state::ac_unk2_w(uint16_t data) void acommand_state::oki_bank_w(uint8_t data) { - m_oki1->set_rom_bank(data & 0x3); - m_oki2->set_rom_bank((data & 0x30) >> 4); + m_oki[0]->set_rom_bank(data & 0x3); + m_oki[1]->set_rom_bank((data & 0x30) >> 4); } /* 0 1 2 3 4 5 6 7 8 9 a b c d e f*/ -static const uint8_t led_fill[0x10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00,0x00,0x00,0x00,0x00}; +static const uint8_t led_fill[0x10] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00,0x00,0x00,0x00,0x00 }; void acommand_state::output_7seg0_w(offs_t offset, uint16_t data, uint16_t mem_mask) { @@ -293,7 +280,7 @@ uint16_t acommand_state::ext_devices_0_r() void acommand_state::ext_devices_0_w(uint16_t data) { - printf("%04x EXT 0\n",data); + logerror("%04x EXT 0\n",data); m_boss_door = data & 3; m_ufo_lane[0] = (data >> 8) & 0x1f; } @@ -311,32 +298,32 @@ uint16_t acommand_state::ext_devices_1_r() void acommand_state::ext_devices_1_w(uint16_t data) { - //printf("%04x EXT 1\n",data); + //logerror("%04x EXT 1\n",data); m_ufo_lane[1] = (data >> 0) & 0x1f; m_ufo_lane[2] = (data >> 8) & 0x1f; } void acommand_state::ext_devices_2_w(uint16_t data) { - //printf("%04x EXT 2\n",data); + //logerror("%04x EXT 2\n",data); m_ufo_lane[3] = (data >> 0) & 0x1f; m_ufo_lane[4] = (data >> 8) & 0x1f; } void acommand_state::output_lamps_w(uint16_t data) { - machine().bookkeeping().coin_counter_w(0, data & 0x40); - machine().bookkeeping().coin_counter_w(1, data & 0x80); + machine().bookkeeping().coin_counter_w(0, BIT(data, 6)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 7)); // --xx --xx lamps } -void acommand_state::acommand_map(address_map &map) +void acommand_state::main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x082000, 0x082005).w(m_bgtmap, FUNC(megasys1_tilemap_device::scroll_w)); map(0x082100, 0x082105).w(m_txtmap, FUNC(megasys1_tilemap_device::scroll_w)); - map(0x082208, 0x082209).w(FUNC(acommand_state::ac_unk2_w)); + map(0x082208, 0x082209).noprw(); // watchdog map(0x0a0000, 0x0a3fff).ram().w(m_bgtmap, FUNC(megasys1_tilemap_device::write)).share("bgtmap"); map(0x0b0000, 0x0b3fff).ram().w(m_txtmap, FUNC(megasys1_tilemap_device::write)).share("txtmap"); map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); @@ -346,8 +333,8 @@ void acommand_state::acommand_map(address_map &map) map(0x100001, 0x100001).w(FUNC(acommand_state::oki_bank_w)); map(0x100008, 0x100009).portr("IN0").w(FUNC(acommand_state::output_lamps_w)); - map(0x100014, 0x100017).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); - map(0x100018, 0x10001b).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x100014, 0x100017).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x100018, 0x10001b).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); map(0x100040, 0x100041).rw(FUNC(acommand_state::ext_devices_0_r), FUNC(acommand_state::ext_devices_0_w)); map(0x100044, 0x100045).rw(FUNC(acommand_state::ext_devices_1_r), FUNC(acommand_state::ext_devices_1_w)); @@ -394,61 +381,47 @@ static INPUT_PORTS_START( acommand ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_START("DSW") - PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW3:1,2,3") + PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0003, DEF_STR( 1C_5C ) ) + PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW3:4,5,6") + PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0018, DEF_STR( 1C_5C ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0040, "SW3:7" ) + // Overrides Coinage + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW3:8") PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_DIPUNKNOWN_DIPLOC( 0x0100, 0x0100, "SW4:1" ) + PORT_DIPUNKNOWN_DIPLOC( 0x0200, 0x0200, "SW4:2" ) + PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW4:3") + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x0800, 0x0800, "SW4:4" ) + PORT_DIPUNKNOWN_DIPLOC( 0x1000, 0x1000, "SW4:5" ) + PORT_DIPUNKNOWN_DIPLOC( 0x2000, 0x2000, "SW4:6" ) + PORT_DIPUNKNOWN_DIPLOC( 0x4000, 0x4000, "SW4:7" ) + PORT_DIPUNKNOWN_DIPLOC( 0x8000, 0x8000, "SW4:8" ) INPUT_PORTS_END static GFXDECODE_START( gfx_acommand ) GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x1800, 256 ) GFXDECODE_END -TIMER_DEVICE_CALLBACK_MEMBER(acommand_state::acommand_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(acommand_state::scanline_cb) { int scanline = param; @@ -461,18 +434,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(acommand_state::acommand_scanline) void acommand_state::acommand(machine_config &config) { - /* basic machine hardware */ M68000(config, m_maincpu, 12000000); - m_maincpu->set_addrmap(AS_PROGRAM, &acommand_state::acommand_map); - TIMER(config, "scantimer").configure_scanline(FUNC(acommand_state::acommand_scanline), "screen", 0, 1); + m_maincpu->set_addrmap(AS_PROGRAM, &acommand_state::main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(acommand_state::scanline_cb), "screen", 0, 1); - /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(acommand_state::screen_update_acommand)); + // assume same as armchmp2 + screen.set_raw(XTAL(12'000'000)/2,396,0,256,256,16,240); + screen.set_screen_update(FUNC(acommand_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_acommand); @@ -481,17 +450,17 @@ void acommand_state::acommand(machine_config &config) MEGASYS1_TILEMAP(config, m_bgtmap, m_palette, 0x0f00); MEGASYS1_TILEMAP(config, m_txtmap, m_palette, 0x2700); - /* sound hardware */ + // assume amplified stereo SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - OKIM6295(config, m_oki1, 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified - m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 1.0); - m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 1.0); + OKIM6295(config, m_oki[0], 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); - OKIM6295(config, m_oki2, 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified - m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 1.0); - m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 1.0); + OKIM6295(config, m_oki[1], 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified + m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0); + m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0); } /*************************************************************************** @@ -534,4 +503,4 @@ ROM_END } // anonymous namespace -GAMEL( 1994, acommand, 0, acommand, acommand, acommand_state, empty_init, ROT0, "Jaleco", "Alien Command" , MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_acommand ) +GAMEL( 1994, acommand, 0, acommand, acommand, acommand_state, empty_init, ROT0, "Jaleco", "Alien Command (v2.1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL, layout_acommand ) diff --git a/src/mame/jaleco/jalmah.cpp b/src/mame/jaleco/jalmah.cpp index 0235d4c022b..b6617e1c820 100644 --- a/src/mame/jaleco/jalmah.cpp +++ b/src/mame/jaleco/jalmah.cpp @@ -110,12 +110,12 @@ OSC: 12.000MHz #include "emu.h" -#include "ms1_tmap.h" - #include "cpu/m68000/m68000.h" #include "machine/timer.h" #include "sound/okim6295.h" +#include "ms1_tmap.h" + #include "emupal.h" #include "screen.h" #include "speaker.h" From 8a1a710df420565b74189038c9c17b5b8b57c085 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 2 Oct 2024 18:00:17 +0200 Subject: [PATCH 02/13] New clones marked not working ----------------------------- Bullion Blox (BWB) (BVM_____.1__) (MPU4 Video) [Trol] --- src/mame/astrocorp/astropc.cpp | 4 ++-- src/mame/barcrest/mpu4vid.cpp | 31 ++++++++++++++++++++++++++----- src/mame/mame.lst | 1 + src/mame/skeleton/bullion2.cpp | 32 ++++++++++++++++++++++++-------- 4 files changed, 53 insertions(+), 15 deletions(-) diff --git a/src/mame/astrocorp/astropc.cpp b/src/mame/astrocorp/astropc.cpp index 6e50f2c7fd4..f707fa9e3e0 100644 --- a/src/mame/astrocorp/astropc.cpp +++ b/src/mame/astrocorp/astropc.cpp @@ -365,5 +365,5 @@ GAME( 2005, rasce, 0, astropc, astropc, astropc_state, init_astropc, R // Artemis II games -GAME( 2009, carnivac, 0, astropc, astropc, astropc_state, init_astropc, ROT0, "Astro", "Carnival (Astro Corp., US.004.D)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 2009, santacl, 0, astropc, astropc, astropc_state, init_astropc, ROT0, "Astro", "Santa Claus (IN.001.07.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2009, carnivac, 0, astropc, astropc, astropc_state, init_astropc, ROT0, "Astro Corp.", "Carnival (Astro Corp., US.004.D)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 2009, santacl, 0, astropc, astropc, astropc_state, init_astropc, ROT0, "Astro Corp.", "Santa Claus (IN.001.07.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/barcrest/mpu4vid.cpp b/src/mame/barcrest/mpu4vid.cpp index e46f90e8724..3788820e6cc 100644 --- a/src/mame/barcrest/mpu4vid.cpp +++ b/src/mame/barcrest/mpu4vid.cpp @@ -3441,7 +3441,7 @@ ROM_START( v4redhtpunk ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rhp20ac6", 0x0000, 0x010000, CRC(d6a842b4) SHA1(94f6cc6a9e0efa8a2eeee14f981f9d2407dfb092) ) - ROM_REGION( 0x800000, "video", 0 ) // none of the ROMs are have are commpatible with this? + ROM_REGION( 0x800000, "video", 0 ) // none of the ROMs we have are compatible with this? ROM_LOAD("video_board_roms", 0x0000, 0x10000, NO_DUMP ) ROM_REGION( 0x200000, "okicard:msm6376", ROMREGION_ERASE00 ) @@ -5442,6 +5442,26 @@ ROM_START( v4bulblxc ) /* none present */ ROM_END +ROM_START( v4bulblxd ) + ROM_REGION( 0x10000, "maincpu", 0 ) // main PCB wasn't present + ROM_LOAD( "program.bin", 0x00000, 0x010000, NO_DUMP ) + + ROM_REGION( 0x800000, "video", 0 ) // on BARCREST VIDEO MEMORY CARD 681868 18185-2 PCB + ROM_LOAD16_BYTE( "bvm_____.1_1.ic9", 0x000000, 0x010000, CRC(c3868e84) SHA1(991bad401a2853c3ea95adf9861c565fedc22b3a) ) // 1xxxxxxxxxxxxxxx = 0xFF + ROM_LOAD16_BYTE( "bvm_____.1_2.ic1", 0x000001, 0x010000, CRC(e97ba9ff) SHA1(40afefb7215ef968613b06e2aeb345b0f8bbc2c1) ) // 1xxxxxxxxxxxxxxx = 0xFF + ROM_LOAD16_BYTE( "bvm_____.1_3.ic10", 0x020000, 0x010000, CRC(4277e41c) SHA1(f2cab567be22714de42aff14755fda05d353a4fa) ) + ROM_LOAD16_BYTE( "bvm_____.1_4.ic2", 0x020001, 0x010000, CRC(d1d8e1f1) SHA1(e875085257782ba97058e637f15dc1d1b7ff63ba) ) + ROM_LOAD16_BYTE( "bvm_____.1_5.ic11", 0x040000, 0x010000, CRC(5aa44716) SHA1(256972701112bfd446d5f5fcdf741c6240ca6b3b) ) + ROM_LOAD16_BYTE( "bvm_____.1_6.ic3", 0x040001, 0x010000, CRC(ff698218) SHA1(f8dcd49ccdb47a6cf0d4012d22f2adf689d7f5e1) ) + // 10 more empty ROM sockets + + ROM_REGION( 0x200000, "okicard:msm6376", ROMREGION_ERASE00 ) + // none present + + ROM_REGION( 0x117, "plds", 0 ) // on BARCREST VIDEO MEMORY CARD 681868 18185-2 PCB + ROM_LOAD( "bvm__.g.ic18", 0x000, 0x117, NO_DUMP ) // GAL16V8 +ROM_END + ROM_START( v4cshinf ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -8805,10 +8825,11 @@ GAME( 1994, v4pzteta, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_b GAME( 1994, v4pztetb, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (Showcase) (MPU4 Video)",GAME_FLAGS_OK ) // screen telling you to exchange tickets for prizes in the 'showcase' during attract GAME( 1994, v4pztetc, v4pztet, bwbvid, v4pztet, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Prize Tetris (BWB) (Showcase) (Datapak) (MPU4 Video)",GAME_FLAGS_OK ) // this appears to be a version of Prize Tetris without the Tetris license. These don't have proper alarms, eg coin1 stuck is 'undefined' -GAME( 1994, v4bulblx, 0, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (set 1) (MPU4 Video)",GAME_FLAGS ) -GAME( 1994, v4bulblxb, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (set 2) (MPU4 Video)",GAME_FLAGS ) -GAME( 1994, v4bulblxa, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (Datapak) (set 1) (MPU4 Video)",GAME_FLAGS ) -GAME( 1994, v4bulblxc, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (Datapak) (set 2) (MPU4 Video)",GAME_FLAGS ) +GAME( 1994, v4bulblx, 0, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (BV_50___.2__) (MPU4 Video)",GAME_FLAGS ) +GAME( 1994, v4bulblxb, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (BV_1P___.2__) (MPU4 Video)",GAME_FLAGS ) +GAME( 1994, v4bulblxd, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (BVM_____.1__) (MPU4 Video)",GAME_FLAGS ) +GAME( 1994, v4bulblxa, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (Datapak) (BV_50___.2__) (MPU4 Video)",GAME_FLAGS ) +GAME( 1994, v4bulblxc, v4bulblx, bwbvid, v4bulblx, mpu4vid_state, init_bwbhack, ROT0, "BWB", "Bullion Blox (BWB) (Datapak) (BV_1P___.2__) (MPU4 Video)",GAME_FLAGS ) // doesn't have payout so no shelf error (no payout on prototype?), runs with door closed diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e87dd2001e6..d001c7b5601 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -8212,6 +8212,7 @@ v4bulblx // Bullion Blox v4bulblxa v4bulblxb v4bulblxc +v4bulblxd v4cmaze // The Crystal Maze (v1.3) v4cmaze2 // The New Crystal Maze Featuring Ocean Zone v4cmaze2_amld // diff --git a/src/mame/skeleton/bullion2.cpp b/src/mame/skeleton/bullion2.cpp index 248c8f85fde..5f10d805866 100644 --- a/src/mame/skeleton/bullion2.cpp +++ b/src/mame/skeleton/bullion2.cpp @@ -30,10 +30,10 @@ DIP1 -> |ON |HOPPER| default ON DIP2 | |OFF|PULSES| - DIP3 | + DIP3 | DIP4 | |ON |DEMO SOUND | default ON DIP5 | /->|OFF|NO DEMO SOUND| - DIP6 --/ + DIP6 --/ DIP7 --> |OFF |OFF |ON |ON | default ON DIP8 --> |OFF |ON |OFF |ON | default ON |LONGER |LONG |SHORT |SHORTER| @@ -46,14 +46,16 @@ Plug B = 80% default Plug C = 82% Plug D = 84% - + Complete manual (for both Bullion 2 and Bullion 3) with schematics and dip switches can be downloaded from: https://www.recreativas.org/manuales/tragaperras */ #include "emu.h" + #include "cpu/z80/z80.h" #include "sound/sn76496.h" + #include "speaker.h" @@ -64,7 +66,7 @@ class bullion2_state : public driver_device public: bullion2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), + m_maincpu(*this, "maincpu"), m_sn(*this, "sn76489") { } @@ -74,8 +76,11 @@ class bullion2_state : public driver_device virtual void machine_start() override; virtual void machine_reset() override; +private: required_device m_maincpu; required_device m_sn; + + void program_map(address_map &map); }; void bullion2_state::machine_start() @@ -86,6 +91,15 @@ void bullion2_state::machine_reset() { } +void bullion2_state::program_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x43ff).ram(); + // map(0x4804, 0x4804).rw // ?? + // map(0x4900, 0x4907).w // latch for lamps and reels control? + // map(0x4b00, 0x4b00).w("sn76489", FUNC(sn76489_device::write)); // SN? +} + static INPUT_PORTS_START( bullion2 ) PORT_START("DSW0") PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW0:1") @@ -102,14 +116,16 @@ void bullion2_state::bullion2(machine_config &config) { // CPU PCB Inder "60-977" - Z80( config, m_maincpu, 4_MHz_XTAL ); // NEC D780C + Z80(config, m_maincpu, 4_MHz_XTAL); // NEC D780C + m_maincpu->set_addrmap(AS_PROGRAM, &bullion2_state::program_map); + m_maincpu->set_periodic_int(FUNC(bullion2_state::irq0_line_hold), attotime::from_hz(60*4)); // TODO: proper IRQs // Sound PCB Inder "60-083" - SPEAKER( config, "mono" ).front_center(); + SPEAKER(config, "mono").front_center(); - SN76489( config, m_sn, 4_MHz_XTAL ); - m_sn->add_route( ALL_OUTPUTS, "mono", 1.0 ); + SN76489(config, m_sn, 4_MHz_XTAL); + m_sn->add_route(ALL_OUTPUTS, "mono", 1.0); } ROM_START( bullion2 ) From c4665ed5474a957378ab02545b8b3b50efe5f8f3 Mon Sep 17 00:00:00 2001 From: ClawGrip Date: Wed, 2 Oct 2024 21:30:40 +0200 Subject: [PATCH 03/13] thinkpad600: Add missing SEEPROM for ThinkPad 600 and its missing mame.lst entry (#12843) --- src/mame/ibm/thinkpad600.cpp | 3 +++ src/mame/mame.lst | 1 + 2 files changed, 4 insertions(+) diff --git a/src/mame/ibm/thinkpad600.cpp b/src/mame/ibm/thinkpad600.cpp index 253ce6eedd4..a6a5827f63f 100644 --- a/src/mame/ibm/thinkpad600.cpp +++ b/src/mame/ibm/thinkpad600.cpp @@ -127,6 +127,9 @@ ROM_START(thinkpad600) ROM_REGION(0x00080, "seeprom", 0) ROM_LOAD( "atmel_24c01a.u49", 0x00000, 0x00080, CRC(9a2e2a18) SHA1(29e2832c97bc93debb4fb09fcbed582335b57efe) ) + ROM_REGION(0x00420, "seeprom2", 0) + ROM_LOAD( "at24rf08bt.u99", 0x00000, 0x00420, CRC(c7ce9600) SHA1(4e6ed66250fed838614c3f1f6044fd9a19a2d0de) ) + ROM_REGION(0x00c39, "plds", 0) ROM_LOAD( "atf1500al-modemboard.u12", 0x00000, 0x00c39, CRC(7ecd4b79) SHA1(b69ef5fe227b466f331f863ba20efd7e23056809) ) // On modem PCB ROM_END diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d001c7b5601..769b4157a8e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -19984,6 +19984,7 @@ rtpc025 // IBM RT PC Model 025 rtpca25 // IBM RT PC Model A25 @source:ibm/thinkpad600.cpp +thinkpad600 // IBM Thinkpad 600 thinkpad600e // IBM Thinkpad 600E @source:ibm/thinkpad8xx.cpp From 41b6c02de5e110beb000a529c5f503d93e8d485b Mon Sep 17 00:00:00 2001 From: ClawGrip Date: Wed, 2 Oct 2024 22:34:47 +0200 Subject: [PATCH 04/13] ibm/thinkpad600.cpp: The 2nd SEEPROM was on the 600E, not on the 600 (#12844) Sorry, my bad. --- src/mame/ibm/thinkpad600.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mame/ibm/thinkpad600.cpp b/src/mame/ibm/thinkpad600.cpp index a6a5827f63f..a76c1a9567d 100644 --- a/src/mame/ibm/thinkpad600.cpp +++ b/src/mame/ibm/thinkpad600.cpp @@ -113,6 +113,9 @@ ROM_START(thinkpad600e) ROM_REGION(0x00080, "seeprom", 0) ROM_LOAD( "atmel_24c01a.u98", 0x00000, 0x00080, CRC(7ce51001) SHA1(6f25666373a6373ce0014c04df73a066f4da938b) ) + ROM_REGION(0x00420, "seeprom2", 0) + ROM_LOAD( "at24rf08bt.u99", 0x00000, 0x00420, CRC(c7ce9600) SHA1(4e6ed66250fed838614c3f1f6044fd9a19a2d0de) ) + ROM_REGION(0x00c39, "plds", 0) ROM_LOAD( "atf1500al-modemboard.u12", 0x00000, 0x00c39, CRC(7ecd4b79) SHA1(b69ef5fe227b466f331f863ba20efd7e23056809) ) // On modem PCB ROM_END @@ -127,9 +130,6 @@ ROM_START(thinkpad600) ROM_REGION(0x00080, "seeprom", 0) ROM_LOAD( "atmel_24c01a.u49", 0x00000, 0x00080, CRC(9a2e2a18) SHA1(29e2832c97bc93debb4fb09fcbed582335b57efe) ) - ROM_REGION(0x00420, "seeprom2", 0) - ROM_LOAD( "at24rf08bt.u99", 0x00000, 0x00420, CRC(c7ce9600) SHA1(4e6ed66250fed838614c3f1f6044fd9a19a2d0de) ) - ROM_REGION(0x00c39, "plds", 0) ROM_LOAD( "atf1500al-modemboard.u12", 0x00000, 0x00c39, CRC(7ecd4b79) SHA1(b69ef5fe227b466f331f863ba20efd7e23056809) ) // On modem PCB ROM_END From aee697548b8df60569c776235b93434792fd0ad3 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 2 Oct 2024 22:30:11 +0200 Subject: [PATCH 05/13] stkbd: decrease mouse sensitivity [Robbbert] --- src/mame/atari/stkbd.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/mame/atari/stkbd.cpp b/src/mame/atari/stkbd.cpp index 4cd98c49919..8ab20671007 100644 --- a/src/mame/atari/stkbd.cpp +++ b/src/mame/atari/stkbd.cpp @@ -4,8 +4,6 @@ #include "emu.h" #include "stkbd.h" -#include "utf8.h" - DEFINE_DEVICE_TYPE(ST_KBD, st_kbd_device, "st_kbd", "Atari ST Keyboard/Mouse/Joystick") ROM_START( st_kbd ) @@ -309,11 +307,11 @@ static INPUT_PORTS_START(stkbd) PORT_START("P45") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Undo") PORT_CODE(KEYCODE_F12) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"\u2191") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // U+2191 = ↑ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Clr Home") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"\u2190") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // U+2190 = ← + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"\u2193") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193 = ↓ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(u8"\u2192") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // U+2192 = → PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) @@ -353,10 +351,10 @@ static INPUT_PORTS_START(stkbd) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_START("MOUSEX") - PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) + PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_START("MOUSEY") - PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) + PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(10) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_START("MOUSEB") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CODE(MOUSECODE_BUTTON1) From 7611f7c18a457833c43491607b7ddb9cd710f3be Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 2 Oct 2024 22:30:50 +0200 Subject: [PATCH 06/13] mcompgin: improve internal artwork --- src/mame/handheld/hh_ucom4.cpp | 12 +- src/mame/layout/mcompgin.lay | 619 ++++++++++++++++----------------- 2 files changed, 307 insertions(+), 324 deletions(-) diff --git a/src/mame/handheld/hh_ucom4.cpp b/src/mame/handheld/hh_ucom4.cpp index c766bb25259..0ba4dc8a7af 100644 --- a/src/mame/handheld/hh_ucom4.cpp +++ b/src/mame/handheld/hh_ucom4.cpp @@ -2264,14 +2264,14 @@ void mcompgin_state::lcd_w(u8 data) static INPUT_PORTS_START( mcompgin ) PORT_START("IN.0") // port A - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Select") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Deal / Gin") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Discard") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Draw") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("Select") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Deal / Gin") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("Discard") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Draw") PORT_START("IN.1") // port B - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Compare") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Score") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Compare") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("Score") PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END diff --git a/src/mame/layout/mcompgin.lay b/src/mame/layout/mcompgin.lay index f0471de694a..45fdee35021 100644 --- a/src/mame/layout/mcompgin.lay +++ b/src/mame/layout/mcompgin.lay @@ -5,179 +5,94 @@ authors:hap --> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + + - - + + - + + @@ -190,164 +105,232 @@ authors:hap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 974e8f75ceb118b0fb3af828a3656b8e8a4db4e6 Mon Sep 17 00:00:00 2001 From: hap Date: Wed, 2 Oct 2024 22:35:47 +0200 Subject: [PATCH 07/13] New working systems ------------------- Bridge Computer (Diamond) [hap, Sean Riddle] Pocket Micro De-Luxe [hap, Sean Riddle] --- src/mame/chessking/pmicrodx.cpp | 246 +++++++++++++++++++++++++++ src/mame/handheld/dbridgec.cpp | 257 +++++++++++++++++++++++++++++ src/mame/handheld/hh_hmcs40.cpp | 6 +- src/mame/layout/cking_pmicrodx.lay | 82 +++++++++ src/mame/layout/dbridgec.lay | 178 ++++++++++++++++++++ src/mame/mame.lst | 6 + src/mame/saitek/minichess.cpp | 10 +- src/mame/saitek/superstar.cpp | 5 +- src/mame/saitek/turbo16k.cpp | 6 +- 9 files changed, 783 insertions(+), 13 deletions(-) create mode 100644 src/mame/chessking/pmicrodx.cpp create mode 100644 src/mame/handheld/dbridgec.cpp create mode 100644 src/mame/layout/cking_pmicrodx.lay create mode 100644 src/mame/layout/dbridgec.lay diff --git a/src/mame/chessking/pmicrodx.cpp b/src/mame/chessking/pmicrodx.cpp new file mode 100644 index 00000000000..75bad506e0c --- /dev/null +++ b/src/mame/chessking/pmicrodx.cpp @@ -0,0 +1,246 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:Sean Riddle +/******************************************************************************* + +Chess King Pocket Micro De-Luxe + +Hardware notes: +- Hitachi HD44868 @ ~800kHz (33K resistor) +- LCD with 4 7segs and custom segments, piezo + +HD44868A07 MCU is used in: +- Chess King Pocket Micro De-Luxe +- Chess King Mighty Midget De-Luxe +- Mephisto Teufelchen (H+G brand Pocket Micro De-Luxe) + +TODO: +- dump/add the first version (Pocket Micro), does it fit in this driver? + +*******************************************************************************/ + +#include "emu.h" + +#include "cpu/hmcs40/hmcs40.h" +#include "sound/dac.h" +#include "video/pwm.h" + +#include "screen.h" +#include "speaker.h" + +// internal artwork +#include "cking_pmicrodx.lh" + + +namespace { + +class pmicrodx_state : public driver_device +{ +public: + pmicrodx_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_display(*this, "display"), + m_dac(*this, "dac"), + m_inputs(*this, "IN.%u", 0) + { } + + void pmicrodx(machine_config &config); + + DECLARE_INPUT_CHANGED_MEMBER(input_changed) { refresh_irq(1 << param); } + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD { refresh_irq(); } + +private: + // devices/pointers + required_device m_maincpu; + required_device m_display; + required_device m_dac; + required_ioport_array<5> m_inputs; + + u8 m_inp_mux = 0; + u8 m_lcd_com = 0; + u64 m_lcd_segs = 0; + + void update_lcd(); + template void seg_w(u8 data); + u8 read_buttons(); + void refresh_irq(u8 mask = ~0); + u16 input_r(); + void control_w(u16 data); +}; + +void pmicrodx_state::machine_start() +{ + save_item(NAME(m_inp_mux)); + save_item(NAME(m_lcd_com)); + save_item(NAME(m_lcd_segs)); +} + + + +/******************************************************************************* + I/O +*******************************************************************************/ + +void pmicrodx_state::update_lcd() +{ + // LCD common is analog (voltage level) + const u8 com = population_count_32(m_lcd_com & 3); + const u64 data = (com == 0) ? m_lcd_segs : (com == 2) ? ~m_lcd_segs : 0; + m_display->write_row(0, data); +} + +template +void pmicrodx_state::seg_w(u8 data) +{ + // R0x-R6x: LCD segments + const u8 shift = N * 4; + m_lcd_segs = (m_lcd_segs & ~(u64(0xf << shift))) | (u64(data) << shift); + update_lcd(); +} + +u8 pmicrodx_state::read_buttons() +{ + u8 data = 0; + + for (int i = 0; i < 4; i++) + if (m_inp_mux & m_inputs[i]->read()) + data |= 1 << i; + + return data; +} + +void pmicrodx_state::refresh_irq(u8 mask) +{ + // half of the buttons are tied to MCU interrupt pins + mask &= read_buttons(); + for (int i = 0; i < 2; i++) + m_maincpu->set_input_line(i, BIT(mask, i) ? CLEAR_LINE : ASSERT_LINE); +} + +u16 pmicrodx_state::input_r() +{ + // D0: battery status + u16 data = m_inputs[4]->read() & 1; + + // D2,D3: read buttons + data |= read_buttons() & 0xc; + return ~data; +} + +void pmicrodx_state::control_w(u16 data) +{ + // D1: speaker out + m_dac->write(BIT(data, 1)); + + // D4-D6: input mux + m_inp_mux = ~data >> 4 & 7; + refresh_irq(); + + // D7,D8: LCD common + m_lcd_com = data >> 7 & 3; + + // D9-D15: more LCD segments + m_lcd_segs = (m_lcd_segs & 0x0fff'ffffULL) | (u64(data & 0xfe00) << 19); + update_lcd(); +} + + + +/******************************************************************************* + Input Ports +*******************************************************************************/ + +#define INPUT_CHANGED(x) \ + PORT_CHANGED_MEMBER(DEVICE_SELF, pmicrodx_state, input_changed, x) + +static INPUT_PORTS_START( pmicrodx ) + PORT_START("IN.0") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) INPUT_CHANGED(0) PORT_CODE(KEYCODE_A) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("A1") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) INPUT_CHANGED(0) PORT_CODE(KEYCODE_E) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("E5") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) INPUT_CHANGED(0) PORT_CODE(KEYCODE_L) PORT_NAME("LV") + + PORT_START("IN.1") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) INPUT_CHANGED(1) PORT_CODE(KEYCODE_B) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("B2") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) INPUT_CHANGED(1) PORT_CODE(KEYCODE_F) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("F6") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) INPUT_CHANGED(1) PORT_CODE(KEYCODE_T) PORT_NAME("TB") + + PORT_START("IN.2") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("C3") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("G7") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("EN") + + PORT_START("IN.3") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("D4") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("H8") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE") + + PORT_START("IN.4") + PORT_CONFNAME( 0x01, 0x01, "Battery Status" ) + PORT_CONFSETTING( 0x00, "Low" ) + PORT_CONFSETTING( 0x01, DEF_STR( Normal ) ) +INPUT_PORTS_END + + + +/******************************************************************************* + Machine Configs +*******************************************************************************/ + +void pmicrodx_state::pmicrodx(machine_config &config) +{ + // basic machine hardware + HD44868(config, m_maincpu, 800'000); // approximation + m_maincpu->write_r<0>().set(FUNC(pmicrodx_state::seg_w<0>)); + m_maincpu->write_r<1>().set(FUNC(pmicrodx_state::seg_w<1>)); + m_maincpu->write_r<2>().set(FUNC(pmicrodx_state::seg_w<2>)); + m_maincpu->write_r<3>().set(FUNC(pmicrodx_state::seg_w<3>)); + m_maincpu->write_r<4>().set(FUNC(pmicrodx_state::seg_w<4>)); + m_maincpu->write_r<5>().set(FUNC(pmicrodx_state::seg_w<5>)); + m_maincpu->write_r<6>().set(FUNC(pmicrodx_state::seg_w<6>)); + m_maincpu->write_d().set(FUNC(pmicrodx_state::control_w)); + m_maincpu->read_d().set(FUNC(pmicrodx_state::input_r)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(1, 35); + m_display->set_bri_levels(0.05); + config.set_default_layout(layout_cking_pmicrodx); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1920/3, 851/3); + screen.set_visarea_full(); + + // sound hardware + SPEAKER(config, "speaker").front_center(); + DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); +} + + + +/******************************************************************************* + ROM Definitions +*******************************************************************************/ + +ROM_START( pmicrodx ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD("chessking_mark_2_hd44868a07", 0x0000, 0x2000, CRC(aef47e60) SHA1(97cb7b51ce354c54c6f0faa903d5bd70d5a108ba) ) + ROM_IGNORE( 0x2000 ) // ignore factory test banks + + ROM_REGION( 74477, "screen", 0 ) + ROM_LOAD("pmicrodx.svg", 0, 74477, CRC(34563496) SHA1(dcca2223cc35d54955caead8ff14e6f96b4155ce) ) +ROM_END + +} // anonymous namespace + + + +/******************************************************************************* + Drivers +*******************************************************************************/ + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +SYST( 1984, pmicrodx, 0, 0, pmicrodx, pmicrodx, pmicrodx_state, empty_init, "Chess King / Intelligent Software", "Pocket Micro De-Luxe", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/handheld/dbridgec.cpp b/src/mame/handheld/dbridgec.cpp new file mode 100644 index 00000000000..21cb3d6cfb8 --- /dev/null +++ b/src/mame/handheld/dbridgec.cpp @@ -0,0 +1,257 @@ +// license:BSD-3-Clause +// copyright-holders:hap +// thanks-to:Sean Riddle +/******************************************************************************* + +Diamond Bridge Computer (model M1011) +Also sold by Nu Vations as Nu Va Bridge Computer (model NV211) + +Hardware notes: +- PCB label: MCL, M1011 +- Hitachi HD44860 @ ~800kHz (33K resistor) +- LCD with custom segments, no sound +- comms jack for playing against another Bridge Computer + +TODO: +- add comms port +- is Diamond Bridge Computer II (model M1021) on similar hardware? + +*******************************************************************************/ + +#include "emu.h" + +#include "cpu/hmcs40/hmcs40.h" +#include "video/pwm.h" + +#include "screen.h" + +// internal artwork +#include "dbridgec.lh" + + +namespace { + +class dbridgec_state : public driver_device +{ +public: + dbridgec_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_display(*this, "display"), + m_inputs(*this, "IN.%u", 0) + { } + + void dbridgec(machine_config &config); + + DECLARE_INPUT_CHANGED_MEMBER(in0_changed) { refresh_irq(); } + +protected: + virtual void machine_start() override ATTR_COLD; + virtual void machine_reset() override ATTR_COLD { refresh_irq(); } + +private: + // devices/pointers + required_device m_maincpu; + required_device m_display; + required_ioport_array<4> m_inputs; + + u8 m_inp_mux = 0; + u8 m_lcd_com = 0; + u64 m_lcd_segs = 0; + + // I/O handlers + void update_lcd(); + template void lcd1_w(u8 data); + void lcd2_w(u16 data); + + u8 read_buttons(); + void refresh_irq(); + u16 input_r(); + template void input_w(u8 data); +}; + +void dbridgec_state::machine_start() +{ + save_item(NAME(m_inp_mux)); + save_item(NAME(m_lcd_com)); + save_item(NAME(m_lcd_segs)); +} + + + +/******************************************************************************* + I/O +*******************************************************************************/ + +void dbridgec_state::update_lcd() +{ + const u8 com1 = BIT(m_lcd_com, 4); + const u8 com2 = m_lcd_com & 0xf; + const u64 data = com1 ? m_lcd_segs : ~m_lcd_segs; + + for (int i = 0; i < 4; i++) + m_display->write_row(i, (BIT(com2, i) == com1) ? data : 0); +} + +template +void dbridgec_state::lcd1_w(u8 data) +{ + // R0x-R6x: LCD segments + const u8 shift = N * 4; + m_lcd_segs = (m_lcd_segs & ~(u64(0xf << shift))) | (u64(data) << shift); + update_lcd(); +} + +void dbridgec_state::lcd2_w(u16 data) +{ + // D0-D4: LCD common + m_lcd_com = data & 0x1f; + + // D9,D10,D12-D15: more LCD segments + const u8 segs = (data >> 9 & 3) | (data >> 10 & 0x3c); + m_lcd_segs = (m_lcd_segs & 0x0fff'ffffULL) | u64(segs) << 28; + update_lcd(); + + // D5: comms port +} + +u8 dbridgec_state::read_buttons() +{ + u8 data = 0; + + for (int i = 0; i < 4; i++) + if (m_inp_mux & m_inputs[i]->read()) + data |= 1 << i; + + return data; +} + +void dbridgec_state::refresh_irq() +{ + // right button column goes to MCU INT0 + m_maincpu->set_input_line(0, (read_buttons() & 1) ? CLEAR_LINE : ASSERT_LINE); +} + +u16 dbridgec_state::input_r() +{ + // D6-D8: read buttons + u16 data = read_buttons() << 5 & 0x1c0; + return ~data; + + // D5: comms port +} + +template +void dbridgec_state::input_w(u8 data) +{ + // R4x,R5x: input mux + const u8 shift = N * 4; + m_inp_mux = (m_inp_mux & ~(0xf << shift)) | ((data ^ 0xf) << shift); + refresh_irq(); +} + + + +/******************************************************************************* + Input Ports +*******************************************************************************/ + +#define IN0_CHANGED(x) \ + PORT_CHANGED_MEMBER(DEVICE_SELF, dbridgec_state, in0_changed, 0) + +static INPUT_PORTS_START( dbridgec ) + PORT_START("IN.0") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_U) PORT_NAME("Dummy") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_T) PORT_NAME("Partner") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_L) PORT_NAME("Level") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_H) PORT_NAME("Change Side") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_S) PORT_NAME("Score") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_R) PORT_NAME("New Rubber") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) IN0_CHANGED() PORT_CODE(KEYCODE_D) PORT_NAME("Deal") + + PORT_START("IN.1") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_P) PORT_NAME("Pass") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Double") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("No Trump") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Clubs") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Diamonds") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Hearts") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Spades") + + PORT_START("IN.2") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("A") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) PORT_NAME("K") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Q") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("J") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("10") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + + PORT_START("IN.3") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") +INPUT_PORTS_END + + + +/******************************************************************************* + Machine Configs +*******************************************************************************/ + +void dbridgec_state::dbridgec(machine_config &config) +{ + // basic machine hardware + HD44860(config, m_maincpu, 800'000); // approximation + m_maincpu->write_r<0>().set(FUNC(dbridgec_state::lcd1_w<0>)); + m_maincpu->write_r<1>().set(FUNC(dbridgec_state::lcd1_w<1>)); + m_maincpu->write_r<2>().set(FUNC(dbridgec_state::lcd1_w<2>)); + m_maincpu->write_r<3>().set(FUNC(dbridgec_state::lcd1_w<3>)); + m_maincpu->write_r<4>().set(FUNC(dbridgec_state::lcd1_w<4>)); + m_maincpu->write_r<4>().append(FUNC(dbridgec_state::input_w<0>)); + m_maincpu->write_r<5>().set(FUNC(dbridgec_state::lcd1_w<5>)); + m_maincpu->write_r<5>().append(FUNC(dbridgec_state::input_w<1>)); + m_maincpu->write_r<6>().set(FUNC(dbridgec_state::lcd1_w<6>)); + m_maincpu->write_d().set(FUNC(dbridgec_state::lcd2_w)); + m_maincpu->read_d().set(FUNC(dbridgec_state::input_r)); + + // video hardware + PWM_DISPLAY(config, m_display).set_size(4, 34); + m_display->set_bri_levels(0.1); + config.set_default_layout(layout_dbridgec); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_SVG)); + screen.set_refresh_hz(60); + screen.set_size(1920/1.5, 1068/1.5); + screen.set_visarea_full(); +} + + + +/******************************************************************************* + ROM Definitions +*******************************************************************************/ + +ROM_START( dbridgec ) + ROM_REGION( 0x2000, "maincpu", 0 ) + ROM_LOAD("hd44860_b29.u1", 0x0000, 0x2000, CRC(9ebb51e0) SHA1(0e99f4247ba516cd93bec889faebf1b6ba22f361) ) + ROM_IGNORE( 0x2000 ) // ignore factory test banks + + ROM_REGION( 234761, "screen", 0 ) + ROM_LOAD("dbridgec.svg", 0, 234761, CRC(24834e57) SHA1(3e10afefa6ef112cf1bb339bf9dd25ed0ca4c150) ) +ROM_END + +} // anonymous namespace + + + +/******************************************************************************* + Drivers +*******************************************************************************/ + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS +SYST( 1987, dbridgec, 0, 0, dbridgec, dbridgec, dbridgec_state, empty_init, "Diamond", "Bridge Computer (Diamond)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_NODEVICE_LAN ) diff --git a/src/mame/handheld/hh_hmcs40.cpp b/src/mame/handheld/hh_hmcs40.cpp index 7dfb606089d..cf5738aff21 100644 --- a/src/mame/handheld/hh_hmcs40.cpp +++ b/src/mame/handheld/hh_hmcs40.cpp @@ -88,13 +88,13 @@ known chips: *A13 HD44840 1982, CXG Computachess II *A14 HD44840 1982, CXG Computachess II / Advanced Portachess - *B29 HD44860 1987, Diamond Bridge Computer (M1011) + B29 HD44860 1987, Diamond Bridge Computer -> handheld/dbridgec.cpp *B55 HD44860 1987, Saitek Pro Bridge 100 *A04 HD44868 1984, SciSys Rapier - *A07 HD44868 1984, Chess King Pocket Micro Deluxe / Mephisto Teufelchen + A07 HD44868 1984, Chess King Pocket Micro De-Luxe -> chessking/pmicrodx.cpp *A12 HD44868 1985, SciSys Travel Mate II / Pocket Chess / MK 10 / Electronic Trio - *A14 HD44868 1985, SciSys Kasparov Plus + *A14 HD44868 1985, SciSys Kasparov Plus / MK 12 *A16 HD44868 1988, Saitek Pocket Checkers (* means undumped unless noted, @ denotes it's in this driver) diff --git a/src/mame/layout/cking_pmicrodx.lay b/src/mame/layout/cking_pmicrodx.lay new file mode 100644 index 00000000000..817fa634450 --- /dev/null +++ b/src/mame/layout/cking_pmicrodx.lay @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/dbridgec.lay b/src/mame/layout/dbridgec.lay new file mode 100644 index 00000000000..7ec66d15d79 --- /dev/null +++ b/src/mame/layout/dbridgec.lay @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 769b4157a8e..4384691b129 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16239,6 +16239,9 @@ tascr30g @source:chessking/master.cpp master +@source:chessking/pmicrodx.cpp +pmicrodx + @source:chessking/triomphe.cpp triomphe @@ -19025,6 +19028,9 @@ newbrainmd // @source:handheld/chessking.cpp chesskng // +@source:handheld/dbridgec.cpp +dbridgec + @source:handheld/gameking.cpp gamekin3 // gameking // diff --git a/src/mame/saitek/minichess.cpp b/src/mame/saitek/minichess.cpp index 4512f00ccdc..1377e5c304c 100644 --- a/src/mame/saitek/minichess.cpp +++ b/src/mame/saitek/minichess.cpp @@ -76,7 +76,7 @@ class mini_state : public driver_device TIMER_DEVICE_CALLBACK_MEMBER(computing) { m_computing = 1; } - void update_display(); + void update_lcd(); template void seg_w(u8 data); void mux_w(u16 data); u16 input_r(); @@ -98,7 +98,7 @@ void mini_state::machine_start() I/O *******************************************************************************/ -void mini_state::update_display() +void mini_state::update_lcd() { u8 data = (m_lcd_select & 1) ? (m_lcd_data ^ 0xff) : m_lcd_data; data = bitswap<8>(data,2,4,6,7,5,1,0,3); @@ -108,9 +108,9 @@ void mini_state::update_display() template void mini_state::seg_w(u8 data) { - // R2x,R3x: lcd segment data + // R2x,R3x: LCD segment data m_lcd_data = (m_lcd_data & ~(0xf << (N*4))) | (data << (N*4)); - update_display(); + update_lcd(); } void mini_state::mux_w(u16 data) @@ -129,7 +129,7 @@ void mini_state::mux_w(u16 data) } m_lcd_select = sel; - update_display(); + update_lcd(); } u16 mini_state::input_r() diff --git a/src/mame/saitek/superstar.cpp b/src/mame/saitek/superstar.cpp index 1df185ea3c7..a1e9ed0d2d3 100644 --- a/src/mame/saitek/superstar.cpp +++ b/src/mame/saitek/superstar.cpp @@ -28,8 +28,9 @@ Superstar 36K: - 32KB ROM (custom label, same program as tstar432), extension ROM slot - piezo is very low pitch, this is normal -There are 2 versions of Turbostar 432, the 2nd one has a lighter shade and -the top-right is gray instead of red. It came with the KSO ROM included. +There are 2 versions of Turbostar 432, the 2nd Kasparov brand version has +a lighter shade and the top-right is gray instead of red. It came with the +KSO ROM included. I.C.D. (a reseller in USA, NY) also sold a version overclocked to 5.53MHz, and named it Turbostar 540+. The ROM is unmodified, so the internal chess diff --git a/src/mame/saitek/turbo16k.cpp b/src/mame/saitek/turbo16k.cpp index d09637013cc..c9bdc9ca65a 100644 --- a/src/mame/saitek/turbo16k.cpp +++ b/src/mame/saitek/turbo16k.cpp @@ -3,7 +3,7 @@ // thanks-to:Sean Riddle /******************************************************************************* -SciSys Turbo 16K family +SciSys Kasparov Turbo 16K family These chesscomputers are all on similar hardware. The chess engine is by Julio Kaplan and Craig Barnes. @@ -515,8 +515,8 @@ ROM_END *******************************************************************************/ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS -SYST( 1986, turbo16k, 0, 0, turbo16k, turbo16k, turbo16k_state, empty_init, "SciSys / Heuristic Software", "Turbo 16K", MACHINE_SUPPORTS_SAVE ) -SYST( 1986, compan3, turbo16k, 0, compan3, compan3, turbo16k_state, empty_init, "SciSys / Heuristic Software", "Companion III", MACHINE_SUPPORTS_SAVE ) +SYST( 1986, turbo16k, 0, 0, turbo16k, turbo16k, turbo16k_state, empty_init, "SciSys / Heuristic Software", "Kasparov Turbo 16K", MACHINE_SUPPORTS_SAVE ) +SYST( 1986, compan3, turbo16k, 0, compan3, compan3, turbo16k_state, empty_init, "SciSys / Heuristic Software", "Kasparov Companion III", MACHINE_SUPPORTS_SAVE ) SYST( 1988, conquist, 0, 0, conquist, conquist, conquist_state, empty_init, "Saitek / Heuristic Software", "Kasparov Conquistador", MACHINE_SUPPORTS_SAVE ) SYST( 1988, tmate, conquist, 0, tmate, tmate, conquist_state, empty_init, "Saitek / Heuristic Software", "Kasparov Team-Mate", MACHINE_SUPPORTS_SAVE ) From f09368f496c7430367ec8345291dd94183d9d457 Mon Sep 17 00:00:00 2001 From: holub Date: Wed, 2 Oct 2024 17:51:33 -0400 Subject: [PATCH 08/13] sinclair/sprinter.cpp: more precise HALT handling for accel purpose (#12786) --- src/mame/sinclair/beta_m.cpp | 3 + src/mame/sinclair/sprinter.cpp | 357 +++++++++++++++++---------------- 2 files changed, 192 insertions(+), 168 deletions(-) diff --git a/src/mame/sinclair/beta_m.cpp b/src/mame/sinclair/beta_m.cpp index 0013cde772a..05c3bda085d 100644 --- a/src/mame/sinclair/beta_m.cpp +++ b/src/mame/sinclair/beta_m.cpp @@ -208,13 +208,16 @@ void beta_disk_device::motors_control() void beta_disk_device::floppy_formats(format_registration &fr) { fr.add_mfm_containers(); + fr.add_pc_formats(); fr.add(FLOPPY_TRD_FORMAT); } static void beta_disk_floppies(device_slot_interface &device) { + device.option_add("525hd", FLOPPY_525_HD); device.option_add("525qd", FLOPPY_525_QD); device.option_add("35hd", FLOPPY_35_HD); + device.option_add("35dd", FLOPPY_35_DD); } diff --git a/src/mame/sinclair/sprinter.cpp b/src/mame/sinclair/sprinter.cpp index 65d5bb20209..a636f07be65 100644 --- a/src/mame/sinclair/sprinter.cpp +++ b/src/mame/sinclair/sprinter.cpp @@ -56,8 +56,6 @@ Sprinter Sp2000 (Peters Plus Ltd) #include "speaker.h" #include "tilemap.h" -#include - #include "sprinter.lh" @@ -127,6 +125,7 @@ class sprinter_state : public spectrum_128_state virtual TIMER_CALLBACK_MEMBER(irq_on) override; virtual TIMER_CALLBACK_MEMBER(irq_off) override; TIMER_CALLBACK_MEMBER(cbl_tick); + TIMER_CALLBACK_MEMBER(acc_tick); u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void screen_update_graph(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -142,20 +141,17 @@ class sprinter_state : public spectrum_128_state private: enum accel_state : u8 { - OFF = 0, // ld b,b - FILL, // ld c,c - SET_BUFFER, // ld d,d - FILL_VERT, // ld e,e - DOUBLE, // ld h,h - COPY, // ld l,l - OFF_HALT, // halt - COPY_VERT, // ld a,a - MODE_AND = 0xa6, // and (hl) MODE_XOR = 0xae, // xor (hl) MODE_OR = 0xb6, // or (hl) MODE_NOP = 0xbe // cp (hl) }; + enum access_state : u8 + { + ACCEL_OFF = 0, + ACCEL_GO, + ACCEL_ON + }; static constexpr XTAL X_SP = 42_MHz_XTAL; // TODO X1 after spectrumless @@ -196,16 +192,18 @@ class sprinter_state : public spectrum_128_state void update_int(bool recalculate); u8 isa_r(offs_t offset); void isa_w(offs_t offset, u8 data); + void do_mem_wait(u8 cpu_taken); + void check_accel(bool is_read, offs_t offset, u8 &data); void accel_control_r(u8 data); - void accel_r_tap(u16 offset, u8 &data); - void accel_w_tap(u16 offset, u8 &data); + void do_accel_block(bool is_read); + void accel_mem_r(offs_t offset); + void accel_mem_w(offs_t offset, u8 data); u8 &accel_buffer(u8 idx); void update_accel_buffer(u8 idx, u8 data); u8 kbd_fe_r(offs_t offset); void on_kbd_data(int state); - void do_cpu_wait(bool is_io = false); required_device m_rtc; required_device_array m_ata; @@ -235,7 +233,11 @@ class sprinter_state : public spectrum_128_state u8 m_ram_pages[0x40] = {}; // 0xc0 - 0xff u16 m_pages[4] = {}; // internal state for faster calculations - bool m_z80_m1; + bool m_z80_m1; + offs_t m_z80_addr; + u8 m_z80_data; + bool m_deferring; + bool m_skip_write; std::list> m_ints; u8 m_conf; @@ -267,16 +269,17 @@ class sprinter_state : public spectrum_128_state u8 m_ata_data_latch; // Accelerator - bool m_skip_write; u8 m_prf_d; + u8 m_rgacc; u8 m_acc_cnt; u8 m_accel_buffer[256] = {}; bool m_alt_acc; u16 m_aagr; u8 m_xcnt; u8 m_xagr; - accel_state m_acc_dir; + u8 m_acc_dir; accel_state m_fn_acc; + access_state m_access_state; // Covox Blaster u8 m_cbl_xx; @@ -285,6 +288,7 @@ class sprinter_state : public spectrum_128_state u8 m_cbl_wa; bool m_cbl_wae; emu_timer *m_cbl_timer = nullptr; + emu_timer *m_acc_timer = nullptr; bool m_hold_irq; }; @@ -544,12 +548,12 @@ u8 sprinter_state::dcp_r(offs_t offset) if (!machine().side_effects_disabled()) { - do_cpu_wait(true); if (((offset & 0x7f) == 0x7b)) { m_cash_on = BIT(offset, 7); update_memory(); } + do_mem_wait(4); } const u16 dcp_offset = (BIT(m_cnf, 3, 2) << 12) | (0 << 11) | (m_dos << 10) | (1 << 9) | (BIT(offset, 14, 2) << 7) | (BIT(offset, 13) << 4) | (BIT(offset, 7) << 3) | (offset & 0x67); @@ -659,8 +663,6 @@ void sprinter_state::dcp_w(offs_t offset, u8 data) if (m_starting) return; - do_cpu_wait(true); - if ((offset & 0xbf) == 0x3c) { m_rom_sys = BIT(~offset, 6); @@ -674,6 +676,7 @@ void sprinter_state::dcp_w(offs_t offset, u8 data) m_sys_pg |= BIT(m_rom_rg, 4); update_memory(); } + do_mem_wait(4); const u16 dcp_offset = (BIT(m_cnf, 3, 2) << 12) | (0 << 11) | (m_dos << 10) | (0 << 9) | (BIT(offset, 14, 2) << 7) | (BIT(offset, 13) << 4) | (BIT(offset, 7) << 3) | (offset & 0x67); const u8 dcpp = m_dcp_location[dcp_offset]; @@ -883,162 +886,205 @@ void sprinter_state::accel_control_r(u8 data) if ((((data & 0x1b) == 0x00) || ((data & 0x1b) == 0x09) || ((data & 0x1b) == 0x12) || ((data & 0x1b) == 0x1b)) && (((data & 0xe4) == 0x40) || ((data & 0xe4) == 0x64))) { - m_acc_dir = ((data & 7) == OFF_HALT) ? OFF : static_cast(data & 7); + switch(data & 7) + { + case 0: m_acc_dir = 0b00000000; break; // LD B,B + case 1: m_acc_dir = 0b00100101; break; // LD C,C % % fill by constant + case 2: m_acc_dir = 0b00001001; break; // LD D,D % % load count accelerator + case 3: m_acc_dir = 0b00010101; break; // LD E,E % % fill by constant VERTICAL + case 4: m_acc_dir = 0b01000001; break; // LD H,H % % duble byte fn + case 5: m_acc_dir = 0b00100111; break; // LD L,L % % copy line + case 6: m_acc_dir = 0b00000000; break; // HALT + case 7: m_acc_dir = 0b00010111; break; // LD A,A % % copy line VERTICAL + } m_fn_acc = MODE_NOP; } - else { + else + { const accel_state state_candidate = static_cast(data); switch(state_candidate) { - case MODE_AND: - case MODE_XOR: - case MODE_OR: - m_fn_acc = state_candidate; - break; - default: - break; + case MODE_AND: + case MODE_XOR: + case MODE_OR: + m_fn_acc = state_candidate; + break; + default: + break; } } } m_prf_d = is_prefix; } -void sprinter_state::accel_r_tap(u16 offset, u8 &data) +TIMER_CALLBACK_MEMBER(sprinter_state::acc_tick) { - const std::string_view m{(m_fn_acc == MODE_AND) ? "&" : (m_fn_acc == MODE_OR) ? "|" : (m_fn_acc == MODE_XOR) ? "^" : ""}; - if (m_acc_dir == SET_BUFFER) + const bool is_block_op = BIT(m_acc_dir, 2); + if (m_access_state == ACCEL_GO) { - m_acc_cnt = data; - LOGACCEL("Accel buffer: %d\n", m_acc_cnt); + m_acc_cnt = m_rgacc; + m_access_state = ACCEL_ON; } - else if (m_pages[offset >> 14] & BANK_RAM_MASK) // block ops RAM only + + const bool is_read = param & 1; + if (is_block_op) { - const u16 acc_cnt = m_acc_cnt ? m_acc_cnt : 256; - if (m_acc_dir == COPY) - { - LOGACCEL("Accel rCOPY: %s%02x\n", m, offset); - for (auto i = 0; i < acc_cnt; i++) - { - if (i && !machine().side_effects_disabled()) - do_cpu_wait(); - const u16 addr = offset + i; - data = (m_pages[addr >> 14] & BANK_RAM_MASK) ? ram_r(addr) : 0xff; - update_accel_buffer(i, data); - } - } - else if (m_acc_dir == COPY_VERT) - { - LOGACCEL("Accel rCOPY_GR: %s%02x (%x)\n", m, offset, m_port_y); - for (auto i = 0; i < acc_cnt; i++) - { - if (i && !machine().side_effects_disabled()) - do_cpu_wait(); - data = ram_r(offset); - update_accel_buffer(i, data); - m_port_y++; - } - } - else if (m_acc_dir == FILL_VERT) - m_port_y += acc_cnt; + do_accel_block(is_read); + } + if (BIT(m_acc_dir, 3)) + { + m_rgacc = m_z80_data; + LOGACCEL("Accel buffer: %d\n", m_rgacc ? m_rgacc : 256); + } + else if (BIT(m_acc_dir, 6) && !is_read) + { + accel_mem_w(m_z80_addr ^ 1, m_z80_data); + } + + if (m_acc_cnt == 1 || !is_block_op) + { + m_acc_timer->reset(); + m_access_state = ACCEL_OFF; + m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); + } + else + { + m_acc_timer->adjust(attotime::from_ticks(6, X_SP), is_read); + m_acc_cnt--; } } -void sprinter_state::accel_w_tap(u16 offset, u8 &data) +void sprinter_state::check_accel(bool is_read, offs_t offset, u8 &data) { - if (m_acc_dir == SET_BUFFER) + const bool is_ram = m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK; + if (is_read && m_in_out_cmd && !m_z80_m1) { - m_acc_cnt = data; - LOGACCEL("Accel buffer: %d\n", m_acc_cnt); + if (data == 0x1f && is_ram) + data = 0x0f; + m_in_out_cmd = false; } - else if (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK) // block ops RAM only + + const bool accel_go_case = m_access_state == ACCEL_OFF && !m_z80_m1 && m_acc_dir && acc_ena(); + if (is_ram && (!accel_go_case || m_deferring)) { - const u16 acc_cnt = m_acc_cnt ? m_acc_cnt : 256; - if (m_acc_dir == FILL) + do_mem_wait(3); + } + if (accel_go_case) + { + if (!m_deferring) { - LOGACCEL("Accel wFILL: %02x\n", offset); - for (auto i = 0; i < acc_cnt; i++) + m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); + m_access_state = ACCEL_GO; + m_acc_timer->adjust(attotime::from_ticks(6, X_SP), is_read); + m_z80_addr = offset; + m_z80_data = data; + + if (BIT(m_acc_dir, 2)) { - const u16 addr = offset + i; - if ((m_pages[addr >> 14] & BANK_RAM_MASK) && (~m_pages[addr >> 14] & BANK_WRDISBL_MASK)) - ram_w(addr, data); + m_skip_write = !is_read; + m_maincpu->defer_access(); + m_deferring = true; } } - else if (m_acc_dir == FILL_VERT) + else { - LOGACCEL("Accel wFILL_VERT: %02x (%x)\n", offset, m_port_y); - for (auto i = 0; i < acc_cnt; i++) + if (is_read) + { + data = m_z80_data; + } + else if (is_ram) { - ram_w(offset, data); - m_port_y++; + m_skip_write = true; } + m_deferring = false; } - else if (m_acc_dir == DOUBLE) + } +} + +void sprinter_state::do_accel_block(bool is_read) +{ + const bool ram_wr = BIT(m_acc_dir, 1); + if (is_read) + { + accel_mem_r(m_z80_addr); + if (ram_wr) { - ram_w(offset, data); - ram_w(offset ^ 1, data); + update_accel_buffer(m_acc_cnt, m_z80_data); } - else if (m_acc_dir == COPY) + } + else + { + if (ram_wr) { - LOGACCEL("Accel wCOPY: %02x\n", offset); - for (auto i = 0; i < acc_cnt; i++) + m_z80_data = accel_buffer(m_acc_cnt); + + const u8 pg = m_pages[BIT(m_z80_addr, 14, 2)]; + if (pg == 0xfd) { - const u16 addr = offset + i; - if ((m_pages[addr >> 14] & BANK_RAM_MASK) && (~m_pages[addr >> 14] & BANK_WRDISBL_MASK)) + if (!cbl_mode16()) { - data = accel_buffer(i); - ram_w(addr, data); + m_cbl_data[m_cbl_wa++] = (m_z80_data << 8); + } + else + { + if (m_cbl_wae) + m_cbl_data[m_cbl_wa] = m_z80_data; + else + { + m_cbl_data[m_cbl_wa] |= ((m_z80_data ^ 0x80) << 8); + m_cbl_wa++; + } + m_cbl_wae = !m_cbl_wae; } } } - else if (m_acc_dir == COPY_VERT) - { - LOGACCEL("Accel wCOPY_VERT: %02x (%x)\n", offset, m_port_y); - for (auto i = 0; i < acc_cnt; i++) - { - data = accel_buffer(i); - ram_w(offset, data); - m_port_y++; - } - } - else - return; + accel_mem_w(m_z80_addr, m_z80_data); + } - m_skip_write = true; + if (BIT(m_acc_dir, 4)) // graph line + m_port_y++; + else + m_z80_addr++; +} + +void sprinter_state::accel_mem_r(offs_t offset) +{ + if (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK) + { + m_z80_data = m_program.read_byte(offset); + } +} + +void sprinter_state::accel_mem_w(offs_t offset, u8 data) +{ + if (~m_pages[BIT(offset, 14, 2)] & (BANK_FASTRAM_MASK | BANK_ISA_MASK | BANK_WRDISBL_MASK)) + { + m_program.write_byte(offset, data); } } u8 &sprinter_state::accel_buffer(u8 idx) { - u8 ram_adr = m_acc_cnt - idx; if (m_alt_acc) { - ram_adr = m_xcnt; + idx = m_xcnt; const u16 xcnt_agr = ((m_xcnt << 8) | m_xagr) + m_aagr; m_xcnt = xcnt_agr >> 8; m_xagr = xcnt_agr & 0xff; } - return m_accel_buffer[ram_adr]; + return m_accel_buffer[idx]; } void sprinter_state::update_accel_buffer(u8 idx, u8 data) { switch (m_fn_acc) { - case MODE_AND: - accel_buffer(idx) &= data; - break; - case MODE_OR: - accel_buffer(idx) |= data; - break; - case MODE_XOR: - accel_buffer(idx) ^= data; - break; - case MODE_NOP: - accel_buffer(idx) = data; - break; - default: - assert(false); + case MODE_AND: accel_buffer(idx) &= data; break; + case MODE_OR: accel_buffer(idx) |= data; break; + case MODE_XOR: accel_buffer(idx) ^= data; break; + case MODE_NOP: accel_buffer(idx) = data; break; + default: assert(false); break; } } @@ -1078,7 +1124,6 @@ void sprinter_state::ram_w(offs_t offset, u8 data) m_skip_write = false; return; } - do_cpu_wait(); const u8 bank = BIT(offset, 14, 2); const u8 page = m_pages[bank] & 0xff; @@ -1107,23 +1152,6 @@ void sprinter_state::ram_w(offs_t offset, u8 data) vram_w(vxa, data); } } - else if ((m_acc_dir == COPY) && (page == 0xfd)) - { - if (!cbl_mode16()) - m_cbl_data[m_cbl_wa++] = (data << 8); - else - { - if (m_cbl_wae) - m_cbl_data[m_cbl_wa] = data; - else - { - m_cbl_data[m_cbl_wa] |= ((data ^ 0x80) << 8); - m_cbl_wa++; - } - m_cbl_wae = !m_cbl_wae; - } - } - reinterpret_cast(m_bank_ram[bank]->base())[offset & 0x3fff] = data; } } @@ -1279,30 +1307,15 @@ void sprinter_state::init_taps() { if (!machine().side_effects_disabled()) { - if (m_in_out_cmd && !m_z80_m1) - { - if (data == 0x1f && (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK)) - data = 0x0f; - m_in_out_cmd = false; - } - if (!(m_pages[BIT(offset, 14, 2)] & (BANK_FASTRAM_MASK | BANK_ISA_MASK))) // ROM+RAM - do_cpu_wait(); - if(!m_z80_m1 && acc_ena() && (m_acc_dir != OFF)) - accel_r_tap(offset, data); + check_accel(true, offset, data); } }); prg.install_write_tap(0x10000, 0x1ffff, "accel_write", [this](offs_t offset, u8 &data, u8 mem_mask) { - if (m_in_out_cmd && !m_z80_m1) + if (!machine().side_effects_disabled()) { - if (data == 0x1f && (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK)) - data = 0x0f; - m_in_out_cmd = false; + check_accel(false, offset, data); } - if (!(m_pages[BIT(offset, 14, 2)] & 0xff00)) // ROM only, RAM(w) applies waits manually - do_cpu_wait(); - if (!m_z80_m1 && acc_ena() && (m_acc_dir != OFF)) - accel_w_tap(offset, data); }); } @@ -1318,6 +1331,10 @@ void sprinter_state::machine_start() save_item(NAME(m_ram_pages)); save_item(NAME(m_pages)); save_item(NAME(m_z80_m1)); + save_item(NAME(m_z80_addr)); + save_item(NAME(m_z80_data)); + save_item(NAME(m_deferring)); + save_item(NAME(m_skip_write)); save_item(NAME(m_conf)); save_item(NAME(m_conf_loading)); save_item(NAME(m_starting)); @@ -1343,16 +1360,17 @@ void sprinter_state::machine_start() save_item(NAME(m_in_out_cmd)); save_item(NAME(m_ata_selected)); save_item(NAME(m_ata_data_latch)); - save_item(NAME(m_skip_write)); save_item(NAME(m_prf_d)); + save_item(NAME(m_rgacc)); save_item(NAME(m_acc_cnt)); save_item(NAME(m_accel_buffer)); save_item(NAME(m_alt_acc)); save_item(NAME(m_aagr)); save_item(NAME(m_xcnt)); save_item(NAME(m_xagr)); - //save_item(NAME(m_acc_dir)); + save_item(NAME(m_acc_dir)); //save_item(NAME(m_fn_acc)); + //save_item(NAME(m_access_state)); save_item(NAME(m_cbl_xx)); save_item(NAME(m_cbl_data)); save_item(NAME(m_cbl_cnt)); @@ -1390,10 +1408,13 @@ void sprinter_state::machine_start() void sprinter_state::machine_reset() { - m_cbl_timer->adjust(attotime::never); + m_acc_timer->reset(); + m_cbl_timer->reset(); spectrum_128_state::machine_reset(); + m_deferring = false; + m_skip_write = false; m_starting = 1; m_dos = 1; // off m_rom_sys = 0; @@ -1407,9 +1428,9 @@ void sprinter_state::machine_reset() m_cash_on = 0; m_isa_addr_ext = 0; - m_skip_write = false; + m_access_state = ACCEL_OFF; m_prf_d = false; - m_acc_dir = OFF; + m_acc_dir = 0; m_alt_acc = 0; m_cbl_xx = 0; @@ -1484,6 +1505,7 @@ void sprinter_state::video_start() m_contention_pattern = {}; init_taps(); + m_acc_timer = timer_alloc(FUNC(sprinter_state::acc_tick), this); m_cbl_timer = timer_alloc(FUNC(sprinter_state::cbl_tick), this); } @@ -1542,14 +1564,13 @@ void sprinter_state::on_kbd_data(int state) } } -void sprinter_state::do_cpu_wait(bool is_io) +void sprinter_state::do_mem_wait(u8 cpu_taken = 0) { - if ((m_turbo && m_turbo_hard)) + if (m_turbo && m_turbo_hard) { - u8 count = is_io ? 4 : 3; - const u8 over = m_maincpu->total_cycles() % count; - count = count + (over ? (count - over) : 0); - m_maincpu->adjust_icount(-count); + u8 over = m_maincpu->total_cycles() % 6; + over = over ? (6 - over) : 0; + m_maincpu->adjust_icount(-(over + (6 - cpu_taken))); } } @@ -1758,13 +1779,13 @@ void sprinter_state::sprinter(machine_config &config) m_maincpu->set_irq_acknowledge_callback(NAME([](device_t &, int){ return 0xff; })); m_maincpu->irqack_cb().set(FUNC(sprinter_state::irq_off)); - ISA8(config, m_isa[0], 0); + ISA8(config, m_isa[0], X_SP / 5); m_isa[0]->set_custom_spaces(); zxbus_device &zxbus(ZXBUS(config, "zxbus", 0)); zxbus.set_iospace(m_isa[0], isa8_device::AS_ISA_IO); ZXBUS_SLOT(config, "zxbus2isa", 0, "zxbus", zxbus_cards, nullptr); - ISA8(config, m_isa[1], 0); + ISA8(config, m_isa[1], X_SP / 5); m_isa[1]->set_custom_spaces(); ISA8_SLOT(config, "isa8", 0, m_isa[1], pc_isa8_cards, nullptr, false); From 1ef332c67494e5d2899217055f0f865c2c72b216 Mon Sep 17 00:00:00 2001 From: as-tb-dev <178102874+as-tb-dev@users.noreply.github.com> Date: Wed, 2 Oct 2024 18:01:12 -0400 Subject: [PATCH 09/13] vcs_ctrl: Add support for Atari CX22/CX80 Trak-Ball in native trackball mode (#12722) --- scripts/src/bus.lua | 2 + src/devices/bus/vcs_ctrl/ctrl.cpp | 2 + src/devices/bus/vcs_ctrl/trakball.cpp | 148 ++++++++++++++++++++++++++ src/devices/bus/vcs_ctrl/trakball.h | 53 +++++++++ 4 files changed, 205 insertions(+) create mode 100644 src/devices/bus/vcs_ctrl/trakball.cpp create mode 100644 src/devices/bus/vcs_ctrl/trakball.h diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 8096a161189..634a6eab870 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -2701,6 +2701,8 @@ if (BUSES["VCS_CTRL"]~=null) then MAME_DIR .. "src/devices/bus/vcs_ctrl/mouse.h", MAME_DIR .. "src/devices/bus/vcs_ctrl/paddles.cpp", MAME_DIR .. "src/devices/bus/vcs_ctrl/paddles.h", + MAME_DIR .. "src/devices/bus/vcs_ctrl/trakball.cpp", + MAME_DIR .. "src/devices/bus/vcs_ctrl/trakball.h", MAME_DIR .. "src/devices/bus/vcs_ctrl/wheel.cpp", MAME_DIR .. "src/devices/bus/vcs_ctrl/wheel.h", } diff --git a/src/devices/bus/vcs_ctrl/ctrl.cpp b/src/devices/bus/vcs_ctrl/ctrl.cpp index afef3a923bf..8cf51645a55 100644 --- a/src/devices/bus/vcs_ctrl/ctrl.cpp +++ b/src/devices/bus/vcs_ctrl/ctrl.cpp @@ -72,6 +72,7 @@ void vcs_control_port_device::device_start() #include "lightpen.h" #include "mouse.h" #include "paddles.h" +#include "trakball.h" #include "wheel.h" void vcs_control_port_devices(device_slot_interface &device) @@ -84,6 +85,7 @@ void vcs_control_port_devices(device_slot_interface &device) device.option_add("wheel", VCS_WHEEL); device.option_add("keypad", VCS_KEYPAD); device.option_add("cx85", ATARI_CX85); + device.option_add("trakball", ATARI_TRAKBALL); } void a800_control_port_devices(device_slot_interface &device) diff --git a/src/devices/bus/vcs_ctrl/trakball.cpp b/src/devices/bus/vcs_ctrl/trakball.cpp new file mode 100644 index 00000000000..f796d5fd019 --- /dev/null +++ b/src/devices/bus/vcs_ctrl/trakball.cpp @@ -0,0 +1,148 @@ +// license:BSD-3-Clause +/********************************************************************** + + Atari CX22/CX80 Trak-Ball + +Note: this module only works in trackball mode and not in joystick emulation mode + +Reference: Atari, CX22 Trakball Field Service Manual, Rev. 01 (FD100660), November 1983 + +**********************************************************************/ + +#include "emu.h" +#include "trakball.h" + +/*************************************************************************** + CONSTANTS +***************************************************************************/ + +#define TRAKBALL_BUTTON_TAG "trackball_buttons" +#define TRAKBALL_XAXIS_TAG "trackball_x" +#define TRAKBALL_YAXIS_TAG "trackball_y" + +#define TRAKBALL_POS_UNINIT 0xffffffff /* default out-of-range position */ + +//************************************************************************** +// DEVICE TYPE DEFINITION +//************************************************************************** + +DEFINE_DEVICE_TYPE(ATARI_TRAKBALL, atari_trakball_device, "atari_trakball", "Atari CX22/CX80 Trak-Ball") + + +//************************************************************************** +// INPUT PORTS +//************************************************************************** + +static INPUT_PORTS_START(atari_trakball) + PORT_START(TRAKBALL_BUTTON_TAG) /* Trak-ball - button */ + PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_WRITE_LINE_MEMBER(atari_trakball_device, trigger_w) + PORT_BIT( 0xd0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START(TRAKBALL_XAXIS_TAG) /* Trak-ball - X AXIS */ + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(80) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, atari_trakball_device, trakball_moved, 0) + + PORT_START(TRAKBALL_YAXIS_TAG) /* Trak-ball - Y AXIS */ + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(80) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_CHANGED_MEMBER(DEVICE_SELF, atari_trakball_device, trakball_moved, 1) +INPUT_PORTS_END + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// atari_cx85_device - constructor +//------------------------------------------------- + +atari_trakball_device::atari_trakball_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, ATARI_TRAKBALL, tag, owner, clock) + , device_vcs_control_port_interface(mconfig, *this) + , m_trakballb(*this, TRAKBALL_BUTTON_TAG) + , m_trakballxy(*this, { TRAKBALL_XAXIS_TAG, TRAKBALL_YAXIS_TAG }) + , m_last_pos{ TRAKBALL_POS_UNINIT, TRAKBALL_POS_UNINIT } + , m_last_direction{ 0, 0 } +{ +} + +//------------------------------------------------- +// device_input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor atari_trakball_device::device_input_ports() const +{ + return INPUT_PORTS_NAME(atari_trakball); +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void atari_trakball_device::device_start() +{ +} + +#define QUADRATURE_ANGLE_RESOLUTION 0x02 + +//----------------------------------------------------------------- +// trakbal_pos_and_dir_upd - update tracked position and direction +//----------------------------------------------------------------- + +void atari_trakball_device::trakball_pos_and_dir_upd(int axis) +{ + int diff_pos = 0; + int cur_pos = 0; + + cur_pos = m_trakballxy[axis]->read(); + if (m_last_pos[axis] == TRAKBALL_POS_UNINIT) { + if (!machine().side_effects_disabled()) { + m_last_pos[axis] = cur_pos; + } + } + diff_pos = cur_pos - m_last_pos[axis]; + // wrap-around the position + if (diff_pos > 0x7f) { + diff_pos -= 0x100; + } else if (diff_pos < -0x80) { + diff_pos += 0x100; + } + if (!machine().side_effects_disabled()) { + m_last_pos[axis] = cur_pos; + if (diff_pos) { + m_last_direction[axis] = diff_pos > 0; + } + } +} + +//--------------------------------------------------------- +// trakball_moved - called when moved outside of polling +//--------------------------------------------------------- + +INPUT_CHANGED_MEMBER( atari_trakball_device::trakball_moved ) +{ + const int axis(param); + + trakball_pos_and_dir_upd(axis); +} + +//------------------------------------------------- +// vcs_joy_r - read digital inputs +//------------------------------------------------- + +u8 atari_trakball_device::vcs_joy_r() +{ + u8 vcs_joy_return = 0; + + for (int axis = 0; axis < 2; axis++) { + trakball_pos_and_dir_upd(axis); + } + + vcs_joy_return = + m_trakballb->read() | + (m_last_direction[0] ? 0x01 : 0x00) | + ((m_last_pos[0] & QUADRATURE_ANGLE_RESOLUTION) ? 0x02 : 0x00) | + (m_last_direction[1] ? 0x04 : 0x00) | + ((m_last_pos[1] & QUADRATURE_ANGLE_RESOLUTION) ? 0x08 : 0x00); + + return vcs_joy_return; +} diff --git a/src/devices/bus/vcs_ctrl/trakball.h b/src/devices/bus/vcs_ctrl/trakball.h new file mode 100644 index 00000000000..22d6c68d73e --- /dev/null +++ b/src/devices/bus/vcs_ctrl/trakball.h @@ -0,0 +1,53 @@ +// license:BSD-3-Clause +/********************************************************************** + + Atari CX22/CX80 Trak-Ball + +**********************************************************************/ + +#ifndef MAME_BUS_VCS_CTRL_TRAKBALL_H +#define MAME_BUS_VCS_CTRL_TRAKBALL_H + +#pragma once + +#include "ctrl.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> atari_trakball_device + +class atari_trakball_device : public device_t, + public device_vcs_control_port_interface +{ +public: + // construction/destruction + atari_trakball_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + DECLARE_INPUT_CHANGED_MEMBER( trakball_moved ); + +protected: + // device_t implementation + virtual void device_start() override; + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + + // device_vcs_control_port_interface overrides + virtual u8 vcs_joy_r() override; + +private: + required_ioport m_trakballb; + required_ioport_array<2> m_trakballxy; + + void trakball_pos_and_dir_upd(int axis); + + uint32_t m_last_pos[2]; + uint8_t m_last_direction[2]; +}; + + +// device type declaration +DECLARE_DEVICE_TYPE(ATARI_TRAKBALL, atari_trakball_device) + +#endif // MAME_BUS_VCS_CTRL_TRAKBALL_H From 154a58ff12da7ca94fabcd0b2e01cd6b4dd32943 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 2 Oct 2024 18:27:43 -0400 Subject: [PATCH 10/13] bus/vcs_ctrl/trakball.cpp: Fix comment --- src/devices/bus/vcs_ctrl/trakball.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/bus/vcs_ctrl/trakball.cpp b/src/devices/bus/vcs_ctrl/trakball.cpp index f796d5fd019..bb5cc0a9a22 100644 --- a/src/devices/bus/vcs_ctrl/trakball.cpp +++ b/src/devices/bus/vcs_ctrl/trakball.cpp @@ -52,7 +52,7 @@ INPUT_PORTS_END //************************************************************************** //------------------------------------------------- -// atari_cx85_device - constructor +// atari_trakball_device - constructor //------------------------------------------------- atari_trakball_device::atari_trakball_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) From 0afa3804cdf35bfc6a2095a90e4c68cb1b11836f Mon Sep 17 00:00:00 2001 From: Roberto Fresca Date: Thu, 3 Oct 2024 03:46:48 +0200 Subject: [PATCH 11/13] New working clones ------------------ Mirax (set 3) [Roberto Fresca, Gabriel Vega (El Pampa), Emmanuel Firmapaz, Club Argentino de Arcades] - Changed the manufacturer to 'Current Technology, Inc.' --- src/mame/mame.lst | 5 ++-- src/mame/misc/mirax.cpp | 62 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4384691b129..df67a643bbd 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -31028,8 +31028,9 @@ fiches // fiches12 // @source:misc/mirax.cpp -mirax // (c) 1985 Current Technologies -miraxa // (c) 1985 Current Technologies +mirax // (c) 1985 Current Technology, Inc. +miraxa // (c) 1985 Current Technology, Inc. +miraxb // (c) 1985 Current Technology, Inc. @source:misc/mirderby.cpp mirderby // (c) 1988 Home Data? diff --git a/src/mame/misc/mirax.cpp b/src/mame/misc/mirax.cpp index 77b965b56da..d8675b545f2 100644 --- a/src/mame/misc/mirax.cpp +++ b/src/mame/misc/mirax.cpp @@ -2,7 +2,7 @@ // copyright-holders:Angelo Salese, Tomasz Slanina, Olivier Galibert /* **************************************************** -Mirax (C)1985 Current Technologies +Mirax (C)1985 Current Technology, Inc. driver by Tomasz Slanina analog[AT]op[DOT]pl @@ -97,6 +97,32 @@ Stephh's notes (based on the games Z80 code and some tests) : - Same ingame bug as in 'mirax' when you reach level 100 (of course, it will display "LUXORI UNIT" instead of "MIRAX CITY" on "presentation" screen). + +Roberto Fresca notes about set 'miraxb' + + - The game starts without a self test. + + Stages: + + stages 01 to 10 : "MIRAX" + stages 11 to 20 : "RUTHIN" + stages 21 to 30 : "GORGAN" + stages 31 to 40 : "PEMBAY" + stages 41 to 50 : "URMIA" + stages 51 to 60 : "VENLO" + stages 61 to 70 : "OHRE" + stages 71 to 80 : "DESBOM" + stages 81 to 90 : "XELUN" + stages 91 to 99 : "MURBO" + + After the stage 99, the game jumps to stage 1 (take as 100), where you reach the city. + even displaying the wrong text. Cities appear at stage 1, 11, 21, etc... + Once you reach again the stage 99, you'll get the stage 1 again, + but the city will displace to the stage 2, 12, 22, etc... Always with wrong text on screen. + + Indeed it's a bug of the game. + + ************************************************ */ @@ -572,6 +598,35 @@ ROM_START( miraxa ) ROM_LOAD( "mrb3.prm", 0x0020, 0x0020, CRC(e3f3d0f5) SHA1(182b06c9db5bec1e3030f705247763bd2380ba83) ) ROM_END +ROM_START( miraxb ) + ROM_REGION( 0xc000, "maincpu", ROMREGION_ERASE00 ) // put decrypted code there + + ROM_REGION( 0xc000, "data_code", 0 ) // encrypted code for the main cpu + ROM_LOAD( "10.p5", 0x0000, 0x4000, CRC(680cd519) SHA1(1cf4ef5a3e6907524b1fd874dc5412f95e4b5856) ) + ROM_LOAD( "11.r5", 0x4000, 0x4000, CRC(a518c8b0) SHA1(e974c5eaba7d8135b5c3d4606ce81f88550eb657) ) + ROM_LOAD( "12.s5", 0x8000, 0x4000, CRC(ed1f6c30) SHA1(360a46c412c93274a763f35493257f746f79bb43) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "13.r5", 0x0000, 0x2000, CRC(cd2d52dc) SHA1(0d4181dc68beac338f47a2065c7b755008877896) ) + + ROM_REGION( 0xc000, "gfx1", 0 ) + ROM_LOAD( "4.e3", 0x0000, 0x4000, CRC(0cede01f) SHA1(c723dd8ee9dc06c94a7fe5d5b5bccc42e2181af1) ) + ROM_LOAD( "6.h3", 0x4000, 0x4000, CRC(58221502) SHA1(daf5c508939b44616ca76308fc33f94d364ed587) ) + ROM_LOAD( "8.k3", 0x8000, 0x4000, CRC(6dbc2961) SHA1(5880c28f1ef704fee2d625a42682c7d65613acc8) ) + + ROM_REGION( 0x18000, "gfx2", 0 ) + ROM_LOAD( "1.e2", 0x04000, 0x4000, CRC(2cf5d8b7) SHA1(f66bce4d413a48f6ae07974870dc0f31eefa68e9) ) + ROM_LOAD( "2.f2", 0x0c000, 0x4000, CRC(1f42c7fa) SHA1(33e56c6ddf7676a12f57de87ec740c6b6eb1cc8c) ) + ROM_LOAD( "3.h2", 0x14000, 0x4000, CRC(cbaff4c6) SHA1(2dc4a1f51b28e98be0cfb5ab7576047c748b6728) ) + ROM_LOAD( "5.f3", 0x00000, 0x4000, CRC(14b1ca85) SHA1(775a4c81a81b78490d45095af31e24c16886f0a2) ) + ROM_LOAD( "7.i3", 0x08000, 0x4000, CRC(20fb2099) SHA1(da6bbd5d2218ba49b8ef98e7affdcab912f84ade) ) + ROM_LOAD( "9.l3", 0x10000, 0x4000, CRC(918487aa) SHA1(47ba6914722a253f65c733b5edff4d15e73ea6c2) ) + + ROM_REGION( 0x0060, "proms", 0 ) + ROM_LOAD( "mra3.prm", 0x0000, 0x0020, CRC(ae7e1a63) SHA1(f5596db77c1e352ef7845465db3e54e19cd5df9e) ) + ROM_LOAD( "mrb3.prm", 0x0020, 0x0020, CRC(e3f3d0f5) SHA1(182b06c9db5bec1e3030f705247763bd2380ba83) ) +ROM_END + void mirax_state::init_mirax() { @@ -591,5 +646,6 @@ void mirax_state::init_mirax() } // anonymous namespace -GAME( 1985, mirax, 0, mirax, mirax, mirax_state, init_mirax, ROT90, "Current Technologies", "Mirax (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, miraxa, mirax, mirax, miraxa, mirax_state, init_mirax, ROT90, "Current Technologies", "Mirax (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, mirax, 0, mirax, mirax, mirax_state, init_mirax, ROT90, "Current Technology, Inc.", "Mirax (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, miraxa, mirax, mirax, miraxa, mirax_state, init_mirax, ROT90, "Current Technology, Inc.", "Mirax (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, miraxb, mirax, mirax, miraxa, mirax_state, init_mirax, ROT90, "Current Technology, Inc.", "Mirax (set 3)", MACHINE_SUPPORTS_SAVE ) From d3e5395657ffddf976d2e52325f4d643f6e35d63 Mon Sep 17 00:00:00 2001 From: A-Noid33 <108240177+A-Noid33@users.noreply.github.com> Date: Wed, 2 Oct 2024 22:04:28 -0400 Subject: [PATCH 12/13] apple2_flop_orig.xml, apple2_flop_clcracked.xml, apple2gs_flop_orig.xml: Added latest dumps and improved metadata. (#12824) * * apple2_flop_orig.xml: Added twenty-one new dumps * apple2_flop_clcracked.xml: Added four new dumps (Computer Baseball 1983 Teams split from original since sold separately) * apple2gs_flop_orig.xml: Added six new dumps * Improved metadata for all SSI dumps New working software list items (apple2_flop_orig.xml) ------------------------------- B-24 (version 1.0) Baltic 1985: Corridor to Berlin (version 1.0) Battalion Commander (version 1.0) Battle of Antietam (version 1.3) Battle of Antietam (version 1.5) Battlecruiser (version 1.0) Battles of Napoleon (version 1.0) Bomb Alley (version 1.0) Breakthrough in the Ardennes (version 1.1) Carrier Force (version 1.0) Champions of Krynn (version 1.0) Champions of Krynn (version 1.1) Colonial Conquest (version 1.1) Computer Air Combat (version 1.0) Computer Air Combat (version 1.1) Computer Ambush (version 1.0 revision 1) Computer Ambush (version 1.0 revision 2) Eagles (version 1.0) Fifty Mission Crush (version 1.1) Fifty Mission Crush (version 1.2) Fighter Command (version 1.0) New working software list items (apple2_flop_clcracked.xml) ------------------------------- Battle of Antietam (version 1.3) (4am and san inc crack) Computer Bismarck (version 1.1) (4am and san inc crack) Computer Baseball 1983 Teams Disk (4am and san inc crack) RoadWar 2000 (version 1.1) (4am crack) New working software list items (apple2gs_flop_orig.xml) ------------------------------- Time Pilot (version 1.2) [Stefan Wessels, Antoine Vignau, Brutal Deluxe Software, A-Noid] Time Pilot (version 1.3) [Stefan Wessels, Antoine Vignau, Brutal Deluxe Software, A-Noid] Time Pilot (version 1.4) [Stefan Wessels, Antoine Vignau, Brutal Deluxe Software, A-Noid] Time Pilot (version 1.5) [Stefan Wessels, Antoine Vignau, Brutal Deluxe Software, A-Noid] Time Pilot (version 1.5.A) [Stefan Wessels, Antoine Vignau, Brutal Deluxe Software, A-Noid] Time Pilot (version 1.6) [Stefan Wessels, Antoine Vignau, Brutal Deluxe Software, A-Noid] * Halls of Montezuma is distributed by Strategic Studies Group (SSG) --------- Co-authored-by: Bob Schultz --- hash/apple2_flop_clcracked.xml | 2469 ++++++++++++++++++-------------- hash/apple2_flop_orig.xml | 1005 +++++++++---- hash/apple2gs_flop_orig.xml | 140 +- 3 files changed, 2279 insertions(+), 1335 deletions(-) diff --git a/hash/apple2_flop_clcracked.xml b/hash/apple2_flop_clcracked.xml index 6f599c85a81..754616908e3 100644 --- a/hash/apple2_flop_clcracked.xml +++ b/hash/apple2_flop_clcracked.xml @@ -230,25 +230,6 @@ license:CC0-1.0 - - Dungeon Master's Assistant (cleanly cracked) - 1988 - Strategic Simulations - - - - - - - - - - - - - - - Genesis (cleanly cracked) 1983 @@ -3582,86 +3563,6 @@ license:CC0-1.0 - - Battalion Commander (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - Battle Cruiser (cleanly cracked) - 1987 - Strategic Simulations - - - - - - - - - - - - - - - - Battle For Normandy (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - - - Battle Group (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - Battle of Antietam (version 1.5) (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - - - - BC's Quest For Tires (cleanly cracked) 1983 @@ -3891,19 +3792,6 @@ license:CC0-1.0 - - Bomb Alley (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - Borrowed Time (cleanly cracked) 1985 @@ -4211,32 +4099,6 @@ license:CC0-1.0 - - Carrier Force (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - - - Cartels and Cutthroats (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - Case of the Missing Chick: Finding The Main Idea (cleanly cracked) 1986 @@ -4751,19 +4613,6 @@ license:CC0-1.0 - - Colonial Conquest (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - Color Me (Softsmith) (cleanly cracked) 1982 @@ -4960,32 +4809,6 @@ license:CC0-1.0 - - Computer Air Combat (version 1.1) (cleanly cracked) - 1980 - Strategic Simulations - - - - - - - - - - - Computer Ambush (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - Computer Assisted Problem Solving for Beginning Algebra (cleanly cracked) 1984 @@ -5055,24 +4878,6 @@ license:CC0-1.0 - - Computer Baseball (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - - - - - - Computer Discovery (cleanly cracked) 1981 @@ -5197,19 +5002,6 @@ license:CC0-1.0 - - Computer Quarterback Second Edition (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - Computerized Reading for Aphasics (cleanly cracked) 1984 @@ -6908,19 +6700,6 @@ license:CC0-1.0 - - Epidemic (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - Epoch (cleanly cracked) 1981 @@ -7262,65 +7041,6 @@ license:CC0-1.0 - - Field of Fire (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - - - - - - - - - - Fifty Mission Crush (version 1.1) (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - - - Fifty Mission Crush (version 1.2) (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - - - Fighter Command (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - Finance Manager (cleanly cracked) 1984 @@ -7845,26 +7565,6 @@ license:CC0-1.0 - - Galactic Adventures (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - - - - - - - - Galaxy Gates (cleanly cracked) 1981 @@ -8003,19 +7703,6 @@ license:CC0-1.0 - - Gemstone Warrior (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - Geography Adventure USA (cleanly cracked) 1983 @@ -8140,26 +7827,6 @@ license:CC0-1.0 - - Geopolitique 1990 (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - - - - - - - - GeoWhiz (cleanly cracked) 1990 @@ -8264,26 +7931,6 @@ license:CC0-1.0 - - Gettysburg - The Turning Point (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - GFL Championship Football (cleanly cracked) 1987 @@ -9812,32 +9459,6 @@ license:CC0-1.0 - - Guadalcanal Campaign (version 1.0) (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - - - Guadalcanal Campaign (version 1.1) (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - Guderian (cleanly cracked) 1986 @@ -9890,19 +9511,6 @@ license:CC0-1.0 - - Hands on BASIC Programming (cleanly cracked) - 1983 - Edu-Ware - - - - - - - - - Handy Dandy (cleanly cracked) 1983 @@ -10337,26 +9945,6 @@ license:CC0-1.0 - - Imperium Galactum (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - - - - - - - - Improper Fractions (cleanly cracked) 1990 @@ -10634,26 +10222,6 @@ license:CC0-1.0 - - Kampfgruppe (version 1.1) (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - - - - - - Karate Champ (cleanly cracked) 1985 @@ -10869,19 +10437,6 @@ license:CC0-1.0 - - Knights of the Desert (version 1.1) (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - Know Your Apple (cleanly cracked) 1982 @@ -13362,26 +12917,6 @@ license:CC0-1.0 - - Mech Brigade (version 1.2) (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - - - - - - Meet The Presidents (cleanly cracked) 1981 @@ -14841,19 +14376,6 @@ license:CC0-1.0 - - NAM (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - Nemesis (cleanly cracked) 1984 @@ -14935,19 +14457,6 @@ license:CC0-1.0 - - North Atlantic 86 (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - NoteCard Maker (cleanly cracked) 1985 @@ -15229,19 +14738,6 @@ license:CC0-1.0 - - Operation Apocalypse (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - Operation Frog (cleanly cracked) 1984 @@ -15415,19 +14911,6 @@ license:CC0-1.0 - - Panzer Grenadier (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - Paper Models - The Christmas Kit (cleanly cracked) 1986 @@ -16110,32 +15593,6 @@ license:CC0-1.0 - - President Elect (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - - - President Elect (1988 Edition) (cleanly cracked) - 1987 - Strategic Simulations (SSI) - - - - - - - - - Principal's Assistant (cleanly cracked) 1987 @@ -16403,19 +15860,6 @@ license:CC0-1.0 - - Queen of Hearts (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - Quest - Math 3-1 Place Value to 6 Digits (cleanly cracked) 1986 @@ -17049,26 +16493,6 @@ license:CC0-1.0 - - Professional Tour Golf (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - - - - - - - - Rings of Saturn (cleanly cracked) 1981 @@ -22282,33 +21706,6 @@ license:CC0-1.0 - - Rings of Zilfin (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - - - - - - - - - - - - - Spanish Verb Pairs (cleanly cracked) 1984 @@ -25087,26 +24484,6 @@ license:CC0-1.0 - - Roadwar Europa (cleanly cracked) - 1987 - Strategic Simulations - - - - - - - - - - - - - - - - The Story of Miss Mouse (cleanly cracked) 1985 @@ -25140,46 +24517,6 @@ license:CC0-1.0 - - The Shard of Spring (version 1.0) (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - The Eternal Dagger (version 1.2) (cleanly cracked) - 1987 - Strategic Simulations - - - - - - - - - - - - - - - - Rhymo's Falling Star (cleanly cracked) 1985 @@ -25616,19 +24953,6 @@ license:CC0-1.0 - - Warship (version 1.1) (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - Voyages of Discovery: Lewis and Clark (cleanly cracked) 1986 @@ -27556,66 +26880,6 @@ license:CC0-1.0 - - Roadwar 2000 (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - Rebel Charge at Chickamauga (cleanly cracked) - 1987 - Strategic Simulations - - - - - - - - - - - - - - - - - - War in the South Pacific (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - Ultima I: The Beginning (cleanly cracked) 1986 @@ -27681,26 +26945,6 @@ license:CC0-1.0 - - Shiloh: Grant's Trial in the West (cleanly cracked) - 1987 - Strategic Simulations - - - - - - - - - - - - - - - - Adventure Construction Set (cleanly cracked) 1985 @@ -27762,19 +27006,6 @@ license:CC0-1.0 - - Warship (version 1.0) (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - Talisman: Challenging the Sands of Time (128K) (cleanly cracked) 1987 @@ -27816,91 +27047,6 @@ license:CC0-1.0 - - The Shard of Spring (version 1.1) (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - Rails West! (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - - - The Battle of the Bulge: Tigers in the Snow (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - - - Ringside Seat (cleanly cracked) - 1983 - Strategic Simulations - - - - - - - - - - - The Shattered Alliance (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - - - The Warp Factor (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - Treasure Island (cleanly cracked) 1985 @@ -28089,19 +27235,6 @@ license:CC0-1.0 - - Torpedo Fire (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - The Planetary Guide (cleanly cracked) 1981 @@ -28161,85 +27294,6 @@ license:CC0-1.0 - - Roadwar 2000 (version 1.2) (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - Southern Command (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - - - The Battle of Shiloh (cleanly cracked) - 1981 - Strategic Simulations - - - - - - - - - - - Reforger 88 (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - - - U.S.A.A.F. (version 1.2) (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - - - - - - The Function Game (cleanly cracked) 1983 @@ -29471,45 +28525,6 @@ license:CC0-1.0 - - The Cosmic Balance (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - - - Questron (cleanly cracked) - 1984 - Strategic Simulations - - - - - - - - - - - - - - - - - - - - - - The Adventures of Kristen and Her Family (cleanly cracked) 1985 @@ -33820,27 +32835,6 @@ license:CC0-1.0 - - Kampfgruppe (version 1.0) (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - - - - - - - - GATO (version 1.2) (cleanly cracked) 1985 @@ -34574,35 +33568,6 @@ license:CC0-1.0 - - Cytron Masters (cleanly cracked) - 1982 - Strategic Simulations - - - - - - - - - - - - - Six-Gun Shootout (cleanly cracked) - 1985 - Strategic Simulations - - - - - - - - - - Compuzzler (cleanly cracked) 1984 @@ -34617,39 +33582,6 @@ license:CC0-1.0 - - Wizard's Crown (version 1.2) (cleanly cracked) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Odyssey in Time (cleanly cracked) 1981 @@ -40917,6 +39849,135 @@ license:CC0-1.0 + + Battalion Commander (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Battlecruiser (version 1.0) (4am crack) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Battle Group (version 1.0) (4am and san inc crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Battle For Normandy (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Battle of Antietam (version 1.3) (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Battle of Antietam (version 1.5) (4am crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + Battling Bugs and Concentraction (revision 1) (4am crack) 1982 @@ -41108,6 +40169,22 @@ license:CC0-1.0 + + Bomb Alley (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Book Worm (A-407 version 1.0) (4am crack) 1985 @@ -41163,7 +40240,7 @@ license:CC0-1.0 Broadsides (revision 1) (4am crack) 1983 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -41180,7 +40257,7 @@ license:CC0-1.0 Broadsides (revision 2) (4am crack) 1983 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -41197,7 +40274,7 @@ license:CC0-1.0 Broadsides (revision 3) (4am crack) 1983 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -41214,7 +40291,7 @@ license:CC0-1.0 Broadsides (revision 4) (4am crack) 1983 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -41454,6 +40531,38 @@ license:CC0-1.0 + + Carrier Force (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Cartels & Cutthroats (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Cash Versus Credit Buying (4am crack) 1983 @@ -41952,6 +41061,23 @@ license:CC0-1.0 + + Colonial Conquest (version 1.0) (4am crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + CommuniKeys (A-248 version 1.0) (4am crack) 1989 @@ -42021,6 +41147,41 @@ license:CC0-1.0 + + Computer Air Combat (version 1.1) (4am and san inc crack) + 1980 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Computer Ambush (version 1982) (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Computer Assisted Blackboard demo (4am crack) 1983 @@ -42037,6 +41198,39 @@ license:CC0-1.0 + + Computer Baseball (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Computer Baseball 1983 Teams Disk (4am and san inc crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Computer Biology Lab: Clam Dissection (4am crack) 1984 @@ -42167,6 +41361,23 @@ license:CC0-1.0 + + Computer Bismarck (version 1.1) (4am and san inc crack) + 1980 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Computer Generated Mathematics Materials Volume 1: Problem Solving (A-757 version 1.1) (4am crack) 1982 @@ -42257,6 +41468,22 @@ license:CC0-1.0 + + Computer Quarterback Second Edition (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Computers in Government (A-122 version 1.0) (4am crack) 1984 @@ -43321,6 +42548,23 @@ license:CC0-1.0 + + Cytron Masters (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Dancing Dinos (4am crack) 1993 @@ -44133,6 +43377,30 @@ license:CC0-1.0 + + Dungeon Master's Assistant Volume 1: Encounters (version 1.0) (trex crack) + 1988 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Dyno-Quest (4am crack) 1984 @@ -44507,6 +43775,22 @@ license:CC0-1.0 + + Epidemic (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Equations I (4am crack) 1983 @@ -44917,6 +44201,83 @@ license:CC0-1.0 + + Field of Fire (version 1.0) (4am crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + Fifty Mission Crush (version 1.1) (4am and san inc crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + Fifty Mission Crush (version 1.2) (4am and san inc crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + Fighter Command (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Fish Scales (version 4.0) (4am crack) 1984 @@ -45020,7 +44381,7 @@ license:CC0-1.0 Fortress (revision 2) (4am crack) 1983 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -45342,6 +44703,29 @@ license:CC0-1.0 + + Galactic Adventures (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + Game Frame One (4am crack) 1986 @@ -45426,6 +44810,24 @@ license:CC0-1.0 + + Gemstone Warrior (version 1.1) (4am crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Genesis: The Adventure Game Creator (4am crack) 1982 @@ -45541,6 +44943,29 @@ license:CC0-1.0 + + Geopolitique 1990 (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + German Vocabulary Builder (4am crack) 1982 @@ -45602,6 +45027,30 @@ license:CC0-1.0 + + Gettysburg: The Turning Point (version 1.0) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Glidepath (version 1.0) (4am crack) 1985 @@ -45919,6 +45368,40 @@ license:CC0-1.0 + + Guadalcanal Campaign (version 1.0) (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Guadalcanal Campaign (version 1.1) (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Guitar Wizard (version 11601) (4am crack) 1986 @@ -46002,6 +45485,23 @@ license:CC0-1.0 + + Hands on BASIC Programming (version 1.0 25-Feb-83) (4am crack) + 1983 + Edu-Ware Services + + + + + + + + + + + + + Hard Hat Mack (4am and san inc crack) 1983 @@ -46137,6 +45637,30 @@ license:CC0-1.0 + + Imperium Galactum (version 1.0) (4am and san inc crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Improving Your Memory (4am crack) 1983 @@ -46362,6 +45886,54 @@ license:CC0-1.0 + + Kampfgruppe (version 1.0) (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Kampfgruppe (version 1.1) (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Key Signatures (4am crack) 1986 @@ -46712,6 +46284,23 @@ license:CC0-1.0 + + Knights of the Desert (version 1.1) (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Knowledge Master Basics: Earth Science (4am crack) 1986 @@ -48996,6 +48585,29 @@ license:CC0-1.0 + + Mech Brigade (version 1.2) (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + Medalist Series: Black Americans (version 04.13.84) (4am crack) 1983 @@ -49709,6 +49321,39 @@ license:CC0-1.0 + + NAM (version 1.0) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + North Atlantic 86 (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Number Bowling: Decimals and Fractions (4am crack) 1985 @@ -49803,6 +49448,22 @@ license:CC0-1.0 + + Operation Apocalypse (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Osmotic Pressure (version 1.1, 04/1985) (4am crack) 1985 @@ -49859,6 +49520,24 @@ license:CC0-1.0 + + Panzer Grenadier (verision 1.0) (4am crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Parachute Parts of Speech (4am crack) 1984 @@ -50184,7 +49863,7 @@ license:CC0-1.0 Phantasie (version 1.0) (4am and san inc crack) 1984 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -50208,7 +49887,7 @@ license:CC0-1.0 Phantasie II: Descent Into The Netherworld (version 2/5/86) (4am and san inc crack) 1986 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -50477,6 +50156,39 @@ license:CC0-1.0 + + President Elect (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + President Elect 1988 Edition (version 2.0) (4am crack) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Primary Math: Addition 4-Digit Numerals with Renaming (4am crack) 1985 @@ -50843,6 +50555,29 @@ license:CC0-1.0 + + Professional Tour Golf (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + Projectile and Circular Motion (4am crack) 1984 @@ -51054,6 +50789,22 @@ license:CC0-1.0 + + Queen of Hearts (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Questprobe featuring Spider-Man (version B-258) (4am crack) 1985 @@ -51126,6 +50877,35 @@ license:CC0-1.0 + + Questron (4am and san inc crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + Quiz Castle (4am crack) 1986 @@ -51236,6 +51016,22 @@ license:CC0-1.0 + + Rails West! (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Rainbow Painter (4am crack) 1984 @@ -51675,6 +51471,46 @@ license:CC0-1.0 + + Rebel Charge at Chickamauga (version 1.0) (4am crack) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Reforger 88 (4am and san inc crack) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Rendezvous with Rama (4am crack) 1984 @@ -51984,6 +51820,148 @@ license:CC0-1.0 + + Rings of Zilfin (version 1.0) (4am crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ringside Seat (4am and san inc crack) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Roadwar 2000 (version 1.0) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Roadwar 2000 (version 1.1) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Roadwar 2000 (version 1.2) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Roadwar Europa (version 1.0) (4am crack) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + RoboMath (revision 1) (4am crack) 1985 @@ -52597,6 +52575,30 @@ license:CC0-1.0 + + Shiloh: Grant's Trial in the West (version 1.0) (4am crack) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Shopping with the Yellow Pages (4am crack) 1984 @@ -52629,6 +52631,23 @@ license:CC0-1.0 + + Six-Gun Shootout (version 1.0) (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Skill Builder: Social Studies - Grade 6 (4am crack) 1986 @@ -53058,6 +53077,22 @@ license:CC0-1.0 + + Southern Command (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Space Journey: Planets and Stars (4am crack) 1991 @@ -54695,6 +54730,38 @@ license:CC0-1.0 + + The Battle of Shiloh (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + The Battle of the Bulge: Tigers in the Snow (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + The Boy Jesus (4am crack) 1984 @@ -54719,6 +54786,22 @@ license:CC0-1.0 + + The Cosmic Balance (4am and san inc crack) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + The Counting Bee (version 1.1, 26-FEB-82) (4am crack) 1981 @@ -54864,6 +54947,30 @@ license:CC0-1.0 + + The Eternal Dagger (version 1.2) (4am crack) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + The Evelyn Wood Dynamic Reader (4am crack) 1984 @@ -55289,6 +55396,70 @@ license:CC0-1.0 + + The Shard of Spring (version 1.0) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + The Shard of Spring (version 1.1) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + The Shattered Alliance (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + The Spelling Bee (4am crack) 1985 @@ -55749,6 +55920,22 @@ license:CC0-1.0 + + The Warp Factor (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Theorems and Proofs of Theorems (4am crack) 1983 @@ -55986,6 +56173,22 @@ license:CC0-1.0 + + Torpedo Fire (4am and san inc crack) + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Total Learning System (4am crack) 1983 @@ -56361,6 +56564,29 @@ license:CC0-1.0 + + U.S.A.A.F. (version 1.2) (4am and san inc crack) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + Vaults of Zurich (4am crack) 1982 @@ -56560,6 +56786,29 @@ license:CC0-1.0 + + War in the South Pacific (version 1.0) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + Warrior of RAS Volume One: Dunzhin (4am crack) 1982 @@ -56592,6 +56841,40 @@ license:CC0-1.0 + + Warship (version 1.0) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Warship (version 1.1) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Water in the Air (4am crack) 1985 @@ -57083,6 +57366,42 @@ license:CC0-1.0 + + Wizard's Crown (version 1.2) (4am crack) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wiziprint (version 2.01 20-AUG-83) (4am crack) 1982 diff --git a/hash/apple2_flop_orig.xml b/hash/apple2_flop_orig.xml index 62a4a76ee58..d087e0cb8db 100644 --- a/hash/apple2_flop_orig.xml +++ b/hash/apple2_flop_orig.xml @@ -7821,28 +7821,6 @@ license:CC0-1.0 - - Roadwar 2000 (version 1.1) - 1986 - Strategic Simulations, Inc - - - - - - - - - - - - - - - - - - Flight Simulator I (A2-FS1) 1980 @@ -8455,21 +8433,6 @@ license:CC0-1.0 - - Southern Command - 1981 - Strategic Simulations - - - - - - - - - - - Arthur: The Quest for Excalibur (version 17) 1989 @@ -10396,40 +10359,6 @@ license:CC0-1.0 - - Typhoon of Steel (version 1.0) - 1988 - Strategic Simulations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Alien Munchies 1983 @@ -10460,28 +10389,6 @@ license:CC0-1.0 - - Kampfgruppe (version 1.0) - 1985 - Strategic Simulations - - - - - - - - - - - - - - - - - - The Latin Hangman (Revision 1004) 1983 @@ -12347,40 +12254,6 @@ license:CC0-1.0 - - Panzer Strike! (version 1.0) - 1987 - Strategic Simulations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Police Quest 1987 @@ -13539,21 +13412,6 @@ license:CC0-1.0 - - Germany 1985 (version 2.0) - 1982 - Strategic Simulations - - - - - - - - - - - The Lion's Share 1983 @@ -16136,22 +15994,6 @@ license:CC0-1.0 - - Pursuit of the Graf Spee - 1982 - Strategic Simulations - - - - - - - - - - - - Bezare 1982 @@ -16541,29 +16383,6 @@ license:CC0-1.0 - - Gemstone Healer (version 1.2) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - - Space Adventure: Episode One 1981 @@ -20340,61 +20159,6 @@ license:CC0-1.0 - - Six-Gun Shootout - 1985 - Strategic Simulations - - - - - - - - - - - - - - The Road to Gettysburg - 1982 - Strategic Simulations - - - - - - - - - - - - - - Gettysburg: The Turning Point (version 1.2) - 1986 - Strategic Simulations - - - - - - - - - - - - - - - - - - - Microzine 31 1989 @@ -24745,6 +24509,23 @@ license:CC0-1.0 + + B-24 (version 1.0) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Back It Up III (version 3.4) 1983 @@ -24850,6 +24631,23 @@ license:CC0-1.0 + + Baltic 1985: Corridor to Berlin (version 1.0) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Bats in the Belfry 1983 @@ -24866,30 +24664,155 @@ license:CC0-1.0 - - Battleship Commander - 1980 - Quality Software - - - - + + Battalion Commander (version 1.0) + 1985 + Strategic Simulations Inc. (SSI) + + + + + - - + + - - Beach Landing - 1984 - Optimum Resource - - - - + + Battle of Antietam (version 1.3) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Battle of Antietam (version 1.5) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Battlecruiser (version 1.0) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + Battles of Napoleon (version 1.0) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Battleship Commander + 1980 + Quality Software + + + + + + + + + + + + + + Beach Landing + 1984 + Optimum Resource + + + + @@ -24998,6 +24921,47 @@ license:CC0-1.0 + + Bomb Alley (version 1.0) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Breakthrough in the Ardennes (version 1.1) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Bubble Bobble 1988 @@ -25135,6 +25099,23 @@ license:CC0-1.0 + + Carrier Force (version 1.0) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Cause and Effect: What Makes It Happen 1988 @@ -25169,6 +25150,114 @@ license:CC0-1.0 + + Champions of Krynn (version 1.0) + 1990 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Champions of Krynn (version 1.1) + 1990 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Checkers (version 2.1) 1981 @@ -25353,6 +25442,23 @@ license:CC0-1.0 + + Colonial Conquest (version 1.1) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + CommuniKeys (A-248 version 1.0) 1989 @@ -25407,6 +25513,76 @@ license:CC0-1.0 + + Computer Air Combat (version 1.0) + 1980 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Computer Air Combat (version 1.1) + 1980 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Computer Ambush (version 1.0 revision 1) + 1980 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + Computer Ambush (version 1.0 revision 2) + 1980 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + Computer Generated Mathematics Materials Volume 1: Problem Solving (A-757 version 1.1) 1982 @@ -27314,6 +27490,23 @@ license:CC0-1.0 + + Eagles (version 1.0) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Earl Weaver Baseball 1989 @@ -27740,6 +27933,59 @@ license:CC0-1.0 + + Fifty Mission Crush (version 1.1) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + Fifty Mission Crush (version 1.2) + 1984 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + Fighter Command (version 1.0) + 1983 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Galactic Attack 1980 @@ -27759,7 +28005,7 @@ license:CC0-1.0 Galactic Gladiators 1983 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -27788,6 +28034,30 @@ license:CC0-1.0 + + Gemstone Healer (version 1.2) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Genesis 1983 @@ -27804,6 +28074,47 @@ license:CC0-1.0 + + Germany 1985 (version 2.0) + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + Gettysburg: The Turning Point (version 1.2) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Grammar: Building Better Language Skills: Adjectives and Adverbs 1991 @@ -28041,6 +28352,30 @@ license:CC0-1.0 + + Kampfgruppe (version 1.0) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Keyboarding Series: MECC Keyboarding Master: Games and Drills (Student Program) (A-131 version 1.0) 1985 @@ -29065,6 +29400,42 @@ license:CC0-1.0 + + Panzer Strike! (version 1.0) + 1987 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Paul's Missionary Journeys 1986 @@ -29236,6 +29607,22 @@ license:CC0-1.0 + + Pursuit of the Graf Spee + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Questmaster I: The Prism of Heheutotol 1989 @@ -29610,6 +29997,30 @@ license:CC0-1.0 + + Roadwar 2000 (version 1.1) + 1986 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + Run For It 1984 @@ -29972,6 +30383,23 @@ license:CC0-1.0 + + Six-Gun Shootout (version 1.0) + 1985 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + Snooper Troops 1: The case of: The Granite Point Ghost 1982 @@ -29990,6 +30418,22 @@ license:CC0-1.0 + + Southern Command + 1981 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + Spare Change 1983 @@ -31206,6 +31650,22 @@ license:CC0-1.0 + + The Road to Gettysburg + 1982 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + The Scoop 1989 @@ -31499,6 +31959,41 @@ license:CC0-1.0 + + Typhoon of Steel (version 1.0) + 1988 + Strategic Simulations Inc. (SSI) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Uncle Clyde's Consonant Slides: Beginning Consonants 1993 diff --git a/hash/apple2gs_flop_orig.xml b/hash/apple2gs_flop_orig.xml index 6e7c409001f..793467e2d43 100644 --- a/hash/apple2gs_flop_orig.xml +++ b/hash/apple2gs_flop_orig.xml @@ -647,7 +647,7 @@ license:CC0-1.0 Questron II (version 1.1) 1988 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -677,10 +677,10 @@ license:CC0-1.0 - + Roadwar 2000 1987 - Strategic Simulations + Strategic Simulations Inc. (SSI) @@ -1845,11 +1845,12 @@ license:CC0-1.0 - Halls of Montezuma + Halls of Montezuma (version 1.0 07-1990) 1990 - Strategic Simulations + Strategic Studies Group (SSG) + @@ -4262,4 +4263,133 @@ license:CC0-1.0 + + Time Pilot (version 1.2) + 2024 + Stefan Wessels + + + + + + + + + + + + + + + + Time Pilot (version 1.3) + 2024 + Stefan Wessels and Brutal Deluxe Software + + + + + + + + + + + + + + + + Time Pilot (version 1.4) + 2024 + Stefan Wessels and Brutal Deluxe Software + + + + + + + + + + + + + + + + Time Pilot (version 1.5) + 2024 + Stefan Wessels and Brutal Deluxe Software + + + + + + + + + + + + + + + + + + + + + + + Time Pilot (version 1.5.A) + 2024 + Stefan Wessels and Brutal Deluxe Software + + + + + + + + + + + + + + + + + + + + + + + Time Pilot (version 1.6) + 2024 + Stefan Wessels and Brutal Deluxe Software + + + + + + + + + + + + + + + + + + + + + From 57e5d60550ce2cbbdc4893bdd737e14260b355b6 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Wed, 2 Oct 2024 19:05:21 -0700 Subject: [PATCH 13/13] hash/ibm5170_cdrom.xml: add Duke Nukem Kill-A-Ton Collection (#12808) --- hash/ibm5170_cdrom.xml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/hash/ibm5170_cdrom.xml b/hash/ibm5170_cdrom.xml index 154088955dc..fcadbdd50cc 100644 --- a/hash/ibm5170_cdrom.xml +++ b/hash/ibm5170_cdrom.xml @@ -4712,6 +4712,32 @@ Untested multiplayer options + + Duke Nukem 3D: Kill-A-Ton Collection + 1997 + GT Interactive + + + + + + + + + + + + + + + + + + + + + +