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)); }