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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/more/a2600.xml b/hash/more/a2600.xml
index c8d76eab822..6ceff2df6e5 100644
--- a/hash/more/a2600.xml
+++ b/hash/more/a2600.xml
@@ -1,6 +1,6 @@
-
+
(000 - $F800) Game Select
@@ -40822,6 +40822,66 @@
+
+ Z-Tack (1983) (Bomb)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zartog
+ ????
+ unknown
+
+
+
+
+
+
+
+ zaxxon2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zblocks
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zelda (2003) (Kyle Pittman) (Adventure Hack)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zero Patrol by Charles Morgan (Moon Patrol Hack)
+ ????
+ unknown
+
+
+
+
+
+
ZeroPage Homebrew - The Game (L.Camara)(2022-05-27)
????
@@ -40832,4 +40892,364 @@
+
+ Zeroplayer (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZETA (2007) (Matthew J. Risch) (Prototype)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZETA 1a 20071223
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflicker bullet
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflicker jumpman
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflicker liana
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflicker
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflicker1
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflickerNTSC
+ ????
+ unknown
+
+
+
+
+
+
+
+ zflickerPAL
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zi - The Flie Buster (2002) (Fernando Mora) (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zilch 20070928
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zilch 20071001
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zippy [Demo 01] (Sonic The Hedgehog) [NTSC].bas
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zirconium 2005-05-06
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zirconium 2005-10-28
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zkeep! (2023-12)(Altair)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZLoc4 (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZNoTimer (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ zodzone2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombies (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ zombie_chase
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zoop (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ zr (Beta 1)
+ ????
+ unknown
+
+
+
+
+
+
+
+ zr (Beta 2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZWithTim (PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zyx & Jittery Jim (2007-10-03)(atari2600world)(NTSC)(PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zyx & Stickman (2007-10-02)(atari2600world)(NTSC)(PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zyx (2006-06-08)(atari2600world)(NTSC)(PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zyx (2006-06-11)(atari2600world)(NTSC)(PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zyx (2007-09-30)(atari2600world)(NTSC)(PD)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZYX 2006 (Chris Read)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zyx 2k 20070903
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZYX beta1 (Chris Read) (2006 Minigame Compo)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZYX v2 (Chris Read)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZYX2 (Chris Read)
+ ????
+ unknown
+
+
+
+
+
+
diff --git a/hash/more/mc10.xml b/hash/more/mc10.xml
index ff4ef9a38c2..4c92dbbc911 100644
--- a/hash/more/mc10.xml
+++ b/hash/more/mc10.xml
@@ -1,7 +1,47 @@
-
+
+
+ (demo)dypp[cloadm]
+ ????
+ unknown
+
+
+
+
+
+
+
+ (demo)dypp_4N[cloadm]
+ ????
+ unknown
+
+
+
+
+
+
+
+ (demo)EYESMOV1
+ ????
+ unknown
+
+
+
+
+
+
+
+ (sound-only)DWSONG
+ ????
+ unknown
+
+
+
+
+
+
08SUB
????
@@ -1032,6 +1072,16 @@
+
+ Beneath the Temple of Zeus
+ ????
+ unknown
+
+
+
+
+
+
BERZERK (2)
????
@@ -1362,6 +1412,16 @@
+
+ Castle Adventure
+ ????
+ unknown
+
+
+
+
+
+
Castle Bally
????
@@ -1852,6 +1912,16 @@
+
+ Cross Rally
+ ????
+ unknown
+
+
+
+
+
+
Crossword Puzzle
????
@@ -1902,6 +1972,16 @@
+
+ Curse of the Undead
+ ????
+ unknown
+
+
+
+
+
+
Dam Busters
????
@@ -1912,6 +1992,36 @@
+
+ Dante's Run (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dante's Run
+ ????
+ unknown
+
+
+
+
+
+
+
+ Darn It
+ ????
+ unknown
+
+
+
+
+
+
Dash (2)
????
@@ -1922,203 +2032,1293 @@
-
- Dragon's Cubes
+
+ DASH
????
unknown
-
-
+
+
-
- Duelling Cannons
+
+ DASH013
????
unknown
-
-
+
+
-
- Dungeon Crawl
+
+ DASHLV02
????
unknown
-
-
+
+
-
- Escape from Colditz
+
+ DASHLV07
????
unknown
-
-
+
+
-
- Exquisite Corpses
+
+ Deadstick
????
unknown
-
-
+
+
-
- faire-le-point-bac-francais1-B_alice
+
+ DECOY
????
unknown
-
-
+
+
-
- Halloween Boogaloo
+
+ Deed of the York
????
unknown
-
-
+
+
-
- Hamburger
+
+ DEEPSCAN
????
unknown
-
-
+
+
-
- Mission Defeat the Alpha Force (2)[cloadm exec]
+
+ DEFCON1
????
unknown
-
-
+
+
-
- Mission Defeat the Alpha Force[cloadm exec]
+
+ DEFEND-joy_4N
????
unknown
-
-
+
+
-
- Night of the Vampire Bunnies
+
+ defend
????
unknown
-
-
+
+
-
- Pharaoh's Curse
+
+ DEFENSE
????
unknown
-
-
+
+
-
- programme-de-demonstration_alice
+
+ DEFLECT
????
unknown
-
-
+
+
-
- road-race_mc10
+
+ Demon Attack-joy_4N
????
unknown
-
-
+
+
-
- Snowboarder
+
+ Demon Attack
????
unknown
-
-
+
+
-
- Snowboarder_4N
+
+ Demon Knight
????
unknown
-
-
+
+
-
- Treasures of Barsoom
+
+ Demon's Eye
????
unknown
-
-
+
+
-
- Voyage to Atlantis
+
+ Desassembleur[cloadm]
????
unknown
-
-
+
+
-
- Wizard of Chaos
+
+ Devil's Dungeon
????
unknown
-
-
+
+
-
- Year at the Races
+
+ Devil's Whist
????
unknown
-
-
+
+
+
+
+
+
+ Devils Triangle
+ ????
+ unknown
+
+
+
+
+
+
+
+ Diamond Hunt (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Diamond Hunt
+ ????
+ unknown
+
+
+
+
+
+
+
+ DIAMOND
+ ????
+ unknown
+
+
+
+
+
+
+
+ DICEWARS
+ ????
+ unknown
+
+
+
+
+
+
+
+ DIGDUG
+ ????
+ unknown
+
+
+
+
+
+
+
+ DIGGER
+ ????
+ unknown
+
+
+
+
+
+
+
+ DIGITAYA
+ ????
+ unknown
+
+
+
+
+
+
+
+ Doctor's Adventure on Scaro
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dodge'em
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dog-star Mission Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ DOJO
+ ????
+ unknown
+
+
+
+
+
+
+
+ DOMINOES
+ ????
+ unknown
+
+
+
+
+
+
+
+ DOTS
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dracula's Castle
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRAGLAIR
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dragon Castles (final)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dragon Castles
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dragon Dungeon
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dragon's Cubes
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dragonfear (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dragonfear
+ ????
+ unknown
+
+
+
+
+
+
+
+ DREIDEL
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRIVE
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRWHO demo
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRWHO(uses DRWHO_1 and DRWHO_2
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRWHO1(uses DRWHO2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRWHO2
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRWHO_1
+ ????
+ unknown
+
+
+
+
+
+
+
+ DRWHO_2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Duelling Cannons
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dungeon Crawl
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dungeon of Death
+ ????
+ unknown
+
+
+
+
+
+
+
+ DUNGEON
+ ????
+ unknown
+
+
+
+
+
+
+
+ Dungeons and Dragons
+ ????
+ unknown
+
+
+
+
+
+
+
+ Earthquake
+ ????
+ unknown
+
+
+
+
+
+
+
+ eggs
+ ????
+ unknown
+
+
+
+
+
+
+
+ Elevator Action
+ ????
+ unknown
+
+
+
+
+
+
+
+ ELIZA
+ ????
+ unknown
+
+
+
+
+
+
+
+ Enchanted Isle
+ ????
+ unknown
+
+
+
+
+
+
+
+ ENGINEER
+ ????
+ unknown
+
+
+
+
+
+
+
+ Enigma Simulator
+ ????
+ unknown
+
+
+
+
+
+
+
+ Escape from Colditz
+ ????
+ unknown
+
+
+
+
+
+
+
+ Escape from the Dungeon of the Gods
+ ????
+ unknown
+
+
+
+
+
+
+
+ EXPLORER
+ ????
+ unknown
+
+
+
+
+
+
+
+ Exquisite Corpses
+ ????
+ unknown
+
+
+
+
+
+
+
+ Extended Basic v1 (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Extended Basic v1
+ ????
+ unknown
+
+
+
+
+
+
+
+ faire-le-point-bac-francais1-B_alice
+ ????
+ unknown
+
+
+
+
+
+
+
+ German Flag
+ ????
+ unknown
+
+
+
+
+
+
+
+ Halloween Boogaloo
+ ????
+ unknown
+
+
+
+
+
+
+
+ Hamburger
+ ????
+ unknown
+
+
+
+
+
+
+
+ Hunt the Wumpus
+ ????
+ unknown
+
+
+
+
+
+
+
+ In the Woods
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mission Defeat the Alpha Force (2)[cloadm exec]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mission Defeat the Alpha Force[cloadm exec]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Montiero Challenge
+ ????
+ unknown
+
+
+
+
+
+
+
+ Night of the Vampire Bunnies
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pharaoh's Curse
+ ????
+ unknown
+
+
+
+
+
+
+
+ programme-de-demonstration_alice
+ ????
+ unknown
+
+
+
+
+
+
+
+ Revenge of the Toothless Vampire
+ ????
+ unknown
+
+
+
+
+
+
+
+ Road to Valhalla
+ ????
+ unknown
+
+
+
+
+
+
+
+ road-race_mc10
+ ????
+ unknown
+
+
+
+
+
+
+
+ Robot Rubber Duckies from Space
+ ????
+ unknown
+
+
+
+
+
+
+
+ Romulan Warbirds
+ ????
+ unknown
+
+
+
+
+
+
+
+ Snowboarder
+ ????
+ unknown
+
+
+
+
+
+
+
+ Snowboarder_4N
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stronghold of the Dwarven Lords
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tays House Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ Temple of Apshai
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tower Dodge
+ ????
+ unknown
+
+
+
+
+
+
+
+ Treasure of Elgon Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ Treasures of Barsoom
+ ????
+ unknown
+
+
+
+
+
+
+
+ U-boat
+ ????
+ unknown
+
+
+
+
+
+
+
+ Ultimate Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ UNDRDATA
+ ????
+ unknown
+
+
+
+
+
+
+
+ UNDRGRND (uses UNDRDATA)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Unexplored Mansion, An
+ ????
+ unknown
+
+
+
+
+
+
+
+ USFLAG
+ ????
+ unknown
+
+
+
+
+
+
+
+ VADER
+ ????
+ unknown
+
+
+
+
+
+
+
+ Valley, the
+ ????
+ unknown
+
+
+
+
+
+
+
+ Vespozian Affair
+ ????
+ unknown
+
+
+
+
+
+
+
+ VICTRON
+ ????
+ unknown
+
+
+
+
+
+
+
+ Voyage to Atlantis
+ ????
+ unknown
+
+
+
+
+
+
+
+ WANDERER
+ ????
+ unknown
+
+
+
+
+
+
+
+ WARLORDS
+ ????
+ unknown
+
+
+
+
+
+
+
+ Warren's World - Lost Colony
+ ????
+ unknown
+
+
+
+
+
+
+
+ WEREWOLF
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wildcatter
+ ????
+ unknown
+
+
+
+
+
+
+
+ Williamsburg Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ Witching Hour
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wizard of Chaos
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wizard's Castle
+ ????
+ unknown
+
+
+
+
+
+
+
+ Word Search Puzzle
+ ????
+ unknown
+
+
+
+
+
+
+
+ World Governor
+ ????
+ unknown
+
+
+
+
+
+
+
+ WORLDGEO
+ ????
+ unknown
+
+
+
+
+
+
+
+ WORLDS
+ ????
+ unknown
+
+
+
+
+
+
+
+ X-Rated Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ XMAS
+ ????
+ unknown
+
+
+
+
+
+
+
+ XMAS2019
+ ????
+ unknown
+
+
+
+
+
+
+
+ xmasrush[cloadm]
+ ????
+ unknown
+
+
+
+
+
+
+
+ XMASTREE
+ ????
+ unknown
+
+
+
+
+
+
+
+ XTREE03
+ ????
+ unknown
+
+
+
+
+
+
+
+ YAHTZEE
+ ????
+ unknown
+
+
+
+
+
+
+
+ Year at the Races
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zector Adventure
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZODIAC
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZOMBIES
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZYMON
+ ????
+ unknown
+
+
+
diff --git a/hash/more/spectrum_cass.xml b/hash/more/spectrum_cass.xml
index efc9b82a100..810c9542bdb 100644
--- a/hash/more/spectrum_cass.xml
+++ b/hash/more/spectrum_cass.xml
@@ -1,6 +1,6 @@
-
+
(demo)63 BIT 3 (19xx)(-)
@@ -3982,4 +3982,634 @@
+
+ Z (1987)(Rino Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Z-Fred (1984)(AK Wood)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Z-Man (1983)(DJL Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zaxxan (1983)(Starzone Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zaxxon (19xx)(D. Boettcher)(De)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZAZRAKY
+ ????
+ unknown
+
+
+
+
+
+
+
+ zblastsd
+ ????
+ unknown
+
+
+
+
+
+
+
+ zblastsdp
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zebbedy (19xx)(-)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zed
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zedex_Tanks_1_2_TAP_v1_2
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZEN 48K (2014)(Einar Saukas)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZEN II 48K (2015)(Einar Saukas)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zig Zag (1984)(DK'Tronics Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zig-Zag
+ ????
+ unknown
+
+
+
+
+
+
+
+ Ziggurat - The Temple Of Doom (1984)(Software Super Savers Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Ziona Quest - GAME - ZX Spectrum TAPE
+ ????
+ unknown
+
+
+
+
+
+
+
+ Ziona Quest - Game 128K (2023)(Iamai)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Ziona Quest - Training - ZX Spectrum TAPE
+ ????
+ unknown
+
+
+
+
+
+
+
+ Ziona Quest - Training 128K (2023)(Iamai)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zip-Zap 48K (1983)(Imagine)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zipper Flipper (1984)(R.E.D.)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZNAKY
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zodiac Strip (1984)(Suzy Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zoids (1985)(Martech Games Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zoinho 48K (2021)(Bitnamic)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zolyx (1988)(Firebird Software Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombi (1990)(Ubi Soft Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombi Mall EN (2022)(The Mojon Twins)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombi Mall ES (2022)(The Mojon Twins)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombi
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombie Calavera Prologue 48K (2010)(Mojon Twins)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombie Zombie (1984)(Quicksilva Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombies (19xx)(-)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zona 0 (1991)(Topo Soft)(es)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zona 0 (1991)(Topo Soft)(Sp)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zone M (1986)(Zuheir Urwani)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zooming Secretary 128K (2021)(PC NONO Games)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zoot & The Mankins (1985)(Bug-Byte Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zoot & The Mankins (1985)(Bug-Byte Software)[a]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zorro (1986)(US Gold Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ztrack1k
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zub (1986)(Mastertronic Added Dimension)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zulu Wars (1987)(CCS)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zulu Wars (1987)(CCS)[a]
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Defender (19xx)(-)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Enigma Machine (2021)(Menyiques)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Football Manager 2005 (2004)(Cronosoft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Frogger 48K (2021)(ref)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Larry 128K (2019)(Rafal Miazga)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Oil Panic G&W 48K (2021)(Menyiques)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Oil Panic Game & Watch v2 48K (2024)(Menyiques)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Parachute 16K (2020)(Carles Oriol)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Robots 48K (2023)(Skult)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Spectrum Grail (1983)(Severn Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX Trek (1982)(Impact Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ZX-ECHO
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zybex (1989)(Zeppelin Games Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zybex (1989)(Zeppelin Games Ltd)[t +1]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zynaps (1987)(Hewson Consultants Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zzoom (1983)(Imagine Software Ltd)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zzoom 48K (1983)(Imagine)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zzzz (19xx)(Mastertronic Ltd)
+ ????
+ unknown
+
+
+
+
+
+
diff --git a/hash/more/spectrum_snap.xml b/hash/more/spectrum_snap.xml
index 96321a55020..5946948d22d 100644
--- a/hash/more/spectrum_snap.xml
+++ b/hash/more/spectrum_snap.xml
@@ -1,6 +1,6 @@
-
+
100 - Stolnik (1995)(Power Of Sound)
@@ -292,6 +292,16 @@
+
+ Astronut 48K (1984)(Software Projects)
+ ????
+ unknown
+
+
+
+
+
+
Astro_Marine_Corps_1989_Dinamic_Software_es_Part_1_of_2
????
@@ -442,6 +452,16 @@
+
+ Beaky and the Egg Snatchers 48K (1984)(Fantasy Software)
+ ????
+ unknown
+
+
+
+
+
+
Benny Hill's Madcap Chase! 128K (2017)(AGDLabs)
????
@@ -722,6 +742,16 @@
+
+ Cherils Perils 48K (2010)(The Mojon Twins)
+ ????
+ unknown
+
+
+
+
+
+
Chevy Chase 128K (1991)(Hi-Tec)
????
@@ -1742,6 +1772,26 @@
+
+ Impossible Mission II 48K (1988)(U.S. Gold)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Indoor Soccer 48K (1986)(Magnificent 7 Software)
+ ????
+ unknown
+
+
+
+
+
+
International Speedway (1988)(Silverbird)
????
@@ -2122,4 +2172,2064 @@
+
+ Mad Mix Game (1988)(Topo Soft)(es)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Magic Carpet 16K (1985)(Mastertronic)
+ ????
+ unknown
+
+
+
+
+
+
+
+ MARTIAN
+ ????
+ unknown
+
+
+
+
+
+
+
+ Masters of the Universe - The Super Adventure 48K (1987)(U.S. Gold)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Masterword 48K (Proto)(1989)(Atlantis Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Merlin (1987)(Firebird)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Merlin 48K (1988)(Firebird)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Metal Army (1988)(Players Premier)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Michel Futbol Master - Championship (1989)(Dinamic)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Michel Futbol Master - Super Skills (1989)(Dinamic)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mickey Mouse - The Computer Game 128K (1988)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mickey Mouse - The Computer Game 48K (1988)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Micro Profanation 48K v1.1 (2022)(Ivan Gomez Marquez)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mojon_Twins-sampler-biniax2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mojon_Twins_Phantomas_Tales_1-sampler
+ ????
+ unknown
+
+
+
+
+
+
+
+ Monty Mole (1984)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Monty on the Run (1985)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Moon Torc (1991)(Atlantis Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Moonsweeper (1983)(CheetahSoft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Moritz 48k (2017)(Sebastian Braunert)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mot (1989)(Opera Soft)(Part 1 of 3)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mot (1989)(Opera Soft)(Part 2 of 3)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mot (1989)(Opera Soft)(Part 3 of 3)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ motor
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mundial de Futbol (1990)(Opera Soft)(es)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mutan Zone (1989)(Opera Soft)(es)(Part 1 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mutan Zone (1989)(Opera Soft)(es)(Part 2 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Mystery of the Nile, The (1987)(Firebird Software)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Nanako in Classic Japanese Monster Castle 48K (2007)(Computer Emuzone)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Navy Moves (1988)(Dinamic Software)(Part 1 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Navy Moves (1988)(Dinamic Software)(Part 2 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Nebulus (1987)(Hewson Consultants)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Nebulus (1988)(Hewson Consultants)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Nemesis (1987)(The Hit Squad)[re-release]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Night Breed (1990)(Ocean)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Night Breed (1990)(Ocean)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ NISHADE
+ ????
+ unknown
+
+
+
+
+
+
+
+ NUPAGADI
+ ????
+ unknown
+
+
+
+
+
+
+
+ OLDDEMO
+ ????
+ unknown
+
+
+
+
+
+
+
+ Olli & Lissa - The Ghost Of Shilmoore Castle (1986)(Firebird)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Olli & Lissa II - Halloween (1987)(Firebird)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Olli & Lissa III - The Candlelight Adventure (1989)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Out Run (1988)(U.S. Gold)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pac-Man - Arcade 48K (2023)(Marco Leal)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pakacuda 16K (1983)(Rabbit)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Paradise Cafe PT (1985)(Damatta)[adult]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pentagram
+ ????
+ unknown
+
+
+
+
+
+
+
+ PlanetOfShades
+ ????
+ unknown
+
+
+
+
+
+
+
+ players
+ ????
+ unknown
+
+
+
+
+
+
+
+ PODRAZ6
+ ????
+ unknown
+
+
+
+
+
+
+
+ Poli Diaz (1990)(Opera Soft)(es)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Popeye (1985)(DK'Tronics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Poradce
+ ????
+ unknown
+
+
+
+
+
+
+
+ Poseidon - Planet Eleven 48K (1990)(Hi-Tec)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Postman Pat - The Computer Game 48K (1989)(Alternative)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Prince Clumsy (1990)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pro Skateboard Simulator (1989)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pro Tennis Simulator (1990)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Professional Snooker Simulator (1987)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ PSSST
+ ????
+ unknown
+
+
+
+
+
+
+
+ Pub Trivia (1989)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ R-Type (1988)(Electric Dreams Software)[b]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Race Against Time, The (1988)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Race, The
+ ????
+ unknown
+
+
+
+
+
+
+
+ RAM (1990)(Topo Soft)(es)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rat-A-Tat (2020)(Joesoft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rescate Atlantida ES 128K (1989)(Dinamic)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rescate en el Golfo (1990)(Opera Soft)(Part 1 of 2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rescate en el Golfo (1990)(Opera Soft)(Part 2 of 2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rex (1988)(Martech Games)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rex (1988)(Martech Games)[Part 1 of 2]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rex (1988)(Martech Games)[Part 2 of 2]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Road Blasters 128K (1988)(U.S. Gold)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Road Runner 48K (1987)(U.S. Gold)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Road Runner and Wile E. Coyote 48K (1991)(Hi-Tec)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rocco 48K (1985)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rock 'n Roller (1988)(Topo Soft)(es)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rock'n Roller ES (1988)(Topo Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Rocky 48K (1985)(Dinamic)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Run the Gauntlet (1989)(Ocean)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ S.I.P. - Special Intergalactic Painter 48K (2014)(Gamemaster)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Saboteur (1986)(Durell)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Saboteur 48K (1985)(Durell)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Saboteur II - Avenging Angel (1987)(Durell)(128k)_2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Saboteur II - Avenging Angel (1987)(Durell)(Standard)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Saboteur II - Avenging Angel (1987)(Durell)_1
+ ????
+ unknown
+
+
+
+
+
+
+
+ Saboteur_II_Avenging_Angel_1987_Durell_Software
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sabre Wulf
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sabrina ES 48K (1989)(Iber Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sacred Armour of Antiriad, The (1986)(Palace)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Samurai Warrior - Usagi Yojimbo (1988)(Firebird)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sanxion - The Spectrum Remix (1989)(Thalamus)(48K-128K)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Satan (1989)(Dinamic Software)(Part 1 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Satan (1989)(Dinamic Software)(Part 2 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Savage (1988)(Firebird)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Savage, The (1988)(Firebird)[intro]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Savage, The (1988)(Firebird)[Part 1 of 3]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Savage, The (1988)(Firebird)[Part 1 of 3]_1
+ ????
+ unknown
+
+
+
+
+
+
+
+ Savage, The (1988)(Firebird)[Part 2 of 3]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Savage, The (1988)(Firebird)[Part 3 of 3]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Score 3020 ES 48K (1989)(Topo Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Scuba Dive (1983)(Durell)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sea Dragon (2010)(Andrew Zhiglov)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sector (2013)(RetroSouls)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sentinel, The (1987)(Firebird Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Seymour At The Movies (1991)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Seymour Take One (1991)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Shadow Of The Beast (1990)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sherlock 48K (1984)(Melbourne House)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Side Arms 48K (1988)(Go!)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sidewize_1987_Firebird_Software
+ ????
+ unknown
+
+
+
+
+
+
+
+ Silent Service 48K (1986)(U.S. Gold)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sim City (1989)(Infogrames)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Simulador Profesional de Tenis (1990)(Dinamic Software)(es)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sirwood (1990)(Opera Soft)(Part 1 of 3)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sirwood (1991)(Opera Soft)(Part 2 of 3)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sirwood (1991)(Opera Soft)(Part 3 of 3)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sito Pons 500cc Grand Prix (1990)(Zigurat Software)(es)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Skate Crazy - Part 1 (1988)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Skate Crazy - Part 2 (1988)(Gremlin Graphics)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Skladacka (1989)(Deltasoft)(SK)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Soko-BanEditor
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sol Negro (1989)(Opera Soft)(es)(Part 1 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sol Negro (1989)(Opera Soft)(es)(Part 2 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sol Negro - Special Edition - Part 1 (1989)(Opera Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Sol Negro - Special Edition - Part 2 (1989)(Opera Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Soldier Of Fortune (1988)(Firebird)
+ ????
+ unknown
+
+
+
+
+
+
+
+ SOLITER
+ ????
+ unknown
+
+
+
+
+
+
+
+ Souls ES (2013)(Retrobytes Productions)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Spooky Castle 48K (1990)(Atlantis Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stalker
+ ????
+ unknown
+
+
+
+
+
+
+
+ Star Blade (1995)(Barry Addams)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Star Paws (1988)(Software Projects)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Starfox
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stonava1
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stonava2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stonava3
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stop The Express (1983)(Hudson Soft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stormlord (1989)(Hewson Consultants)[t]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stormlord_II_Deliverance_1990_Hewson_Consultants_Part_1_of_3
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stormlord_II_Deliverance_1990_Hewson_Consultants_Part_2_of_3
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stormlord_II_Deliverance_1990_Hewson_Consultants_Part_3_of_3
+ ????
+ unknown
+
+
+
+
+
+
+
+ Street Hassle
+ ????
+ unknown
+
+
+
+
+
+
+
+ Strider II (1990)(U.S. Gold)[needs tape load]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Stunt Car Racer (1989)(Micro Style)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Subbuteo - The Computer Game (1990)(Electronic Zoo)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Subbuteo - The Computer Game (1990)(Electronic Zoo)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Super Alien Blast 48K (2021)(Vintage Software Systems)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Super Meteor Blast 48K (2021)(Vintage Software Systems)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Super Monaco GP (1991)(U.S. Gold)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Super Space Invaders 128K (1991)(Domark)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Superbike Trans-Am (1989)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ SuperDiskus
+ ????
+ unknown
+
+
+
+
+
+
+
+ SWIV (1991)(Storm Software)(Block1)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ SWIV (1991)(Storm Software)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ S_Quest1
+ ????
+ unknown
+
+
+
+
+
+
+
+ S_Quest2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tai-Pan (1987)(Ocean)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tai-Pan 128K (1987)(Ocean)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Technician Ted
+ ????
+ unknown
+
+
+
+
+
+
+
+ Teenage Mutant Hero Turtles (1990)(Image Works)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terra Cresta (1986)(Imagine Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terra Cresta (1986)(Imagine Software)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Test_Drive_II_The_Duel_1989_Accolade
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tetris (1988)(Mirrorsoft)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tetris (1988)(Mirrorsoft)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tetris2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Thundercats 128K (1987)(Elite Systems)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Thundercats 48K (1987)(Elite Systems)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tiger Road (1988)(Go!)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tiger Road (1988)(Go!)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Time Machine 48K (1990)(Activision)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Titanic (1988)(Topo Soft)(Part 1 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Titanic (1988)(Topo Soft)(Part 2 of 2)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Top Cat in Beverly Hills Cats 48K (1991)(Hi-Tec)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Total Recall (1991)(Ocean)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Trantor The Last Stormtrooper (1987)(Go!)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tranz Am (1983)(Ultimate Play The Game)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Trapdoor, The
+ ????
+ unknown
+
+
+
+
+
+
+
+ Treinador de Futebol PT (1983)(Microbyte Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tus Juegos Single 1 - Tape 1 - Incursion Aerea (19xx)(Monser)(es)[aka Harrier Attack!]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tus Juegos Single 1 - Tape 4 - Gusiloc (19xx)(Monser)(es)[aka Millipede]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Underwurlde
+ ????
+ unknown
+
+
+
+
+
+
+
+ UPIR
+ ????
+ unknown
+
+
+
+
+
+
+
+ Valley of Rains (2019)(Zosya Entertainment)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Vindicator, The (1988)(Imagine Software)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Vindicators (1989)(Domark)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Way of the Exploding Fist, The (1985)(Melbourne House)
+ ????
+ unknown
+
+
+
+
+
+
+
+ WEC Le Mans (1988)(Imagine Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ WEC Le Mans (1988)(Imagine Software)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Welltris
+ ????
+ unknown
+
+
+
+
+
+
+
+ whb
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wild West Seymour (1992)(Codemasters)(128k)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wild West Seymour (1992)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wonder Boy (1987)(Activision)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ World Series Basketball (1985)(Imagine)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Wrestling Superstars (1993)(Codemasters)
+ ????
+ unknown
+
+
+
+
+
+
+
+ wriggler
+ ????
+ unknown
+
+
+
+
+
+
+
+ Xecutor - Remix (1987)(ACE Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Xeno II 16K (1983)(Anirog)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Yie Ar Kung-Fu (1985)(Imagine Software)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Yie Ar Kung-Fu (1985)(Imagine Software)[128K]
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zombo's Christmas Capers (2016)(Monsterbytes)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zooming Secretary (2021)(PC NONO Games)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zorro (1986)(U.S. Gold)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Zybex 48K (1989)(Zeppelin Games)
+ ????
+ unknown
+
+
+
+
+
+
diff --git a/hash/more/x68k_flop.xml b/hash/more/x68k_flop.xml
index 034642d1044..76212219c9f 100644
--- a/hash/more/x68k_flop.xml
+++ b/hash/more/x68k_flop.xml
@@ -1,6 +1,6 @@
-
+
177 (unofficial port)
@@ -622,13 +622,233 @@
+
+ Teleportion (Sample disk)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Teleportion (System disk)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terazzo Sprite Editor Pro-68K (Sample disk)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terazzo Sprite Editor Pro-68K (System disk)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terazzo Sprite Editor Pro-68K (User disk)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terminoru 2
+ ????
+ unknown
+
+
+
+
+
+
+
+ Terminoru
+ ????
+ unknown
+
+
+
+
+
+
+
+ The File Master X68000 (v1.13) (Disk 1)
+ ????
+ unknown
+
+
+
+
+
+
+
+ The File Master X68000 (v1.13) (Disk 2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ The File Master X68000 (v1.13) (Disk 3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ The Fukubukuro (v2.0) (System disk)
+ ????
+ unknown
+
+
+
+
+
+
+
+ ThunderWord Nihongo Word Processor
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tokyo Joshikou Pt 1 (1988)(SystHOh)(0)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tokyo Joshikou Pt 1 (1988)(SystHOh)(1)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tokyo Joshikou Pt 1 (1988)(SystHOh)(2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tokyo Joshikou Pt 2 (1988)(SystHOh)(0)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tokyo Joshikou Pt 2 (1988)(SystHOh)(1)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Tokyo Joshikou Pt 2 (1988)(SystHOh)(2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Toys & Tools
+ ????
+ unknown
+
+
+
+
+
+
+
+ Trilogy - Ayakashiden (1991)(Gundeck)(1)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Trilogy - Ayakashiden (1991)(Gundeck)(2)
+ ????
+ unknown
+
+
+
+
+
+
- Twin Bee (y) (Konami) [xdf]
+ Twin Bee (y) (Konami)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Twin Soul
????
unknown
-
+
diff --git a/hash/more/zx81_cass.xml b/hash/more/zx81_cass.xml
index a582d5075a4..0fcf68751eb 100644
--- a/hash/more/zx81_cass.xml
+++ b/hash/more/zx81_cass.xml
@@ -1,6 +1,6 @@
-
+
(demo)8WAY-SCR
@@ -3492,6 +3492,616 @@
+
+ GALACTIC
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAKTIS
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAXIAN (3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAXIAN (5)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAXIAN
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAXY (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAXY (4)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALAXY
+ ????
+ unknown
+
+
+
+
+
+
+
+ GALGJE
+ ????
+ unknown
+
+
+
+
+
+
+
+ GAME-TWO
+ ????
+ unknown
+
+
+
+
+
+
+
+ GAME4
+ ????
+ unknown
+
+
+
+
+
+
+
+ GAME5
+ ????
+ unknown
+
+
+
+
+
+
+
+ GAME6
+ ????
+ unknown
+
+
+
+
+
+
+
+ GANYMEDE
+ ????
+ unknown
+
+
+
+
+
+
+
+ GAUNTLET (3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ gauntlet
+ ????
+ unknown
+
+
+
+
+
+
+
+ Gaz
+ ????
+ unknown
+
+
+
+
+
+
+
+ GAZETTEE
+ ????
+ unknown
+
+
+
+
+
+
+
+ gdhabits
+ ????
+ unknown
+
+
+
+
+
+
+
+ GEKKENHU
+ ????
+ unknown
+
+
+
+
+
+
+
+ GELD
+ ????
+ unknown
+
+
+
+
+
+
+
+ GEORGE
+ ????
+ unknown
+
+
+
+
+
+
+
+ GERMAN
+ ????
+ unknown
+
+
+
+
+
+
+
+ GHOST
+ ????
+ unknown
+
+
+
+
+
+
+
+ GHOSTDRI
+ ????
+ unknown
+
+
+
+
+
+
+
+ GHOSTHUN
+ ????
+ unknown
+
+
+
+
+
+
+
+ GLOOPER
+ ????
+ unknown
+
+
+
+
+
+
+
+ GLOOPS (3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GLOOPS
+ ????
+ unknown
+
+
+
+
+
+
+
+ GO-BALL
+ ????
+ unknown
+
+
+
+
+
+
+
+ GOBANG
+ ????
+ unknown
+
+
+
+
+
+
+
+ GOLF (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GOLF (3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GOLF
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRABEN
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAFFITY (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ Graffity
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAFIK_1
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAFIK_2
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAFIK_3
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAFIK_4
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAND-PR (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAND-PR (3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAND-PR
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAPH (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAPH (3)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAPHICT
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAPHROU
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAPHTOO
+ ????
+ unknown
+
+
+
+
+
+
+
+ GRAVITY (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GREEK-MC
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUELFI
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUELFI2
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUESSX
+ ????
+ unknown
+
+
+
+
+
+
+
+ GULP2
+ ????
+ unknown
+
+
+
+
+
+
+
+ GULP2_1
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUN
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUNFIGHT (2)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUNFIGHT
+ ????
+ unknown
+
+
+
+
+
+
+
+ Guntus (autorun)
+ ????
+ unknown
+
+
+
+
+
+
+
+ GUZZLERS
+ ????
+ unknown
+
+
+
+
+
+
Poker Machine
????
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..bb5cc0a9a22
--- /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_trakball_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
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/atari/stkbd.cpp b/src/mame/atari/stkbd.cpp
index 320bec26f51..39a6162a57f 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)
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/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/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/ibm/thinkpad600.cpp b/src/mame/ibm/thinkpad600.cpp
index 253ce6eedd4..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
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"
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/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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index e87dd2001e6..df67a643bbd 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 //
@@ -16238,6 +16239,9 @@ tascr30g
@source:chessking/master.cpp
master
+@source:chessking/pmicrodx.cpp
+pmicrodx
+
@source:chessking/triomphe.cpp
triomphe
@@ -19024,6 +19028,9 @@ newbrainmd //
@source:handheld/chessking.cpp
chesskng //
+@source:handheld/dbridgec.cpp
+dbridgec
+
@source:handheld/gameking.cpp
gamekin3 //
gameking //
@@ -19983,6 +19990,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
@@ -31020,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 )
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 )
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);
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 )