mirror of
https://github.com/holub/mame
synced 2025-06-14 16:37:00 +03:00
srcclean and cleanup (nw)
This commit is contained in:
parent
8ef400ec67
commit
01661be41c
@ -853,8 +853,8 @@ Info for original games comes from https://web.archive.org/web/20141023024713/mc
|
|||||||
|
|
||||||
<part name="cass1" interface="mc1000_cass">
|
<part name="cass1" interface="mc1000_cass">
|
||||||
<!--
|
<!--
|
||||||
<dataarea name="cass" size="702764">
|
<dataarea name="cass" size="702764">
|
||||||
<rom name="aventura.wav" size="702764" crc="82a6263b" sha1="834d9511e22f5c34244923108366201e82b89179"/>
|
<rom name="aventura.wav" size="702764" crc="82a6263b" sha1="834d9511e22f5c34244923108366201e82b89179"/>
|
||||||
-->
|
-->
|
||||||
<dataarea name="cass" size="168558">
|
<dataarea name="cass" size="168558">
|
||||||
<rom name="aventura.wav" size="168558" crc="208c0c8b" sha1="169010d35d4fa3a63cf00f5758717e57fd4754e2"/>
|
<rom name="aventura.wav" size="168558" crc="208c0c8b" sha1="169010d35d4fa3a63cf00f5758717e57fd4754e2"/>
|
||||||
@ -910,8 +910,8 @@ Info for original games comes from https://web.archive.org/web/20141023024713/mc
|
|||||||
|
|
||||||
<part name="cass1" interface="mc1000_cass">
|
<part name="cass1" interface="mc1000_cass">
|
||||||
<!--
|
<!--
|
||||||
<dataarea name="cass" size="176812">
|
<dataarea name="cass" size="176812">
|
||||||
<rom name="circulos.wav" size="176812" crc="402caaea" sha1="614201ff32f80c91bf433243bc046eee78e190bf"/>
|
<rom name="circulos.wav" size="176812" crc="402caaea" sha1="614201ff32f80c91bf433243bc046eee78e190bf"/>
|
||||||
-->
|
-->
|
||||||
<dataarea name="cass" size="40350">
|
<dataarea name="cass" size="40350">
|
||||||
<rom name="circulos.wav" size="40350" crc="007a7c30" sha1="0002df62b1b37cd1c3d5b0db3a7a86f733604106"/>
|
<rom name="circulos.wav" size="40350" crc="007a7c30" sha1="0002df62b1b37cd1c3d5b0db3a7a86f733604106"/>
|
||||||
@ -979,8 +979,8 @@ Info for original games comes from https://web.archive.org/web/20141023024713/mc
|
|||||||
|
|
||||||
<part name="cass1" interface="mc1000_cass">
|
<part name="cass1" interface="mc1000_cass">
|
||||||
<!--
|
<!--
|
||||||
<dataarea name="cass" size="549964">
|
<dataarea name="cass" size="549964">
|
||||||
<rom name="explosao.wav" size="549964" crc="d231d3af" sha1="a3cce871efa9f8762257ac7ea47c71311f25920f"/>
|
<rom name="explosao.wav" size="549964" crc="d231d3af" sha1="a3cce871efa9f8762257ac7ea47c71311f25920f"/>
|
||||||
-->
|
-->
|
||||||
<dataarea name="cass" size="130822">
|
<dataarea name="cass" size="130822">
|
||||||
<rom name="explosao.wav" size="130822" crc="0b46f290" sha1="821b95bd675097d5ffba1c4c97898d20c9d10bb3"/>
|
<rom name="explosao.wav" size="130822" crc="0b46f290" sha1="821b95bd675097d5ffba1c4c97898d20c9d10bb3"/>
|
||||||
|
@ -374,7 +374,7 @@ Info on N64 chip labels (from The Cart Scan Repository)
|
|||||||
<description>AeroGauge (Europe)</description>
|
<description>AeroGauge (Europe)</description>
|
||||||
<year>1998</year>
|
<year>1998</year>
|
||||||
<publisher>ASCII Entertainment</publisher>
|
<publisher>ASCII Entertainment</publisher>
|
||||||
<info name="serial" value=" NUS-NAGP-NOE, NUS-NAGP-UKV"/>
|
<info name="serial" value="NUS-NAGP-NOE, NUS-NAGP-UKV"/>
|
||||||
<part name="cart" interface="n64_cart">
|
<part name="cart" interface="n64_cart">
|
||||||
<feature name="pcb" value="NUS-01A-02" />
|
<feature name="pcb" value="NUS-01A-02" />
|
||||||
<feature name="u1" value="U1 [NUS-NAGP-0]" />
|
<feature name="u1" value="U1 [NUS-NAGP-0]" />
|
||||||
|
32
hash/nes.xml
32
hash/nes.xml
@ -47339,14 +47339,14 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
|||||||
<feature name="pcb" value="KONAMI-VRC-2" />
|
<feature name="pcb" value="KONAMI-VRC-2" />
|
||||||
<feature name="vrc2-pin3" value="PRG A1" />
|
<feature name="vrc2-pin3" value="PRG A1" />
|
||||||
<feature name="vrc2-pin4" value="PRG A0" />
|
<feature name="vrc2-pin4" value="PRG A0" />
|
||||||
<feature name="vrc2-pin21" value ="CHR A10" />
|
<feature name="vrc2-pin21" value="CHR A10" />
|
||||||
<feature name="vrc2-pin22" value ="CHR A16" />
|
<feature name="vrc2-pin22" value="CHR A16" />
|
||||||
<feature name="vrc2-pin23" value ="CHR A11" />
|
<feature name="vrc2-pin23" value="CHR A11" />
|
||||||
<feature name="vrc2-pin24" value ="CHR A13" />
|
<feature name="vrc2-pin24" value="CHR A13" />
|
||||||
<feature name="vrc2-pin25" value ="CHR A14" />
|
<feature name="vrc2-pin25" value="CHR A14" />
|
||||||
<feature name="vrc2-pin26" value ="CHR A12" />
|
<feature name="vrc2-pin26" value="CHR A12" />
|
||||||
<feature name="vrc2-pin27" value ="CHR A15" />
|
<feature name="vrc2-pin27" value="CHR A15" />
|
||||||
<feature name="vrc2-pin28" value ="NC" />
|
<feature name="vrc2-pin28" value="NC" />
|
||||||
<dataarea name="chr" size="131072">
|
<dataarea name="chr" size="131072">
|
||||||
<rom name="mad city (japan) (beta).chr" size="131072" crc="028dc0ef" sha1="1212b249bfc2c13e76a337d4ceedc5f78d1d5be6" offset="00000" status="baddump" />
|
<rom name="mad city (japan) (beta).chr" size="131072" crc="028dc0ef" sha1="1212b249bfc2c13e76a337d4ceedc5f78d1d5be6" offset="00000" status="baddump" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
@ -50292,14 +50292,14 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
|||||||
<feature name="pcb" value="KONAMI-VRC-2" />
|
<feature name="pcb" value="KONAMI-VRC-2" />
|
||||||
<feature name="vrc2-pin3" value="PRG A1" />
|
<feature name="vrc2-pin3" value="PRG A1" />
|
||||||
<feature name="vrc2-pin4" value="PRG A0" />
|
<feature name="vrc2-pin4" value="PRG A0" />
|
||||||
<feature name="vrc2-pin21" value ="CHR A10" />
|
<feature name="vrc2-pin21" value="CHR A10" />
|
||||||
<feature name="vrc2-pin22" value ="CHR A16" />
|
<feature name="vrc2-pin22" value="CHR A16" />
|
||||||
<feature name="vrc2-pin23" value ="CHR A11" />
|
<feature name="vrc2-pin23" value="CHR A11" />
|
||||||
<feature name="vrc2-pin24" value ="CHR A13" />
|
<feature name="vrc2-pin24" value="CHR A13" />
|
||||||
<feature name="vrc2-pin25" value ="CHR A14" />
|
<feature name="vrc2-pin25" value="CHR A14" />
|
||||||
<feature name="vrc2-pin26" value ="CHR A12" />
|
<feature name="vrc2-pin26" value="CHR A12" />
|
||||||
<feature name="vrc2-pin27" value ="CHR A15" />
|
<feature name="vrc2-pin27" value="CHR A15" />
|
||||||
<feature name="vrc2-pin28" value ="NC" />
|
<feature name="vrc2-pin28" value="NC" />
|
||||||
<dataarea name="chr" size="131072">
|
<dataarea name="chr" size="131072">
|
||||||
<rom name="twinbee 3 - poko poko dai maou (japan) (beta).chr" size="131072" crc="22a2268f" sha1="a930b56984f1bf8cc08050a52a8e2ed2484619cf" offset="00000" status="baddump" />
|
<rom name="twinbee 3 - poko poko dai maou (japan) (beta).chr" size="131072" crc="22a2268f" sha1="a930b56984f1bf8cc08050a52a8e2ed2484619cf" offset="00000" status="baddump" />
|
||||||
</dataarea>
|
</dataarea>
|
||||||
|
@ -11,7 +11,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>Ballistic</description>
|
<description>Ballistic</description>
|
||||||
<year>2000</year>
|
<year>2000</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="ballstic" sha1="92b386f176eecc7d3b1e13675ccaf0b60a543175" />
|
<disk name="ballstic" sha1="92b386f176eecc7d3b1e13675ccaf0b60a543175" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
@ -22,7 +22,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>FreeFall 3050 A.D.</description>
|
<description>FreeFall 3050 A.D.</description>
|
||||||
<year>200?</year>
|
<year>200?</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="freefall" sha1="56540609dcdf3d5234a1d045b28cba58ba6adae8" />
|
<disk name="freefall" sha1="56540609dcdf3d5234a1d045b28cba58ba6adae8" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
@ -33,7 +33,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>Iron Soldier 3</description>
|
<description>Iron Soldier 3</description>
|
||||||
<year>2001</year>
|
<year>2001</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="is3" sha1="47dec1bbb819342cf8bc2fee98fc7b18d1302503" />
|
<disk name="is3" sha1="47dec1bbb819342cf8bc2fee98fc7b18d1302503" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
@ -44,7 +44,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>Merlin Racing</description>
|
<description>Merlin Racing</description>
|
||||||
<year>200?</year>
|
<year>200?</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="merlinr" sha1="80116c3c9440492678f8f072c5fabd2cedb3034e" />
|
<disk name="merlinr" sha1="80116c3c9440492678f8f072c5fabd2cedb3034e" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
@ -55,7 +55,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>Space Invaders XL</description>
|
<description>Space Invaders XL</description>
|
||||||
<year>200?</year>
|
<year>200?</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="spacinvx" sha1="76518e106ab04819f6b85cc3e1eea08968b7b249" />
|
<disk name="spacinvx" sha1="76518e106ab04819f6b85cc3e1eea08968b7b249" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
@ -66,7 +66,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>Tempest 3000</description>
|
<description>Tempest 3000</description>
|
||||||
<year>200?</year>
|
<year>200?</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="tempest3" sha1="48e44d3de2642bb7b4fc5a044caf4cb2e8ad5c25" />
|
<disk name="tempest3" sha1="48e44d3de2642bb7b4fc5a044caf4cb2e8ad5c25" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
@ -77,7 +77,7 @@ NOTE: This list is here only to document available dumps and it's not hooked up
|
|||||||
<description>Toshiba Sampler (11-1-2000)</description>
|
<description>Toshiba Sampler (11-1-2000)</description>
|
||||||
<year>200?</year>
|
<year>200?</year>
|
||||||
<publisher>VM Labs, Inc.</publisher>
|
<publisher>VM Labs, Inc.</publisher>
|
||||||
<part interface="dvdrom" name="dvdrom">
|
<part interface="dvdrom" name="dvdrom">
|
||||||
<diskarea name="dvdrom">
|
<diskarea name="dvdrom">
|
||||||
<disk name="toshsamp" sha1="e312c9cec7f11a4594c1a3340fbcc9f66a65e9b1" />
|
<disk name="toshsamp" sha1="e312c9cec7f11a4594c1a3340fbcc9f66a65e9b1" />
|
||||||
</diskarea>
|
</diskarea>
|
||||||
|
@ -1337,7 +1337,7 @@ license:CC0
|
|||||||
<year>1996</year> <!-- 03/96 -->
|
<year>1996</year> <!-- 03/96 -->
|
||||||
<publisher>Silicon Graphics</publisher>
|
<publisher>Silicon Graphics</publisher>
|
||||||
<part name="cdrom" interface="cdrom">
|
<part name="cdrom" interface="cdrom">
|
||||||
<feature name="part_number" value=" 812-0478-001"/>
|
<feature name="part_number" value="812-0478-001"/>
|
||||||
<!-- Origin: jrra.zone -->
|
<!-- Origin: jrra.zone -->
|
||||||
<diskarea name="cdrom">
|
<diskarea name="cdrom">
|
||||||
<disk name="iris_development_option_6_2" sha1="eabaa5238a3515f1c71d693efc2781b4d1675cf9" />
|
<disk name="iris_development_option_6_2" sha1="eabaa5238a3515f1c71d693efc2781b4d1675cf9" />
|
||||||
@ -2099,7 +2099,7 @@ license:CC0
|
|||||||
<year>1993</year> <!-- 09/93 -->
|
<year>1993</year> <!-- 09/93 -->
|
||||||
<publisher>Silicon Graphics</publisher>
|
<publisher>Silicon Graphics</publisher>
|
||||||
<part name="cdrom" interface="cdrom">
|
<part name="cdrom" interface="cdrom">
|
||||||
<feature name="part_number" value=" 812-0232-002"/>
|
<feature name="part_number" value="812-0232-002"/>
|
||||||
<!-- Origin: jrra.zone -->
|
<!-- Origin: jrra.zone -->
|
||||||
<diskarea name="cdrom">
|
<diskarea name="cdrom">
|
||||||
<disk name="indy_irix_5_1_1" sha1="e041bee239367f926ce0cef0d16830bdbe49ea01" />
|
<disk name="indy_irix_5_1_1" sha1="e041bee239367f926ce0cef0d16830bdbe49ea01" />
|
||||||
@ -2231,7 +2231,7 @@ license:CC0
|
|||||||
<publisher>Silicon Graphics</publisher>
|
<publisher>Silicon Graphics</publisher>
|
||||||
<part name="cdrom1" interface="cdrom">
|
<part name="cdrom1" interface="cdrom">
|
||||||
<feature name="part_number" value="812-0469-001"/>
|
<feature name="part_number" value="812-0469-001"/>
|
||||||
<feature name="part_id" value="IRIX 6.2 part 1 of 2"/>
|
<feature name="part_id" value="IRIX 6.2 part 1 of 2"/>
|
||||||
<!-- Origin: private dump. Verified SHA1 against a Plextor dump without C2 errors -->
|
<!-- Origin: private dump. Verified SHA1 against a Plextor dump without C2 errors -->
|
||||||
<diskarea name="cdrom">
|
<diskarea name="cdrom">
|
||||||
<disk name="irix_6_2_part_1_of_2" sha1="714ad598cde6a48132005e4728e7e7d18fdbbb1b" />
|
<disk name="irix_6_2_part_1_of_2" sha1="714ad598cde6a48132005e4728e7e7d18fdbbb1b" />
|
||||||
@ -2325,7 +2325,7 @@ license:CC0
|
|||||||
</part>
|
</part>
|
||||||
<part name="cdrom4" interface="cdrom">
|
<part name="cdrom4" interface="cdrom">
|
||||||
<feature name="part_number" value="812-0747-001"/>
|
<feature name="part_number" value="812-0747-001"/>
|
||||||
<feature name="part_id" value=" IRIX 6.5 Beta Applications"/>
|
<feature name="part_id" value="IRIX 6.5 Beta Applications"/>
|
||||||
<!-- Origin: jrra.zone -->
|
<!-- Origin: jrra.zone -->
|
||||||
<diskarea name="cdrom">
|
<diskarea name="cdrom">
|
||||||
<disk name="irix_6_5_beta_applications" sha1="6640a6b668de811d681bb8b17c16a44d67529c33" />
|
<disk name="irix_6_5_beta_applications" sha1="6640a6b668de811d681bb8b17c16a44d67529c33" />
|
||||||
@ -2357,7 +2357,7 @@ license:CC0
|
|||||||
</part>
|
</part>
|
||||||
<part name="cdrom8" interface="cdrom">
|
<part name="cdrom8" interface="cdrom">
|
||||||
<feature name="part_number" value="812-0753-001"/>
|
<feature name="part_number" value="812-0753-001"/>
|
||||||
<feature name="part_id" value=" IRIX 6.5 Beta O2 Demos"/>
|
<feature name="part_id" value="IRIX 6.5 Beta O2 Demos"/>
|
||||||
<!-- Origin: jrra.zone -->
|
<!-- Origin: jrra.zone -->
|
||||||
<diskarea name="cdrom">
|
<diskarea name="cdrom">
|
||||||
<disk name="irix_6_5_beta_o2_demos" sha1="c954caa735d92dcf4a6aba620c8d7ad44cf3b0bb" />
|
<disk name="irix_6_5_beta_o2_demos" sha1="c954caa735d92dcf4a6aba620c8d7ad44cf3b0bb" />
|
||||||
@ -3337,7 +3337,7 @@ license:CC0
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
<part name="cdrom4" interface="cdrom">
|
<part name="cdrom4" interface="cdrom">
|
||||||
<feature name="part_number" value="812-0877-022 "/>
|
<feature name="part_number" value="812-0877-022 "/>
|
||||||
<feature name="part_id" value="IRIX 6.5 Applications November 2003"/>
|
<feature name="part_id" value="IRIX 6.5 Applications November 2003"/>
|
||||||
<!-- Origin: archive.org -->
|
<!-- Origin: archive.org -->
|
||||||
<diskarea name="cdrom">
|
<diskarea name="cdrom">
|
||||||
|
@ -645,7 +645,7 @@ license:CC0
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<software name="ledstorm">
|
<software name="ledstorm">
|
||||||
-->
|
-->
|
||||||
<!-- SPS (CAPS) release 3585 -->
|
<!-- SPS (CAPS) release 3585 -->
|
||||||
<!--
|
<!--
|
||||||
@ -1012,7 +1012,7 @@ license:CC0
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<software name="rockhams">
|
<software name="rockhams">
|
||||||
-->
|
-->
|
||||||
<!-- SPS (CAPS) release 3607 -->
|
<!-- SPS (CAPS) release 3607 -->
|
||||||
<!--
|
<!--
|
||||||
@ -1451,7 +1451,7 @@ license:CC0
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<software name="tigeroad">
|
<software name="tigeroad">
|
||||||
-->
|
-->
|
||||||
<!-- SPS (CAPS) release 3625 -->
|
<!-- SPS (CAPS) release 3625 -->
|
||||||
<!--
|
<!--
|
||||||
|
@ -315154,7 +315154,7 @@ license:CC0
|
|||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Project 2612 VGM Archives located at http://project2612.org/list.php
|
<!-- Project 2612 VGM Archives located at http://project2612.org/list.php
|
||||||
Update May 2, 2020 - 5 new entries -->
|
Update May 2, 2020 - 5 new entries -->
|
||||||
|
|
||||||
<software name="joemont2_md">
|
<software name="joemont2_md">
|
||||||
<description>Joe Montana II - Sports Talk Football (GEN/MD)</description>
|
<description>Joe Montana II - Sports Talk Football (GEN/MD)</description>
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
Implementation of the Apple II IWM controller card
|
Implementation of the Apple II IWM controller card
|
||||||
|
|
||||||
WANTED: there are no ROM dumps from this card in any form
|
WANTED: there are no ROM dumps from this card in any form
|
||||||
(the IWM card, the UniDisk )
|
(the IWM card, the UniDisk )
|
||||||
|
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ private:
|
|||||||
// registers
|
// registers
|
||||||
u8 m_cache_controler;
|
u8 m_cache_controler;
|
||||||
u8 m_cache_pointer;
|
u8 m_cache_pointer;
|
||||||
required_device<ram_device> m_cache_buffer;
|
required_device<ram_device> m_cache_buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Code for emulating the Disto RAM cartridge
|
Code for emulating the Disto RAM cartridge
|
||||||
|
|
||||||
This cartridge came in several forms: 256K, 512K, 768K, and 1024K.
|
This cartridge came in several forms: 256K, 512K, 768K, and 1024K.
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ namespace
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<ram_device> m_staticram;
|
required_device<ram_device> m_staticram;
|
||||||
int m_offset;
|
int m_offset;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ void coco_pak_ram_device::device_reset()
|
|||||||
|
|
||||||
void coco_pak_ram_device::scs_write(offs_t offset, u8 data)
|
void coco_pak_ram_device::scs_write(offs_t offset, u8 data)
|
||||||
{
|
{
|
||||||
// int idata = data;
|
// int idata = data;
|
||||||
|
|
||||||
switch(offset)
|
switch(offset)
|
||||||
{
|
{
|
||||||
|
@ -791,7 +791,7 @@ void ecb_grip21_device::cxstb_w(uint8_t data)
|
|||||||
|
|
||||||
void grip5_state::eprom_w(uint8_t data)
|
void grip5_state::eprom_w(uint8_t data)
|
||||||
{
|
{
|
||||||
membank("eprom")->set_entry(BIT(data, 0));
|
membank("eprom")->set_entry(BIT(data, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -801,7 +801,7 @@ void grip5_state::eprom_w(uint8_t data)
|
|||||||
|
|
||||||
void grip5_state::dpage_w(uint8_t data)
|
void grip5_state::dpage_w(uint8_t data)
|
||||||
{
|
{
|
||||||
m_dpage = BIT(data, 7);
|
m_dpage = BIT(data, 7);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -23,15 +23,15 @@ DEFINE_DEVICE_TYPE(GRID2101_HDD, grid2101_hdd_device, "grid2101_hdd", "GRID2101_
|
|||||||
#include "logmacro.h"
|
#include "logmacro.h"
|
||||||
|
|
||||||
#define GRID2102_FETCH32(Array, Offset) ((uint32_t)(\
|
#define GRID2102_FETCH32(Array, Offset) ((uint32_t)(\
|
||||||
(Array[Offset] << 0) |\
|
(Array[Offset] << 0) |\
|
||||||
(Array[Offset + 1] << 8) |\
|
(Array[Offset + 1] << 8) |\
|
||||||
(Array[Offset + 2] << 16) |\
|
(Array[Offset + 2] << 16) |\
|
||||||
(Array[Offset + 3] << 24)\
|
(Array[Offset + 3] << 24)\
|
||||||
))
|
))
|
||||||
|
|
||||||
#define GRID2102_FETCH16(Array, Offset) ((uint16_t)(\
|
#define GRID2102_FETCH16(Array, Offset) ((uint16_t)(\
|
||||||
(Array[Offset] << 0) |\
|
(Array[Offset] << 0) |\
|
||||||
(Array[Offset + 1] << 8)\
|
(Array[Offset + 1] << 8)\
|
||||||
))
|
))
|
||||||
|
|
||||||
#define GRID2101_HARDDISK_DEV_ADDR 4
|
#define GRID2101_HARDDISK_DEV_ADDR 4
|
||||||
@ -48,258 +48,258 @@ DEFINE_DEVICE_TYPE(GRID2101_HDD, grid2101_hdd_device, "grid2101_hdd", "GRID2101_
|
|||||||
#define GRID210X_STATE_WRITING_DATA_WAIT 3
|
#define GRID210X_STATE_WRITING_DATA_WAIT 3
|
||||||
|
|
||||||
uint8_t grid2102_device::identify_response[56] = {0x00, 0x02, 0xf8, 0x01, 0xD0, 0x02, 0x01, 0x20, 0x01, 0x21, 0x01, 0x01, 0x00, 0x00,
|
uint8_t grid2102_device::identify_response[56] = {0x00, 0x02, 0xf8, 0x01, 0xD0, 0x02, 0x01, 0x20, 0x01, 0x21, 0x01, 0x01, 0x00, 0x00,
|
||||||
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
||||||
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
||||||
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
||||||
|
|
||||||
uint8_t grid2101_floppy_device::identify_response[56] = {0x00, 0x02, 0xf8, 0x01, 0xD0, 0x02, 0x01, 0x20, 0x01, 0x21, 0x01, 0x01, 0x00, 0x00,
|
uint8_t grid2101_floppy_device::identify_response[56] = {0x00, 0x02, 0xf8, 0x01, 0xD0, 0x02, 0x01, 0x20, 0x01, 0x21, 0x01, 0x01, 0x00, 0x00,
|
||||||
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
0x34, 0x38, 0x20, 0x54, 0x50, 0x49, 0x20, 0x44, 0x53, 0x20, 0x44, 0x44, 0x20, 0x46,
|
||||||
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
0x4c, 0x4f, 0x50, 0x50, 0x59, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x32, 0x33, 0x37,
|
||||||
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
0x2d, 0x30, 0x30, 0x00, 0x02, 0x09, 0x00};
|
||||||
|
|
||||||
uint8_t grid2101_hdd_device::identify_response[56] = {
|
uint8_t grid2101_hdd_device::identify_response[56] = {
|
||||||
0x00, 0x02, 0xF8, 0x01, 0x8C, 0x51, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4D, 0x41,
|
0x00, 0x02, 0xF8, 0x01, 0x8C, 0x51, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4D, 0x41,
|
||||||
0x4D, 0x45, 0x20, 0x48, 0x41, 0x52, 0x44, 0x44, 0x49, 0x53, 0x4B, 0x20, 0x44, 0x52, 0x49, 0x56,
|
0x4D, 0x45, 0x20, 0x48, 0x41, 0x52, 0x44, 0x44, 0x49, 0x53, 0x4B, 0x20, 0x44, 0x52, 0x49, 0x56,
|
||||||
0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x47, 0x52, 0x49, 0x44, 0x32, 0x31, 0x30, 0x31, 0x00, 0x02,
|
0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x47, 0x52, 0x49, 0x44, 0x32, 0x31, 0x30, 0x31, 0x00, 0x02,
|
||||||
0x11, 0x00, 0x33, 0x01, 0x00, 0x00, 0x04, 0x00
|
0x11, 0x00, 0x33, 0x01, 0x00, 0x00, 0x04, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
grid210x_device::grid210x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int bus_addr, uint8_t *identify_response, attotime read_delay)
|
grid210x_device::grid210x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int bus_addr, uint8_t *identify_response, attotime read_delay)
|
||||||
: device_t(mconfig, type, tag, owner, clock),
|
: device_t(mconfig, type, tag, owner, clock),
|
||||||
device_ieee488_interface(mconfig, *this),
|
device_ieee488_interface(mconfig, *this),
|
||||||
device_image_interface(mconfig, *this),
|
device_image_interface(mconfig, *this),
|
||||||
m_gpib_loop_state(GRID210X_GPIB_STATE_IDLE),
|
m_gpib_loop_state(GRID210X_GPIB_STATE_IDLE),
|
||||||
m_floppy_loop_state(GRID210X_STATE_IDLE),
|
m_floppy_loop_state(GRID210X_STATE_IDLE),
|
||||||
listening(false),
|
listening(false),
|
||||||
talking(false),
|
talking(false),
|
||||||
serial_polling(false),
|
serial_polling(false),
|
||||||
has_srq(false),
|
has_srq(false),
|
||||||
serial_poll_byte(0),
|
serial_poll_byte(0),
|
||||||
bus_addr(bus_addr),
|
bus_addr(bus_addr),
|
||||||
identify_response_ptr(identify_response),
|
identify_response_ptr(identify_response),
|
||||||
read_delay(read_delay)
|
read_delay(read_delay)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::device_start() {
|
void grid210x_device::device_start() {
|
||||||
m_bus->ndac_w(this, 1);
|
m_bus->ndac_w(this, 1);
|
||||||
m_bus->nrfd_w(this, 1);
|
m_bus->nrfd_w(this, 1);
|
||||||
m_delay_timer = timer_alloc(0);
|
m_delay_timer = timer_alloc(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) {
|
void grid210x_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) {
|
||||||
if (m_floppy_loop_state == GRID210X_STATE_READING_DATA) {
|
if (m_floppy_loop_state == GRID210X_STATE_READING_DATA) {
|
||||||
std::unique_ptr<uint8_t[]> data(new uint8_t[io_size]);
|
std::unique_ptr<uint8_t[]> data(new uint8_t[io_size]);
|
||||||
fseek(floppy_sector_number * 512, SEEK_SET);
|
fseek(floppy_sector_number * 512, SEEK_SET);
|
||||||
fread(data.get(), io_size);
|
fread(data.get(), io_size);
|
||||||
for (int i = 0; i < io_size; i++) {
|
for (int i = 0; i < io_size; i++) {
|
||||||
m_output_data_buffer.push(data[i]);
|
m_output_data_buffer.push(data[i]);
|
||||||
}
|
}
|
||||||
serial_poll_byte = 0x0F;
|
serial_poll_byte = 0x0F;
|
||||||
has_srq = true;
|
has_srq = true;
|
||||||
m_bus->srq_w(this, 0);
|
m_bus->srq_w(this, 0);
|
||||||
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
||||||
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA_WAIT) {
|
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA_WAIT) {
|
||||||
// send an srq as success flag
|
// send an srq as success flag
|
||||||
for (int i = 0; i < 7; i++) { // FIXME:
|
for (int i = 0; i < 7; i++) { // FIXME:
|
||||||
m_output_data_buffer.push(0);
|
m_output_data_buffer.push(0);
|
||||||
}
|
}
|
||||||
serial_poll_byte = 0x0F;
|
serial_poll_byte = 0x0F;
|
||||||
has_srq = true;
|
has_srq = true;
|
||||||
m_bus->srq_w(this, 0);
|
m_bus->srq_w(this, 0);
|
||||||
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
m_floppy_loop_state = GRID210X_STATE_IDLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_eoi(int state) {
|
void grid210x_device::ieee488_eoi(int state) {
|
||||||
// logerror("grid210x_device eoi state set to %d\n", state);
|
// logerror("grid210x_device eoi state set to %d\n", state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::accept_transfer() {
|
void grid210x_device::accept_transfer() {
|
||||||
if (m_floppy_loop_state == GRID210X_STATE_IDLE) {
|
if (m_floppy_loop_state == GRID210X_STATE_IDLE) {
|
||||||
if (m_data_buffer.size() >= 0xA) {
|
if (m_data_buffer.size() >= 0xA) {
|
||||||
uint8_t command = m_data_buffer[0];
|
uint8_t command = m_data_buffer[0];
|
||||||
uint32_t sector_number = GRID2102_FETCH32(m_data_buffer, 3);
|
uint32_t sector_number = GRID2102_FETCH32(m_data_buffer, 3);
|
||||||
uint16_t data_size = GRID2102_FETCH16(m_data_buffer, 7);
|
uint16_t data_size = GRID2102_FETCH16(m_data_buffer, 7);
|
||||||
LOG("grid210x_device command %u, data size %u, sector no %u\n", (unsigned)command, (unsigned)data_size, (unsigned)sector_number);
|
LOG("grid210x_device command %u, data size %u, sector no %u\n", (unsigned)command, (unsigned)data_size, (unsigned)sector_number);
|
||||||
(void)(sector_number);
|
(void)(sector_number);
|
||||||
if (command == 0x1) { // ddGetStatus
|
if (command == 0x1) { // ddGetStatus
|
||||||
for (int i = 0; i < 56 && i < data_size; i++) {
|
for (int i = 0; i < 56 && i < data_size; i++) {
|
||||||
m_output_data_buffer.push(identify_response_ptr[i]);
|
m_output_data_buffer.push(identify_response_ptr[i]);
|
||||||
}
|
}
|
||||||
} else if (command == 0x4) { // ddRead
|
} else if (command == 0x4) { // ddRead
|
||||||
floppy_sector_number = sector_number;
|
floppy_sector_number = sector_number;
|
||||||
io_size = data_size;
|
io_size = data_size;
|
||||||
m_floppy_loop_state = GRID210X_STATE_READING_DATA;
|
m_floppy_loop_state = GRID210X_STATE_READING_DATA;
|
||||||
m_delay_timer->adjust(read_delay);
|
m_delay_timer->adjust(read_delay);
|
||||||
} else if (command == 0x5) {
|
} else if (command == 0x5) {
|
||||||
floppy_sector_number = sector_number;
|
floppy_sector_number = sector_number;
|
||||||
io_size = data_size;
|
io_size = data_size;
|
||||||
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA;
|
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA;
|
||||||
}
|
}
|
||||||
} // else something is wrong, ignore
|
} // else something is wrong, ignore
|
||||||
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA) {
|
} else if (m_floppy_loop_state == GRID210X_STATE_WRITING_DATA) {
|
||||||
// write
|
// write
|
||||||
if (floppy_sector_number != 0xFFFFFFFF) {
|
if (floppy_sector_number != 0xFFFFFFFF) {
|
||||||
fseek(floppy_sector_number * 512, SEEK_SET);
|
fseek(floppy_sector_number * 512, SEEK_SET);
|
||||||
fwrite(m_data_buffer.data(), m_data_buffer.size());
|
fwrite(m_data_buffer.data(), m_data_buffer.size());
|
||||||
} else {
|
} else {
|
||||||
// TODO: set status
|
// TODO: set status
|
||||||
}
|
}
|
||||||
// logerror("grid210x_device write sector %d\n", floppy_sector_number);
|
// logerror("grid210x_device write sector %d\n", floppy_sector_number);
|
||||||
// wait
|
// wait
|
||||||
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA_WAIT;
|
m_floppy_loop_state = GRID210X_STATE_WRITING_DATA_WAIT;
|
||||||
m_delay_timer->adjust(read_delay);
|
m_delay_timer->adjust(read_delay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_dav(int state) {
|
void grid210x_device::ieee488_dav(int state) {
|
||||||
if(state == 0 && m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
if(state == 0 && m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
||||||
// read data and wait for transfer end
|
// read data and wait for transfer end
|
||||||
int atn = m_bus->atn_r() ^ 1;
|
int atn = m_bus->atn_r() ^ 1;
|
||||||
m_bus->nrfd_w(this, 0);
|
m_bus->nrfd_w(this, 0);
|
||||||
uint8_t data = m_bus->dio_r() ^ 0xFF;
|
uint8_t data = m_bus->dio_r() ^ 0xFF;
|
||||||
int eoi = m_bus->eoi_r() ^ 1;
|
int eoi = m_bus->eoi_r() ^ 1;
|
||||||
LOG_BYTES("grid210x_device byte recv %02x atn %d eoi %d\n", data, atn, eoi);
|
LOG_BYTES("grid210x_device byte recv %02x atn %d eoi %d\n", data, atn, eoi);
|
||||||
m_last_recv_byte = data;
|
m_last_recv_byte = data;
|
||||||
m_last_recv_atn = atn;
|
m_last_recv_atn = atn;
|
||||||
m_last_recv_eoi = eoi;
|
m_last_recv_eoi = eoi;
|
||||||
m_bus->ndac_w(this, 1);
|
m_bus->ndac_w(this, 1);
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_DAV_FALSE;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_DAV_FALSE;
|
||||||
} else if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_DAV_FALSE) {
|
} else if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_DAV_FALSE) {
|
||||||
// restore initial state
|
// restore initial state
|
||||||
// m_bus->ndac_w(this, 0);
|
// m_bus->ndac_w(this, 0);
|
||||||
m_bus->nrfd_w(this, 1);
|
m_bus->nrfd_w(this, 1);
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
||||||
update_ndac(m_bus->atn_r() ^ 1);
|
update_ndac(m_bus->atn_r() ^ 1);
|
||||||
|
|
||||||
if (m_last_recv_atn) {
|
if (m_last_recv_atn) {
|
||||||
if ((m_last_recv_byte & 0xE0) == 0x20) {
|
if ((m_last_recv_byte & 0xE0) == 0x20) {
|
||||||
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
||||||
// dev-id = 5
|
// dev-id = 5
|
||||||
listening = true;
|
listening = true;
|
||||||
LOG("grid210x_device now listening\n");
|
LOG("grid210x_device now listening\n");
|
||||||
} else if((m_last_recv_byte & 0x1F) == 0x1F) {
|
} else if((m_last_recv_byte & 0x1F) == 0x1F) {
|
||||||
// reset listen
|
// reset listen
|
||||||
listening = false;
|
listening = false;
|
||||||
LOG("grid210x_device now not listening\n");
|
LOG("grid210x_device now not listening\n");
|
||||||
}
|
}
|
||||||
} else if ((m_last_recv_byte & 0xE0) == 0x40) {
|
} else if ((m_last_recv_byte & 0xE0) == 0x40) {
|
||||||
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
if ((m_last_recv_byte & 0x1F) == bus_addr) {
|
||||||
// dev-id = 5
|
// dev-id = 5
|
||||||
talking = true;
|
talking = true;
|
||||||
LOG("grid210x_device now talking\n");
|
LOG("grid210x_device now talking\n");
|
||||||
} else {
|
} else {
|
||||||
// reset talk
|
// reset talk
|
||||||
talking = false;
|
talking = false;
|
||||||
LOG("grid210x_device now not talking\n");
|
LOG("grid210x_device now not talking\n");
|
||||||
}
|
}
|
||||||
} else if (m_last_recv_byte == 0x18) {
|
} else if (m_last_recv_byte == 0x18) {
|
||||||
// serial poll enable
|
// serial poll enable
|
||||||
serial_polling = true;
|
serial_polling = true;
|
||||||
} else if (m_last_recv_byte == 0x19) {
|
} else if (m_last_recv_byte == 0x19) {
|
||||||
// serial poll disable
|
// serial poll disable
|
||||||
serial_polling = false;
|
serial_polling = false;
|
||||||
}
|
}
|
||||||
} else if (listening) {
|
} else if (listening) {
|
||||||
m_data_buffer.push_back(m_last_recv_byte);
|
m_data_buffer.push_back(m_last_recv_byte);
|
||||||
if (m_last_recv_eoi) {
|
if (m_last_recv_eoi) {
|
||||||
accept_transfer();
|
accept_transfer();
|
||||||
m_data_buffer.clear();
|
m_data_buffer.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (talking) {
|
if (talking) {
|
||||||
if (serial_polling) {
|
if (serial_polling) {
|
||||||
bool had_srq = has_srq;
|
bool had_srq = has_srq;
|
||||||
if (has_srq) {
|
if (has_srq) {
|
||||||
has_srq = false;
|
has_srq = false;
|
||||||
m_bus->srq_w(this, 1);
|
m_bus->srq_w(this, 1);
|
||||||
}
|
}
|
||||||
m_byte_to_send = serial_poll_byte | (had_srq ? 0x40 : 0);
|
m_byte_to_send = serial_poll_byte | (had_srq ? 0x40 : 0);
|
||||||
serial_poll_byte = 0;
|
serial_poll_byte = 0;
|
||||||
m_send_eoi = 1;
|
m_send_eoi = 1;
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||||
} else if (!m_output_data_buffer.empty()) {
|
} else if (!m_output_data_buffer.empty()) {
|
||||||
m_byte_to_send = m_output_data_buffer.front();
|
m_byte_to_send = m_output_data_buffer.front();
|
||||||
m_output_data_buffer.pop();
|
m_output_data_buffer.pop();
|
||||||
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_nrfd(int state) {
|
void grid210x_device::ieee488_nrfd(int state) {
|
||||||
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_SEND_DATA_START) {
|
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_SEND_DATA_START) {
|
||||||
// set dio and assert dav
|
// set dio and assert dav
|
||||||
m_bus->host_dio_w(m_byte_to_send ^ 0xFF);
|
m_bus->host_dio_w(m_byte_to_send ^ 0xFF);
|
||||||
m_bus->eoi_w(this, m_send_eoi ^ 1);
|
m_bus->eoi_w(this, m_send_eoi ^ 1);
|
||||||
m_bus->dav_w(this, 0);
|
m_bus->dav_w(this, 0);
|
||||||
m_bus->ndac_w(this, 1);
|
m_bus->ndac_w(this, 1);
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_NDAC_FALSE;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_WAIT_NDAC_FALSE;
|
||||||
LOG_BYTES("grid210x_device byte send %02x eoi %d\n", m_byte_to_send, m_send_eoi);
|
LOG_BYTES("grid210x_device byte send %02x eoi %d\n", m_byte_to_send, m_send_eoi);
|
||||||
ieee488_ndac(m_bus->ndac_r());
|
ieee488_ndac(m_bus->ndac_r());
|
||||||
}
|
}
|
||||||
// logerror("grid210x_device nrfd state set to %d\n", state);
|
// logerror("grid210x_device nrfd state set to %d\n", state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_ndac(int state) {
|
void grid210x_device::ieee488_ndac(int state) {
|
||||||
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_NDAC_FALSE) {
|
if (state == 1 && m_gpib_loop_state == GRID210X_GPIB_STATE_WAIT_NDAC_FALSE) {
|
||||||
// restore initial state
|
// restore initial state
|
||||||
// logerror("grid210x_device restore ndac nrfd dav eoi\n");
|
// logerror("grid210x_device restore ndac nrfd dav eoi\n");
|
||||||
m_bus->nrfd_w(this, 1);
|
m_bus->nrfd_w(this, 1);
|
||||||
m_bus->dav_w(this, 1);
|
m_bus->dav_w(this, 1);
|
||||||
m_bus->eoi_w(this, 1);
|
m_bus->eoi_w(this, 1);
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_IDLE;
|
||||||
if (serial_polling) {
|
if (serial_polling) {
|
||||||
talking = false;
|
talking = false;
|
||||||
}
|
}
|
||||||
update_ndac(m_bus->atn_r() ^ 1);
|
update_ndac(m_bus->atn_r() ^ 1);
|
||||||
|
|
||||||
if (!serial_polling && talking && !m_output_data_buffer.empty()) {
|
if (!serial_polling && talking && !m_output_data_buffer.empty()) {
|
||||||
m_byte_to_send = m_output_data_buffer.front();
|
m_byte_to_send = m_output_data_buffer.front();
|
||||||
m_output_data_buffer.pop();
|
m_output_data_buffer.pop();
|
||||||
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
m_send_eoi = m_output_data_buffer.empty() ? 1 : 0;
|
||||||
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
m_gpib_loop_state = GRID210X_GPIB_STATE_SEND_DATA_START;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// logerror("grid210x_device ndac state set to %d\n", state);
|
// logerror("grid210x_device ndac state set to %d\n", state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_ifc(int state) {
|
void grid210x_device::ieee488_ifc(int state) {
|
||||||
// logerror("grid210x_device ifc state set to %d\n", state);
|
// logerror("grid210x_device ifc state set to %d\n", state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_srq(int state) {
|
void grid210x_device::ieee488_srq(int state) {
|
||||||
// logerror("grid210x_device srq state set to %d\n", state);
|
// logerror("grid210x_device srq state set to %d\n", state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_atn(int state) {
|
void grid210x_device::ieee488_atn(int state) {
|
||||||
// logerror("grid210x_device atn state set to %d\n", state);
|
// logerror("grid210x_device atn state set to %d\n", state);
|
||||||
update_ndac(state ^ 1);
|
update_ndac(state ^ 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::update_ndac(int atn) {
|
void grid210x_device::update_ndac(int atn) {
|
||||||
if (m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
if (m_gpib_loop_state == GRID210X_GPIB_STATE_IDLE) {
|
||||||
if (atn) {
|
if (atn) {
|
||||||
// pull NDAC low
|
// pull NDAC low
|
||||||
m_bus->ndac_w(this, 0);
|
m_bus->ndac_w(this, 0);
|
||||||
} else {
|
} else {
|
||||||
// pull NDAC high if not listener and low if listener
|
// pull NDAC high if not listener and low if listener
|
||||||
m_bus->ndac_w(this, listening ? 0 : 1);
|
m_bus->ndac_w(this, listening ? 0 : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void grid210x_device::ieee488_ren(int state) {
|
void grid210x_device::ieee488_ren(int state) {
|
||||||
LOG("grid210x_device ren state set to %d\n", state);
|
LOG("grid210x_device ren state set to %d\n", state);
|
||||||
}
|
}
|
||||||
|
|
||||||
grid2101_hdd_device::grid2101_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
grid2101_hdd_device::grid2101_hdd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: grid210x_device(mconfig, GRID2101_HDD, tag, owner, clock, 4, identify_response, attotime::from_usec(150))
|
: grid210x_device(mconfig, GRID2101_HDD, tag, owner, clock, 4, identify_response, attotime::from_usec(150))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// copyright-holders:Sergey Svishchev
|
// copyright-holders:Sergey Svishchev
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// copyright-holders:Sergey Svishchev
|
// copyright-holders:Sergey Svishchev
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
DEC PC11 paper tape reader and punch controller (punch not implemented)
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ private:
|
|||||||
|
|
||||||
class qbus_device : public device_t,
|
class qbus_device : public device_t,
|
||||||
public device_memory_interface,
|
public device_memory_interface,
|
||||||
public device_z80daisy_interface
|
public device_z80daisy_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
|
@ -84,7 +84,7 @@
|
|||||||
V2: D7 BDI ROM_latch (0=enable, 1=disble), D4 - FDC HLT, D3 - SIDE, D0-2 - floppy drive select (bitmask, active low).
|
V2: D7 BDI ROM_latch (0=enable, 1=disble), D4 - FDC HLT, D3 - SIDE, D0-2 - floppy drive select (bitmask, active low).
|
||||||
V3-V4: D7 BDI ROM_latch (0=enable, 1=disble), D6 - FDC DDEN, D4 - SIDE, D3 - FDC HLT, D2 - FDC /MR (reset), D0-1 - floppy drive select (binary value).
|
V3-V4: D7 BDI ROM_latch (0=enable, 1=disble), D6 - FDC DDEN, D4 - SIDE, D3 - FDC HLT, D2 - FDC /MR (reset), D0-1 - floppy drive select (binary value).
|
||||||
CBI clones: D5 - printer port /STROBE
|
CBI clones: D5 - printer port /STROBE
|
||||||
IO read port 0b1xxxx111 <- D7 - FDC INTRQ, D6 - FDC DRQ
|
IO read port 0b1xxxx111 <- D7 - FDC INTRQ, D6 - FDC DRQ
|
||||||
IO read/write ports 0b0YYxx111 - access FDC ports YY
|
IO read/write ports 0b0YYxx111 - access FDC ports YY
|
||||||
|
|
||||||
So mostly the same as beta128, except for new BDI ROM_latch bit
|
So mostly the same as beta128, except for new BDI ROM_latch bit
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
is moved from 3cxx to 3dxx for example)
|
is moved from 3cxx to 3dxx for example)
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
original ROMs should have bits 0 and 7 swapped
|
original ROMs should have bits 0 and 7 swapped
|
||||||
|
|
||||||
there were many unofficial ROMs available for this, make them
|
there were many unofficial ROMs available for this, make them
|
||||||
available for use.
|
available for use.
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
// copyright-holders:MetalliC
|
// copyright-holders:MetalliC
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|
||||||
Didaktik D40/D80 disk interface
|
Didaktik D40/D80 disk interface
|
||||||
(C) 1991 Didaktik Scalica
|
(C) 1991 Didaktik Scalica
|
||||||
|
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
Currently implementation is similar to single stepping
|
Currently implementation is similar to single stepping
|
||||||
with single cycle
|
with single cycle
|
||||||
- Implement and acknowlodge remain registers;
|
- Implement and acknowlodge remain registers;
|
||||||
- Improve delay slot display in debugger (highlight current instruction
|
- Improve delay slot display in debugger (highlight current instruction
|
||||||
doesn't work but instruction hook does);
|
doesn't work but instruction hook does);
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -1292,10 +1292,10 @@ void jaguar_cpu_device::io_common_map(address_map &map)
|
|||||||
map(0x00, 0x03).rw(FUNC(jaguar_cpu_device::flags_r), FUNC(jaguar_cpu_device::flags_w));
|
map(0x00, 0x03).rw(FUNC(jaguar_cpu_device::flags_r), FUNC(jaguar_cpu_device::flags_w));
|
||||||
map(0x04, 0x07).w(FUNC(jaguar_cpu_device::matrix_control_w));
|
map(0x04, 0x07).w(FUNC(jaguar_cpu_device::matrix_control_w));
|
||||||
map(0x08, 0x0b).w(FUNC(jaguar_cpu_device::matrix_address_w));
|
map(0x08, 0x0b).w(FUNC(jaguar_cpu_device::matrix_address_w));
|
||||||
// map(0x0c, 0x0f) endian
|
// map(0x0c, 0x0f) endian
|
||||||
map(0x10, 0x13).w(FUNC(jaguar_cpu_device::pc_w));
|
map(0x10, 0x13).w(FUNC(jaguar_cpu_device::pc_w));
|
||||||
map(0x14, 0x17).rw(FUNC(jaguar_cpu_device::status_r), FUNC(jaguar_cpu_device::control_w));
|
map(0x14, 0x17).rw(FUNC(jaguar_cpu_device::status_r), FUNC(jaguar_cpu_device::control_w));
|
||||||
// map(0x18, 0x1b) implementation specific
|
// map(0x18, 0x1b) implementation specific
|
||||||
map(0x1c, 0x1f).rw(FUNC(jaguar_cpu_device::div_remainder_r), FUNC(jaguar_cpu_device::div_control_w));
|
map(0x1c, 0x1f).rw(FUNC(jaguar_cpu_device::div_remainder_r), FUNC(jaguar_cpu_device::div_control_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1374,7 +1374,7 @@ void jaguar_cpu_device::pc_w(offs_t offset, u32 data, u32 mem_mask)
|
|||||||
* so that Power-On endianness doesn't matter. 1=Big Endian
|
* so that Power-On endianness doesn't matter. 1=Big Endian
|
||||||
* ---- -x-- Instruction endianness
|
* ---- -x-- Instruction endianness
|
||||||
* ---- --x- Pixel endianness (GPU only)
|
* ---- --x- Pixel endianness (GPU only)
|
||||||
* ---- ---x I/O endianness
|
* ---- ---x I/O endianness
|
||||||
*/
|
*/
|
||||||
// TODO: just log if anything farts for now, change to bit struct once we have something to test out
|
// TODO: just log if anything farts for now, change to bit struct once we have something to test out
|
||||||
void jaguar_cpu_device::end_w(offs_t offset, u32 data, u32 mem_mask)
|
void jaguar_cpu_device::end_w(offs_t offset, u32 data, u32 mem_mask)
|
||||||
|
@ -6,16 +6,16 @@
|
|||||||
AMD Am2901B / Am2901C
|
AMD Am2901B / Am2901C
|
||||||
Four-Bit Bipolar Microprocessor Slice
|
Four-Bit Bipolar Microprocessor Slice
|
||||||
|
|
||||||
To Do:
|
To Do:
|
||||||
- Opcode hookup
|
- Opcode hookup
|
||||||
- Verification
|
- Verification
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "am2901b.h"
|
#include "am2901b.h"
|
||||||
|
|
||||||
#define VERBOSE (1)
|
#define VERBOSE (1)
|
||||||
#include "logmacro.h"
|
#include "logmacro.h"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -212,10 +212,10 @@ void sunplus_gcm394_base_device::trigger_systemm_dma(int channel)
|
|||||||
|
|
||||||
// what is it waiting for when we need these? (needed on some service mode screens)
|
// what is it waiting for when we need these? (needed on some service mode screens)
|
||||||
//if (mem.read_word(0x3f368) == 0x4840)
|
//if (mem.read_word(0x3f368) == 0x4840)
|
||||||
// mem.write_word(0x3f368, 0x4841); // cars 2 IRQ? wait hack
|
// mem.write_word(0x3f368, 0x4841); // cars 2 IRQ? wait hack
|
||||||
|
|
||||||
//if (mem.read_word(0x4d8d4) == 0x4840)
|
//if (mem.read_word(0x4d8d4) == 0x4840)
|
||||||
// mem.write_word(0x4d8d4, 0x4841); // golden tee IRQ? wait hack
|
// mem.write_word(0x4d8d4, 0x4841); // golden tee IRQ? wait hack
|
||||||
|
|
||||||
|
|
||||||
// clear params after operation
|
// clear params after operation
|
||||||
|
@ -373,7 +373,7 @@ uint32_t gcm394_base_video_device::screen_update(screen_device &screen, bitmap_r
|
|||||||
}
|
}
|
||||||
|
|
||||||
//const uint16_t bgcol = 0x7c1f; // magenta
|
//const uint16_t bgcol = 0x7c1f; // magenta
|
||||||
// const uint16_t bgcol = 0x0000; // black
|
// const uint16_t bgcol = 0x0000; // black
|
||||||
bool highres;
|
bool highres;
|
||||||
if (m_707f & 0x0010)
|
if (m_707f & 0x0010)
|
||||||
{
|
{
|
||||||
|
@ -81,8 +81,8 @@ void i80130_device::io_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
//ROM_START( i80130 )
|
//ROM_START( i80130 )
|
||||||
// ROM_REGION16_LE( 0x4000, "rom", 0 )
|
// ROM_REGION16_LE( 0x4000, "rom", 0 )
|
||||||
// ROM_LOAD( "80130", 0x0000, 0x4000, NO_DUMP )
|
// ROM_LOAD( "80130", 0x0000, 0x4000, NO_DUMP )
|
||||||
//ROM_END
|
//ROM_END
|
||||||
|
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ void i80130_device::io_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
|||||||
|
|
||||||
//const tiny_rom_entry *i80130_device::device_rom_region() const
|
//const tiny_rom_entry *i80130_device::device_rom_region() const
|
||||||
//{
|
//{
|
||||||
// return ROM_NAME( i80130 );
|
// return ROM_NAME( i80130 );
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#define LOG_DEBUG (1U << 2)
|
#define LOG_DEBUG (1U << 2)
|
||||||
|
|
||||||
//#define LOG_MASK (LOG_GENERAL | LOG_DEV_CALLS | LOG_DEBUG)
|
//#define LOG_MASK (LOG_GENERAL | LOG_DEV_CALLS | LOG_DEBUG)
|
||||||
#define LOG_MASK (0)
|
#define LOG_MASK (0)
|
||||||
|
|
||||||
#define LOGDEVCALLS(...) LOGMASKED(LOG_DEV_CALLS, __VA_ARGS__)
|
#define LOGDEVCALLS(...) LOGMASKED(LOG_DEV_CALLS, __VA_ARGS__)
|
||||||
#define LOGDEBUG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
|
#define LOGDEBUG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
|
||||||
@ -870,7 +870,7 @@ void netlist_mame_stream_output_device::process(netlist::netlist_time_ext tim, n
|
|||||||
|
|
||||||
int pos = (tim - m_last_buffer_time) / m_sample_time;
|
int pos = (tim - m_last_buffer_time) / m_sample_time;
|
||||||
//if (pos > m_bufsize)
|
//if (pos > m_bufsize)
|
||||||
// throw emu_fatalerror("sound %s: pos %d exceeded bufsize %d\n", name().c_str(), pos, m_bufsize);
|
// throw emu_fatalerror("sound %s: pos %d exceeded bufsize %d\n", name().c_str(), pos, m_bufsize);
|
||||||
while (m_buffer.size() < pos )
|
while (m_buffer.size() < pos )
|
||||||
{
|
{
|
||||||
m_buffer.push_back(static_cast<stream_sample_t>(m_cur));
|
m_buffer.push_back(static_cast<stream_sample_t>(m_cur));
|
||||||
@ -1375,7 +1375,7 @@ void netlist_mame_sound_device::device_start()
|
|||||||
void netlist_mame_sound_device::nl_register_devices(netlist::nlparse_t &parser) const
|
void netlist_mame_sound_device::nl_register_devices(netlist::nlparse_t &parser) const
|
||||||
{
|
{
|
||||||
//parser.factory().add<nld_sound_out>("NETDEV_SOUND_OUT",
|
//parser.factory().add<nld_sound_out>("NETDEV_SOUND_OUT",
|
||||||
// netlist::factory::properties("+CHAN", PSOURCELOC()));
|
// netlist::factory::properties("+CHAN", PSOURCELOC()));
|
||||||
parser.factory().add<nld_sound_in>("NETDEV_SOUND_IN",
|
parser.factory().add<nld_sound_in>("NETDEV_SOUND_IN",
|
||||||
netlist::factory::properties("-", PSOURCELOC()));
|
netlist::factory::properties("-", PSOURCELOC()));
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ TODO:
|
|||||||
#define LOG_MMU (1 << 5)
|
#define LOG_MMU (1 << 5)
|
||||||
#define LOG_IRQS (1 << 6)
|
#define LOG_IRQS (1 << 6)
|
||||||
#define LOG_UNKNOWN (1 << 7)
|
#define LOG_UNKNOWN (1 << 7)
|
||||||
#define LOG_MORE_UART (1 << 8)
|
#define LOG_MORE_UART (1 << 8)
|
||||||
#define LOG_ALL (LOG_I2C | LOG_UART | LOG_TIMERS | LOG_DMA | LOG_MMU | LOG_IRQS | LOG_UNKNOWN)
|
#define LOG_ALL (LOG_I2C | LOG_UART | LOG_TIMERS | LOG_DMA | LOG_MMU | LOG_IRQS | LOG_UNKNOWN)
|
||||||
|
|
||||||
#define VERBOSE (0)
|
#define VERBOSE (0)
|
||||||
|
@ -27,7 +27,7 @@ DEFINE_DEVICE_TYPE(SPG28X_IO, spg28x_io_device, "spg28x_io", "SPG280-series Syst
|
|||||||
#define LOG_EXT_MEM (1U << 27)
|
#define LOG_EXT_MEM (1U << 27)
|
||||||
#define LOG_EXTINT (1U << 28)
|
#define LOG_EXTINT (1U << 28)
|
||||||
#define LOG_SPI (1U << 29)
|
#define LOG_SPI (1U << 29)
|
||||||
#define LOG_ADC (1U << 30)
|
#define LOG_ADC (1U << 30)
|
||||||
#define LOG_IO (LOG_IO_READS | LOG_IO_WRITES | LOG_IRQS | LOG_GPIO | LOG_UART | LOG_I2C | LOG_TIMERS | LOG_EXTINT | LOG_UNKNOWN_IO | LOG_SPI | LOG_ADC)
|
#define LOG_IO (LOG_IO_READS | LOG_IO_WRITES | LOG_IRQS | LOG_GPIO | LOG_UART | LOG_I2C | LOG_TIMERS | LOG_EXTINT | LOG_UNKNOWN_IO | LOG_SPI | LOG_ADC)
|
||||||
#define LOG_ALL (LOG_IO | LOG_VLINES | LOG_SEGMENT | LOG_WATCHDOG | LOG_FIQ | LOG_SIO | LOG_EXT_MEM | LOG_ADC)
|
#define LOG_ALL (LOG_IO | LOG_VLINES | LOG_SEGMENT | LOG_WATCHDOG | LOG_FIQ | LOG_SIO | LOG_EXT_MEM | LOG_ADC)
|
||||||
|
|
||||||
|
@ -140,8 +140,8 @@ void spg_renderer_device::draw_tilestrip(bool read_from_csspace, uint32_t screen
|
|||||||
{
|
{
|
||||||
|
|
||||||
m_linebuf[realdrawpos] = (mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 10) & 0x1f, (rgb >> 10) & 0x1f, blendlevel) << 10) |
|
m_linebuf[realdrawpos] = (mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 10) & 0x1f, (rgb >> 10) & 0x1f, blendlevel) << 10) |
|
||||||
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 5) & 0x1f, (rgb >> 5) & 0x1f, blendlevel) << 5) |
|
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 5) & 0x1f, (rgb >> 5) & 0x1f, blendlevel) << 5) |
|
||||||
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 0) & 0x1f, (rgb >> 0) & 0x1f, blendlevel) << 0);
|
(mix_channel((uint8_t)(m_linebuf[realdrawpos] >> 0) & 0x1f, (rgb >> 0) & 0x1f, blendlevel) << 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -417,7 +417,7 @@ void spg_renderer_device::draw_page(bool read_from_csspace, bool has_extended_ti
|
|||||||
{
|
{
|
||||||
// used by senspeed
|
// used by senspeed
|
||||||
//if (m_video_regs_1e != 0x0000)
|
//if (m_video_regs_1e != 0x0000)
|
||||||
// popmessage("vertical compression mode with non-0 step amount %04x offset %04x step %04x\n", m_video_regs_1c, m_video_regs_1d, m_video_regs_1e);
|
// popmessage("vertical compression mode with non-0 step amount %04x offset %04x step %04x\n", m_video_regs_1c, m_video_regs_1d, m_video_regs_1e);
|
||||||
|
|
||||||
logical_scanline = m_ycmp_table[scanline];
|
logical_scanline = m_ycmp_table[scanline];
|
||||||
if (logical_scanline == 0xffffffff)
|
if (logical_scanline == 0xffffffff)
|
||||||
@ -617,7 +617,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
|||||||
|
|
||||||
|
|
||||||
uint32_t screenwidth = 320;
|
uint32_t screenwidth = 320;
|
||||||
// uint32_t screenheight = 240;
|
// uint32_t screenheight = 240;
|
||||||
uint32_t screenheight = 256;
|
uint32_t screenheight = 256;
|
||||||
uint32_t xmask = 0x1ff;
|
uint32_t xmask = 0x1ff;
|
||||||
uint32_t ymask = 0x1ff;
|
uint32_t ymask = 0x1ff;
|
||||||
@ -625,7 +625,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
|||||||
if (highres)
|
if (highres)
|
||||||
{
|
{
|
||||||
screenwidth = 640;
|
screenwidth = 640;
|
||||||
// screenheight = 480;
|
// screenheight = 480;
|
||||||
screenheight = 512;
|
screenheight = 512;
|
||||||
xmask = 0x3ff;
|
xmask = 0x3ff;
|
||||||
ymask = 0x3ff;
|
ymask = 0x3ff;
|
||||||
@ -637,7 +637,7 @@ void spg_renderer_device::draw_sprite(bool read_from_csspace, bool has_extended_
|
|||||||
if (!(m_video_regs_42 & 0x0002))
|
if (!(m_video_regs_42 & 0x0002))
|
||||||
{
|
{
|
||||||
x = ((screenwidth/2) + x) - tile_w / 2;
|
x = ((screenwidth/2) + x) - tile_w / 2;
|
||||||
// y = ((screenheight/2) - y) - (tile_h / 2) + 8;
|
// y = ((screenheight/2) - y) - (tile_h / 2) + 8;
|
||||||
y = ((screenheight/2) - y) - (tile_h / 2);
|
y = ((screenheight/2) - y) - (tile_h / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,15 +33,15 @@ DEFINE_DEVICE_TYPE(SUN4C_MMU, sun4c_mmu_device, "sun4c_mmu", "Sun 4c MMU")
|
|||||||
#define LOG_TYPE1_TIMEOUT (1U << 12)
|
#define LOG_TYPE1_TIMEOUT (1U << 12)
|
||||||
#define LOG_UNKNOWN_SPACE (1U << 13)
|
#define LOG_UNKNOWN_SPACE (1U << 13)
|
||||||
#define LOG_WRITE_PROTECT (1U << 14)
|
#define LOG_WRITE_PROTECT (1U << 14)
|
||||||
#define LOG_READ_PROTECT (1U << 15)
|
#define LOG_READ_PROTECT (1U << 15)
|
||||||
#define LOG_PARITY (1U << 16)
|
#define LOG_PARITY (1U << 16)
|
||||||
#define LOG_ALL_ASI (1U << 17) // WARNING: Heavy!
|
#define LOG_ALL_ASI (1U << 17) // WARNING: Heavy!
|
||||||
#define LOG_UNKNOWN_ASI (1U << 18)
|
#define LOG_UNKNOWN_ASI (1U << 18)
|
||||||
#define LOG_SEGMENT_FLUSH (1U << 19)
|
#define LOG_SEGMENT_FLUSH (1U << 19)
|
||||||
#define LOG_PAGE_FLUSH (1U << 20)
|
#define LOG_PAGE_FLUSH (1U << 20)
|
||||||
#define LOG_CONTEXT_FLUSH (1U << 21)
|
#define LOG_CONTEXT_FLUSH (1U << 21)
|
||||||
#define LOG_CACHE_FILLS (1U << 22)
|
#define LOG_CACHE_FILLS (1U << 22)
|
||||||
#define LOG_PAGE_ENTRIES (1U << 23)
|
#define LOG_PAGE_ENTRIES (1U << 23)
|
||||||
|
|
||||||
#if SUN4CMMU_LOG_MEM_ACCESSES
|
#if SUN4CMMU_LOG_MEM_ACCESSES
|
||||||
static FILE* s_mem_log = nullptr;
|
static FILE* s_mem_log = nullptr;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include "machine/ram.h"
|
#include "machine/ram.h"
|
||||||
#include "machine/z80scc.h"
|
#include "machine/z80scc.h"
|
||||||
|
|
||||||
#define SUN4CMMU_LOG_MEM_ACCESSES (0)
|
#define SUN4CMMU_LOG_MEM_ACCESSES (0)
|
||||||
|
|
||||||
class sun4_mmu_base_device : public device_t, public sparc_mmu_interface
|
class sun4_mmu_base_device : public device_t, public sparc_mmu_interface
|
||||||
{
|
{
|
||||||
|
@ -419,7 +419,7 @@ void c219_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
|
|||||||
|
|
||||||
if (ch_noise(v)) // noise
|
if (ch_noise(v)) // noise
|
||||||
{
|
{
|
||||||
m_lfsr = (m_lfsr >> 1) ^ ((-(m_lfsr & 1)) & 0xfff6);
|
m_lfsr = (m_lfsr >> 1) ^ ((-(m_lfsr & 1)) & 0xfff6);
|
||||||
lastdt = s16(m_lfsr);
|
lastdt = s16(m_lfsr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:Alex Marshall,nimitz,austere
|
// copyright-holders:Alex Marshall,nimitz,austere
|
||||||
/*
|
/*
|
||||||
ICS2115 by Raiden II team (c) 2010
|
ICS2115 by Raiden II team (c) 2010
|
||||||
members: austere, nimitz, Alex Marshal
|
members: austere, nimitz, Alex Marshal
|
||||||
|
|
||||||
Original driver by O. Galibert, ElSemi
|
Original driver by O. Galibert, ElSemi
|
||||||
|
|
||||||
Use tab size = 4 for your viewing pleasure.
|
Use tab size = 4 for your viewing pleasure.
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- Implement Panning, Chip has support stereo
|
- Implement Panning, Chip has support stereo
|
||||||
- Verify BYTE/ROMEN pin behaviors
|
- Verify BYTE/ROMEN pin behaviors
|
||||||
- DRAM, DMA, MIDI interface is unimplemented
|
- DRAM, DMA, MIDI interface is unimplemented
|
||||||
- Verify interrupt, envelope, timer period
|
- Verify interrupt, envelope, timer period
|
||||||
- Verify unemulated registers
|
- Verify unemulated registers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
@ -150,8 +150,8 @@ private:
|
|||||||
bool m_irq_on;
|
bool m_irq_on;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Unknown variable, seems to be effected by 0x12. Further investigation
|
Unknown variable, seems to be effected by 0x12. Further investigation
|
||||||
Required.
|
Required.
|
||||||
*/
|
*/
|
||||||
u8 m_vmode;
|
u8 m_vmode;
|
||||||
};
|
};
|
||||||
|
@ -65,21 +65,21 @@ static constexpr int CLOCKS_PER_SAMPLE = 64;
|
|||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC")
|
DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC")
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
// Pan multipliers. Set according to integer angles in degrees, amusingly.
|
// Pan multipliers. Set according to integer angles in degrees, amusingly.
|
||||||
// Exact precision hard to know, the floating point-ish output format makes
|
// Exact precision hard to know, the floating point-ish output format makes
|
||||||
// comparisons iffy. So we used a 1.16 format.
|
// comparisons iffy. So we used a 1.16 format.
|
||||||
const int k053260_device::pan_mul[8][2] = {
|
const int k053260_device::pan_mul[8][2] = {
|
||||||
{ 0, 0 }, // No sound for pan 0
|
{ 0, 0 }, // No sound for pan 0
|
||||||
{ 65536, 0 }, // 0 degrees
|
{ 65536, 0 }, // 0 degrees
|
||||||
{ 59870, 26656 }, // 24 degrees
|
{ 59870, 26656 }, // 24 degrees
|
||||||
{ 53684, 37950 }, // 35 degrees
|
{ 53684, 37950 }, // 35 degrees
|
||||||
{ 46341, 46341 }, // 45 degrees
|
{ 46341, 46341 }, // 45 degrees
|
||||||
{ 37950, 53684 }, // 55 degrees
|
{ 37950, 53684 }, // 55 degrees
|
||||||
{ 26656, 59870 }, // 66 degrees
|
{ 26656, 59870 }, // 66 degrees
|
||||||
{ 0, 65536 } // 90 degrees
|
{ 0, 65536 } // 90 degrees
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ void debugger_console::execute_help_custom(int ref, const std::vector<std::strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------
|
/*------------------------------------------------------------
|
||||||
execute_condump - execute the condump command
|
execute_condump - execute the condump command
|
||||||
------------------------------------------------------------*/
|
------------------------------------------------------------*/
|
||||||
|
|
||||||
void debugger_console::execute_condump(int ref, const std::vector<std::string>& params)
|
void debugger_console::execute_condump(int ref, const std::vector<std::string>& params)
|
||||||
@ -584,8 +584,8 @@ std::string debugger_console::cmderr_to_string(CMDERR error)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
print_core - write preformatted text
|
print_core - write preformatted text
|
||||||
to the debug console
|
to the debug console
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
void debugger_console::print_core(const char *text)
|
void debugger_console::print_core(const char *text)
|
||||||
@ -597,8 +597,8 @@ void debugger_console::print_core(const char *text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
print_core_wrap - write preformatted text
|
print_core_wrap - write preformatted text
|
||||||
to the debug console, with wrapping
|
to the debug console, with wrapping
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
void debugger_console::print_core_wrap(const char *text, int wrapcol)
|
void debugger_console::print_core_wrap(const char *text, int wrapcol)
|
||||||
|
@ -318,8 +318,8 @@ text_buffer_lines text_buffer_get_lines(text_buffer* text)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
text_buffer_lines::text_buffer_line_iterator::operator*
|
text_buffer_lines::text_buffer_line_iterator::operator*
|
||||||
Gets the line that the iterator currently points to.
|
Gets the line that the iterator currently points to.
|
||||||
-----------------------------------------------------------------------*/
|
-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
text_buffer_line text_buffer_lines::text_buffer_line_iterator::operator*() const
|
text_buffer_line text_buffer_lines::text_buffer_line_iterator::operator*() const
|
||||||
@ -343,8 +343,8 @@ text_buffer_line text_buffer_lines::text_buffer_line_iterator::operator*() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
text_buffer_lines::text_buffer_line_iterator::operator++
|
text_buffer_lines::text_buffer_line_iterator::operator++
|
||||||
Moves to the next line.
|
Moves to the next line.
|
||||||
-----------------------------------------------------------------------*/
|
-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
text_buffer_lines::text_buffer_line_iterator& text_buffer_lines::text_buffer_line_iterator::operator++()
|
text_buffer_lines::text_buffer_line_iterator& text_buffer_lines::text_buffer_line_iterator::operator++()
|
||||||
@ -356,8 +356,8 @@ text_buffer_lines::text_buffer_line_iterator& text_buffer_lines::text_buffer_lin
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------
|
/*------------------------------------------------------
|
||||||
text_buffer_lines::begin()
|
text_buffer_lines::begin()
|
||||||
Returns an iterator that points to the first line.
|
Returns an iterator that points to the first line.
|
||||||
--------------------------------------------------------*/
|
--------------------------------------------------------*/
|
||||||
|
|
||||||
text_buffer_lines::iterator text_buffer_lines::begin() const
|
text_buffer_lines::iterator text_buffer_lines::begin() const
|
||||||
@ -366,8 +366,8 @@ text_buffer_lines::iterator text_buffer_lines::begin() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
text_buffer_lines::begin()
|
text_buffer_lines::begin()
|
||||||
Returns an iterator that points just past the last line.
|
Returns an iterator that points just past the last line.
|
||||||
-------------------------------------------------------------*/
|
-------------------------------------------------------------*/
|
||||||
|
|
||||||
text_buffer_lines::iterator text_buffer_lines::end() const
|
text_buffer_lines::iterator text_buffer_lines::end() const
|
||||||
|
@ -21,49 +21,49 @@ struct text_buffer;
|
|||||||
|
|
||||||
struct text_buffer_line
|
struct text_buffer_line
|
||||||
{
|
{
|
||||||
const char *text;
|
const char *text;
|
||||||
size_t length;
|
size_t length;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* helper class that makes it possible to iterate over the lines of a text_buffer */
|
/* helper class that makes it possible to iterate over the lines of a text_buffer */
|
||||||
class text_buffer_lines
|
class text_buffer_lines
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
text_buffer& m_buffer;
|
text_buffer& m_buffer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
text_buffer_lines(text_buffer& buffer) : m_buffer(buffer) { }
|
text_buffer_lines(text_buffer& buffer) : m_buffer(buffer) { }
|
||||||
|
|
||||||
class text_buffer_line_iterator
|
class text_buffer_line_iterator
|
||||||
{
|
{
|
||||||
text_buffer& m_buffer;
|
text_buffer& m_buffer;
|
||||||
s32 m_lineptr;
|
s32 m_lineptr;
|
||||||
public:
|
public:
|
||||||
text_buffer_line_iterator(text_buffer& buffer, s32 lineptr) :
|
text_buffer_line_iterator(text_buffer& buffer, s32 lineptr) :
|
||||||
m_buffer(buffer),
|
m_buffer(buffer),
|
||||||
m_lineptr(lineptr)
|
m_lineptr(lineptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/* technically this isn't a valid forward iterator, because
|
/* technically this isn't a valid forward iterator, because
|
||||||
* operator * doesn't return a reference
|
* operator * doesn't return a reference
|
||||||
*/
|
*/
|
||||||
text_buffer_line operator *() const;
|
text_buffer_line operator *() const;
|
||||||
text_buffer_line_iterator& operator ++();
|
text_buffer_line_iterator& operator ++();
|
||||||
|
|
||||||
bool operator != (const text_buffer_line_iterator& rhs)
|
bool operator != (const text_buffer_line_iterator& rhs)
|
||||||
{
|
{
|
||||||
return m_lineptr != rhs.m_lineptr;
|
return m_lineptr != rhs.m_lineptr;
|
||||||
}
|
}
|
||||||
/* according to C++ spec, only != is needed; == is present for completeness. */
|
/* according to C++ spec, only != is needed; == is present for completeness. */
|
||||||
bool operator == (const text_buffer_line_iterator& rhs) { return !(operator !=(rhs)); }
|
bool operator == (const text_buffer_line_iterator& rhs) { return !(operator !=(rhs)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef text_buffer_line_iterator iterator;
|
typedef text_buffer_line_iterator iterator;
|
||||||
typedef text_buffer_line_iterator const iterator_const;
|
typedef text_buffer_line_iterator const iterator_const;
|
||||||
|
|
||||||
iterator begin() const;
|
iterator begin() const;
|
||||||
iterator end() const;
|
iterator end() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
@ -15,8 +15,8 @@ template<int AddrWidth, int DataWidth, int AddrShift, endianness_t Endian>
|
|||||||
void device_rom_interface<AddrWidth, DataWidth, AddrShift, Endian>::override_address_width(u8 width)
|
void device_rom_interface<AddrWidth, DataWidth, AddrShift, Endian>::override_address_width(u8 width)
|
||||||
{
|
{
|
||||||
// cach does not need level match, only specific does at this point
|
// cach does not need level match, only specific does at this point
|
||||||
// if(emu::detail::handler_entry_dispatch_level(AddrWidth) != emu::detail::handler_entry_dispatch_level(width))
|
// if(emu::detail::handler_entry_dispatch_level(AddrWidth) != emu::detail::handler_entry_dispatch_level(width))
|
||||||
// emu_fatalerror("%s: Widths %d and %d are incompatible", device().tag(), width, AddrWidth);
|
// emu_fatalerror("%s: Widths %d and %d are incompatible", device().tag(), width, AddrWidth);
|
||||||
|
|
||||||
m_rom_config.m_addr_width = width;
|
m_rom_config.m_addr_width = width;
|
||||||
}
|
}
|
||||||
|
@ -459,7 +459,7 @@ enum
|
|||||||
// INPUT_STRING_8C_4C, // 0.500000
|
// INPUT_STRING_8C_4C, // 0.500000
|
||||||
// INPUT_STRING_6C_3C, // 0.500000
|
// INPUT_STRING_6C_3C, // 0.500000
|
||||||
INPUT_STRING_4C_2C, // 0.500000
|
INPUT_STRING_4C_2C, // 0.500000
|
||||||
INPUT_STRING_5C_2C, // 0.500000
|
INPUT_STRING_5C_2C, // 0.500000
|
||||||
INPUT_STRING_2C_1C, // 0.500000
|
INPUT_STRING_2C_1C, // 0.500000
|
||||||
// INPUT_STRING_9C_5C, // 0.555556
|
// INPUT_STRING_9C_5C, // 0.555556
|
||||||
// INPUT_STRING_7C_4C, // 0.571429
|
// INPUT_STRING_7C_4C, // 0.571429
|
||||||
|
@ -912,7 +912,7 @@ void natural_keyboard::dump(std::ostream &str) const
|
|||||||
{
|
{
|
||||||
// identify the keys used
|
// identify the keys used
|
||||||
for (std::size_t field = 0; (entry.field.size() > field) && entry.field[field]; ++field)
|
for (std::size_t field = 0; (entry.field.size() > field) && entry.field[field]; ++field)
|
||||||
util::stream_format(str, "%s'%s'", first ? "" : ", ", entry.field[field]->name());
|
util::stream_format(str, "%s'%s'", first ? "" : ", ", entry.field[field]->name());
|
||||||
|
|
||||||
// carriage return
|
// carriage return
|
||||||
str << '\n';
|
str << '\n';
|
||||||
|
@ -239,7 +239,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<std::pair<const char *, T>, SIZE> m_map;
|
std::array<std::pair<const char *, T>, SIZE> m_map;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@ bool imd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
|
|||||||
desc_pc_sector sects[256];
|
desc_pc_sector sects[256];
|
||||||
|
|
||||||
for(int i=0; i<m_sector_count.back(); i++) {
|
for(int i=0; i<m_sector_count.back(); i++) {
|
||||||
uint8_t stype = img[pos++];
|
uint8_t stype = img[pos++];
|
||||||
sects[i].track = m_tnum.back().size() ? m_tnum.back()[i] : m_track.back();
|
sects[i].track = m_tnum.back().size() ? m_tnum.back()[i] : m_track.back();
|
||||||
sects[i].head = m_hnum.back().size() ? m_hnum.back()[i] : m_head.back();
|
sects[i].head = m_hnum.back().size() ? m_hnum.back()[i] : m_head.back();
|
||||||
sects[i].sector = m_snum.back()[i];
|
sects[i].sector = m_snum.back()[i];
|
||||||
@ -629,7 +629,7 @@ bool imd_format::save(io_generic* io, floppy_image* image)
|
|||||||
mode = 1;
|
mode = 1;
|
||||||
io_generic_write(io, &mode, pos++, 1);
|
io_generic_write(io, &mode, pos++, 1);
|
||||||
io_generic_write(io, &sdata, pos, actual_size);
|
io_generic_write(io, &sdata, pos, actual_size);
|
||||||
pos += actual_size;
|
pos += actual_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ namespace devices
|
|||||||
|
|
||||||
if (doOUT)
|
if (doOUT)
|
||||||
//for (std::size_t i = 0; i < m_NO; ++i)
|
//for (std::size_t i = 0; i < m_NO; ++i)
|
||||||
// m_Q[i].push((out >> i) & 1, tim[t[i]]);
|
// m_Q[i].push((out >> i) & 1, tim[t[i]]);
|
||||||
this->push(out, t);
|
this->push(out, t);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -13,8 +13,8 @@ NETLIST_START(perf)
|
|||||||
|
|
||||||
ANALOG_INPUT(V5, 5)
|
ANALOG_INPUT(V5, 5)
|
||||||
|
|
||||||
CLOCK(CLK, 100) // clock for driving the 74393
|
CLOCK(CLK, 100) // clock for driving the 74393
|
||||||
CLOCK(CLK2, 3) // off-beat clock for master reset
|
CLOCK(CLK2, 3) // off-beat clock for master reset
|
||||||
TTL_74393_DIP(TESTCHIP)
|
TTL_74393_DIP(TESTCHIP)
|
||||||
|
|
||||||
NET_C(V5, CLK.VCC, CLK2.VCC, TESTCHIP.14)
|
NET_C(V5, CLK.VCC, CLK2.VCC, TESTCHIP.14)
|
||||||
|
@ -124,20 +124,20 @@ namespace factory {
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
||||||
template <std::size_t... Is>
|
template <std::size_t... Is>
|
||||||
dev_uptr make_device(device_arena &pool,
|
dev_uptr make_device(device_arena &pool,
|
||||||
netlist_state_t &anetlist,
|
netlist_state_t &anetlist,
|
||||||
const pstring &name, std::tuple<Args...>& args, std::index_sequence<Is...>)
|
const pstring &name, std::tuple<Args...>& args, std::index_sequence<Is...>)
|
||||||
{
|
{
|
||||||
return plib::make_unique<C>(pool, anetlist, name, std::forward<Args>(std::get<Is>(args))...);
|
return plib::make_unique<C>(pool, anetlist, name, std::forward<Args>(std::get<Is>(args))...);
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_uptr make_device(device_arena &pool,
|
dev_uptr make_device(device_arena &pool,
|
||||||
netlist_state_t &anetlist,
|
netlist_state_t &anetlist,
|
||||||
const pstring &name, std::tuple<Args...>& args)
|
const pstring &name, std::tuple<Args...>& args)
|
||||||
{
|
{
|
||||||
return make_device(pool, anetlist, name, args, std::index_sequence_for<Args...>{});
|
return make_device(pool, anetlist, name, args, std::index_sequence_for<Args...>{});
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_uptr make_device(device_arena &pool,
|
dev_uptr make_device(device_arena &pool,
|
||||||
netlist_state_t &anetlist,
|
netlist_state_t &anetlist,
|
||||||
|
@ -32,21 +32,21 @@ namespace netlist
|
|||||||
/// The following code is an example on how to add the device to
|
/// The following code is an example on how to add the device to
|
||||||
/// the netlist factory.
|
/// the netlist factory.
|
||||||
///
|
///
|
||||||
/// const pstring pin(m_in);
|
/// const pstring pin(m_in);
|
||||||
/// pstring dname = pstring("OUT_") + pin;
|
/// pstring dname = pstring("OUT_") + pin;
|
||||||
///
|
///
|
||||||
/// const auto lambda = [this](auto &in, netlist::nl_fptype val)
|
/// const auto lambda = [this](auto &in, netlist::nl_fptype val)
|
||||||
/// {
|
/// {
|
||||||
/// this->cpu()->update_icount(in.exec().time());
|
/// this->cpu()->update_icount(in.exec().time());
|
||||||
/// this->m_delegate(val, this->cpu()->local_time());
|
/// this->m_delegate(val, this->cpu()->local_time());
|
||||||
/// this->cpu()->check_mame_abort_slice();
|
/// this->cpu()->check_mame_abort_slice();
|
||||||
/// };
|
/// };
|
||||||
///
|
///
|
||||||
/// using lb_t = decltype(lambda);
|
/// using lb_t = decltype(lambda);
|
||||||
/// using cb_t = netlist::interface::NETLIB_NAME(analog_callback)<lb_t>;
|
/// using cb_t = netlist::interface::NETLIB_NAME(analog_callback)<lb_t>;
|
||||||
///
|
///
|
||||||
/// parser.factory().add<cb_t, netlist::nl_fptype, lb_t>(dname,
|
/// parser.factory().add<cb_t, netlist::nl_fptype, lb_t>(dname,
|
||||||
/// netlist::factory::properties("-", PSOURCELOC()), 1e-6, std::forward<lb_t>(lambda));
|
/// netlist::factory::properties("-", PSOURCELOC()), 1e-6, std::forward<lb_t>(lambda));
|
||||||
///
|
///
|
||||||
|
|
||||||
template <typename FUNC>
|
template <typename FUNC>
|
||||||
@ -232,7 +232,7 @@ namespace netlist
|
|||||||
object_array_t<param_fp_t, MAX_INPUT_CHANNELS> m_param_mults;
|
object_array_t<param_fp_t, MAX_INPUT_CHANNELS> m_param_mults;
|
||||||
object_array_t<param_fp_t, MAX_INPUT_CHANNELS> m_param_offsets;
|
object_array_t<param_fp_t, MAX_INPUT_CHANNELS> m_param_offsets;
|
||||||
std::array<param_fp_t *, MAX_INPUT_CHANNELS> m_params;
|
std::array<param_fp_t *, MAX_INPUT_CHANNELS> m_params;
|
||||||
std::array<T *, MAX_INPUT_CHANNELS> m_buffers;
|
std::array<T *, MAX_INPUT_CHANNELS> m_buffers;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace interface
|
} // namespace interface
|
||||||
|
@ -189,7 +189,7 @@ namespace plib {
|
|||||||
using base_allocator_typex = typename BASEARENA::template allocator_type<std::pair<void * const, info>>;
|
using base_allocator_typex = typename BASEARENA::template allocator_type<std::pair<void * const, info>>;
|
||||||
std::unordered_map<void *, info, std::hash<void *>, std::equal_to<void *>,
|
std::unordered_map<void *, info, std::hash<void *>, std::equal_to<void *>,
|
||||||
base_allocator_typex> m_info;
|
base_allocator_typex> m_info;
|
||||||
// std::unordered_map<void *, info> m_info;
|
// std::unordered_map<void *, info> m_info;
|
||||||
std::vector<block *, typename BASEARENA::template allocator_type<block *>> m_blocks;
|
std::vector<block *, typename BASEARENA::template allocator_type<block *>> m_blocks;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -117,7 +117,7 @@ namespace plib {
|
|||||||
|| ci::os() == ci_os::EMSCRIPTEN)) ? 2 :
|
|| ci::os() == ci_os::EMSCRIPTEN)) ? 2 :
|
||||||
(ci::type() == ci_compiler::CLANG || ci::type() == ci_compiler::GCC) ? 1 :
|
(ci::type() == ci_compiler::CLANG || ci::type() == ci_compiler::GCC) ? 1 :
|
||||||
(ci::type() == ci_compiler::MSC && ci::m64()) ? 3 :
|
(ci::type() == ci_compiler::MSC && ci::m64()) ? 3 :
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -416,10 +416,10 @@ namespace plib {
|
|||||||
/// plib::late_pmfp<plib::pmfp<void, pstring>> a(&nld_7493::printer);
|
/// plib::late_pmfp<plib::pmfp<void, pstring>> a(&nld_7493::printer);
|
||||||
/// // Store the a object somewhere
|
/// // Store the a object somewhere
|
||||||
///
|
///
|
||||||
/// // After full construction ...
|
/// // After full construction ...
|
||||||
///
|
///
|
||||||
/// auto dele = a(this);
|
/// auto dele = a(this);
|
||||||
/// dele(pstring("Hello World!"));
|
/// dele(pstring("Hello World!"));
|
||||||
///
|
///
|
||||||
template<typename T>
|
template<typename T>
|
||||||
class late_pmfp
|
class late_pmfp
|
||||||
|
@ -89,7 +89,7 @@ namespace plib {
|
|||||||
std::size_t capacity() const noexcept { return m_list.capacity() - 1; }
|
std::size_t capacity() const noexcept { return m_list.capacity() - 1; }
|
||||||
bool empty() const noexcept { return (m_end == &m_list[1]); }
|
bool empty() const noexcept { return (m_end == &m_list[1]); }
|
||||||
|
|
||||||
template<bool KEEPSTAT, typename... Args>
|
template<bool KEEPSTAT, typename... Args>
|
||||||
void emplace(Args&&... args) noexcept
|
void emplace(Args&&... args) noexcept
|
||||||
{
|
{
|
||||||
// Lock
|
// Lock
|
||||||
|
@ -148,7 +148,7 @@ namespace plib
|
|||||||
using arch = std::integral_constant<ci_arch, ci_arch::ARM>;
|
using arch = std::integral_constant<ci_arch, ci_arch::ARM>;
|
||||||
#elif defined(__MIPSEL__) || defined(__mips_isa_rev) || defined(__mips64)
|
#elif defined(__MIPSEL__) || defined(__mips_isa_rev) || defined(__mips64)
|
||||||
using arch = std::integral_constant<ci_arch, ci_arch::MIPS>;
|
using arch = std::integral_constant<ci_arch, ci_arch::MIPS>;
|
||||||
#else
|
#else
|
||||||
using arch = std::integral_constant<ci_arch, ci_arch::UNKNOWN>;
|
using arch = std::integral_constant<ci_arch, ci_arch::UNKNOWN>;
|
||||||
#endif
|
#endif
|
||||||
#if defined(__MINGW32__)
|
#if defined(__MINGW32__)
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
class bu3905_device : public device_t
|
class bu3905_device : public device_t
|
||||||
{
|
{
|
||||||
public: // construction/destruction
|
public: // construction/destruction
|
||||||
bu3905_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
bu3905_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||||
|
|
||||||
void write(offs_t offset, u8 data);
|
void write(offs_t offset, u8 data);
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
// numeric instability. Also adjusts values of resistors associated with these
|
// numeric instability. Also adjusts values of resistors associated with these
|
||||||
// oscillators to maintain their frequency and voltage levels.
|
// oscillators to maintain their frequency and voltage levels.
|
||||||
|
|
||||||
#define CONVERGENCE_FRONTIERS 1
|
#define CONVERGENCE_FRONTIERS 1
|
||||||
|
|
||||||
|
|
||||||
static NETLIST_START(mc3340)
|
static NETLIST_START(mc3340)
|
||||||
@ -840,13 +840,13 @@ NETLIST_START(280zzzap)
|
|||||||
|
|
||||||
// All together, loosening both tolerances and reducing accuracy
|
// All together, loosening both tolerances and reducing accuracy
|
||||||
// increases speed by ~10%, but it also causes audible "crackling".
|
// increases speed by ~10%, but it also causes audible "crackling".
|
||||||
// PARAM(Solver.RELTOL, 1e-2) // default 1e-3 (several % faster, but < quality)
|
// PARAM(Solver.RELTOL, 1e-2) // default 1e-3 (several % faster, but < quality)
|
||||||
// PARAM(Solver.VNTOL, 5e-3) // default 1e-7 (several % faster, but < quality)
|
// PARAM(Solver.VNTOL, 5e-3) // default 1e-7 (several % faster, but < quality)
|
||||||
// PARAM(Solver.ACCURACY, 1e-3) // default 1e-7 (few % faster)
|
// PARAM(Solver.ACCURACY, 1e-3) // default 1e-7 (few % faster)
|
||||||
|
|
||||||
// PARAM(Solver.DYNAMIC_TS, 1)
|
// PARAM(Solver.DYNAMIC_TS, 1)
|
||||||
// PARAM(Solver.DYNAMIC_LTE, 1e-4) // default 1e-5
|
// PARAM(Solver.DYNAMIC_LTE, 1e-4) // default 1e-5
|
||||||
// PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 1e-8) // default 1e-6
|
// PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 1e-8) // default 1e-6
|
||||||
|
|
||||||
ANALOG_INPUT(I_V12, 12)
|
ANALOG_INPUT(I_V12, 12)
|
||||||
ANALOG_INPUT(I_V5, 5)
|
ANALOG_INPUT(I_V5, 5)
|
||||||
@ -899,27 +899,27 @@ NETLIST_START(280zzzap)
|
|||||||
|
|
||||||
// Power pins for logic inputs:
|
// Power pins for logic inputs:
|
||||||
NET_C(I_V5.Q,
|
NET_C(I_V5.Q,
|
||||||
I_F4_2.VCC, I_F4_5.VCC, I_F4_7.VCC, I_F4_10.VCC,
|
I_F4_2.VCC, I_F4_5.VCC, I_F4_7.VCC, I_F4_10.VCC,
|
||||||
I_F5_2.VCC, I_F5_5.VCC, I_F5_7.VCC, I_F5_10.VCC,
|
I_F5_2.VCC, I_F5_5.VCC, I_F5_7.VCC, I_F5_10.VCC,
|
||||||
I_F5_12.VCC, I_F5_15.VCC)
|
I_F5_12.VCC, I_F5_15.VCC)
|
||||||
NET_C(GND,
|
NET_C(GND,
|
||||||
I_F4_2.GND, I_F4_5.GND, I_F4_7.GND, I_F4_10.GND,
|
I_F4_2.GND, I_F4_5.GND, I_F4_7.GND, I_F4_10.GND,
|
||||||
I_F5_2.GND, I_F5_5.GND, I_F5_7.GND, I_F5_10.GND,
|
I_F5_2.GND, I_F5_5.GND, I_F5_7.GND, I_F5_10.GND,
|
||||||
I_F5_12.GND, I_F5_15.GND)
|
I_F5_12.GND, I_F5_15.GND)
|
||||||
|
|
||||||
// Power inputs for the LM3900 op-amps. These aren't shown on the
|
// Power inputs for the LM3900 op-amps. These aren't shown on the
|
||||||
// schematics, but it looks like 5-volt power is needed to get proper
|
// schematics, but it looks like 5-volt power is needed to get proper
|
||||||
// results.
|
// results.
|
||||||
NET_C(I_V5.Q,
|
NET_C(I_V5.Q,
|
||||||
H4_1.VCC, H4_2.VCC, H4_3.VCC, H4_4.VCC,
|
H4_1.VCC, H4_2.VCC, H4_3.VCC, H4_4.VCC,
|
||||||
H5_1.VCC, H5_2.VCC, H5_3.VCC, H5_4.VCC,
|
H5_1.VCC, H5_2.VCC, H5_3.VCC, H5_4.VCC,
|
||||||
J3_1.VCC, J3_2.VCC, J3_3.VCC, J3_4.VCC,
|
J3_1.VCC, J3_2.VCC, J3_3.VCC, J3_4.VCC,
|
||||||
J5_1.VCC, J5_2.VCC, J5_3.VCC)
|
J5_1.VCC, J5_2.VCC, J5_3.VCC)
|
||||||
NET_C(GND,
|
NET_C(GND,
|
||||||
H4_1.GND, H4_2.GND, H4_3.GND, H4_4.GND,
|
H4_1.GND, H4_2.GND, H4_3.GND, H4_4.GND,
|
||||||
H5_1.GND, H5_2.GND, H5_3.GND, H5_4.GND,
|
H5_1.GND, H5_2.GND, H5_3.GND, H5_4.GND,
|
||||||
J3_1.GND, J3_2.GND, J3_3.GND, J3_4.GND,
|
J3_1.GND, J3_2.GND, J3_3.GND, J3_4.GND,
|
||||||
J5_1.GND, J5_2.GND, J5_3.GND)
|
J5_1.GND, J5_2.GND, J5_3.GND)
|
||||||
|
|
||||||
// Power inputs for the CD4016 switches. Again, these aren't shown on
|
// Power inputs for the CD4016 switches. Again, these aren't shown on
|
||||||
// the schematics, but 5-volt power must be used for the switches to
|
// the schematics, but 5-volt power must be used for the switches to
|
||||||
|
@ -3302,11 +3302,11 @@ ROM_START( donpachihk )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
/*
|
/*
|
||||||
When you press the 2p start button, it pauses the game (music still plays).
|
When you press the 2p start button, it pauses the game (music still plays).
|
||||||
Pressing the 1p start button unpauses the game.
|
Pressing the 1p start button unpauses the game.
|
||||||
If you press both 1p start and 2p start at the same time, the game lets you play in slow motion (music still plays normally).
|
If you press both 1p start and 2p start at the same time, the game lets you play in slow motion (music still plays normally).
|
||||||
|
|
||||||
This was on the label of the ROM chip: 国内撮影用
|
This was on the label of the ROM chip: 国内撮影用
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ROM_START( donpachijs )
|
ROM_START( donpachijs )
|
||||||
|
@ -63,11 +63,11 @@ TODO:
|
|||||||
// TODO: NTSC system clock is 30.2098 MHz; additional 4.9152 MHz XTAL provided for UART
|
// TODO: NTSC system clock is 30.2098 MHz; additional 4.9152 MHz XTAL provided for UART
|
||||||
#define CLOCK_A 30_MHz_XTAL
|
#define CLOCK_A 30_MHz_XTAL
|
||||||
|
|
||||||
#define LOG_DVC (1 << 1)
|
#define LOG_DVC (1 << 1)
|
||||||
#define LOG_QUIZARD_READS (1 << 2)
|
#define LOG_QUIZARD_READS (1 << 2)
|
||||||
#define LOG_QUIZARD_WRITES (1 << 3)
|
#define LOG_QUIZARD_WRITES (1 << 3)
|
||||||
#define LOG_QUIZARD_OTHER (1 << 4)
|
#define LOG_QUIZARD_OTHER (1 << 4)
|
||||||
#define LOG_UART (1 << 5)
|
#define LOG_UART (1 << 5)
|
||||||
|
|
||||||
#define VERBOSE (0)
|
#define VERBOSE (0)
|
||||||
#include "logmacro.h"
|
#include "logmacro.h"
|
||||||
|
@ -2129,10 +2129,10 @@ void cischeat_state::scudhamm(machine_config &config)
|
|||||||
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
|
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
|
||||||
// measured values for Arm Champs II: VSync: 59.1784Hz, HSync: 15082.0 kHz
|
// measured values for Arm Champs II: VSync: 59.1784Hz, HSync: 15082.0 kHz
|
||||||
m_screen->set_raw(XTAL(12'000'000)/2,396,0,256,256,16,240);
|
m_screen->set_raw(XTAL(12'000'000)/2,396,0,256,256,16,240);
|
||||||
// m_screen->set_refresh_hz(30); //TODO: wrong!
|
// m_screen->set_refresh_hz(30); //TODO: wrong!
|
||||||
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */);
|
// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500 * 3) /* not accurate */);
|
||||||
// m_screen->set_size(256, 256);
|
// m_screen->set_size(256, 256);
|
||||||
// m_screen->set_visarea(0, 256-1, 0 +16, 256-1 -16);
|
// m_screen->set_visarea(0, 256-1, 0 +16, 256-1 -16);
|
||||||
m_screen->set_screen_update(FUNC(cischeat_state::screen_update_scudhamm));
|
m_screen->set_screen_update(FUNC(cischeat_state::screen_update_scudhamm));
|
||||||
m_screen->set_palette(m_palette);
|
m_screen->set_palette(m_palette);
|
||||||
|
|
||||||
|
@ -84,8 +84,8 @@ void consoemt_state::io_map(address_map &map)
|
|||||||
map(0x220, 0x220).portr("NUMBUS-H");
|
map(0x220, 0x220).portr("NUMBUS-H");
|
||||||
map(0x230, 0x230).portr("NUMFAB-L");
|
map(0x230, 0x230).portr("NUMFAB-L");
|
||||||
map(0x240, 0x240).portr("NUMFAB-H");
|
map(0x240, 0x240).portr("NUMFAB-H");
|
||||||
// map(0x250, 0x250).r // read on int2
|
// map(0x250, 0x250).r // read on int2
|
||||||
// map(0x260, 0x260).r // read on int1
|
// map(0x260, 0x260).r // read on int1
|
||||||
map(0x280, 0x281).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write));
|
map(0x280, 0x281).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,13 +35,13 @@
|
|||||||
#define LOG_FDC_CTRL (1 << 6)
|
#define LOG_FDC_CTRL (1 << 6)
|
||||||
#define LOG_FDC_PORT (1 << 7)
|
#define LOG_FDC_PORT (1 << 7)
|
||||||
#define LOG_FDC_CMD (1 << 8)
|
#define LOG_FDC_CMD (1 << 8)
|
||||||
#define LOG_FDC_MECH (1 << 9)
|
#define LOG_FDC_MECH (1 << 9)
|
||||||
#define LOG_OUTPUT_TIMING (1 << 10)
|
#define LOG_OUTPUT_TIMING (1 << 10)
|
||||||
#define LOG_BRUSH_ADDR (1 << 11)
|
#define LOG_BRUSH_ADDR (1 << 11)
|
||||||
#define LOG_STORE_ADDR (1 << 12)
|
#define LOG_STORE_ADDR (1 << 12)
|
||||||
#define LOG_COMBINER (1 << 13)
|
#define LOG_COMBINER (1 << 13)
|
||||||
#define LOG_SIZE_CARD (1 << 14)
|
#define LOG_SIZE_CARD (1 << 14)
|
||||||
#define LOG_FILTER_CARD (1 << 15)
|
#define LOG_FILTER_CARD (1 << 15)
|
||||||
#define LOG_ALL (LOG_UNKNOWN | LOG_CSR | LOG_CTRLBUS | LOG_SYS_CTRL | LOG_FDC_CTRL | LOG_FDC_PORT | LOG_FDC_CMD | LOG_FDC_MECH | LOG_BRUSH_ADDR | \
|
#define LOG_ALL (LOG_UNKNOWN | LOG_CSR | LOG_CTRLBUS | LOG_SYS_CTRL | LOG_FDC_CTRL | LOG_FDC_PORT | LOG_FDC_CMD | LOG_FDC_MECH | LOG_BRUSH_ADDR | \
|
||||||
LOG_STORE_ADDR | LOG_COMBINER | LOG_SIZE_CARD | LOG_FILTER_CARD)
|
LOG_STORE_ADDR | LOG_COMBINER | LOG_SIZE_CARD | LOG_FILTER_CARD)
|
||||||
|
|
||||||
@ -1276,55 +1276,55 @@ void dpb7000_state::cpu_ctrlbus_w(uint16_t data)
|
|||||||
((data >> 8) & 0xf) == 6 ? "Initiate" : "Continue");
|
((data >> 8) & 0xf) == 6 ? "Initiate" : "Continue");
|
||||||
/*if (((data >> 8) & 0xf) == 6)
|
/*if (((data >> 8) & 0xf) == 6)
|
||||||
{
|
{
|
||||||
m_size_h = 0;
|
m_size_h = 0;
|
||||||
m_size_v = 0;
|
m_size_v = 0;
|
||||||
}
|
}
|
||||||
uint16_t disc_buffer_addr = 0;
|
uint16_t disc_buffer_addr = 0;
|
||||||
uint16_t bx = m_bxlen_counter - m_bxlen;
|
uint16_t bx = m_bxlen_counter - m_bxlen;
|
||||||
uint16_t by = m_bylen_counter - m_bylen;
|
uint16_t by = m_bylen_counter - m_bylen;
|
||||||
while (m_diskbuf_data_count > 0 && m_bylen_counter < 0x1000)
|
while (m_diskbuf_data_count > 0 && m_bylen_counter < 0x1000)
|
||||||
{
|
{
|
||||||
uint8_t hv = (m_size_h << 4) | m_size_v;
|
uint8_t hv = (m_size_h << 4) | m_size_v;
|
||||||
uint8_t hv_permuted = bitswap<8>(hv,4,6,0,2,5,7,1,3);
|
uint8_t hv_permuted = bitswap<8>(hv,4,6,0,2,5,7,1,3);
|
||||||
|
|
||||||
if (BIT(m_brush_addr_func, 7)) // Luma Enable
|
if (BIT(m_brush_addr_func, 7)) // Luma Enable
|
||||||
{
|
{
|
||||||
//printf("%02x ", m_diskbuf_ram[disc_buffer_addr]);
|
//printf("%02x ", m_diskbuf_ram[disc_buffer_addr]);
|
||||||
m_brushstore_lum[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
m_brushstore_lum[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
||||||
}
|
}
|
||||||
|
|
||||||
disc_buffer_addr++;
|
disc_buffer_addr++;
|
||||||
m_diskbuf_data_count--;
|
m_diskbuf_data_count--;
|
||||||
|
|
||||||
if (BIT(m_brush_addr_func, 8)) // Chroma Enable
|
if (BIT(m_brush_addr_func, 8)) // Chroma Enable
|
||||||
{
|
{
|
||||||
m_brushstore_chr[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
m_brushstore_chr[by * 256 + hv_permuted] = m_diskbuf_ram[disc_buffer_addr];
|
||||||
}
|
}
|
||||||
|
|
||||||
disc_buffer_addr++;
|
disc_buffer_addr++;
|
||||||
m_diskbuf_data_count--;
|
m_diskbuf_data_count--;
|
||||||
|
|
||||||
m_size_h++;
|
m_size_h++;
|
||||||
if (m_size_h == 16)
|
if (m_size_h == 16)
|
||||||
{
|
{
|
||||||
m_size_h = 0;
|
m_size_h = 0;
|
||||||
m_size_v++;
|
m_size_v++;
|
||||||
if (m_size_v == 16)
|
if (m_size_v == 16)
|
||||||
{
|
{
|
||||||
m_size_v = 0;
|
m_size_v = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bx++;
|
bx++;
|
||||||
m_bxlen_counter++;
|
m_bxlen_counter++;
|
||||||
if (m_bxlen_counter == 0x1000)
|
if (m_bxlen_counter == 0x1000)
|
||||||
{
|
{
|
||||||
bx = 0;
|
bx = 0;
|
||||||
by++;
|
by++;
|
||||||
m_bxlen_counter = m_bxlen;
|
m_bxlen_counter = m_bxlen;
|
||||||
m_bylen_counter++;
|
m_bylen_counter++;
|
||||||
//printf("\n");
|
//printf("\n");
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
m_diskseq_complete_clk->adjust(attotime::from_msec(1));
|
m_diskseq_complete_clk->adjust(attotime::from_msec(1));
|
||||||
break;
|
break;
|
||||||
@ -1563,7 +1563,7 @@ void dpb7000_state::fdd_index_callback(floppy_image_device *floppy, int state)
|
|||||||
bit_idx++;
|
bit_idx++;
|
||||||
//if ((bit_idx % 8) == 0)
|
//if ((bit_idx % 8) == 0)
|
||||||
//{
|
//{
|
||||||
// printf("%02x ", (uint8_t)curr_window);
|
// printf("%02x ", (uint8_t)curr_window);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (!seen_pregap && curr_window == PREGAP_MARK)
|
if (!seen_pregap && curr_window == PREGAP_MARK)
|
||||||
|
@ -1126,7 +1126,7 @@ IRQ_CALLBACK_MEMBER(galaxian_state::froggermc_audiocpu_irq_ack)
|
|||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
uint8_t galaxian_state::frogf_ppi8255_r(offs_t offset)
|
uint8_t galaxian_state::frogf_ppi8255_r(offs_t offset)
|
||||||
{
|
{
|
||||||
/* the decoding here is very simplistic, and you can address both simultaneously */
|
/* the decoding here is very simplistic, and you can address both simultaneously */
|
||||||
uint8_t result = 0xff;
|
uint8_t result = 0xff;
|
||||||
|
@ -62,8 +62,8 @@
|
|||||||
the High School Musical part has its own test mode which tests a different part of the ROM, use the same code but after selecting the game from menu
|
the High School Musical part has its own test mode which tests a different part of the ROM, use the same code but after selecting the game from menu
|
||||||
|
|
||||||
|
|
||||||
--- the individual CS spaces could (and probably should?) be done with a bunch of extra memory spaces rather than the cs0_r / cs0_w etc. but that would mean yet
|
--- the individual CS spaces could (and probably should?) be done with a bunch of extra memory spaces rather than the cs0_r / cs0_w etc. but that would mean yet
|
||||||
another trip through the memory system for almost everything and at ~100Mhz that is slow.
|
another trip through the memory system for almost everything and at ~100Mhz that is slow.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
// copyright-holders:David Haywood
|
// copyright-holders:David Haywood
|
||||||
|
|
||||||
/*
|
/*
|
||||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||||
|
|
||||||
GPL16250 is the GeneralPlus / SunPlus part number
|
GPL16250 is the GeneralPlus / SunPlus part number
|
||||||
GPAC800 is the JAKKS Pacific codename
|
GPAC800 is the JAKKS Pacific codename
|
||||||
GMC384 / GCM420 is what is printed on the die
|
GMC384 / GCM420 is what is printed on the die
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
GPL16250 Mobigo support
|
GPL16250 Mobigo support
|
||||||
the original Mobigo is ROM+RAM config
|
the original Mobigo is ROM+RAM config
|
||||||
the Mobigo 2 is NAND+RAM config
|
the Mobigo 2 is NAND+RAM config
|
||||||
cartridges are compatible
|
cartridges are compatible
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:David Haywood
|
// copyright-holders:David Haywood
|
||||||
/*
|
/*
|
||||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||||
|
|
||||||
GPL16250 is the GeneralPlus / SunPlus part number
|
GPL16250 is the GeneralPlus / SunPlus part number
|
||||||
GPAC800 is the JAKKS Pacific codename
|
GPAC800 is the JAKKS Pacific codename
|
||||||
GMC384 / GCM420 is what is printed on the die
|
GMC384 / GCM420 is what is printed on the die
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
GPL16250 games using NAND + RAM configuration
|
GPL16250 games using NAND + RAM configuration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:David Haywood
|
// copyright-holders:David Haywood
|
||||||
/*
|
/*
|
||||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||||
|
|
||||||
GPL16250 is the GeneralPlus / SunPlus part number
|
GPL16250 is the GeneralPlus / SunPlus part number
|
||||||
GPAC800 is the JAKKS Pacific codename
|
GPAC800 is the JAKKS Pacific codename
|
||||||
GMC384 / GCM420 is what is printed on the die
|
GMC384 / GCM420 is what is printed on the die
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
GPL16250 games using ROM (no extra RAM) configuration
|
GPL16250 games using ROM (no extra RAM) configuration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:David Haywood
|
// copyright-holders:David Haywood
|
||||||
/*
|
/*
|
||||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||||
|
|
||||||
GPL16250 is the GeneralPlus / SunPlus part number
|
GPL16250 is the GeneralPlus / SunPlus part number
|
||||||
GPAC800 is the JAKKS Pacific codename
|
GPAC800 is the JAKKS Pacific codename
|
||||||
GMC384 / GCM420 is what is printed on the die
|
GMC384 / GCM420 is what is printed on the die
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
GPL16250 games using ROM + RAM configuration
|
GPL16250 games using ROM + RAM configuration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
@ -324,7 +324,7 @@ void paccon_game_state::machine_reset()
|
|||||||
{
|
{
|
||||||
jak_s500_game_state::machine_reset();
|
jak_s500_game_state::machine_reset();
|
||||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x6593, 0x6593, read16smo_delegate(*this, FUNC(paccon_game_state::paccon_speedup_hack_r)));
|
m_maincpu->space(AS_PROGRAM).install_read_handler(0x6593, 0x6593, read16smo_delegate(*this, FUNC(paccon_game_state::paccon_speedup_hack_r)));
|
||||||
// install_speedup_hack(0x6593, 0x30033);
|
// install_speedup_hack(0x6593, 0x30033);
|
||||||
}
|
}
|
||||||
|
|
||||||
void jak_pf_game_state::machine_reset()
|
void jak_pf_game_state::machine_reset()
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
// license:BSD-3-Clause
|
// license:BSD-3-Clause
|
||||||
// copyright-holders:David Haywood
|
// copyright-holders:David Haywood
|
||||||
/*
|
/*
|
||||||
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
GPL16250 / GPAC800 / GMC384 / GCM420 related support
|
||||||
|
|
||||||
GPL16250 is the GeneralPlus / SunPlus part number
|
GPL16250 is the GeneralPlus / SunPlus part number
|
||||||
GPAC800 is the JAKKS Pacific codename
|
GPAC800 is the JAKKS Pacific codename
|
||||||
GMC384 / GCM420 is what is printed on the die
|
GMC384 / GCM420 is what is printed on the die
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
GPL16250 games using SPI Flash + RAM configuration
|
GPL16250 games using SPI Flash + RAM configuration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
@ -29,24 +29,24 @@
|
|||||||
- MK5089N - DTMF generator
|
- MK5089N - DTMF generator
|
||||||
- ...
|
- ...
|
||||||
|
|
||||||
high-resolution motherboard photo (enough to read chip numbers): http://deltacxx.insomnia247.nl/gridcompass/motherboard.jpg
|
high-resolution motherboard photo (enough to read chip numbers): http://deltacxx.insomnia247.nl/gridcompass/motherboard.jpg
|
||||||
|
|
||||||
differences between models:
|
differences between models:
|
||||||
- Compass 110x do not have GRiDROM slots.
|
- Compass 110x do not have GRiDROM slots.
|
||||||
- Compass II (112x, 113x) have 4 of them.
|
- Compass II (112x, 113x) have 4 of them.
|
||||||
- Compass II 113x have 512x256 screen size
|
- Compass II 113x have 512x256 screen size
|
||||||
- Compass 11x9 have 512K ram
|
- Compass 11x9 have 512K ram
|
||||||
- Compass II have DMA addresses different from Compass 110x
|
- Compass II have DMA addresses different from Compass 110x
|
||||||
|
|
||||||
to do:
|
to do:
|
||||||
|
|
||||||
- keyboard: decode and add the rest of keycodes
|
- keyboard: decode and add the rest of keycodes
|
||||||
keycode table can be found here on page A-2:
|
keycode table can be found here on page A-2:
|
||||||
http://deltacxx.insomnia247.nl/gridcompass/large_files/Yahoo%20group%20backup/RuGRiD-Laptop/files/6_GRiD-OS-Programming/3_GRiD-OS-Reference.pdf
|
http://deltacxx.insomnia247.nl/gridcompass/large_files/Yahoo%20group%20backup/RuGRiD-Laptop/files/6_GRiD-OS-Programming/3_GRiD-OS-Reference.pdf
|
||||||
- EAROM, RTC
|
- EAROM, RTC
|
||||||
- serial port (incomplete), modem (incl. DTMF generator)
|
- serial port (incomplete), modem (incl. DTMF generator)
|
||||||
- proper custom DMA logic timing
|
- proper custom DMA logic timing
|
||||||
- implement units other than 1101
|
- implement units other than 1101
|
||||||
|
|
||||||
missing dumps:
|
missing dumps:
|
||||||
|
|
||||||
@ -56,9 +56,9 @@
|
|||||||
- external floppy and hard disk (2101, 2102)
|
- external floppy and hard disk (2101, 2102)
|
||||||
|
|
||||||
to boot CCOS 3.0.1:
|
to boot CCOS 3.0.1:
|
||||||
- convert GRIDOS.IMD to IMG format
|
- convert GRIDOS.IMD to IMG format
|
||||||
- create zero-filled 384K bubble memory image and attach it as -memcard
|
- create zero-filled 384K bubble memory image and attach it as -memcard
|
||||||
- attach floppy with `-ieee_grid grid2102 -flop GRIDOS.IMG`
|
- attach floppy with `-ieee_grid grid2102 -flop GRIDOS.IMG`
|
||||||
- use grid1101 with 'ccos' ROM
|
- use grid1101 with 'ccos' ROM
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
@ -56,7 +56,7 @@ protected:
|
|||||||
void gscpm_state::gscpm_mem(address_map &map)
|
void gscpm_state::gscpm_mem(address_map &map)
|
||||||
{
|
{
|
||||||
//map(0x0000, 0x3fff).rom("maincpu"); // This is ROM after reset, and RAM is switched in when CP/M is booted
|
//map(0x0000, 0x3fff).rom("maincpu"); // This is ROM after reset, and RAM is switched in when CP/M is booted
|
||||||
// (will install handlers dynamically)
|
// (will install handlers dynamically)
|
||||||
map(0x4000, 0xffff).ram();
|
map(0x4000, 0xffff).ram();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class gsz80_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
gsz80_state(const machine_config &mconfig, device_type type, const char *tag)
|
gsz80_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
, m_maincpu(*this, "maincpu") // Tag name for Z80 is "maincpu"
|
, m_maincpu(*this, "maincpu") // Tag name for Z80 is "maincpu"
|
||||||
, m_acia(*this, "acia") // Tag name for UART is "acia"
|
, m_acia(*this, "acia") // Tag name for UART is "acia"
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
@ -599,8 +599,8 @@ void gticlub_state::gn680_memmap(address_map &map)
|
|||||||
map(0x000000, 0x01ffff).rom();
|
map(0x000000, 0x01ffff).rom();
|
||||||
map(0x200000, 0x203fff).ram();
|
map(0x200000, 0x203fff).ram();
|
||||||
map(0x300000, 0x300001).w(FUNC(gticlub_state::gn680_sysctrl_w));
|
map(0x300000, 0x300001).w(FUNC(gticlub_state::gn680_sysctrl_w));
|
||||||
// map(0x310000, 0x311fff).nopw(); //056230 regs?
|
// map(0x310000, 0x311fff).nopw(); //056230 regs?
|
||||||
// map(0x312000, 0x313fff).nopw(); //056230 ram?
|
// map(0x312000, 0x313fff).nopw(); //056230 ram?
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -232,7 +232,7 @@ void homelab3_state::homelab3_mem(address_map &map)
|
|||||||
map(0x4000, 0xcfff).ram();
|
map(0x4000, 0xcfff).ram();
|
||||||
map(0xe800, 0xefff).r(FUNC(homelab3_state::exxx_r));
|
map(0xe800, 0xefff).r(FUNC(homelab3_state::exxx_r));
|
||||||
map(0xf800, 0xffff).lr8(NAME([this] (offs_t offset) { if(m_ramhere) return m_ram[offset]; else return m_vram[offset]; }))
|
map(0xf800, 0xffff).lr8(NAME([this] (offs_t offset) { if(m_ramhere) return m_ram[offset]; else return m_vram[offset]; }))
|
||||||
.lw8(NAME([this] (offs_t offset, u8 data) { if(m_ramhere) m_ram[offset]=data; else m_vram[offset]=data; }));
|
.lw8(NAME([this] (offs_t offset, u8 data) { if(m_ramhere) m_ram[offset]=data; else m_vram[offset]=data; }));
|
||||||
}
|
}
|
||||||
|
|
||||||
void homelab3_state::homelab3_io(address_map &map)
|
void homelab3_state::homelab3_io(address_map &map)
|
||||||
|
@ -2452,7 +2452,7 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger)
|
|||||||
// process data on R4 or R6
|
// process data on R4 or R6
|
||||||
if (act_trig) {
|
if (act_trig) {
|
||||||
switch (m_gv_cmd) {
|
switch (m_gv_cmd) {
|
||||||
case 1: // read words command
|
case 1: // read words command
|
||||||
break;
|
break;
|
||||||
case 0x8: // load X I/O address
|
case 0x8: // load X I/O address
|
||||||
m_gv_word_x_position = ~m_gv_data_w & 0x3f; // 0..34
|
m_gv_word_x_position = ~m_gv_data_w & 0x3f; // 0..34
|
||||||
@ -2494,7 +2494,7 @@ void hp9845c_state::advance_gv_fsm(bool ds , bool trigger)
|
|||||||
default:
|
default:
|
||||||
logerror("unknown 98770A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w);
|
logerror("unknown 98770A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w);
|
||||||
}
|
}
|
||||||
if (m_gv_cmd == 1) { // Read words
|
if (m_gv_cmd == 1) { // Read words
|
||||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_0;
|
m_gv_fsm_state = GV_STAT_WAIT_MEM_0;
|
||||||
} else if (m_gv_cmd == 0xd) {
|
} else if (m_gv_cmd == 0xd) {
|
||||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word
|
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word
|
||||||
|
@ -2631,7 +2631,7 @@ ROM_START( gpgolfa ) /* P/N 1047 REV. 1 main board + P/N 1038 REV2 sound board *
|
|||||||
|
|
||||||
ROM_REGION( 0x10000, "soundcpu", 0 )
|
ROM_REGION( 0x10000, "soundcpu", 0 )
|
||||||
ROM_LOAD( "golf_sound_12-19-91_v.96.u27", 0x00000, 0x10000, CRC(f46b4300) SHA1(7be1878b72c55fb83b2cae3b79b1f65fe8825b4a) ) /* 27C512 with the first 0x8000 as 0xFF fill - handwritten label GOLF SOUND 12/19/91 V.96 */
|
ROM_LOAD( "golf_sound_12-19-91_v.96.u27", 0x00000, 0x10000, CRC(f46b4300) SHA1(7be1878b72c55fb83b2cae3b79b1f65fe8825b4a) ) /* 27C512 with the first 0x8000 as 0xFF fill - handwritten label GOLF SOUND 12/19/91 V.96 */
|
||||||
// ROM_LOAD( "golf_sound.u27", 0x08000, 0x8000, CRC(3183d7f3) SHA1(482411947aa3074cec7d4491f6ee64785894d27c) ) /* Different than sndv1.u27 */
|
// ROM_LOAD( "golf_sound.u27", 0x08000, 0x8000, CRC(3183d7f3) SHA1(482411947aa3074cec7d4491f6ee64785894d27c) ) /* Different than sndv1.u27 */
|
||||||
|
|
||||||
ROM_REGION( 0xc0000, "grom", 0 )
|
ROM_REGION( 0xc0000, "grom", 0 )
|
||||||
ROM_LOAD( "grom00.grom0", 0x00000, 0x40000, CRC(c3a7b54b) SHA1(414d693bc5337d578d2630817dd647cf7e5cbcf7) )
|
ROM_LOAD( "grom00.grom0", 0x00000, 0x40000, CRC(c3a7b54b) SHA1(414d693bc5337d578d2630817dd647cf7e5cbcf7) )
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
TRS-80 Radio Shack MicroColor Computer
|
TRS-80 Radio Shack MicroColor Computer
|
||||||
|
|
||||||
May 2020: Added emulation for Darren Atkinson's MCX 128.
|
May 2020: Added emulation for Darren Atkinson's MCX 128.
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -3040,7 +3040,7 @@ ROM_START( twinbeeb )
|
|||||||
ROM_LOAD16_WORD( "boot.bin", 0x000, 0x1e0, CRC(ee6e93d7) SHA1(7302c08a726a760f59d6837be8fd10bbd1f79da0) )
|
ROM_LOAD16_WORD( "boot.bin", 0x000, 0x1e0, CRC(ee6e93d7) SHA1(7302c08a726a760f59d6837be8fd10bbd1f79da0) )
|
||||||
|
|
||||||
ROM_REGION( 0x806*0x90, "bubblememory", ROMREGION_ERASE00 )
|
ROM_REGION( 0x806*0x90, "bubblememory", ROMREGION_ERASE00 )
|
||||||
// ROM_LOAD16_WORD_SWAP( "bubble_twinbeeb", 0x000, 0x48360, CRC(21599cf5) SHA1(7eb068e10134d5c66f7f90f6d6b265353b7bd8be) ) // re-encoded data
|
// ROM_LOAD16_WORD_SWAP( "bubble_twinbeeb", 0x000, 0x48360, CRC(21599cf5) SHA1(7eb068e10134d5c66f7f90f6d6b265353b7bd8be) ) // re-encoded data
|
||||||
|
|
||||||
ROM_REGION( 0x806*0x80, "bubblememory_temp", 0 )
|
ROM_REGION( 0x806*0x80, "bubblememory_temp", 0 )
|
||||||
ROM_LOAD( "twinbee.bin", 0x00000, 0x40300, CRC(4d396a0a) SHA1(ee922a1bd7062c0fcf358f5079cca6424aadc975) )
|
ROM_LOAD( "twinbee.bin", 0x00000, 0x40300, CRC(4d396a0a) SHA1(ee922a1bd7062c0fcf358f5079cca6424aadc975) )
|
||||||
|
@ -2038,7 +2038,7 @@ CONS( 2017, rtvgc300fz,0, 0, nes_vt_cy_bigger, nes_vt, nes_vt_cy_lexibook_stat
|
|||||||
|
|
||||||
(units for use with TV)
|
(units for use with TV)
|
||||||
Lexibook Retro TV Game Console (300 Games) - Cars
|
Lexibook Retro TV Game Console (300 Games) - Cars
|
||||||
Lexibook Retro TV Game Console (300 Games) - PJ Masks
|
Lexibook Retro TV Game Console (300 Games) - PJ Masks
|
||||||
|
|
||||||
(more?)
|
(more?)
|
||||||
*/
|
*/
|
||||||
|
@ -68,11 +68,11 @@
|
|||||||
* Everything needs to be verified on real PCB or schematics
|
* Everything needs to be verified on real PCB or schematics
|
||||||
|
|
||||||
Known issues/to-do's Panther:
|
Known issues/to-do's Panther:
|
||||||
* Analog sounds (same as Red Alert?)
|
* Analog sounds (same as Red Alert?)
|
||||||
* AY sounds needs an actual ref, they are dubious at best
|
* AY sounds needs an actual ref, they are dubious at best
|
||||||
* No title screen?
|
* No title screen?
|
||||||
* Fails ROM check in service mode with "ROM ERR 0", bootleg/prototype set?
|
* Fails ROM check in service mode with "ROM ERR 0", bootleg/prototype set?
|
||||||
* Likewise sports corrupted words in input test
|
* Likewise sports corrupted words in input test
|
||||||
|
|
||||||
********************************************************************
|
********************************************************************
|
||||||
IREM 'WW III' 1981
|
IREM 'WW III' 1981
|
||||||
@ -96,18 +96,18 @@
|
|||||||
|
|
||||||
********************************************************************
|
********************************************************************
|
||||||
Panther notes:
|
Panther notes:
|
||||||
- Hold start 1 on boot, press coin chutes or service button to cycle:
|
- Hold start 1 on boot, press coin chutes or service button to cycle:
|
||||||
-> RAM/ROM check
|
-> RAM/ROM check
|
||||||
-> Continous Video drawing check (only if above is success)
|
-> Continous Video drawing check (only if above is success)
|
||||||
-> (NMI again goes to PROM check and beyond)
|
-> (NMI again goes to PROM check and beyond)
|
||||||
- Hold start 2 on boot:
|
- Hold start 2 on boot:
|
||||||
-> PROM check?
|
-> PROM check?
|
||||||
-> Input check
|
-> Input check
|
||||||
-> Freeze
|
-> Freeze
|
||||||
- Notes on "ROM ERR 0":
|
- Notes on "ROM ERR 0":
|
||||||
PC=b482 ROM check main routine
|
PC=b482 ROM check main routine
|
||||||
PC=b5cc SUM16 individual ROM chunk (ROM 0 -> 8000-87ff, ROM 1 -> 8800-8fff ...)
|
PC=b5cc SUM16 individual ROM chunk (ROM 0 -> 8000-87ff, ROM 1 -> 8800-8fff ...)
|
||||||
PC=b5b4 Taking the branch -> failed check
|
PC=b5b4 Taking the branch -> failed check
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -440,8 +440,8 @@ void seattle_state::machine_start()
|
|||||||
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
|
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
|
||||||
|
|
||||||
// configure fast RAM regions
|
// configure fast RAM regions
|
||||||
// m_maincpu->add_fastram(0x00000000, 0x007fffff, FALSE, m_rambase);
|
// m_maincpu->add_fastram(0x00000000, 0x007fffff, FALSE, m_rambase);
|
||||||
// m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, TRUE, m_rombase);
|
// m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, TRUE, m_rombase);
|
||||||
|
|
||||||
save_item(NAME(m_widget.ethernet_addr));
|
save_item(NAME(m_widget.ethernet_addr));
|
||||||
save_item(NAME(m_widget.irq_num));
|
save_item(NAME(m_widget.irq_num));
|
||||||
@ -2668,7 +2668,7 @@ void seattle_state::init_hyprdriv()
|
|||||||
// speedups
|
// speedups
|
||||||
m_maincpu->mips3drc_add_hotspot(0x801643BC, 0x3C03801B, 250); // confirmed
|
m_maincpu->mips3drc_add_hotspot(0x801643BC, 0x3C03801B, 250); // confirmed
|
||||||
m_maincpu->mips3drc_add_hotspot(0x80011FB8, 0x8E020018, 250); // confirmed
|
m_maincpu->mips3drc_add_hotspot(0x80011FB8, 0x8E020018, 250); // confirmed
|
||||||
// m_maincpu->mips3drc_add_hotspot(0x80136A80, 0x3C02801D, 250); // potential
|
// m_maincpu->mips3drc_add_hotspot(0x80136A80, 0x3C02801D, 250); // potential
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2315,11 +2315,11 @@ void seta2_state::seta2(machine_config &config)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
P0-113A PCB has different sound/cpu input clock (32.53047MHz / 2, common input clock is 50MHz / 3)
|
P0-113A PCB has different sound/cpu input clock (32.53047MHz / 2, common input clock is 50MHz / 3)
|
||||||
and/or some PCB variant has uses this input clock?
|
and/or some PCB variant has uses this input clock?
|
||||||
reference:
|
reference:
|
||||||
https://youtu.be/6f-znVzcrmg, https://youtu.be/zJi_d463UQE (gundamex)
|
https://youtu.be/6f-znVzcrmg, https://youtu.be/zJi_d463UQE (gundamex)
|
||||||
https://youtu.be/Ung9XeLisV0 (grdiansa)
|
https://youtu.be/Ung9XeLisV0 (grdiansa)
|
||||||
*/
|
*/
|
||||||
void seta2_state::seta2_32m(machine_config &config)
|
void seta2_state::seta2_32m(machine_config &config)
|
||||||
{
|
{
|
||||||
|
@ -133,10 +133,10 @@
|
|||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
#include "tilemap.h"
|
#include "tilemap.h"
|
||||||
|
|
||||||
#define FIRST_CLOCK XTAL(5'000'000)
|
#define FIRST_CLOCK XTAL(5'000'000)
|
||||||
#define SECOND_CLOCK XTAL(20'000'000)
|
#define SECOND_CLOCK XTAL(20'000'000)
|
||||||
#define CPU_CLOCK (FIRST_CLOCK) // verified 5 MHz.
|
#define CPU_CLOCK (FIRST_CLOCK) // verified 5 MHz.
|
||||||
#define SND_CLOCK (SECOND_CLOCK / 8) // verified 2.5 MHz.
|
#define SND_CLOCK (SECOND_CLOCK / 8) // verified 2.5 MHz.
|
||||||
|
|
||||||
|
|
||||||
class smotor_state : public driver_device
|
class smotor_state : public driver_device
|
||||||
@ -304,7 +304,7 @@ void smotor_state::smotor_palette(palette_device &palette) const
|
|||||||
void smotor_state::smotor_cpu_map(address_map &map)
|
void smotor_state::smotor_cpu_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0000, 0xbfff).rom();
|
map(0x0000, 0xbfff).rom();
|
||||||
map(0xf000, 0xf7ff).ram().w(FUNC(smotor_state::videoram_w)).share("videoram");
|
map(0xf000, 0xf7ff).ram().w(FUNC(smotor_state::videoram_w)).share("videoram");
|
||||||
map(0xf800, 0xffff).ram();
|
map(0xf800, 0xffff).ram();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ void smotor_state::cpu_io_videoreg_w(offs_t offset, uint8_t data)
|
|||||||
case 0x00:
|
case 0x00:
|
||||||
m_videoreg[offset] = data;
|
m_videoreg[offset] = data;
|
||||||
m_ym2413->set_output_gain(ALL_OUTPUTS, BIT(data, 4) ? 1.0f : 0.0f);
|
m_ym2413->set_output_gain(ALL_OUTPUTS, BIT(data, 4) ? 1.0f : 0.0f);
|
||||||
if ((BIT(data, 0)) & (BIT(data, 2))) // coin lock + coin a, used for init.
|
if ((BIT(data, 0)) & (BIT(data, 2))) // coin lock + coin a, used for init.
|
||||||
break;
|
break;
|
||||||
machine().bookkeeping().coin_lockout_global_w(BIT(data, 0)); // coin lock.
|
machine().bookkeeping().coin_lockout_global_w(BIT(data, 0)); // coin lock.
|
||||||
machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // coin b counter.
|
machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // coin b counter.
|
||||||
@ -376,7 +376,7 @@ static INPUT_PORTS_START( smotor )
|
|||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||||
|
|
||||||
PORT_START("DSW1")
|
PORT_START("DSW1")
|
||||||
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
|
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
|
||||||
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
|
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
|
||||||
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
|
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
|
||||||
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
|
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
|
||||||
@ -393,7 +393,7 @@ static INPUT_PORTS_START( smotor )
|
|||||||
PORT_DIPSETTING( 0x02, DEF_STR( 4C_5C ) )
|
PORT_DIPSETTING( 0x02, DEF_STR( 4C_5C ) )
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( 5C_1C ) )
|
PORT_DIPSETTING( 0x01, DEF_STR( 5C_1C ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( 5C_2C ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( 5C_2C ) )
|
||||||
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
|
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
|
||||||
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )
|
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )
|
||||||
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )
|
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )
|
||||||
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
|
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
|
||||||
@ -412,26 +412,26 @@ static INPUT_PORTS_START( smotor )
|
|||||||
PORT_DIPSETTING( 0x00, DEF_STR( 5C_2C ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( 5C_2C ) )
|
||||||
|
|
||||||
PORT_START("DSW2")
|
PORT_START("DSW2")
|
||||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
|
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x06, 0x04, DEF_STR( Difficult ) ) PORT_DIPLOCATION("SW2:2,3")
|
PORT_DIPNAME( 0x06, 0x04, DEF_STR( Difficult ) ) PORT_DIPLOCATION("SW2:2,3")
|
||||||
PORT_DIPSETTING( 0x06, "Easy (with gas cans, only trucks)" )
|
PORT_DIPSETTING( 0x06, "Easy (with gas cans, only trucks)" )
|
||||||
PORT_DIPSETTING( 0x04, "Normal (with gas cans, trucks and cars)" )
|
PORT_DIPSETTING( 0x04, "Normal (with gas cans, trucks and cars)" )
|
||||||
PORT_DIPSETTING( 0x02, "Medium (no gas cans, both trucks and cars)" )
|
PORT_DIPSETTING( 0x02, "Medium (no gas cans, both trucks and cars)" )
|
||||||
PORT_DIPSETTING( 0x00, "Hard (no gas cans, both trucks and cars)" )
|
PORT_DIPSETTING( 0x00, "Hard (no gas cans, both trucks and cars)" )
|
||||||
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW2:4,5")
|
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW2:4,5")
|
||||||
PORT_DIPSETTING( 0x18, "1:00" )
|
PORT_DIPSETTING( 0x18, "1:00" )
|
||||||
PORT_DIPSETTING( 0x10, "1:20" )
|
PORT_DIPSETTING( 0x10, "1:20" )
|
||||||
PORT_DIPSETTING( 0x08, "1:40" )
|
PORT_DIPSETTING( 0x08, "1:40" )
|
||||||
PORT_DIPSETTING( 0x00, "2:00" )
|
PORT_DIPSETTING( 0x00, "2:00" )
|
||||||
PORT_DIPNAME( 0x20, 0x20, "Cycle / Car" ) PORT_DIPLOCATION("SW2:6")
|
PORT_DIPNAME( 0x20, 0x20, "Cycle / Car" ) PORT_DIPLOCATION("SW2:6")
|
||||||
PORT_DIPSETTING( 0x20, "Cycle" )
|
PORT_DIPSETTING( 0x20, "Cycle" )
|
||||||
PORT_DIPSETTING( 0x00, "Car" )
|
PORT_DIPSETTING( 0x00, "Car" )
|
||||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7")
|
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7")
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:8")
|
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:8")
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
@ -669,7 +669,7 @@ CUSTOM_INPUT_MEMBER(spg2xx_game_fordrace_state::wheel_r)
|
|||||||
|
|
||||||
CUSTOM_INPUT_MEMBER(spg2xx_game_fordrace_state::wheel2_r)
|
CUSTOM_INPUT_MEMBER(spg2xx_game_fordrace_state::wheel2_r)
|
||||||
{
|
{
|
||||||
// return 0x0800;
|
// return 0x0800;
|
||||||
uint16_t dat = ioport("WHEEL_REAL")->read();
|
uint16_t dat = ioport("WHEEL_REAL")->read();
|
||||||
|
|
||||||
return ((dat >> 1) ^ 0xfff) + (dat & 1);
|
return ((dat >> 1) ^ 0xfff) + (dat & 1);
|
||||||
@ -1076,9 +1076,9 @@ void spg2xx_game_senspeed_state::senspeed(machine_config &config)
|
|||||||
m_maincpu->portb_out().set(FUNC(spg2xx_game_senspeed_state::portb_w));
|
m_maincpu->portb_out().set(FUNC(spg2xx_game_senspeed_state::portb_w));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ATMLH806
|
ATMLH806
|
||||||
02B 1
|
02B 1
|
||||||
A7J4565E
|
A7J4565E
|
||||||
*/
|
*/
|
||||||
I2C_24C01(config, "i2cmem", 0); // saves 0x80 bytes, but loading fails?
|
I2C_24C01(config, "i2cmem", 0); // saves 0x80 bytes, but loading fails?
|
||||||
}
|
}
|
||||||
|
@ -3465,7 +3465,7 @@ ROM_START( cleopatro )
|
|||||||
ROM_LOAD32_BYTE("ic20.bin", 0x000000, 0x20000, CRC(80dfc893) SHA1(192e121394825ba982998e831108310c26718ec3) )
|
ROM_LOAD32_BYTE("ic20.bin", 0x000000, 0x20000, CRC(80dfc893) SHA1(192e121394825ba982998e831108310c26718ec3) )
|
||||||
ROM_LOAD32_BYTE("ic19.bin", 0x000001, 0x20000, CRC(666e8ca6) SHA1(4f75e4510975c04b66b0eeb1a861c47a3442b190) )
|
ROM_LOAD32_BYTE("ic19.bin", 0x000001, 0x20000, CRC(666e8ca6) SHA1(4f75e4510975c04b66b0eeb1a861c47a3442b190) )
|
||||||
ROM_LOAD32_BYTE("ic18.bin", 0x000002, 0x20000, CRC(9f2d4f69) SHA1(481e7a525e749deb069adf92d335d1c89497f9ab) )
|
ROM_LOAD32_BYTE("ic18.bin", 0x000002, 0x20000, CRC(9f2d4f69) SHA1(481e7a525e749deb069adf92d335d1c89497f9ab) )
|
||||||
ROM_LOAD32_BYTE("ic17.bin", 0x000003, 0x20000, CRC(f892f60e) SHA1(60f1a6c6e780adfbd17892c783920ae88266f0e2) ) // 1 byte difference in 1st 0x20000 bytes of e28-07.bin (0x1FFFF==03 vs 0x00 for e28-07.bin)
|
ROM_LOAD32_BYTE("ic17.bin", 0x000003, 0x20000, CRC(f892f60e) SHA1(60f1a6c6e780adfbd17892c783920ae88266f0e2) ) // 1 byte difference in 1st 0x20000 bytes of e28-07.bin (0x1FFFF==03 vs 0x00 for e28-07.bin)
|
||||||
|
|
||||||
ROM_REGION( 0x100000, "sprites" , 0) /* Sprites */
|
ROM_REGION( 0x100000, "sprites" , 0) /* Sprites */
|
||||||
ROM_LOAD16_BYTE("e28-02.bin", 0x000000, 0x080000, CRC(b20d47cb) SHA1(6888e5564688840fed1c123ab38467066cd59c7f) )
|
ROM_LOAD16_BYTE("e28-02.bin", 0x000000, 0x080000, CRC(b20d47cb) SHA1(6888e5564688840fed1c123ab38467066cd59c7f) )
|
||||||
|
@ -196,7 +196,7 @@ uint8_t tiki100_state::keyboard_r()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_keylatch++;
|
m_keylatch++;
|
||||||
if (m_keylatch == 16) m_keylatch = 0; // Column selected by a 4-bit counter
|
if (m_keylatch == 16) m_keylatch = 0; // Column selected by a 4-bit counter
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ void ultim809_state::mem_map(address_map &map)
|
|||||||
map(0x0000, 0x7fff).lrw8(NAME([this] (offs_t offset) { return m_ram[offset]; }), NAME([this] (offs_t offset, u8 data) { m_ram[offset] = data; } ));
|
map(0x0000, 0x7fff).lrw8(NAME([this] (offs_t offset) { return m_ram[offset]; }), NAME([this] (offs_t offset, u8 data) { m_ram[offset] = data; } ));
|
||||||
// main ram any bank
|
// main ram any bank
|
||||||
map(0x8000, 0xbfff).lrw8(NAME([this] (offs_t offset) { return m_ram[offset | (m_membank << 14)]; }),
|
map(0x8000, 0xbfff).lrw8(NAME([this] (offs_t offset) { return m_ram[offset | (m_membank << 14)]; }),
|
||||||
NAME([this] (offs_t offset, u8 data) { m_ram[offset | (m_membank << 14)] = data; } )); // u8
|
NAME([this] (offs_t offset, u8 data) { m_ram[offset | (m_membank << 14)] = data; } )); // u8
|
||||||
// devices
|
// devices
|
||||||
map(0xc000, 0xc00f).m(m_via, FUNC(via6522_device::map)); // u11
|
map(0xc000, 0xc00f).m(m_via, FUNC(via6522_device::map)); // u11
|
||||||
map(0xc400, 0xc407).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); // u16
|
map(0xc400, 0xc407).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); // u16
|
||||||
|
@ -1716,7 +1716,7 @@ void vegas_state::vegas_cs2_map(address_map &map)
|
|||||||
void vegas_state::vegas_cs3_map(address_map &map)
|
void vegas_state::vegas_cs3_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00000000, 0x00000003).rw(FUNC(vegas_state::analog_port_r), FUNC(vegas_state::analog_port_w));
|
map(0x00000000, 0x00000003).rw(FUNC(vegas_state::analog_port_r), FUNC(vegas_state::analog_port_w));
|
||||||
// map(0x00001000, 0x00001003).rw(FUNC(vegas_state::lcd_r), FUNC(vegas_state::lcd_w));
|
// map(0x00001000, 0x00001003).rw(FUNC(vegas_state::lcd_r), FUNC(vegas_state::lcd_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
void vegas_state::vegas_cs4_map(address_map &map)
|
void vegas_state::vegas_cs4_map(address_map &map)
|
||||||
@ -1741,7 +1741,7 @@ void vegas_state::vegas_cs6_map(address_map &map)
|
|||||||
|
|
||||||
void vegas_state::vegas_cs7_map(address_map &map)
|
void vegas_state::vegas_cs7_map(address_map &map)
|
||||||
{
|
{
|
||||||
// map(0x00000000, 0x00000003).rw(FUNC(vegas_state::nss_r), FUNC(vegas_state::nss_w));
|
// map(0x00000000, 0x00000003).rw(FUNC(vegas_state::nss_r), FUNC(vegas_state::nss_w));
|
||||||
map(0x00001000, 0x0000100f).rw(FUNC(vegas_state::ethernet_r), FUNC(vegas_state::ethernet_w));
|
map(0x00001000, 0x0000100f).rw(FUNC(vegas_state::ethernet_r), FUNC(vegas_state::ethernet_w));
|
||||||
map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 7)
|
map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 7)
|
||||||
map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 7)
|
map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 7)
|
||||||
|
@ -3,18 +3,18 @@
|
|||||||
/*
|
/*
|
||||||
Williams WPC (Alpha Numeric)
|
Williams WPC (Alpha Numeric)
|
||||||
|
|
||||||
Note: It is possible to get funhouse (fh_l3 at least) in-game by coining it up, then holding the following keys,
|
Note: It is possible to get funhouse (fh_l3 at least) in-game by coining it up, then holding the following keys,
|
||||||
and pressing the start button, or else you get "PINBALL MISSING":
|
and pressing the start button, or else you get "PINBALL MISSING":
|
||||||
W (right ball shooter, c6 r2)
|
W (right ball shooter, c6 r2)
|
||||||
E (right trough, c6 r3)
|
E (right trough, c6 r3)
|
||||||
[ (dummy jaw opto, c5 r1)
|
[ (dummy jaw opto, c5 r1)
|
||||||
] (right outlane, c5 r2)
|
] (right outlane, c5 r2)
|
||||||
\ (right slingshot kicker, c5 r3)
|
\ (right slingshot kicker, c5 r3)
|
||||||
It's possible not all of these are strictly necessary to make it work.
|
It's possible not all of these are strictly necessary to make it work.
|
||||||
|
|
||||||
TODO: replace the 8x8 pinball input matrix keymap by some sort of common interface for the williams system 6, 9, 10, 11 and wpc_an;
|
TODO: replace the 8x8 pinball input matrix keymap by some sort of common interface for the williams system 6, 9, 10, 11 and wpc_an;
|
||||||
while the actual purpose of the switches differ per machine (and some machines like wpc_an have one switch permanently closed as a test switch),
|
while the actual purpose of the switches differ per machine (and some machines like wpc_an have one switch permanently closed as a test switch),
|
||||||
the entire matrix should be mapped to keyboard keys, there are more than enough keys on a 104 key keyboard to do it, even avoiding MAME's reserved keys.
|
the entire matrix should be mapped to keyboard keys, there are more than enough keys on a 104 key keyboard to do it, even avoiding MAME's reserved keys.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,10 +27,10 @@
|
|||||||
#define CSR_ERR (1u << CSR_V_ERR)
|
#define CSR_ERR (1u << CSR_V_ERR)
|
||||||
|
|
||||||
|
|
||||||
#define clear_virq(_callback, _csr, _ie, _intrq) \
|
#define clear_virq(_callback, _csr, _ie, _intrq) \
|
||||||
if ((_csr) & (_ie)) { (_intrq) = CLEAR_LINE; }
|
if ((_csr) & (_ie)) { (_intrq) = CLEAR_LINE; }
|
||||||
|
|
||||||
#define raise_virq(_callback, _csr, _ie, _intrq) \
|
#define raise_virq(_callback, _csr, _ie, _intrq) \
|
||||||
if ((_csr) & (_ie)) { (_intrq) = ASSERT_LINE; _callback (ASSERT_LINE); }
|
if ((_csr) & (_ie)) { (_intrq) = ASSERT_LINE; _callback (ASSERT_LINE); }
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,8 +36,8 @@ TODO:
|
|||||||
#define LOG_READS (1 << 6)
|
#define LOG_READS (1 << 6)
|
||||||
#define LOG_WRITES (1 << 7)
|
#define LOG_WRITES (1 << 7)
|
||||||
#define LOG_UNKNOWNS (1 << 8)
|
#define LOG_UNKNOWNS (1 << 8)
|
||||||
#define LOG_RAM (1 << 9)
|
#define LOG_RAM (1 << 9)
|
||||||
#define LOG_ALL (LOG_DECODES | LOG_SAMPLES | LOG_COMMANDS | LOG_SECTORS | LOG_IRQS | LOG_READS | LOG_WRITES | LOG_UNKNOWNS | LOG_RAM)
|
#define LOG_ALL (LOG_DECODES | LOG_SAMPLES | LOG_COMMANDS | LOG_SECTORS | LOG_IRQS | LOG_READS | LOG_WRITES | LOG_UNKNOWNS | LOG_RAM)
|
||||||
|
|
||||||
#define VERBOSE (LOG_ALL)
|
#define VERBOSE (LOG_ALL)
|
||||||
#include "logmacro.h"
|
#include "logmacro.h"
|
||||||
@ -751,9 +751,9 @@ void cdicdic_device::process_delayed_command()
|
|||||||
m_intreq_callback(ASSERT_LINE);
|
m_intreq_callback(ASSERT_LINE);
|
||||||
//else
|
//else
|
||||||
//{
|
//{
|
||||||
// LOGMASKED(LOG_IRQS, "%s: Setting CDIC interrupt line for ignored audio sector (m_channel %04x, m_audio_channel %04x, sector channel %04x\n",
|
// LOGMASKED(LOG_IRQS, "%s: Setting CDIC interrupt line for ignored audio sector (m_channel %04x, m_audio_channel %04x, sector channel %04x\n",
|
||||||
// machine().describe_context(), m_channel, m_audio_channel, (1 << buffer[CDIC_SECTOR_CHAN2]));
|
// machine().describe_context(), m_channel, m_audio_channel, (1 << buffer[CDIC_SECTOR_CHAN2]));
|
||||||
// m_intreq_callback(ASSERT_LINE);
|
// m_intreq_callback(ASSERT_LINE);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
else if ((buffer[CDIC_SECTOR_SUBMODE2] & (CDIC_SUBMODE_DATA | CDIC_SUBMODE_AUDIO | CDIC_SUBMODE_VIDEO)) == 0x00)
|
else if ((buffer[CDIC_SECTOR_SUBMODE2] & (CDIC_SUBMODE_DATA | CDIC_SUBMODE_AUDIO | CDIC_SUBMODE_VIDEO)) == 0x00)
|
||||||
|
@ -23,7 +23,7 @@ TODO:
|
|||||||
#define LOG_READS (1 << 2)
|
#define LOG_READS (1 << 2)
|
||||||
#define LOG_WRITES (1 << 3)
|
#define LOG_WRITES (1 << 3)
|
||||||
#define LOG_UNKNOWNS (1 << 4)
|
#define LOG_UNKNOWNS (1 << 4)
|
||||||
#define LOG_ALL (LOG_IRQS | LOG_COMMANDS | LOG_READS | LOG_WRITES | LOG_UNKNOWNS)
|
#define LOG_ALL (LOG_IRQS | LOG_COMMANDS | LOG_READS | LOG_WRITES | LOG_UNKNOWNS)
|
||||||
|
|
||||||
#define VERBOSE (0)
|
#define VERBOSE (0)
|
||||||
#include "logmacro.h"
|
#include "logmacro.h"
|
||||||
|
@ -25,113 +25,113 @@ DEFINE_DEVICE_TYPE(FP6000_KBD, fp6000_kbd_device, "fp6000_kbd", "FP-6000 Keyboar
|
|||||||
static INPUT_PORTS_START( keyboard )
|
static INPUT_PORTS_START( keyboard )
|
||||||
PORT_START("row_0")
|
PORT_START("row_0")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 00 */ PORT_CODE(KEYCODE_PRTSCR) PORT_CHAR(UCHAR_MAMEKEY(PRTSCR)) PORT_NAME("Copy")
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 00 */ PORT_CODE(KEYCODE_PRTSCR) PORT_CHAR(UCHAR_MAMEKEY(PRTSCR)) PORT_NAME("Copy")
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 01 */ PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 01 */ PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 02 */ PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 02 */ PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 03 */ PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 03 */ PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 04 */ PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 04 */ PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 05 */ PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 05 */ PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 06 */ PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 06 */ PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 07 */ PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 07 */ PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 08 */ PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 08 */ PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 09 */ PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 09 */ PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0a */ PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0a */ PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0b */ PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0b */ PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0c */ PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("Ins")
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0c */ PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_NAME("Ins")
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0d */ PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("Del")
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0d */ PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("Del")
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0e */ PORT_CODE(KEYCODE_HOME) PORT_CHAR(0) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("Cls / Home")
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0e */ PORT_CODE(KEYCODE_HOME) PORT_CHAR(0) PORT_CHAR(UCHAR_MAMEKEY(HOME)) PORT_NAME("Cls / Home")
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0f */ PORT_CODE(KEYCODE_SCRLOCK) PORT_CHAR(UCHAR_MAMEKEY(SCRLOCK)) PORT_NAME("SLock / Break")
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 0f */ PORT_CODE(KEYCODE_SCRLOCK) PORT_CHAR(UCHAR_MAMEKEY(SCRLOCK)) PORT_NAME("SLock / Break")
|
||||||
|
|
||||||
PORT_START("row_1")
|
PORT_START("row_1")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 10 */ PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 10 */ PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 11 */ PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 11 */ PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 12 */ PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 12 */ PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 13 */ PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 13 */ PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 14 */ PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 14 */ PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 15 */ PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 15 */ PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 16 */ PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 16 */ PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 17 */ PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 17 */ PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 18 */ PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 18 */ PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 19 */ PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~')
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 19 */ PORT_CODE(KEYCODE_TILDE) PORT_CHAR('^') PORT_CHAR('~')
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1a */ PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1a */ PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1b */ PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1b */ PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1c */ PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("\xe2\x86\x91 PgUp")
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1c */ PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_CHAR(UCHAR_MAMEKEY(PGUP)) PORT_NAME("\xe2\x86\x91 PgUp")
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1d */ PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("\xe2\x86\x92 PgRt")
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1d */ PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_NAME("\xe2\x86\x92 PgRt")
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1e */ PORT_CODE(KEYCODE_END) PORT_CHAR(0) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("Clr / End")
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1e */ PORT_CODE(KEYCODE_END) PORT_CHAR(0) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("Clr / End")
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1f */ PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 1f */ PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
|
||||||
|
|
||||||
PORT_START("row_2")
|
PORT_START("row_2")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 20 */ PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 20 */ PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 21 */ PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 21 */ PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 22 */ PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 22 */ PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 23 */ PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 23 */ PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 24 */ PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 24 */ PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 25 */ PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 25 */ PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 26 */ PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 26 */ PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 27 */ PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 27 */ PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 28 */ PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('@') PORT_CHAR('`')
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 28 */ PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('@') PORT_CHAR('`')
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 29 */ PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_NAME("\xC2\xA5 |") // ¥
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 29 */ PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_NAME("\xC2\xA5 |") // ¥
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2a */ PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2a */ PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2b */ PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME("\xe2\x86\x90 PgLt")
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2b */ PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_NAME("\xe2\x86\x90 PgLt")
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2c */ PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("\xe2\x86\x93 PgDn")
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2c */ PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_NAME("\xe2\x86\x93 PgDn")
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2d */ PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2d */ PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2e */ PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2e */ PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2f */ PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 2f */ PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
|
||||||
|
|
||||||
PORT_START("row_3")
|
PORT_START("row_3")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 30 */ PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 30 */ PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 31 */ PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 31 */ PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 32 */ PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 32 */ PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 33 */ PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 33 */ PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 34 */ PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 34 */ PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 35 */ PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 35 */ PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 36 */ PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 36 */ PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 37 */ PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 37 */ PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 38 */ PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('*')
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 38 */ PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('*')
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 39 */ PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 39 */ PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) /* 3a */ // ?
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) /* 3a */ // ?
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3b */ PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3b */ PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3c */ PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3c */ PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3d */ PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3d */ PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_UNUSED) /* 3e */ // ?
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_UNUSED) /* 3e */ // ?
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3f */ PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_NAME("Ctrl")
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 3f */ PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_NAME("Ctrl")
|
||||||
|
|
||||||
PORT_START("row_4")
|
PORT_START("row_4")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 40 */ PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 40 */ PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 41 */ PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 41 */ PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 42 */ PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 42 */ PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 43 */ PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 43 */ PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 44 */ PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 44 */ PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 45 */ PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 45 */ PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 46 */ PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 46 */ PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 47 */ PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 47 */ PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 48 */ PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR('+')
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 48 */ PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR('+')
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 49 */ PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 49 */ PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) /* 4a */ // ?
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_UNUSED) /* 4a */ // ?
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4b */ PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4b */ PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4c */ PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4c */ PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4d */ PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4d */ PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4e */ PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4e */ PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4f */ PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("Alt")
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 4f */ PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_NAME("Alt")
|
||||||
|
|
||||||
PORT_START("row_5")
|
PORT_START("row_5")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 50 */ PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 50 */ PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 51 */ PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 51 */ PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 52 */ PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 52 */ PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 53 */ PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 53 */ PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 54 */ PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 54 */ PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 55 */ PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 55 */ PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 56 */ PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 56 */ PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 57 */ PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 57 */ PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 58 */ PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 58 */ PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 59 */ PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(0) PORT_CHAR('_') PORT_NAME(" _")
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 59 */ PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(0) PORT_CHAR('_') PORT_NAME(" _")
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5a */ PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT)) PORT_NAME("Kana")
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5a */ PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT)) PORT_NAME("Kana")
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5b */ PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5b */ PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5c */ PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5c */ PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5d */ PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5d */ PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5e */ PORT_CODE(KEYCODE_COMMA_PAD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD))
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5e */ PORT_CODE(KEYCODE_COMMA_PAD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD))
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5f */ PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_NAME("Caps")
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) /* 5f */ PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_NAME("Caps")
|
||||||
|
|
||||||
// codes 0x60 to 0x7f seem to be copies of other codes
|
// codes 0x60 to 0x7f seem to be copies of other codes
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
ioport_constructor fp6000_kbd_device::device_input_ports() const
|
ioport_constructor fp6000_kbd_device::device_input_ports() const
|
||||||
@ -150,8 +150,8 @@ ioport_constructor fp6000_kbd_device::device_input_ports() const
|
|||||||
|
|
||||||
fp6000_kbd_device::fp6000_kbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
fp6000_kbd_device::fp6000_kbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: device_t(mconfig, FP6000_KBD, tag, owner, clock),
|
: device_t(mconfig, FP6000_KBD, tag, owner, clock),
|
||||||
device_matrix_keyboard_interface(mconfig, *this, "row_0", "row_1", "row_2", "row_3", "row_4", "row_5"),
|
device_matrix_keyboard_interface(mconfig, *this, "row_0", "row_1", "row_2", "row_3", "row_4", "row_5"),
|
||||||
m_int_handler(*this)
|
m_int_handler(*this)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,8 +180,8 @@ void fp6000_kbd_device::device_reset()
|
|||||||
start_processing(attotime::from_hz(9600));
|
start_processing(attotime::from_hz(9600));
|
||||||
typematic_stop();
|
typematic_stop();
|
||||||
|
|
||||||
m_status = 0x00;
|
m_status = 0x00;
|
||||||
m_data = 0x7f;
|
m_data = 0x7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -190,28 +190,28 @@ void fp6000_kbd_device::device_reset()
|
|||||||
|
|
||||||
uint8_t fp6000_kbd_device::read(offs_t offset)
|
uint8_t fp6000_kbd_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data = 0xff;
|
uint8_t data = 0xff;
|
||||||
|
|
||||||
switch (offset)
|
switch (offset)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (0)
|
if (0)
|
||||||
logerror("Read data from keyboard: %02x\n", m_data);
|
logerror("Read data from keyboard: %02x\n", m_data);
|
||||||
|
|
||||||
m_int_handler(0);
|
m_int_handler(0);
|
||||||
m_status &= ~STATUS_DATA_AVAILABLE;
|
m_status &= ~STATUS_DATA_AVAILABLE;
|
||||||
data = m_data;
|
data = m_data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (0)
|
if (0)
|
||||||
logerror("Read status from keyboard: %02x\n", m_status);
|
logerror("Read status from keyboard: %02x\n", m_status);
|
||||||
|
|
||||||
data = m_status;
|
data = m_status;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -220,34 +220,34 @@ uint8_t fp6000_kbd_device::read(offs_t offset)
|
|||||||
|
|
||||||
void fp6000_kbd_device::write(offs_t offset, uint8_t data)
|
void fp6000_kbd_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
switch (offset)
|
switch (offset)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
logerror("Write data to keyboard: %02x\n", data);
|
logerror("Write data to keyboard: %02x\n", data);
|
||||||
|
|
||||||
switch (data)
|
switch (data)
|
||||||
{
|
{
|
||||||
case 0x0f:
|
case 0x0f:
|
||||||
m_status &= ~STATUS_READY_FOR_DATA;
|
m_status &= ~STATUS_READY_FOR_DATA;
|
||||||
m_status |= STATUS_DATA_AVAILABLE;
|
m_status |= STATUS_DATA_AVAILABLE;
|
||||||
m_data = 0x35; // or 0x40
|
m_data = 0x35; // or 0x40
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
logerror("Write command to keyboard: %02x\n", data);
|
logerror("Write command to keyboard: %02x\n", data);
|
||||||
|
|
||||||
switch (data)
|
switch (data)
|
||||||
{
|
{
|
||||||
case 0x7e:
|
case 0x7e:
|
||||||
m_status |= STATUS_READY_FOR_DATA;
|
m_status |= STATUS_READY_FOR_DATA;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -262,9 +262,9 @@ void fp6000_kbd_device::key_make(uint8_t row, uint8_t column)
|
|||||||
{
|
{
|
||||||
send_key(code);
|
send_key(code);
|
||||||
|
|
||||||
// no typematic for modifier keys
|
// no typematic for modifier keys
|
||||||
if (code != 0x3f && code != 0x4f && code != 0x50 && code != 0x5a && code != 0x5f)
|
if (code != 0x3f && code != 0x4f && code != 0x50 && code != 0x5a && code != 0x5f)
|
||||||
typematic_start(row, column, attotime::from_msec(750), attotime::from_msec(50));
|
typematic_start(row, column, attotime::from_msec(750), attotime::from_msec(50));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +280,7 @@ void fp6000_kbd_device::key_break(uint8_t row, uint8_t column)
|
|||||||
uint8_t code = translate(row, column);
|
uint8_t code = translate(row, column);
|
||||||
|
|
||||||
if (code != 0x7f)
|
if (code != 0x7f)
|
||||||
send_key(0x80 | code);
|
send_key(0x80 | code);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -299,7 +299,7 @@ void fp6000_kbd_device::key_repeat(u8 row, u8 column)
|
|||||||
|
|
||||||
uint8_t fp6000_kbd_device::translate(uint8_t row, uint8_t column)
|
uint8_t fp6000_kbd_device::translate(uint8_t row, uint8_t column)
|
||||||
{
|
{
|
||||||
return row * 16 + column;
|
return row * 16 + column;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -308,7 +308,7 @@ uint8_t fp6000_kbd_device::translate(uint8_t row, uint8_t column)
|
|||||||
|
|
||||||
void fp6000_kbd_device::send_key(uint8_t code)
|
void fp6000_kbd_device::send_key(uint8_t code)
|
||||||
{
|
{
|
||||||
m_status |= STATUS_DATA_AVAILABLE;
|
m_status |= STATUS_DATA_AVAILABLE;
|
||||||
m_data = code;
|
m_data = code;
|
||||||
m_int_handler(1);
|
m_int_handler(1);
|
||||||
}
|
}
|
||||||
|
@ -44,19 +44,19 @@ protected:
|
|||||||
virtual void key_repeat(uint8_t row, uint8_t column) override;
|
virtual void key_repeat(uint8_t row, uint8_t column) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
devcb_write_line m_int_handler;
|
devcb_write_line m_int_handler;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
STATUS_READY_FOR_DATA = 0x01,
|
STATUS_READY_FOR_DATA = 0x01,
|
||||||
STATUS_DATA_AVAILABLE = 0x02
|
STATUS_DATA_AVAILABLE = 0x02
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t translate(uint8_t row, uint8_t column);
|
uint8_t translate(uint8_t row, uint8_t column);
|
||||||
void send_key(uint8_t code);
|
void send_key(uint8_t code);
|
||||||
|
|
||||||
uint8_t m_status;
|
uint8_t m_status;
|
||||||
uint8_t m_data;
|
uint8_t m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
|
@ -401,13 +401,13 @@ void namcos2_state::sound_bankselect_w(uint8_t data)
|
|||||||
uint16_t namcos2_state::c140_rom_r(offs_t offset)
|
uint16_t namcos2_state::c140_rom_r(offs_t offset)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Verified from schematics:
|
Verified from schematics:
|
||||||
MD0-MD3 : Connected in 3N "voice0" D0-D3 or D4-D7, Nibble changeable with 74LS157
|
MD0-MD3 : Connected in 3N "voice0" D0-D3 or D4-D7, Nibble changeable with 74LS157
|
||||||
MD4-MD11 : Connected in 3M "voice1" or 3L "voice2" D0-D7
|
MD4-MD11 : Connected in 3M "voice1" or 3L "voice2" D0-D7
|
||||||
MA0-MA18 : Connected in Address bus of ROMs
|
MA0-MA18 : Connected in Address bus of ROMs
|
||||||
MA19 : Connected in 74LS157 Select Pin
|
MA19 : Connected in 74LS157 Select Pin
|
||||||
MA20 : Connected in 74LS157 Strobe(Enable) Pin
|
MA20 : Connected in 74LS157 Strobe(Enable) Pin
|
||||||
MA21 : ROM select in MD4-MD11 area
|
MA21 : ROM select in MD4-MD11 area
|
||||||
*/
|
*/
|
||||||
if (m_c140_region != nullptr)
|
if (m_c140_region != nullptr)
|
||||||
{
|
{
|
||||||
|
@ -143,12 +143,12 @@ void bbc_state::video_ula_w(offs_t offset, uint8_t data)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
/* Video ULA control register
|
/* Video ULA control register
|
||||||
b7 Master cursor size
|
b7 Master cursor size
|
||||||
b6-b5 Width of cursor in bytes
|
b6-b5 Width of cursor in bytes
|
||||||
b4 6845 clock rate select
|
b4 6845 clock rate select
|
||||||
b3-b2 Number of characters per line
|
b3-b2 Number of characters per line
|
||||||
b1 Teletext/Normal select
|
b1 Teletext/Normal select
|
||||||
b0 Flash colour select
|
b0 Flash colour select
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* flash colour select has changed */
|
/* flash colour select has changed */
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
// copyright-holders:Angelo Salese
|
// copyright-holders:Angelo Salese
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Atari Jaguar "Blitter" device
|
Atari Jaguar "Blitter" device
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- Stub device, port/rewrite from jagblit;
|
- Stub device, port/rewrite from jagblit;
|
||||||
- actual codename/chip part number;
|
- actual codename/chip part number;
|
||||||
- has different revs, encapsulate;
|
- has different revs, encapsulate;
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ const jag_blitter_device::op_func jag_blitter_device::upda_ops[8] =
|
|||||||
&jag_blitter_device::op_unemulated, // upda2
|
&jag_blitter_device::op_unemulated, // upda2
|
||||||
&jag_blitter_device::op_unemulated, // upda1f + upda2
|
&jag_blitter_device::op_unemulated, // upda1f + upda2
|
||||||
&jag_blitter_device::op_unemulated, // upda1 + upda2
|
&jag_blitter_device::op_unemulated, // upda1 + upda2
|
||||||
&jag_blitter_device::op_unemulated // upda1 + upda1f + upda2
|
&jag_blitter_device::op_unemulated // upda1 + upda1f + upda2
|
||||||
};
|
};
|
||||||
|
|
||||||
void jag_blitter_device::op_nop()
|
void jag_blitter_device::op_nop()
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// copyright-holders:Angelo Salese
|
// copyright-holders:Angelo Salese
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Atari Jaguar "Blitter" device
|
Atari Jaguar "Blitter" device
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -26,7 +26,7 @@
|
|||||||
// ======================> jag_blitter_device
|
// ======================> jag_blitter_device
|
||||||
|
|
||||||
class jag_blitter_device : public device_t,
|
class jag_blitter_device : public device_t,
|
||||||
public device_memory_interface
|
public device_memory_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
@ -46,7 +46,7 @@ protected:
|
|||||||
|
|
||||||
const address_space_config m_space_config;
|
const address_space_config m_space_config;
|
||||||
|
|
||||||
// address_space *m_host_space;
|
// address_space *m_host_space;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void regs_map(address_map &map);
|
void regs_map(address_map &map);
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
Atari Jaguar hardware
|
Atari Jaguar hardware
|
||||||
|
|
||||||
TODO (list of exceptions):
|
TODO (list of exceptions):
|
||||||
jaguar_state::generic_blitter()
|
jaguar_state::generic_blitter()
|
||||||
- atarikrt, bretth, brutalsp, nbajamte, spacewar, spacewarp, tempst2k
|
- atarikrt, bretth, brutalsp, nbajamte, spacewar, spacewarp, tempst2k
|
||||||
jaguar_state::blitter_09800009_000020_000020()
|
jaguar_state::blitter_09800009_000020_000020()
|
||||||
- ruinerp
|
- ruinerp
|
||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
|
@ -3,59 +3,59 @@
|
|||||||
/*
|
/*
|
||||||
Konami 037122
|
Konami 037122
|
||||||
|
|
||||||
This chip has CLUT, CRTC, Variable size single tilemap
|
This chip has CLUT, CRTC, Variable size single tilemap
|
||||||
|
|
||||||
Color lookup table is 16 bit BRG format, total 8192 entries (256 color per each tile * 32 banks))
|
Color lookup table is 16 bit BRG format, total 8192 entries (256 color per each tile * 32 banks))
|
||||||
|
|
||||||
Color format (4 byte (1x32bit word) per each color)
|
Color format (4 byte (1x32bit word) per each color)
|
||||||
Bits Description
|
Bits Description
|
||||||
fedcba9876543210 fedcba9876543210
|
fedcba9876543210 fedcba9876543210
|
||||||
---------------- xxxxx----------- Blue
|
---------------- xxxxx----------- Blue
|
||||||
---------------- -----xxxxx------ Red
|
---------------- -----xxxxx------ Red
|
||||||
---------------- ----------xxxxxx Green
|
---------------- ----------xxxxxx Green
|
||||||
|
|
||||||
Tilemap is can be rotated, zoomed, similar as K053936 "simple mode"
|
Tilemap is can be rotated, zoomed, similar as K053936 "simple mode"
|
||||||
Tilemap size is 256x64 (2048x512 pixels) or 128x64 (1024x512 pixels), Each tile is 8bpp 8x8.
|
Tilemap size is 256x64 (2048x512 pixels) or 128x64 (1024x512 pixels), Each tile is 8bpp 8x8.
|
||||||
|
|
||||||
Tile format (4 byte (1x32bit word) per each tile)
|
Tile format (4 byte (1x32bit word) per each tile)
|
||||||
Bits Description
|
Bits Description
|
||||||
fedcba9876543210 fedcba9876543210
|
fedcba9876543210 fedcba9876543210
|
||||||
--------x------- ---------------- Flip Y
|
--------x------- ---------------- Flip Y
|
||||||
---------x------ ---------------- Flip X
|
---------x------ ---------------- Flip X
|
||||||
----------xxxxx- ---------------- CLUT Bank index (256 color granularity)
|
----------xxxxx- ---------------- CLUT Bank index (256 color granularity)
|
||||||
---------------- --xxxxxxxxxxxxxx Tile code (from character RAM, 8x8 pixel granularity (128 byte))
|
---------------- --xxxxxxxxxxxxxx Tile code (from character RAM, 8x8 pixel granularity (128 byte))
|
||||||
|
|
||||||
Other bits unknown
|
Other bits unknown
|
||||||
|
|
||||||
Register map
|
Register map
|
||||||
00-0f Display timing
|
00-0f Display timing
|
||||||
20-2f Scroll/ROZ register
|
20-2f Scroll/ROZ register
|
||||||
30-3f Control, etc
|
30-3f Control, etc
|
||||||
|
|
||||||
Offset Bits Description
|
Offset Bits Description
|
||||||
fedcba9876543210 fedcba9876543210
|
fedcba9876543210 fedcba9876543210
|
||||||
00 xxxxxxxxxxxxxxxx ---------------- Horizontal total pixels - 1
|
00 xxxxxxxxxxxxxxxx ---------------- Horizontal total pixels - 1
|
||||||
---------------- xxxxxxxxxxxxxxxx Horizontal sync width - 1
|
---------------- xxxxxxxxxxxxxxxx Horizontal sync width - 1
|
||||||
04 xxxxxxxxxxxxxxxx ---------------- Horizontal front porch - 5
|
04 xxxxxxxxxxxxxxxx ---------------- Horizontal front porch - 5
|
||||||
---------------- xxxxxxxxxxxxxxxx Horizontal back porch + 5
|
---------------- xxxxxxxxxxxxxxxx Horizontal back porch + 5
|
||||||
08 xxxxxxxxxxxxxxxx ---------------- Vertical total pixels - 1
|
08 xxxxxxxxxxxxxxxx ---------------- Vertical total pixels - 1
|
||||||
---------------- xxxxxxxxxxxxxxxx Vertical sync width - 1
|
---------------- xxxxxxxxxxxxxxxx Vertical sync width - 1
|
||||||
0c xxxxxxxxxxxxxxxx ---------------- Vertical front porch + 1
|
0c xxxxxxxxxxxxxxxx ---------------- Vertical front porch + 1
|
||||||
---------------- xxxxxxxxxxxxxxxx Vertical back porch - 2
|
---------------- xxxxxxxxxxxxxxxx Vertical back porch - 2
|
||||||
20 sxxxxxxxxxxxxxxx ---------------- X counter starting value (12.4 fixed point)
|
20 sxxxxxxxxxxxxxxx ---------------- X counter starting value (12.4 fixed point)
|
||||||
---------------- sxxxxxxxxxxxxxxx Y counter starting value (12.4 fixed point)
|
---------------- sxxxxxxxxxxxxxxx Y counter starting value (12.4 fixed point)
|
||||||
24 ---------------- sxxxxxxxxxxxxxxx amount to add to the Y counter after each line (4.12 fixed point)
|
24 ---------------- sxxxxxxxxxxxxxxx amount to add to the Y counter after each line (4.12 fixed point)
|
||||||
28 sxxxxxxxxxxxxxxx ---------------- amount to add to the X counter after each horizontal pixel (4.12 fixed point)
|
28 sxxxxxxxxxxxxxxx ---------------- amount to add to the X counter after each horizontal pixel (4.12 fixed point)
|
||||||
30 ---------------x ---------------- VRAM mapping mode
|
30 ---------------x ---------------- VRAM mapping mode
|
||||||
---------------0 ---------------- CLUT at 0x00000-0x08000, Display tilemap area at 0x08000-0x18000 (256x64)
|
---------------0 ---------------- CLUT at 0x00000-0x08000, Display tilemap area at 0x08000-0x18000 (256x64)
|
||||||
---------------1 ---------------- CLUT at 0x18000-0x20000, Display tilemap area at 0x00000-0x08000 (128x64)
|
---------------1 ---------------- CLUT at 0x18000-0x20000, Display tilemap area at 0x00000-0x08000 (128x64)
|
||||||
---------------- -------------xxx Character RAM bank
|
---------------- -------------xxx Character RAM bank
|
||||||
|
|
||||||
Other bits/registers unknown, some registers are used
|
Other bits/registers unknown, some registers are used
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- verify and implement scroll, ROZ, display timing registers
|
- verify and implement scroll, ROZ, display timing registers
|
||||||
- verify other unknown but used registers
|
- verify other unknown but used registers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
@ -330,18 +330,18 @@ uint32_t redalert_state::screen_update_redalert(screen_device &screen, bitmap_rg
|
|||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
[0]
|
[0]
|
||||||
xxxx xxxx X position
|
xxxx xxxx X position
|
||||||
[1]
|
[1]
|
||||||
-??x ---- tile bank * 0x20 (?)
|
-??x ---- tile bank * 0x20 (?)
|
||||||
---- xx-- <used, unknown purpose>
|
---- xx-- <used, unknown purpose>
|
||||||
---- --x- (1) 8x8 tile width 4, (0) 4x4
|
---- --x- (1) 8x8 tile width 4, (0) 4x4
|
||||||
---- ---x enable layer
|
---- ---x enable layer
|
||||||
[2]
|
[2]
|
||||||
---- x--- boss second form, <unknown purpose>
|
---- x--- boss second form, <unknown purpose>
|
||||||
---- --xx tile bank * 0x100 (?)
|
---- --xx tile bank * 0x100 (?)
|
||||||
[3]
|
[3]
|
||||||
---- --xx <3 on normal/first form boss, 1 on second form>
|
---- --xx <3 on normal/first form boss, 1 on second form>
|
||||||
*/
|
*/
|
||||||
void redalert_state::demoneye_bitmap_layer_w(offs_t offset, uint8_t data)
|
void redalert_state::demoneye_bitmap_layer_w(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
|
@ -75,14 +75,14 @@
|
|||||||
The low bits of the pens from a "shadowing" tile (regardless of color code)
|
The low bits of the pens from a "shadowing" tile (regardless of color code)
|
||||||
substitute the top bits of the color index (0-7fff) in the frame buffer.
|
substitute the top bits of the color index (0-7fff) in the frame buffer.
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
|
|
||||||
Based on raster effect usage in Guardians it would appear this list is
|
Based on raster effect usage in Guardians it would appear this list is
|
||||||
transformed into an alt format by the hardware. It is unknown if this
|
transformed into an alt format by the hardware. It is unknown if this
|
||||||
alt format is visible to the CPU for reading, or only writing the updated
|
alt format is visible to the CPU for reading, or only writing the updated
|
||||||
scroll positions. We could do with attempting a RAM capture to see what
|
scroll positions. We could do with attempting a RAM capture to see what
|
||||||
this format really looks like if it is CPU visible as the current
|
this format really looks like if it is CPU visible as the current
|
||||||
implementation of this copy / reformat operation is pure guesswork
|
implementation of this copy / reformat operation is pure guesswork
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -473,7 +473,7 @@ int seta2_state::calculate_global_xoffset(int nozoom_fixedpalette_fixedposition)
|
|||||||
/*
|
/*
|
||||||
int global_xoffset = (m_vregs[0x12/2] & 0x7ff); // and 0x10/2 for low bits
|
int global_xoffset = (m_vregs[0x12/2] & 0x7ff); // and 0x10/2 for low bits
|
||||||
if (global_xoffset & 0x400)
|
if (global_xoffset & 0x400)
|
||||||
global_xoffset -= 0x800;
|
global_xoffset -= 0x800;
|
||||||
|
|
||||||
// funcube3 sets a global xoffset of -1 causing a single pixel shift, does something else compensate for it?
|
// funcube3 sets a global xoffset of -1 causing a single pixel shift, does something else compensate for it?
|
||||||
// note, it also writes a different address for the sprite buffering (related?) but doesn't also have the global zoom set to negative like Star Audition which also writes there.
|
// note, it also writes a different address for the sprite buffering (related?) but doesn't also have the global zoom set to negative like Star Audition which also writes there.
|
||||||
@ -484,7 +484,7 @@ int seta2_state::calculate_global_xoffset(int nozoom_fixedpalette_fixedposition)
|
|||||||
// TODO: properly render negative zoom sprites
|
// TODO: properly render negative zoom sprites
|
||||||
if (global_xzoom & 0x400)
|
if (global_xzoom & 0x400)
|
||||||
{
|
{
|
||||||
global_xoffset -= 0x14f;
|
global_xoffset -= 0x14f;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -501,7 +501,7 @@ int seta2_state::calculate_global_yoffset(int nozoom_fixedpalette_fixedposition)
|
|||||||
// Sprites list
|
// Sprites list
|
||||||
//int global_yoffset = (m_vregs[0x1a / 2] & 0x7ff); // and 0x18/2 for low bits
|
//int global_yoffset = (m_vregs[0x1a / 2] & 0x7ff); // and 0x18/2 for low bits
|
||||||
//if (global_yoffset & 0x400)
|
//if (global_yoffset & 0x400)
|
||||||
// global_yoffset -= 0x800;
|
// global_yoffset -= 0x800;
|
||||||
|
|
||||||
//global_yoffset += 1; // +2 for myangel / myangel2?
|
//global_yoffset += 1; // +2 for myangel / myangel2?
|
||||||
int global_yoffset = 0;
|
int global_yoffset = 0;
|
||||||
@ -691,7 +691,7 @@ void seta2_state::draw_sprites_line(bitmap_ind16 &bitmap, const rectangle &clipr
|
|||||||
|
|
||||||
if (realscanline == 128)
|
if (realscanline == 128)
|
||||||
{
|
{
|
||||||
// printf("%04x %02x %d %d\n", sprite_debug_count, num, yoffs, sy);
|
// printf("%04x %02x %d %d\n", sprite_debug_count, num, yoffs, sy);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sizey = use_global_size ? global_sizey : s2[1] & 0xfc00;
|
int sizey = use_global_size ? global_sizey : s2[1] & 0xfc00;
|
||||||
@ -852,7 +852,7 @@ void seta2_state::draw_sprites(bitmap_ind16& bitmap, const rectangle& cliprect)
|
|||||||
yy &= 0x07ffffff;
|
yy &= 0x07ffffff;
|
||||||
yy >>= 16;
|
yy >>= 16;
|
||||||
|
|
||||||
// printf("line %04x yline requested %04x\n", y, yy);
|
// printf("line %04x yline requested %04x\n", y, yy);
|
||||||
|
|
||||||
if (yy & 0x400)
|
if (yy & 0x400)
|
||||||
yy -= 0x800;
|
yy -= 0x800;
|
||||||
|
@ -652,29 +652,29 @@ void vt100_video_device::display_char(bitmap_ind16 &bitmap, uint8_t code, int x,
|
|||||||
{
|
{
|
||||||
if (double_width)
|
if (double_width)
|
||||||
{
|
{
|
||||||
if (bitmap.pix16(y_preset, DOUBLE_x_preset + b) == fg_intensity)
|
if (bitmap.pix16(y_preset, DOUBLE_x_preset + b) == fg_intensity)
|
||||||
{
|
{
|
||||||
prev_bit = fg_intensity;
|
prev_bit = fg_intensity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (prev_bit == fg_intensity)
|
if (prev_bit == fg_intensity)
|
||||||
bitmap.pix16(y_preset, DOUBLE_x_preset + b) = fg_intensity;
|
bitmap.pix16(y_preset, DOUBLE_x_preset + b) = fg_intensity;
|
||||||
prev_bit = back_intensity;
|
prev_bit = back_intensity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bitmap.pix16(y_preset, x_preset + b) == fg_intensity)
|
if (bitmap.pix16(y_preset, x_preset + b) == fg_intensity)
|
||||||
{
|
{
|
||||||
prev_bit = fg_intensity;
|
prev_bit = fg_intensity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (prev_bit == fg_intensity)
|
if (prev_bit == fg_intensity)
|
||||||
bitmap.pix16(y_preset, x_preset + b) = fg_intensity;
|
bitmap.pix16(y_preset, x_preset + b) = fg_intensity;
|
||||||
prev_bit = back_intensity;
|
prev_bit = back_intensity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // for (scan_line)
|
} // for (scan_line)
|
||||||
|
@ -1028,7 +1028,7 @@ int xx1,yy1,xx2,yy2;
|
|||||||
}
|
}
|
||||||
for (int y=yy1;y <= yy2;y++) {
|
for (int y=yy1;y <= yy2;y++) {
|
||||||
*(bmp+y*width+xx1) = color;
|
*(bmp+y*width+xx1) = color;
|
||||||
}
|
}
|
||||||
} else if (yy1 == yy2) {
|
} else if (yy1 == yy2) {
|
||||||
if (xx1 > xx2) {
|
if (xx1 > xx2) {
|
||||||
int t=xx1;
|
int t=xx1;
|
||||||
@ -1957,8 +1957,8 @@ void nv2a_renderer::write_pixel(int x, int y, uint32_t color, int z)
|
|||||||
w = (ft & ~color_mask) | (ct & color_mask);
|
w = (ft & ~color_mask) | (ct & color_mask);
|
||||||
|
|
||||||
/* for debugging
|
/* for debugging
|
||||||
if (w == 0x94737d7b)
|
if (w == 0x94737d7b)
|
||||||
x++;
|
x++;
|
||||||
*/
|
*/
|
||||||
switch (colorformat_rendertarget) {
|
switch (colorformat_rendertarget) {
|
||||||
case NV2A_COLOR_FORMAT::R5G6B5:
|
case NV2A_COLOR_FORMAT::R5G6B5:
|
||||||
@ -3501,8 +3501,8 @@ int nv2a_renderer::execute_method_3d(address_space& space, uint32_t chanel, uint
|
|||||||
compute_limits_rendertarget(chanel, subchannel);
|
compute_limits_rendertarget(chanel, subchannel);
|
||||||
compute_size_rendertarget(chanel, subchannel);
|
compute_size_rendertarget(chanel, subchannel);
|
||||||
/* for debugging
|
/* for debugging
|
||||||
if (limits_rendertarget.max_x == 1023)
|
if (limits_rendertarget.max_x == 1023)
|
||||||
type_rendertarget = NV2A_RT_TYPE::LINEAR;
|
type_rendertarget = NV2A_RT_TYPE::LINEAR;
|
||||||
*/
|
*/
|
||||||
switch (colorformat_rendertarget) {
|
switch (colorformat_rendertarget) {
|
||||||
case NV2A_COLOR_FORMAT::R5G6B5:
|
case NV2A_COLOR_FORMAT::R5G6B5:
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Dragon DOS disk images
|
Dragon DOS disk images
|
||||||
|
|
||||||
I am not happy with the sector allocation algorithm
|
I am not happy with the sector allocation algorithm
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ struct dgndos_direnum
|
|||||||
#define HEADER_EXTENTS_COUNT 4
|
#define HEADER_EXTENTS_COUNT 4
|
||||||
#define CONT_EXTENTS_COUNT 7
|
#define CONT_EXTENTS_COUNT 7
|
||||||
|
|
||||||
#define DGNDOS_DELETED_BIT 0x80 // deleted entry
|
#define DGNDOS_DELETED_BIT 0x80 // deleted entry
|
||||||
#define DGNDOS_CONTINUED_BIT 0x20 // byte at offset 0x18 give next entry number
|
#define DGNDOS_CONTINUED_BIT 0x20 // byte at offset 0x18 give next entry number
|
||||||
#define DGNDOS_END_BIT 0x08 // end of directory
|
#define DGNDOS_END_BIT 0x08 // end of directory
|
||||||
#define DGNDOS_PROTECT_BIT 0x02 // ignored
|
#define DGNDOS_PROTECT_BIT 0x02 // ignored
|
||||||
@ -149,13 +149,13 @@ static imgtoolerr_t dgndos_get_geometry(uint8_t *entire_track, int *bitmap_count
|
|||||||
|
|
||||||
if( (~tod & 0xff) != entire_track[0xfe])
|
if( (~tod & 0xff) != entire_track[0xfe])
|
||||||
{
|
{
|
||||||
// fprintf( stderr, "tracks_on_disk check failed: %u == %u\n", (~tod & 0xff), entire_track[0xfe] );
|
// fprintf( stderr, "tracks_on_disk check failed: %u == %u\n", (~tod & 0xff), entire_track[0xfe] );
|
||||||
return IMGTOOLERR_CORRUPTIMAGE;
|
return IMGTOOLERR_CORRUPTIMAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (~spt & 0xff) != entire_track[0xff])
|
if( (~spt & 0xff) != entire_track[0xff])
|
||||||
{
|
{
|
||||||
// fprintf( stderr, "sectors_per_track check failed: %u == %u\n", (~spt & 0xff), entire_track[0xff] );
|
// fprintf( stderr, "sectors_per_track check failed: %u == %u\n", (~spt & 0xff), entire_track[0xff] );
|
||||||
return IMGTOOLERR_CORRUPTIMAGE;
|
return IMGTOOLERR_CORRUPTIMAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,7 +169,7 @@ static imgtoolerr_t dgndos_get_geometry(uint8_t *entire_track, int *bitmap_count
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// fprintf( stderr, "sides check failed\n" );
|
// fprintf( stderr, "sides check failed\n" );
|
||||||
return IMGTOOLERR_CORRUPTIMAGE;
|
return IMGTOOLERR_CORRUPTIMAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -518,8 +518,8 @@ static imgtoolerr_t dgndos_diskimage_nextenum(imgtool::directory &enumeration, i
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
err = dgndos_get_file_size(entire_track20, dgnent, filesize);
|
err = dgndos_get_file_size(entire_track20, dgnent, filesize);
|
||||||
if (err) return err;
|
if (err) return err;
|
||||||
|
|
||||||
if (filesize == ((size_t) -1))
|
if (filesize == ((size_t) -1))
|
||||||
{
|
{
|
||||||
@ -906,7 +906,7 @@ static imgtoolerr_t dgndos_diskimage_writefile(imgtool::partition &partition, co
|
|||||||
int de_count = 0;
|
int de_count = 0;
|
||||||
int de_dont_delete = position;
|
int de_dont_delete = position;
|
||||||
int lsn, count;
|
int lsn, count;
|
||||||
int save_next_de;
|
int save_next_de;
|
||||||
|
|
||||||
save_next_de = ent.dngdos_last_or_next;
|
save_next_de = ent.dngdos_last_or_next;
|
||||||
ent.dngdos_last_or_next = last_sector_size;
|
ent.dngdos_last_or_next = last_sector_size;
|
||||||
|
@ -6184,7 +6184,7 @@ static void config_gal20v8_pins(const pal_data* pal, const jed_data* jed)
|
|||||||
input_pins_combinatorialsimple[input_pin_count] = macrocells[index].pin;
|
input_pins_combinatorialsimple[input_pin_count] = macrocells[index].pin;
|
||||||
|
|
||||||
++input_pin_count;
|
++input_pin_count;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
output_pins[output_pin_count].flags |= OUTPUT_FEEDBACK_NONE;
|
output_pins[output_pin_count].flags |= OUTPUT_FEEDBACK_NONE;
|
||||||
|
Loading…
Reference in New Issue
Block a user