diff --git a/hash/ekara_japan.xml b/hash/ekara_japan.xml
index f526ab76c74..3b432c85a00 100644
--- a/hash/ekara_japan.xml
+++ b/hash/ekara_japan.xml
@@ -32,6 +32,7 @@ license:CC0-1.0
JPM = J-Pop Mix
KID = Kids' Song
KIR = Kirarin Revolution
+ KSB = Kids' Song Best
KSM = Kids' Song Mini
KTY = Hello Kitty
MIN = mini-moni
@@ -167,36 +168,33 @@ license:CC0-1.0
81 EC0081-JPM J-Pop Mix Volume 42
82 *EC0082-MBH Matthew's Best Hit Selection
83 EC0083-JPM J-Pop Mix Volume 43
- 84 EC0084- Kids' Song Best 40
+ 84 *EC0084-KSB Kids' Song Best 40
85 EC0085-ETZ Enka Taizen Volume 3 (custom presentation etc.)
(more? what's the highest regular number?)
- ***********************************************************************************
-
- Japanese cart listing (by KD code)
-
- Cartridges containing 20 children's songs each
- These look like normal e-kara carts
-
- KD-1 Kids' Song 20
- KD-2 Kids' Song 20
- KD-3 Kids' Song 20
- KD-4 Kids' Song 20
-
************************************************************************************************************************************************************
Everything below might not work with a standard e-kara, requires different hardware even if cart form is the same
************************************************************************************************************************************************************
- Japanese cart listing (by KE code)
+ Japanese e-Kara Kids devices (by KH/KE code)
+
+ These are audio-only devices, not XaviX based and do not connect to a TV. They are still e-Kara branded but have
+ nothing in common hardware-wise. This information has been left here for reference only.
+
+ The base units are as follows, they appear to contain an MCU rather than a ROM
+
+ KH-01 Standard
+ KH-02 Mini-Moni
- These are only compatible with some special 'Kids' unit and shaped as lyric books
- (not e-kara compatible?)
+ The cartridges are as follows, as with the base unit they appear to contain an MCU rather than ROM
KE-01 Dōyō 1 (どうよう 1)
KE-02 Television 1 (テレビ 1)
-
- (more?)
+ KE-03 - ??
+ KE-04 - ??
+ KE-05 - Ultraman
+ KE-06 - This is a mini-piano keyboard that plugs into where the cartridge would usually plug
***********************************************************************************
@@ -1142,7 +1140,17 @@ license:CC0-1.0
-
+
+ Kids' Song Best 40 (Japan) (EC0084-KSB)
+ 2003
+ Takara
+
+
+
+
+
+
+
diff --git a/hash/ekara_japan_ac.xml b/hash/ekara_japan_ac.xml
deleted file mode 100644
index bac9e311b83..00000000000
--- a/hash/ekara_japan_ac.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
- Kirarin Revolution KR-1 (Japan)
- 2007
- Takara
-
-
-
-
-
-
-
-
-
- Misora Hibari PR-06 (Japan)
- 2006
- Takara
-
-
-
-
-
-
-
-
-
diff --git a/hash/ekara_japan_en.xml b/hash/ekara_japan_en.xml
index 427860d1407..0a398a70050 100644
--- a/hash/ekara_japan_en.xml
+++ b/hash/ekara_japan_en.xml
@@ -14,8 +14,8 @@ license:CC0-1.0
(check what units these are for)
- EN-1 Enka Collection - Volume 1
- EN-2 Enka Collection - Volume 2
+ *EN-1 Enka Collection - Volume 1
+ *EN-2 Enka Collection - Volume 2
*EN-3 Enka Collection - Volume 3
*EN-4 Enka Collection - Volume 4
@@ -23,6 +23,30 @@ license:CC0-1.0
-->
+
+ Enka-shū Dai Ichi-hen (Japan) (EN-1)
+ 2004
+ Takara
+
+
+
+
+
+
+
+
+
+ Enka-shū Dai Ni-hen (Japan) (EN-2)
+ 2004
+ Takara
+
+
+
+
+
+
+
+
Enka-shū Dai San-hen (Japan) (EN-3)
2004
diff --git a/hash/ekara_japan_kd.xml b/hash/ekara_japan_kd.xml
new file mode 100644
index 00000000000..b9a88fcf517
--- /dev/null
+++ b/hash/ekara_japan_kd.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+ Kids' Song 20 (Japan) (KD-1)
+ 2004
+ Takara
+
+
+
+
+
+
+
+
+
diff --git a/hash/ekara_japan_m.xml b/hash/ekara_japan_m.xml
index c1b5ee9f9c4..5e690164d5c 100644
--- a/hash/ekara_japan_m.xml
+++ b/hash/ekara_japan_m.xml
@@ -17,14 +17,14 @@ license:CC0-1.0
M-6 *MC0006-KSM Kids Song Mini Volume 2 (TV Hero)
M-7 *MC0007-ATM Artist Mini Volume 5 (SMAP, KinKi Kids, ARASHI, TOKIO)
M-8 *MC0008-KSM Kids Song Mini Volume 3
- M-9 MC0009- JPop Mix Mini Volume 1
+ M-9 *MC0009-JPM J-Pop Mix Mini Volume 1
M-10 *MC0010-ATM Artist Mini Volume 6 (Utada Hikaru)
M-11 MC0011- Kids Song Mini Volume 4 (Fantastic)
M-12 *MC0012-ATM Artist Mini Volume 7 (Ayumi Hamasaki)
M-13 *MC0013-KSM Kids Song Mini Volume 5
M-14 *MC0014-ATM Artist Mini Volume 8 (BoA)
M-15 *MC0015-TPM TV Pop Mini Volume 1
- M-16 MC0016-ATM Artist Mini Volume 9 (Yamaguchi Momoe)
+ M-16 *MC0016-ATM Artist Mini Volume 9 (Yamaguchi Momoe)
M-17 MC0017- TV Pop Mini Volume 2?
unsure of KSM / TMP naming, MC0005/0006/0008/0011/0013/0015/0017 all seem to be the same series
@@ -121,6 +121,18 @@ license:CC0-1.0
+
+ J-Pop Mix Mini Volume 1 (Japan) (MC0009-JPM)
+ 2003
+ Takara
+
+
+
+
+
+
+
+
Artist Mini Volume 6 (Utada Hikaru) (Japan) (MC0010-ATM)
2003
@@ -181,4 +193,16 @@ license:CC0-1.0
+
+ Artist Mini Volume 9 (Yamaguchi Momoe) (Japan) (MC0016-ATM)
+ 2003
+ Takara
+
+
+
+
+
+
+
+
diff --git a/hash/ekara_japan_packin.xml b/hash/ekara_japan_packin.xml
new file mode 100644
index 00000000000..d84e0c4d087
--- /dev/null
+++ b/hash/ekara_japan_packin.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+ Kirarin Revolution KR-1 (Japan)
+ 2007
+ Takara
+
+
+
+
+
+
+
+
+
+ Misora Hibari PR-06 (Japan)
+ 2006
+ Takara
+
+
+
+
+
+
+
+
+
+
+
+
+ Saiten Cartridge: Morning Musume Special (Japan) (BX01-MOR)
+ 2001
+ Takara
+
+
+
+
+
+
+
+
+
diff --git a/hash/ekara_japan_s.xml b/hash/ekara_japan_s.xml
index 3faee136d37..055d6363b3c 100644
--- a/hash/ekara_japan_s.xml
+++ b/hash/ekara_japan_s.xml
@@ -24,12 +24,12 @@ license:CC0-1.0
S-8 *SC0008-SAI Saiten Cartridge Challenge Idol vol.2
S-9 *SC0009-SAI Saiten Cartridge Nesshō vol. 3
S-10 *SC0010-HKW Hikawa Kiyoshi no Karaoke Dōjō
- S-11 SC0011- PostPet
+ S-11 *SC0011-PST PostPet
S-12 *SC0012-SAI Saiten Cartridge Challenge Idol vol.3
S-13 SC0013-SAI Saiten Cartridge Nesshō vol. 4
S-14 *SC0014-SAI Saiten Cartridge Challenge Idol vol.4
S-15 *SC0015-DCS Saiten Cartridge Detective Conan Vol.2
- S-16 SC0016-SAI Saiten Cartridge Nesshō vol. 5
+ S-16 *SC0016-SAI Saiten Cartridge Nesshō vol. 5
S-17 SC0017-SAI Kids' Challenge Vol.2
S-18 *SC0018-SAI Saiten Cartridge Challenge Artist Vol.1 (Morning Musume, Tanpopo, Petit Moni, Gotō Maki)
S-19 *SC0019-SAI Saiten Cartridge Nesshō vol. 6
@@ -75,7 +75,7 @@ license:CC0-1.0
-
+
@@ -165,6 +165,18 @@ license:CC0-1.0
+
+ Saiten Cartridge: PostPet (Japan) (SC0011-PST)
+ 2001
+ Takara
+
+
+
+
+
+
+
+
Saiten Cartridge: Challenge Idol vol.3 (Japan) (SC0012-SAI)
2001
@@ -201,6 +213,17 @@ license:CC0-1.0
+
+ Saiten Cartridge: Nesshō Vol. 5 (Japan) (SC0016-SAI)
+ 2002
+ Takara
+
+
+
+
+
+
+
Saiten Cartridge: Challenge Artist Vol.1 (Morning Musume, Tanpopo, Petit Moni, Gotō Maki) (Japan) (SC0018-SAI)
diff --git a/hash/msx2_cart.xml b/hash/msx2_cart.xml
index 83380c48411..7d4c787d4b7 100644
--- a/hash/msx2_cart.xml
+++ b/hash/msx2_cart.xml
@@ -3582,6 +3582,26 @@ LZ93A13 (32 pin) - 8KB banks
+
+ Video Digitizer (Japan)
+ 1989
+ Sony
+ Digitizer cartridge not emulated.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Japanese MSX-Write II (Japan)
@@ -3827,6 +3847,74 @@ LZ93A13 (32 pin) - 8KB banks
+
+ MEGA-SCSI (1024KB)
+ 1995
+ ESE Artists' Factory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MEGA-SCSI (512KB)
+ 1995
+ ESE Artists' Factory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MEGA-SCSI (256KB)
+ 1995
+ ESE Artists' Factory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MEGA-SCSI (128KB)
+ 1995
+ ESE Artists' Factory
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3980,6 +4068,19 @@ LZ93A13 (32 pin) - 8KB banks
+
+ DSKPRO (v11.6)
+ 2017
+ Pirates do Caribe
+
+
+
+
+
+
+
+
+
Equivocal (v1.5)
2009
diff --git a/hash/spectrum_cass.xml b/hash/spectrum_cass.xml
index 754703b9e60..c877ea9bc10 100644
--- a/hash/spectrum_cass.xml
+++ b/hash/spectrum_cass.xml
@@ -467,6 +467,7 @@ license:CC0-1.0
Army Moves (Spanish, set 1, medium case)
1987
Dinamic Software
+
@@ -485,6 +486,7 @@ license:CC0-1.0
Army Moves (set 1, Imagine)
1987
Imagine Software
+
@@ -503,6 +505,7 @@ license:CC0-1.0
Army Moves (English, set 2, Summit)
1987
Summit Software
+
@@ -521,6 +524,7 @@ license:CC0-1.0
Army Moves (Spanish, set 2, small black case)
1987
Dinamic Software
+
@@ -539,6 +543,7 @@ license:CC0-1.0
Army Moves (Spanish, set 3, small orange case)
1988
Dinamic Software
+
@@ -557,6 +562,7 @@ license:CC0-1.0
Army Moves (Spanish, set 1)
1987
Imagine Software
+
@@ -1358,6 +1364,7 @@ license:CC0-1.0
Altair ZX (set 1, English)
2014
Inmensa Bola de Manteca
+
@@ -1369,6 +1376,7 @@ license:CC0-1.0
Altair ZX (set 2, Spanish)
2014
Inmensa Bola de Manteca
+
@@ -1380,6 +1388,7 @@ license:CC0-1.0
Altair (set 3, release 2, English)
2014
Inmensa Bola de Manteca
+
@@ -1391,6 +1400,7 @@ license:CC0-1.0
Altair (set 4, release 2, Spanish)
2014
Inmensa Bola de Manteca
+
@@ -1402,6 +1412,7 @@ license:CC0-1.0
Altair (set 5, English)
2014
Inmensa Bola de Manteca
+
@@ -1413,6 +1424,7 @@ license:CC0-1.0
Altair (set 6, Spanish)
2014
Inmensa Bola de Manteca
+
@@ -1422,9 +1434,9 @@ license:CC0-1.0
- The Arc of Yesod (128k release)
+ The Arc of Yesod (128K release)
1985
- Thor Computer
+ Thor Computer Software
@@ -1433,9 +1445,9 @@ license:CC0-1.0
- The Arc of Yesod (48k release)
+ The Arc of Yesod (48K release)
1985
- <unknown>
+ Thor Computer Software
@@ -1489,8 +1501,8 @@ license:CC0-1.0
Alien Highway (set 3)
- 19??
- <unknown>
+ 1986
+ Vortex
@@ -1500,8 +1512,8 @@ license:CC0-1.0
Alien Highway (set 4, Americana)
- 19??
- <unknown>
+ 1986
+ Americana Software
@@ -2035,7 +2047,7 @@ Run on TC 2048 or ZX Spectrum
Adventure A: Planet of Death (set 2, Sinclair)
1982
- Artic Computing / Sinclair Research
+ Sinclair Research
@@ -2046,7 +2058,7 @@ Run on TC 2048 or ZX Spectrum
Adventure A: Planet of Death (set 3, Profisoft)
1982
- Artic Computing / Profisoft
+ Profisoft
@@ -2079,7 +2091,7 @@ Run on TC 2048 or ZX Spectrum
Adventure B: Inca Curse (set 3, Sinclair)
1982
- Artic Computing / Sinclair
+ Sinclair
@@ -2101,7 +2113,7 @@ Run on TC 2048 or ZX Spectrum
Adventure C: The Ship of Doom (set 2, Sinclair)
1982
- Artic Computing / Sinclair
+ Sinclair
@@ -5007,7 +5019,7 @@ no loading screen, no custom loader
- Bobby Carrot (set 1, v1.01, 128k)
+ Bobby Carrot (set 1, v1.01, 128K)
2018
Aleksey Golubtsov
@@ -5018,7 +5030,7 @@ no loading screen, no custom loader
- Bobby Carrot (set 2, v1.01, 128k)
+ Bobby Carrot (set 2, v1.01, 128K)
2018
Aleksey Golubtsov
@@ -5029,7 +5041,7 @@ no loading screen, no custom loader
- Bobby Carrot (set 3, v1.01, 48k)
+ Bobby Carrot (set 3, v1.01, 48K)
2018
Aleksey Golubtsov
@@ -5040,7 +5052,7 @@ no loading screen, no custom loader
- Bobby Carrot (set 4, v1.01, 48k)
+ Bobby Carrot (set 4, v1.01, 48K)
2018
Aleksey Golubtsov
@@ -5140,7 +5152,7 @@ no loading screen, no custom loader
- Bomberman(demo, v03)
+ Bomberman (demo, v03)
2016
Cristian Gonzalez
@@ -5604,6 +5616,66 @@ no loading screen, no custom loader
+
+ Cocoa and the Time Machine (128K, English)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+ Cocoa and the Time Machine (128K, Spanish)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+ Cocoa and the Time Machine (48K, English)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+ Cocoa and the Time Machine (48K, Portuguese)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+ Cocoa and the Time Machine (48K, Spanish)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
Con-Quest
@@ -8018,10 +8090,11 @@ no loading screen, no custom loader
- Dr Doom's Revenge! (Proein) (Spanish)
+ Dr Doom's Revenge! (Proein)
1989
Proein Soft Line
+
@@ -8052,7 +8125,7 @@ no loading screen, no custom loader
- Dragon Slayer (Martin Freemantle, 128k)
+ Dragon Slayer (Martin Freemantle, 128K)
1992
Dream World Adventures / Martin Freemantle
@@ -8063,7 +8136,7 @@ no loading screen, no custom loader
- Dragon Slayer (Martin Freemantle, 48k, single sided)
+ Dragon Slayer (Martin Freemantle, 48K, single sided)
1992
Dream World Adventures / Martin Freemantle
@@ -8074,7 +8147,7 @@ no loading screen, no custom loader
- Dragon Slayer (Martin Freemantle, 48k, double sided)
+ Dragon Slayer (Martin Freemantle, 48K, double sided)
1992
Dream World Adventures / Martin Freemantle
@@ -9329,7 +9402,7 @@ no loading screen, no custom loader
- Double Bubble (set 1, 128k, Music Version)
+ Double Bubble (set 1, 128K, Music Version)
2016
Miguetelo
@@ -9340,7 +9413,7 @@ no loading screen, no custom loader
- Double Bubble (set 2, 128k, Music Version)
+ Double Bubble (set 2, 128K, Music Version)
2016
Miguetelo
@@ -9351,7 +9424,7 @@ no loading screen, no custom loader
- Double Bubble (set 3, 48k)
+ Double Bubble (set 3, 48K)
2016
Miguetelo
@@ -9362,7 +9435,7 @@ no loading screen, no custom loader
- Double Bubble (set 4, 48k)
+ Double Bubble (set 4, 48K)
2016
Miguetelo
@@ -9373,7 +9446,7 @@ no loading screen, no custom loader
- Dead Flesh Boy (set 1, v2)
+ Dead Flesh Boy (v2, TZX tape image)
2015
Vanbsoftware
@@ -9384,7 +9457,7 @@ no loading screen, no custom loader
- Dead Flesh Boy (set 2, v2)
+ Dead Flesh Boy (v2, TAP tape image)
2015
Vanbsoftware
@@ -9395,7 +9468,7 @@ no loading screen, no custom loader
- Dead Flesh Boy (set 3, v1)
+ Dead Flesh Boy (v1)
2015
Vanbsoftware
@@ -9406,7 +9479,7 @@ no loading screen, no custom loader
- Dead Flesh Boy (set 4, v1, no loading screen)
+ Dead Flesh Boy (v1, no loading screen)
2015
Vanbsoftware
@@ -10158,7 +10231,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Fairlight (128k)
+ Fairlight (128K)
1985
The Edge
@@ -10169,7 +10242,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Fairlight (48k, Release 1)
+ Fairlight (48K, release 1)
1985
The Edge
@@ -10180,7 +10253,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Fairlight (48k, Release 2)
+ Fairlight (48K, release 2)
1985
The Edge
@@ -10202,7 +10275,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Fairlight II (128k)
+ Fairlight II (128K)
1986
The Edge
@@ -10213,7 +10286,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Fairlight II (48k)
+ Fairlight II (48K)
1986
The Edge
@@ -11511,30 +11584,29 @@ Expects you to press a key after the title screen appears, or it will miss the n
-
-
- Game Over (Imagine)
- 1987
- Dinamic / Imagine
+ Game Over (Spanish, small orange case)
+ 1988
+ Dinamic
+
-
-
+
+
-
-
+
+
Game Over (Summit)
- 19??
- Dinamic / Summit
+ 1987
+ Summit Software
@@ -11551,8 +11623,9 @@ Expects you to press a key after the title screen appears, or it will miss the n
Game Over (Spanish, black small cassette / black case)
- 19??
+ 1987
Dinamic
+
@@ -11568,19 +11641,19 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Game Over (Spanish, small orange case)
- 19??
- Dinamic
+ Game Over (Imagine)
+ 1987
+ Imagine
-
-
+
+
-
-
+
+
@@ -11601,7 +11674,6 @@ Expects you to press a key after the title screen appears, or it will miss the n
-
Ghosts 'n Goblins (set 1)
1986
@@ -11664,7 +11736,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Ghostbusters (set 1, 128k)
+ Ghostbusters (set 1, 128K)
1984
Activision
@@ -11675,7 +11747,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Ghostbusters (set 2, 128k)
+ Ghostbusters (set 2, 128K)
1984
Activision
@@ -11686,7 +11758,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Ghostbusters (set 1, 48k)
+ Ghostbusters (set 1, 48K)
1984
Activision
@@ -11697,7 +11769,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Ghostbusters (set 2, 48k)
+ Ghostbusters (set 2, 48K)
1984
Activision
@@ -13339,9 +13411,9 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Hacker (set 5, 128k)
- 19??
- <unknown>
+ Hacker (set 5, 128K)
+ 1985
+ Activision
@@ -13350,9 +13422,9 @@ Expects you to press a key after the title screen appears, or it will miss the n
- Hacker (set 6, 48k)
- 19??
- <unknown>
+ Hacker (set 6, 48K)
+ 1985
+ Activision
@@ -13371,8 +13443,6 @@ Expects you to press a key after the title screen appears, or it will miss the n
-
-
Hacker 2
1987
@@ -13905,6 +13975,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
The Hobbit (Vah-ka's Cut) (English, TZX tape image)
2013
The Mojon Twins
+
@@ -13916,6 +13987,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
The Hobbit (Vah-ka's Cut) (English, TAP tape image)
2013
The Mojon Twins
+
@@ -13927,6 +13999,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
El Hobbit (Vah-ka's Cut) (Spanish, TZX tape image)
2013
The Mojon Twins
+
@@ -13938,6 +14011,7 @@ Expects you to press a key after the title screen appears, or it will miss the n
El Hobbit (Vah-ka's Cut) (Spanish, TAP tape image)
2013
The Mojon Twins
+
@@ -14030,6 +14104,17 @@ Expects you to press a key after the title screen appears, or it will miss the n
Inspector Gadget and the Circus of Fear
1987
+ Melbourne House
+
+
+
+
+
+
+
+
+ Inspector Gadget and the Circus of Fear (Erbe)
+ 1987
Erbe Software
@@ -16364,11 +16449,13 @@ Side B: Laser Shoot (original release)
Unreleased original 1987 version of Cozumel by Samusoft, freebie for Spanish Retro Gamer subscribers.
Later reissued by Matra in 2015 without the Retro Gamer branding.
-->
- La Diosa de Cozumel (Samusoft, Retro Gamer)
+ La Diosa de Cozumel (Retro Gamer edition)
2013
- Axel Springer / Matra
+ Axel Springer / Matra Computer Automations
+
-
+
+
@@ -16376,6 +16463,21 @@ Side B: Laser Shoot (original release)
+
+ La Diosa de Cozumel (Matra edition)
+ 2015
+ Matra Computer Automations
+
+
+
+
+
+
+
+
+
+
+
Little Puff
1989
@@ -17470,7 +17572,7 @@ Side B: Laser Shoot (original release)
- Microprose Soccer (Release 2 - 128k)
+ Microprose Soccer (release 2 - 128K)
1989
MicroProse Software
@@ -17488,7 +17590,7 @@ Side B: Laser Shoot (original release)
- Microprose Soccer (Release 2 - 48k)
+ Microprose Soccer (release 2 - 48K)
1989
MicroProse Software
@@ -17506,7 +17608,7 @@ Side B: Laser Shoot (original release)
- Microprose Soccer (Release 1)
+ Microprose Soccer (release 1)
1989
MicroProse Software
@@ -17526,7 +17628,7 @@ Side B: Laser Shoot (original release)
Microprose Soccer (Kixx)
1989
- MicroProse Software Ltd / Kixx
+ Kixx
@@ -17628,7 +17730,7 @@ Side B: Laser Shoot (original release)
- More Tea Vicar (128k version)
+ More Tea Vicar (128K version)
2012
Cronosoft
@@ -17639,7 +17741,7 @@ Side B: Laser Shoot (original release)
- More Tea Vicar (48k version)
+ More Tea Vicar (48K version)
2012
Cronosoft
@@ -18848,6 +18950,7 @@ Side B: Laser Shoot (original release)
Maritrini, Freelance Monster Slayer en: Las Increibles Vicisitudes de Despertarse Resacosa con Fred en la Cama y Tener que Llegar Mas o Menos Puntual a la Prueba de "Monstruos Vigorosos de Pechos Lustrosos" featuring Los Fratelli (English, set 1)
2012
The Mojon Twins
+
@@ -18859,6 +18962,7 @@ Side B: Laser Shoot (original release)
Maritrini, Freelance Monster Slayer en: Las Increibles Vicisitudes de Despertarse Resacosa con Fred en la Cama y Tener que Llegar Mas o Menos Puntual a la Prueba de "Monstruos Vigorosos de Pechos Lustrosos" featuring Los Fratelli (English, set 2)
19??
<unknown>
+
@@ -18870,6 +18974,7 @@ Side B: Laser Shoot (original release)
Maritrini, Freelance Monster Slayer en: Las Increibles Vicisitudes de Despertarse Resacosa con Fred en la Cama y Tener que Llegar Mas o Menos Puntual a la Prueba de "Monstruos Vigorosos de Pechos Lustrosos" featuring Los Fratelli (Spanish, set 1)
2012
The Mojon Twins
+
@@ -18881,6 +18986,7 @@ Side B: Laser Shoot (original release)
Maritrini, Freelance Monster Slayer en: Las Increibles Vicisitudes de Despertarse Resacosa con Fred en la Cama y Tener que Llegar Mas o Menos Puntual a la Prueba de "Monstruos Vigorosos de Pechos Lustrosos" featuring Los Fratelli (Spanish, set 2)
2012
The Mojon Twins
+
@@ -19143,9 +19249,9 @@ Side B: Laser Shoot (original release)
- Mysterious Dimensions
- 19??
- <unknown>
+ Mysterious Dimensions (128K)
+ 2016
+ Hooy-Program
@@ -19153,8 +19259,19 @@ Side B: Laser Shoot (original release)
+
+ Mysterious Dimensions (48K)
+ 2016
+ Hooy-Program
+
+
+
+
+
+
+
- Mystery (set 1, 128k version)
+ Mystery (128K version)
2014
kas29
@@ -19165,7 +19282,7 @@ Side B: Laser Shoot (original release)
- Mystery (set 2, 48k version)
+ Mystery (48K version)
2014
kas29
@@ -19211,6 +19328,7 @@ Side B: Laser Shoot (original release)
Nonamed
1989
Mastertronic
+
@@ -19222,6 +19340,7 @@ Side B: Laser Shoot (original release)
Nonamed (Spanish, medium case)
1987
Dinamic Software
+
@@ -19233,6 +19352,7 @@ Side B: Laser Shoot (original release)
Nonamed (Spanish, medium case, alt)
1987
Dinamic Software
+
@@ -19244,6 +19364,7 @@ Side B: Laser Shoot (original release)
Nonamed (Spanish, small orange case)
1988
Dinamic Software
+
@@ -19255,6 +19376,7 @@ Side B: Laser Shoot (original release)
Nonamed (Spanish, small case - black spine)
1988
Dinamic Software
+
@@ -19610,7 +19732,7 @@ Side B: Laser Shoot (original release)
- Nodes of Yesod (128k release)
+ Nodes of Yesod (128K release)
1985
Odin Computer Graphics Ltd
@@ -19621,7 +19743,7 @@ Side B: Laser Shoot (original release)
- Nodes of Yesod (48k release)
+ Nodes of Yesod (48K release)
1985
Odin Computer Graphics Ltd
@@ -20454,7 +20576,7 @@ Side B: Laser Shoot (original release)
- Outcast (set 1)
+ Outcast
1987
CRL Group
@@ -20465,9 +20587,9 @@ Side B: Laser Shoot (original release)
- Outcast (set 2)
- 19??
- <unknown>
+ Outcast (alt)
+ 1987
+ CRL Group
@@ -20476,9 +20598,10 @@ Side B: Laser Shoot (original release)
- Ole Toro (set 1, Spanish, medium case)
+ Ole, Toro (Spanish, medium case)
1986
Dinamic Software
+
@@ -20487,9 +20610,10 @@ Side B: Laser Shoot (original release)
- Ole Toro (set 2, English, Americana)
+ Ole, Toro (English, Americana)
1986
- Dinamic Software / Americana
+ Americana
+
@@ -20498,9 +20622,10 @@ Side B: Laser Shoot (original release)
- Ole Toro (set 3, English, Americana)
+ Ole, Toro (English, Americana, alt)
1986
- Dinamic Software / Americana
+ Americana
+
@@ -21055,9 +21180,9 @@ Side B: Laser Shoot (original release)
- The Pyramid (GI Games)
+ The Pyramid (G.I. Games)
1986
- Walter Pooley (GI Games license)
+ Walter Pooley (G.I. Games license)
@@ -21325,7 +21450,7 @@ Side B: Laser Shoot (original release)
Pyracurse (Rack-It)
1986
- Hewson Consultants Ltd / Rack-It
+ Rack-It
@@ -21957,7 +22082,7 @@ Side B: Laser Shoot (original release)
- Pud Pud (set 1)
+ Pud Pud
1984
Ocean
@@ -21967,10 +22092,10 @@ Side B: Laser Shoot (original release)
-
- Pud Pud (set 2, Americana)
- 19??
- <unknown>
+
+ Pud Pud (Americana)
+ 1986
+ Americana Software
@@ -21978,10 +22103,10 @@ Side B: Laser Shoot (original release)
-
- Pud Pud (set 3)
- 19??
- <unknown>
+
+ Pud Pud (alt)
+ 1984
+ Ocean
@@ -21989,8 +22114,8 @@ Side B: Laser Shoot (original release)
-
- Pud Pud (set 4, loading screen hack)
+
+ Pud Pud (loading screen hack)
19??
hack
@@ -22000,6 +22125,16 @@ Side B: Laser Shoot (original release)
+
+ Pud Pud (Zafi Chip)
+ 1985
+ hack
+
+
+
+
+
+
The Prodigy (set 1)
@@ -22184,7 +22319,7 @@ Side B: Laser Shoot (original release)
- Phantomasa 2: In the Land of the Grunge Wizards (128k version, v2.0)
+ Phantomasa 2: In the Land of the Grunge Wizards (128K version, v2.0)
2006
Computer Emuzone
@@ -22196,7 +22331,7 @@ Side B: Laser Shoot (original release)
- Phantomasa 2: In the Land of the Grunge Wizards (48k version, v2.0)
+ Phantomasa 2: In the Land of the Grunge Wizards (48K version, v2.0)
2006
Computer Emuzone
@@ -23286,6 +23421,28 @@ Side B: Laser Shoot (original release)
+
+ Rival Gang
+ 2021
+ Presh
+
+
+
+
+
+
+
+
+ Rival Gang EXT (demo)
+ 2022
+ Presh
+
+
+
+
+
+
+
River Raid
1984
@@ -23300,7 +23457,7 @@ Side B: Laser Shoot (original release)
River Raid (Firebird)
1984
- Activision Inc / Firebird
+ Firebird
@@ -23322,7 +23479,7 @@ Side B: Laser Shoot (original release)
Rescue On Fractalus (set 2, Mastertronic)
1986
- Activision Inc / Mastertronic
+ Mastertronic
@@ -23332,8 +23489,8 @@ Side B: Laser Shoot (original release)
Rescue On Fractalus (set 3)
- 19??
- <unknown>
+ 1986
+ Activision
@@ -23341,7 +23498,6 @@ Side B: Laser Shoot (original release)
-
Rampage
1988
@@ -24138,9 +24294,10 @@ Side B: Laser Shoot (original release)
- Ramiro, The Vampire (set 1, English)
+ Ramiro, The Vampire (English, TZX tape image)
2013
The Mojon Twins
+
@@ -24154,9 +24311,10 @@ Side B: Laser Shoot (original release)
- Ramiro, The Vampire (set 2, English)
+ Ramiro, The Vampire (English, TAP tape image)
2013
The Mojon Twins
+
@@ -24170,9 +24328,10 @@ Side B: Laser Shoot (original release)
- Ramire, El Vampire (set 1, Spanish)
+ Ramire, El Vampire (Spanish, TZX tape image)
2013
The Mojon Twins
+
@@ -24186,9 +24345,10 @@ Side B: Laser Shoot (original release)
- Ramire, El Vampire (set 2, Spanish)
+ Ramire, El Vampire (Spanish, TAP tape image)
2013
The Mojon Twins
+
@@ -24205,6 +24365,7 @@ Side B: Laser Shoot (original release)
Ramiro El Vampiro Revamp (English)
2016
The Mojon Twins
+
@@ -24226,6 +24387,7 @@ Side B: Laser Shoot (original release)
Ramiro El Vampiro Revamp (Spanish)
2016
The Mojon Twins
+
@@ -24247,6 +24409,7 @@ Side B: Laser Shoot (original release)
Ramiro El Vampiro Revamp (Spanish/English, double sided tape, TZX tape image)
2016
The Mojon Twins
+
@@ -24263,6 +24426,7 @@ Side B: Laser Shoot (original release)
Ramiro El Vampiro Revamp (Spanish/English, double sided tape, WAV tape image)
2016
The Mojon Twins
+
@@ -24287,7 +24451,7 @@ Side B: Laser Shoot (original release)
- Robots Rumble (set 1)
+ Robots Rumble (TZX tape image)
2018
Miguetelo
@@ -24298,7 +24462,7 @@ Side B: Laser Shoot (original release)
- Robots Rumble (set 2)
+ Robots Rumble (TAP tape image)
2018
Miguetelo
@@ -24312,6 +24476,7 @@ Side B: Laser Shoot (original release)
Rabbit in Nightmareland
2015
Javier Fopiani
+
@@ -24320,9 +24485,10 @@ Side B: Laser Shoot (original release)
- Rabbit in Wonderland (128k, English/Spanish)
+ Rabbit in Wonderland (128K, English/Spanish)
2015
Javier Fopiani
+
@@ -24330,10 +24496,11 @@ Side B: Laser Shoot (original release)
-
- Rabbit in Wonderland (48k, Spanish)
+
+ Rabbit in Wonderland (48K, Spanish)
2015
Javier Fopiani
+
@@ -24341,10 +24508,11 @@ Side B: Laser Shoot (original release)
-
- Rabbit in Wonderland (48k, English)
+
+ Rabbit in Wonderland (48K, English)
2015
Javier Fopiani
+
@@ -24356,6 +24524,7 @@ Side B: Laser Shoot (original release)
Red Planet (English)
2015
salvaKantero
+
@@ -24367,6 +24536,7 @@ Side B: Laser Shoot (original release)
Red Planet (Spanish)
2015
salvaKantero
+
@@ -27252,30 +27422,30 @@ Side B: Laser Shoot (original release)
-
- Sgrizam (set 2, Americana)
+
+ Sgrizam (medium case)
1986
- Americana
+ Dinamic Software
-
-
+
+
-
- Sgrizam (set 3, medium case)
+
+ Sgrizam (Americana)
1986
- Dinamic Software
+ Americana
-
-
+
+
-
- Sgrizam (set 4, Americana)
+
+ Sgrizam (Americana, alt)
1986
Americana
@@ -27287,8 +27457,8 @@ Side B: Laser Shoot (original release)
Samantha Fox Strip Poker (set 1, 128K, with 7 Card Stud)
- 19??
- <unknown>
+ 1986
+ Martech Games
@@ -27357,8 +27527,8 @@ Side B: Laser Shoot (original release)
Samantha Fox Strip Poker (set 6, 48K, with 7 Card Stud)
- 19??
- <unknown>
+ 1986
+ Martech Games
@@ -27537,31 +27707,34 @@ Side B: Laser Shoot (original release)
- Sgt. Helmet Training Day (set 1, English)
+ Sgt. Helmet Training Day (English, TZX tape image)
2013
The Mojon Twins
+
-
-
+
+
- Sgt. Helmet Training Day (set 2, English)
+ Sgt. Helmet Training Day (English, TAP tape image)
2013
The Mojon Twins
+
-
-
+
+
- Sgt. Helmet Training Day (set 3, Spanish)
+ Sgt. Helmet Training Day (Spanish, TAP tape image)
2013
The Mojon Twins
+
@@ -27570,9 +27743,10 @@ Side B: Laser Shoot (original release)
- Sgt. Helmet Training Day (set 4, Spanish)
+ Sgt. Helmet Training Day (Spanish, TZX tape image)
2013
The Mojon Twins
+
@@ -27707,7 +27881,7 @@ Side B: Laser Shoot (original release)
- Space Junk (set 1, 128k)
+ Space Junk (set 1, 128K)
2017
Miguetelo
@@ -27718,7 +27892,7 @@ Side B: Laser Shoot (original release)
- Space Junk (set 2, 128k)
+ Space Junk (set 2, 128K)
2017
Miguetelo
@@ -27729,7 +27903,7 @@ Side B: Laser Shoot (original release)
- Space Junk (set 3, 48k)
+ Space Junk (set 3, 48K)
2017
Miguetelo
@@ -27740,7 +27914,7 @@ Side B: Laser Shoot (original release)
- Space Junk (set 4, 48k)
+ Space Junk (set 4, 48K)
2017
Miguetelo
@@ -27751,7 +27925,7 @@ Side B: Laser Shoot (original release)
- Sewer Rage (set 1, 128k)
+ Sewer Rage (set 1, 128K)
2016
The Death Squad
@@ -27762,7 +27936,7 @@ Side B: Laser Shoot (original release)
- Sewer Rage (set 2, 48k)
+ Sewer Rage (set 2, 48K)
2016
The Death Squad
@@ -27773,9 +27947,10 @@ Side B: Laser Shoot (original release)
- Sir Froggy (set 1, English)
+ Sir Froggy (English)
2014
Lubiterum Studio
+
@@ -27784,9 +27959,10 @@ Side B: Laser Shoot (original release)
- Sir Froggy (set 2, Spanish)
+ Sir Froggy (Spanish)
2014
Lubiterum Studio
+
@@ -28555,7 +28731,7 @@ Side B: Laser Shoot (original release)
Terramex
1987
- Grandslam Entertainments Ltd
+ Grandslam Entertainments
@@ -28566,7 +28742,7 @@ Side B: Laser Shoot (original release)
Terramex (Bug-Byte Premier)
1987
- Grandslam Entertainments Ltd / Bug-Byte Premier
+ Bug-Byte Premier
@@ -28577,7 +28753,7 @@ Side B: Laser Shoot (original release)
Terramex (Quicksilva)
1987
- Grandslam Entertainments Ltd / Quicksilva
+ Quicksilva
@@ -28585,6 +28761,17 @@ Side B: Laser Shoot (original release)
+
+ Terrapins (demo)
+ 2017
+ Allan Turvey
+
+
+
+
+
+
+
Tempest
1987
@@ -29002,7 +29189,7 @@ Side B: Laser Shoot (original release)
Through The Trap Door (Alternative)
1987
- Piranha / Alternative
+ Alternative
@@ -30656,8 +30843,8 @@ Side B: Laser Shoot (original release)
Xarq (set 2)
- 19??
- <unknown>
+ 1986
+ Electric Dreams
@@ -30665,11 +30852,11 @@ Side B: Laser Shoot (original release)
-
Xelda 1: Quest for the Golden Apple (set 1, English, ver 1.03)
2017
Andrew Dansby
+
@@ -30681,6 +30868,7 @@ Side B: Laser Shoot (original release)
Xelda 1: Quest for the Golden Apple (set 2, English, ver 1.03a)
2017
Andrew Dansby
+
@@ -30692,6 +30880,7 @@ Side B: Laser Shoot (original release)
Xelda 1: Quest for the Golden Apple (set 3, Russian, ver 1.03a)
2017
Andrew Dansby
+
@@ -30703,6 +30892,7 @@ Side B: Laser Shoot (original release)
Xelda 1: Quest for the Golden Apple (set 4, Russian, ver 1.03a)
2017
Andrew Dansby
+
@@ -30714,6 +30904,7 @@ Side B: Laser Shoot (original release)
Xelda 1: Quest for the Golden Apple (set 5, Spanish, ver 1.03a)
2017
Andrew Dansby
+
@@ -43028,10 +43219,8 @@ Side B: Once Upon a Lily Pad
-
-
- ACE 2 (set 1, 128k + 48k release)
+ ACE 2 (set 1, 128K + 48K release)
1987
Cascade Games
@@ -43047,7 +43236,7 @@ Side B: Once Upon a Lily Pad
- ACE 2 (set 2, 128k + 48k release, Game Busters)
+ ACE 2 (set 2, 128K + 48K release, Game Busters)
1987
Gamebusters
@@ -43427,24 +43616,102 @@ Side B: Once Upon a Lily Pad
-
- Ad Astra (Rebound)
+
+ Ad Astra
1984
Gargoyle Games
-
+
-
- Ad Astra
+
+ Ad Astra (Rebound)
1984
- Gargoyle Games
+ Rebound
-
+
+
+
+
+
+
+ Ad Lunam (English)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+ Ad Lunam (Italian)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+ Ad Lunam (Spanish)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+ Ad Lunam Plus (English)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+ Ad Lunam Plus (Italian)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+ Ad Lunam Plus (Spanish)
+ 2021
+ Zankle Soft
+
+
+
+
+
@@ -44610,6 +44877,30 @@ Side B: Once Upon a Lily Pad
+
+ Alien Girl (demo, English)
+ 2020
+ Javier Fopiani
+
+
+
+
+
+
+
+
+
+ Alien Girl (demo, Spanish)
+ 2020
+ Javier Fopiani
+
+
+
+
+
+
+
+
Alien Insects
1983
@@ -45754,7 +46045,8 @@ Side B: Once Upon a Lily Pad
Another Brick on the Wall 2 (English version)
2005
- Compiler
+ Compiler Software
+
@@ -45764,8 +46056,9 @@ Side B: Once Upon a Lily Pad
Another Brick On The Wall 2 (Spanish version)
- 19??
- <unknown>
+ 2005
+ Compiler Software
+
@@ -46124,10 +46417,139 @@ Side B: Once Upon a Lily Pad
-
- Apulija-13 v1.1 - English
+
+ Apulija-13 (v2.1, English)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v2.1, German)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v2.1, French)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v2.1, Italian)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v2.1, Portuguese)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v2.1, Spanish)
+ 2021
+ Zankle Soft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v2.1, English, extra)
+ 2021
+ Zankle Soft
+ To access to the extra part, you will need a secret code that will be revealed if you complete the game.
+
+
+
+
+
+
+
+
+
+
+ Apulija-13 (v1.1, English)
2013
Alessandro Grussu
+
@@ -46135,10 +46557,11 @@ Side B: Once Upon a Lily Pad
-
- Apulija-13 v1.1 - German
- 19??
- <unknown>
+
+ Apulija-13 (v1.1, German)
+ 2013
+ Alessandro Grussu
+
@@ -46146,10 +46569,11 @@ Side B: Once Upon a Lily Pad
-
- Apulija-13 v1.1 - Italian
- 19??
- <unknown>
+
+ Apulija-13 (v1.1, Italian)
+ 2013
+ Alessandro Grussu
+
@@ -46157,10 +46581,11 @@ Side B: Once Upon a Lily Pad
-
- Apulija-13 v1.1 - Spanish
- 19??
- <unknown>
+
+ Apulija-13 (v1.1, Spanish)
+ 2013
+ Alessandro Grussu
+
@@ -46168,10 +46593,11 @@ Side B: Once Upon a Lily Pad
-
- Apulija-13 v1.2 - English
- 19??
- <unknown>
+
+ Apulija-13 (v1.2, English)
+ 2013
+ Alessandro Grussu
+
@@ -49226,7 +49652,7 @@ Side B: Once Upon a Lily Pad
-
+
Baron Rojo (Zafiro)
1983
Zafi Chip
@@ -49428,6 +49854,7 @@ Side B: Once Upon a Lily Pad
Bathyscaphe (set 1, English)
2015
Red Triangle
+
@@ -49439,6 +49866,7 @@ Side B: Once Upon a Lily Pad
Bathyscaphe (set 2, Spanish)
2015
Red Triangle
+
@@ -53912,7 +54340,7 @@ Side B: Once Upon a Lily Pad
- The Base (Adventure Workshop) - 128k
+ The Base (Adventure Workshop, 128K)
19??
<unknown>
@@ -53923,7 +54351,7 @@ Side B: Once Upon a Lily Pad
- The Base - 48k (set 2)
+ The Base (set 2, 48K)
1988
The Guild
@@ -53934,7 +54362,7 @@ Side B: Once Upon a Lily Pad
- The Base - 128k
+ The Base (128K)
1988
The Guild
@@ -53945,7 +54373,7 @@ Side B: Once Upon a Lily Pad
- The Base - 48k
+ The Base (48K)
19??
<unknown>
@@ -57611,7 +58039,7 @@ Side B: Once Upon a Lily Pad
- Chuck Yeager's Advanced Flight Trainer - 128k
+ Chuck Yeager's Advanced Flight Trainer (128K)
1989
Electronic Arts
@@ -57622,7 +58050,7 @@ Side B: Once Upon a Lily Pad
- Chuck Yeager's Advanced Flight Trainer - 48k
+ Chuck Yeager's Advanced Flight Trainer (48K)
19??
<unknown>
@@ -57880,6 +58308,7 @@ Side B: Once Upon a Lily Pad
City Lander (Spanish)
1983
Sinclair User
+
@@ -62563,25 +62992,26 @@ Side A doesn't work.
-
- Cybotron (Spanish)
+ Cybotron
1983
- Ventamatic
+ Micromania
+
-
-
+
+
- Cybotron
- 19??
- <unknown>
+ Cybotron (Spanish)
+ 1983
+ Ventamatic
+
-
-
+
+
@@ -65597,21 +66027,21 @@ Side A doesn't work.
-
- Demon's Revenge (MCM)
+
+ Demon's Dream
1988
- MCM Software
+ Redefine Keys
-
-
+
+
-
+
Demon's Revenge
- 19??
- <unknown>
+ 1988
+ Firebird Software
@@ -65619,6 +66049,17 @@ Side A doesn't work.
+
+ Demon's Revenge (MCM)
+ 1988
+ MCM Software
+
+
+
+
+
+
+
Denis Through The Drinking Glass (set 3)
1983
@@ -65664,7 +66105,7 @@ Side A doesn't work.
- Denizen (128k)
+ Denizen (128K)
1988
Players
@@ -65675,7 +66116,7 @@ Side A doesn't work.
- Denizen (48k)
+ Denizen (48K)
1988
Players
@@ -65773,6 +66214,21 @@ Side A doesn't work.
+
+ Desdobramentos de Totobola
+ 198?
+ Astor Software
+
+
+
+
+
+
+
+
+
+
+
Desensamblador (Investronica)
1982
@@ -67902,7 +68358,7 @@ Side A doesn't work.
- Dr. Franky And The Monster
+ Dr. Franky and the Monster
1984
Virgin Games
@@ -68526,7 +68982,7 @@ Side A doesn't work.
- Dream Walker v1.0 - 128k - Simple Loader
+ Dream Walker (v1.0, 128K - simple loader)
19??
<unknown>
@@ -68537,7 +68993,7 @@ Side A doesn't work.
- Dream Walker v1.0 - 128k
+ Dream Walker (v1.0, 128K)
19??
<unknown>
@@ -68548,7 +69004,7 @@ Side A doesn't work.
- Dream Walker v1.0 - 48k
+ Dream Walker (v1.0, 48K)
19??
<unknown>
@@ -68559,7 +69015,7 @@ Side A doesn't work.
- Dream Walker v1.1 - 128k
+ Dream Walker (v1.1, 128K)
19??
<unknown>
@@ -68570,7 +69026,7 @@ Side A doesn't work.
- Dream Walker v1.1 - 48k
+ Dream Walker (v1.1, 48K)
19??
<unknown>
@@ -69224,7 +69680,7 @@ Side A doesn't work.
Dynamic Graphics
1983
- Procom
+ Procom Software
@@ -69244,8 +69700,9 @@ Side A doesn't work.
Dynamic Graphics (Spanish)
- 19??
- <unknown>
+ 1983
+ Procom Software
+
@@ -71525,7 +71982,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
- Endzone - 48k
+ Endzone (48K)
1991
Sport-Sim
@@ -73446,7 +73903,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
- The Energem Enigma (GI Games)
+ The Energem Enigma (G.I. Games)
1990
G.I. Games
@@ -73589,7 +74046,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
- The Extricator (GI Games)
+ The Extricator (G.I. Games)
1991
G.I. Games
@@ -73765,7 +74222,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
- Faerie (GI Games)
+ Faerie (G.I. Games)
1985
G.I. Games
@@ -75158,7 +75615,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
Flappy Bird ZX
2014
- Rafal Miazga - Aleksandr Rostunov
+ Rafal Miazga / Aleksandr Rostunov
@@ -75648,7 +76105,7 @@ Side B - Game 1: The Dragonstar Trilogy Part III (Delta 4 Software)
- Football Director - 2 Player Super League (set 2, 128k)
+ Football Director - 2 Player Super League (set 2, 128K)
1986
D&H Games
@@ -83477,6 +83934,28 @@ Tape 1 - Side B:
+
+ Hakkenkast - The Demo Dungeon (128K)
+ 2022
+ Minilop Retroware
+
+
+
+
+
+
+
+
+ Hakkenkast - The Demo Dungeon (48K)
+ 2022
+ Minilop Retroware
+
+
+
+
+
+
+
Halley
1985
@@ -86347,7 +86826,7 @@ Tape 2: Hero Quest: Return of the Witch Lord
- H.R.H. - Her Royal Highness (GI Games)
+ H.R.H. - Her Royal Highness (G.I. Games)
1986
G.I. Games
@@ -86357,7 +86836,6 @@ Tape 2: Hero Quest: Return of the Witch Lord
-
HS-Compiler v1.1 (Aackosoft)
19??
@@ -87616,9 +88094,9 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
- Implosion (set 1, 128k & 48k)
+ Implosion (set 1, 128K & 48K)
1987
- Cascade Games Ltd
+ Cascade Games
@@ -87634,7 +88112,7 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
Implosion (set 2, Alternative)
1987
- Cascade Games Ltd / Alternative
+ Alternative
@@ -87645,7 +88123,7 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
Implosion (set 3, System 4)
1987
- Cascade Games Ltd / System 4
+ System 4
@@ -87686,6 +88164,17 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
+
+ Impossabubble
+ 2018
+ Dave Clarke
+
+
+
+
+
+
+
Impossamole
1990
@@ -88289,6 +88778,23 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
+
+ Insert Coins II
+ 2009
+ OCTOCOM
+
+
+
+
+
+
+
+
+
+
+
+
+
Inside Outing - Double Case (Dro Soft)
1988
@@ -89583,7 +90089,6 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
-
Itemiada
1985
@@ -89595,7 +90100,6 @@ Game 7: What's Your Name? Simulator (S.H. Eye-Tea Productions, 1994)
-
It's Only Rock 'n' Roll
1983
@@ -92668,7 +93172,7 @@ Created by Mark Jeffries
The Jewels of Honour (set 2, Global)
1990
- Fantasy Leagues / Global Games
+ Global Games
@@ -92684,7 +93188,7 @@ Created by Mark Jeffries
The Jewels of Honour (set 3, Global)
1990
- Fantasy Leagues / Global Games
+ Global Games
@@ -92697,8 +93201,6 @@ Created by Mark Jeffries
-
-
The Journey
1985
@@ -94354,23 +94856,23 @@ Created by Mark Jeffries
- The Key To Time (Sentient)
+ The Key To Time
1984
- Sentient
+ Lumpsoft
-
-
+
+
- The Key To Time
- 19??
- <unknown>
+ The Key To Time (Sentient)
+ 1984
+ Sentient Software
-
-
+
+
@@ -94388,8 +94890,8 @@ Created by Mark Jeffries
The Khangrin Plans
- 19??
- <unknown>
+ 1992
+ Zenobi Software
@@ -97592,7 +98094,7 @@ Lacks game introduction, bad dump or alternate version?
Los Amores de Brunilda (v1.4, English)
2014
- Retroworks
+ RetroWorks
@@ -97605,7 +98107,7 @@ Lacks game introduction, bad dump or alternate version?
Los Amores de Brunilda (v1.4, Spanish)
2014
- Retroworks
+ RetroWorks
@@ -97615,11 +98117,11 @@ Lacks game introduction, bad dump or alternate version?
-
+
Los Amores de Brunilda (v1.4, Galician)
2014
- Retroworks
-
+ RetroWorks
+
@@ -97628,11 +98130,11 @@ Lacks game introduction, bad dump or alternate version?
-
+
Los Amores de Brunilda (v1.4, Catalan)
2014
- Retroworks
-
+ RetroWorks
+
@@ -97641,11 +98143,11 @@ Lacks game introduction, bad dump or alternate version?
-
+
Los Amores de Brunilda (v1.4, Catalan, alt)
2014
- Retroworks
-
+ RetroWorks
+
@@ -97654,11 +98156,11 @@ Lacks game introduction, bad dump or alternate version?
-
+
Los Amores de Brunilda (v1.4, Basque)
2014
- Retroworks
-
+ RetroWorks
+
@@ -97670,7 +98172,7 @@ Lacks game introduction, bad dump or alternate version?
Los Amores de Brunilda (v1.4, Italian)
2014
- Retroworks
+ RetroWorks
@@ -97683,7 +98185,7 @@ Lacks game introduction, bad dump or alternate version?
Los Amores de Brunilda (v1.4, Russian)
2014
- Retroworks
+ RetroWorks
@@ -97853,7 +98355,7 @@ Lacks game introduction, bad dump or alternate version?
Los Tesoros Perdidos de Tulum (v1.1, Spanish)
2020
- Retroworks
+ RetroWorks
@@ -97865,7 +98367,7 @@ Lacks game introduction, bad dump or alternate version?
The Lost Treasures of Tulum (v1.0, English)
2020
- Retroworks
+ RetroWorks
@@ -97877,7 +98379,7 @@ Lacks game introduction, bad dump or alternate version?
Los Tesoros Perdidos de Tulum (v1.0, Spanish)
2020
- Retroworks
+ RetroWorks
@@ -97887,7 +98389,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 1, v2.0, 128K, English, turbo loader)
+ Lost In My Spectrum (v2.0, 128K, English, turbo loader)
2012
Alessandro Grussu
@@ -97899,7 +98401,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 2, v2.0, 128K, English)
+ Lost In My Spectrum (v2.0, 128K, English)
2012
Alessandro Grussu
@@ -97911,7 +98413,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 3, v2.0, 128K, German, turbo loader)
+ Lost In My Spectrum (v2.0, 128K, German, turbo loader)
2012
Alessandro Grussu
@@ -97923,7 +98425,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 4, v2.0, 128K, German)
+ Lost In My Spectrum (v2.0, 128K, German)
2012
Alessandro Grussu
@@ -97935,7 +98437,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 5, v2.0, 128K, Spanish, turbo loader)
+ Lost In My Spectrum (v2.0, 128K, Spanish, turbo loader)
2012
Alessandro Grussu
@@ -97947,7 +98449,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 6, v2.0, 128K, Spanish)
+ Lost In My Spectrum (v2.0, 128K, Spanish)
2012
Alessandro Grussu
@@ -97959,7 +98461,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 7, v2.0, 128K, French, turbo loader)
+ Lost In My Spectrum (v2.0, 128K, French, turbo loader)
2012
Alessandro Grussu
@@ -97971,7 +98473,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 8, v2.0, 128K, French)
+ Lost In My Spectrum (v2.0, 128K, French)
2012
Alessandro Grussu
@@ -97983,7 +98485,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 9, v2.0, 128K, Italian, turbo loader)
+ Lost In My Spectrum (v2.0, 128K, Italian, turbo loader)
2012
Alessandro Grussu
@@ -97995,7 +98497,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 10, v2.0, 128K, Italian)
+ Lost In My Spectrum (v2.0, 128K, Italian)
2012
Alessandro Grussu
@@ -98007,7 +98509,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 11, v2.0, 128K, Portuguese, turbo loader)
+ Lost In My Spectrum (v2.0, 128K, Portuguese, turbo loader)
2012
Alessandro Grussu
@@ -98019,7 +98521,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 12, v2.0, 128K, Portuguese)
+ Lost In My Spectrum (v2.0, 128K, Portuguese)
2012
Alessandro Grussu
@@ -98031,7 +98533,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 13, v2.0, 48K, English)
+ Lost In My Spectrum (v2.0, 48K, English)
2012
Alessandro Grussu
@@ -98043,7 +98545,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 14, v2.0, 48K, German)
+ Lost In My Spectrum (v2.0, 48K, German)
2012
Alessandro Grussu
@@ -98055,7 +98557,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 15, v2.0, 48K, Spanish)
+ Lost In My Spectrum (v2.0, 48K, Spanish)
2012
Alessandro Grussu
@@ -98067,7 +98569,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 16, v2.0, 48K, French)
+ Lost In My Spectrum (v2.0, 48K, French)
2012
Alessandro Grussu
@@ -98079,7 +98581,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 17, v2.0, 48K, Italian)
+ Lost In My Spectrum (v2.0, 48K, Italian)
2012
Alessandro Grussu
@@ -98091,7 +98593,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 18, v2.0, 48K, Portuguese)
+ Lost In My Spectrum (v2.0, 48K, Portuguese)
2012
Alessandro Grussu
@@ -98103,7 +98605,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 19, v1.3, English)
+ Lost In My Spectrum (v1.3, English)
2012
Alessandro Grussu
@@ -98115,7 +98617,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 20, v1.3, Italian)
+ Lost In My Spectrum (v1.3, Italian)
2012
Alessandro Grussu
@@ -98127,7 +98629,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 21, v1.2, English)
+ Lost In My Spectrum (v1.2, English)
2012
Alessandro Grussu
@@ -98139,7 +98641,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 22, v1.2, Italian)
+ Lost In My Spectrum (v1.2, Italian)
2012
Alessandro Grussu
@@ -98153,7 +98655,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 23, v1.0, English, 48K)
+ Lost In My Spectrum (v1.0, English, 48K)
2012
Alessandro Grussu
@@ -98165,7 +98667,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 24, v1.0, Italian, 48K)
+ Lost In My Spectrum (v1.0, Italian, 48K)
2012
Alessandro Grussu
@@ -98177,7 +98679,7 @@ Lacks game introduction, bad dump or alternate version?
- Lost In My Spectrum (set 25, v1.0, Italian, 128K)
+ Lost In My Spectrum (v1.0, Italian, 128K)
2012
Alessandro Grussu
@@ -98407,7 +98909,7 @@ Lacks game introduction, bad dump or alternate version?
L'Abbaye des Morts
2014
- Paolo Arus - Jerri
+ Paolo Arus / Jerri
@@ -98489,7 +98991,7 @@ Lacks game introduction, bad dump or alternate version?
The Labours of Hercules (set 3, Zenobi)
1987
- Terry Taylor / Zenobi
+ Zenobi Software
@@ -99704,6 +100206,7 @@ Lacks game introduction, bad dump or alternate version?
Magic Johnson's Basketball (Spanish)
1990
Dro Soft
+
@@ -100823,6 +101326,19 @@ Lacks game introduction, bad dump or alternate version?
+
+ Máquina do Poker
+ 1985
+ Astor Software
+
+
+
+
+
+
+
+
+
Marauder
1988
@@ -102545,6 +103061,19 @@ Nothing happens after loading the cassette
+
+ Melotron
+ 1985
+ Investronica
+
+
+
+
+
+
+
+
+
Meltdown (1984, Kerian)
1984
@@ -103406,8 +103935,8 @@ Nothing happens after loading the cassette
Micro Olympics / Olympic Spectacular (System 4)
- 19??
- <unknown>
+ 1987
+ System 4
@@ -103416,9 +103945,9 @@ Nothing happens after loading the cassette
- Micro Olympics / Olympic Spectacular
- 19??
- <unknown>
+ Micro Olympics / Olympic Spectacular (Alternative)
+ 1987
+ Alternative Software
@@ -103426,10 +103955,77 @@ Nothing happens after loading the cassette
-
+
+ Micro Olympics / Olympic Spectacular (Profisoft)
+ 1987
+ Profisoft
+
+
+
+
+
+
+
+
+ Micro Primer - Software Pack 1
+ 1983
+ Microelectronics Education Programme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Micro Primer - Software Pack 2
+ 1983
+ Microelectronics Education Programme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Micro Primer - Software Pack 3
- 19??
- <unknown>
+ 1983
+ Microelectronics Education Programme
@@ -103452,10 +104048,10 @@ Nothing happens after loading the cassette
-
+
Micro Primer - Software Pack 4
- 19??
- <unknown>
+ 1983
+ Microelectronics Education Programme
@@ -103534,23 +104130,23 @@ Nothing happens after loading the cassette
- Microball (System 4)
+ Microball
1988
- System 4
+ Alternative Software
-
-
+
+
- Microball
- 19??
- <unknown>
+ Microball (System 4)
+ 1988
+ System 4
-
-
+
+
@@ -103735,25 +104331,25 @@ Nothing happens after loading the cassette
- Microfair Madness (Zenobi)
+ Microfair Madness (128K, release 2)
1991
- Zenobi Software
+ Delbert the Hamster Software
-
-
+
+
-
-
+
+
- Microfair Madness - 128k - Release 1
- 19??
- <unknown>
+ Microfair Madness (128K, release 1)
+ 1991
+ Delbert the Hamster Software
@@ -103767,25 +104363,36 @@ Nothing happens after loading the cassette
- Microfair Madness - 128k - Release 2
- 19??
- <unknown>
+ Microfair Madness (Zenobi)
+ 1991
+ Zenobi Software
-
-
+
+
-
-
+
+
+
+
+
+
+
+ Microfair Madness (Zenobi, alt)
+ 1991
+ Zenobi Software
+
+
+
- Microfair Madness - 48k - Release 1
- 19??
- <unknown>
+ Microfair Madness (48K, release 1)
+ 1991
+ Delbert the Hamster Software
@@ -103799,9 +104406,9 @@ Nothing happens after loading the cassette
- Microfair Madness - 48k - Release 2
- 19??
- <unknown>
+ Microfair Madness (48K, release 2)
+ 1991
+ Delbert the Hamster Software
@@ -106867,7 +107474,7 @@ Nothing happens after loading the cassette
- Music Box (128k version, with 48k version)k
+ Music Box (128K version, with 48K version)
1986
Melbourne House
@@ -108169,8 +108776,19 @@ Nothing happens after loading the cassette
-
- Nato Assault (48k version)
+
+ NATO Assault (128K version)
+ 1987
+ Astros Productions
+
+
+
+
+
+
+
+
+ NATO Assault (48K version)
1987
Astros Productions
@@ -115099,7 +115717,7 @@ Nothing happens after loading the cassette
- Play What I Play - 128k
+ Play What I Play (128K)
1987
Ted Kirk
@@ -115115,7 +115733,7 @@ Nothing happens after loading the cassette
- Play What I Play - 48k
+ Play What I Play (48K)
19??
<unknown>
@@ -115382,6 +116000,19 @@ Nothing happens after loading the cassette
+
+ Poker Aberto
+ 1985
+ Astor Software
+
+
+
+
+
+
+
+
+
Poker de Casino
1985
@@ -116446,20 +117077,25 @@ Nothing happens after loading the cassette
- Pride of the Federation (set 3)
+ Pride of the Federation
1987
- Excalibur
-
-
-
+ Excalibur Software
+
+
+
+
+
+
+
+
Pride of the Federation (set 4)
- 19??
- <unknown>
+ 1987
+ Excalibur Software
@@ -116469,8 +117105,8 @@ Nothing happens after loading the cassette
Pride of the Federation (set 5)
- 19??
- <unknown>
+ 1987
+ Excalibur Software
@@ -116480,8 +117116,8 @@ Nothing happens after loading the cassette
Pride of the Federation (set 2)
- 19??
- <unknown>
+ 1987
+ Excalibur Software
@@ -116490,17 +117126,12 @@ Nothing happens after loading the cassette
- Pride of the Federation
- 19??
- <unknown>
-
-
-
-
-
-
-
-
+ Pride of the Federation (set 3)
+ 1987
+ Excalibur Software
+
+
+
@@ -116740,20 +117371,20 @@ Nothing happens after loading the cassette
- Pro Tennis Tour (MCM)
+ Pro Tennis Tour
1990
- MCM Software
+ Ubi Soft
-
-
+
+
Pro Tennis Tour (The Hit Squad)
- 19??
- <unknown>
+ 1990
+ The Hit Squad
@@ -116762,12 +117393,12 @@ Nothing happens after loading the cassette
- Pro Tennis Tour
- 19??
- <unknown>
+ Pro Tennis Tour (MCM)
+ 1990
+ MCM Software
-
-
+
+
@@ -116784,7 +117415,7 @@ Nothing happens after loading the cassette
- Proceeding Electronic System Printer Interface - 16k-48k Printer
+ Proceeding Electronic System Printer Interface - 16K-48K Printer
19??
<unknown>
@@ -116795,7 +117426,7 @@ Nothing happens after loading the cassette
- Proceeding Electronic System Printer Interface - 16k-48k Seikosha
+ Proceeding Electronic System Printer Interface - 16K-48K Seikosha
19??
<unknown>
@@ -117067,6 +117698,17 @@ Nothing happens after loading the cassette
+ Project Future
+ 1985
+ Micromania
+
+
+
+
+
+
+
+
Project Future (Currys)
1985
Currys
@@ -117077,54 +117719,53 @@ Nothing happens after loading the cassette
-
- Project Future
- 19??
- <unknown>
+
+ Project Future (bug fix)
+ 1985
+ Micromania
-
-
+
+
- Project Nova (Zenobi)
+ Project Nova
1987
- Zenobi Software
+ Nebula Designs Software
-
-
+
+
-
-
+
+
- Project Nova
- 19??
- <unknown>
+ Project Nova (Zenobi)
+ 1987
+ Zenobi Software
-
-
+
+
-
-
+
+
-
Project Stealth Fighter (set 1)
- 19??
- <unknown>
+ 1990
+ MicroProse Software
@@ -117147,10 +117788,10 @@ Nothing happens after loading the cassette
-
- Project Stealth Fighter (set 2, +2 Compatible)
- 19??
- <unknown>
+
+ Project Stealth Fighter (set 2, +2 compatible)
+ 1990
+ MicroProse Software
@@ -117173,10 +117814,10 @@ Nothing happens after loading the cassette
-
+
Project Stealth Fighter (set 3, Kixx)
19??
- <unknown>
+ Kixx
@@ -117199,6 +117840,31 @@ Nothing happens after loading the cassette
+
+ F-19 Stealth Fighter (set 4, Erbe)
+ 1990
+ Erbe Software
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Projector 1
@@ -117213,8 +117879,8 @@ Nothing happens after loading the cassette
Promer-SP (set 2)
- 19??
- <unknown>
+ 1984
+ Camel Products
@@ -117224,8 +117890,8 @@ Nothing happens after loading the cassette
Promer-SP
- 19??
- <unknown>
+ 1984
+ Camel Products
@@ -117256,7 +117922,7 @@ Nothing happens after loading the cassette
- Protect And Survive (set 1)
+ Protect and Survive (set 1)
1992
The Northern Underground
@@ -117272,7 +117938,7 @@ Nothing happens after loading the cassette
- Protect And Survive (set 2)
+ Protect and Survive (set 2)
19??
<unknown>
@@ -117288,7 +117954,7 @@ Nothing happens after loading the cassette
- Protect And Survive (set 3)
+ Protect and Survive (set 3)
1992
The Northern Underground
@@ -117390,8 +118056,9 @@ Nothing happens after loading the cassette
PRT 64 (release 1)
- 19??
- <unknown>
+ 1985
+ MHS Muller Hard & Software
+
@@ -117401,8 +118068,9 @@ Nothing happens after loading the cassette
PRT 64 (release 2)
- 19??
- <unknown>
+ 1985
+ MHS Muller Hard & Software
+
@@ -117646,6 +118314,17 @@ Nothing happens after loading the cassette
+ Puffy's Saga
+ 1989
+ Ubi Soft
+
+
+
+
+
+
+
+
Puffy's Saga (The Hit Squad)
1989
The Hit Squad
@@ -117656,13 +118335,13 @@ Nothing happens after loading the cassette
-
- Puffy's Saga
- 19??
- <unknown>
+
+ Puffy's Saga (MCM)
+ 1989
+ MCM Software
-
-
+
+
@@ -117728,7 +118407,7 @@ Nothing happens after loading the cassette
Hunchy (1983, Mr. Micro)
1983
- Mr. Micro Ltd
+ Mr. Micro
@@ -117737,7 +118416,7 @@ Nothing happens after loading the cassette
- Puncman 1 And 2
+ Puncman 1 and 2
1984
Chalksoft
@@ -117748,9 +118427,9 @@ Nothing happens after loading the cassette
- Puncman 3 And 4
- 19??
- <unknown>
+ Puncman 3 and 4
+ 1984
+ Chalksoft
@@ -117795,8 +118474,8 @@ Nothing happens after loading the cassette
Purchase Day Book
- 19??
- <unknown>
+ 1982
+ Transform
@@ -118614,7 +119293,7 @@ Nothing happens after loading the cassette
Quackers (set 2)
1983
- Rabbit
+ Rabbit Software
@@ -118624,8 +119303,8 @@ Nothing happens after loading the cassette
Quackers
- 19??
- <unknown>
+ 1983
+ Rabbit Software
@@ -118633,6 +119312,17 @@ Nothing happens after loading the cassette
+
+ Tiro al Blanco (Investronica)
+ 1983
+ Investronica
+
+
+
+
+
+
+
Qualitas
1986
@@ -118802,9 +119492,10 @@ Nothing happens after loading the cassette
- Que Es El Pert
+ Que Es El Pert?
19??
- <unknown>
+ Ingenieria Quimica
+
@@ -119202,7 +119893,7 @@ Nothing happens after loading the cassette
Quiz of Europe
19??
- <unknown>
+ Tawny Software
@@ -119523,7 +120214,7 @@ Nothing happens after loading the cassette
Race Ace (set 2, Micro Gold)
1983
- Rainbird / Micro Gold
+ Micro Gold
@@ -119610,7 +120301,7 @@ Nothing happens after loading the cassette
Radio Teletype
19??
- <unknown>
+ Micronet 800 Telesoftware
@@ -119796,7 +120487,7 @@ Nothing happens after loading the cassette
Rail Traffic Control Birmingham
19??
- <unknown>
+ Dee-Kay Systems
@@ -119828,8 +120519,8 @@ Nothing happens after loading the cassette
Rail Traffic Control Crewe (set 2, Ashley Greenup)
- 19??
- <unknown>
+ 1989
+ Ashley Greenup
@@ -119849,9 +120540,9 @@ Nothing happens after loading the cassette
- Rail Traffic Control Doncaster (set 1, Dee-Kay Systems)
+ Rail Traffic Control Doncaster (set 1)
1989
- Dee-Kay Systems
+ Ashley Greenup
@@ -119860,9 +120551,9 @@ Nothing happens after loading the cassette
- Rail Traffic Control Doncaster (set 2, Ashley Greenup)
+ Rail Traffic Control Doncaster (set 2)
1989
- <unknown>
+ Ashley Greenup
@@ -119917,7 +120608,7 @@ Nothing happens after loading the cassette
Rail Traffic Control Lime Street
19??
- <unknown>
+ Dee-Kay Systems
@@ -119961,7 +120652,7 @@ Nothing happens after loading the cassette
Rail Traffic Control Reading
19??
- <unknown>
+ Dee-Kay Systems
@@ -119982,8 +120673,8 @@ Nothing happens after loading the cassette
Rainbow Copia
- 19??
- <unknown>
+ 1984
+ Wizard Software
@@ -120568,23 +121259,23 @@ Nothing happens after loading the cassette
- Ready Steady Go (System 4)
+ Ready Steady Go
1988
- System 4
+ Alternative Software
-
-
+
+
- Ready Steady Go
- 19??
- <unknown>
+ Ready Steady Go (System 4)
+ 1988
+ System 4
-
-
+
+
@@ -120617,6 +121308,17 @@ Nothing happens after loading the cassette
+ Realm of Darkness
+ 1986
+ River Software
+
+
+
+
+
+
+
+
Realm of Darkness (Zenobi)
1987
Zenobi Software
@@ -120627,18 +121329,23 @@ Nothing happens after loading the cassette
-
- Realm of Darkness
- 19??
- <unknown>
-
-
-
+
+ Realm of Impossibility
+ 1986
+ Ariolasoft UK
+
+
+
+
+
+
+
+
-
+
Realm of Impossibility (Dro Soft)
1985
Dro Soft
@@ -120654,23 +121361,18 @@ Nothing happens after loading the cassette
-
- Realm of Impossibility
- 19??
- <unknown>
-
-
-
-
-
-
-
-
+
+ Realm of the Undead
+ 1984
+ Express Programmes Company
+
+
+
-
+
Realm of the Undead (MC Lothlorien)
1984
MC Lothlorien
@@ -120681,17 +121383,6 @@ Nothing happens after loading the cassette
-
- Realm of the Undead
- 19??
- <unknown>
-
-
-
-
-
-
-
Reaper
1991
@@ -120705,8 +121396,8 @@ Nothing happens after loading the cassette
Reasoning
- 19??
- <unknown>
+ 1984
+ Micro-De-Bug Consultancy
@@ -120715,7 +121406,7 @@ Nothing happens after loading the cassette
- Rebel (set 1)
+ Rebel
1987
Virgin Games
@@ -120726,9 +121417,9 @@ Nothing happens after loading the cassette
- Rebel (set 2, Ricochet)
+ Rebel (Ricochet)
1987
- Virgin Games Ltd / Ricochet
+ Ricochet
@@ -120839,6 +121530,17 @@ Nothing happens after loading the cassette
+ Red Arrows
+ 1985
+ Database Software
+
+
+
+
+
+
+
+
Red Arrows (Alternative)
1987
Alternative Software
@@ -120849,13 +121551,13 @@ Nothing happens after loading the cassette
-
- Red Arrows
- 19??
- <unknown>
+
+ Red Arrows (System 4)
+ 1987
+ System 4
-
-
+
+
@@ -120883,23 +121585,23 @@ Nothing happens after loading the cassette
- Red Baron (set 2)
+ Red Baron
1983
MC Lothlorien
-
-
+
+
- Red Baron
- 19??
- <unknown>
+ Red Baron (alt)
+ 1983
+ MC Lothlorien
-
-
+
+
@@ -120907,7 +121609,7 @@ Nothing happens after loading the cassette
Red Dragon
19??
- <unknown>
+ Dee-Kay Systems
@@ -121025,31 +121727,31 @@ Nothing happens after loading the cassette
- Reflections (Forward Software)
+ Reflections
1983
- Forward
+ Artic Computing
-
-
+
+
- Reflections
- 19??
- <unknown>
+ Reflections (Forward Software)
+ 1983
+ Forward Software
-
-
+
+
Reichswald
- 19??
- <unknown>
+ 1984
+ Scorpio Gamesworld
@@ -121069,23 +121771,23 @@ Nothing happens after loading the cassette
- Rentakill Rita (Dro Soft)
- 1988
- Dro Soft
+ Rentakill Rita
+ 1987
+ Mastertronic
-
-
+
+
- Rentakill Rita
- 19??
- <unknown>
+ Rentakill Rita (Dro Soft)
+ 1988
+ Dro Soft
-
-
+
+
@@ -121494,7 +122196,7 @@ Nothing happens after loading the cassette
- Reversi
+ Reversi (Sinclair Research)
1982
Sinclair Research
@@ -122051,31 +122753,20 @@ Nothing happens after loading the cassette
- Road Toad (DK'Tronics)
+ Road Toad
1983
- DK'Tronics
-
-
-
-
-
-
-
-
- Road Toad (Monser)
- 19??
- <unknown>
+ Elfin Software
-
-
+
+
Road Toad (Prism)
- 19??
- <unknown>
+ 1983
+ PRISM Micro-informatique
@@ -122085,8 +122776,8 @@ Nothing happens after loading the cassette
Road Toad (Profisoft)
- 19??
- <unknown>
+ 1983
+ Profisoft
@@ -122095,12 +122786,34 @@ Nothing happens after loading the cassette
- Road Toad
- 19??
- <unknown>
+ Road Toad (DK'Tronics)
+ 1983
+ DK'Tronics
-
-
+
+
+
+
+
+
+
+ Road Toad (bug fix)
+ 1983
+ Elfin Software
+
+
+
+
+
+
+
+
+ Road Toad (Monser)
+ 198?
+ Monser
+
+
+
@@ -122858,9 +123571,10 @@ Nothing happens after loading the cassette
- Rocman (set 1, Spanish)
+ Rocman (Spanish)
1986
Magic Team
+
@@ -122869,9 +123583,10 @@ Nothing happens after loading the cassette
- Rocman (set 2, English, Rockman case, Alligata)
+ Rocman (English, Rockman case, Alligata)
1986
Alligata Software
+
@@ -123207,21 +123922,15 @@ Nothing happens after loading the cassette
- Ronnie Goes To Hollywood (GI Games)
+ Ronnie Goes To Hollywood
1987
- G.I. Games
-
-
-
+ 8th Day Software
+
+
+
-
-
-
- Ronnie Goes To Hollywood - Help
- 19??
- <unknown>
-
+
@@ -123229,12 +123938,12 @@ Nothing happens after loading the cassette
- Ronnie Goes To Hollywood
- 19??
- <unknown>
+ Ronnie Goes To Hollywood (G.I. Games)
+ 1991
+ G.I. Games
-
-
+
+
@@ -123252,8 +123961,8 @@ Nothing happens after loading the cassette
Rotatrix
- 19??
- <unknown>
+ 2012
+ Einar Saukas
@@ -123273,20 +123982,20 @@ Nothing happens after loading the cassette
- Rouge Midget (Adventure Workshop)
- 19??
- <unknown>
+ Rouge Midget
+ 1991
+ The Guild
-
-
+
+
- Rouge Midget (set 2)
- 19??
- <unknown>
+ Rouge Midget (alt)
+ 1991
+ The Guild
@@ -123295,12 +124004,12 @@ Nothing happens after loading the cassette
- Rouge Midget
- 19??
- <unknown>
+ Rouge Midget (Adventure Workshop)
+ 199?
+ The Adventure Workshop
-
-
+
+
@@ -123349,10 +124058,22 @@ Nothing happens after loading the cassette
+
+ Roust (demo)
+ 2018
+ Allan Turvey
+
+
+
+
+
+
+
Rownania Chemiczne
19??
- <unknown>
+ Polmer
+
@@ -123409,10 +124130,10 @@ Nothing happens after loading the cassette
-
- Royal Birkdale
- 19??
- <unknown>
+
+ Royal Birkdale: Championship Golf
+ 1983
+ Ocean
@@ -127918,6 +128639,7 @@ Nothing happens after loading the cassette
Sir Fred (Spanish)
1986
Made in Spain
+
@@ -132027,7 +132749,7 @@ Nothing happens after loading the cassette
- Spectrum 48k Sample Cassette
+ Spectrum 48K Sample Cassette
1983
Sulis
@@ -135789,6 +136511,17 @@ Nothing happens after loading the cassette
+
+ Stripping Penelope
+ 2021
+ Jaime Grilo
+
+
+
+
+
+
+
Strontium Dog - The Killing
1984
@@ -136300,20 +137033,20 @@ Nothing happens after loading the cassette
- Super 48k Box - 47 Loader
- 19??
- <unknown>
+ Super 48K Box (rev. 2, TAP tape image)
+ 2015
+ Vanbsoftware
-
-
+
+
- Super 48k Box
- 19??
- <unknown>
+ Super 48K Box
+ 2015
+ Vanbsoftware
@@ -136321,6 +137054,17 @@ Nothing happens after loading the cassette
+
+ Super 48K Box (47 loader)
+ 2015
+ Vanbsoftware
+
+
+
+
+
+
+
Super Brat
1985
@@ -137606,6 +138350,72 @@ Nothing happens after loading the cassette
+
+ The Swarm is Coming... (128K, update 2)
+ 2021
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The Swarm is Coming... (48K, update 2)
+ 2021
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Swat!
1987
@@ -137756,7 +138566,7 @@ Nothing happens after loading the cassette
The Sword of Ianna
2017
- Retroworks
+ RetroWorks
@@ -140438,7 +141248,7 @@ Nothing happens after loading the cassette
Teodoro no Sabe Volar (TZX tape image)
2010
- Retroworks
+ RetroWorks
@@ -140457,7 +141267,7 @@ Nothing happens after loading the cassette
Teodoro no Sabe Volar (English, TAP tape image)
2010
- Retroworks
+ RetroWorks
@@ -140469,7 +141279,7 @@ Nothing happens after loading the cassette
Teodoro no Sabe Volar (Russian, TAP tape image)
2010
- Retroworks
+ RetroWorks
@@ -140481,7 +141291,7 @@ Nothing happens after loading the cassette
Teodoro no Sabe Volar (Spanish, TAP tape image)
2010
- Retroworks
+ RetroWorks
@@ -141624,7 +142434,7 @@ Nothing happens after loading the cassette
- Theory of Music Questions and Exercises - 48k
+ Theory of Music Questions and Exercises (48K)
19??
<unknown>
@@ -141640,7 +142450,7 @@ Nothing happens after loading the cassette
- Theory of Music Questions and Exercises - 128k
+ Theory of Music Questions and Exercises (128K)
19??
<unknown>
@@ -142066,7 +142876,7 @@ Nothing happens after loading the cassette
- Throne of Fire (set 1)
+ Throne of Fire
1987
Melbourne House
@@ -142076,8 +142886,19 @@ Nothing happens after loading the cassette
-
- Throne of Fire (set 2, Erbe)
+
+ Throne of Fire (review copy)
+ 1987
+ Melbourne House
+
+
+
+
+
+
+
+
+ Throne of Fire (Erbe)
1987
Erbe Software
@@ -142087,13 +142908,24 @@ Nothing happens after loading the cassette
-
- Throne of Fire (set 3, review copy)
+
+ Throne of Fire (IBSA)
1987
- Melbourne House
+ IBSA
+
+
+
+
+
+
+
+
+ Throne of Fire (PIM)
+ 198?
+ PIM Software
-
+
@@ -142212,8 +143044,8 @@ Nothing happens after loading the cassette
Thunderbirds (1989, Grandslam) (set 2, MCM)
- 19??
- <unknown>
+ 1989
+ MCM Software
@@ -142352,7 +143184,7 @@ Nothing happens after loading the cassette
- Tiles V2 - Saved On 48k
+ Tiles V2 - Saved On 48K
19??
<unknown>
@@ -142502,8 +143334,8 @@ Nothing happens after loading the cassette
Time Machine (MCM - Musical 1)
- 19??
- <unknown>
+ 1990
+ Musical 1
@@ -142512,9 +143344,9 @@ Nothing happens after loading the cassette
- Time Machine - Small Cardboard Case (MCM)
- 19??
- <unknown>
+ Time Machine (MCM, small cardboard case)
+ 1990
+ MCM Software
@@ -142665,20 +143497,20 @@ Nothing happens after loading the cassette
- Time Trax (Bug-Byte)
+ Time Trax
1986
- Bug-Byte Software
+ Mind Games
-
-
+
+
- Time Trax (MGE Software)
- 19??
- <unknown>
+ Time Trax (Mind Games España)
+ 1986
+ Mind Games España
@@ -142687,12 +143519,12 @@ Nothing happens after loading the cassette
- Time Trax
- 19??
- <unknown>
+ Time Trax (Bug-Byte)
+ 1986
+ Bug-Byte Software
-
-
+
+
@@ -142773,7 +143605,7 @@ Nothing happens after loading the cassette
- Time Watch (set 2)
+ Time Watch (alt)
1986
Matthew Wilson
@@ -142785,8 +143617,8 @@ Nothing happens after loading the cassette
Time Watch
- 19??
- <unknown>
+ 1986
+ Matthew Wilson
@@ -142806,9 +143638,9 @@ Nothing happens after loading the cassette
- Time Zone (R D Foord Software)
+ Time Zone (R.D. Foord)
1985
- R.D. Foord
+ R.D. Foord Software
@@ -142816,10 +143648,10 @@ Nothing happens after loading the cassette
-
- Time Zone
- 19??
- <unknown>
+
+ Time Zone (Atlantis)
+ 1985
+ Atlantis Software
@@ -145462,6 +146294,7 @@ Nothing happens after loading the cassette
Turbo Girl (Spanish)
1988
Dinamic Software
+
@@ -145671,6 +146504,60 @@ Nothing happens after loading the cassette
+
+ Twenty Four Hour Parsley People (English)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Twenty Four Hour Parsley People (Spanish)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Twenty Four Hour Parsley People (Portuguese)
+ 2020
+ Minilop Retroware
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Twice Shy (set 2)
1986
@@ -146602,9 +147489,9 @@ Nothing happens after loading the cassette
- The Very Big Cave Adventure (GI Games)
- 19??
- <unknown>
+ The Very Big Cave Adventure (G.I. Games)
+ 1991
+ G.I. Games
@@ -146619,8 +147506,8 @@ Nothing happens after loading the cassette
The Very Big Cave Adventure (Zenobi)
- 19??
- <unknown>
+ 1992
+ Zenobi Software
@@ -146635,8 +147522,8 @@ Nothing happens after loading the cassette
The Very Big Cave Adventure
- 19??
- <unknown>
+ 1986
+ CRL Group
@@ -146662,8 +147549,8 @@ Nothing happens after loading the cassette
The Village Underworld
- 19??
- <unknown>
+ 1985
+ Orpheus
@@ -147097,6 +147984,7 @@ Version without loading screen, maybe a pre-release
1989
Eclipse
+
@@ -147112,6 +148000,7 @@ Version without loading screen, maybe a pre-release
1989
Eclipse
+
@@ -147149,7 +148038,7 @@ Version without loading screen, maybe a pre-release
-->
Vega Solaris (Retro Gamer)
2013
- Axel Springer / Matra
+ Axel Springer / Matra Computer Automations
@@ -147214,23 +148103,23 @@ Version without loading screen, maybe a pre-release
- Vendetta (Kixx)
+ Vendetta
1990
- Kixx
+ System 3 Software
-
-
+
+
- Vendetta
- 19??
- <unknown>
+ Vendetta (Kixx)
+ 1990
+ Kixx
-
-
+
+
@@ -149501,7 +150390,7 @@ Version without loading screen, maybe a pre-release
- Wegwijs Op Uw ZX Spectrum 48k
+ Wegwijs Op Uw ZX Spectrum 48K
1984
MCN
@@ -149668,9 +150557,10 @@ Version without loading screen, maybe a pre-release
- West Bank (Spanish)
+ West Bank
1985
Dinamic Software
+
@@ -149679,9 +150569,10 @@ Version without loading screen, maybe a pre-release
- West Bank
- 19??
- <unknown>
+ West Bank (Gremlin)
+ 1985
+ Gremlin Graphics Software
+
@@ -149695,9 +150586,10 @@ Version without loading screen, maybe a pre-release
- West Bank - Small Case
- 19??
- <unknown>
+ West Bank (Dinamic, small case)
+ 1985
+ Dinamic Software
+
@@ -149717,7 +150609,7 @@ Version without loading screen, maybe a pre-release
- West Rail - Release 1
+ West Rail (release 1)
1984
Dee-Kay Systems
@@ -149728,9 +150620,9 @@ Version without loading screen, maybe a pre-release
- West Rail - Release 2
- 19??
- <unknown>
+ West Rail (release 2)
+ 1984
+ Dee-Kay Systems
@@ -149760,34 +150652,34 @@ Version without loading screen, maybe a pre-release
-
- What's The Time (set 2)
- 19??
- <unknown>
+
+ What's The Time?
+ 1983
+ Collins Soft
-
-
+
+
-
-
+
+
-
- What's The Time
- 19??
- <unknown>
+
+ What's The Time? (alt)
+ 1983
+ Collins Soft
-
-
+
+
-
-
+
+
@@ -149803,7 +150695,6 @@ Version without loading screen, maybe a pre-release
-
Wheeler Dealer
1983
@@ -151692,33 +152583,49 @@ Version without loading screen, maybe a pre-release
- World Games (Kixx)
- 1988
- Kixx
+ World Games
+ 1987
+ U.S. Gold
-
-
+
+
-
+
+
+
+
+
+
+ World Games (Erbe)
+ 1987
+ Erbe Software
+
+
+
+
+
+
+
+
- World Games
- 19??
- <unknown>
+ World Games (Kixx)
+ 1988
+ Kixx
-
-
+
+
-
+
@@ -151786,31 +152693,31 @@ Version without loading screen, maybe a pre-release
- World Soccer League (EDOS)
- 19??
- <unknown>
+ World Soccer League
+ 1989
+ E&J Software
-
-
+
+
- World Soccer League
- 19??
- <unknown>
+ World Soccer League (EDOS)
+ 1989
+ EDOS
-
-
+
+
-
+
World Soccer
- 19??
- <unknown>
+ 1990
+ Zeppelin Games
@@ -151821,7 +152728,7 @@ Version without loading screen, maybe a pre-release
World Team Championships
19??
- <unknown>
+ ET Computer Software
@@ -152036,8 +152943,19 @@ Version without loading screen, maybe a pre-release
+ Wulfpack
+ 1989
+ Blue Ribbon Software
+
+
+
+
+
+
+
+
Wulfpack (EDOS)
- 1988
+ 1989
EDOS
@@ -152046,13 +152964,13 @@ Version without loading screen, maybe a pre-release
-
- Wulfpack
- 19??
- <unknown>
+
+ Wunderwaffe
+ 2017
+ Rafal Miazga
-
-
+
+
@@ -152117,23 +153035,25 @@ Version without loading screen, maybe a pre-release
- Wye Compiler (Spanish)
+ Wye Compiler (English)
1983
- Ventamatic
+ Wye Valley Software
+
-
-
+
+
- Wye Compiler
- 19??
- <unknown>
+ Wye Compiler (Spanish)
+ 1983
+ Ventamatic
+
-
-
+
+
@@ -152504,7 +153424,7 @@ Version without loading screen, maybe a pre-release
Xen (set 2, Top Ten)
1987
- Super Sparklers / Top Ten
+ Top Ten Software
@@ -152526,7 +153446,7 @@ Version without loading screen, maybe a pre-release
Xeno (Bug-Byte)
1986
- A'n'F Software / Bug-Byte
+ Bug-Byte
@@ -152537,7 +153457,7 @@ Version without loading screen, maybe a pre-release
Xeno (Kidsplay)
1986
- A'n'F Software / Kidsplay
+ Kidsplay
@@ -152548,7 +153468,7 @@ Version without loading screen, maybe a pre-release
Xeno (Mind Games España)
1986
- A'n'F Software / Mind Games Espana
+ Mind Games España
@@ -153323,7 +154243,7 @@ Version without loading screen, maybe a pre-release
- z80 Disassembler - 48k
+ z80 Disassembler - 48K
1984
McGraw-Hill Book Company UK
@@ -153692,6 +154612,7 @@ Version without loading screen, maybe a pre-release
Zombi Terror (English)
2014
Kabuto Factory
+
@@ -153708,6 +154629,7 @@ Version without loading screen, maybe a pre-release
Zombi Terror (Spanish)
2014
Kabuto Factory
+
@@ -154009,6 +154931,17 @@ Version without loading screen, maybe a pre-release
+
+ ZX Larry
+ 2019
+ Rafal Miazga
+
+
+
+
+
+
+
ZX Mines 2.0 - 1500 Baud
19??
@@ -157426,22 +158359,42 @@ Tape 1 - Side B - Game 3: Bullseye
-
+
Adventure 4-Pack
- 19??
- <unknown>
+ 1986
+ Walter Pooley
+
+
+
+ Adventure 4-Pack (alt)
+ 1986
+ Walter Pooley
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Adventure Builder System
1987
@@ -160673,7 +161626,7 @@ Tape 2: Cell of the Ridges
- Exploring Adventures On The Spectrum 48k
+ Exploring Adventures On The Spectrum 48K
1984
Duckworth Educational Computing
@@ -163681,7 +164634,7 @@ Side B - Game 3: Capricornio 1 [Galaxians] (Artic Computing Ltd)
- Lightgun Games (48k)
+ Lightgun Games (48K)
1989
Virgin Mastertronic
@@ -165933,8 +166886,6 @@ Tape 3: Rainbow Islands (Ocean Software)
-
-
Robin Candy's Playing Tips (set 1)
1986
@@ -165948,8 +166899,8 @@ Tape 3: Rainbow Islands (Ocean Software)
Robin Candy's Playing Tips (set 2)
- 19??
- <unknown>
+ 1986
+ Crash
@@ -165959,8 +166910,8 @@ Tape 3: Rainbow Islands (Ocean Software)
Robin Candy's Playing Tips (set 3)
- 19??
- <unknown>
+ 1986
+ Crash
@@ -168575,7 +169526,7 @@ Tape 2 - Side B - Game 2: Fernando Martin Basket Master (Dinamic Software)
- Spectrum Games Pack 48k
+ Spectrum Games Pack 48K
1985
Paxman Promotions
@@ -171685,8 +172636,8 @@ Tape 2 - Side B - Game 2: Yie Ar Kung-Fu (Imagine Software)
Thrill Time Gold 1
- 19??
- <unknown>
+ 1990
+ Elite Systems
diff --git a/src/devices/bus/idpartner/bus.cpp b/src/devices/bus/idpartner/bus.cpp
index 6b82488062a..2c426f39991 100644
--- a/src/devices/bus/idpartner/bus.cpp
+++ b/src/devices/bus/idpartner/bus.cpp
@@ -19,8 +19,8 @@ namespace bus::idpartner {
***********************************************************************/
device_exp_card_interface::device_exp_card_interface(const machine_config &mconfig, device_t &device)
- : device_interface(device, "idpartner_card")
- , m_bus(nullptr)
+ : device_interface(device, "idpartner_card")
+ , m_bus(nullptr)
{
}
@@ -29,9 +29,9 @@ device_exp_card_interface::device_exp_card_interface(const machine_config &mconf
***********************************************************************/
bus_connector_device::bus_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IDPARTNER_BUS_CONNECTOR, tag, owner, clock)
- , device_single_card_slot_interface(mconfig, *this)
- , m_bus(*this, finder_base::DUMMY_TAG)
+ : device_t(mconfig, IDPARTNER_BUS_CONNECTOR, tag, owner, clock)
+ , device_single_card_slot_interface(mconfig, *this)
+ , m_bus(*this, finder_base::DUMMY_TAG)
{
}
@@ -41,9 +41,9 @@ bus_connector_device::bus_connector_device(const machine_config &mconfig, const
void bus_connector_device::device_resolve_objects()
{
- device_exp_card_interface *const exp_card = get_card_device();
- if (exp_card)
- exp_card->set_bus(m_bus);
+ device_exp_card_interface *const exp_card = get_card_device();
+ if (exp_card)
+ exp_card->set_bus(m_bus);
}
void bus_connector_device::device_start()
@@ -55,11 +55,11 @@ void bus_connector_device::device_start()
***********************************************************************/
bus_device::bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IDPARTNER_BUS, tag, owner, clock)
- , m_io(*this, finder_base::DUMMY_TAG, -1)
- , m_int_handler(*this)
- , m_nmi_handler(*this)
- , m_drq_handler(*this)
+ : device_t(mconfig, IDPARTNER_BUS, tag, owner, clock)
+ , m_io(*this, finder_base::DUMMY_TAG, -1)
+ , m_int_handler(*this)
+ , m_nmi_handler(*this)
+ , m_drq_handler(*this)
{
}
@@ -82,6 +82,6 @@ void bus_device::device_reset()
void idpartner_exp_devices(device_slot_interface &device)
{
- device.option_add("gdp", IDPARTNER_GDP);
- device.option_add("sasi", IDPARTNER_SASI);
+ device.option_add("gdp", IDPARTNER_GDP);
+ device.option_add("sasi", IDPARTNER_SASI);
}
diff --git a/src/devices/bus/idpartner/bus.h b/src/devices/bus/idpartner/bus.h
index 0ac5cc6cb47..51521e946db 100644
--- a/src/devices/bus/idpartner/bus.h
+++ b/src/devices/bus/idpartner/bus.h
@@ -58,61 +58,61 @@ class device_exp_card_interface;
class bus_connector_device : public device_t, public device_single_card_slot_interface
{
public:
- // construction/destruction
- template
- bus_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&bus_tag, U &&opts, const char *dflt)
- : bus_connector_device(mconfig, tag, owner)
- {
- option_reset();
- opts(*this);
- set_default_option(dflt);
- set_fixed(false);
- m_bus.set_tag(std::forward(bus_tag));
- }
-
- bus_connector_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0);
+ // construction/destruction
+ template
+ bus_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&bus_tag, U &&opts, const char *dflt)
+ : bus_connector_device(mconfig, tag, owner)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ m_bus.set_tag(std::forward(bus_tag));
+ }
+
+ bus_connector_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0);
protected:
- // device_t implementation
- virtual void device_resolve_objects() override;
- virtual void device_start() override;
+ // device_t implementation
+ virtual void device_resolve_objects() override;
+ virtual void device_start() override;
- // configuration
- required_device m_bus;
+ // configuration
+ required_device m_bus;
};
class bus_device : public device_t
{
public:
- // construction/destruction
- bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // inline configuration
- template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); }
+ // inline configuration
+ template void set_io_space(T &&tag, int spacenum) { m_io.set_tag(std::forward(tag), spacenum); }
- // callbacks
- auto int_handler() { return m_int_handler.bind(); }
- auto nmi_handler() { return m_nmi_handler.bind(); }
- auto drq_handler() { return m_drq_handler.bind(); }
+ // callbacks
+ auto int_handler() { return m_int_handler.bind(); }
+ auto nmi_handler() { return m_nmi_handler.bind(); }
+ auto drq_handler() { return m_drq_handler.bind(); }
- // called from expansion device
- void int_w(int state) { m_int_handler(state); }
- void nmi_w(int state) { m_nmi_handler(state); }
- void drq_w(int state) { m_drq_handler(state); }
+ // called from expansion device
+ void int_w(int state) { m_int_handler(state); }
+ void nmi_w(int state) { m_nmi_handler(state); }
+ void drq_w(int state) { m_drq_handler(state); }
- address_space &io() { return *m_io; }
+ address_space &io() { return *m_io; }
private:
- // device_t implementation
- virtual void device_start() override;
- virtual void device_reset() override;
+ // device_t implementation
+ virtual void device_start() override;
+ virtual void device_reset() override;
- // internal state
- required_address_space m_io;
+ // internal state
+ required_address_space m_io;
- devcb_write_line m_int_handler;
- devcb_write_line m_nmi_handler;
- devcb_write_line m_drq_handler;
+ devcb_write_line m_int_handler;
+ devcb_write_line m_nmi_handler;
+ devcb_write_line m_drq_handler;
};
// ======================> device_exp_card_interface
@@ -120,15 +120,15 @@ class bus_device : public device_t
class device_exp_card_interface : public device_interface
{
protected:
- // construction/destruction
- device_exp_card_interface(const machine_config &mconfig, device_t &device);
+ // construction/destruction
+ device_exp_card_interface(const machine_config &mconfig, device_t &device);
public:
- // inline configuration
- void set_bus(bus_device *bus) { m_bus = bus; }
+ // inline configuration
+ void set_bus(bus_device *bus) { m_bus = bus; }
protected:
- bus_device *m_bus;
+ bus_device *m_bus;
};
} // namespace bus::idpartner
diff --git a/src/devices/bus/idpartner/gdp.cpp b/src/devices/bus/idpartner/gdp.cpp
index 0b7f34dbf90..72e3fc7d931 100644
--- a/src/devices/bus/idpartner/gdp.cpp
+++ b/src/devices/bus/idpartner/gdp.cpp
@@ -19,63 +19,63 @@
namespace {
class idpartner_gdp_device :
- public device_t,
- public bus::idpartner::device_exp_card_interface
+ public device_t,
+ public bus::idpartner::device_exp_card_interface
{
public:
- // construction/destruction
- idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- // device_t implementation
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
+ // device_t implementation
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
private:
- void char_w(u8 data) { m_avdc->buffer_w(data); }
- void attr_w(u8 data) { m_avdc->attr_buffer_w(data); }
- void scroll_w(u8 data) { m_scroll = data; }
- u8 common_r() { m_common ^= 0x10; return m_common; }
- void porta_w(u8 data);
- void portb_w(u8 data);
+ void char_w(u8 data) { m_avdc->buffer_w(data); }
+ void attr_w(u8 data) { m_avdc->attr_buffer_w(data); }
+ void scroll_w(u8 data) { m_scroll = data; }
+ u8 common_r() { m_common ^= 0x10; return m_common; }
+ void porta_w(u8 data);
+ void portb_w(u8 data);
void vram_w(offs_t offset, u8 data);
u8 vram_r(offs_t offset);
- void msl_w(u8 data);
- void gdc_map(address_map &map);
- void int_w(int state) { m_bus->int_w(state); }
- void nmi_w(int state) { m_bus->nmi_w(state); }
-
- SCN2674_DRAW_CHARACTER_MEMBER(draw_character);
- TIMER_DEVICE_CALLBACK_MEMBER(scanline) { m_gdc->update_scanline(param); }
-
- void char_map(address_map &map);
- void attr_map(address_map &map);
-
- required_device m_gdc;
- memory_share_creator m_vram;
- required_device m_avdc;
- required_device m_pio;
- required_device m_palette;
- required_region_ptr m_p_chargen;
-
- u8 m_scroll;
- u8 m_common;
+ void msl_w(u8 data);
+ void gdc_map(address_map &map);
+ void int_w(int state) { m_bus->int_w(state); }
+ void nmi_w(int state) { m_bus->nmi_w(state); }
+
+ SCN2674_DRAW_CHARACTER_MEMBER(draw_character);
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline) { m_gdc->update_scanline(param); }
+
+ void char_map(address_map &map);
+ void attr_map(address_map &map);
+
+ required_device m_gdc;
+ memory_share_creator m_vram;
+ required_device m_avdc;
+ required_device m_pio;
+ required_device m_palette;
+ required_region_ptr m_p_chargen;
+
+ u8 m_scroll;
+ u8 m_common;
};
idpartner_gdp_device::idpartner_gdp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IDPARTNER_GDP, tag, owner, clock)
- , bus::idpartner::device_exp_card_interface(mconfig, *this)
- , m_gdc(*this, "gdc")
- , m_vram(*this, "vram", 0x20000, ENDIANNESS_LITTLE)
- , m_avdc(*this, "avdc")
- , m_pio(*this, "pio")
- , m_palette(*this, "palette")
- , m_p_chargen(*this, "chargen")
- , m_scroll(0)
- , m_common(0)
+ : device_t(mconfig, IDPARTNER_GDP, tag, owner, clock)
+ , bus::idpartner::device_exp_card_interface(mconfig, *this)
+ , m_gdc(*this, "gdc")
+ , m_vram(*this, "vram", 0x20000, ENDIANNESS_LITTLE)
+ , m_avdc(*this, "avdc")
+ , m_pio(*this, "pio")
+ , m_palette(*this, "palette")
+ , m_p_chargen(*this, "chargen")
+ , m_scroll(0)
+ , m_common(0)
{
}
@@ -85,54 +85,54 @@ idpartner_gdp_device::idpartner_gdp_device(const machine_config &mconfig, const
void idpartner_gdp_device::device_start()
{
- save_item(NAME(m_scroll));
+ save_item(NAME(m_scroll));
}
void idpartner_gdp_device::device_reset()
{
- m_bus->io().install_read_handler (0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_r))); // Thomson GDP EF9367
- m_bus->io().install_write_handler(0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_w))); // Thomson GDP EF9367
- m_bus->io().install_read_handler (0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::read_alt))); // PIO - Graphics
- m_bus->io().install_write_handler(0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::write_alt))); // PIO - Graphics
- m_bus->io().install_write_handler(0x34, 0x34, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::char_w))); // char reg
- m_bus->io().install_write_handler(0x35, 0x35, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::attr_w))); // attr reg
- m_bus->io().install_write_handler(0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::scroll_w))); // scroll reg/common input
- m_bus->io().install_read_handler (0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::common_r))); // common input
- m_bus->io().install_read_handler (0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::read))); // AVDC SCN2674
- m_bus->io().install_write_handler(0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::write))); // AVDC SCN2674
+ m_bus->io().install_read_handler (0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_r))); // Thomson GDP EF9367
+ m_bus->io().install_write_handler(0x20, 0x2f, emu::rw_delegate(m_gdc, FUNC(ef9365_device::data_w))); // Thomson GDP EF9367
+ m_bus->io().install_read_handler (0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::read_alt))); // PIO - Graphics
+ m_bus->io().install_write_handler(0x30, 0x33, emu::rw_delegate(m_pio, FUNC(z80pio_device::write_alt))); // PIO - Graphics
+ m_bus->io().install_write_handler(0x34, 0x34, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::char_w))); // char reg
+ m_bus->io().install_write_handler(0x35, 0x35, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::attr_w))); // attr reg
+ m_bus->io().install_write_handler(0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::scroll_w))); // scroll reg/common input
+ m_bus->io().install_read_handler (0x36, 0x36, emu::rw_delegate(*this, FUNC(idpartner_gdp_device::common_r))); // common input
+ m_bus->io().install_read_handler (0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::read))); // AVDC SCN2674
+ m_bus->io().install_write_handler(0x38, 0x3f, emu::rw_delegate(m_avdc, FUNC(scn2674_device::write))); // AVDC SCN2674
}
void idpartner_gdp_device::porta_w(u8 data)
{
- //printf("porta_w:%02x\n",data);
+ //printf("porta_w:%02x\n",data);
}
void idpartner_gdp_device::portb_w(u8 data)
{
- //printf("portb_w:%02x\n",data);
+ //printf("portb_w:%02x\n",data);
}
void idpartner_gdp_device::msl_w(u8 data)
{
- //printf("msl_w:%02x\n",data);
+ //printf("msl_w:%02x\n",data);
}
void idpartner_gdp_device::vram_w(offs_t offset, u8 data)
{
- u16 addr = (m_scroll << 7) - offset;
- m_vram[addr] = data;
+ u16 addr = (m_scroll << 7) - offset;
+ m_vram[addr] = data;
}
u8 idpartner_gdp_device::vram_r(offs_t offset)
{
- u16 addr = (m_scroll << 7) - offset;
+ u16 addr = (m_scroll << 7) - offset;
return m_vram[addr];
}
// 16 * 4164 DRAM
void idpartner_gdp_device::gdc_map(address_map &map)
{
- map(0x0000, 0x1ffff).rw(FUNC(idpartner_gdp_device::vram_r), FUNC(idpartner_gdp_device::vram_w));
+ map(0x0000, 0x1ffff).rw(FUNC(idpartner_gdp_device::vram_r), FUNC(idpartner_gdp_device::vram_w));
}
@@ -140,15 +140,15 @@ void idpartner_gdp_device::gdc_map(address_map &map)
void idpartner_gdp_device::char_map(address_map &map)
{
map(0x0000, 0x0fff).ram().share("charram");
- map(0x1000, 0x2fff).ram(); // TODO: Check in schematics
+ map(0x1000, 0x2fff).ram(); // TODO: Check in schematics
}
// 2 * 6116 SRAM for attributes
void idpartner_gdp_device::attr_map(address_map &map)
{
map(0x0000, 0x0fff).ram().share("attrmap");
- map(0x1000, 0x2fff).ram(); // TODO: Check in schematics
-}
+ map(0x1000, 0x2fff).ram(); // TODO: Check in schematics
+}
/* F4 Character Displayer */
static const gfx_layout gdp_charlayout =
@@ -194,44 +194,44 @@ SCN2674_DRAW_CHARACTER_MEMBER( idpartner_gdp_device::draw_character )
void idpartner_gdp_device::device_add_mconfig(machine_config &config)
{
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_screen_update(m_gdc, FUNC(ef9365_device::screen_update));
- screen.set_size(1024, 512);
- screen.set_visarea(0, 1024-1, 0, 512-1);
- screen.set_refresh_hz(50);
- PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
+ screen.set_screen_update(m_gdc, FUNC(ef9365_device::screen_update));
+ screen.set_size(1024, 512);
+ screen.set_visarea(0, 1024-1, 0, 512-1);
+ screen.set_refresh_hz(50);
+ PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
- screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen2.set_screen_update(m_avdc, FUNC(scn2674_device::screen_update));
- screen2.set_size(1024, 512);
- screen2.set_visarea(0, 1024-1, 0, 512-1);
- screen2.set_refresh_hz(50);
+ screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER, rgb_t::green()));
+ screen2.set_screen_update(m_avdc, FUNC(scn2674_device::screen_update));
+ screen2.set_size(1024, 512);
+ screen2.set_visarea(0, 1024-1, 0, 512-1);
+ screen2.set_refresh_hz(50);
- GFXDECODE(config, "gfxdecode", "palette", gfx_partner);
+ GFXDECODE(config, "gfxdecode", "palette", gfx_partner);
- EF9365(config, m_gdc, XTAL(24'000'000) / 16); // EF9367 1.5 MHz
- m_gdc->set_screen("screen");
- m_gdc->set_addrmap(0, &idpartner_gdp_device::gdc_map);
- m_gdc->set_palette_tag("palette");
- m_gdc->set_nb_bitplanes(1);
- m_gdc->set_display_mode(ef9365_device::DISPLAY_MODE_1024x512);
- m_gdc->write_msl().set(FUNC(idpartner_gdp_device::msl_w));
+ EF9365(config, m_gdc, XTAL(24'000'000) / 16); // EF9367 1.5 MHz
+ m_gdc->set_screen("screen");
+ m_gdc->set_addrmap(0, &idpartner_gdp_device::gdc_map);
+ m_gdc->set_palette_tag("palette");
+ m_gdc->set_nb_bitplanes(1);
+ m_gdc->set_display_mode(ef9365_device::DISPLAY_MODE_1024x512);
+ m_gdc->write_msl().set(FUNC(idpartner_gdp_device::msl_w));
- TIMER(config, "scanline").configure_scanline(FUNC(idpartner_gdp_device::scanline), "screen", 0, 1);
+ TIMER(config, "scanline").configure_scanline(FUNC(idpartner_gdp_device::scanline), "screen", 0, 1);
- SCN2674(config, m_avdc, XTAL(24'000'000) / 16); // SCN2674B
- m_avdc->set_screen("screen2");
- m_avdc->set_character_width(12);
+ SCN2674(config, m_avdc, XTAL(24'000'000) / 16); // SCN2674B
+ m_avdc->set_screen("screen2");
+ m_avdc->set_character_width(12);
m_avdc->set_addrmap(0, &idpartner_gdp_device::char_map);
m_avdc->set_addrmap(1, &idpartner_gdp_device::attr_map);
- m_avdc->set_display_callback(FUNC(idpartner_gdp_device::draw_character));
- //m_avdc->intr_callback().set(FUNC(idpartner_gdp_device::nmi_w));
+ m_avdc->set_display_callback(FUNC(idpartner_gdp_device::draw_character));
+ //m_avdc->intr_callback().set(FUNC(idpartner_gdp_device::nmi_w));
- Z80PIO(config, m_pio, XTAL(8'000'000) / 2);
- m_pio->out_int_callback().set(FUNC(idpartner_gdp_device::int_w));
- m_pio->out_pa_callback().set(FUNC(idpartner_gdp_device::porta_w));
- m_pio->out_pb_callback().set(FUNC(idpartner_gdp_device::portb_w));
+ Z80PIO(config, m_pio, XTAL(8'000'000) / 2);
+ m_pio->out_int_callback().set(FUNC(idpartner_gdp_device::int_w));
+ m_pio->out_pa_callback().set(FUNC(idpartner_gdp_device::porta_w));
+ m_pio->out_pb_callback().set(FUNC(idpartner_gdp_device::portb_w));
}
} // anonymous namespace
diff --git a/src/devices/bus/idpartner/sasi.cpp b/src/devices/bus/idpartner/sasi.cpp
index cc9506a38c4..7fdeb141e88 100644
--- a/src/devices/bus/idpartner/sasi.cpp
+++ b/src/devices/bus/idpartner/sasi.cpp
@@ -16,46 +16,46 @@
namespace {
class idpartner_sasi_device :
- public device_t,
- public bus::idpartner::device_exp_card_interface
+ public device_t,
+ public bus::idpartner::device_exp_card_interface
{
public:
- // construction/destruction
- idpartner_sasi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // construction/destruction
+ idpartner_sasi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
- // device_t implementation
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
+ // device_t implementation
+ virtual void device_start() override;
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
- u8 stat_r();
- u8 data_r();
- void ctrl_w(u8 data);
- void data_w(u8 data);
- void reset_w(u8 data);
+ u8 stat_r();
+ u8 data_r();
+ void ctrl_w(u8 data);
+ void data_w(u8 data);
+ void reset_w(u8 data);
void req_w(int state);
- void io_w(int state);
+ void io_w(int state);
private:
required_device m_sasibus;
required_device m_sasi;
- int m_drq_enable;
- int m_data_enable;
- int m_prev_daq;
+ int m_drq_enable;
+ int m_data_enable;
+ int m_prev_daq;
};
idpartner_sasi_device::idpartner_sasi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, IDPARTNER_SASI, tag, owner, clock)
- , bus::idpartner::device_exp_card_interface(mconfig, *this)
- , m_sasibus(*this, "sasibus")
+ : device_t(mconfig, IDPARTNER_SASI, tag, owner, clock)
+ , bus::idpartner::device_exp_card_interface(mconfig, *this)
+ , m_sasibus(*this, "sasibus")
, m_sasi(*this, "sasibus:7:scsicb")
- , m_drq_enable(0)
- , m_data_enable(0)
- , m_prev_daq(0)
+ , m_drq_enable(0)
+ , m_data_enable(0)
+ , m_prev_daq(0)
{
}
@@ -65,101 +65,101 @@ idpartner_sasi_device::idpartner_sasi_device(const machine_config &mconfig, cons
void idpartner_sasi_device::device_start()
{
- m_bus->io().install_read_handler (0x10, 0x10, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::stat_r))); // RDSTAT
- m_bus->io().install_read_handler (0x11, 0x11, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::data_r))); // RDDATA
- m_bus->io().install_write_handler(0x10, 0x10, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::ctrl_w))); // WRCONTR
- m_bus->io().install_write_handler(0x11, 0x11, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::data_w))); // WRDATA
- m_bus->io().install_write_handler(0x12, 0x12, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::reset_w))); // RESET
-
- save_item(NAME(m_drq_enable));
- save_item(NAME(m_data_enable));
- save_item(NAME(m_prev_daq));
+ m_bus->io().install_read_handler (0x10, 0x10, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::stat_r))); // RDSTAT
+ m_bus->io().install_read_handler (0x11, 0x11, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::data_r))); // RDDATA
+ m_bus->io().install_write_handler(0x10, 0x10, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::ctrl_w))); // WRCONTR
+ m_bus->io().install_write_handler(0x11, 0x11, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::data_w))); // WRDATA
+ m_bus->io().install_write_handler(0x12, 0x12, emu::rw_delegate(*this, FUNC(idpartner_sasi_device::reset_w))); // RESET
+
+ save_item(NAME(m_drq_enable));
+ save_item(NAME(m_data_enable));
+ save_item(NAME(m_prev_daq));
}
void idpartner_sasi_device::device_reset()
{
- m_drq_enable = 0;
- m_data_enable = 0;
- m_prev_daq = 0;
- m_bus->drq_w(0);
+ m_drq_enable = 0;
+ m_data_enable = 0;
+ m_prev_daq = 0;
+ m_bus->drq_w(0);
}
u8 idpartner_sasi_device::stat_r()
{
u8 data = (m_sasi->req_r() << 7)
- | (m_sasi->io_r() << 6)
- | (m_sasi->msg_r() << 5)
- | (m_sasi->cd_r() << 4)
- | (m_sasi->bsy_r() << 3);
- return data;
+ | (m_sasi->io_r() << 6)
+ | (m_sasi->msg_r() << 5)
+ | (m_sasi->cd_r() << 4)
+ | (m_sasi->bsy_r() << 3);
+ return data;
}
u8 idpartner_sasi_device::data_r()
{
- u8 data = m_sasi->read();
- if (m_data_enable)
- {
- m_sasi->ack_w(1);
- if (m_drq_enable)
- {
- m_bus->drq_w(0);
- m_prev_daq = 0;
- }
- }
- return data;
+ u8 data = m_sasi->read();
+ if (m_data_enable)
+ {
+ m_sasi->ack_w(1);
+ if (m_drq_enable)
+ {
+ m_bus->drq_w(0);
+ m_prev_daq = 0;
+ }
+ }
+ return data;
}
void idpartner_sasi_device::ctrl_w(u8 data)
{
- m_sasi->write(BIT(data,0));
- m_sasi->sel_w(BIT(data,0));
- m_data_enable = BIT(data,1);
- m_drq_enable = BIT(data,5);
- if (m_data_enable && m_drq_enable)
- {
- m_bus->drq_w(m_sasi->req_r());
- m_prev_daq = m_sasi->req_r();
- } else {
- if (m_prev_daq)
- m_bus->drq_w(0);
- m_prev_daq = 0;
- }
+ m_sasi->write(BIT(data,0));
+ m_sasi->sel_w(BIT(data,0));
+ m_data_enable = BIT(data,1);
+ m_drq_enable = BIT(data,5);
+ if (m_data_enable && m_drq_enable)
+ {
+ m_bus->drq_w(m_sasi->req_r());
+ m_prev_daq = m_sasi->req_r();
+ } else {
+ if (m_prev_daq)
+ m_bus->drq_w(0);
+ m_prev_daq = 0;
+ }
}
void idpartner_sasi_device::data_w(u8 data)
{
- m_sasi->write(data);
- if (m_data_enable)
- {
- m_sasi->ack_w(1);
- if (m_drq_enable)
- {
- m_bus->drq_w(0);
- m_prev_daq = 0;
- }
- }
+ m_sasi->write(data);
+ if (m_data_enable)
+ {
+ m_sasi->ack_w(1);
+ if (m_drq_enable)
+ {
+ m_bus->drq_w(0);
+ m_prev_daq = 0;
+ }
+ }
}
void idpartner_sasi_device::reset_w(u8 data)
{
- m_sasi->rst_w(1);
- m_sasi->rst_w(0);
+ m_sasi->rst_w(1);
+ m_sasi->rst_w(0);
}
void idpartner_sasi_device::req_w(int state)
{
- m_sasi->ack_w(0);
- if (m_data_enable && m_drq_enable)
- {
- m_bus->drq_w(state);
- m_prev_daq = state;
- }
+ m_sasi->ack_w(0);
+ if (m_data_enable && m_drq_enable)
+ {
+ m_bus->drq_w(state);
+ m_prev_daq = state;
+ }
}
void idpartner_sasi_device::io_w(int state)
{
- if (state)
- m_sasi->write(0); // clears lateched data
+ if (state)
+ m_sasi->write(0); // clears lateched data
}
void idpartner_sasi_device::device_add_mconfig(machine_config &config)
@@ -167,12 +167,14 @@ void idpartner_sasi_device::device_add_mconfig(machine_config &config)
NSCSI_BUS(config, m_sasibus);
NSCSI_CONNECTOR(config, "sasibus:0", default_scsi_devices, "s1410", true);
NSCSI_CONNECTOR(config, "sasibus:7", default_scsi_devices, "scsicb", true)
- .option_add_internal("scsicb", NSCSI_CB)
- .machine_config([this](device_t* device) {
- downcast(*device).req_callback().set(*this, FUNC(idpartner_sasi_device::req_w));
- downcast(*device).io_callback().set(*this, FUNC(idpartner_sasi_device::io_w));
- });
- }
+ .option_add_internal("scsicb", NSCSI_CB)
+ .machine_config(
+ [this] (device_t* device)
+ {
+ downcast(*device).req_callback().set(*this, FUNC(idpartner_sasi_device::req_w));
+ downcast(*device).io_callback().set(*this, FUNC(idpartner_sasi_device::io_w));
+ });
+ }
} // anonymous namespace
DEFINE_DEVICE_TYPE_PRIVATE(IDPARTNER_SASI, bus::idpartner::device_exp_card_interface, idpartner_sasi_device, "partner_sai", "Iskra Delta Partner SASI card")
diff --git a/src/devices/bus/msx/cart/cartridge.cpp b/src/devices/bus/msx/cart/cartridge.cpp
index fd9b16e2e19..ade11a98b84 100644
--- a/src/devices/bus/msx/cart/cartridge.cpp
+++ b/src/devices/bus/msx/cart/cartridge.cpp
@@ -81,6 +81,7 @@ void msx_cart(device_slot_interface &device, bool is_in_subslot)
device.option_add_internal(slotoptions::LOVEPLUS, MSX_CART_LOVEPLUS);
device.option_add_internal(slotoptions::MAJUSTUSHI, MSX_CART_MAJUTSUSHI);
device.option_add_internal(slotoptions::MATRA_COMP, MSX_CART_MATRA_COMP);
+ device.option_add_internal(slotoptions::MEGA_SCSI, MSX_CART_MEGA_SCSI);
device.option_add_internal(slotoptions::MSXAUD_FSCA1, MSX_CART_MSX_AUDIO_FSCA1);
device.option_add_internal(slotoptions::MSXAUD_HXMU900, MSX_CART_MSX_AUDIO_HXMU900);
device.option_add_internal(slotoptions::MSXAUD_NMS1205, MSX_CART_MSX_AUDIO_NMS1205);
diff --git a/src/devices/bus/msx/cart/scsi.cpp b/src/devices/bus/msx/cart/scsi.cpp
index 4c29275a344..02bb8d5bf39 100644
--- a/src/devices/bus/msx/cart/scsi.cpp
+++ b/src/devices/bus/msx/cart/scsi.cpp
@@ -4,6 +4,7 @@
#include "scsi.h"
#include "bus/nscsi/devices.h"
+#include "machine/mb87030.h"
#include "machine/nscsi_bus.h"
#include "machine/wd33c9x.h"
@@ -11,19 +12,22 @@
Implementation of SCSI interface as it appeared in:
- MSX Computer Club Gouda MSX-SCSI Interface
+- ESE MegaSCSI
+ - Came with SRAM on the cartridge (128/256/512/1024KB SRAM)
Other known SCSI(-ish) interfaces:
ASCII HD Interface (SASI Interface)
B.E.R.T.
-ESE MegaSCSI
-- Came with SRAM on the cartridge (128/256/512/1024KB SRAM)
HSH SCSI Interface
MAK/Green/Sparrowsoft SCSI Interface
MK SCSI Interface
- Evolved into B.E.R.T. SCSI Interface.
+TODO:
+- Fix MegaSCSI mb89352 write operation at 8MHz.
+
*/
namespace
@@ -47,15 +51,9 @@ class msx_cart_gouda_scsi_device : public device_t, public msx_cart_interface
private:
required_device m_wd33c93a;
- void wd33c93a(device_t *device);
void reset_w(u8 data);
};
-void msx_cart_gouda_scsi_device::wd33c93a(device_t *device)
-{
- device->set_clock(10'000'000);
-}
-
void msx_cart_gouda_scsi_device::device_add_mconfig(machine_config &config)
{
NSCSI_BUS(config, "scsi", 0);
@@ -65,9 +63,7 @@ void msx_cart_gouda_scsi_device::device_add_mconfig(machine_config &config)
NSCSI_CONNECTOR(config, "scsi:3", default_scsi_devices, nullptr, false);
NSCSI_CONNECTOR(config, "scsi:4", default_scsi_devices, nullptr, false);
NSCSI_CONNECTOR(config, "scsi:5", default_scsi_devices, nullptr, false);
- NSCSI_CONNECTOR(config, "scsi:6").option_set("wd33c93a", WD33C93A)
- .machine_config([this] (device_t *device) { wd33c93a(device); });
-
+ NSCSI_CONNECTOR(config, "scsi:6").option_set("wd33c93a", WD33C93A).clock(10_MHz_XTAL);
}
std::error_condition msx_cart_gouda_scsi_device::initialize_cartridge(std::string &message)
@@ -98,6 +94,144 @@ void msx_cart_gouda_scsi_device::reset_w(u8 data)
m_wd33c93a->reset_w(data);
}
+
+
+class msx_cart_mega_scsi_device : public device_t, public msx_cart_interface
+{
+public:
+ msx_cart_mega_scsi_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, MSX_CART_MEGA_SCSI, tag, owner, clock)
+ , msx_cart_interface(mconfig, *this)
+ , m_mb89352a(*this, "scsi:7:mb89352a")
+ , m_srambank(*this, "srambank%u", 0U)
+ , m_view0(*this, "view0")
+ , m_view2(*this, "view2")
+ , m_view3(*this, "view3")
+ , m_bank_mask(0)
+ { }
+
+ virtual std::error_condition initialize_cartridge(std::string &message) override;
+
+ static constexpr feature_type imperfect_features() { return feature::TIMING; }
+
+protected:
+ virtual void device_start() override { }
+ virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
+
+private:
+ static constexpr size_t BANK_SIZE = 0x2000;
+
+ required_device m_mb89352a;
+ memory_bank_array_creator<4> m_srambank;
+ memory_view m_view0;
+ memory_view m_view2;
+ memory_view m_view3;
+ u8 m_bank_mask;
+
+ template void bank_w(u8 data);
+};
+
+void msx_cart_mega_scsi_device::device_add_mconfig(machine_config &config)
+{
+ NSCSI_BUS(config, "scsi", 0);
+ NSCSI_CONNECTOR(config, "scsi:0", default_scsi_devices, "harddisk", false);
+ NSCSI_CONNECTOR(config, "scsi:1", default_scsi_devices, nullptr, false);
+ NSCSI_CONNECTOR(config, "scsi:2", default_scsi_devices, nullptr, false);
+ NSCSI_CONNECTOR(config, "scsi:3", default_scsi_devices, nullptr, false);
+ NSCSI_CONNECTOR(config, "scsi:4", default_scsi_devices, nullptr, false);
+ NSCSI_CONNECTOR(config, "scsi:5", default_scsi_devices, nullptr, false);
+ NSCSI_CONNECTOR(config, "scsi:6", default_scsi_devices, nullptr, false);
+ // Input clock is 8MHz according to the schematic. However, clocks below 11MHz cause writes to fail. Reads are fine at 8MHz.
+ //NSCSI_CONNECTOR(config, "scsi:7").option_set("mb89352a", MB89352).clock(16_MHz_XTAL/2);
+ NSCSI_CONNECTOR(config, "scsi:7").option_set("mb89352a", MB89352).clock(11'000'000);
+}
+
+void msx_cart_mega_scsi_device::device_reset()
+{
+ for (int i = 0; i < 4; i++)
+ m_srambank[i]->set_entry(0);
+ m_view0.select(0);
+ m_view2.select(0);
+ m_view3.select(0);
+}
+
+std::error_condition msx_cart_mega_scsi_device::initialize_cartridge(std::string &message)
+{
+ if (!cart_sram_region())
+ {
+ message = "msx_cart_mega_scsi_device: Required region 'sram' was not found.";
+ return image_error::INTERNAL;
+ }
+
+ const u32 sram_size = cart_sram_region()->bytes();
+
+ if (sram_size != 0x20000 && sram_size != 0x40000 && sram_size != 0x80000 && sram_size != 0x100000)
+ {
+ message = "msx_cart_mega_scsi_device: Region 'sram' has unsupported size.";
+ return image_error::INVALIDLENGTH;
+ }
+
+ const u16 sram_banks = sram_size / BANK_SIZE;
+ m_bank_mask = sram_banks - 1;
+
+ for (int i = 0; i < 4; i++)
+ m_srambank[i]->configure_entries(0, sram_banks, cart_sram_region()->base(), BANK_SIZE);
+
+ page(1)->install_view(0x4000, 0x5fff, m_view0);
+ m_view0[0].install_read_bank(0x4000, 0x5fff, m_srambank[0]);
+ m_view0[1].install_readwrite_bank(0x4000, 0x5fff, m_srambank[0]);
+ m_view0[2].install_read_handler(0x4000, 0x4fff, emu::rw_delegate(*m_mb89352a, FUNC(mb89352_device::dma_r)));
+ m_view0[2].install_write_handler(0x4000, 0x4fff, emu::rw_delegate(*m_mb89352a, FUNC(mb89352_device::dma_w)));
+ // mb89352 is mirrored at 5000 - 5fff
+ for (int i = 0; i < 0x1000; i += 0x10)
+ m_view0[2].install_device(0x5000 + i, 0x500f + i, *m_mb89352a, &mb89352_device::map);
+ page(1)->install_read_bank(0x6000, 0x7fff, m_srambank[1]);
+ page(2)->install_view(0x8000, 0x9fff, m_view2);
+ m_view2[0].install_read_bank(0x8000, 0x9fff, m_srambank[2]);
+ m_view2[1].install_readwrite_bank(0x8000, 0x9fff, m_srambank[2]);
+ m_view2[2].install_read_handler(0x8000, 0x8fff, emu::rw_delegate(*m_mb89352a, FUNC(mb89352_device::dma_r)));
+ m_view2[2].install_write_handler(0x8000, 0x8fff, emu::rw_delegate(*m_mb89352a, FUNC(mb89352_device::dma_w)));
+ // mb89352 is mirrored at 9000 - 9fff
+ for (int i = 0; i < 0x1000; i += 0x10)
+ m_view2[2].install_device(0x9000 + i, 0x900f + i, *m_mb89352a, &mb89352_device::map);
+ page(2)->install_view(0xa000, 0xbfff, m_view3);
+ m_view3[0].install_read_bank(0xa000, 0xbfff, m_srambank[3]);
+ m_view3[1].install_readwrite_bank(0xa000, 0xbfff, m_srambank[3]);
+ m_view3[2].install_read_handler(0xa000, 0xafff, emu::rw_delegate(*m_mb89352a, FUNC(mb89352_device::dma_r)));
+ m_view3[2].install_write_handler(0xa000, 0xafff, emu::rw_delegate(*m_mb89352a, FUNC(mb89352_device::dma_w)));
+ // mb89352 is mirrored at b000 - bfff
+ for (int i = 0; i < 0x1000; i += 0x10)
+ m_view3[2].install_device(0xb000 + i, 0xb00f + i, *m_mb89352a, &mb89352_device::map);
+
+ page(1)->install_write_handler(0x6000, 0x67ff, emu::rw_delegate(*this, FUNC(msx_cart_mega_scsi_device::bank_w<0>)));
+ page(1)->install_write_handler(0x6800, 0x6fff, emu::rw_delegate(*this, FUNC(msx_cart_mega_scsi_device::bank_w<1>)));
+ page(1)->install_write_handler(0x7000, 0x77ff, emu::rw_delegate(*this, FUNC(msx_cart_mega_scsi_device::bank_w<2>)));
+ page(1)->install_write_handler(0x7800, 0x7fff, emu::rw_delegate(*this, FUNC(msx_cart_mega_scsi_device::bank_w<3>)));
+
+ return std::error_condition();
+}
+
+template
+void msx_cart_mega_scsi_device::bank_w(u8 data)
+{
+ // Also writes of $00 and $10 to 7ffe are seen before banking; some kind of banking enable?
+ m_srambank[Bank]->set_entry(data & m_bank_mask);
+ if (Bank != 1)
+ {
+ int view_to_select = BIT(data, 7) ? 1 : (BIT(data, 6) ? 2 : 0);
+
+ if (Bank == 0)
+ m_view0.select(view_to_select);
+ if (Bank == 2)
+ m_view2.select(view_to_select);
+ if (Bank == 3)
+ m_view3.select(view_to_select);
+ }
+}
+
+
} // anonymous namespace
DEFINE_DEVICE_TYPE_PRIVATE(MSX_CART_GOUDA_SCSI, msx_cart_interface, msx_cart_gouda_scsi_device, "msx_cart_gouda_scsi", "MSX Computer Club Gouda MSX-SCSI Interface")
+DEFINE_DEVICE_TYPE_PRIVATE(MSX_CART_MEGA_SCSI, msx_cart_interface, msx_cart_mega_scsi_device, "msx_cart_mega_scsi", "ESE MEGA-SCSI")
diff --git a/src/devices/bus/msx/cart/scsi.h b/src/devices/bus/msx/cart/scsi.h
index cd58c3cc76a..5e371f436c6 100644
--- a/src/devices/bus/msx/cart/scsi.h
+++ b/src/devices/bus/msx/cart/scsi.h
@@ -8,5 +8,6 @@
#include "bus/msx/slot/cartridge.h"
DECLARE_DEVICE_TYPE(MSX_CART_GOUDA_SCSI, msx_cart_interface)
+DECLARE_DEVICE_TYPE(MSX_CART_MEGA_SCSI, msx_cart_interface)
#endif // MAME_BUS_MSX_CART_SCSI_H
diff --git a/src/devices/bus/msx/cart/slotoptions.cpp b/src/devices/bus/msx/cart/slotoptions.cpp
index 966799b0f0d..493f1d13ca3 100644
--- a/src/devices/bus/msx/cart/slotoptions.cpp
+++ b/src/devices/bus/msx/cart/slotoptions.cpp
@@ -31,8 +31,8 @@ char const *const DISK_NMS1200 = "disk_nms1200";
char const *const DISK_TADPF550 = "disk_tadpf550";
char const *const DISK_VY0010 = "disk_vy0010";
char const *const DOOLY = "dooly";
-char const *const EC701 = "ec701";
char const *const EASISPEECH = "easispeech";
+char const *const EC701 = "ec701";
char const *const FMPAC = "fmpac";
char const *const FS_SR021 = "fs_sr021";
char const *const FS_SR022 = "fs_sr022";
@@ -55,6 +55,7 @@ char const *const KOREAN_HYDLIDE2 = "korean_hydlide2";
char const *const LOVEPLUS = "loveplus";
char const *const MAJUSTUSHI = "majutsushi";
char const *const MATRA_COMP = "matra_comp";
+char const *const MEGA_SCSI = "mega_scsi";
char const *const MM256K = "mm256k";
char const *const MM512K = "mm512k";
char const *const MM768K = "mm768k";
diff --git a/src/devices/bus/msx/cart/slotoptions.h b/src/devices/bus/msx/cart/slotoptions.h
index a676bded174..c2f96a782d6 100644
--- a/src/devices/bus/msx/cart/slotoptions.h
+++ b/src/devices/bus/msx/cart/slotoptions.h
@@ -34,8 +34,8 @@ extern char const *const DISK_NMS1200;
extern char const *const DISK_TADPF550;
extern char const *const DISK_VY0010;
extern char const *const DOOLY;
-extern char const *const EC701;
extern char const *const EASISPEECH;
+extern char const *const EC701;
extern char const *const FMPAC;
extern char const *const FS_SR021;
extern char const *const FS_SR022;
@@ -58,6 +58,7 @@ extern char const *const KOREAN_HYDLIDE2;
extern char const *const LOVEPLUS;
extern char const *const MAJUSTUSHI;
extern char const *const MATRA_COMP;
+extern char const *const MEGA_SCSI;
extern char const *const MM256K;
extern char const *const MM512K;
extern char const *const MM768K;
diff --git a/src/devices/bus/pci/ess_maestro.cpp b/src/devices/bus/pci/ess_maestro.cpp
index 1bd479d0cf1..a6a3107d1ac 100644
--- a/src/devices/bus/pci/ess_maestro.cpp
+++ b/src/devices/bus/pci/ess_maestro.cpp
@@ -87,14 +87,14 @@ uint8_t es1946_solo1e_device::capptr_r()
void es1946_solo1e_device::config_map(address_map &map)
{
pci_card_device::config_map(map);
-// map(0x40, 0x41) Legacy Audio Control
-// map(0x50, 0x53) ES1946 Config
-// map(0x60, 0x61) DDMA Control
+// map(0x40, 0x41) Legacy Audio Control
+// map(0x50, 0x53) ES1946 Config
+// map(0x60, 0x61) DDMA Control
// ACPI
map(0xc0, 0xc0).lr8(NAME([] () { return 0x01; }));
map(0xc1, 0xc1).lr8(NAME([] () { return 0x00; })); // NULL pointer
-// map(0xc2, 0xc3) Power Management Capabilities
-// map(0xc4, 0xc5) Power Management Control/Status
+// map(0xc2, 0xc3) Power Management Capabilities
+// map(0xc4, 0xc5) Power Management Control/Status
}
void es1946_solo1e_device::extended_map(address_map &map)
diff --git a/src/devices/bus/pci/ess_maestro.h b/src/devices/bus/pci/ess_maestro.h
index 979c85641d5..bb65bc9ec8e 100644
--- a/src/devices/bus/pci/ess_maestro.h
+++ b/src/devices/bus/pci/ess_maestro.h
@@ -22,10 +22,10 @@ class es1946_solo1e_device : public pci_card_device
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
-// virtual const tiny_rom_entry *device_rom_region() const override;
+// virtual const tiny_rom_entry *device_rom_region() const override;
-// virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
-// uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
+// virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
+// uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
virtual void config_map(address_map &map) override;
diff --git a/src/devices/bus/pci/vt6306.cpp b/src/devices/bus/pci/vt6306.cpp
index a68bace280d..4af9cd01c48 100644
--- a/src/devices/bus/pci/vt6306.cpp
+++ b/src/devices/bus/pci/vt6306.cpp
@@ -33,7 +33,7 @@ vt6306_device::vt6306_device(const machine_config &mconfig, device_type type, co
{
set_ids(0x11063044, 0x00, 0x0c0010, 0x11063044);
// Sunix UFC3212V has these values
-// set_ids(0x11063044, 0x46, 0x0c0010, 0x1106e8c1);
+// set_ids(0x11063044, 0x46, 0x0c0010, 0x1106e8c1);
}
vt6306_device::vt6306_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
@@ -52,7 +52,7 @@ void vt6306_device::device_start()
add_map(2048, M_MEM, FUNC(vt6306_device::ohci_mmio_map));
add_map( 128, M_IO, FUNC(vt6306_device::vio_map));
-// add_map( 256, M_MEM, FUNC(vt6306_device::cardbus_map));
+// add_map( 256, M_MEM, FUNC(vt6306_device::cardbus_map));
// INTA#
intr_pin = 1;
@@ -81,11 +81,11 @@ u8 vt6306_device::capptr_r()
void vt6306_device::config_map(address_map &map)
{
pci_card_device::config_map(map);
-// map(0x40, 0x43) PCI HCI Control (?)
+// map(0x40, 0x43) PCI HCI Control (?)
// ACPI
map(0x50, 0x50).lr8(NAME([] () { return 0x01; }));
map(0x51, 0x51).lr8(NAME([] () { return 0x00; })); // NULL pointer
-// map(0x52, 0x57) PCI Power Management v1.1
+// map(0x52, 0x57) PCI Power Management v1.1
}
void vt6306_device::ohci_mmio_map(address_map &map)
diff --git a/src/devices/bus/pci/vt6306.h b/src/devices/bus/pci/vt6306.h
index ea8ea0f953d..a11c355b58c 100644
--- a/src/devices/bus/pci/vt6306.h
+++ b/src/devices/bus/pci/vt6306.h
@@ -20,8 +20,8 @@ class vt6306_device : public pci_card_device
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
-// virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
-// uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
+// virtual void map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
+// uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) override;
virtual void config_map(address_map &map) override;
diff --git a/src/devices/bus/qbus/dvk_mx.cpp b/src/devices/bus/qbus/dvk_mx.cpp
index f164dbbe7ce..fb95431e270 100644
--- a/src/devices/bus/qbus/dvk_mx.cpp
+++ b/src/devices/bus/qbus/dvk_mx.cpp
@@ -2,19 +2,19 @@
// copyright-holders:Sergey Svishchev
/***************************************************************************
- DVK "MX" floppy controller (decimal ID 3.057.122)
+ DVK "MX" floppy controller (decimal ID 3.057.122)
- Supports four 5.25" drives (single- or double-sided, 40- or 80-track).
+ Supports four 5.25" drives (single- or double-sided, 40- or 80-track).
- Uses FM encoding and software-defined track format;
- usually 11 sectors of 256 bytes, with simple additive checksum.
+ Uses FM encoding and software-defined track format;
+ usually 11 sectors of 256 bytes, with simple additive checksum.
- RT-11 driver name: MX.SYS
+ RT-11 driver name: MX.SYS
- References:
- https://emuverse.ru/downloads/computers/DVK/docs/KMD/kngmd_MX_2.djvu
- https://torlus.com/floppy/forum/viewtopic.php?t=1384
- http://hobot.pdp-11.ru/ukdwk_archive/dwkwebcomplekt/DWKFiles/mx/README.mx1
+ References:
+ https://emuverse.ru/downloads/computers/DVK/docs/KMD/kngmd_MX_2.djvu
+ https://torlus.com/floppy/forum/viewtopic.php?t=1384
+ http://hobot.pdp-11.ru/ukdwk_archive/dwkwebcomplekt/DWKFiles/mx/README.mx1
***************************************************************************/
diff --git a/src/devices/bus/qbus/dvk_mx.h b/src/devices/bus/qbus/dvk_mx.h
index 186942d761e..6dc8482398e 100644
--- a/src/devices/bus/qbus/dvk_mx.h
+++ b/src/devices/bus/qbus/dvk_mx.h
@@ -2,7 +2,7 @@
// copyright-holders:Sergey Svishchev
/***************************************************************************
- DVK "MX" floppy controller (decimal ID 3.057.122)
+ DVK "MX" floppy controller (decimal ID 3.057.122)
***************************************************************************/
diff --git a/src/devices/bus/tim011/aycard.cpp b/src/devices/bus/tim011/aycard.cpp
index 02f19ed69f5..9969716fb44 100644
--- a/src/devices/bus/tim011/aycard.cpp
+++ b/src/devices/bus/tim011/aycard.cpp
@@ -4,7 +4,7 @@
TIM-011 AY Card
- Card created by Zoran Urosevic.
+ Card created by Zoran Urosevic.
**********************************************************************/
@@ -25,7 +25,7 @@ static INPUT_PORTS_START(joystick)
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON2)
-INPUT_PORTS_END
+INPUT_PORTS_END
class tim011_aycard_device :
public device_t,
diff --git a/src/devices/cpu/h8/h8_sci.cpp b/src/devices/cpu/h8/h8_sci.cpp
index dee26a119e0..42038b1d8bb 100644
--- a/src/devices/cpu/h8/h8_sci.cpp
+++ b/src/devices/cpu/h8/h8_sci.cpp
@@ -24,8 +24,8 @@ h8_sci_device::h8_sci_device(const machine_config &mconfig, const char *tag, dev
m_cpu(*this, finder_base::DUMMY_TAG),
m_intc(*this, finder_base::DUMMY_TAG),
m_external_to_internal_ratio(0), m_internal_to_external_ratio(0), m_sync_timer(nullptr), m_id(0), m_eri_int(0), m_rxi_int(0), m_txi_int(0), m_tei_int(0),
- m_tx_state(0), m_rx_state(0), m_tx_bit(0), m_rx_bit(0), m_clock_state(0), m_tx_parity(0), m_rx_parity(0), m_tx_ext_clock_counter(0), m_rx_ext_clock_counter(0), m_clock_mode(clock_mode_t::INTERNAL_ASYNC), m_tx_clock_value(false), m_rx_clock_value(false), m_ext_clock_value(false), m_rx_value(false),
- m_rdr(0), m_tdr(0), m_smr(0), m_scr(0), m_ssr(0), m_brr(0), m_rsr(0), m_tsr(0), m_tx_clock_base(0), m_rx_clock_base(0), m_divider(0)
+ m_tx_state(0), m_rx_state(0), m_tx_bit(0), m_rx_bit(0), m_clock_state(0), m_tx_parity(0), m_rx_parity(0), m_ext_clock_counter(0), m_clock_mode(clock_mode_t::INTERNAL_ASYNC), m_clock_value(false), m_ext_clock_value(false), m_rx_value(false),
+ m_rdr(0), m_tdr(0), m_smr(0), m_scr(0), m_ssr(0), m_brr(0), m_rsr(0), m_tsr(0), m_clock_base(0), m_divider(0)
{
m_external_clock_period = attotime::never;
}
@@ -263,14 +263,11 @@ void h8_sci_device::device_start()
save_item(NAME(m_tx_state));
save_item(NAME(m_tx_parity));
save_item(NAME(m_clock_state));
- save_item(NAME(m_tx_clock_value));
- save_item(NAME(m_rx_clock_value));
- save_item(NAME(m_tx_clock_base));
- save_item(NAME(m_rx_clock_base));
+ save_item(NAME(m_clock_value));
+ save_item(NAME(m_clock_base));
save_item(NAME(m_divider));
save_item(NAME(m_ext_clock_value));
- save_item(NAME(m_tx_ext_clock_counter));
- save_item(NAME(m_rx_ext_clock_counter));
+ save_item(NAME(m_ext_clock_counter));
save_item(NAME(m_cur_sync_time));
}
@@ -290,16 +287,13 @@ void h8_sci_device::device_reset()
m_rx_state = ST_IDLE;
m_clock_state = 0;
m_clock_mode = clock_mode_t::INTERNAL_ASYNC;
- m_tx_clock_base = 0;
- m_rx_clock_base = 0;
+ m_clock_base = 0;
clock_update();
- m_tx_clock_value = true;
- m_rx_clock_value = true;
+ m_clock_value = true;
m_ext_clock_value = true;
- m_tx_ext_clock_counter = 0;
- m_rx_ext_clock_counter = 0;
+ m_ext_clock_counter = 0;
m_rx_value = true;
- m_cpu->do_sci_clk(m_id, m_tx_clock_value);
+ m_cpu->do_sci_clk(m_id, m_clock_value);
m_cpu->do_sci_tx(m_id, 1);
m_cur_sync_time = attotime::never;
}
@@ -331,12 +325,11 @@ void h8_sci_device::do_clk_w(int state)
switch(m_clock_mode) {
case clock_mode_t::EXTERNAL_ASYNC:
if(m_ext_clock_value) {
- m_tx_ext_clock_counter = (m_tx_ext_clock_counter+1) & 15;
- m_rx_ext_clock_counter = (m_rx_ext_clock_counter+1) & 15;
+ m_ext_clock_counter = (m_ext_clock_counter+1) & 15;
- if((m_clock_state & CLK_TX) && m_tx_ext_clock_counter == 0)
+ if((m_clock_state & CLK_TX) && m_ext_clock_counter == 0)
tx_dropped_edge();
- if((m_clock_state & CLK_RX) && m_rx_ext_clock_counter == 8)
+ if((m_clock_state & CLK_RX) && m_ext_clock_counter == 8)
rx_raised_edge();
}
break;
@@ -358,187 +351,112 @@ void h8_sci_device::do_clk_w(int state)
u64 h8_sci_device::internal_update(u64 current_time)
{
- u64 tx_event = 0, rx_event = 0;
+ u64 event = 0;
switch(m_clock_mode) {
case clock_mode_t::INTERNAL_SYNC_OUT:
- if(m_clock_state & CLK_TX) {
+ if(m_clock_state || !m_clock_value) {
u64 fp = m_divider*2;
- if(current_time >= m_tx_clock_base) {
- u64 delta = current_time - m_tx_clock_base;
+ if(current_time >= m_clock_base) {
+ u64 delta = current_time - m_clock_base;
if(delta >= fp) {
delta -= fp;
- m_tx_clock_base += fp;
+ m_clock_base += fp;
}
assert(delta < fp);
bool new_clock = delta >= m_divider;
- if(new_clock != m_tx_clock_value) {
+ if(new_clock != m_clock_value) {
machine().scheduler().synchronize();
- if(!new_clock) {
+ if((!new_clock) && (m_clock_state & CLK_TX))
tx_dropped_edge();
- // HACK: prevent extra transition on SCK output at end of transmission sequence
- if(m_tx_state == ST_IDLE)
- new_clock = true;
- }
-
- m_tx_clock_value = new_clock;
- if(m_clock_state || m_tx_clock_value)
- m_cpu->do_sci_clk(m_id, m_tx_clock_value);
- }
- }
- tx_event = m_tx_clock_base + (m_tx_clock_value ? fp : m_divider);
- }
- if(m_clock_state & CLK_RX) {
- u64 fp = m_divider*2;
- if(current_time >= m_rx_clock_base) {
- u64 delta = current_time - m_rx_clock_base;
- if(delta >= fp) {
- delta -= fp;
- m_rx_clock_base += fp;
- }
- assert(delta < fp);
- bool new_clock = delta >= m_divider;
- if(new_clock != m_rx_clock_value) {
- machine().scheduler().synchronize();
- if(new_clock)
+ else if(new_clock && (m_clock_state & CLK_RX))
rx_raised_edge();
- m_rx_clock_value = new_clock;
+ m_clock_value = new_clock;
+ if(m_clock_state || m_clock_value)
+ m_cpu->do_sci_clk(m_id, m_clock_value);
}
}
- rx_event = m_rx_clock_base + (m_rx_clock_value ? fp : m_divider);
+ event = m_clock_base + (m_clock_value ? fp : m_divider);
}
break;
case clock_mode_t::INTERNAL_ASYNC:
case clock_mode_t::INTERNAL_ASYNC_OUT:
- if(m_clock_state & CLK_TX) {
+ if(m_clock_state || !m_clock_value) {
u64 fp = m_divider*16;
- if(current_time >= m_tx_clock_base) {
- u64 delta = current_time - m_tx_clock_base;
+ if(current_time >= m_clock_base) {
+ u64 delta = current_time - m_clock_base;
if(delta >= fp) {
delta -= fp;
- m_tx_clock_base += fp;
+ m_clock_base += fp;
}
assert(delta < fp);
bool new_clock = delta >= m_divider*8;
- if(new_clock != m_tx_clock_value) {
+ if(new_clock != m_clock_value) {
machine().scheduler().synchronize();
- if(!new_clock) {
+ if((!new_clock) && (m_clock_state & CLK_TX))
tx_dropped_edge();
- // HACK: prevent extra transition on SCK output at end of transmission sequence
- if(m_tx_state == ST_IDLE)
- new_clock = true;
- }
-
- m_tx_clock_value = new_clock;
- if(m_clock_mode == clock_mode_t::INTERNAL_ASYNC_OUT && (m_clock_state || !m_tx_clock_value))
- m_cpu->do_sci_clk(m_id, m_tx_clock_value);
- }
- }
- tx_event = m_tx_clock_base + (m_tx_clock_value ? fp : m_divider*8);
- }
- if(m_clock_state & CLK_RX) {
- u64 fp = m_divider*16;
- if(current_time >= m_rx_clock_base) {
- u64 delta = current_time - m_rx_clock_base;
- if(delta >= fp) {
- delta -= fp;
- m_rx_clock_base += fp;
- }
- assert(delta < fp);
- bool new_clock = delta >= m_divider*8;
- if(new_clock != m_rx_clock_value) {
- machine().scheduler().synchronize();
- if(new_clock)
+ else if(new_clock && (m_clock_state & CLK_RX))
rx_raised_edge();
- m_rx_clock_value = new_clock;
- if(m_clock_mode == clock_mode_t::INTERNAL_ASYNC_OUT && (m_clock_state || !m_rx_clock_value))
- m_cpu->do_sci_clk(m_id, m_rx_clock_value);
+ m_clock_value = new_clock;
+ if(m_clock_mode == clock_mode_t::INTERNAL_ASYNC_OUT && (m_clock_state || !m_clock_value))
+ m_cpu->do_sci_clk(m_id, m_clock_value);
}
}
- rx_event = m_rx_clock_base + (m_rx_clock_value ? fp : m_divider*8);
+
+ event = m_clock_base + (m_clock_value ? fp : m_divider*8);
}
break;
case clock_mode_t::EXTERNAL_RATE_SYNC:
- if(m_clock_state & CLK_TX) {
+ if(m_clock_state || !m_clock_value) {
u64 ctime = u64(current_time*m_internal_to_external_ratio*2);
- if(ctime >= m_tx_clock_base) {
- u64 delta = ctime - m_tx_clock_base;
- m_tx_clock_base += delta & ~1;
+ if(ctime >= m_clock_base) {
+ u64 delta = ctime - m_clock_base;
+ m_clock_base += delta & ~1;
delta &= 1;
bool new_clock = delta >= 1;
- if(new_clock != m_tx_clock_value) {
+ if(new_clock != m_clock_value) {
machine().scheduler().synchronize();
- if(!new_clock)
+ if((!new_clock) && (m_clock_state & CLK_TX))
tx_dropped_edge();
- m_tx_clock_value = new_clock;
- }
- }
-
- tx_event = u64((m_tx_clock_base + (m_tx_clock_value ? 2 : 1))*m_external_to_internal_ratio)+1;
- }
-
- if(m_clock_state & CLK_RX) {
- u64 ctime = u64(current_time*m_internal_to_external_ratio*2);
- if(ctime >= m_rx_clock_base) {
- u64 delta = ctime - m_rx_clock_base;
- m_rx_clock_base += delta & ~1;
- delta &= 1;
- bool new_clock = delta >= 1;
- if(new_clock != m_rx_clock_value) {
- machine().scheduler().synchronize();
- if(new_clock)
+ else if(new_clock && (m_clock_state & CLK_RX))
rx_raised_edge();
- m_rx_clock_value = new_clock;
+ m_clock_value = new_clock;
}
}
- rx_event = u64((m_rx_clock_base + (m_rx_clock_value ? 2 : 1))*m_external_to_internal_ratio)+1;
+ event = u64((m_clock_base + (m_clock_value ? 2 : 1))*m_external_to_internal_ratio)+1;
}
break;
case clock_mode_t::EXTERNAL_RATE_ASYNC:
- if(m_clock_state & CLK_TX) {
+ if(m_clock_state || !m_clock_value) {
u64 ctime = u64(current_time*m_internal_to_external_ratio);
- if(ctime >= m_tx_clock_base) {
- u64 delta = ctime - m_tx_clock_base;
- m_tx_clock_base += delta & ~15;
+ if(ctime >= m_clock_base) {
+ u64 delta = ctime - m_clock_base;
+ m_clock_base += delta & ~15;
delta &= 15;
bool new_clock = delta >= 8;
- if(new_clock != m_tx_clock_value) {
+ if(new_clock != m_clock_value) {
machine().scheduler().synchronize();
- if(!new_clock)
+ if((!new_clock) && (m_clock_state & CLK_TX))
tx_dropped_edge();
- m_tx_clock_value = new_clock;
- }
- }
- tx_event = u64((m_tx_clock_base + (m_tx_clock_value ? 16 : 8))*m_external_to_internal_ratio)+1;
- }
- if(m_clock_state & CLK_RX) {
- u64 ctime = u64(current_time*m_internal_to_external_ratio);
- if(ctime >= m_rx_clock_base) {
- u64 delta = ctime - m_rx_clock_base;
- m_rx_clock_base += delta & ~15;
- delta &= 15;
- bool new_clock = delta >= 8;
- if(new_clock != m_rx_clock_value) {
- machine().scheduler().synchronize();
- if(new_clock)
+ else if(new_clock && (m_clock_state & CLK_RX))
rx_raised_edge();
- m_rx_clock_value = new_clock;
+ m_clock_value = new_clock;
}
}
- rx_event = u64((m_rx_clock_base + (m_rx_clock_value ? 16 : 8))*m_external_to_internal_ratio)+1;
+ event = u64((m_clock_base + (m_clock_value ? 16 : 8))*m_external_to_internal_ratio)+1;
}
break;
@@ -546,9 +464,6 @@ u64 h8_sci_device::internal_update(u64 current_time)
case clock_mode_t::EXTERNAL_SYNC:
break;
}
- u64 event = rx_event;
- if(!event || (tx_event && tx_event < event))
- event = tx_event;
if(event) {
attotime ctime = machine().time();
attotime sync_time = attotime::from_ticks(event-10, m_cpu->clock());
@@ -557,6 +472,7 @@ u64 h8_sci_device::internal_update(u64 current_time)
m_cur_sync_time = sync_time;
}
}
+
return event;
}
@@ -566,50 +482,41 @@ void h8_sci_device::clock_start(int mode)
if(m_clock_state & mode)
return;
- machine().scheduler().synchronize();
- m_clock_state |= mode;
- switch(m_clock_mode) {
- case clock_mode_t::INTERNAL_ASYNC:
- case clock_mode_t::INTERNAL_ASYNC_OUT:
- case clock_mode_t::INTERNAL_SYNC_OUT:
- if(V>=1) logerror("Starting internal clock\n");
- if(mode == CLK_TX)
- m_tx_clock_base = machine().time().as_ticks(m_cpu->clock());
- else
- m_rx_clock_base = machine().time().as_ticks(m_cpu->clock());
- m_cpu->internal_update();
- break;
+ if(!m_clock_state) {
+ machine().scheduler().synchronize();
+ m_clock_state = mode;
+ switch(m_clock_mode) {
+ case clock_mode_t::INTERNAL_ASYNC:
+ case clock_mode_t::INTERNAL_ASYNC_OUT:
+ case clock_mode_t::INTERNAL_SYNC_OUT:
+ if(V>=2) logerror("Starting internal clock\n");
+ m_clock_base = m_cpu->total_cycles();
+ m_cpu->internal_update();
+ break;
- case clock_mode_t::EXTERNAL_RATE_ASYNC:
- if(V>=1) logerror("Simulating external clock async\n");
- if(mode == CLK_TX)
- m_tx_clock_base = u64(m_cpu->total_cycles()*m_internal_to_external_ratio);
- else
- m_rx_clock_base = u64(m_cpu->total_cycles()*m_internal_to_external_ratio);
- m_cpu->internal_update();
- break;
+ case clock_mode_t::EXTERNAL_RATE_ASYNC:
+ if(V>=2) logerror("Simulating external clock async\n");
+ m_clock_base = u64(m_cpu->total_cycles()*m_internal_to_external_ratio);
+ m_cpu->internal_update();
+ break;
- case clock_mode_t::EXTERNAL_RATE_SYNC:
- if(V>=1) logerror("Simulating external clock sync\n");
- if(mode == CLK_TX)
- m_tx_clock_base = u64(m_cpu->total_cycles()*2*m_internal_to_external_ratio);
- else
- m_rx_clock_base = u64(m_cpu->total_cycles()*2*m_internal_to_external_ratio);
- m_cpu->internal_update();
- break;
+ case clock_mode_t::EXTERNAL_RATE_SYNC:
+ if(V>=2) logerror("Simulating external clock sync\n");
+ m_clock_base = u64(m_cpu->total_cycles()*2*m_internal_to_external_ratio);
+ m_cpu->internal_update();
+ break;
- case clock_mode_t::EXTERNAL_ASYNC:
- if(V>=1) logerror("Waiting for external clock async\n");
- if(mode == CLK_TX)
- m_tx_ext_clock_counter = 15;
- else
- m_rx_ext_clock_counter = 15;
- break;
+ case clock_mode_t::EXTERNAL_ASYNC:
+ if(V>=2) logerror("Waiting for external clock async\n");
+ m_ext_clock_counter = 15;
+ break;
- case clock_mode_t::EXTERNAL_SYNC:
- if(V>=1) logerror("Waiting for external clock sync\n");
- break;
- }
+ case clock_mode_t::EXTERNAL_SYNC:
+ if(V>=2) logerror("Waiting for external clock sync\n");
+ break;
+ }
+ } else
+ m_clock_state |= mode;
}
void h8_sci_device::clock_stop(int mode)
diff --git a/src/devices/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h
index 170745fa668..759de13deb3 100644
--- a/src/devices/cpu/h8/h8_sci.h
+++ b/src/devices/cpu/h8/h8_sci.h
@@ -112,12 +112,12 @@ class h8_sci_device : public device_t {
int m_id, m_eri_int, m_rxi_int, m_txi_int, m_tei_int;
- int m_tx_state, m_rx_state, m_tx_bit, m_rx_bit, m_clock_state, m_tx_parity, m_rx_parity, m_tx_ext_clock_counter, m_rx_ext_clock_counter;
+ int m_tx_state, m_rx_state, m_tx_bit, m_rx_bit, m_clock_state, m_tx_parity, m_rx_parity, m_ext_clock_counter;
clock_mode_t m_clock_mode;
- bool m_tx_clock_value, m_rx_clock_value, m_ext_clock_value, m_rx_value;
+ bool m_clock_value, m_ext_clock_value, m_rx_value;
u8 m_rdr, m_tdr, m_smr, m_scr, m_ssr, m_brr, m_rsr, m_tsr;
- u64 m_tx_clock_base, m_rx_clock_base, m_divider;
+ u64 m_clock_base, m_divider;
std::string m_last_clock_message;
diff --git a/src/devices/cpu/m68000/tmp68301.cpp b/src/devices/cpu/m68000/tmp68301.cpp
index dcbd3a4a4a7..5063f504138 100644
--- a/src/devices/cpu/m68000/tmp68301.cpp
+++ b/src/devices/cpu/m68000/tmp68301.cpp
@@ -1099,8 +1099,15 @@ void tmp68301_device::serial_tx_update(int ch)
nstate = m_smr[ch] & SMR_PEN ? SR_PARITY : SR_STOP;
break;
- case SR_PARITY:
- abort();
+ case SR_PARITY: {
+ u32 parity = m_smr[ch] & SMR_PEO ? 0 : 1;
+ for(u32 i = 0; i != 5 + ((m_smr[ch] >> SMR_CL_SFT) & 3); i++)
+ if((m_serial_tx[ch] >> i) & 1)
+ parity = parity ^ 1;
+ m_tx_cb[ch](parity);
+ nstate = SR_STOP;
+ break;
+ }
case SR_STOP:
m_tx_cb[ch](1);
diff --git a/src/devices/cpu/sh/sh7042.cpp b/src/devices/cpu/sh/sh7042.cpp
index 5a468b85969..35f559b47ce 100644
--- a/src/devices/cpu/sh/sh7042.cpp
+++ b/src/devices/cpu/sh/sh7042.cpp
@@ -84,7 +84,7 @@ u8 sh7042_device::adcr_r()
void sh7042_device::adcsr_w(u8 data)
{
logerror("adcsr_w %02x\n", data);
- // u8 prev = m_adcsr;
+ // u8 prev = m_adcsr;
m_adcsr = (data & 0x7f) | (m_adcsr & data & CSR_ADF);
}
diff --git a/src/devices/cpu/sh/sh7042.h b/src/devices/cpu/sh/sh7042.h
index 9c73063d4a6..dabcb7c272b 100644
--- a/src/devices/cpu/sh/sh7042.h
+++ b/src/devices/cpu/sh/sh7042.h
@@ -59,7 +59,7 @@ class sh7042_device : public sh2_device
u8 adcr_r();
void adcsr_w(u8 data);
void adcr_w(u8 data);
-
+
void do_sci_w(int sci, int state);
};
diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index 1a7369521dc..b4e8032d165 100644
--- a/src/devices/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -56,21 +56,21 @@ class t11_device : public cpu_device
// K1801 microcode constants
enum
{
- VM1_STACK = 0177674, // start of HALT mode save area
- VM1_SEL1 = 0177716, // DIP switch register (read) and HALT mode selector (write)
- SEL1_HALT = 010
+ VM1_STACK = 0177674, // start of HALT mode save area
+ VM1_SEL1 = 0177716, // DIP switch register (read) and HALT mode selector (write)
+ SEL1_HALT = 010
};
enum
{
// DEC command set extensions
- IS_LEIS = 1 << 0, // MARK, RTT, SOB, SXT, XOR
- IS_EIS = 1 << 1, // same plus ASH, ASHC, MUL, DIV
- IS_MFPT = 1 << 2, // MFPT
- IS_MXPS = 1 << 3, // MFPS, MTPS
- IS_T11 = 1 << 4, // LEIS without MARK
+ IS_LEIS = 1 << 0, // MARK, RTT, SOB, SXT, XOR
+ IS_EIS = 1 << 1, // same plus ASH, ASHC, MUL, DIV
+ IS_MFPT = 1 << 2, // MFPT
+ IS_MXPS = 1 << 3, // MFPS, MTPS
+ IS_T11 = 1 << 4, // LEIS without MARK
// K1801 command set extensions
- IS_VM1 = 1 << 5, // START, STEP
- IS_VM2 = 1 << 6, // same plus RSEL, MxUS, RCPx, WCPx
+ IS_VM1 = 1 << 5, // START, STEP
+ IS_VM2 = 1 << 6, // same plus RSEL, MxUS, RCPx, WCPx
};
t11_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/devices/machine/mb87030.h b/src/devices/machine/mb87030.h
index 66d6f9dfb53..2040ecf1cd2 100644
--- a/src/devices/machine/mb87030.h
+++ b/src/devices/machine/mb87030.h
@@ -74,9 +74,9 @@ class mb87030_device : public nscsi_device, public nscsi_slot_card_interface
constexpr static uint8_t SCTL_RESET_AND_DISABLE = 0x80;
constexpr static uint8_t SCMD_TERM_MODE = 0x01;
- constexpr static uint8_t SCMD_PRG_XFER = 0x02;
- constexpr static uint8_t SCMD_INTERCEPT_XFER = 0x04;
- constexpr static uint8_t SCMD_RST_OUT = 0x08;
+ constexpr static uint8_t SCMD_PRG_XFER = 0x04;
+ constexpr static uint8_t SCMD_INTERCEPT_XFER = 0x08;
+ constexpr static uint8_t SCMD_RST_OUT = 0x10;
constexpr static uint8_t SCMD_CMD_BUS_RELEASE = 0x00;
constexpr static uint8_t SCMD_CMD_SELECT = 0x20;
constexpr static uint8_t SCMD_CMD_RESET_ATN = 0x40;
diff --git a/src/devices/machine/z80dma.cpp b/src/devices/machine/z80dma.cpp
index 56dda122074..34c40b6183c 100644
--- a/src/devices/machine/z80dma.cpp
+++ b/src/devices/machine/z80dma.cpp
@@ -493,7 +493,7 @@ TIMER_CALLBACK_MEMBER(z80dma_device::timerproc)
{
m_out_int_cb(CLEAR_LINE);
m_is_pulse = false;
- }
+ }
else
{
if ((m_byte_counter & 0xff)==PULSE_CTRL && is_ready())
diff --git a/src/devices/sound/swp30.cpp b/src/devices/sound/swp30.cpp
index f592ea4b66f..4f84d9f9ed3 100644
--- a/src/devices/sound/swp30.cpp
+++ b/src/devices/sound/swp30.cpp
@@ -1494,7 +1494,7 @@ void swp30_device::execute_run()
while(adr <= target_address) {
m_dpcm_current[chan] = m_dpcm_next[chan];
s32 sample = m_dpcm_next[chan] + m_dpcm[(m_rom_cache.read_dword(adr >> 2) >> (8*(adr & 3))) & 0xff];
- // logerror("## + sample %08x %02x %d\n", adr, (m_rom_cache.read_dword(adr >> 2) >> (8*(adr & 3))) & 0xff, sample);
+ // logerror("## + sample %08x %02x %d\n", adr, (m_rom_cache.read_dword(adr >> 2) >> (8*(adr & 3))) & 0xff, sample);
adr ++;
if(sample < -0x8000)
sample = -0x8000;
diff --git a/src/devices/video/atirage.cpp b/src/devices/video/atirage.cpp
index 8449eef0245..786e225e2ca 100644
--- a/src/devices/video/atirage.cpp
+++ b/src/devices/video/atirage.cpp
@@ -222,7 +222,7 @@ void atirageiidvd_device::device_start()
m_regs0[CONFIG_CHIP_ID] = 0x55;
m_regs0[CONFIG_CHIP_ID+1] = 0x47;
m_regs0[CONFIG_CHIP_ID+3] = 0x3a;
-// m_regs0[CRTC_GEN_CNTL+3] = 0;
+// m_regs0[CRTC_GEN_CNTL+3] = 0;
// TODO: opt-in Mach64 legacy x86 memory & i/o VGA bridge control
command = 0;
diff --git a/src/lib/util/bitstream.h b/src/lib/util/bitstream.h
index 4f3817afe6f..eb8b2005329 100644
--- a/src/lib/util/bitstream.h
+++ b/src/lib/util/bitstream.h
@@ -40,10 +40,11 @@ class bitstream_in
private:
// internal state
uint32_t m_buffer; // current bit accumulator
- int m_bits; // number of bits in the accumulator
+ int m_bits; // number of bits in the accumulator
const uint8_t * m_read; // read pointer
uint32_t m_doffset; // byte offset within the data
uint32_t m_dlength; // length of the data
+ int m_dbitoffs; // bit offset within current read pointer
};
@@ -64,7 +65,7 @@ class bitstream_out
private:
// internal state
uint32_t m_buffer; // current bit accumulator
- int m_bits; // number of bits in the accumulator
+ int m_bits; // number of bits in the accumulator
uint8_t * m_write; // write pointer
uint32_t m_doffset; // byte offset within the data
uint32_t m_dlength; // length of the data
@@ -85,7 +86,8 @@ inline bitstream_in::bitstream_in(const void *src, uint32_t srclength)
m_bits(0),
m_read(reinterpret_cast(src)),
m_doffset(0),
- m_dlength(srclength)
+ m_dlength(srclength),
+ m_dbitoffs(0)
{
}
@@ -103,12 +105,31 @@ inline uint32_t bitstream_in::peek(int numbits)
// fetch data if we need more
if (numbits > m_bits)
{
- while (m_bits <= 24)
+ while (m_bits < 32)
{
+ uint32_t newbits = 0;
+
if (m_doffset < m_dlength)
- m_buffer |= m_read[m_doffset] << (24 - m_bits);
- m_doffset++;
- m_bits += 8;
+ {
+ // adjust current data to discard any previously read partial bits
+ newbits = (m_read[m_doffset] << m_dbitoffs) & 0xff;
+ }
+
+ if (m_bits + 8 > 32)
+ {
+ // take only what can be used to fill out the rest of the buffer
+ m_dbitoffs = 32 - m_bits;
+ newbits >>= 8 - m_dbitoffs;
+ m_buffer |= newbits;
+ m_bits += m_dbitoffs;
+ }
+ else
+ {
+ m_buffer |= newbits << (24 - m_bits);
+ m_bits += 8 - m_dbitoffs;
+ m_dbitoffs = 0;
+ m_doffset++;
+ }
}
}
@@ -154,6 +175,10 @@ inline uint32_t bitstream_in::read_offset() const
result--;
bits -= 8;
}
+
+ if (m_dbitoffs > bits)
+ result++;
+
return result;
}
@@ -169,7 +194,11 @@ inline uint32_t bitstream_in::flush()
m_doffset--;
m_bits -= 8;
}
- m_bits = m_buffer = 0;
+
+ if (m_dbitoffs > m_bits)
+ m_doffset++;
+
+ m_bits = m_buffer = m_dbitoffs = 0;
return m_doffset;
}
@@ -196,8 +225,11 @@ inline bitstream_out::bitstream_out(void *dest, uint32_t destlength)
inline void bitstream_out::write(uint32_t newbits, int numbits)
{
+ newbits <<= 32 - numbits;
+
// flush the buffer if we're going to overflow it
- if (m_bits + numbits > 32)
+ while (m_bits + numbits >= 32 && numbits > 0)
+ {
while (m_bits >= 8)
{
if (m_doffset < m_dlength)
@@ -207,11 +239,19 @@ inline void bitstream_out::write(uint32_t newbits, int numbits)
m_bits -= 8;
}
- // shift the bits to the top
- if (numbits == 0)
- newbits = 0;
- else
- newbits <<= 32 - numbits;
+ // offload more bits if it'll still overflow the buffer
+ if (m_bits + numbits >= 32)
+ {
+ const int rem = std::min(32 - m_bits, numbits);
+ m_buffer |= newbits >> m_bits;
+ m_bits += rem;
+ newbits <<= rem;
+ numbits -= rem;
+ }
+ }
+
+ if (numbits <= 0)
+ return;
// now shift it down to account for the number of bits we already have and OR them in
m_buffer |= newbits >> m_bits;
diff --git a/src/mame/bandai/design_master.cpp b/src/mame/bandai/design_master.cpp
index 77d7a15f66b..fc8b841b1f7 100644
--- a/src/mame/bandai/design_master.cpp
+++ b/src/mame/bandai/design_master.cpp
@@ -1,6 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
-/******************************************************************************************************************************
+/*******************************************************************************
__________________________________IR___
| ____ RX/TX |
@@ -34,7 +34,7 @@
NOTE: cartridge dumps contain boot vectors so Internal ROM likely only used when no cartridge is present
-******************************************************************************************************************************/
+*******************************************************************************/
#include "emu.h"
#include "cpu/h8/h83337.h"
@@ -89,8 +89,12 @@ void bdsm_state::machine_start()
std::string region_tag;
m_cartslot_region = memregion(region_tag.assign(m_cartslot->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
m_bank->configure_entries(0, (m_cartslot_region->bytes() / 0x8000), m_cartslot_region->base(), 0x8000);
- m_bank->set_entry(0); // only the first bank seems to contain a valid reset vector '0x50' which points at the first code in the ROM. The other banks contain 0x5a00 as the reset vector. IRQ vector seems valid in all banks.
- } else
+
+ // Only the first bank seems to contain a valid reset vector '0x50' which points at the first code in the ROM.
+ // The other banks contain 0x5a00 as the reset vector. IRQ vector seems valid in all banks.
+ m_bank->set_entry(0);
+ }
+ else
m_bank->set_base(memregion("roms")->base());
}
@@ -126,8 +130,8 @@ uint32_t bdsm_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
void bdsm_state::bdesignm(machine_config &config)
{
- /* basic machine hardware */
- H83334(config, m_maincpu, 16_MHz_XTAL / 2); /* H8/328 (24kbytes internal ROM, 1kbyte internal ROM) ?Mhz */
+ // basic machine hardware
+ H83334(config, m_maincpu, 16_MHz_XTAL / 2); // H8/328 (24kbytes internal ROM, 1kbyte internal ROM)
m_maincpu->set_addrmap(AS_PROGRAM, &bdsm_state::mem_map);
m_maincpu->read_port7().set(FUNC(bdsm_state::io_p7_r));
@@ -138,19 +142,25 @@ void bdsm_state::bdesignm(machine_config &config)
m_screen->set_screen_update(FUNC(bdsm_state::screen_update));
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
- GENERIC_CARTSLOT(config, m_cartslot, generic_linear_slot, "bdesignm_cart"); // TODO: this should be a custom bus type with capability to plug the 'design' carts into it
+ // TODO: this should be a custom bus type with capability to plug the 'design' carts into it
+ GENERIC_CARTSLOT(config, m_cartslot, generic_linear_slot, "bdesignm_cart");
//m_cartslot->set_must_be_loaded(true);
- SOFTWARE_LIST(config, "cart_list_game").set_original("bdesignm_game_cart"); // Game carts, these appear to disable the Internal ROM
- SOFTWARE_LIST(config, "cart_list_design").set_original("bdesignm_design_cart"); // You can also plug a design cart directly into the unit for use by the Internal ROM program (they contain no program)
+ // Game carts, these appear to disable the Internal ROM
+ SOFTWARE_LIST(config, "cart_list_game").set_original("bdesignm_game_cart");
+
+ // You can also plug a design cart directly into the unit for use by the Internal ROM program (they contain no program)
+ SOFTWARE_LIST(config, "cart_list_design").set_original("bdesignm_design_cart");
}
ROM_START( bdesignm )
ROM_REGION16_BE(0x88000, "roms", ROMREGION_ERASE00)
- ROM_LOAD( "h8_328_hd6433288f8_l04.ic1", 0x00000, 0x6000, CRC(2c6b8fb0) SHA1(b958b0bc27f18b7dda4fe852b3fd070a66586edb) ) // internal rom (When the console is booted up without a cart it enters the default (builtin) art / drawing program, otherwise probably not used as carts contain boot vectors etc.)
+ // Internal ROM (When the console is booted up without a cart it enters the default (builtin) art / drawing program,
+ // otherwise probably not used as carts contain boot vectors etc.)
+ ROM_LOAD( "h8_328_hd6433288f8_l04.ic1", 0x00000, 0x6000, CRC(2c6b8fb0) SHA1(b958b0bc27f18b7dda4fe852b3fd070a66586edb) )
ROM_END
} // anonymous namespace
-CONS( 1995, bdesignm, 0, 0, bdesignm, bdesignm, bdsm_state, empty_init, "Bandai", "Design Master Denshi Mangajuku", MACHINE_IS_SKELETON )
+CONS( 1995, bdesignm, 0, 0, bdesignm, bdesignm, bdsm_state, empty_init, "Bandai", "Design Master Denshi Mangajuku", MACHINE_IS_SKELETON )
diff --git a/src/mame/bandai/tamag1.cpp b/src/mame/bandai/tamag1.cpp
index 3df9ffe1fdf..7ddc30e55fb 100644
--- a/src/mame/bandai/tamag1.cpp
+++ b/src/mame/bandai/tamag1.cpp
@@ -64,8 +64,7 @@ void tamag1_state::machine_start()
E0C6S46_PIXEL_UPDATE(tamag1_state::pixel_update)
{
- // 16 COM(common) pins, 40 SEG(segment) pins from MCU,
- // 32x16 LCD screen:
+ // 16 COM(common) pins, 40 SEG(segment) pins from MCU, 32x16 LCD screen:
static const int seg2x[0x28] =
{
0, 1, 2, 3, 4, 5, 6, 7,
@@ -102,11 +101,8 @@ void tamag1_state::tama_palette(palette_device &palette) const
INPUT_CHANGED_MEMBER(tamag1_state::input_changed)
{
- // inputs are hooked up backwards here, because MCU input
- // ports are all tied to its interrupt controller
- int line = param;
- int state = newval ? ASSERT_LINE : CLEAR_LINE;
- m_maincpu->set_input_line(line, state);
+ // inputs are hooked up backwards here, because MCU input ports are all tied to its interrupt controller
+ m_maincpu->set_input_line(param, newval ? ASSERT_LINE : CLEAR_LINE);
}
static INPUT_PORTS_START( tama )
@@ -169,5 +165,5 @@ ROM_END
Drivers
*******************************************************************************/
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
SYST( 1997, tama, 0, 0, tama, tama, tamag1_state, empty_init, "Bandai", "Tamagotchi (USA)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index b881062fce2..0a7e0143ca3 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -41716,6 +41716,10 @@ ht68k //
@source:skeleton/hudson_poems.cpp
marimba //
+poembase
+poemgolf
+poemzet
+poemzet2
@source:skeleton/i7000.cpp
i7000 //
diff --git a/src/mame/midway/midyunit.cpp b/src/mame/midway/midyunit.cpp
index 744074ecb69..73de0544b01 100644
--- a/src/mame/midway/midyunit.cpp
+++ b/src/mame/midway/midyunit.cpp
@@ -896,7 +896,7 @@ static INPUT_PORTS_START( term2 )
PORT_DIPSETTING( 0xc000, DEF_STR( USA ) )
PORT_DIPSETTING( 0x8000, DEF_STR( French ) )
PORT_DIPSETTING( 0x4000, DEF_STR( German ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Unused ))
+ PORT_DIPSETTING( 0x0000, DEF_STR( Unused ))
PORT_DIPNAME( 0x2000, 0x0000, "Power-Up Test" ) PORT_DIPLOCATION("DS2:3")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x2000, DEF_STR( On ))
diff --git a/src/mame/misc/gammagic.cpp b/src/mame/misc/gammagic.cpp
index b598ebac5ef..b5e7088d4fc 100644
--- a/src/mame/misc/gammagic.cpp
+++ b/src/mame/misc/gammagic.cpp
@@ -151,12 +151,12 @@ void gammagic_state::gammagic(machine_config &config)
ide.irq_pri().set("pci:07.0", FUNC(i82371sb_isa_device::pc_irq14_w));
ide.irq_sec().set("pci:07.0", FUNC(i82371sb_isa_device::pc_mirq0_w));
ide.subdevice("ide1")->slot(0).set_default_option("xm3301");
-// ide.subdevice("ide1")->slot(0).set_option_machine_config("xm3301", cdrom_config);
+// ide.subdevice("ide1")->slot(0).set_option_machine_config("xm3301", cdrom_config);
ide.subdevice("ide2")->slot(0).set_default_option(nullptr);
PCI_SLOT(config, "pci:1", pci_cards, 15, 0, 1, 2, 3, nullptr);
PCI_SLOT(config, "pci:2", pci_cards, 16, 1, 2, 3, 0, "ess_solo1");
-// PCI_SLOT(config, "pci:3", pci_cards, 17, 2, 3, 0, 1, "voodoo");
+// PCI_SLOT(config, "pci:3", pci_cards, 17, 2, 3, 0, 1, "voodoo");
PCI_SLOT(config, "pci:4", pci_cards, 18, 3, 0, 1, 2, "oti64111");
// FIXME: this should obviously map to above instead of direct PCI mount ...
diff --git a/src/mame/misc/goldnpkr.cpp b/src/mame/misc/goldnpkr.cpp
index 8d4d8a1906f..ce7d156c25c 100644
--- a/src/mame/misc/goldnpkr.cpp
+++ b/src/mame/misc/goldnpkr.cpp
@@ -4154,33 +4154,33 @@ static INPUT_PORTS_START( op5cards )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(3)
PORT_MODIFY("SW1")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:!8")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:!8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:!7")
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:!7")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x00, "Royal Flush" ) PORT_DIPLOCATION("SW1:!6")
+ PORT_DIPNAME( 0x04, 0x00, "Royal Flush" ) PORT_DIPLOCATION("SW1:!6")
PORT_DIPSETTING( 0x04, "Lose" )
PORT_DIPSETTING( 0x00, "OK" )
- PORT_DIPNAME( 0x08, 0x00, "Credit Max" ) PORT_DIPLOCATION("SW1:!5")
+ PORT_DIPNAME( 0x08, 0x00, "Credit Max" ) PORT_DIPLOCATION("SW1:!5")
PORT_DIPSETTING( 0x00, "Disable" )
PORT_DIPSETTING( 0x08, "Enable" )
- PORT_DIPNAME( 0x10, 0x00, "Credit Max Amount" ) PORT_DIPLOCATION("SW1:!4")
+ PORT_DIPNAME( 0x10, 0x00, "Credit Max Amount" ) PORT_DIPLOCATION("SW1:!4")
PORT_DIPSETTING( 0x10, "200" )
PORT_DIPSETTING( 0x00, "500" )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:!3")
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:!3")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Double Up" ) PORT_DIPLOCATION("SW1:!2")
+ PORT_DIPNAME( 0x40, 0x40, "Double Up" ) PORT_DIPLOCATION("SW1:!2")
PORT_DIPSETTING( 0x00, "80%" )
PORT_DIPSETTING( 0x40, "90%" )
- PORT_DIPNAME( 0x80, 0x80, "Port Check" ) PORT_DIPLOCATION("SW1:!1")
+ PORT_DIPNAME( 0x80, 0x80, "Port Check" ) PORT_DIPLOCATION("SW1:!1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_MODIFY("SW2")
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:!6,!7,!8") // coin2 = (coin1 x5); note = (coin1 x10)
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:!6,!7,!8") // coin2 = (coin1 x5); note = (coin1 x10)
PORT_DIPSETTING( 0x00, "Coin1 = 5C-1C; Coin2 = 1C-1C; Note = 1C-2C" )
PORT_DIPSETTING( 0x01, "Coin1 = 2C-1C; Coin2 = 1C-3C; Note = 1C-6C" )
PORT_DIPSETTING( 0x02, "Coin1 = 1C-1C; Coin2 = 1C-5C; Note = 1C-10C" )
@@ -4189,16 +4189,16 @@ static INPUT_PORTS_START( op5cards )
PORT_DIPSETTING( 0x05, "Coin1 = 1C-4C; Coin2 = 1C-20C; Note = 1C-40C" )
PORT_DIPSETTING( 0x06, "Coin1 = 1C-5C; Coin2 = 1C-25C; Note = 1C-50C" )
PORT_DIPSETTING( 0x07, "Coin1 = 1C-10C; Coin2 = 1C-50C; Note = 1C-100C" )
- PORT_DIPNAME( 0x08, 0x00, "Bet Max" ) PORT_DIPLOCATION("SW2:!5")
+ PORT_DIPNAME( 0x08, 0x00, "Bet Max" ) PORT_DIPLOCATION("SW2:!5")
PORT_DIPSETTING( 0x08, "10" )
PORT_DIPSETTING( 0x00, "20" )
- PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:!4")
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:!4")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "Game Duty" ) PORT_DIPLOCATION("SW2:!3")
+ PORT_DIPNAME( 0x20, 0x20, "Game Duty" ) PORT_DIPLOCATION("SW2:!3")
PORT_DIPSETTING( 0x20, "Weak" )
PORT_DIPSETTING( 0x00, "Strong" )
- PORT_DIPNAME( 0xc0, 0xc0, "Pay Rate" ) PORT_DIPLOCATION("SW2:!2,!1")
+ PORT_DIPNAME( 0xc0, 0xc0, "Pay Rate" ) PORT_DIPLOCATION("SW2:!2,!1")
PORT_DIPSETTING( 0x00, "60%" )
PORT_DIPSETTING( 0x40, "70%" )
PORT_DIPSETTING( 0x80, "80%" )
@@ -12065,7 +12065,7 @@ ROM_END
*/
ROM_START( op5cards )
ROM_REGION( 0x10000, "maincpu", 0 )
-// ROM_LOAD( "noname.ic4", 0x8000, 0x8000, CRC(af0ea127) SHA1(466de9a3e2ebe81eac30bbd9139edd71738d33d4) ) // mapping the unrelated program, to check...
+// ROM_LOAD( "noname.ic4", 0x8000, 0x8000, CRC(af0ea127) SHA1(466de9a3e2ebe81eac30bbd9139edd71738d33d4) ) // mapping the unrelated program, to check...
ROM_LOAD( "noname.ic4", 0xc000, 0x4000, CRC(af0ea127) SHA1(466de9a3e2ebe81eac30bbd9139edd71738d33d4) )
ROM_IGNORE( 0x4000) // discarding 2nd half (the unrelated program).
@@ -12094,7 +12094,7 @@ ROM_END
ROM_COPY( "gfxpool", 0x2800, 0x0800, 0x0800 ) // src-dest-size
ROM_COPY( "gfxpool", 0x4800, 0x0000, 0x0800 ) // src-dest-size
- ROM_REGION( 0x1800, "gfx3", 0 ) // nag, held, cards back
+ ROM_REGION( 0x1800, "gfx3", 0 ) // nag, held, cards back
ROM_COPY( "gfxpool", 0x1000, 0x1000, 0x0800 ) // src-dest-size
ROM_COPY( "gfxpool", 0x3000, 0x0800, 0x0800 ) // src-dest-size
ROM_COPY( "gfxpool", 0x5000, 0x0000, 0x0800 ) // src-dest-size
@@ -12591,7 +12591,7 @@ void goldnpkr_state::init_lespenduj()
void goldnpkr_state::init_op5cards()
{
- /* Seems to do a sort of blend
+ /* Seems to do a sort of blend
between a tile bytes from 1468-146f (top left backcard edge)
with 7468-746f range. In this game seems to be only for this tile.
*/
diff --git a/src/mame/pinball/recel.cpp b/src/mame/pinball/recel.cpp
index f80326f8dff..1715c0519c7 100644
--- a/src/mame/pinball/recel.cpp
+++ b/src/mame/pinball/recel.cpp
@@ -9,7 +9,7 @@ This is similar - but not the same - as Gottlieb System 1. Used by various Spani
pinball manufacturers. Recel is the name used for export Petaco machines.
Known machines:
-Alaska, Hot & Cold, Screech, Mr. Evil, Torneo, Crazy Race, Fair Fight, Poker Plus, Mr. Doom, Cavalier, SwashBuckler,
+Alaska, Hot & Cold, Screech, Mr. Evil, Torneo, Crazy Race, Fair Fight, Poker Plus, Mr. Doom, Cavalier, SwashBuckler,
Don Quijote, Space Game, Space Game (Bingo 6+1), The Flipper Game, Black Magic, Black Magic 4, Conquistador.
Suspected machines:
diff --git a/src/mame/rm/rm380z_m.cpp b/src/mame/rm/rm380z_m.cpp
index 947c47dd8d8..97fb0f0d867 100644
--- a/src/mame/rm/rm380z_m.cpp
+++ b/src/mame/rm/rm380z_m.cpp
@@ -265,7 +265,7 @@ void rm380z_state::init_rm380z()
{
m_videomode = RM380Z_VIDEOMODE_80COL;
m_port0_mask = 0xff;
- m_fbfd_mask = 0x1f; // enable hw scrolling (uses lower 5 bits of counter)
+ m_fbfd_mask = 0x1f; // enable hw scrolling (uses lower 5 bits of counter)
}
void rm380z_state::init_rm380z34d()
diff --git a/src/mame/rm/rm380z_v.cpp b/src/mame/rm/rm380z_v.cpp
index 87e88200484..de62d3e9b41 100644
--- a/src/mame/rm/rm380z_v.cpp
+++ b/src/mame/rm/rm380z_v.cpp
@@ -14,14 +14,14 @@ bool rm380z_state::get_rowcol_from_offset(int& row, int& col, offs_t offset) con
{
if (m_videomode == RM380Z_VIDEOMODE_40COL)
{
- col = offset & 0x3f; // the 6 least significant bits give the column (0-39)
- row = offset >> 6; // next 5 bits give the row (0-23)
+ col = offset & 0x3f; // the 6 least significant bits give the column (0-39)
+ row = offset >> 6; // next 5 bits give the row (0-23)
}
else
{
- col = offset & 0x7f; // the 7 least significant bits give the column (0-79)
- row = offset >> 7; // next bit gives bit 0 of row
- row |= (m_fbfe & 0x0f) << 1; // the remaining 4 row bits come from the lower half of PORT 1
+ col = offset & 0x7f; // the 7 least significant bits give the column (0-79)
+ row = offset >> 7; // next bit gives bit 0 of row
+ row |= (m_fbfe & 0x0f) << 1; // the remaining 4 row bits come from the lower half of PORT 1
}
return ((row < RM380Z_SCREENROWS) && (col < RM380Z_SCREENCOLS));
@@ -193,7 +193,7 @@ void rm380z_state::putChar_vdu80(int charnum, int attribs, int x, int y, bitmap_
{
const bool attrUnder = attribs & 0x02;
const bool attrRev = attribs & 0x08;
-
+
int data_pos = (charnum % 128) * 16;
for (int r=0; r < 10; r++, data_pos++)
diff --git a/src/mame/sfrj/galaxy.cpp b/src/mame/sfrj/galaxy.cpp
index 22422a7dd64..467f37642a4 100644
--- a/src/mame/sfrj/galaxy.cpp
+++ b/src/mame/sfrj/galaxy.cpp
@@ -555,7 +555,7 @@ void galaxy_state::galaxyp(machine_config &config)
}
// Original Galaksija kit came with v28 version of ROM A
-// at end of 1984 ROM B appeared and people patched their ROM A v28
+// at end of 1984 ROM B appeared and people patched their ROM A v28
// to make it auto boot ROM B
// later official v29 was made to auto boot ROM B
// chargen also include prompt char with logo of Mipro, Voja Antonic company
@@ -594,7 +594,7 @@ ROM_START (galaxyp)
ROM_REGION( 0x4000, "maincpu", ROMREGION_ERASEFF )
ROM_DEFAULT_BIOS("v29c")
ROM_SYSTEM_BIOS( 0, "v29c", "ROM A v29 boot ROM C" )
- ROMX_LOAD( "rom_a_v29c.dd8", 0x0000, 0x1000, CRC(5cb8fb2a) SHA1(fdddae2b08d0dc81eb6191a92e60ac411d8150e9), ROM_BIOS(0) )
+ ROMX_LOAD( "rom_a_v29c.dd8", 0x0000, 0x1000, CRC(5cb8fb2a) SHA1(fdddae2b08d0dc81eb6191a92e60ac411d8150e9), ROM_BIOS(0) )
ROM_SYSTEM_BIOS( 1, "v29", "ROM A v29" )
ROMX_LOAD( "rom_a_v29.dd8", 0x0000, 0x1000, CRC(e6853bc1) SHA1(aea7a4c0c7ffe1f212f7b9faecfd728862ac6904), ROM_BIOS(1) )
diff --git a/src/mame/sfrj/idpartner.cpp b/src/mame/sfrj/idpartner.cpp
index 10c875e20f8..076ddbfd58f 100644
--- a/src/mame/sfrj/idpartner.cpp
+++ b/src/mame/sfrj/idpartner.cpp
@@ -181,7 +181,7 @@ class idpartner_state : public driver_device
void update_floppy_motor();
void xx2_w(int state) { if (state) { m_floppy_motor = 0; update_floppy_motor(); } }
void write_speed1_clock(int state) { m_sio1->txca_w(state); m_sio1->rxca_w(state); }
- void write_speed2_clock(int state) { m_sio1->txcb_w(state); m_sio1->rxcb_w(state); }
+ void write_speed2_clock(int state) { m_sio1->txcb_w(state); m_sio1->rxcb_w(state); }
void write_speed3_clock(int state) { m_sio2->txca_w(state); m_sio2->rxca_w(state); }
void write_speed4_clock(int state) { m_sio2->txcb_w(state); m_sio2->rxcb_w(state); }
uint8_t memory_read_byte(offs_t offset) { return m_program.read_byte(offset); }
diff --git a/src/mame/sfrj/lola8a.cpp b/src/mame/sfrj/lola8a.cpp
index 7ef0aa1804f..827934c2190 100644
--- a/src/mame/sfrj/lola8a.cpp
+++ b/src/mame/sfrj/lola8a.cpp
@@ -50,10 +50,10 @@ BASIC commands : (must be in UPPERcase)
ARG CALL RND LEFT RIGHT DOT SGN SIN FREE PI FN TAN COS POP PEEK INP LN EXP ATN
Image display is mono, COLOUR x (x = 0 to 3) command switch drawing in mode
- 0 - nothing
- 1 - set 1 on drawn pixel
- 2 - set 0 on drawn pixel
- 3 - xor drawn pixel with current value
+ 0 - nothing
+ 1 - set 1 on drawn pixel
+ 2 - set 0 on drawn pixel
+ 3 - xor drawn pixel with current value
Unknown how to produce sound - there's no commands.
@@ -73,7 +73,7 @@ Control Keys
- C : break? (only does a newline)
- L : clear screen
- M : same as pressing Enter
- - Y : invert screen
+ - Y : invert screen
TO DO
- How to use the sound?
@@ -485,7 +485,7 @@ MC6845_UPDATE_ROW( lola8a_state::crtc_update_row )
for (u8 x = 0; x < x_count; x++)
{
u16 mem = (x+ma)*8 + ra;
- u8 gfx = m_p_videoram[mem] ^ ((cursor_x == x) ? 0xff : 0) ^ inv;
+ u8 gfx = m_p_videoram[mem] ^ ((cursor_x == x) ? 0xff : 0) ^ inv;
if (ra == 8) // empty line when Ctrl-A is used
gfx = inv;
diff --git a/src/mame/sigma/sigmab52.cpp b/src/mame/sigma/sigmab52.cpp
index b9126414488..8bb7d9df959 100644
--- a/src/mame/sigma/sigmab52.cpp
+++ b/src/mame/sigma/sigmab52.cpp
@@ -125,7 +125,7 @@
0x6030 - 0x6030 ; Audio CPU IRQ ack
0x6050 - 0x6050 ; Sound latch
- 0x6060 - 0x6061 ; YM3812
+ 0x6060 - 0x6061 ; YM3812
0x8000 - 0xFFFF ; ROM space.
diff --git a/src/mame/skeleton/hudson_poems.cpp b/src/mame/skeleton/hudson_poems.cpp
index 68d46624917..aa435441fa3 100644
--- a/src/mame/skeleton/hudson_poems.cpp
+++ b/src/mame/skeleton/hudson_poems.cpp
@@ -93,6 +93,7 @@ class hudson_poems_state : public driver_device
u32 unk_aa04_r(offs_t offset, u32 mem_mask);
void unk_aa00_w(offs_t offset, u32 data, u32 mem_mask);
+ u32 fade_r(offs_t offset, u32 mem_mask);
void fade_w(offs_t offset, u32 data, u32 mem_mask);
void unktable_w(offs_t offset, u32 data, u32 mem_mask);
void unktable_reset_w(offs_t offset, u32 data, u32 mem_mask);
@@ -103,6 +104,13 @@ class hudson_poems_state : public driver_device
void spritegfx_base_w(offs_t offset, u32 data, u32 mem_mask);
void spritelist_base_w(offs_t offset, u32 data, u32 mem_mask);
+ void dma_trigger_w(offs_t offset, u32 data, u32 mem_mask);
+ void dma_fill_w(offs_t offset, u32 data, u32 mem_mask);
+ void dma_source_w(offs_t offset, u32 data, u32 mem_mask);
+ void dma_dest_w(offs_t offset, u32 data, u32 mem_mask);
+ void dma_length_w(offs_t offset, u32 data, u32 mem_mask);
+ void dma_mode_w(offs_t offset, u32 data, u32 mem_mask);
+
template void tilemap_base_w(offs_t offset, u32 data, u32 mem_mask);
template void tilemap_unk_w(offs_t offset, u32 data, u32 mem_mask);
template void tilemap_cfg_w(offs_t offset, u32 data, u32 mem_mask);
@@ -126,6 +134,14 @@ class hudson_poems_state : public driver_device
u32 m_tilemapscr[4];
u32 m_tilemaphigh[4];
+ u32 m_fade;
+
+ u32 m_dmamode;
+ u32 m_dmasource;
+ u32 m_dmadest;
+ u32 m_dmalength;
+ u32 m_dmafill;
+
s32 m_hackcounter;
required_device m_maincpu;
@@ -151,6 +167,14 @@ void hudson_poems_state::machine_start()
save_item(NAME(m_tilemaphigh));
save_item(NAME(m_hackcounter));
+
+ save_item(NAME(m_fade));
+
+ save_item(NAME(m_dmamode));
+ save_item(NAME(m_dmasource));
+ save_item(NAME(m_dmadest));
+ save_item(NAME(m_dmalength));
+ save_item(NAME(m_dmafill));
}
@@ -164,6 +188,14 @@ void hudson_poems_state::machine_reset()
{
m_spritegfxbase[i] = m_tilemapbase[i] = m_tilemaphigh[i] = m_tilemapunk[i] = m_tilemapcfg[i] = m_tilemapscr[i] = 0;
}
+
+ m_fade = 0;
+
+ m_dmamode = 0;
+ m_dmasource = 0;
+ m_dmadest = 0;
+ m_dmalength = 0;
+ m_dmafill = 0;
}
/*
@@ -185,6 +217,17 @@ static INPUT_PORTS_START( hudson_poems )
PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("Green")
INPUT_PORTS_END
+static INPUT_PORTS_START( poemgolf )
+ PORT_START( "IN1" )
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON1 ) // O
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( poemzet )
+ PORT_START( "IN1" )
+INPUT_PORTS_END
+
void hudson_poems_state::draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int spritebase = (m_spritelistbase & 0x0003ffff) / 4;
@@ -199,7 +242,7 @@ void hudson_poems_state::draw_sprites(screen_device &screen, bitmap_rgb32 &bitma
const int x = (spriteword3 & 0x03ff);
const int y = (spriteword2 & 0x03ff);
- int tilenum = spriteword1 & 0x03ff;
+ int tilenum = spriteword1 & 0x07ff;
const int pal = (spriteword2 & 0x7c00)>>10;
// is it selecting from multiple tile pages (which can have different bases?) (probably from a register somewhere)
@@ -209,7 +252,7 @@ void hudson_poems_state::draw_sprites(screen_device &screen, bitmap_rgb32 &bitma
/* based on code analysis of function at 006707A4
word0 ( 0abb bbBB ---- -dFf ) OR ( 1abb bbcc dddd dddd ) a = ? b = alpha blend? (toggles between all bits on and off for battery logo) BB = sprite base F = flipX f = flipY
- word1 ( wwhh ---t tttt tttt ) - other bits are used, but pulled from ram? t = tile number? ww = width hh = height
+ word1 ( wwhh -ttt tttt tttt ) - other bits are used, but pulled from ram? t = tile number? ww = width hh = height
word2 ( 0Ppp ppyy yyyy yyyy ) P = palette bank p = palette y = ypos
word3 ( aabb bbxx xxxx xxxx ) x = xpos
*/
@@ -301,6 +344,7 @@ void hudson_poems_state::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitma
// contains a full 32-bit address
base = (m_tilemapbase[which] & 0x0003ffff) / 4;
+
// contains a full 32-bit address. for this to work in the test mode the interrupts must be disabled as soon as test mode is entered, otherwise the pointer
// gets overwritten with an incorrect one. Test mode does not require interrupts to function, although the bit we use to disable them is likely incorrect.
// this does NOT really seem to be tied to tilemap number, probably from a config reg
@@ -316,16 +360,23 @@ void hudson_poems_state::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitma
if (xscroll & 0x400)
xscroll -= 0x800;
- const int tilemap_drawheight = ((m_tilemaphigh[which] >> 16) & 0xff);
+ int tilemap_drawheight = ((m_tilemaphigh[which] >> 16) & 0xff);
int tilemap_drawwidth = ((m_tilemaphigh[which] >> 0) & 0x1ff);
+ // 0 might be maximum, poemzet2
+ if (tilemap_drawheight == 0)
+ tilemap_drawheight = 240;
+
+ // 0 might be maximum, poemzet
+ if (tilemap_drawwidth == 0)
+ tilemap_drawwidth = 320;
+
// clamp to size of tilemap (test mode has 256 wide tilemap in RAM, but sets full 320 width?)
if (tilemap_drawwidth > width)
tilemap_drawwidth = width;
// note m_tilemaphigh seems to be in pixels, we currently treat it as tiles
// these could actually be 'end pos' regs, with unknown start regs currently always set to 0
-
for (int y = 0; y < tilemap_drawheight / 8; y++)
{
const int ypos = (y * 8 + yscroll) & 0x1ff;
@@ -401,7 +452,8 @@ void hudson_poems_state::draw_tile8(screen_device &screen, bitmap_rgb32 &bitmap,
u32 hudson_poems_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(0, cliprect);
+ pen_t const *const paldata = m_palette->pens();
+ bitmap.fill(paldata[0x100], cliprect); // poemzet 'play poems' logo (maybe lowest enabled tilemap is just opaque instead?)
for (int pri = 0x1f; pri >= 0; pri--)
{
@@ -453,10 +505,17 @@ u32 hudson_poems_state::poems_8000038_r(offs_t offset, u32 mem_mask)
if (m_maincpu->pc() != 0x2c000b5a)
logerror("%s: poems_8000038_r %08x\n", machine().describe_context(), mem_mask);
- if (m_mainram[0x1baf8/4] == 0x00000000)
+ if (machine().rand() & 1)
return 0xffffffff;
else
return 0x00000000;
+
+ /*
+ if (m_mainram[0x1baf8/4] == 0x00000000)
+ return 0xffffffff;
+ else
+ return 0x00000000;
+ */
}
u32 hudson_poems_state::poems_8000200_r(offs_t offset, u32 mem_mask)
@@ -483,9 +542,15 @@ void hudson_poems_state::palette_w(offs_t offset, u32 data, u32 mem_mask)
set_palette_val(offset);
}
+u32 hudson_poems_state::fade_r(offs_t offset, u32 mem_mask)
+{
+ return m_fade;
+}
+
void hudson_poems_state::fade_w(offs_t offset, u32 data, u32 mem_mask)
{
logerror("%s: fade_w %08x %08x\n", machine().describe_context(), data, mem_mask);
+ COMBINE_DATA(&m_fade);
u8 val = 0x1f - ((data >> 16) & 0x1f);
@@ -502,7 +567,6 @@ void hudson_poems_state::unktable_w(offs_t offset, u32 data, u32 mem_mask)
if (m_unktableoffset < 256)
{
m_unktable[m_unktableoffset] = data & 0x0000ffff;
- set_palette_val(m_unktableoffset);
m_unktableoffset++;
}
}
@@ -512,7 +576,6 @@ void hudson_poems_state::unktable_w(offs_t offset, u32 data, u32 mem_mask)
if (m_unktableoffset < 256)
{
m_unktable[m_unktableoffset] = (data & 0xffff0000)>>16;
- set_palette_val(m_unktableoffset);
m_unktableoffset++;
}
}
@@ -538,7 +601,80 @@ void hudson_poems_state::mainram_w(offs_t offset, u32 data, u32 mem_mask)
m_gfxdecode->gfx(3)->mark_dirty(offset / 16);
}
-template
+void hudson_poems_state::dma_trigger_w(offs_t offset, u32 data, u32 mem_mask)
+{
+ // poembase writes 00030101 here when it hasn't set src / 'mode' regs, maybe for clear operations
+ // writes 00030001 when those things are valid
+ address_space &cpuspace = m_maincpu->space(AS_PROGRAM);
+
+ logerror("%s: dma_trigger_w %08x %08x (with source %08x dest %08x length %08x mode %08x)\n", machine().describe_context(), data, mem_mask, m_dmasource, m_dmadest, m_dmalength, m_dmamode);
+
+ if ((data == 0x00030001) && (m_dmamode == 0x00003210))
+ {
+ int length = m_dmalength;
+ offs_t source = m_dmasource;
+ offs_t dest = m_dmadest;
+
+ while (length >= 0)
+ {
+ u32 dmadat = cpuspace.read_dword(source);
+ cpuspace.write_dword(dest, dmadat);
+
+ source += 4;
+ dest += 4;
+ length--;
+ }
+ }
+ else if (data == 0x00030101) // mode is not used here, but fill is
+ {
+ int length = m_dmalength;
+ offs_t dest = m_dmadest;
+
+ while (length >= 0)
+ {
+ cpuspace.write_dword(dest, m_dmafill);
+
+ dest += 4;
+ length--;
+ }
+ }
+ else
+ {
+ logerror("unsure how to handle this DMA, ignoring\n");
+ }
+}
+
+void hudson_poems_state::dma_source_w(offs_t offset, u32 data, u32 mem_mask)
+{
+ logerror("%s: dma_source_w %08x %08x\n", machine().describe_context(), data, mem_mask);
+ COMBINE_DATA(&m_dmasource);
+}
+
+void hudson_poems_state::dma_dest_w(offs_t offset, u32 data, u32 mem_mask)
+{
+ logerror("%s: dma_dest_w %08x %08x\n", machine().describe_context(), data, mem_mask);
+ COMBINE_DATA(&m_dmadest);
+}
+
+void hudson_poems_state::dma_length_w(offs_t offset, u32 data, u32 mem_mask)
+{
+ logerror("%s: dma_length_w %08x %08x\n", machine().describe_context(), data, mem_mask);
+ COMBINE_DATA(&m_dmalength);
+}
+
+void hudson_poems_state::dma_mode_w(offs_t offset, u32 data, u32 mem_mask)
+{
+ logerror("%s: dma_mode_w %08x %08x\n", machine().describe_context(), data, mem_mask);
+ COMBINE_DATA(&m_dmamode);
+}
+
+void hudson_poems_state::dma_fill_w(offs_t offset, u32 data, u32 mem_mask)
+{
+ logerror("%s: dma_fill_w %08x %08x\n", machine().describe_context(), data, mem_mask);
+ COMBINE_DATA(&m_dmafill);
+}
+
+template
void hudson_poems_state::tilemap_map(address_map &map, u32 base)
{
map(base+0x00, base+0x03).rw(FUNC(hudson_poems_state::tilemap_cfg_r), FUNC(hudson_poems_state::tilemap_cfg_w));
@@ -586,7 +722,7 @@ void hudson_poems_state::mem_map(address_map &map)
//map(0x0800004c, 0x0800004f).nopw(); // ^^
//map(0x08000050, 0x08000053).nopw(); // ^^ 16-bit write, sometimes writes 00000101 & 0000FFFF
//map(0x08000054, 0x08000057).nopw(); // ^^ writes 15555555 while fading
- map(0x0800005c, 0x0800005f).w(FUNC(hudson_poems_state::fade_w));
+ map(0x0800005c, 0x0800005f).rw(FUNC(hudson_poems_state::fade_r), FUNC(hudson_poems_state::fade_w));
// are these runtime registers, or DMA sources?
map(0x08000070, 0x0800007f).w(FUNC(hudson_poems_state::spritegfx_base_w)); // ^^ sometimes writes 2C009C00 (one of the tile data bases)
@@ -634,6 +770,12 @@ void hudson_poems_state::mem_map(address_map &map)
map(0x0800c040, 0x0800c05f).ram();
///////////////////
+ map(0x0801c000, 0x0801c003).w(FUNC(hudson_poems_state::dma_trigger_w));
+ map(0x0801c004, 0x0801c007).w(FUNC(hudson_poems_state::dma_source_w));
+ map(0x0801c008, 0x0801c00b).w(FUNC(hudson_poems_state::dma_length_w));
+ map(0x0801c018, 0x0801c01b).w(FUNC(hudson_poems_state::dma_dest_w));
+ map(0x0801c024, 0x0801c027).w(FUNC(hudson_poems_state::dma_fill_w));
+ map(0x0801c028, 0x0801c02b).w(FUNC(hudson_poems_state::dma_mode_w));
map(0x08020000, 0x08020003).nopr().nopw();
map(0x08020004, 0x08020007).nopr().nopw();
@@ -649,8 +791,8 @@ void hudson_poems_state::mem_map(address_map &map)
}
static GFXDECODE_START( gfx_poems )
- GFXDECODE_ENTRY( "maincpu", 0, gfx_8x8x4_packed_lsb, 0, 16 )
- GFXDECODE_ENTRY( "maincpu", 0, gfx_8x8x8_raw, 0, 1 )
+ GFXDECODE_ENTRY( "maincpu", 0, gfx_8x8x4_packed_lsb, 0, 32 )
+ GFXDECODE_ENTRY( "maincpu", 0, gfx_8x8x8_raw, 0, 2 )
GFXDECODE_RAM( "mainram", 0, gfx_8x8x4_packed_lsb, 0, 32 )
GFXDECODE_RAM( "mainram", 0, gfx_8x8x8_raw, 0, 2 )
@@ -719,7 +861,48 @@ ROM_START( marimba )
ROM_LOAD( "at24c08a.u4", 0x000000, 0x400, CRC(e128a679) SHA1(73fb551d87ed911bd469899343fd36d9d579af39) )
ROM_END
+ROM_START( poemgolf )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "poems_golf.u2", 0x000000, 0x400000, CRC(9684a232) SHA1(8a7b97e274dfdddfb6af4df13d714947ef01f29e) ) // glob with TSOP pads
+
+ ROM_REGION( 0x400, "nv", 0 )
+ ROM_LOAD( "at24c08a.u3", 0x000000, 0x400, CRC(55856855) SHA1(27b9b42eeea8dd06be43886e40bb2396efc88a67) )
+ROM_END
+
+ROM_START( poembase )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "poems_baseball.u2", 0x000000, 0x400000, CRC(105e6c37) SHA1(2a4fe66c08a57bde25047479cbd6ed9ca7c78fa2) ) // glob with TSOP pads
+
+ ROM_REGION( 0x400, "nv", 0 )
+ ROM_LOAD( "at24c08a.u3", 0x000000, 0x400, CRC(b83afff4) SHA1(5501e490177b69d61099cc8f1439b91320572584) )
+ROM_END
+
+ROM_START( poemzet )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "poems_denjaras.u2", 0x000000, 0x400000, CRC(278d74c2) SHA1(1bd02cce890778409151b20a048892ba3692fd9b) ) // glob with TSOP pads
+
+ ROM_REGION( 0x400, "nv", 0 )
+ ROM_LOAD( "at24c08a.u3", 0x000000, 0x400, CRC(594c7c3d) SHA1(b1ddf1d30267f10dac00064b60d8a6b594ae6fc1) )
+ROM_END
+
+ROM_START( poemzet2 )
+ ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "poems_oldman.u2", 0x000000, 0x400000, CRC(d721c4a9) SHA1(59d88c7f515d10d98e00ac076ebd7ce30cb0bb27) ) // glob with TSOP pads
+
+ ROM_REGION( 0x400, "nv", 0 )
+ ROM_LOAD( "at24c08a.u3", 0x000000, 0x400, CRC(5f3d5352) SHA1(94386f5703751e66d6a62e23c344ab7711aad769) )
+ROM_END
+
} // anonymous namespace
CONS( 2005, marimba, 0, 0, hudson_poems, hudson_poems, hudson_poems_state, init_marimba, "Konami", "Marimba Tengoku (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
+
+// waits for 2c008f00 to become 0 (missing irq?) happens before it gets to the DMA transfers
+CONS( 2004, poemgolf, 0, 0, hudson_poems, poemgolf, hudson_poems_state, init_marimba, "Konami", "Soukai Golf Champ (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
+// waits for 2c005d00 to become 0 (missing irq?) happens before it gets to the DMA transfers
+CONS( 2004, poembase, 0, 0, hudson_poems, poemgolf, hudson_poems_state, init_marimba, "Konami", "Nekketsu Powerpro Champ (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
+
+CONS( 2004, poemzet, 0, 0, hudson_poems, poemzet, hudson_poems_state, init_marimba, "Konami", "Zettai Zetsumei Dangerous Jiisan - Mini Game de Taiketsu ja!", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
+
+CONS( 2005, poemzet2, 0, 0, hudson_poems, poemzet, hudson_poems_state, init_marimba, "Konami", "Zettai Zetsumei Dangerous Jiisan Party ja! Zen-in Shuugou!!", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
diff --git a/src/mame/taito/rbisland.cpp b/src/mame/taito/rbisland.cpp
index bb5a8dd6d25..f97b57765c0 100644
--- a/src/mame/taito/rbisland.cpp
+++ b/src/mame/taito/rbisland.cpp
@@ -499,7 +499,7 @@ uint32_t jumping_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
for (int offs = m_spriteram.bytes() / 2 - 8; offs >= 0; offs -= 8)
{
int const tile = m_spriteram[offs];
- if (tile < m_gfxdecode->gfx(1)->elements())
+ if (tile < m_gfxdecode->gfx(0)->elements())
{
int sy = ((m_spriteram[offs + 1] - 0xfff1) ^ 0xffff) & 0x1ff;
if (sy > 400) sy = sy - 512;
diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp
index beb26e6b945..0084a8f59e0 100644
--- a/src/mame/tvgames/xavix.cpp
+++ b/src/mame/tvgames/xavix.cpp
@@ -1548,12 +1548,13 @@ void xavix_cart_state::xavix_cart_ekara(machine_config &config)
SOFTWARE_LIST(config, "cart_list_japan_m").set_original("ekara_japan_m");
SOFTWARE_LIST(config, "cart_list_japan_d").set_original("ekara_japan_d");
SOFTWARE_LIST(config, "cart_list_japan_en").set_original("ekara_japan_en");
+ SOFTWARE_LIST(config, "cart_list_japan_kd").set_original("ekara_japan_kd");
SOFTWARE_LIST(config, "cart_list_japan_sp").set_original("ekara_japan_sp");
SOFTWARE_LIST(config, "cart_list_japan_web").set_original("ekara_japan_web");
SOFTWARE_LIST(config, "cart_list_japan_a").set_original("ekara_japan_a");
SOFTWARE_LIST(config, "cart_list_japan_gk").set_original("ekara_japan_gk");
SOFTWARE_LIST(config, "cart_list_japan_bh").set_original("ekara_japan_bh");
- SOFTWARE_LIST(config, "cart_list_japan_ac").set_original("ekara_japan_ac");
+ SOFTWARE_LIST(config, "cart_list_japan_packin").set_original("ekara_japan_packin");
}
void xavix_cart_state::xavix_cart_hikara(machine_config &config)
diff --git a/src/mame/yamaha/ymmu10.cpp b/src/mame/yamaha/ymmu10.cpp
index 920d4081f7d..4713707b0c1 100644
--- a/src/mame/yamaha/ymmu10.cpp
+++ b/src/mame/yamaha/ymmu10.cpp
@@ -109,7 +109,7 @@ void mu10_state::pb_w(u16 data)
cur_pb = data;
logerror("led %d gain %d\n", BIT(data, 0), BIT(data, 2));
}
-
+
u8 mu10_state::pb_r()
{
// bit 3 = a/d plugged in
diff --git a/src/mame/yamaha/ymmu15.cpp b/src/mame/yamaha/ymmu15.cpp
index 9d28114b4dc..8b3deb8389e 100644
--- a/src/mame/yamaha/ymmu15.cpp
+++ b/src/mame/yamaha/ymmu15.cpp
@@ -34,7 +34,7 @@ class mu15_state : public driver_device
mu15_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- // , m_nvram(*this, "ram")
+ // , m_nvram(*this, "ram")
, m_lcd(*this, "lcd")
, m_ram(*this, "ram")
{ }
@@ -43,8 +43,8 @@ class mu15_state : public driver_device
private:
required_device m_maincpu;
- // required_device m_nvram;
- // required_device m_swp00;
+ // required_device m_nvram;
+ // required_device m_swp00;
required_device m_lcd;
required_shared_ptr m_ram;
@@ -67,7 +67,7 @@ void mu15_state::s_map(address_map &map)
{
map(0x000000, 0x3fffff).rom().region("swx00", 0);
map(0x400000, 0x40ffff).ram().share(m_ram);
- // map(0x400000, 0x4007ff).m(m_swp00, FUNC(swp00_device::map));
+ // map(0x400000, 0x4007ff).m(m_swp00, FUNC(swp00_device::map));
}
void mu15_state::c_map(address_map &map)
@@ -177,9 +177,9 @@ void mu15_state::mu15(machine_config &config)
m_maincpu->set_addrmap(m_maincpu->c_bus_id(), &mu15_state::c_map);
m_maincpu->set_addrmap(m_maincpu->s_bus_id(), &mu15_state::s_map);
- // m_maincpu->read_porta().set(FUNC(mu15_state::pa_r));
- // m_maincpu->read_portb().set(FUNC(mu15_state::pa_r));
- // m_maincpu->write_portb().set(FUNC(mu15_state::pa_w));
+ // m_maincpu->read_porta().set(FUNC(mu15_state::pa_r));
+ // m_maincpu->read_portb().set(FUNC(mu15_state::pa_r));
+ // m_maincpu->write_portb().set(FUNC(mu15_state::pa_w));
#if 0
m_maincpu->read_adc<0>().set(FUNC(mu15_state::adc_ar_r));
@@ -203,7 +203,7 @@ void mu15_state::mu15(machine_config &config)
m_maincpu->read_port9().set_constant(0);
#endif
- // NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE);
+ // NVRAM(config, m_nvram, nvram_device::DEFAULT_NONE);
MU5LCD(config, m_lcd);
diff --git a/src/mame/yamaha/ymvl1.cpp b/src/mame/yamaha/ymvl1.cpp
index 79d167ca438..147eb18b008 100644
--- a/src/mame/yamaha/ymvl1.cpp
+++ b/src/mame/yamaha/ymvl1.cpp
@@ -142,7 +142,7 @@ void vl1_state::main_w(u16 data)
BIT(data, 7),
BIT(data, 8, 2),
BIT(data, 15));
-
+
m_main_ctrl = data;
m_subcpu1->set_input_line(INPUT_LINE_HALT, !BIT(data, 8));
m_subcpu2->set_input_line(INPUT_LINE_HALT, !BIT(data, 9));
@@ -159,7 +159,7 @@ void vl1_state::sub1_w(u16 data)
logerror("sub1_w dsp = %d %d\n",
BIT(data, 0),
BIT(data, 1));
-
+
m_sub1_ctrl = data;
m_dspv2->set_input_line(INPUT_LINE_RESET, !BIT(data, 0));
m_dspv3->set_input_line(INPUT_LINE_RESET, !BIT(data, 1));
@@ -175,7 +175,7 @@ void vl1_state::sub2_w(u16 data)
if(1)
logerror("sub2_w dsp = %d\n",
BIT(data, 0));
-
+
m_sub2_ctrl = data;
m_dspv1->set_input_line(INPUT_LINE_RESET, !BIT(data, 0));
}