srcclean and cleanup (nw)

This commit is contained in:
Vas Crabb 2020-06-21 14:59:50 +10:00
parent 8ef400ec67
commit 01661be41c
146 changed files with 1092 additions and 1092 deletions

View File

@ -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"/>

View File

@ -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]" />

View File

@ -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>

View File

@ -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>

View File

@ -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">

View File

@ -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 -->
<!-- <!--

View File

@ -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>

View File

@ -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 )
*********************************************************************/ *********************************************************************/

View File

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

View File

@ -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)
{ {

View File

@ -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);
} }
*/ */

View File

@ -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))
{ {
} }

View File

@ -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)
***************************************************************************/ ***************************************************************************/

View File

@ -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)
***************************************************************************/ ***************************************************************************/

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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
**********************************************************************/ **********************************************************************/

View File

@ -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)

View File

@ -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"
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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

View File

@ -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)
{ {

View File

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

View File

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

View File

@ -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)

View File

@ -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)

View File

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

View File

@ -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;

View File

@ -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
{ {

View File

@ -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

View File

@ -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"

View File

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

View File

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

View File

@ -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)

View File

@ -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

View File

@ -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;
}; };
/*************************************************************************** /***************************************************************************

View File

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

View File

@ -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

View File

@ -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';

View File

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

View File

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

View File

@ -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
{ {

View File

@ -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)

View File

@ -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,

View File

@ -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

View File

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

View File

@ -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

View File

@ -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

View File

@ -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__)

View File

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

View File

@ -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

View File

@ -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 )

View File

@ -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"

View File

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

View File

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

View File

@ -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)

View File

@ -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;

View File

@ -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.
*/ */

View File

@ -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"

View File

@ -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
*/ */
/* /*

View File

@ -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"

View File

@ -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()

View File

@ -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"

View File

@ -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
***************************************************************************/ ***************************************************************************/

View File

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

View File

@ -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"
{ } { }

View File

@ -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?
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -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)

View File

@ -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

View File

@ -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) )

View File

@ -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.
***************************************************************************/ ***************************************************************************/

View File

@ -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) )

View File

@ -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?)
*/ */

View File

@ -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
****************************************************************************/ ****************************************************************************/

View File

@ -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
} }

View File

@ -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)
{ {

View File

@ -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

View File

@ -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?
} }

View File

@ -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) )

View File

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

View File

@ -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

View File

@ -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)

View File

@ -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.
*/ */

View File

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

View File

@ -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)

View File

@ -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"

View File

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

View File

@ -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

View File

@ -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)
{ {

View File

@ -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 */

View File

@ -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()

View File

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

View File

@ -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
**************************************************************************** ****************************************************************************

View File

@ -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"

View File

@ -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)
{ {

View File

@ -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;

View File

@ -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)

View File

@ -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:

View File

@ -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;

View File

@ -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;