mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
Cleanups and version bump
This commit is contained in:
parent
30d94e51c5
commit
fec65e0b57
104
hash/a7800.xml
104
hash/a7800.xml
@ -2264,60 +2264,60 @@ almost nothing like the prototype.
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- XM board enhanced -->
|
||||
<!-- XM board enhanced -->
|
||||
|
||||
<!-- these should require an XM board? but the emulation seems to be built into the base driver?-->
|
||||
<!-- these have had the header stripped vs the .a78 files offered
|
||||
there was also a 'binary' with size 0x24000, CRC fd503bd4 -->
|
||||
<software name="dkongxm">
|
||||
<description>Donkey Kong (homebrew, XM enhanced, HSC support) (Demo)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="PAL"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_pal_hsc.a78" size="0x24000" crc="6510b674" sha1="65b723b470d287af51e9888813149c43fb11ac26" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<!-- these should require an XM board? but the emulation seems to be built into the base driver?-->
|
||||
<!-- these have had the header stripped vs the .a78 files offered
|
||||
there was also a 'binary' with size 0x24000, CRC fd503bd4 -->
|
||||
<software name="dkongxm">
|
||||
<description>Donkey Kong (homebrew, XM enhanced, HSC support) (Demo)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="PAL"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_pal_hsc.a78" size="0x24000" crc="6510b674" sha1="65b723b470d287af51e9888813149c43fb11ac26" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="dkongxmu" cloneof="dkongxm" >
|
||||
<description>Donkey Kong (homebrew, XM enhanced, HSC support) (Demo) (NTSC)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="NTSC"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_ntsc_hsc.a78" size="0x24000" crc="2c67fea7" sha1="7825c1946e3c7492fa9bbfae33029cd68c0d1135" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="dkongxmu" cloneof="dkongxm" >
|
||||
<description>Donkey Kong (homebrew, XM enhanced, HSC support) (Demo) (NTSC)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="NTSC"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_ntsc_hsc.a78" size="0x24000" crc="2c67fea7" sha1="7825c1946e3c7492fa9bbfae33029cd68c0d1135" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="dkongxmn" cloneof="dkongxm">
|
||||
<description>Donkey Kong (homebrew, XM enhanced) (Demo)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="PAL"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_pal.a78" size="0x24000" crc="d362712e" sha1="118c462d6698bd23c378785f80062fdd7d65ca00" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="dkongxmn" cloneof="dkongxm">
|
||||
<description>Donkey Kong (homebrew, XM enhanced) (Demo)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="PAL"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_pal.a78" size="0x24000" crc="d362712e" sha1="118c462d6698bd23c378785f80062fdd7d65ca00" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="dkongxmnu" cloneof="dkongxm" >
|
||||
<description>Donkey Kong (homebrew, XM enhanced) (Demo) (NTSC)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="NTSC"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_ntsc.a78" size="0x24000" crc="6e170055" sha1="f4da231312da06ff9e8af5681b5013b14886b455" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="dkongxmnu" cloneof="dkongxm" >
|
||||
<description>Donkey Kong (homebrew, XM enhanced) (Demo) (NTSC)</description>
|
||||
<year>2012</year>
|
||||
<publisher><homebrew></publisher> <!-- TEP392 -->
|
||||
<sharedfeat name="compatibility" value="NTSC"/>
|
||||
<part name="cart" interface="a7800_cart">
|
||||
<feature name="pcb_type" value="TYPE-XM" />
|
||||
<dataarea name="rom" size="0x24000">
|
||||
<rom name="dkxm_final_demo_ntsc.a78" size="0x24000" crc="6e170055" sha1="f4da231312da06ff9e8af5681b5013b14886b455" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
</softwarelist>
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
<softwarelist name="coco_flop" description="Tandy Radio Shack Color Computer disk images">
|
||||
|
||||
<!-- coco3 only requires 512Kb, audio is a farty, run best with a a 6309? - coco3h driver) -->
|
||||
<!-- RUN"DONKEY" -->
|
||||
<software name="dkong" supported ="partial">
|
||||
<!-- coco3 only requires 512Kb, audio is a farty, run best with a a 6309? - coco3h driver) -->
|
||||
<!-- RUN"DONKEY" -->
|
||||
<software name="dkong" supported ="partial">
|
||||
<description>Donkey Kong (Sock Master's Donkey Kong Emulator for CoCo 3) (512Kb)</description>
|
||||
<year>2007</year>
|
||||
<publisher>Sock Master</publisher>
|
||||
|
@ -16845,22 +16845,22 @@ kept for now until finding out what those bytes affect...
|
||||
|
||||
|
||||
|
||||
<!-- Devices -->
|
||||
<!-- Devices -->
|
||||
|
||||
<!-- mounting this should add the floppy drive, rather than it always being there? -->
|
||||
<software name="diskbas">
|
||||
<description>Disk BASIC v1.0 for FS-FD1 (Japan)</description>
|
||||
<year>1987</year>
|
||||
<publisher>Matsushita</publisher>
|
||||
<part name="cart" interface="msx_cart">
|
||||
<feature name="mapper" value="DISK_ROM" />
|
||||
<dataarea name="rom" size="0x4000">
|
||||
<rom name="disk basic v1.0 for fs-fd1 (1987)(matsushita electric industrial)(jp).rom" size="0x4000" crc="4c9b8214" sha1="8e3f6f08309f082a82be8298a66c9b90f2d34ad4" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<!-- mounting this should add the floppy drive, rather than it always being there? -->
|
||||
<software name="diskbas">
|
||||
<description>Disk BASIC v1.0 for FS-FD1 (Japan)</description>
|
||||
<year>1987</year>
|
||||
<publisher>Matsushita</publisher>
|
||||
<part name="cart" interface="msx_cart">
|
||||
<feature name="mapper" value="DISK_ROM" />
|
||||
<dataarea name="rom" size="0x4000">
|
||||
<rom name="disk basic v1.0 for fs-fd1 (1987)(matsushita electric industrial)(jp).rom" size="0x4000" crc="4c9b8214" sha1="8e3f6f08309f082a82be8298a66c9b90f2d34ad4" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- SORT -->
|
||||
<!-- SORT -->
|
||||
|
||||
|
||||
|
||||
|
@ -6,12 +6,12 @@
|
||||
Things listed here should have a requirement of BASIC 1.0 + Disk Basic 1.0 (ie a Standard MSX1 type system with FDD)
|
||||
I've noticed some 'MSX1' floppy images in TOSEC seem to require a higher BASIC version?
|
||||
Some also require more RAM? the driver currently isn't very flexible.
|
||||
|
||||
|
||||
This for now is just a skeleton list for quick testing.
|
||||
|
||||
|
||||
To use the floppy drive the disk basic ROM must be mounted, example use case.
|
||||
msx -cart1 diskbas -flop1 ohshit
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<software name="jsw2">
|
||||
@ -25,38 +25,38 @@
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="ohmummy">
|
||||
<description>Oh Mummy!!</description>
|
||||
<year>1984</year>
|
||||
<publisher>Longman Software</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="oh mummy!! (1984)(longman software)(gb).dsk" size="737280" crc="9cf775cc" sha1="cd7db0faf25ae33699b1708a19a874e3662e158a" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="ohmummy">
|
||||
<description>Oh Mummy!!</description>
|
||||
<year>1984</year>
|
||||
<publisher>Longman Software</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="oh mummy!! (1984)(longman software)(gb).dsk" size="737280" crc="9cf775cc" sha1="cd7db0faf25ae33699b1708a19a874e3662e158a" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="ohshit">
|
||||
<description>Oh Shit!</description>
|
||||
<year>1986</year>
|
||||
<publisher>Aackosoft</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="oh shit! (1986)(aackosoft)(nl).dsk" size="737280" crc="735ebc21" sha1="7de3f69a8a5136e0dd25214d36b1194a6506b377" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="ohshit">
|
||||
<description>Oh Shit!</description>
|
||||
<year>1986</year>
|
||||
<publisher>Aackosoft</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="oh shit! (1986)(aackosoft)(nl).dsk" size="737280" crc="735ebc21" sha1="7de3f69a8a5136e0dd25214d36b1194a6506b377" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="ohno" cloneof="ohshit">
|
||||
<description>Oh No!</description>
|
||||
<year>1986</year>
|
||||
<publisher>Eaglesoft</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="oh no! (1986)(eaglesoft)(nl)[aka oh shit!].dsk" size="737280" crc="aee65f34" sha1="5c2cd6dd8192a8c29fc0e272181272cb26cc2af6" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="ohno" cloneof="ohshit">
|
||||
<description>Oh No!</description>
|
||||
<year>1986</year>
|
||||
<publisher>Eaglesoft</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="737280">
|
||||
<rom name="oh no! (1986)(eaglesoft)(nl)[aka oh shit!].dsk" size="737280" crc="aee65f34" sha1="5c2cd6dd8192a8c29fc0e272181272cb26cc2af6" offset="0" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
</softwarelist>
|
||||
|
@ -2354,7 +2354,7 @@ But how do later protos fit with this theory? Maybe the later protos were from t
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="okaissod">
|
||||
<description>NHK Okaasan to Issho Do Re Mi Fa Do~nuts! Oekaki Daisuki! Omoshiro Oekaki Daishuugou! (Jpn)</description>
|
||||
<year>1998</year>
|
||||
|
14
hash/psx.xml
14
hash/psx.xml
@ -2,8 +2,8 @@
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="psx" description="Sony Playstation CD-ROMs">
|
||||
|
||||
<!-- todo, reconvert original dumps using current CHDMAN verison - Feb 2014 -->
|
||||
|
||||
<!-- todo, reconvert original dumps using current CHDMAN verison - Feb 2014 -->
|
||||
|
||||
<!--
|
||||
***********************
|
||||
NON-REDUMP Rips
|
||||
@ -49,11 +49,11 @@ A few comments on these:
|
||||
|
||||
<!-- Prototype disks -->
|
||||
|
||||
|
||||
|
||||
<software name="bublbob2" >
|
||||
<!-- Original images
|
||||
bb2.bin 62,620,864 1c2c9f63
|
||||
bb2.cue 69 096e5077
|
||||
bb2.bin 62,620,864 1c2c9f63
|
||||
bb2.cue 69 096e5077
|
||||
-->
|
||||
<description>Bubble Bobble II (prototype)</description>
|
||||
<year>1995</year>
|
||||
@ -65,8 +65,8 @@ A few comments on these:
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<software name="baldgate" supported="no">
|
||||
<!-- Original images (from drx)
|
||||
<rom name="baldur's gate - disc 1.bin" size="657475728" crc="96e9befa"/>
|
||||
|
@ -8,7 +8,7 @@ endif
|
||||
ifeq ($(findstring 4.8.,$(TEST_GCC)),4.8.)
|
||||
CCOMFLAGS += -Wno-narrowing -Wno-attributes -Wno-unused-local-typedefs
|
||||
# array bounds checking seems to be buggy in 4.8.1 (try it on video/stvvdp1.c and video/model1.c without -Wno-array-bounds)
|
||||
CCOMFLAGS += -Wno-unused-variable -Wno-array-bounds -Wno-strict-overflow
|
||||
CCOMFLAGS += -Wno-unused-variable -Wno-array-bounds -Wno-strict-overflow
|
||||
endif
|
||||
|
||||
ifeq ($(findstring arm,$(UNAME)),arm)
|
||||
|
@ -74,7 +74,7 @@ struct render_font_char
|
||||
INT32 width; // width from this character to the next
|
||||
INT32 xoffs, yoffs; // X and Y offset from baseline to top,left of bitmap
|
||||
INT32 bmwidth, bmheight; // width and height of bitmap
|
||||
bitmap_argb32 * bitmap; // pointer to the bitmap containing the raw data
|
||||
bitmap_argb32 * bitmap; // pointer to the bitmap containing the raw data
|
||||
};
|
||||
|
||||
|
||||
@ -107,7 +107,7 @@ inline int pixel_is_set(bitmap_argb32 &bitmap, int y, int x)
|
||||
|
||||
//-------------------------------------------------
|
||||
// write_data - write data to the given file and
|
||||
// throw an exception if an error occurs
|
||||
// throw an exception if an error occurs
|
||||
//-------------------------------------------------
|
||||
|
||||
static void write_data(core_file &file, UINT8 *base, UINT8 *end)
|
||||
@ -123,7 +123,7 @@ static void write_data(core_file &file, UINT8 *base, UINT8 *end)
|
||||
|
||||
//-------------------------------------------------
|
||||
// render_font_save_cached - write the cached
|
||||
// data out to the file
|
||||
// data out to the file
|
||||
//-------------------------------------------------
|
||||
|
||||
static bool render_font_save_cached(render_font &font, const char *filename, UINT32 hash)
|
||||
@ -248,7 +248,7 @@ static bool render_font_save_cached(render_font &font, const char *filename, UIN
|
||||
|
||||
//-------------------------------------------------
|
||||
// bitmap_to_chars - convert a bitmap to
|
||||
// characters in the given font
|
||||
// characters in the given font
|
||||
//-------------------------------------------------
|
||||
|
||||
static bool bitmap_to_chars(bitmap_argb32 &bitmap, render_font &font)
|
||||
|
@ -153,7 +153,7 @@ UINT8 a2bus_cffa2000_device::read_c0nx(address_space &space, UINT8 offset)
|
||||
// Apple /// driver uses sta $c080,x when writing, which causes spurious reads of c088
|
||||
if (!m_inwritecycle)
|
||||
{
|
||||
m_lastreaddata = m_ata->read_cs0(space, offset - 8, 0xffff);
|
||||
m_lastreaddata = m_ata->read_cs0(space, offset - 8, 0xffff);
|
||||
}
|
||||
return m_lastreaddata & 0xff;
|
||||
|
||||
@ -184,7 +184,7 @@ void a2bus_cffa2000_device::write_c0nx(address_space &space, UINT8 offset, UINT8
|
||||
case 0:
|
||||
m_lastdata &= 0x00ff;
|
||||
m_lastdata |= data<<8;
|
||||
// printf("%02x to 0, m_lastdata = %x\n", data, m_lastdata);
|
||||
// printf("%02x to 0, m_lastdata = %x\n", data, m_lastdata);
|
||||
m_inwritecycle = true;
|
||||
break;
|
||||
|
||||
@ -199,7 +199,7 @@ void a2bus_cffa2000_device::write_c0nx(address_space &space, UINT8 offset, UINT8
|
||||
case 8:
|
||||
m_lastdata &= 0xff00;
|
||||
m_lastdata |= data;
|
||||
// printf("%02x to 8, m_lastdata = %x\n", data, m_lastdata);
|
||||
// printf("%02x to 8, m_lastdata = %x\n", data, m_lastdata);
|
||||
m_ata->write_cs0(space, offset-8, m_lastdata, 0xffff);
|
||||
break;
|
||||
|
||||
|
@ -4,27 +4,27 @@
|
||||
|
||||
Implementation of the Corvus flat-cable hard disk interface
|
||||
for the Apple II.
|
||||
|
||||
|
||||
This same card was used in the Corvus Concept.
|
||||
|
||||
|
||||
C0n0 = drive read/write
|
||||
C0n1 = read status (busy in bit 7, data direction in bit 6)
|
||||
|
||||
Reads and writes to C0n2+ happen; the contents of the reads are thrown away
|
||||
|
||||
Reads and writes to C0n2+ happen; the contents of the reads are thrown away
|
||||
immediately by all the code I've examined, and sending the writes to the
|
||||
drive's write port makes it not work so they're intended to be ignored too.
|
||||
|
||||
|
||||
5 MB: -chs 144,4,20 -ss 512
|
||||
10 MB: -chs 358,3,20 -ss 512
|
||||
20 MB: -chs 388,5,20 -ss 512
|
||||
|
||||
|
||||
To set up a disk from scratch on the Apple II:
|
||||
1) Create a disk of your desired capacity using CHDMAN -c none and the parameters
|
||||
listed above for each of the possible sizes.
|
||||
2) Boot apple2p with the corvus in slot 2 and a diskii(ng) in slot 6 with the
|
||||
"Corvus Hard Drive - Diagnostics.dsk" mounted.
|
||||
3) Press F to format. Accept all the default options from now on;
|
||||
there is no "format switch" to worry about with the current emulation.
|
||||
there is no "format switch" to worry about with the current emulation.
|
||||
4) Quit MESS. Restart with the corvus in slot 6 and a diskii(ng) in slot 7
|
||||
with the "Corvus Hard Drive - Utilities 1.dsk" mounted.
|
||||
5) When you get the BASIC prompt, "LOAD BSYSGEN"
|
||||
@ -35,7 +35,7 @@
|
||||
10) When the format completes, type "RUN APPLESOFT BOOT PREP" and press Enter.
|
||||
11) Once it finishes, quit MESS. Remove the diskii(ng) from slot 7 and
|
||||
the system should boot from the Corvus HD.
|
||||
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
#include "a2corvus.h"
|
||||
@ -53,7 +53,7 @@
|
||||
const device_type A2BUS_CORVUS = &device_creator<a2bus_corvus_device>;
|
||||
|
||||
#define CORVUS_ROM_REGION "corvus_rom"
|
||||
#define CORVUS_HD_TAG "corvushd"
|
||||
#define CORVUS_HD_TAG "corvushd"
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT(corvus)
|
||||
MCFG_DEVICE_ADD(CORVUS_HD_TAG, CORVUS_HDC, 0)
|
||||
@ -158,7 +158,7 @@ void a2bus_corvus_device::write_c0nx(address_space &space, UINT8 offset, UINT8 d
|
||||
{
|
||||
if (offset == 0)
|
||||
{
|
||||
m_corvushd->write(space, 0, data);
|
||||
m_corvushd->write(space, 0, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -180,4 +180,3 @@ UINT8 a2bus_corvus_device::read_c800(address_space &space, UINT16 offset)
|
||||
{
|
||||
return m_rom[offset & 0x7ff];
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( pic )
|
||||
ROM_REGION(0x000200, PIC_ROM_REGION, 0)
|
||||
ROM_LOAD( "341-0057.bin", 0x000000, 0x000200, CRC(0d2d84ee) SHA1(bfc5b863d37e59875a6159528eb0f2b6082063b5) )
|
||||
ROM_LOAD( "341-0057.bin", 0x000000, 0x000200, CRC(0d2d84ee) SHA1(bfc5b863d37e59875a6159528eb0f2b6082063b5) )
|
||||
ROM_END
|
||||
|
||||
static INPUT_PORTS_START( pic )
|
||||
@ -182,13 +182,13 @@ UINT8 a2bus_pic_device::read_c0nx(address_space &space, UINT8 offset)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 3:
|
||||
case 3:
|
||||
return m_ctx_data_in->read();
|
||||
|
||||
case 4:
|
||||
return m_ack;
|
||||
|
||||
case 6: // does reading this really work?
|
||||
case 6: // does reading this really work?
|
||||
m_irqenable = true;
|
||||
break;
|
||||
|
||||
@ -211,16 +211,16 @@ void a2bus_pic_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0: // set data out and send a strobe
|
||||
case 0: // set data out and send a strobe
|
||||
m_ctx_data_out->write(data);
|
||||
|
||||
if (m_autostrobe)
|
||||
{
|
||||
start_strobe();
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case 2: // send a strobe
|
||||
case 2: // send a strobe
|
||||
start_strobe();
|
||||
break;
|
||||
|
||||
@ -236,13 +236,13 @@ void a2bus_pic_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( a2bus_pic_device::ack_w )
|
||||
WRITE_LINE_MEMBER( a2bus_pic_device::ack_w )
|
||||
{
|
||||
if (m_started)
|
||||
{
|
||||
UINT8 dsw1 = m_dsw1->read();
|
||||
UINT8 dsw1 = m_dsw1->read();
|
||||
|
||||
if (dsw1 & 0x10) // negative polarity
|
||||
if (dsw1 & 0x10) // negative polarity
|
||||
{
|
||||
m_ack = (state == ASSERT_LINE) ? 0x00 : 0x80;
|
||||
}
|
||||
@ -251,7 +251,7 @@ WRITE_LINE_MEMBER( a2bus_pic_device::ack_w )
|
||||
m_ack = (state == ASSERT_LINE) ? 0x80 : 0x00;
|
||||
}
|
||||
|
||||
m_ack |= 0x40; // set ACK flip-flop
|
||||
m_ack |= 0x40; // set ACK flip-flop
|
||||
|
||||
if ((dsw1 & 0x40) && (m_irqenable))
|
||||
{
|
||||
@ -262,9 +262,9 @@ WRITE_LINE_MEMBER( a2bus_pic_device::ack_w )
|
||||
|
||||
void a2bus_pic_device::start_strobe()
|
||||
{
|
||||
int usec = ((m_dsw1->read() & 7) * 2) + 1; // strobe length in microseconds
|
||||
int usec = ((m_dsw1->read() & 7) * 2) + 1; // strobe length in microseconds
|
||||
|
||||
if (m_dsw1->read() & 0x8) // negative polarity
|
||||
if (m_dsw1->read() & 0x8) // negative polarity
|
||||
{
|
||||
m_ctx->write_strobe(CLEAR_LINE);
|
||||
}
|
||||
@ -278,7 +278,7 @@ void a2bus_pic_device::start_strobe()
|
||||
|
||||
void a2bus_pic_device::clear_strobe()
|
||||
{
|
||||
if (m_dsw1->read() & 0x8) // negative polarity
|
||||
if (m_dsw1->read() & 0x8) // negative polarity
|
||||
{
|
||||
m_ctx->write_strobe(ASSERT_LINE);
|
||||
}
|
||||
|
@ -228,7 +228,7 @@ WRITE_LINE_MEMBER( a2bus_ssc_device::acia_irq_w )
|
||||
{
|
||||
if (m_started)
|
||||
{
|
||||
if (!(m_dsw2->read() & 4))
|
||||
if (!(m_dsw2->read() & 4))
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
|
@ -7,18 +7,18 @@
|
||||
Notes:
|
||||
|
||||
C0nX: C0n0 is 6845 register address,
|
||||
C0n1 is 6845 register data.
|
||||
C0n2 is control 1: b7 = 0 to read RAM at cc00, 1 for ROM (writes always to RAM)
|
||||
b6 = 0 for Apple II video, 1 for 6845
|
||||
b5 = 0 for 17.430 MHz 6845 clock, 1 for 28.7595 MHz 6845 clock
|
||||
b4 = 0 for 512 byte RAM block addressing (VideoTerm emulation), 1 for 256-byte RAM page addressing
|
||||
b3-b0 = page select
|
||||
C0n3 is control 2: b7 = 0 for attributes software controllable, 1 for DIP switches control attributes
|
||||
b5 = 0 for normal video if bit 7 set, 1 for inverse if bit 7 set
|
||||
b4 = 0 for lowlight if bit 7 set, 1 for highlight if bit 7 set
|
||||
b2 = 0 for high-density character set, 1 for low-density character set
|
||||
b1 = same as b5
|
||||
b0 = same as b4
|
||||
C0n1 is 6845 register data.
|
||||
C0n2 is control 1: b7 = 0 to read RAM at cc00, 1 for ROM (writes always to RAM)
|
||||
b6 = 0 for Apple II video, 1 for 6845
|
||||
b5 = 0 for 17.430 MHz 6845 clock, 1 for 28.7595 MHz 6845 clock
|
||||
b4 = 0 for 512 byte RAM block addressing (VideoTerm emulation), 1 for 256-byte RAM page addressing
|
||||
b3-b0 = page select
|
||||
C0n3 is control 2: b7 = 0 for attributes software controllable, 1 for DIP switches control attributes
|
||||
b5 = 0 for normal video if bit 7 set, 1 for inverse if bit 7 set
|
||||
b4 = 0 for lowlight if bit 7 set, 1 for highlight if bit 7 set
|
||||
b2 = 0 for high-density character set, 1 for low-density character set
|
||||
b1 = same as b5
|
||||
b0 = same as b4
|
||||
|
||||
C800-CBFF: ROM page 1
|
||||
CC00-CFEF: VRAM window or ROM page 2
|
||||
@ -46,20 +46,20 @@ const device_type A2BUS_ULTRATERMENH = &device_creator<a2bus_ultratermenh_device
|
||||
#define ULTRATERM_MC6845_NAME "mc6845_uterm"
|
||||
|
||||
#define CLOCK_LOW 17430000
|
||||
#define CLOCK_HIGH 28759500
|
||||
#define CLOCK_HIGH 28759500
|
||||
|
||||
#define CT1_MEMSEL (0x80) // 0 for read RAM at cc00, 1 for read ROM
|
||||
#define CT1_VIDSEL (0x40) // 0 for Apple video passthrough, 1 for 6845 video
|
||||
#define CT1_CLKSEL (0x20) // 0 for Videoterm clock, 1 for faster clock
|
||||
#define CT1_VTEMU (0x10) // Videoterm emulation mode if 0
|
||||
#define CT1_MEMSEL (0x80) // 0 for read RAM at cc00, 1 for read ROM
|
||||
#define CT1_VIDSEL (0x40) // 0 for Apple video passthrough, 1 for 6845 video
|
||||
#define CT1_CLKSEL (0x20) // 0 for Videoterm clock, 1 for faster clock
|
||||
#define CT1_VTEMU (0x10) // Videoterm emulation mode if 0
|
||||
#define CT1_PAGEMASK (0x0f)
|
||||
|
||||
#define CT2_USEDIPS (0x80) // 0 to use the rest of ctrl2's bits, 1 to use DIPs
|
||||
#define CT2_USEDIPS (0x80) // 0 to use the rest of ctrl2's bits, 1 to use DIPs
|
||||
#define CT2_INVBIT7H (0x20)
|
||||
#define CT2_HLBIT7H (0x10)
|
||||
#define CT2_HLBIT7H (0x10)
|
||||
#define CT2_HIDENSITY (0x04)
|
||||
#define CT2_INVBIT7L (0x02)
|
||||
#define CT2_HLBIT7L (0x01)
|
||||
#define CT2_HLBIT7L (0x01)
|
||||
|
||||
static MC6845_UPDATE_ROW( ultraterm_update_row );
|
||||
|
||||
@ -96,24 +96,24 @@ MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( a2ultraterm )
|
||||
ROM_REGION(0x1000, ULTRATERM_ROM_REGION, 0)
|
||||
ROM_LOAD( "frm_b537.bin", 0x000000, 0x001000, CRC(1e85a93e) SHA1(b4acd1775c08ae43996ab4edf6d8e28f4736346b) )
|
||||
ROM_LOAD( "frm_b537.bin", 0x000000, 0x001000, CRC(1e85a93e) SHA1(b4acd1775c08ae43996ab4edf6d8e28f4736346b) )
|
||||
|
||||
ROM_REGION(0x1000, ULTRATERM_GFX_REGION, 0)
|
||||
ROM_LOAD( "chs_7859.bin", 0x000000, 0x001000, CRC(ebe8f333) SHA1(3517fa9e7a39573f1cb159b3161d6939dec199ba) )
|
||||
ROM_LOAD( "chs_7859.bin", 0x000000, 0x001000, CRC(ebe8f333) SHA1(3517fa9e7a39573f1cb159b3161d6939dec199ba) )
|
||||
|
||||
ROM_REGION(0x400, "pal", 0)
|
||||
ROM_LOAD( "ult_2a313.jed", 0x000000, 0x000305, CRC(dcd51dea) SHA1(0ad0c5e802e48495da27f7bd26ee3ab1c92d74dd) )
|
||||
ROM_LOAD( "ult_2a313.jed", 0x000000, 0x000305, CRC(dcd51dea) SHA1(0ad0c5e802e48495da27f7bd26ee3ab1c92d74dd) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( a2ultratermenh )
|
||||
ROM_REGION(0x1000, ULTRATERM_ROM_REGION, 0)
|
||||
ROM_LOAD( "frm_b5c9.bin", 0x000000, 0x001000, CRC(b71e05e0) SHA1(092e3eda4644d4f465809864a7f023ac7d1d1542) )
|
||||
ROM_LOAD( "frm_b5c9.bin", 0x000000, 0x001000, CRC(b71e05e0) SHA1(092e3eda4644d4f465809864a7f023ac7d1d1542) )
|
||||
|
||||
ROM_REGION(0x1000, ULTRATERM_GFX_REGION, 0)
|
||||
ROM_LOAD( "chs_5604.bin", 0x000000, 0x001000, CRC(3fb4e90a) SHA1(94ff75199232a9b613585c22f88470f73fb7dd09) )
|
||||
ROM_LOAD( "chs_5604.bin", 0x000000, 0x001000, CRC(3fb4e90a) SHA1(94ff75199232a9b613585c22f88470f73fb7dd09) )
|
||||
|
||||
ROM_REGION(0x400, "pal", 0)
|
||||
ROM_LOAD( "ult_251c.jed", 0x000000, 0x000305, CRC(12fabb0d) SHA1(d4a36837cb98bb65f7ddef7455eb5a7f8e648a82) )
|
||||
ROM_LOAD( "ult_251c.jed", 0x000000, 0x000305, CRC(12fabb0d) SHA1(d4a36837cb98bb65f7ddef7455eb5a7f8e648a82) )
|
||||
ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
@ -245,24 +245,24 @@ void a2bus_videx160_device::write_c0nx(address_space &space, UINT8 offset, UINT8
|
||||
|
||||
case 2:
|
||||
m_ctrl1 = data;
|
||||
// printf("%02x to ctrl1\n", data);
|
||||
// printf("%02x to ctrl1\n", data);
|
||||
|
||||
// if disabling Videoterm emulation, change RAM banking
|
||||
if (data & CT1_VTEMU)
|
||||
{
|
||||
m_rambank = (data & CT1_PAGEMASK) * 256;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
m_ctrl2 = data;
|
||||
// printf("%02x to ctrl2\n", data);
|
||||
// printf("%02x to ctrl2\n", data);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(m_ctrl1 & CT1_VTEMU))
|
||||
{
|
||||
m_rambank = ((offset >> 2) & 3) * 512;
|
||||
m_rambank = ((offset >> 2) & 3) * 512;
|
||||
}
|
||||
}
|
||||
|
||||
@ -298,12 +298,12 @@ UINT8 a2bus_videx160_device::read_c800(address_space &space, UINT16 offset)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_ctrl1 & CT1_MEMSEL) // read ROM?
|
||||
if (m_ctrl1 & CT1_MEMSEL) // read ROM?
|
||||
{
|
||||
return m_rom[offset + 0x800];
|
||||
}
|
||||
|
||||
return m_ram[(offset - 0x400) + m_rambank];
|
||||
return m_ram[(offset - 0x400) + m_rambank];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,10 +125,10 @@ ROM_END
|
||||
|
||||
ROM_START( a2aevm80 )
|
||||
ROM_REGION(0x800, VIDEOTERM_ROM_REGION, 0)
|
||||
ROM_LOAD( "ae viewmaster 80 rom.bin", 0x000000, 0x000800, CRC(62a4b111) SHA1(159bf7c4add1435be215fddb648c0743fbcc49b5) )
|
||||
ROM_LOAD( "ae viewmaster 80 rom.bin", 0x000000, 0x000800, CRC(62a4b111) SHA1(159bf7c4add1435be215fddb648c0743fbcc49b5) )
|
||||
|
||||
ROM_REGION(0x1000, VIDEOTERM_GFX_REGION, 0)
|
||||
ROM_LOAD( "ae viewmaster 80 video rom.bin", 0x000000, 0x000800, CRC(4801ab90) SHA1(f90658ffee7740f3cb30ecef2e151f7dc6098833) )
|
||||
ROM_LOAD( "ae viewmaster 80 video rom.bin", 0x000000, 0x000800, CRC(4801ab90) SHA1(f90658ffee7740f3cb30ecef2e151f7dc6098833) )
|
||||
ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -50,7 +50,7 @@ protected:
|
||||
|
||||
private:
|
||||
int m_rambank;
|
||||
public:
|
||||
public:
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
||||
|
@ -77,7 +77,7 @@ ROM_END
|
||||
|
||||
ROM_START( vulcangold )
|
||||
ROM_REGION(0x4000, VULCAN_ROM_REGION, 0)
|
||||
ROM_LOAD( "ae vulcan gold rom v2.0.bin", 0x000000, 0x004000, CRC(19bc3958) SHA1(96a22c2540fa603648a4e638e176eee76523b4e1) )
|
||||
ROM_LOAD( "ae vulcan gold rom v2.0.bin", 0x000000, 0x004000, CRC(19bc3958) SHA1(96a22c2540fa603648a4e638e176eee76523b4e1) )
|
||||
ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -51,8 +51,8 @@
|
||||
class device_adam_expansion_slot_card_interface;
|
||||
|
||||
class adam_expansion_slot_device : public device_t,
|
||||
public device_slot_interface,
|
||||
public device_image_interface
|
||||
public device_slot_interface,
|
||||
public device_image_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -29,7 +29,7 @@
|
||||
// ======================> adam_fdc_device
|
||||
|
||||
class adam_fdc_device : public device_t,
|
||||
public device_adamnet_card_interface
|
||||
public device_adamnet_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -18,9 +18,9 @@
|
||||
//**************************************************************************
|
||||
|
||||
#define M6801_TAG "m6801"
|
||||
#define MC2661_TAG "mc2661"
|
||||
#define RS232_TAG "rs232"
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
#define MC2661_TAG "mc2661"
|
||||
#define RS232_TAG "rs232"
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
// ======================> adam_spi_device
|
||||
|
||||
class adam_spi_device : public device_t,
|
||||
public device_adamnet_card_interface
|
||||
public device_adamnet_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
|
||||
DECLARE_READ8_MEMBER(bml3_mp1805_r);
|
||||
DECLARE_WRITE8_MEMBER(bml3_mp1805_w);
|
||||
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( bml3_mc6843_intrq_w );
|
||||
|
||||
protected:
|
||||
|
@ -11,9 +11,9 @@
|
||||
|
||||
/*
|
||||
|
||||
TODO:
|
||||
TODO:
|
||||
|
||||
- pia6821 port A DDR needs to reset to 0xff or this won't boot
|
||||
- pia6821 port A DDR needs to reset to 0xff or this won't boot
|
||||
|
||||
*/
|
||||
|
||||
@ -69,7 +69,7 @@ WRITE8_MEMBER( c64_magic_formel_cartridge_device::pia_pb_w )
|
||||
PB2 RAM A9
|
||||
PB3 RAM A8
|
||||
PB4 RAM A12
|
||||
PB5 U9A clr
|
||||
PB5 U9A clr
|
||||
PB6
|
||||
PB7 ROMH enable
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
TODO:
|
||||
|
||||
http://www.wfking.de/hires.htm
|
||||
http://www.wfking.de/hires.htm
|
||||
|
||||
- version A (EF9365, 512x512 interlaced, 1 page)
|
||||
- version B (EF9366, 512x256 non-interlaced, 2 pages)
|
||||
|
@ -26,7 +26,7 @@
|
||||
// ======================> cbm2_graphic_cartridge_device
|
||||
|
||||
class cbm2_graphic_cartridge_device : public device_t,
|
||||
public device_cbm2_expansion_card_interface
|
||||
public device_cbm2_expansion_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -104,7 +104,7 @@ protected:
|
||||
// ======================> cbm2_user_port_device
|
||||
|
||||
class cbm2_user_port_device : public device_t,
|
||||
public device_slot_interface
|
||||
public device_slot_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -706,7 +706,7 @@ WRITE_LINE_MEMBER( base_c1541_device::byte_w )
|
||||
//-------------------------------------------------
|
||||
|
||||
static SLOT_INTERFACE_START( c1540_floppies )
|
||||
SLOT_INTERFACE( "525ssqd", ALPS_3255190x )
|
||||
SLOT_INTERFACE( "525ssqd", ALPS_3255190x )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
||||
@ -715,8 +715,8 @@ SLOT_INTERFACE_END
|
||||
//-------------------------------------------------
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( base_c1541_device::floppy_formats )
|
||||
FLOPPY_D64_FORMAT,
|
||||
FLOPPY_G64_FORMAT
|
||||
FLOPPY_D64_FORMAT,
|
||||
FLOPPY_G64_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
|
||||
@ -889,7 +889,7 @@ static MACHINE_CONFIG_FRAGMENT( c1541pdc )
|
||||
|
||||
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "image")
|
||||
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(MC6821_TAG, pia6821_device, ca1_w))
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -40,8 +40,8 @@
|
||||
// ======================> base_c1541_device
|
||||
|
||||
class base_c1541_device : public device_t,
|
||||
public device_cbm_iec_interface,
|
||||
public device_c64_floppy_parallel_interface
|
||||
public device_cbm_iec_interface,
|
||||
public device_c64_floppy_parallel_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
TODO:
|
||||
|
||||
- WD1770 set_floppy
|
||||
- WD1770 set_floppy
|
||||
- 1571CR
|
||||
- MOS5710
|
||||
- ICT Mini Chief MC-20
|
||||
@ -698,7 +698,7 @@ static MACHINE_CONFIG_FRAGMENT( c1571 )
|
||||
MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c1571_device, cia_pb_r))
|
||||
MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1571_device, cia_pb_w))
|
||||
MCFG_MOS6526_PC_CALLBACK(WRITELINE(c1571_device, cia_pc_w))
|
||||
|
||||
|
||||
MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
|
||||
MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz)
|
||||
MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w))
|
||||
|
@ -42,8 +42,8 @@
|
||||
// ======================> c1571_device
|
||||
|
||||
class c1571_device : public device_t,
|
||||
public device_cbm_iec_interface,
|
||||
public device_c64_floppy_parallel_interface
|
||||
public device_cbm_iec_interface,
|
||||
public device_c64_floppy_parallel_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -80,7 +80,7 @@
|
||||
|
||||
#define LOG_FDC 0
|
||||
#define WD_TAG "wd17xx"
|
||||
#define WD2797_TAG "wd2797"
|
||||
#define WD2797_TAG "wd2797"
|
||||
#define DISTO_TAG "disto"
|
||||
#define CLOUD9_TAG "cloud9"
|
||||
|
||||
@ -437,7 +437,7 @@ const device_type DRAGON_FDC = &device_creator<dragon_fdc_device>;
|
||||
// dragon_fdc_device - constructor
|
||||
//-------------------------------------------------
|
||||
dragon_fdc_device::dragon_fdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
|
||||
: coco_fdc_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
: coco_fdc_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
{
|
||||
}
|
||||
dragon_fdc_device::dragon_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
|
||||
void set_intrq(UINT8 val) { m_intrq = val; }
|
||||
void set_drq(UINT8 val) { m_drq = val; }
|
||||
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
|
||||
protected:
|
||||
@ -65,12 +65,12 @@ protected:
|
||||
UINT8 m_intrq : 1;
|
||||
|
||||
optional_device<wd1773_device> m_wd17xx; /* WD17xx */
|
||||
optional_device<wd2797_device> m_wd2797; /* WD2797 */
|
||||
optional_device<wd2797_device> m_wd2797; /* WD2797 */
|
||||
optional_device<ds1315_device> m_ds1315; /* DS1315 */
|
||||
|
||||
/* Disto RTC */
|
||||
optional_device<msm6242_device> m_disto_msm6242; /* 6242 RTC on Disto interface */
|
||||
|
||||
|
||||
offs_t m_msm6242_rtc_address;
|
||||
};
|
||||
|
||||
|
@ -64,8 +64,8 @@
|
||||
class device_colecovision_cartridge_interface;
|
||||
|
||||
class colecovision_cartridge_slot_device : public device_t,
|
||||
public device_slot_interface,
|
||||
public device_image_interface
|
||||
public device_slot_interface,
|
||||
public device_image_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -26,7 +26,7 @@
|
||||
// ======================> coleco_hand_controller_t
|
||||
|
||||
class coleco_hand_controller_t : public device_t,
|
||||
public device_colecovision_control_port_interface
|
||||
public device_colecovision_control_port_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -26,7 +26,7 @@
|
||||
// ======================> coleco_super_action_controller_t
|
||||
|
||||
class coleco_super_action_controller_t : public device_t,
|
||||
public device_colecovision_control_port_interface
|
||||
public device_colecovision_control_port_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -25,7 +25,7 @@
|
||||
// ======================> colecovision_standard_cartridge_device
|
||||
|
||||
class colecovision_standard_cartridge_device : public device_t,
|
||||
public device_colecovision_cartridge_interface
|
||||
public device_colecovision_cartridge_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -111,7 +111,7 @@ compucolor_floppy_device::compucolor_floppy_device(const machine_config &mconfig
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete -
|
||||
// device_config_complete -
|
||||
//-------------------------------------------------
|
||||
|
||||
void compucolor_floppy_port_device::device_config_complete()
|
||||
|
@ -74,7 +74,7 @@
|
||||
class device_comx_expansion_card_interface;
|
||||
|
||||
class comx_expansion_slot_device : public device_t,
|
||||
public device_slot_interface
|
||||
public device_slot_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -73,7 +73,7 @@ static MACHINE_CONFIG_FRAGMENT( comx_prn )
|
||||
MCFG_CENTRONICS_BUSY_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit1))
|
||||
MCFG_CENTRONICS_PERROR_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit2))
|
||||
MCFG_CENTRONICS_SELECT_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit3))
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
||||
|
||||
MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -69,8 +69,7 @@
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_ECBBUS_ADD() \
|
||||
MCFG_DEVICE_ADD(ECBBUS_TAG, ECBBUS, 0) \
|
||||
|
||||
MCFG_DEVICE_ADD(ECBBUS_TAG, ECBBUS, 0)
|
||||
#define MCFG_ECBBUS_SLOT_ADD(_num, _tag, _slot_intf, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, ECBBUS_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
|
||||
@ -94,7 +93,7 @@
|
||||
class ecbbus_device;
|
||||
|
||||
class ecbbus_slot_device : public device_t,
|
||||
public device_slot_interface
|
||||
public device_slot_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -305,13 +305,13 @@ static MC6845_INTERFACE( crtc_intf )
|
||||
static MC6845_INTERFACE( grip5_crtc_intf )
|
||||
{
|
||||
false,
|
||||
0,0,0,0,
|
||||
0,0,0,0,
|
||||
8,
|
||||
NULL,
|
||||
grip5_update_row,
|
||||
NULL,
|
||||
DEVCB_DEVICE_LINE_MEMBER(Z80STI_TAG, z80sti_device, i1_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(Z80STI_TAG, z80sti_device, i2_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(Z80STI_TAG, z80sti_device, i1_w),
|
||||
DEVCB_DEVICE_LINE_MEMBER(Z80STI_TAG, z80sti_device, i2_w),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
grip5_update_addr_changed
|
||||
|
@ -197,7 +197,7 @@ WRITE_LINE_MEMBER( e01_device::fdc_irq_w )
|
||||
update_interrupts();
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( e01_device::fdc_drq_w )
|
||||
WRITE_LINE_MEMBER( e01_device::fdc_drq_w )
|
||||
{
|
||||
m_fdc_drq = state;
|
||||
|
||||
|
@ -196,7 +196,7 @@ inline int econet_device::get_signal(int signal)
|
||||
// econet_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
econet_device::econet_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
econet_device::econet_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, ECONET, "Econet", tag, owner, clock, "econet", __FILE__),
|
||||
m_write_clk(*this),
|
||||
m_write_data(*this)
|
||||
|
@ -31,8 +31,7 @@
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_ECONET_ADD() \
|
||||
MCFG_DEVICE_ADD(ECONET_TAG, ECONET, 0) \
|
||||
|
||||
MCFG_DEVICE_ADD(ECONET_TAG, ECONET, 0)
|
||||
|
||||
#define MCFG_ECONET_SLOT_ADD(_tag, _num, _slot_intf, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, ECONET_SLOT, 0) \
|
||||
|
@ -69,8 +69,7 @@
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, EP64_EXPANSION_BUS_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false) \
|
||||
|
||||
MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false)
|
||||
|
||||
#define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \
|
||||
ep64_expansion_bus_slot_device::static_set_dave_tag(*device, "^"_tag);
|
||||
@ -95,7 +94,7 @@
|
||||
class device_ep64_expansion_bus_card_interface;
|
||||
|
||||
class ep64_expansion_bus_slot_device : public device_t,
|
||||
public device_slot_interface
|
||||
public device_slot_interface
|
||||
{
|
||||
friend class device_ep64_expansion_bus_card_interface;
|
||||
|
||||
|
@ -36,8 +36,8 @@ const device_type MEGADUCK_CART_SLOT = &device_creator<megaduck_cart_slot_device
|
||||
|
||||
device_gb_cart_interface::device_gb_cart_interface(const machine_config &mconfig, device_t &device)
|
||||
: device_slot_card_interface(mconfig, device),
|
||||
has_rumble(false),
|
||||
has_timer(false),
|
||||
has_rumble(false),
|
||||
has_timer(false),
|
||||
has_battery(false)
|
||||
{
|
||||
}
|
||||
|
@ -286,7 +286,7 @@ WRITE_LINE_MEMBER( c2031_device::byte_w )
|
||||
//-------------------------------------------------
|
||||
|
||||
static SLOT_INTERFACE_START( c2031_floppies )
|
||||
SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
|
||||
SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
// ======================> c2031_device
|
||||
|
||||
class c2031_device : public device_t,
|
||||
public device_ieee488_interface
|
||||
public device_ieee488_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -36,7 +36,7 @@
|
||||
#define M6504_TAG "uh3"
|
||||
#define M6522_TAG "um3"
|
||||
#define M6530_TAG "uk3"
|
||||
#define FDC_TAG "fdc"
|
||||
#define FDC_TAG "fdc"
|
||||
|
||||
|
||||
|
||||
@ -385,14 +385,14 @@ READ8_MEMBER( c2040_device::miot_pb_r )
|
||||
|
||||
bit description
|
||||
|
||||
PB0
|
||||
PB1
|
||||
PB2
|
||||
PB0
|
||||
PB1
|
||||
PB2
|
||||
PB3 WPS
|
||||
PB4
|
||||
PB5
|
||||
PB6 SYNC
|
||||
PB7
|
||||
PB7
|
||||
|
||||
*/
|
||||
|
||||
@ -416,10 +416,10 @@ WRITE8_MEMBER( c2040_device::miot_pb_w )
|
||||
PB0 DRV SEL
|
||||
PB1 DS0
|
||||
PB2 DS1
|
||||
PB3
|
||||
PB3
|
||||
PB4
|
||||
PB5
|
||||
PB6
|
||||
PB6
|
||||
PB7 M6504 IRQ
|
||||
|
||||
*/
|
||||
@ -452,7 +452,7 @@ static MOS6530_INTERFACE( miot_intf )
|
||||
//-------------------------------------------------
|
||||
|
||||
static SLOT_INTERFACE_START( c2040_floppies )
|
||||
SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
|
||||
SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD )
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
||||
@ -461,9 +461,9 @@ SLOT_INTERFACE_END
|
||||
//-------------------------------------------------
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( c2040_device::floppy_formats )
|
||||
FLOPPY_D64_FORMAT,
|
||||
FLOPPY_G64_FORMAT,
|
||||
FLOPPY_D67_FORMAT
|
||||
FLOPPY_D64_FORMAT,
|
||||
FLOPPY_G64_FORMAT,
|
||||
FLOPPY_D67_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
|
||||
|
@ -38,7 +38,7 @@
|
||||
// ======================> c2040_device
|
||||
|
||||
class c2040_device : public device_t,
|
||||
public device_ieee488_interface
|
||||
public device_ieee488_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -11,10 +11,10 @@
|
||||
|
||||
/*
|
||||
|
||||
TODO:
|
||||
TODO:
|
||||
|
||||
- writing starts in the middle of a byte
|
||||
- 8050 PLL
|
||||
- writing starts in the middle of a byte
|
||||
- 8050 PLL
|
||||
|
||||
*/
|
||||
|
||||
@ -67,7 +67,7 @@ const rom_entry *c2040_fdc_t::device_rom_region() const
|
||||
// c2040_fdc_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
|
||||
c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
|
||||
device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
|
||||
m_write_sync(*this),
|
||||
m_write_ready(*this),
|
||||
@ -92,7 +92,7 @@ c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, device_type type, const
|
||||
cur_live.write_start_time = attotime::never;
|
||||
}
|
||||
|
||||
c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, C2040_FDC, "C2040 FDC", tag, owner, clock, "c2040fdc", __FILE__),
|
||||
m_write_sync(*this),
|
||||
m_write_ready(*this),
|
||||
@ -117,7 +117,7 @@ c2040_fdc_t::c2040_fdc_t(const machine_config &mconfig, const char *tag, device_
|
||||
cur_live.write_start_time = attotime::never;
|
||||
}
|
||||
|
||||
c8050_fdc_t::c8050_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
c8050_fdc_t::c8050_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
c2040_fdc_t(mconfig, C2040_FDC, "C2040 FDC", tag, owner, clock, "c2040fdc", __FILE__) { }
|
||||
|
||||
|
||||
@ -242,7 +242,7 @@ void c2040_fdc_t::commit(attotime tm)
|
||||
{
|
||||
if(cur_live.write_start_time.is_never() || tm == cur_live.write_start_time || !cur_live.write_position)
|
||||
return;
|
||||
|
||||
|
||||
if (LOG) logerror("%s committing %u transitions since %s\n", tm.as_string(), cur_live.write_position, cur_live.write_start_time.as_string());
|
||||
|
||||
if(get_floppy())
|
||||
@ -336,14 +336,14 @@ void c2040_fdc_t::live_run(attotime limit)
|
||||
cur_live.cell_counter++;
|
||||
cur_live.cell_counter &= 0xf;
|
||||
}
|
||||
|
||||
|
||||
if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1)) {
|
||||
// read bit
|
||||
cur_live.shift_reg <<= 1;
|
||||
cur_live.shift_reg |= !(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2));
|
||||
cur_live.shift_reg &= 0x3ff;
|
||||
|
||||
if (LOG) logerror("%s read bit %u (%u) >> %03x, rw=%u mode=%u\n", cur_live.tm.as_string(), cur_live.bit_counter,
|
||||
|
||||
if (LOG) logerror("%s read bit %u (%u) >> %03x, rw=%u mode=%u\n", cur_live.tm.as_string(), cur_live.bit_counter,
|
||||
!(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2)), cur_live.shift_reg, cur_live.rw_sel, cur_live.mode_sel);
|
||||
|
||||
// write bit
|
||||
@ -375,7 +375,7 @@ void c2040_fdc_t::live_run(attotime limit)
|
||||
cur_live.e = m_gcr_rom->base()[cur_live.i];
|
||||
|
||||
int ready = !(BIT(cell_counter, 1) && !BIT(cur_live.cell_counter, 1) && (cur_live.bit_counter == 9));
|
||||
|
||||
|
||||
if (!ready) {
|
||||
// load write shift register
|
||||
// E7 E6 I7 E5 E4 E3 E2 I2 E1 E0
|
||||
@ -383,13 +383,13 @@ void c2040_fdc_t::live_run(attotime limit)
|
||||
offs_t i = cur_live.i;
|
||||
|
||||
cur_live.shift_reg_write = BIT(e,7)<<9 | BIT(e,6)<<8 | BIT(i,7)<<7 | BIT(e,5)<<6 | BIT(e,4)<<5 | BIT(e,3)<<4 | BIT(e,2)<<3 | BIT(i,2)<<2 | (e & 0x03);
|
||||
|
||||
|
||||
if (LOG) logerror("%s load write shift register %03x\n",cur_live.tm.as_string(),cur_live.shift_reg_write);
|
||||
} else if (BIT(cell_counter, 1) && !BIT(cur_live.cell_counter, 1)) {
|
||||
// clock write shift register
|
||||
cur_live.shift_reg_write <<= 1;
|
||||
cur_live.shift_reg_write &= 0x3ff;
|
||||
|
||||
|
||||
if (LOG) logerror("%s write shift << %03x\n",cur_live.tm.as_string(),cur_live.shift_reg_write);
|
||||
}
|
||||
|
||||
@ -463,9 +463,9 @@ READ8_MEMBER( c2040_fdc_t::read )
|
||||
offs_t i = checkpoint_live.i;
|
||||
|
||||
UINT8 data = (BIT(e, 6) << 7) | (BIT(i, 7) << 6) | (e & 0x33) | (BIT(e, 2) << 3) | (i & 0x04);
|
||||
|
||||
|
||||
if (LOG) logerror("%s VIA reads data %02x (%03x)\n", machine().time().as_string(), data, checkpoint_live.shift_reg);
|
||||
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
TODO:
|
||||
|
||||
- Micropolis 8x50 stepper motor is same as 4040, except it takes 4 pulses to step a track instead of 1
|
||||
- Micropolis 8x50 stepper motor is same as 4040, except it takes 4 pulses to step a track instead of 1
|
||||
|
||||
- BASIC program to set 8250/SFD-1001 to 8050 mode:
|
||||
|
||||
|
@ -53,7 +53,7 @@
|
||||
#define Z80_TAG "z80"
|
||||
#define I8255_0_TAG "ic17"
|
||||
#define I8255_1_TAG "ic16"
|
||||
#define CORVUS_HDC_TAG "corvus"
|
||||
#define CORVUS_HDC_TAG "corvus"
|
||||
|
||||
|
||||
|
||||
@ -88,9 +88,9 @@ ROM_START( hardbox )
|
||||
The version numbers listed are the ROM version reported by the HardBox diagnostics program.
|
||||
Disassembling the ROMs showed that v2.3 and v2.4 are for Corvus Systems drives but v3.1 is
|
||||
for Sunol Systems drives. Both types use the Corvus flat cable interface but there may be
|
||||
some programming differences, e.g. the v3.1 firmware for Sunol does not have the park heads
|
||||
routine in the Corvus versions. MESS emulates a Corvus drive so we default to the last
|
||||
known HardBox firmware for Corvus (v2.4). */
|
||||
some programming differences, e.g. the v3.1 firmware for Sunol does not have the park heads
|
||||
routine in the Corvus versions. MESS emulates a Corvus drive so we default to the last
|
||||
known HardBox firmware for Corvus (v2.4). */
|
||||
ROM_END
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
#define I8255_1_TAG "ic16"
|
||||
#define COM8116_TAG "ic14"
|
||||
#define RS232_TAG "rs232"
|
||||
#define CORVUS_HDC_TAG "corvus"
|
||||
#define CORVUS_HDC_TAG "corvus"
|
||||
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
// ======================> imi5000h_device
|
||||
|
||||
class imi5000h_device : public device_t,
|
||||
public device_imi7000_interface
|
||||
public device_imi7000_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -3,8 +3,8 @@
|
||||
*
|
||||
* Created on: August 27, 2010
|
||||
* Author: Hans Ostermeyer
|
||||
* ISA conversion by R. Belmont
|
||||
*
|
||||
* ISA conversion by R. Belmont
|
||||
*
|
||||
* Released for general non-commercial use under the MAME license
|
||||
* Visit http://mamedev.org for licensing and usage restrictions.
|
||||
*
|
||||
@ -566,7 +566,7 @@ void threecom3c505_device::set_interrupt(enum line_state state)
|
||||
case 5: m_isa->irq5_w(state); break;
|
||||
case 6: m_isa->irq6_w(state); break;
|
||||
case 7: m_isa->irq7_w(state); break;
|
||||
case 9: m_isa->irq2_w(state); break; // IRQ 9 on ISA16 goes to IRQ 2
|
||||
case 9: m_isa->irq2_w(state); break; // IRQ 9 on ISA16 goes to IRQ 2
|
||||
case 10: m_isa->irq10_w(state); break;
|
||||
case 11: m_isa->irq11_w(state); break;
|
||||
case 12: m_isa->irq12_w(state); break;
|
||||
@ -1579,4 +1579,3 @@ READ8_MEMBER(threecom3c505_device::read)
|
||||
LOG2(("reading 3C505 Register at offset %02x = %02x", offset, data));
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(ym3812_16_r);
|
||||
DECLARE_WRITE8_MEMBER(ym3812_16_w);
|
||||
protected:
|
||||
|
@ -92,7 +92,7 @@ void isa8_aga_device::device_start()
|
||||
m_isa->install_memory(0xb0000, 0xbffff, 0, 0, read8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_r),this), write8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_w),this));
|
||||
m_isa->install_device(0x3b0, 0x3bf, 0, 0, read8_delegate( FUNC(isa8_aga_device::pc_aga_mda_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_mda_w), this ) );
|
||||
m_isa->install_device(0x3d0, 0x3df, 0, 0, read8_delegate( FUNC(isa8_aga_device::pc_aga_cga_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_cga_w), this ) );
|
||||
|
||||
|
||||
/* Initialise the cga palette */
|
||||
int i;
|
||||
|
||||
@ -113,8 +113,8 @@ void isa8_aga_device::device_start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
|
||||
|
||||
UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
|
||||
/* just a plain bit pattern for graphics data generation */
|
||||
for (i = 0; i < 256; i++)
|
||||
gfx[i] = i;
|
||||
@ -179,7 +179,7 @@ void isa8_aga_pc200_device::device_start()
|
||||
m_isa->install_memory(0xb0000, 0xbffff, 0, 0, read8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_r),this), write8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_w),this));
|
||||
m_isa->install_device(0x3b0, 0x3bf, 0, 0, read8_delegate( FUNC(isa8_aga_device::pc_aga_mda_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_mda_w), this ) );
|
||||
m_isa->install_device(0x3d0, 0x3df, 0, 0, read8_delegate( FUNC(isa8_aga_pc200_device::pc200_cga_r), this ), write8_delegate( FUNC(isa8_aga_pc200_device::pc200_cga_w), this ) );
|
||||
|
||||
|
||||
/* Initialise the cga palette */
|
||||
int i;
|
||||
|
||||
@ -200,8 +200,8 @@ void isa8_aga_pc200_device::device_start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
|
||||
|
||||
UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
|
||||
/* just a plain bit pattern for graphics data generation */
|
||||
for (i = 0; i < 256; i++)
|
||||
gfx[i] = i;
|
||||
@ -765,7 +765,6 @@ void isa8_aga_device::set_palette_luts(void)
|
||||
WRITE8_MEMBER (isa8_aga_device:: pc_aga_cga_w )
|
||||
{
|
||||
if ( m_mode == AGA_COLOR ) {
|
||||
|
||||
switch(offset) {
|
||||
case 0: case 2: case 4: case 6:
|
||||
m_mc6845->address_w( space, offset, data );
|
||||
@ -867,7 +866,7 @@ WRITE8_MEMBER ( isa8_aga_device::pc_aga_videoram_w )
|
||||
}
|
||||
|
||||
READ8_MEMBER( isa8_aga_device::pc_aga_videoram_r )
|
||||
{
|
||||
{
|
||||
switch (m_mode) {
|
||||
case AGA_COLOR:
|
||||
if (offset>=0x8000) return m_videoram[offset-0x8000];
|
||||
|
@ -38,7 +38,7 @@ public:
|
||||
isa8_aga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
isa8_aga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_start();
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
@ -46,7 +46,7 @@ public:
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( hsync_changed );
|
||||
DECLARE_WRITE_LINE_MEMBER( vsync_changed );
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER( pc_aga_mda_r );
|
||||
DECLARE_WRITE8_MEMBER( pc_aga_mda_w );
|
||||
DECLARE_READ8_MEMBER( pc_aga_cga_r );
|
||||
@ -56,9 +56,9 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( pc_aga_videoram_w );
|
||||
DECLARE_READ8_MEMBER( pc_aga_videoram_r );
|
||||
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<mc6845_device> m_mc6845;
|
||||
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<mc6845_device> m_mc6845;
|
||||
|
||||
required_ioport m_cga_config;
|
||||
|
||||
mc6845_update_row_func m_update_row;
|
||||
@ -75,11 +75,11 @@ public:
|
||||
int m_framecnt;
|
||||
UINT8 m_vsync;
|
||||
UINT8 m_hsync;
|
||||
|
||||
|
||||
|
||||
UINT8 m_cga_palette_lut_2bpp[4];
|
||||
|
||||
UINT8 *m_videoram;
|
||||
UINT8 *m_videoram;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
@ -94,14 +94,14 @@ public:
|
||||
// construction/destruction
|
||||
isa8_aga_pc200_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_start();
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
|
||||
|
||||
UINT8 m_port8;
|
||||
UINT8 m_portd;
|
||||
UINT8 m_porte;
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER( pc200_videoram_r );
|
||||
DECLARE_WRITE8_MEMBER( pc200_videoram_w );
|
||||
DECLARE_WRITE8_MEMBER( pc200_cga_w );
|
||||
|
@ -285,7 +285,7 @@ void isa8_cga_device::device_start()
|
||||
m_vram.resize(m_vram_size);
|
||||
m_update_row = NULL;
|
||||
m_isa->install_device(0x3d0, 0x3df, 0, 0, read8_delegate( FUNC(isa8_cga_device::io_read), this ), write8_delegate( FUNC(isa8_cga_device::io_write), this ) );
|
||||
m_isa->install_bank(0xb8000, 0xb8000 + MIN(0x8000,m_vram_size) - 1, 0, m_vram_size & 0x4000, "bank_cga", m_vram);
|
||||
m_isa->install_bank(0xb8000, 0xb8000 + MIN(0x8000,m_vram_size) - 1, 0, m_vram_size & 0x4000, "bank_cga", m_vram);
|
||||
|
||||
/* Initialise the cga palette */
|
||||
int i;
|
||||
@ -1799,7 +1799,7 @@ isa8_cga_mc1502_device::isa8_cga_mc1502_device(const machine_config &mconfig, co
|
||||
ROM_START( mc1502 )
|
||||
ROM_REGION(0x2000,"gfx1", 0)
|
||||
// taken from mc1502
|
||||
ROM_LOAD( "symgen.rom", 0x0000, 0x2000, CRC(b2747a52) SHA1(6766d275467672436e91ac2997ac6b77700eba1e))
|
||||
ROM_LOAD( "symgen.rom", 0x0000, 0x2000, CRC(b2747a52) SHA1(6766d275467672436e91ac2997ac6b77700eba1e))
|
||||
ROM_END
|
||||
|
||||
const rom_entry *isa8_cga_mc1502_device::device_rom_region() const
|
||||
|
@ -68,7 +68,7 @@ public:
|
||||
bool m_superimpose;
|
||||
UINT8 m_plantronics; /* This should be moved into the appropriate subclass */
|
||||
offs_t m_start_offset;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
|
@ -143,7 +143,7 @@ ROM_START( dectalk_isa )
|
||||
ROM_LOAD16_BYTE("pc_boot_hxl.am27c64.d6.e26", 0x0000, 0x2000, CRC(7492f1e3) SHA1(fe6946a227f01c94f2b99220320a616445c96ee0)) // Some cards have a different label on the chip which lists the sum16: 31AC (matches contents)
|
||||
ROM_LOAD16_BYTE("pc_boot_hxh.am27c64.d8.e27", 0x0001, 0x2000, CRC(1fe7fe40) SHA1(6e89c237f01aa22e0d21ff4d6fdf8137c6ace374)) // Some cards have a different label on the chip which lists the sum16: 1A25 (matches contents)
|
||||
ROM_REGION( 0x2000, "dectalk_dsp", 0 )
|
||||
ROM_LOAD("spc_034c__2-1-92.tms320p15nl.d3.bin", 0x0000, 0x2000, CRC(d8b1201e) SHA1(4b873a5e882205fcac79a27562054b5c4d1a117c))
|
||||
ROM_LOAD("spc_034c__2-1-92.tms320p15nl.d3.bin", 0x0000, 0x2000, CRC(d8b1201e) SHA1(4b873a5e882205fcac79a27562054b5c4d1a117c))
|
||||
ROM_END
|
||||
|
||||
const rom_entry* dectalk_isa_device::device_rom_region() const
|
||||
|
@ -96,7 +96,7 @@ public:
|
||||
UINT8 m_vsync;
|
||||
UINT8 m_vblank;
|
||||
UINT8 m_display_enable;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(saa1099_16_r);
|
||||
DECLARE_WRITE8_MEMBER(saa1099_1_16_w);
|
||||
DECLARE_WRITE8_MEMBER(saa1099_2_16_w);
|
||||
|
@ -243,12 +243,12 @@ void isa8_device::device_start()
|
||||
m_iowidth = m_iospace->data_width();
|
||||
m_prgwidth = m_prgspace->data_width();
|
||||
}
|
||||
else // use host CPU's program and I/O spaces directly
|
||||
else // use host CPU's program and I/O spaces directly
|
||||
{
|
||||
m_iospace = &m_maincpu->space(AS_IO);
|
||||
m_iowidth = m_maincpu->space_config(AS_IO)->m_databus_width;
|
||||
m_iospace = &m_maincpu->space(AS_IO);
|
||||
m_iowidth = m_maincpu->space_config(AS_IO)->m_databus_width;
|
||||
m_prgspace = &m_maincpu->space(AS_PROGRAM);
|
||||
m_prgwidth = m_maincpu->space_config(AS_PROGRAM)->m_databus_width;
|
||||
m_prgwidth = m_maincpu->space_config(AS_PROGRAM)->m_databus_width;
|
||||
}
|
||||
}
|
||||
|
||||
@ -679,5 +679,3 @@ UINT16 device_isa16_card_interface::dack16_r(int line)
|
||||
void device_isa16_card_interface::dack16_w(int line,UINT16 data)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
@ -156,22 +156,22 @@ public:
|
||||
template<class _iochck> void set_iochck_callback(_iochck iochck) { m_write_iochck.set_callback(iochck); }
|
||||
|
||||
// for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const
|
||||
{
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const
|
||||
{
|
||||
switch (spacenum)
|
||||
{
|
||||
case AS_PROGRAM: return &m_program_config;
|
||||
case AS_IO: return &m_io_config;
|
||||
case AS_DATA: return &m_program16_config;
|
||||
case AS_3: return &m_io16_config;
|
||||
default: fatalerror("isa: invalid memory space!\n");
|
||||
case AS_IO: return &m_io_config;
|
||||
case AS_DATA: return &m_program16_config;
|
||||
case AS_3: return &m_io16_config;
|
||||
default: fatalerror("isa: invalid memory space!\n");
|
||||
}
|
||||
}
|
||||
|
||||
void install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler);
|
||||
template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map, device_t &device), int bits = 8, UINT64 unitmask = U64(0xffffffffffffffff))
|
||||
template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map, device_t &device), int bits = 8, UINT64 unitmask = U64(0xffffffffffffffff))
|
||||
{
|
||||
m_iospace->install_device(addrstart, addrend, device, map, bits, unitmask);
|
||||
m_iospace->install_device(addrstart, addrend, device, map, bits, unitmask);
|
||||
}
|
||||
void install_bank(offs_t start, offs_t end, offs_t mask, offs_t mirror, const char *tag, UINT8 *data);
|
||||
void install_rom(device_t *dev, offs_t start, offs_t end, offs_t mask, offs_t mirror, const char *tag, const char *region);
|
||||
@ -331,15 +331,15 @@ public:
|
||||
void install16_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read16_delegate rhandler, write16_delegate whandler);
|
||||
|
||||
// for ISA16, put the 16-bit configs in the primary slots and the 8-bit configs in the secondary
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const
|
||||
{
|
||||
virtual const address_space_config *memory_space_config(address_spacenum spacenum) const
|
||||
{
|
||||
switch (spacenum)
|
||||
{
|
||||
case AS_PROGRAM: return &m_program16_config;
|
||||
case AS_IO: return &m_io16_config;
|
||||
case AS_DATA: return &m_program_config;
|
||||
case AS_3: return &m_io_config;
|
||||
default: fatalerror("isa: invalid memory space!\n");
|
||||
case AS_IO: return &m_io16_config;
|
||||
case AS_DATA: return &m_program_config;
|
||||
case AS_3: return &m_io_config;
|
||||
default: fatalerror("isa: invalid memory space!\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ WRITE_LINE_MEMBER(isa8_mda_device::pc_cpu_line)
|
||||
MACHINE_CONFIG_FRAGMENT( pcvideo_mda )
|
||||
MCFG_SCREEN_ADD( MDA_SCREEN_NAME, RASTER)
|
||||
MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 )
|
||||
MCFG_SCREEN_UPDATE_DEVICE( MDA_MC6845_NAME, mc6845_device, screen_update )
|
||||
MCFG_SCREEN_UPDATE_DEVICE( MDA_MC6845_NAME, mc6845_device, screen_update )
|
||||
|
||||
MCFG_PALETTE_ADD( "palette", 4 )
|
||||
|
||||
|
@ -39,7 +39,7 @@ public:
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_reset();
|
||||
public:
|
||||
int m_framecnt;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
|
||||
Multi Unique FDC
|
||||
Multi Unique FDC
|
||||
|
||||
license: MAME, GPL-2.0+
|
||||
copyright-holders: Dirk Best
|
||||
|
@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
|
||||
Multi Unique FDC
|
||||
Multi Unique FDC
|
||||
|
||||
license: MAME, GPL-2.0+
|
||||
copyright-holders: Dirk Best
|
||||
@ -33,7 +33,7 @@
|
||||
// ======================> mufdc_device
|
||||
|
||||
class mufdc_device : public device_t,
|
||||
public device_isa8_card_interface
|
||||
public device_isa8_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -3,9 +3,9 @@
|
||||
*
|
||||
* Created on: August 30, 2010
|
||||
* Author: Hans Ostermeyer
|
||||
*
|
||||
*
|
||||
* Converted to ISA device by R. Belmont
|
||||
*
|
||||
*
|
||||
* Released for general non-commercial use under the MAME license
|
||||
* Visit http://mamedev.org for licensing and usage restrictions.
|
||||
*
|
||||
@ -72,7 +72,7 @@ protected:
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
|
||||
void omti_disk_config(UINT16 disk_type);
|
||||
public:
|
||||
UINT16 m_type;
|
||||
@ -288,7 +288,7 @@ void omti8621_device::device_start()
|
||||
sector_buffer.resize(OMTI_DISK_SECTOR_SIZE*OMTI_MAX_BLOCK_COUNT);
|
||||
|
||||
m_timer = timer_alloc(0, NULL);
|
||||
|
||||
|
||||
our_disks[0] = subdevice<omti_disk_image_device>(OMTI_DISK0_TAG);
|
||||
our_disks[1] = subdevice<omti_disk_image_device>(OMTI_DISK1_TAG);
|
||||
}
|
||||
@ -388,7 +388,7 @@ void omti8621_device::device_config_complete()
|
||||
set_interrupt - update the IRQ state
|
||||
-------------------------------------------------*/
|
||||
|
||||
void omti8621_device::set_interrupt(enum line_state line_state)
|
||||
void omti8621_device::set_interrupt(enum line_state line_state)
|
||||
{
|
||||
LOG2(("set_interrupt: status_port=%x, line_state %d", status_port, line_state));
|
||||
m_isa->irq14_w(line_state);
|
||||
@ -396,7 +396,7 @@ void omti8621_device::set_interrupt(enum line_state line_state)
|
||||
|
||||
void omti8621_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
set_interrupt(ASSERT_LINE);
|
||||
set_interrupt(ASSERT_LINE);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
@ -525,7 +525,7 @@ UINT32 omti8621_device::get_disk_address(const UINT8 * cdb) {
|
||||
set_data_transfer - setup for data transfer from/to data
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::set_data_transfer(UINT8 *data, UINT16 length)
|
||||
void omti8621_device::set_data_transfer(UINT8 *data, UINT16 length)
|
||||
{
|
||||
// set controller for read data transfer
|
||||
omti_state = OMTI_STATE_DATA;
|
||||
@ -541,7 +541,7 @@ void omti8621_device::set_data_transfer(UINT8 *data, UINT16 length)
|
||||
read_sectors_from_disk - read sectors starting at diskaddr into sector_buffer
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::read_sectors_from_disk(INT32 diskaddr, UINT8 count, UINT8 lun)
|
||||
void omti8621_device::read_sectors_from_disk(INT32 diskaddr, UINT8 count, UINT8 lun)
|
||||
{
|
||||
UINT8 *data_buffer = sector_buffer;
|
||||
device_image_interface *image = our_disks[lun]->m_image;
|
||||
@ -561,7 +561,7 @@ void omti8621_device::read_sectors_from_disk(INT32 diskaddr, UINT8 count, UINT8
|
||||
write_sectors_to_disk - write sectors starting at diskaddr from sector_buffer
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::write_sectors_to_disk(INT32 diskaddr, UINT8 count, UINT8 lun)
|
||||
void omti8621_device::write_sectors_to_disk(INT32 diskaddr, UINT8 count, UINT8 lun)
|
||||
{
|
||||
UINT8 *data_buffer = sector_buffer;
|
||||
device_image_interface *image = our_disks[lun]->m_image;
|
||||
@ -586,7 +586,7 @@ void omti8621_device::write_sectors_to_disk(INT32 diskaddr, UINT8 count, UINT8 l
|
||||
copy_sectors - copy sectors
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::copy_sectors(INT32 dst_addr, INT32 src_addr, UINT8 count, UINT8 lun)
|
||||
void omti8621_device::copy_sectors(INT32 dst_addr, INT32 src_addr, UINT8 count, UINT8 lun)
|
||||
{
|
||||
device_image_interface *image = our_disks[lun]->m_image;
|
||||
|
||||
@ -613,7 +613,7 @@ void omti8621_device::copy_sectors(INT32 dst_addr, INT32 src_addr, UINT8 count,
|
||||
format track - format a track
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::format_track(const UINT8 * cdb)
|
||||
void omti8621_device::format_track(const UINT8 * cdb)
|
||||
{
|
||||
UINT8 lun = get_lun(cdb);
|
||||
UINT32 disk_addr = get_disk_address(cdb);
|
||||
@ -668,7 +668,7 @@ void omti8621_device::set_esdi_defect_list(UINT8 lun, UINT8 head)
|
||||
log_command - log command from a command descriptor block
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::log_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
void omti8621_device::log_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
{
|
||||
if (verbose > 0) {
|
||||
int i;
|
||||
@ -767,7 +767,7 @@ void omti8621_device::log_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
log_data - log data in the common data buffer
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::log_data()
|
||||
void omti8621_device::log_data()
|
||||
{
|
||||
if (verbose > 0) {
|
||||
int i;
|
||||
@ -788,7 +788,7 @@ void omti8621_device::log_data()
|
||||
do_command
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::do_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
void omti8621_device::do_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
{
|
||||
UINT8 lun = get_lun(cdb);
|
||||
omti_disk_image_device *disk = our_disks[lun];
|
||||
@ -943,11 +943,11 @@ void omti8621_device::do_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
// LOG(("do_command: UNEXPECTED omti_state %02x",omti_state));
|
||||
// }
|
||||
status_port |= OMTI_STATUS_IREQ;
|
||||
if (command_duration == 0)
|
||||
if (command_duration == 0)
|
||||
{
|
||||
set_interrupt(ASSERT_LINE);
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: should delay omti_state and status_port as well
|
||||
m_timer->adjust(attotime::from_msec(command_duration), 0);
|
||||
@ -959,7 +959,7 @@ void omti8621_device::do_command(const UINT8 cdb[], const UINT16 cdb_length)
|
||||
get_command_length
|
||||
***************************************************************************/
|
||||
|
||||
UINT8 omti8621_device::get_command_length(UINT8 command_byte)
|
||||
UINT8 omti8621_device::get_command_length(UINT8 command_byte)
|
||||
{
|
||||
return command_byte == OMTI_CMD_COPY ? 10 : 6;
|
||||
}
|
||||
@ -968,7 +968,7 @@ UINT8 omti8621_device::get_command_length(UINT8 command_byte)
|
||||
get_data
|
||||
***************************************************************************/
|
||||
|
||||
UINT16 omti8621_device::get_data()
|
||||
UINT16 omti8621_device::get_data()
|
||||
{
|
||||
UINT16 data = 0xff;
|
||||
if (data_index < data_length) {
|
||||
@ -989,7 +989,7 @@ UINT16 omti8621_device::get_data()
|
||||
set_data
|
||||
***************************************************************************/
|
||||
|
||||
void omti8621_device::set_data(UINT16 data)
|
||||
void omti8621_device::set_data(UINT16 data)
|
||||
{
|
||||
if (data_index < data_length) {
|
||||
data_buffer[data_index++] = data >> 8;
|
||||
@ -1008,7 +1008,7 @@ void omti8621_device::set_data(UINT16 data)
|
||||
|
||||
WRITE16_MEMBER(omti8621_device::write)
|
||||
{
|
||||
switch (mem_mask)
|
||||
switch (mem_mask)
|
||||
{
|
||||
case 0x00ff:
|
||||
write8(space, offset*2+1, data, mem_mask);
|
||||
@ -1026,7 +1026,7 @@ WRITE16_MEMBER(omti8621_device::write)
|
||||
|
||||
WRITE8_MEMBER(omti8621_device::write8)
|
||||
{
|
||||
switch (offset)
|
||||
switch (offset)
|
||||
{
|
||||
case OMTI_PORT_DATA_OUT: // 0x00
|
||||
switch (omti_state) {
|
||||
@ -1120,7 +1120,7 @@ WRITE8_MEMBER(omti8621_device::write8)
|
||||
|
||||
READ16_MEMBER(omti8621_device::read)
|
||||
{
|
||||
switch (mem_mask)
|
||||
switch (mem_mask)
|
||||
{
|
||||
case 0x00ff:
|
||||
return read8(space, offset*2+1, mem_mask);
|
||||
@ -1138,10 +1138,10 @@ READ8_MEMBER(omti8621_device::read8)
|
||||
|
||||
switch (offset) {
|
||||
case OMTI_PORT_DATA_IN: // 0x00
|
||||
if (status_port & OMTI_STATUS_CD)
|
||||
if (status_port & OMTI_STATUS_CD)
|
||||
{
|
||||
data = command_status;
|
||||
switch (omti_state)
|
||||
switch (omti_state)
|
||||
{
|
||||
case OMTI_STATE_COMMAND:
|
||||
LOG2(("reading OMTI 8621 Data Status Register 1 at offset %02x = %02x (omti state = %02x)", offset, data, omti_state));
|
||||
@ -1155,8 +1155,8 @@ READ8_MEMBER(omti8621_device::read8)
|
||||
LOG(("UNEXPECTED reading OMTI 8621 Data Status Register 3 at offset %02x = %02x (omti state = %02x)", offset, data, omti_state));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG(("UNEXPECTED reading OMTI 8621 Data Register 4 at offset %02x = %02x (status bit C/D = 0)", offset, data));
|
||||
}
|
||||
@ -1165,7 +1165,7 @@ READ8_MEMBER(omti8621_device::read8)
|
||||
case OMTI_PORT_STATUS: // 0x01
|
||||
data = status_port;
|
||||
// omit excessive logging
|
||||
if (data != last_data)
|
||||
if (data != last_data)
|
||||
{
|
||||
LOG2(("reading OMTI 8621 Status Register 5 at offset %02x = %02x", offset, data));
|
||||
// last_data = data;
|
||||
@ -1342,7 +1342,7 @@ void omti_disk_image_device::device_start()
|
||||
-------------------------------------------------*/
|
||||
|
||||
void omti_disk_image_device::device_reset()
|
||||
{
|
||||
{
|
||||
LOG1(("device_reset_omti_disk"));
|
||||
|
||||
if (exists() && fseek(0, SEEK_END) == 0)
|
||||
@ -1379,4 +1379,3 @@ bool omti_disk_image_device::call_create(int format_type, option_resolution *for
|
||||
}
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,8 @@
|
||||
* omti8621.h - SMS OMTI 8621 disk controller
|
||||
*
|
||||
* Created on: August 30, 2010
|
||||
* Author: Hans Ostermeyer
|
||||
*
|
||||
* Author: Hans Ostermeyer
|
||||
*
|
||||
* Converted to ISA device March 3, 2014 by R. Belmont
|
||||
*
|
||||
* Released for general non-commercial use under the MAME license
|
||||
@ -28,7 +28,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
class omti_disk_image_device;
|
||||
|
||||
|
||||
/* ----- device interface ----- */
|
||||
|
||||
class omti8621_device : public device_t, public device_isa16_card_interface
|
||||
|
@ -47,12 +47,10 @@ void isa8_pds_device::device_start()
|
||||
|
||||
void isa8_pds_device::device_reset()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void isa8_pds_device::device_stop()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
I8255_INTERFACE(pds_ppi_intf)
|
||||
@ -73,4 +71,3 @@ machine_config_constructor isa8_pds_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( pds_config );
|
||||
}
|
||||
|
||||
|
@ -1190,7 +1190,7 @@ void isa8_sblaster1_0_device::device_start()
|
||||
set_isa_device();
|
||||
// 1.0 always has the SAA1099s for CMS back-compatibility
|
||||
m_isa->install_device(0x0220, 0x0221, 0, 0, read8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_1_16_w), this ) );
|
||||
m_isa->install_device(0x0222, 0x0223, 0, 0, read8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_2_16_w), this ) );
|
||||
m_isa->install_device(0x0222, 0x0223, 0, 0, read8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_2_16_w), this ) );
|
||||
m_isa->set_dma_channel(1, this, FALSE);
|
||||
m_dsp.version = 0x0105;
|
||||
sb8_device::device_start();
|
||||
|
@ -157,17 +157,17 @@ class sb8_device : public sb_device,
|
||||
public:
|
||||
// construction/destruction
|
||||
sb8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, UINT32 clock, const char *name, const char *shortname, const char *source);
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(ym3812_16_r);
|
||||
DECLARE_WRITE8_MEMBER(ym3812_16_w);
|
||||
DECLARE_WRITE8_MEMBER(ym3812_16_w);
|
||||
protected:
|
||||
virtual void device_start();
|
||||
virtual void drq_w(int state) { m_isa->drq1_w(state); }
|
||||
virtual void irq_w(int state, int source) { m_isa->irq5_w(state); }
|
||||
virtual UINT8 dack_r(int line) { return sb_device::dack_r(line); }
|
||||
virtual void dack_w(int line, UINT8 data) { sb_device::dack_w(line, data); }
|
||||
private:
|
||||
required_device<ym3812_device> m_ym3812;
|
||||
private:
|
||||
required_device<ym3812_device> m_ym3812;
|
||||
};
|
||||
|
||||
class isa8_sblaster1_0_device : public sb8_device
|
||||
@ -189,7 +189,7 @@ private:
|
||||
// internal state
|
||||
required_device<saa1099_device> m_saa1099_1;
|
||||
required_device<saa1099_device> m_saa1099_2;
|
||||
|
||||
|
||||
};
|
||||
|
||||
class isa8_sblaster1_5_device : public sb8_device
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
* sc499.c - ARCHIVE SC-499 cartridge tape controller (for Apollo DN3x00)
|
||||
* Created on: April 17, 2011
|
||||
* Author: Hans Ostermeyer
|
||||
* ISA conversion by R. Belmont
|
||||
* Author: Hans Ostermeyer
|
||||
* ISA conversion by R. Belmont
|
||||
*
|
||||
* Released for general non-commercial use under the MAME license
|
||||
* Visit http://mamedev.org for licensing and usage restrictions.
|
||||
@ -636,7 +636,7 @@ void sc499_device::set_interrupt(enum line_state state)
|
||||
{
|
||||
if (state != irq_state)
|
||||
{
|
||||
LOG2(("set_interrupt(%d)",state));
|
||||
LOG2(("set_interrupt(%d)",state));
|
||||
switch (m_irq)
|
||||
{
|
||||
case 2: m_isa->irq2_w(state); break;
|
||||
@ -659,7 +659,7 @@ void sc499_device::set_dma_drq(enum line_state state)
|
||||
{
|
||||
if (state != dma_drq_state)
|
||||
{
|
||||
LOG2(("set_dma_drq(%d)",state));
|
||||
LOG2(("set_dma_drq(%d)",state));
|
||||
|
||||
switch (m_drq)
|
||||
{
|
||||
@ -668,7 +668,7 @@ void sc499_device::set_dma_drq(enum line_state state)
|
||||
case 3: m_isa->drq3_w(state); break;
|
||||
default: logerror("sc499: invalid DRQ %d\n", m_drq); break;
|
||||
}
|
||||
|
||||
|
||||
dma_drq_state = state;
|
||||
}
|
||||
}
|
||||
@ -1115,7 +1115,7 @@ UINT8 sc499_device::dack_r(int line)
|
||||
return data;
|
||||
}
|
||||
|
||||
void sc499_device::dack_w(int line, UINT8 data)
|
||||
void sc499_device::dack_w(int line, UINT8 data)
|
||||
{
|
||||
LOG3(("dack_write: data=%x", data));
|
||||
|
||||
@ -1311,4 +1311,3 @@ void sc499_ctape_image_device::device_config_complete()
|
||||
{
|
||||
update_names(SC499_CTAPE, "ctape", "ct");
|
||||
};
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
// ======================> side116_device
|
||||
|
||||
class side116_device : public device_t,
|
||||
public device_isa8_card_interface
|
||||
public device_isa8_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
|
@ -1,6 +1,6 @@
|
||||
/**********************************************************************
|
||||
|
||||
Megadrive carts
|
||||
Megadrive carts
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
@ -466,7 +466,7 @@ int base_md_cart_slot_device::load_nonlist()
|
||||
bool is_smd, is_md;
|
||||
UINT32 tmplen = length(), offset, len;
|
||||
dynamic_buffer tmpROM(tmplen);
|
||||
|
||||
|
||||
// STEP 1: store a (possibly headered) copy of the file and determine its type (SMD? MD? BIN?)
|
||||
fread(tmpROM, tmplen);
|
||||
is_smd = genesis_is_SMD(&tmpROM[0x200], tmplen - 0x200);
|
||||
|
@ -7,7 +7,7 @@
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
|
||||
Here we emulate the Multi-Discrete PCB designed by Tepples for
|
||||
Here we emulate the Multi-Discrete PCB designed by Tepples for
|
||||
this homebew multicart [mapper 28]
|
||||
|
||||
***********************************************************************************************************/
|
||||
@ -67,23 +67,23 @@ void nes_action53_device::pcb_reset()
|
||||
|
||||
Board ACTION 53
|
||||
|
||||
In MESS: *VERY* preliminary support.
|
||||
|
||||
In MESS: *VERY* preliminary support.
|
||||
|
||||
This board uses 4 registers (reg is selected by writes to 0x5xxx)
|
||||
Info from nesdev wiki
|
||||
|
||||
|
||||
R:$00: [...M ..CC]
|
||||
C = CHR Reg
|
||||
M = Mirroring
|
||||
This bit overwrites bit 0 of R:$80, but only if bit 1 of
|
||||
R:$80 is clear
|
||||
|
||||
|
||||
R:$01: [...M PPPP]
|
||||
P = PRG Reg
|
||||
M = Mirroring
|
||||
This bit overwrites bit 0 of R:$80, but only if bit 1 of
|
||||
R:$80 is clear
|
||||
|
||||
|
||||
R:$80: [..GG PSMM]
|
||||
G = Game Size (0=32K, 1=64K, 2=128K, 3=256K)
|
||||
P = PRG Size (0=32k mode, 1=16k mode)
|
||||
@ -106,9 +106,9 @@ void nes_action53_device::pcb_reset()
|
||||
void nes_action53_device::update_prg()
|
||||
{
|
||||
UINT8 prg_lo = 0, prg_hi = 0, helper = 0;
|
||||
UINT8 out = (m_reg[3] & 0x3f) << 1; // Outer PRG reg
|
||||
UINT8 size = (m_reg[2] & 0x30) >> 4; // Game size
|
||||
UINT8 mask = (1 << (size + 1)) - 1; // Bits to be taken from PRG reg
|
||||
UINT8 out = (m_reg[3] & 0x3f) << 1; // Outer PRG reg
|
||||
UINT8 size = (m_reg[2] & 0x30) >> 4; // Game size
|
||||
UINT8 mask = (1 << (size + 1)) - 1; // Bits to be taken from PRG reg
|
||||
|
||||
if (!BIT(m_reg[2], 3))
|
||||
{
|
||||
@ -134,7 +134,7 @@ void nes_action53_device::update_prg()
|
||||
}
|
||||
}
|
||||
|
||||
// printf("banks : 0x%2X - 0x%2X\n", prg_lo, prg_hi);
|
||||
// printf("banks : 0x%2X - 0x%2X\n", prg_lo, prg_hi);
|
||||
prg16_89ab(prg_lo);
|
||||
prg16_cdef(prg_hi);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
//----------------------------------
|
||||
//
|
||||
// Aladdin Cartslot implementation
|
||||
// Aladdin Cartslot implementation
|
||||
//
|
||||
//----------------------------------
|
||||
|
||||
@ -52,7 +52,7 @@ aladdin_cart_interface::~aladdin_cart_interface()
|
||||
}
|
||||
|
||||
READ8_MEMBER(aladdin_cart_interface::read)
|
||||
{
|
||||
{
|
||||
if (offset < 0x4000)
|
||||
return m_rom[(m_lobank * 0x4000) + (offset & 0x3fff)];
|
||||
else
|
||||
@ -86,7 +86,7 @@ READ8_MEMBER(nes_aladdin_slot_device::read)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read(space, offset, mem_mask);
|
||||
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -100,18 +100,18 @@ bool nes_aladdin_slot_device::call_load()
|
||||
|
||||
if (!ROM)
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
|
||||
if (software_entry() == NULL)
|
||||
{
|
||||
if (length() != 0x20010 && length() != 0x40010)
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
|
||||
UINT8 temp[0x40010];
|
||||
size = length() - 0x10;
|
||||
fread(&temp, length());
|
||||
memcpy(ROM, temp + 0x10, size);
|
||||
|
||||
// double check that iNES files are really mapper 71 or 232
|
||||
|
||||
// double check that iNES files are really mapper 71 or 232
|
||||
{
|
||||
UINT8 mapper = (temp[6] & 0xf0) >> 4;
|
||||
mapper |= temp[7] & 0xf0;
|
||||
@ -123,14 +123,14 @@ bool nes_aladdin_slot_device::call_load()
|
||||
{
|
||||
if (get_software_region_length("rom") != 0x20000 && get_software_region_length("rom") != 0x40000)
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
|
||||
size = get_software_region_length("rom");
|
||||
memcpy(ROM, get_software_region("rom"), size);
|
||||
}
|
||||
|
||||
m_cart->set_cart_size(size);
|
||||
}
|
||||
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
@ -149,19 +149,19 @@ void nes_aladdin_slot_device::get_default_card_software(astring &result)
|
||||
UINT32 len = core_fsize(m_file);
|
||||
dynamic_buffer rom(len);
|
||||
UINT8 mapper;
|
||||
|
||||
|
||||
core_fread(m_file, rom, len);
|
||||
|
||||
mapper = (rom[6] & 0xf0) >> 4;
|
||||
mapper |= rom[7] & 0xf0;
|
||||
|
||||
// if (mapper == 71)
|
||||
// slot_string = "algn";
|
||||
// if (mapper == 71)
|
||||
// slot_string = "algn";
|
||||
if (mapper == 232)
|
||||
slot_string = "algq";
|
||||
|
||||
clear();
|
||||
|
||||
|
||||
result.cpy(slot_string);
|
||||
}
|
||||
else
|
||||
@ -171,7 +171,7 @@ void nes_aladdin_slot_device::get_default_card_software(astring &result)
|
||||
|
||||
//----------------------------------
|
||||
//
|
||||
// Aladdin Minicart implementation
|
||||
// Aladdin Minicart implementation
|
||||
//
|
||||
//----------------------------------
|
||||
|
||||
@ -262,7 +262,7 @@ void nes_algq_rom_device::write_prg(UINT32 offset, UINT8 data)
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Camerica/Codemasters Aladdin passthru
|
||||
// Camerica/Codemasters Aladdin passthru
|
||||
// implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
@ -295,7 +295,7 @@ void nes_aladdin_device::pcb_reset()
|
||||
/*-------------------------------------------------
|
||||
|
||||
Camerica/Codemasters Aladdin Deck Enhancer
|
||||
|
||||
|
||||
iNES: mapper 71 & 232
|
||||
|
||||
In MESS: Supported (but timing issues in some games)
|
||||
@ -307,10 +307,10 @@ READ8_MEMBER(nes_aladdin_device::read_h)
|
||||
LOG_MMC(("aladdin read_h, offset: %04x\n", offset));
|
||||
// this shall be the proper code, but it's a bit slower, so we access directly the subcart below
|
||||
//return m_subslot->read(space, offset, mem_mask);
|
||||
|
||||
|
||||
if (m_subslot->m_cart)
|
||||
return m_subslot->m_cart->read(space, offset, mem_mask);
|
||||
else // this is "fake" in the sense that we fill CPU space with 0xff if no Aladdin cart is loaded
|
||||
else // this is "fake" in the sense that we fill CPU space with 0xff if no Aladdin cart is loaded
|
||||
return hi_access_rom(offset);
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
//----------------------------------
|
||||
//
|
||||
// Aladdin Cartslot implementation
|
||||
// Aladdin Cartslot implementation
|
||||
//
|
||||
//----------------------------------
|
||||
|
||||
@ -18,14 +18,14 @@ public:
|
||||
// construction/destruction
|
||||
aladdin_cart_interface(const machine_config &mconfig, device_t &device);
|
||||
virtual ~aladdin_cart_interface();
|
||||
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read);
|
||||
|
||||
|
||||
UINT8 *get_cart_base() { return m_rom; }
|
||||
void set_cart_size(UINT32 size) { m_rom_size = size; m_rom_mask = (size / 0x4000) - 1; }
|
||||
virtual void write_prg(UINT32 offset, UINT8 data) { }
|
||||
|
||||
|
||||
protected:
|
||||
// internal state
|
||||
UINT8 *m_rom;
|
||||
@ -43,15 +43,15 @@ public:
|
||||
// construction/destruction
|
||||
nes_aladdin_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
virtual ~nes_aladdin_slot_device();
|
||||
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_config_complete() { update_names(); }
|
||||
|
||||
|
||||
// image-level overrides
|
||||
virtual bool call_load();
|
||||
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
|
||||
|
||||
|
||||
virtual iodevice_t image_type() const { return IO_CARTSLOT; }
|
||||
virtual bool is_readable() const { return 1; }
|
||||
virtual bool is_writeable() const { return 0; }
|
||||
@ -61,13 +61,13 @@ public:
|
||||
virtual const char *image_interface() const { return "ade_cart"; }
|
||||
virtual const char *file_extensions() const { return "nes,bin"; }
|
||||
virtual const option_guide *create_option_guide() const { return NULL; }
|
||||
|
||||
|
||||
// slot interface overrides
|
||||
virtual void get_default_card_software(astring &result);
|
||||
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(read);
|
||||
void write_prg(UINT32 offset, UINT8 data) { if (m_cart) m_cart->write_prg(offset, data); }
|
||||
|
||||
|
||||
aladdin_cart_interface* m_cart;
|
||||
};
|
||||
|
||||
@ -82,7 +82,7 @@ extern const device_type NES_ALADDIN_SLOT;
|
||||
|
||||
//----------------------------------
|
||||
//
|
||||
// Aladdin Minicart implementation
|
||||
// Aladdin Minicart implementation
|
||||
//
|
||||
//----------------------------------
|
||||
|
||||
@ -95,12 +95,12 @@ public:
|
||||
// construction/destruction
|
||||
nes_algn_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
|
||||
nes_algn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual UINT8* get_cart_base();
|
||||
virtual void write_prg(UINT32 offset, UINT8 data);
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
@ -115,7 +115,7 @@ class nes_algq_rom_device : public nes_algn_rom_device
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_algq_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
// optional information overrides
|
||||
virtual void write_prg(UINT32 offset, UINT8 data);
|
||||
|
||||
@ -134,7 +134,7 @@ extern const device_type NES_ALGQ_ROM;
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Codemasters Aladdin passthru implementation
|
||||
// Codemasters Aladdin passthru implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
|
@ -19,11 +19,11 @@
|
||||
* Bandai Datach Joint ROM System [mapper 157] is emulated in a separate source file
|
||||
to implement also the subslot, but the PCB is basically a Bandai LZ93D50 + 24C02 EEPROM
|
||||
pcb with added barcode reader and subslot
|
||||
|
||||
|
||||
* Bandai Karaoke Studio [mapper 188] is emulated in a separate source file
|
||||
to implement also the subslot and the mic inputs
|
||||
|
||||
|
||||
|
||||
|
||||
TODO:
|
||||
- investigate why EEPROM does not work
|
||||
- add support to the PPU for the code necessary to Oeka Kids games (also needed by UNL-DANCE2000 PCB)
|
||||
|
@ -38,7 +38,7 @@ public:
|
||||
// construction/destruction
|
||||
nes_fcg_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
|
||||
nes_fcg_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
@ -46,11 +46,11 @@ public:
|
||||
virtual DECLARE_WRITE8_MEMBER(write_m);
|
||||
|
||||
virtual void pcb_reset();
|
||||
|
||||
|
||||
protected:
|
||||
UINT16 m_irq_count;
|
||||
int m_irq_enable;
|
||||
|
||||
|
||||
static const device_timer_id TIMER_IRQ = 0;
|
||||
emu_timer *irq_timer;
|
||||
};
|
||||
|
@ -13,10 +13,10 @@
|
||||
* Camerica BF9096 Boards [mapper 232]
|
||||
* Camerica Golden Five [mapper 104]
|
||||
|
||||
Aladdin Deck Enhancer pass-thru cart and the corresponding minicarts
|
||||
Aladdin Deck Enhancer pass-thru cart and the corresponding minicarts
|
||||
(ALGNV11 & ALGQV11 PCBs) are emulated in a separate source file.
|
||||
|
||||
|
||||
|
||||
TODO:
|
||||
- check what causes flickering from PPU in Fire Hawk, Poogie and Big Nose (same PPU issue as Back to
|
||||
Future 2&3?)
|
||||
@ -189,7 +189,7 @@ WRITE8_MEMBER(nes_bf9096_device::write_h)
|
||||
{
|
||||
m_latch = data & 3;
|
||||
prg16_89ab(m_bank_base | m_latch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
//--------------------------------
|
||||
//
|
||||
// Datach Cartslot implementation
|
||||
// Datach Cartslot implementation
|
||||
//
|
||||
//--------------------------------
|
||||
|
||||
@ -55,7 +55,7 @@ datach_cart_interface::~datach_cart_interface()
|
||||
}
|
||||
|
||||
READ8_MEMBER(datach_cart_interface::read)
|
||||
{
|
||||
{
|
||||
if (offset < 0x4000)
|
||||
return m_rom[(m_bank * 0x4000) + (offset & 0x3fff)];
|
||||
else
|
||||
@ -113,7 +113,7 @@ bool nes_datach_slot_device::call_load()
|
||||
fread(&temp, length());
|
||||
memcpy(ROM, temp + shift, 0x40000);
|
||||
|
||||
// double check that iNES files are really mapper 157
|
||||
// double check that iNES files are really mapper 157
|
||||
// (or 16, since some older .nes files marked Datach as mapper 16)
|
||||
if (length() == 0x40010)
|
||||
{
|
||||
@ -153,7 +153,7 @@ void nes_datach_slot_device::get_default_card_software(astring &result)
|
||||
|
||||
//--------------------------------
|
||||
//
|
||||
// Datach Minicart implementation
|
||||
// Datach Minicart implementation
|
||||
//
|
||||
// Two kinds of PCB exist
|
||||
// * ROM only, used by most games
|
||||
@ -221,7 +221,7 @@ machine_config_constructor nes_datach_24c01_device::device_mconfig_additions() c
|
||||
|
||||
//---------------------------------
|
||||
//
|
||||
// Datach Base Unit implementation
|
||||
// Datach Base Unit implementation
|
||||
//
|
||||
//---------------------------------
|
||||
|
||||
@ -244,7 +244,7 @@ void nes_datach_device::device_start()
|
||||
serial_timer = timer_alloc(TIMER_SERIAL);
|
||||
irq_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1));
|
||||
serial_timer->adjust(attotime::zero, 0, machine().device<cpu_device>("maincpu")->cycles_to_attotime(1000));
|
||||
|
||||
|
||||
save_item(NAME(m_irq_enable));
|
||||
save_item(NAME(m_irq_count));
|
||||
save_item(NAME(m_datach_latch));
|
||||
@ -256,7 +256,7 @@ void nes_datach_device::pcb_reset()
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(m_prg_chunks - 1);
|
||||
chr8(0, m_chr_source);
|
||||
|
||||
|
||||
m_irq_enable = 0;
|
||||
m_irq_count = 0;
|
||||
m_datach_latch = 0;
|
||||
@ -269,27 +269,27 @@ void nes_datach_device::pcb_reset()
|
||||
-------------------------------------------------*/
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
|
||||
Bandai LZ93D50 + Datach barcode reader emulation
|
||||
|
||||
|
||||
Games: Datach Games
|
||||
|
||||
|
||||
iNES: mappers 157
|
||||
|
||||
|
||||
In MESS: Supported
|
||||
|
||||
|
||||
TODO: Datach carts should actually be handled
|
||||
separately! Original carts were minicarts to be
|
||||
inserted in a smaller slot of the Barcode reader
|
||||
FC cart. The Barcode reader acts as a passthrough
|
||||
but it has no internal ROM (it does not work if
|
||||
you don't have any minicart inserted)
|
||||
|
||||
TODO2: This class should be derived from the
|
||||
|
||||
TODO2: This class should be derived from the
|
||||
LZ93D50 + X24C02 class, since the main board
|
||||
has this EEPROM. Moreover, Datach - Battle Rush
|
||||
has this EEPROM. Moreover, Datach - Battle Rush
|
||||
has a second X24C01 EEPROM that we don't emulate yet...
|
||||
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
|
||||
@ -318,14 +318,14 @@ READ8_MEMBER(nes_datach_device::read_h)
|
||||
|
||||
if (m_subslot->m_cart)
|
||||
return m_subslot->m_cart->read(space, offset, mem_mask);
|
||||
else // this is "fake" in the sense that we fill CPU space with 0xff if no Datach cart is loaded
|
||||
else // this is "fake" in the sense that we fill CPU space with 0xff if no Datach cart is loaded
|
||||
return hi_access_rom(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nes_datach_device::write_h)
|
||||
{
|
||||
LOG_MMC(("Datach write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
|
||||
switch (offset & 0x0f)
|
||||
{
|
||||
case 0: case 1: case 2: case 3:
|
||||
@ -406,7 +406,7 @@ void nes_datach_device::device_timer(emu_timer &timer, device_timer_id id, int p
|
||||
m_irq_count = 0xffff;
|
||||
else
|
||||
m_irq_count--;
|
||||
|
||||
|
||||
if (!m_irq_count)
|
||||
{
|
||||
machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
//--------------------------------
|
||||
//
|
||||
// Datach Cartslot implementation
|
||||
// Datach Cartslot implementation
|
||||
//
|
||||
//--------------------------------
|
||||
|
||||
@ -84,7 +84,7 @@ extern const device_type NES_DATACH_SLOT;
|
||||
|
||||
//--------------------------------
|
||||
//
|
||||
// Datach Minicart implementation
|
||||
// Datach Minicart implementation
|
||||
//
|
||||
//--------------------------------
|
||||
|
||||
@ -127,7 +127,7 @@ extern const device_type NES_DATACH_24C01;
|
||||
|
||||
//---------------------------------
|
||||
//
|
||||
// Datach Base Unit implementation
|
||||
// Datach Base Unit implementation
|
||||
//
|
||||
//---------------------------------
|
||||
|
||||
@ -138,7 +138,7 @@ class nes_datach_device : public nes_lz93d50_device
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_datach_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
@ -146,17 +146,17 @@ public:
|
||||
virtual DECLARE_READ8_MEMBER(read_m);
|
||||
virtual DECLARE_READ8_MEMBER(read_h);
|
||||
virtual DECLARE_WRITE8_MEMBER(write_h);
|
||||
|
||||
|
||||
virtual void pcb_reset();
|
||||
|
||||
|
||||
protected:
|
||||
UINT8 m_datach_latch;
|
||||
required_device<i2cmem_device> m_i2cmem;
|
||||
required_device<barcode_reader_device> m_reader;
|
||||
required_device<barcode_reader_device> m_reader;
|
||||
required_device<nes_datach_slot_device> m_subslot;
|
||||
UINT8 m_i2c_dir;
|
||||
UINT8 m_i2c_in_use;
|
||||
|
||||
|
||||
static const device_timer_id TIMER_SERIAL = 1;
|
||||
emu_timer *serial_timer;
|
||||
};
|
||||
|
@ -310,13 +310,13 @@ void nes_jy_typea_device::update_prg()
|
||||
prg32((last & 0x0f) | (exPrg >> 2));
|
||||
m_bank_6000 = (((m_mmc_prg_bank[3] * 4) + 3) & 0x3f) | (exPrg >> 2);
|
||||
break;
|
||||
|
||||
|
||||
case 1: // 16KB
|
||||
prg16_89ab((m_mmc_prg_bank[1] & 0x1f) | (exPrg >> 1));
|
||||
prg16_cdef((last & 0x1f) | (exPrg >> 1));
|
||||
m_bank_6000 = (((m_mmc_prg_bank[3] * 2) + 1) & 0x1f) | (exPrg >> 1);
|
||||
break;
|
||||
|
||||
|
||||
case 2: // 8KB
|
||||
prg8_89(m_mmc_prg_bank[0] | exPrg);
|
||||
prg8_ab(m_mmc_prg_bank[1] | exPrg);
|
||||
@ -324,7 +324,7 @@ void nes_jy_typea_device::update_prg()
|
||||
prg8_ef(last | exPrg);
|
||||
m_bank_6000 = m_mmc_prg_bank[3] | exPrg;
|
||||
break;
|
||||
|
||||
|
||||
case 3: // 8KB Alt
|
||||
prg8_89((unscramble(m_mmc_prg_bank[0]) & 0x3f) | exPrg);
|
||||
prg8_ab((unscramble(m_mmc_prg_bank[1]) & 0x3f) | exPrg);
|
||||
@ -347,12 +347,12 @@ void nes_jy_typea_device::update_chr()
|
||||
// Block mode enabled: in this case lower bits select a 256KB page inside CHRROM
|
||||
// and the low bytes of m_mmc_vrom_bank select the banks inside such a page
|
||||
|
||||
// docs suggest m_reg[3] & 0x1f for chr_page below,
|
||||
// docs suggest m_reg[3] & 0x1f for chr_page below,
|
||||
// but 45 in 1 (JY-120A) menu requires to use this (from NEStopia)
|
||||
UINT8 chr_page = (m_reg[3] & 1) | ((m_reg[3] & 0x18) >> 2);
|
||||
UINT8 chr_page = (m_reg[3] & 1) | ((m_reg[3] & 0x18) >> 2);
|
||||
UINT32 extra_chr_base = BIT(m_reg[3], 5) ? 0 : (chr_page * 0x100);
|
||||
UINT32 extra_chr_mask = BIT(m_reg[3], 5) ? 0xffffff : 0xff;
|
||||
|
||||
|
||||
switch (m_reg[0] & 0x18)
|
||||
{
|
||||
case 0x00: // 8KB
|
||||
@ -360,7 +360,7 @@ void nes_jy_typea_device::update_chr()
|
||||
extra_chr_mask >>= 3;
|
||||
chr8(extra_chr_base | (m_mmc_vrom_bank[0] & extra_chr_mask), m_chr_source);
|
||||
break;
|
||||
|
||||
|
||||
case 0x08: // 4KB
|
||||
extra_chr_base >>= 2;
|
||||
extra_chr_mask >>= 2;
|
||||
@ -369,7 +369,7 @@ void nes_jy_typea_device::update_chr()
|
||||
chr4_0(extra_chr_base | (m_mmc_vrom_bank[m_chr_latch[0]] & extra_chr_mask), m_chr_source);
|
||||
chr4_4(extra_chr_base | (m_mmc_vrom_bank[m_chr_latch[1]] & extra_chr_mask), m_chr_source);
|
||||
break;
|
||||
|
||||
|
||||
case 0x10: // 2KB
|
||||
extra_chr_base >>= 1;
|
||||
extra_chr_mask >>= 1;
|
||||
@ -378,7 +378,7 @@ void nes_jy_typea_device::update_chr()
|
||||
chr2_4(extra_chr_base | (m_mmc_vrom_bank[4] & extra_chr_mask), m_chr_source);
|
||||
chr2_6(extra_chr_base | (m_mmc_vrom_bank[6] & extra_chr_mask), m_chr_source);
|
||||
break;
|
||||
|
||||
|
||||
case 0x18: // 1KB
|
||||
chr1_0(extra_chr_base | (m_mmc_vrom_bank[0] & extra_chr_mask), m_chr_source);
|
||||
chr1_1(extra_chr_base | (m_mmc_vrom_bank[1] & extra_chr_mask), m_chr_source);
|
||||
@ -573,7 +573,7 @@ void nes_jy_typec_device::update_mirror_typec()
|
||||
READ8_MEMBER(nes_jy_typec_device::chr_r)
|
||||
{
|
||||
int bank = offset >> 10;
|
||||
|
||||
|
||||
irq_clock(0, 2);
|
||||
switch (offset & 0xff0)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@ public:
|
||||
virtual DECLARE_READ8_MEMBER(read_m);
|
||||
virtual DECLARE_WRITE8_MEMBER(write_l);
|
||||
virtual DECLARE_WRITE8_MEMBER(write_h);
|
||||
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(chr_r);
|
||||
virtual DECLARE_READ8_MEMBER(nt_r);
|
||||
|
||||
@ -39,7 +39,7 @@ protected:
|
||||
UINT8 m_mul[2];
|
||||
UINT8 m_latch;
|
||||
UINT8 m_reg[4];
|
||||
UINT8 m_chr_latch[2]; // type C uses a more complex CHR 4K mode, and these vars are only changed for those games
|
||||
UINT8 m_chr_latch[2]; // type C uses a more complex CHR 4K mode, and these vars are only changed for those games
|
||||
UINT8 m_mmc_prg_bank[4];
|
||||
UINT16 m_mmc_nt_bank[4];
|
||||
UINT16 m_mmc_vrom_bank[8];
|
||||
|
@ -8,22 +8,22 @@
|
||||
|
||||
|
||||
Here we emulate the following PCBs Bandai Karaoke Studio [mapper 188]
|
||||
|
||||
|
||||
The Karaoke Studio cart consist of a large connector which fits the FC cart slot, with a microphone
|
||||
connected. The game data is in the connector itself. The microphone has two buttons on it, and the
|
||||
game uses these only to navigate through the menus (the two buttons are not read through the controller
|
||||
port, which is not accessible from the cart, but from $6000-$7fff). Part of the connector body can be
|
||||
connected. The game data is in the connector itself. The microphone has two buttons on it, and the
|
||||
game uses these only to navigate through the menus (the two buttons are not read through the controller
|
||||
port, which is not accessible from the cart, but from $6000-$7fff). Part of the connector body can be
|
||||
removed to be replaced by an expansion cart containing new songs (we emulate this by adding a -cart2 slot).
|
||||
|
||||
|
||||
|
||||
TODO:
|
||||
- verify expansion slot emulation for the Senyou Cassettes:
|
||||
not much documentation exists about the expansion carts (except for few paragraphs
|
||||
at Enri's FC webpage), so I implemented it based on "common sense"
|
||||
* expansion carts do not contain the required game data => main PRG must be in the main cart
|
||||
so to remain connected even when an expansion is inserted (differently from Datach, where
|
||||
so to remain connected even when an expansion is inserted (differently from Datach, where
|
||||
the base unit contains no PRG)
|
||||
* bankswicth writes with bit3=0 (to access expansion) when no expansion is present should do
|
||||
* bankswicth writes with bit3=0 (to access expansion) when no expansion is present should do
|
||||
nothing
|
||||
|
||||
***********************************************************************************************************/
|
||||
@ -43,7 +43,7 @@
|
||||
|
||||
//-----------------------------------------
|
||||
//
|
||||
// Karaoke Studio Cartslot implementation
|
||||
// Karaoke Studio Cartslot implementation
|
||||
//
|
||||
//-----------------------------------------
|
||||
|
||||
@ -93,7 +93,7 @@ READ8_MEMBER(nes_kstudio_slot_device::read)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read(space, offset, mem_mask);
|
||||
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -102,27 +102,27 @@ bool nes_kstudio_slot_device::call_load()
|
||||
if (m_cart)
|
||||
{
|
||||
UINT8 *ROM = m_cart->get_cart_base();
|
||||
|
||||
|
||||
if (!ROM)
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
|
||||
// Existing exapnsion carts are all 128K, so we only load files of this size
|
||||
if (software_entry() == NULL)
|
||||
{
|
||||
if (length() != 0x20000)
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
fread(&ROM, 0x20000);
|
||||
|
||||
fread(&ROM, 0x20000);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (get_software_region_length("rom") != 0x20000)
|
||||
return IMAGE_INIT_FAIL;
|
||||
|
||||
|
||||
memcpy(ROM, get_software_region("rom"), 0x20000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ void nes_kstudio_slot_device::get_default_card_software(astring &result)
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Karaoke Studio Expansion cart implementation
|
||||
// Karaoke Studio Expansion cart implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
@ -181,7 +181,7 @@ UINT8 *nes_kstudio_rom_device::get_cart_base()
|
||||
|
||||
//------------------------------------------
|
||||
//
|
||||
// Karaoke Studio Base Cart implementation
|
||||
// Karaoke Studio Base Cart implementation
|
||||
//
|
||||
//------------------------------------------
|
||||
|
||||
@ -220,7 +220,7 @@ void nes_karaokestudio_device::pcb_reset()
|
||||
|
||||
Bandai Karaoke Studio board emulation
|
||||
|
||||
Games: Karaoke Studio + expansion carts with
|
||||
Games: Karaoke Studio + expansion carts with
|
||||
additional songs
|
||||
|
||||
Note: we currently do not emulate properly the
|
||||
@ -260,7 +260,7 @@ WRITE8_MEMBER(nes_karaokestudio_device::write_h)
|
||||
// cart (when expansion is present, code keeps switching both from the expansion rom and from
|
||||
// the main ROM)
|
||||
// my guess is that writes with bit3=0 and no expansion just do nothing, but it shall be verified
|
||||
|
||||
|
||||
if (offset >= 04000)
|
||||
{
|
||||
if (BIT(data, 3))
|
||||
@ -268,7 +268,7 @@ WRITE8_MEMBER(nes_karaokestudio_device::write_h)
|
||||
m_exp_active = 0;
|
||||
prg16_89ab(data & 7);
|
||||
}
|
||||
else // expansion cart
|
||||
else // expansion cart
|
||||
{
|
||||
m_exp_active = 1;
|
||||
m_subslot->write_prg_bank(data & 7);
|
||||
@ -308,4 +308,3 @@ machine_config_constructor nes_karaokestudio_device::device_mconfig_additions()
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( karaoke_studio );
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
//-----------------------------------------
|
||||
//
|
||||
// Karaoke Studio Cartslot implementation
|
||||
// Karaoke Studio Cartslot implementation
|
||||
//
|
||||
//-----------------------------------------
|
||||
|
||||
@ -18,13 +18,13 @@ public:
|
||||
// construction/destruction
|
||||
kstudio_cart_interface(const machine_config &mconfig, device_t &device);
|
||||
virtual ~kstudio_cart_interface();
|
||||
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read);
|
||||
|
||||
|
||||
UINT8 *get_cart_base() { return m_rom; }
|
||||
void write_prg_bank(UINT8 bank) { m_bank = bank; }
|
||||
|
||||
|
||||
protected:
|
||||
// internal state
|
||||
UINT8 *m_rom;
|
||||
@ -42,15 +42,15 @@ public:
|
||||
// construction/destruction
|
||||
nes_kstudio_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
virtual ~nes_kstudio_slot_device();
|
||||
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_config_complete() { update_names(); }
|
||||
|
||||
|
||||
// image-level overrides
|
||||
virtual bool call_load();
|
||||
virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry);
|
||||
|
||||
|
||||
virtual iodevice_t image_type() const { return IO_CARTSLOT; }
|
||||
virtual bool is_readable() const { return 1; }
|
||||
virtual bool is_writeable() const { return 0; }
|
||||
@ -60,13 +60,13 @@ public:
|
||||
virtual const char *image_interface() const { return "ks_cart"; }
|
||||
virtual const char *file_extensions() const { return "bin"; }
|
||||
virtual const option_guide *create_option_guide() const { return NULL; }
|
||||
|
||||
|
||||
// slot interface overrides
|
||||
virtual void get_default_card_software(astring &result);
|
||||
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(read);
|
||||
void write_prg_bank(UINT8 bank) { if (m_cart) m_cart->write_prg_bank(bank); }
|
||||
|
||||
|
||||
kstudio_cart_interface* m_cart;
|
||||
};
|
||||
|
||||
@ -81,7 +81,7 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, NULL, false)
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Karaoke Studio Expansion cart implementation
|
||||
// Karaoke Studio Expansion cart implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
@ -93,11 +93,11 @@ class nes_kstudio_rom_device : public device_t,
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_kstudio_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
// optional information overrides
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
virtual UINT8* get_cart_base();
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
@ -110,7 +110,7 @@ extern const device_type NES_KSEXPANSION_ROM;
|
||||
|
||||
//-------------------------------------------
|
||||
//
|
||||
// Karaoke Studio Base Cart implementation
|
||||
// Karaoke Studio Base Cart implementation
|
||||
//
|
||||
//-------------------------------------------
|
||||
|
||||
|
@ -117,7 +117,7 @@ void nes_exrom_device::pcb_reset()
|
||||
m_split_chr = 0;
|
||||
m_ex1_bank = 0;
|
||||
m_vcount = 0;
|
||||
|
||||
|
||||
memset(m_vrom_bank, 0x3ff, ARRAY_LENGTH(m_vrom_bank));
|
||||
m_prg_regs[0] = 0xfc;
|
||||
m_prg_regs[1] = 0xfd;
|
||||
@ -241,7 +241,7 @@ void nes_exrom_device::update_prg()
|
||||
void nes_exrom_device::hblank_irq(int scanline, int vblank, int blanked )
|
||||
{
|
||||
m_vcount = scanline;
|
||||
|
||||
|
||||
if (scanline == m_irq_count)
|
||||
{
|
||||
if (m_irq_enable)
|
||||
@ -284,7 +284,7 @@ inline bool nes_exrom_device::in_split()
|
||||
{
|
||||
ppu2c0x_device *ppu = machine().device<ppu2c0x_device>("ppu");
|
||||
int tile = ppu->get_tilenum();
|
||||
|
||||
|
||||
if (tile < 34)
|
||||
{
|
||||
if (!m_split_rev && tile < m_split_ctrl)
|
||||
@ -303,7 +303,7 @@ READ8_MEMBER(nes_exrom_device::nt_r)
|
||||
{
|
||||
case MMC5FILL:
|
||||
if ((offset & 0x3ff) >= 0x3c0)
|
||||
return m_floodattr;
|
||||
return m_floodattr;
|
||||
return m_floodtile;
|
||||
|
||||
case EXRAM:
|
||||
@ -315,7 +315,7 @@ READ8_MEMBER(nes_exrom_device::nt_r)
|
||||
|
||||
case CIRAM:
|
||||
default:
|
||||
// Uchuu Keibitai SDF uses extensively split screen for its intro,
|
||||
// Uchuu Keibitai SDF uses extensively split screen for its intro,
|
||||
// but it does not work yet
|
||||
if (m_split_scr && !(m_exram_control & 0x02) && in_split())
|
||||
{
|
||||
@ -338,7 +338,7 @@ READ8_MEMBER(nes_exrom_device::nt_r)
|
||||
{
|
||||
if ((offset & 0x3ff) >= 0x3c0)
|
||||
return m_mmc5_attrib[(m_exram[offset & 0x3ff] >> 6) & 0x03];
|
||||
else // in this case, we write Ex1 CHR bank, but then access NT normally!
|
||||
else // in this case, we write Ex1 CHR bank, but then access NT normally!
|
||||
{
|
||||
m_ex1_chr = 1;
|
||||
m_ex1_bank = (m_exram[offset & 0x3ff] & 0x3f) | (m_high_chr << 6);
|
||||
@ -350,17 +350,17 @@ READ8_MEMBER(nes_exrom_device::nt_r)
|
||||
|
||||
WRITE8_MEMBER(nes_exrom_device::nt_w)
|
||||
{
|
||||
int page = ((offset & 0xc00) >> 10);
|
||||
|
||||
int page = ((offset & 0xc00) >> 10);
|
||||
|
||||
if (!m_nt_writable[page])
|
||||
return;
|
||||
|
||||
|
||||
switch (m_nt_src[page])
|
||||
{
|
||||
case EXRAM:
|
||||
m_exram[offset & 0x3ff] = data;
|
||||
break;
|
||||
|
||||
|
||||
case CIRAM:
|
||||
default:
|
||||
m_nt_access[page][offset & 0x3ff] = data;
|
||||
@ -415,10 +415,10 @@ READ8_MEMBER(nes_exrom_device::chr_r)
|
||||
// However, if a game enables Ex1 but does not write a new m_ex1_bank, I'm not sure here we get the correct behavior
|
||||
if (m_exram_control == 1 && ppu->get_draw_phase() == PPU_DRAW_BG && m_ex1_chr)
|
||||
return bg_ex1_chr_r(offset & 0xfff);
|
||||
|
||||
|
||||
if (m_split_scr && !(m_exram_control & 0x02) && in_split() && ppu->get_draw_phase() == PPU_DRAW_BG && m_split_chr)
|
||||
return split_chr_r(offset & 0xfff);
|
||||
|
||||
|
||||
if (ppu->is_sprite_8x16())
|
||||
{
|
||||
if (ppu->get_draw_phase() == PPU_DRAW_OAM)
|
||||
@ -444,9 +444,9 @@ READ8_MEMBER(nes_exrom_device::read_l)
|
||||
if ((offset >= 0x1c00) && (offset <= 0x1fff))
|
||||
{
|
||||
// EXRAM
|
||||
if (BIT(m_exram_control, 1)) // Modes 2,3 = read
|
||||
if (BIT(m_exram_control, 1)) // Modes 2,3 = read
|
||||
return m_exram[offset - 0x1c00];
|
||||
else
|
||||
else
|
||||
return m_open_bus; // Modes 0,1 = open bus
|
||||
}
|
||||
|
||||
@ -486,9 +486,9 @@ WRITE8_MEMBER(nes_exrom_device::write_l)
|
||||
if ((offset >= 0x1c00) && (offset <= 0x1fff))
|
||||
{
|
||||
// EXRAM
|
||||
if (m_exram_control == 0x02) // Mode 2 = write data
|
||||
if (m_exram_control == 0x02) // Mode 2 = write data
|
||||
m_exram[offset - 0x1c00] = data;
|
||||
else if (m_exram_control != 0x03) // Modes 0,1 = write data in frame / write 0 otherwise
|
||||
else if (m_exram_control != 0x03) // Modes 0,1 = write data in frame / write 0 otherwise
|
||||
{
|
||||
if (m_irq_status & 0x40)
|
||||
m_exram[offset - 0x1c00] = data;
|
||||
@ -554,7 +554,7 @@ WRITE8_MEMBER(nes_exrom_device::write_l)
|
||||
case 0x1116:
|
||||
case 0x1117:
|
||||
m_prg_regs[offset & 3] = data & 0x7f;
|
||||
m_prg_ram_mapped[offset & 3] = !BIT(data, 7); // m_prg_ram_mapped[3] is not used, in fact!
|
||||
m_prg_ram_mapped[offset & 3] = !BIT(data, 7); // m_prg_ram_mapped[3] is not used, in fact!
|
||||
update_prg();
|
||||
break;
|
||||
|
||||
|
@ -66,7 +66,7 @@ protected:
|
||||
UINT8 m_prg_ram_mapped[4];
|
||||
|
||||
UINT8 m_ex1_bank;
|
||||
|
||||
|
||||
UINT8 m_high_chr; // $5130
|
||||
|
||||
UINT8 m_split_scr; // $5200
|
||||
|
@ -127,7 +127,7 @@ SLOT_INTERFACE_START(nes_cart)
|
||||
SLOT_INTERFACE_INTERNAL("bf9093", NES_BF9093)
|
||||
SLOT_INTERFACE_INTERNAL("bf9096", NES_BF9096)
|
||||
SLOT_INTERFACE_INTERNAL("goldenfive", NES_GOLDEN5)
|
||||
SLOT_INTERFACE_INTERNAL("ade", NES_ALADDIN)
|
||||
SLOT_INTERFACE_INTERNAL("ade", NES_ALADDIN)
|
||||
SLOT_INTERFACE_INTERNAL("cne_decathl", NES_CNE_DECATHL)
|
||||
SLOT_INTERFACE_INTERNAL("cne_fsb", NES_CNE_FSB)
|
||||
SLOT_INTERFACE_INTERNAL("cne_shlz", NES_CNE_SHLZ)
|
||||
@ -354,4 +354,3 @@ SLOT_INTERFACE_INTERNAL("test", NES_NROM)
|
||||
//
|
||||
SLOT_INTERFACE_INTERNAL("unknown", NES_NROM) // a few pirate dumps uses the wrong mapper...
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
@ -56,8 +56,8 @@ static const nes_mmc mmc_list[] =
|
||||
{ 24, KONAMI_VRC6 },
|
||||
{ 25, KONAMI_VRC4 },
|
||||
{ 26, KONAMI_VRC6 },
|
||||
{ 27, UNL_WORLDHERO }, // 27 World Hero board - Unsupported
|
||||
{ 28, BTL_ACTION53 }, // 28 - Multi-discrete PCB designed by Tepples for Action 53
|
||||
{ 27, UNL_WORLDHERO }, // 27 World Hero board - Unsupported
|
||||
{ 28, BTL_ACTION53 }, // 28 - Multi-discrete PCB designed by Tepples for Action 53
|
||||
// 29 Unused
|
||||
// 30 Unused
|
||||
// 31 Unused
|
||||
@ -132,7 +132,7 @@ static const nes_mmc mmc_list[] =
|
||||
// 100 images hacked to work with nesticle?
|
||||
// 101 Unused (Urusei Yatsura had been assigned to this mapper, but it's Mapper 87)
|
||||
// 102 Unused
|
||||
{ 103, UNL_2708 }, // 103 Bootleg cart 2708 (Doki Doki Panic - FDS Conversion) - Unsupported
|
||||
{ 103, UNL_2708 }, // 103 Bootleg cart 2708 (Doki Doki Panic - FDS Conversion) - Unsupported
|
||||
{ 104, CAMERICA_GOLDENFIVE },
|
||||
{ 105, STD_EVENT },
|
||||
{ 106, BTL_SMB3 },
|
||||
@ -191,7 +191,7 @@ static const nes_mmc mmc_list[] =
|
||||
{ 159, BANDAI_LZ93EX1 }, // with 24c01
|
||||
{ 160, SACHEN_SA009 },
|
||||
// 161 Unused
|
||||
{ 162, WAIXING_FS304}, // not confirmed, but a lot of chinese releases use it like this...
|
||||
{ 162, WAIXING_FS304}, // not confirmed, but a lot of chinese releases use it like this...
|
||||
{ 163, NANJING_BOARD},
|
||||
{ 164, WAIXING_FFV },
|
||||
{ 165, WAIXING_SH2 },
|
||||
@ -264,7 +264,7 @@ static const nes_mmc mmc_list[] =
|
||||
{ 232, CAMERICA_BF9096 },
|
||||
{ 233, BMC_SUPER22 },
|
||||
{ 234, AVE_MAXI15 },
|
||||
{ 235, BMC_GOLD150 }, // 235 Golden Game x-in-1 - Unsupported
|
||||
{ 235, BMC_GOLD150 }, // 235 Golden Game x-in-1 - Unsupported
|
||||
// 236 Game 800-in-1 - Unsupported
|
||||
// 237 Unused
|
||||
{ 238, UNL_603_5052 },
|
||||
@ -525,7 +525,7 @@ void nes_cart_slot_device::call_load_ines()
|
||||
switch (m_pcb_id)
|
||||
{
|
||||
case STD_NROM:
|
||||
if (prg_size == 3 * 0x4000) // NROM368 are padded with 2k empty data at start to accomplish with iNES standard
|
||||
if (prg_size == 3 * 0x4000) // NROM368 are padded with 2k empty data at start to accomplish with iNES standard
|
||||
{
|
||||
m_pcb_id = STD_NROM368;
|
||||
fseek(0x810, SEEK_SET);
|
||||
@ -834,7 +834,7 @@ const char * nes_cart_slot_device::get_default_card_ines(UINT8 *ROM, UINT32 len)
|
||||
}
|
||||
|
||||
// use info from nes.hsi if available!
|
||||
// if (hashfile_extrainfo(*this, mapinfo))
|
||||
// if (hashfile_extrainfo(*this, mapinfo))
|
||||
if (0)
|
||||
{
|
||||
if (4 == sscanf(mapinfo,"%d %d %d %d", &mapint1, &mapint2, &mapint3, &mapint4))
|
||||
|
@ -119,8 +119,8 @@ enum
|
||||
WAIXING_DQ8, WAIXING_FFV, WAIXING_WXZS2, SUPERGAME_LIONKING, SUPERGAME_BOOGERMAN,
|
||||
KAY_BOARD, HOSENKAN_BOARD, NITRA_TDA, GOUDER_37017, NANJING_BOARD,
|
||||
WHIRLWIND_2706,
|
||||
NOCASH_NOCHR, // homebrew PCB design which uses NTRAM for CHRRAM
|
||||
BTL_ACTION53, // homebrew PCB for homebrew multicarts
|
||||
NOCASH_NOCHR, // homebrew PCB design which uses NTRAM for CHRRAM
|
||||
BTL_ACTION53, // homebrew PCB for homebrew multicarts
|
||||
/* FFE boards, for mappers 6, 8, 17 */
|
||||
FFE3_BOARD, FFE4_BOARD, FFE8_BOARD, TEST_BOARD,
|
||||
/* Unsupported (for place-holder boards, with no working emulation) & no-board (at init) */
|
||||
|
@ -283,15 +283,15 @@ void nes_un1rom_device::pcb_reset()
|
||||
-------------------------------------------------*/
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
|
||||
NROM-368 board emulation
|
||||
|
||||
|
||||
iNES: mapper 0 with 3xPRG banks
|
||||
This is an homebrew extension to map linearly 46KB
|
||||
or PRG in boards with no PRG bankswitch logic
|
||||
|
||||
|
||||
In MESS: Supported
|
||||
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(nes_nrom368_device::read_l)
|
||||
@ -425,7 +425,7 @@ READ8_MEMBER(nes_cnrom_device::chr_r)
|
||||
// For most boards, chr_open_bus remains always zero.
|
||||
if (m_chr_open_bus)
|
||||
return m_open_bus;
|
||||
|
||||
|
||||
return m_chr_access[bank][offset & 0x3ff];
|
||||
}
|
||||
|
||||
@ -549,16 +549,16 @@ WRITE8_MEMBER(nes_un1rom_device::write_h)
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
|
||||
NoCash NOCHR board emulation
|
||||
|
||||
|
||||
This is an homebrew PCB design on a single chip
|
||||
(+possibly CIC) which uses the NTRAM as CHRRAM!
|
||||
|
||||
|
||||
iNES: mapper 218
|
||||
|
||||
|
||||
In MESS: Supported.
|
||||
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
WRITE8_MEMBER(nes_nochr_device::chr_w)
|
||||
@ -569,7 +569,7 @@ WRITE8_MEMBER(nes_nochr_device::chr_w)
|
||||
else if (mirr == PPU_MIRROR_LOW)
|
||||
m_ciram[(offset & 0x3ff) + 0x400] = data;
|
||||
else
|
||||
m_ciram[offset & 0x7ff] = data; // not sure here, since there is no software to test...
|
||||
m_ciram[offset & 0x7ff] = data; // not sure here, since there is no software to test...
|
||||
}
|
||||
|
||||
READ8_MEMBER(nes_nochr_device::chr_r)
|
||||
@ -580,5 +580,5 @@ READ8_MEMBER(nes_nochr_device::chr_r)
|
||||
else if (mirr == PPU_MIRROR_LOW)
|
||||
return m_ciram[(offset & 0x3ff) + 0x400];
|
||||
else
|
||||
return m_ciram[offset & 0x7ff]; // not sure here, since there is no software to test...
|
||||
return m_ciram[offset & 0x7ff]; // not sure here, since there is no software to test...
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Nantettate!! Baseball Cartslot implementation
|
||||
// Nantettate!! Baseball Cartslot implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
@ -119,7 +119,7 @@ void nes_ntb_slot_device::get_default_card_software(astring &result)
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Nantettate!! Baseball Minicart implementation
|
||||
// Nantettate!! Baseball Minicart implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
@ -154,8 +154,8 @@ UINT8 *nes_ntb_rom_device::get_cart_base()
|
||||
|
||||
//------------------------------------------------
|
||||
//
|
||||
// Nantettate!! Baseball base cart implementation
|
||||
// a.k.a. Sunsoft Dual Cassette System
|
||||
// Nantettate!! Baseball base cart implementation
|
||||
// a.k.a. Sunsoft Dual Cassette System
|
||||
// (variant of Sunsoft-4 PCB)
|
||||
//
|
||||
//------------------------------------------------
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Nantettate!! Baseball Cartslot implementation
|
||||
// Nantettate!! Baseball Cartslot implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
@ -77,7 +77,7 @@ extern const device_type NES_NTB_SLOT;
|
||||
|
||||
//-----------------------------------------------
|
||||
//
|
||||
// Nantettate!! Baseball Minicart implementation
|
||||
// Nantettate!! Baseball Minicart implementation
|
||||
//
|
||||
//-----------------------------------------------
|
||||
|
||||
@ -106,8 +106,8 @@ extern const device_type NES_NTB_ROM;
|
||||
|
||||
//------------------------------------------------
|
||||
//
|
||||
// Nantettate!! Baseball base cart implementation
|
||||
// a.k.a. Sunsoft Dual Cassette System
|
||||
// Nantettate!! Baseball base cart implementation
|
||||
// a.k.a. Sunsoft Dual Cassette System
|
||||
// (variant of Sunsoft-4 PCB)
|
||||
//
|
||||
//------------------------------------------------
|
||||
|
@ -37,7 +37,7 @@ MACHINE_CONFIG_FRAGMENT( specpdq )
|
||||
MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
|
||||
MCFG_SCREEN_SIZE(1280,1024)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 844-1)
|
||||
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 256)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -51,7 +51,7 @@ private:
|
||||
int m_width, m_height, m_patofsx, m_patofsy;
|
||||
UINT32 m_vram_addr, m_vram_src;
|
||||
UINT8 m_fillbytes[256];
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user