srcclean in preparation for release
This commit is contained in:
parent
322eb2a2b2
commit
4b075a2c6f
@ -42408,7 +42408,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="advelec">
|
||||
<software name="advelec">
|
||||
<description>Advanced Electricity (cleanly cracked)</description>
|
||||
<year>1984</year>
|
||||
<publisher>Educational Materials and Equipment</publisher>
|
||||
@ -42422,7 +42422,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="compcirc">
|
||||
<software name="compcirc">
|
||||
<description>Complex Circuits (cleanly cracked)</description>
|
||||
<year>1984</year>
|
||||
<publisher>Educational Materials and Equipment</publisher>
|
||||
@ -42436,13 +42436,13 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="pforth30">
|
||||
<software name="pforth30">
|
||||
<description>PAI Forth (Version 3.0, 12-21-1985) (cleanly cracked)</description>
|
||||
<year>1985</year>
|
||||
<publisher>Prentice Associates Incorporated</publisher>
|
||||
<info name="release" value="2021-06-10"/>
|
||||
<!--"PAI Forth" is a 1985 development program. This is version 3.0. It is preserved here for the first time.-->
|
||||
<!-- It is uncertain as of now whether this was used internally or released. More research is required. - FH -->
|
||||
<!-- It is uncertain as of now whether this was used internally or released. More research is required. - FH -->
|
||||
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="143360">
|
||||
@ -42451,7 +42451,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="rboots82">
|
||||
<software name="rboots82">
|
||||
<description>Rocky's Boots (Unknown 1982 version) (cleanly cracked)</description>
|
||||
<year>1982</year>
|
||||
<publisher>The Learning Company</publisher>
|
||||
@ -42465,7 +42465,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="prsnr110s">
|
||||
<software name="prsnr110s">
|
||||
<description>The Prisoner (Version 1.10) (SoftSmith) (cleanly cracked)</description>
|
||||
<year>1980</year>
|
||||
<publisher>SoftSmith</publisher>
|
||||
|
@ -176,19 +176,19 @@ is confirmed.
|
||||
</software>
|
||||
|
||||
<!--
|
||||
Load or type an Z80 assembler program as BASIC lines. Example:
|
||||
10 ORG 4800H
|
||||
20 LD HL,4400H
|
||||
30 LD DE,4401H
|
||||
40 LD BC,3FFH
|
||||
50 LD (HL),42
|
||||
60 LDIR
|
||||
60 RET
|
||||
70 END 4800H
|
||||
Note there are two blanks after a line number. If you want to define a label,
|
||||
use just one blank and write e.g. '40 LABEL: LD HL,1234H'.
|
||||
Finally you can use NAME /OA to output to cassette,
|
||||
/NS to not create the symbol table, /TM to assemble to memory.
|
||||
Load or type an Z80 assembler program as BASIC lines. Example:
|
||||
10 ORG 4800H
|
||||
20 LD HL,4400H
|
||||
30 LD DE,4401H
|
||||
40 LD BC,3FFH
|
||||
50 LD (HL),42
|
||||
60 LDIR
|
||||
60 RET
|
||||
70 END 4800H
|
||||
Note there are two blanks after a line number. If you want to define a label,
|
||||
use just one blank and write e.g. '40 LABEL: LD HL,1234H'.
|
||||
Finally you can use NAME /OA to output to cassette,
|
||||
/NS to not create the symbol table, /TM to assemble to memory.
|
||||
-->
|
||||
<software name="colasm">
|
||||
<description>Colour-Assembler</description>
|
||||
|
@ -15521,7 +15521,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="monkeyit" cloneof="monkeyk">
|
||||
<description>The Secret of Monkey Island (Italy)</description>
|
||||
<year>1991</year>
|
||||
|
@ -14,7 +14,7 @@ license:CC0
|
||||
|
||||
(* = dumped and boots in MAME
|
||||
B = confirmed bad dump
|
||||
V = validated with 2nd cartridge)
|
||||
V = validated with 2nd cartridge)
|
||||
|
||||
The flash ROMs on these cartridges look to be deteriorating, each will likely need verifying against multiple cartridges to verify the integrity of
|
||||
the data.
|
||||
@ -45,7 +45,7 @@ license:CC0
|
||||
* H6228 - Juice Box Music Video (Avril Lavine, The Calling, Clay Miken, Ruben Studdard)
|
||||
* H6230A- Juice Box Music Video (Baha Men, Jump5, Jump5, Beu Sisters, ZOEgirl)
|
||||
* H6232 - Juice Box Music Video (Zoegirl, Jump5, Jump5, Baha Men, Atomic Kitten)
|
||||
H6233 - Kenny Chesney - 'Live Those Songs', 'No Shoes, No Shirt, No Problems', 'I Go Back' Sara Evans - 'Suds in the Bucket, Martina McBride - 'This One's For The Girls'
|
||||
H6233 - Kenny Chesney - 'Live Those Songs', 'No Shoes, No Shirt, No Problems', 'I Go Back' Sara Evans - 'Suds in the Bucket, Martina McBride - 'This One's For The Girls'
|
||||
H6234 - Juice Box Music Video (Ashlee Simpson, Ashlee Simpson) (same 2 Ashlee Simpson songs as H6226, but without other tracks)
|
||||
H6248 - Codename: Kids Next Door - Episode #19
|
||||
H6254 - Juice Box Music Video (Liz Flair, Stacie Orrico, Skye Sweetnam, Zoegirl) (full part # H6254-0971G1) (include 'the making of' for Skye Sweetnam Tangled Up in Me)
|
||||
@ -64,7 +64,7 @@ license:CC0
|
||||
- Brett Favre - The Field General
|
||||
H269x - Courage - The Cowardly Dog Volume 1
|
||||
- Dexter's Laboratory Episode 51
|
||||
|
||||
|
||||
(many still missing from this list)
|
||||
|
||||
-->
|
||||
@ -262,7 +262,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="sbcv1" supported="partial">
|
||||
<description>Streetball Classics Volume 1 (H7416)</description>
|
||||
<year>2004</year>
|
||||
@ -273,13 +273,13 @@ license:CC0
|
||||
<rom name="jb_streetball-classics-vol1_h7416_matrix11247_9875.smc" size="0x2100400" crc="ada20763" sha1="b973e18d390a7d1a530e3737562722f96163d593" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<!--
|
||||
contains:
|
||||
Test Drive
|
||||
All I Wanted Was A Slushie
|
||||
-->
|
||||
-->
|
||||
<software name="megasv1" supported="partial">
|
||||
<description>Megas XLR Volume 1 (H2697)</description>
|
||||
<year>2004</year>
|
||||
@ -290,8 +290,8 @@ license:CC0
|
||||
<rom name="jb_megas-xlr_vol1_h2697_matrix11247_9875.smc" size="0x2100400" crc="385b0402" sha1="fd761af3c8eaa522db0b4c224d37440d47c26c8a" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</software>
|
||||
|
||||
<!--
|
||||
contains:
|
||||
It Feels Like Magic
|
||||
@ -352,5 +352,5 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
</softwarelist>
|
||||
|
@ -19198,8 +19198,8 @@ but dumps still have to be confirmed.
|
||||
<dataarea name="rom" width="16" endianness="big" size="1048576">
|
||||
<rom name="mega turrican (may 18, 1993 prototype).bin" size="1048576" crc="3ba35acd" sha1="486fd963b1389806a565dab21c81c46c273c8e5f"/>
|
||||
<!-- labels on 512K 27C040s:
|
||||
<rom name="megaturrican odd" size="524288" crc="" sha1="" offset="0x000001" loadflag="load16_byte"/>
|
||||
<rom name="megaturrican even" size="524288" crc="" sha1="" offset="0x000000" loadflag="load16_byte"/>
|
||||
<rom name="megaturrican odd" size="524288" crc="" sha1="" offset="0x000001" loadflag="load16_byte"/>
|
||||
<rom name="megaturrican even" size="524288" crc="" sha1="" offset="0x000000" loadflag="load16_byte"/>
|
||||
-->
|
||||
</dataarea>
|
||||
</part>
|
||||
|
@ -1112,12 +1112,12 @@ Beyond that last category are the roms waiting to be classified.
|
||||
<dataarea name="rom" size="3145728">
|
||||
<rom name="earthbound (prototype 19950327).sfc" size="3145728" crc="d3fa35aa" sha1="0686c4d339657489890e43fd39797c893cb992e9" offset="0x000000" />
|
||||
<!-- released as binary blob above, these are the eventual label/socket names
|
||||
<rom name="earth bound 3-27-95 e.7 e 0.u1" size="524288" crc="" sha1="" offset="0x000000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 1.u2" size="524288" crc="" sha1="" offset="0x080000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 2.u3" size="524288" crc="" sha1="" offset="0x100000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 3.u4" size="524288" crc="" sha1="" offset="0x180000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 4.u5" size="524288" crc="" sha1="" offset="0x200000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 5.u6" size="524288" crc="" sha1="" offset="0x280000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 0.u1" size="524288" crc="" sha1="" offset="0x000000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 1.u2" size="524288" crc="" sha1="" offset="0x080000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 2.u3" size="524288" crc="" sha1="" offset="0x100000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 3.u4" size="524288" crc="" sha1="" offset="0x180000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 4.u5" size="524288" crc="" sha1="" offset="0x200000" />
|
||||
<rom name="earth bound 3-27-95 e.7 e 5.u6" size="524288" crc="" sha1="" offset="0x280000" />
|
||||
-->
|
||||
</dataarea>
|
||||
<dataarea name="nvram" size="65536">
|
||||
|
@ -38680,7 +38680,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="abusimbe_d" cloneof="abusimbe">
|
||||
<description>Abu Simbel Profanation (small case, alt)</description>
|
||||
<year>1985</year>
|
||||
@ -104956,7 +104956,7 @@ license:CC0
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
<software name="pacmaniaa" cloneof="pacmania">
|
||||
<description>Pac-Mania (MCM)</description>
|
||||
<year>1988</year>
|
||||
|
@ -177,7 +177,7 @@ license:CC0
|
||||
|
||||
<!-- this cartridge looked identical to the above, but contained a normal flash chip instead of an OTP device
|
||||
the data structure is very different, and doesn't start with the FAT16 filesystem?
|
||||
does the system BIOS detect different cartridge types and handle them in different ways? -->
|
||||
does the system BIOS detect different cartridge types and handle them in different ways? -->
|
||||
<software name="mmcluba" cloneof="mmclub" supported="no">
|
||||
<description>Mickey Mouse Clubhouse (USA, flash chip)</description>
|
||||
<year>2010</year>
|
||||
@ -190,7 +190,7 @@ license:CC0
|
||||
</part>
|
||||
</software>
|
||||
|
||||
|
||||
|
||||
|
||||
<software name="mickeychgr" cloneof="mmclub" supported="no">
|
||||
<description>Micky Maus Wunderhaus (Germany)</description>
|
||||
|
@ -11,10 +11,10 @@
|
||||
#include "emu.h"
|
||||
#include "coco_max.h"
|
||||
|
||||
#define MOUSE_SENSITIVITY 75
|
||||
#define COCOMAX_X_TAG "cocomax_x"
|
||||
#define COCOMAX_Y_TAG "cocomax_y"
|
||||
#define COCOMAX_BUTTONS "cocomax_buttons"
|
||||
#define MOUSE_SENSITIVITY 75
|
||||
#define COCOMAX_X_TAG "cocomax_x"
|
||||
#define COCOMAX_Y_TAG "cocomax_y"
|
||||
#define COCOMAX_BUTTONS "cocomax_buttons"
|
||||
|
||||
// #define VERBOSE (LOG_GENERAL )
|
||||
#include "logmacro.h"
|
||||
@ -106,10 +106,10 @@ ioport_constructor coco_pak_max_device::device_input_ports() const
|
||||
void coco_pak_max_device::device_start()
|
||||
{
|
||||
// initial state
|
||||
m_a2d_result = 0;
|
||||
m_a2d_result = 0;
|
||||
|
||||
// save state
|
||||
save_item(NAME(m_a2d_result));
|
||||
save_item(NAME(m_a2d_result));
|
||||
|
||||
// install $ff90-$ff97 handler
|
||||
install_read_handler(0xff90, 0xff97, read8sm_delegate(*this, FUNC(coco_pak_max_device::ff90_read)));
|
||||
@ -123,7 +123,7 @@ void coco_pak_max_device::device_start()
|
||||
|
||||
void coco_pak_max_device::device_reset()
|
||||
{
|
||||
m_a2d_result = 0;
|
||||
m_a2d_result = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -27,8 +27,8 @@
|
||||
16 A3 33 GND
|
||||
17 A5 34 GND
|
||||
|
||||
SEL is an input to the MC-10 that allows the cartridge to remove
|
||||
the internal chips from the bus.
|
||||
SEL is an input to the MC-10 that allows the cartridge to remove
|
||||
the internal chips from the bus.
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
|
@ -6,34 +6,34 @@
|
||||
|
||||
Code for emulating Darren Atkinson's MCX-128 cartridge
|
||||
|
||||
Features:
|
||||
128K of RAM expansion
|
||||
16K of ROM expansion
|
||||
Features:
|
||||
128K of RAM expansion
|
||||
16K of ROM expansion
|
||||
|
||||
New MC-10 memory map defined by this cartridge:
|
||||
New MC-10 memory map defined by this cartridge:
|
||||
|
||||
0000 - 0003 6803 Ports
|
||||
0004 - 0007 Expansion RAM
|
||||
0008 - 000E 6803 Status / Control
|
||||
000F Expansion RAM
|
||||
0010 - 0013 6803 UART
|
||||
0014 6803 RAM Control Reg
|
||||
0015 - 001F Unused
|
||||
0020 - 007F Expansion RAM
|
||||
0080 - 00FF On-chip CPU RAM / Expansion RAM
|
||||
0100 - 3FFF Expansion RAM
|
||||
4000 - 5FFF Built-In RAM / Expansion RAM
|
||||
6000 - BEFF Expansion RAM
|
||||
BF00 RAM Bank Control Reg
|
||||
BF01 ROM Map Control Reg
|
||||
BF80 - BFFF Keyboard / VDG / Sound
|
||||
C000 - DFFF EPROM or Expansion RAM
|
||||
E000 - FFFF Built-in ROM, EPROM or Expansion RAM
|
||||
0000 - 0003 6803 Ports
|
||||
0004 - 0007 Expansion RAM
|
||||
0008 - 000E 6803 Status / Control
|
||||
000F Expansion RAM
|
||||
0010 - 0013 6803 UART
|
||||
0014 6803 RAM Control Reg
|
||||
0015 - 001F Unused
|
||||
0020 - 007F Expansion RAM
|
||||
0080 - 00FF On-chip CPU RAM / Expansion RAM
|
||||
0100 - 3FFF Expansion RAM
|
||||
4000 - 5FFF Built-In RAM / Expansion RAM
|
||||
6000 - BEFF Expansion RAM
|
||||
BF00 RAM Bank Control Reg
|
||||
BF01 ROM Map Control Reg
|
||||
BF80 - BFFF Keyboard / VDG / Sound
|
||||
C000 - DFFF EPROM or Expansion RAM
|
||||
E000 - FFFF Built-in ROM, EPROM or Expansion RAM
|
||||
|
||||
Deficiency:
|
||||
Deficiency:
|
||||
|
||||
* Writing to 6803 chip RAM at $80 to $ff should be mirrored
|
||||
to external RAM.
|
||||
* Writing to 6803 chip RAM at $80 to $ff should be mirrored
|
||||
to external RAM.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -130,100 +130,100 @@ mc10_pak_mcx128_device::mc10_pak_mcx128_device(const machine_config &mconfig, de
|
||||
|
||||
void mc10_pak_mcx128_device::view_map0(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).rom().region("eprom",0x0000).bankw("bank5");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).rom().region("eprom",0x0000).bankw("bank5");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map1(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).rom().region("eprom",0x2000).bankw("bank6");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).rom().region("eprom",0x2000).bankw("bank6");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map2(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).bankw("bank6");
|
||||
map(0xff00, 0xffff).bankw("bank7");
|
||||
// 0xe000, 0xffff: read internal ROM
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).bankw("bank6");
|
||||
map(0xff00, 0xffff).bankw("bank7");
|
||||
// 0xe000, 0xffff: read internal ROM
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map3(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).bankrw("bank5");
|
||||
map(0xff00, 0xffff).bankrw("bank7");
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0x5fff).bankr("bank3").w(FUNC(mc10_pak_mcx128_device::write_ram_mirror));
|
||||
map(0x6000, 0xbeff).bankrw("bank4");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).bankrw("bank5");
|
||||
map(0xff00, 0xffff).bankrw("bank7");
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map4(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).rom().region("eprom",0x0000).bankw("bank5");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).rom().region("eprom",0x0000).bankw("bank5");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map5(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).rom().region("eprom",0x2000).bankw("bank6");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).rom().region("eprom",0x2000).bankw("bank6");
|
||||
map(0xff00, 0xffff).rom().region("eprom",0x3f00).bankw("bank7");
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map6(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).bankw("bank6");
|
||||
map(0xff00, 0xffff).bankw("bank7");
|
||||
// 0xe000, 0xffff: read internal ROM
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xdfff).bankrw("bank5");
|
||||
map(0xe000, 0xfeff).bankw("bank6");
|
||||
map(0xff00, 0xffff).bankw("bank7");
|
||||
// 0xe000, 0xffff: read internal ROM
|
||||
}
|
||||
|
||||
void mc10_pak_mcx128_device::view_map7(address_map &map)
|
||||
{
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).bankrw("bank5");
|
||||
map(0xff00, 0xffff).bankrw("bank7");
|
||||
map(0x0004, 0x0007).bankrw("bank0");
|
||||
map(0x000f, 0x000f).bankrw("bank1");
|
||||
map(0x0020, 0x3fff).bankrw("bank2");
|
||||
map(0x4000, 0xbeff).bankrw("bank3");
|
||||
map(0xbf00, 0xbf01).rw(FUNC(mc10_pak_mcx128_device::control_register_read), FUNC(mc10_pak_mcx128_device::control_register_write));
|
||||
map(0xc000, 0xfeff).bankrw("bank5");
|
||||
map(0xff00, 0xffff).bankrw("bank7");
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -267,7 +267,7 @@ void mc10_pak_mcx128_device::device_start()
|
||||
m_bank[7]->configure_entry(0, &m_share[0x07f00]);
|
||||
m_bank[7]->configure_entry(1, &m_share[0x07f00]);
|
||||
|
||||
owning_slot().memspace().install_view(0x0000, 0xffff, m_view);
|
||||
owning_slot().memspace().install_view(0x0000, 0xffff, m_view);
|
||||
|
||||
m_view[0].install_device(0x0000, 0xffff, *this, &mc10_pak_mcx128_device::view_map0);
|
||||
m_view[1].install_device(0x0000, 0xffff, *this, &mc10_pak_mcx128_device::view_map1);
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
VTech Laser Lightpen Interface
|
||||
|
||||
Skeleton just to document the I/O ports used
|
||||
Skeleton just to document the I/O ports used
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -36,10 +36,10 @@ protected:
|
||||
|
||||
private:
|
||||
required_device<rs232_port_device> m_rs232;
|
||||
|
||||
|
||||
uint8_t receive_data_r();
|
||||
void transmit_data_w(uint8_t data);
|
||||
|
||||
|
||||
int m_rx;
|
||||
};
|
||||
|
||||
|
@ -99,7 +99,7 @@
|
||||
|
||||
MSB LSB Output conditions
|
||||
-----------------------------------------
|
||||
IF0 IF1 IF2 IFETCH, direct operands (except if FZ)
|
||||
IF0 IF1 IF2 IFETCH, direct operands (except if FZ)
|
||||
IB0 IB1 IB2 None (until transferred to IF)
|
||||
ISF0 ISF1 ISF2 None
|
||||
DF0 DF1 DF2 Indirect operand addressing, IOTs, etc.
|
||||
|
@ -363,9 +363,9 @@ void adsp21062_device::iop_w(offs_t offset, uint32_t data)
|
||||
|
||||
// DMA 7
|
||||
case 0x1d:
|
||||
{
|
||||
{
|
||||
m_core->dma[7].control = data;
|
||||
if (data & 0x1)
|
||||
if (data & 0x1)
|
||||
{
|
||||
sharc_iop_delayed_w(0x1d, data, 30);
|
||||
}
|
||||
@ -448,7 +448,7 @@ void adsp21062_device::external_dma_write(uint32_t address, uint64_t data)
|
||||
All addresses in the 17-bit index registers are offset by 0x0002 0000, the
|
||||
first internal RAM location, before they are used by the DMA controller.
|
||||
*/
|
||||
|
||||
|
||||
switch ((m_core->dma[6].control >> 6) & 0x3)
|
||||
{
|
||||
case 2: // 16/48 packing
|
||||
@ -1063,7 +1063,7 @@ void adsp21062_device::execute_run()
|
||||
dma_run_cycle(7);
|
||||
}
|
||||
dma_count--;
|
||||
}
|
||||
}
|
||||
|
||||
m_core->icount = 0;
|
||||
debugger_instruction_hook(m_core->daddr);
|
||||
@ -1072,7 +1072,7 @@ void adsp21062_device::execute_run()
|
||||
{
|
||||
check_interrupts();
|
||||
m_core->idle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
while (m_core->icount > 0 && !m_core->idle && !m_core->write_stalled)
|
||||
{
|
||||
|
@ -115,7 +115,7 @@ void adsp21062_device::dma_run_cycle(int channel)
|
||||
break;
|
||||
}
|
||||
case DMA_PMODE_16_32:
|
||||
{
|
||||
{
|
||||
uint32_t data = ((dm_read32(src + 0) & 0xffff) << 16) | (dm_read32(src + 1) & 0xffff);
|
||||
|
||||
dm_write32(dst, data);
|
||||
@ -125,7 +125,7 @@ void adsp21062_device::dma_run_cycle(int channel)
|
||||
break;
|
||||
}
|
||||
case DMA_PMODE_8_48:
|
||||
{
|
||||
{
|
||||
uint64_t data = ((uint64_t)(dm_read32(src + 0) & 0xff) << 0) |
|
||||
((uint64_t)(dm_read32(src + 1) & 0xff) << 8) |
|
||||
((uint64_t)(dm_read32(src + 2) & 0xff) << 16) |
|
||||
@ -136,7 +136,7 @@ void adsp21062_device::dma_run_cycle(int channel)
|
||||
pm_write48(dst, data);
|
||||
src += src_modifier * 6;
|
||||
dst += dst_modifier;
|
||||
src_count -= 6;
|
||||
src_count -= 6;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -287,7 +287,7 @@ void adsp21062_device::sharc_dma_exec(int channel)
|
||||
{
|
||||
uint32_t dma_chain_ptr = m_core->dma[channel].chain_ptr & 0x1ffff;
|
||||
|
||||
schedule_chained_dma_op(channel, dma_chain_ptr, tran);
|
||||
schedule_chained_dma_op(channel, dma_chain_ptr, tran);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -316,7 +316,7 @@ void adsp21062_device::sharc_dma_exec(int channel)
|
||||
pmode = DMA_PMODE_8_48;
|
||||
}
|
||||
|
||||
schedule_dma_op(channel, src, dst, src_modifier, dst_modifier, src_count, dst_count, pmode);
|
||||
schedule_dma_op(channel, src, dst, src_modifier, dst_modifier, src_count, dst_count, pmode);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -461,7 +461,7 @@ void nand_device::command_w(uint8_t data)
|
||||
}
|
||||
break;
|
||||
//case 0x11:
|
||||
// break;
|
||||
// break;
|
||||
case 0x60: // Block Erase (1st cycle)
|
||||
m_mode = SM_M_ERASE;
|
||||
m_page_addr = 0;
|
||||
@ -493,13 +493,13 @@ void nand_device::command_w(uint8_t data)
|
||||
m_mode = SM_M_READSTATUS;
|
||||
break;
|
||||
//case 0x71:
|
||||
// break;
|
||||
// break;
|
||||
case 0x90: // Read ID
|
||||
m_mode = SM_M_READID;
|
||||
m_addr_load_ptr = 0;
|
||||
break;
|
||||
//case 0x91:
|
||||
// break;
|
||||
// break;
|
||||
case 0x30: // Read (2nd cycle)
|
||||
if (m_col_address_cycles == 1)
|
||||
{
|
||||
|
@ -325,7 +325,7 @@ legacy_poly_manager_owner::~legacy_poly_manager_owner()
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
allocate_array - allocate an array of pointers
|
||||
allocate_array - allocate an array of pointers
|
||||
-------------------------------------------------*/
|
||||
|
||||
template<typename T>
|
||||
|
@ -61,12 +61,12 @@ struct legacy_poly_manager;
|
||||
class legacy_poly_manager_owner
|
||||
{
|
||||
public:
|
||||
legacy_poly_manager_owner();
|
||||
~legacy_poly_manager_owner();
|
||||
legacy_poly_manager_owner();
|
||||
~legacy_poly_manager_owner();
|
||||
|
||||
operator legacy_poly_manager *() { return m_poly; }
|
||||
operator legacy_poly_manager *() { return m_poly; }
|
||||
|
||||
legacy_poly_manager *m_poly;
|
||||
legacy_poly_manager *m_poly;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3129,7 +3129,7 @@ int32_t voodoo_device::register_w(voodoo_device *vd, offs_t offset, uint32_t dat
|
||||
attoseconds_t refresh = vd->m_screen->frame_period().attoseconds();
|
||||
attoseconds_t stdperiod, medperiod, vgaperiod;
|
||||
attoseconds_t stddiff, meddiff, vgadiff;
|
||||
rectangle visarea;
|
||||
rectangle visarea;
|
||||
|
||||
if (vd->vd_type == TYPE_VOODOO_2)
|
||||
{
|
||||
|
@ -347,7 +347,7 @@ filesystem_t::dir_t fs_prodos::impl::root_dir::dir_get(uint64_t key)
|
||||
fs_prodos::impl::dir::dir(impl &fs, const u8 *entry, u16 base_block, u16 key, root_dir *parent_dir) : root_dir(fs, base_block), m_parent_dir(parent_dir), m_key(key)
|
||||
{
|
||||
memcpy(m_entry, entry, 39);
|
||||
(void)m_key;
|
||||
(void)m_key;
|
||||
(void)m_parent_dir;
|
||||
}
|
||||
|
||||
|
@ -189,7 +189,7 @@ std::vector<u8> fs_vtech::impl::file::read_all()
|
||||
u8 track = m_entry[0xa];
|
||||
u8 sector = m_entry[0xb];
|
||||
int len = ((r16l(m_entry + 0xe) - r16l(m_entry + 0xc)) & 0xffff) + 1;
|
||||
|
||||
|
||||
std::vector<u8> data(len, 0);
|
||||
int pos = 0;
|
||||
while(pos < len) {
|
||||
@ -219,7 +219,7 @@ fs_vtech::impl::file_t fs_vtech::impl::root_dir::file_create(const fs_meta_data
|
||||
if(type != 'T' && type != 'B') {
|
||||
std::string fname = info.get_string(fs_meta_name::name, "");
|
||||
fname.resize(8, ' ');
|
||||
|
||||
|
||||
bdir.w8 (off+0x0, info.get_flag(fs_meta_name::basic, true) ? 'T' : 'B');
|
||||
bdir.w8 (off+0x1, ':');
|
||||
bdir.wstr(off+0x2, fname);
|
||||
|
@ -29,11 +29,11 @@ private:
|
||||
uint32_t index_bytes = 0, index_cells = 0;
|
||||
uint32_t datasize_cells = 0, gapsize_cells = 0;
|
||||
uint32_t block_count = 0, weak_bits = 0;
|
||||
|
||||
|
||||
uint32_t data_size_bits = 0;
|
||||
|
||||
|
||||
bool info_set = false;
|
||||
|
||||
|
||||
const uint8_t *data = nullptr;
|
||||
uint32_t data_size = 0;
|
||||
};
|
||||
@ -46,25 +46,25 @@ private:
|
||||
uint32_t min_cylinder = 0, max_cylinder = 0, min_head = 0, max_head = 0;
|
||||
uint32_t credit_day = 0, credit_time = 0;
|
||||
uint32_t platform[4] = {}, extra[5] = {};
|
||||
|
||||
|
||||
uint32_t crc32r(const uint8_t *data, uint32_t size);
|
||||
|
||||
|
||||
bool parse_info(const uint8_t *info);
|
||||
bool parse_imge(const uint8_t *imge);
|
||||
bool parse_data(const uint8_t *data, uint32_t &pos, uint32_t max_extra_size);
|
||||
|
||||
|
||||
bool scan_one_tag(std::vector<uint8_t> &data, uint32_t &pos, uint8_t *&tag, uint32_t &tsize);
|
||||
bool scan_all_tags(std::vector<uint8_t> &data);
|
||||
static uint32_t r32(const uint8_t *p);
|
||||
static uint32_t rb(const uint8_t *&p, int count);
|
||||
|
||||
|
||||
track_info *get_index(uint32_t idx);
|
||||
|
||||
|
||||
void track_write_raw(std::vector<uint32_t>::iterator &tpos, const uint8_t *data, uint32_t cells, bool &context);
|
||||
void track_write_mfm(std::vector<uint32_t>::iterator &tpos, const uint8_t *data, uint32_t start_offset, uint32_t patlen, uint32_t cells, bool &context);
|
||||
void track_write_weak(std::vector<uint32_t>::iterator &tpos, uint32_t cells);
|
||||
bool generate_block_data(const uint8_t *data, const uint8_t *dlimit, std::vector<uint32_t>::iterator tpos, std::vector<uint32_t>::iterator tlimit, bool &context);
|
||||
|
||||
|
||||
bool gap_description_to_reserved_size(const uint8_t *&data, const uint8_t *dlimit, uint32_t &res_size);
|
||||
bool generate_gap_from_description(const uint8_t *&data, const uint8_t *dlimit, std::vector<uint32_t>::iterator tpos, uint32_t size, bool pre, bool &context);
|
||||
bool generate_block_gap_0(uint32_t gap_cells, uint8_t pattern, uint32_t &spos, uint32_t ipos, std::vector<uint32_t>::iterator &tpos, bool &context);
|
||||
@ -72,18 +72,18 @@ private:
|
||||
bool generate_block_gap_2(uint32_t gap_cells, uint32_t &spos, uint32_t ipos, const uint8_t *data, const uint8_t *dlimit, std::vector<uint32_t>::iterator &tpos, bool &context);
|
||||
bool generate_block_gap_3(uint32_t gap_cells, uint32_t &spos, uint32_t ipos, const uint8_t *data, const uint8_t *dlimit, std::vector<uint32_t>::iterator &tpos, bool &context);
|
||||
bool generate_block_gap(uint32_t gap_type, uint32_t gap_cells, uint8_t pattern, uint32_t &spos, uint32_t ipos, const uint8_t *data, const uint8_t *dlimit, std::vector<uint32_t>::iterator tpos, bool &context);
|
||||
|
||||
|
||||
bool generate_block(track_info *t, uint32_t idx, uint32_t ipos, std::vector<uint32_t> &track, uint32_t &pos, uint32_t &dpos, uint32_t &gpos, uint32_t &spos, bool &context);
|
||||
uint32_t block_compute_real_size(track_info *t);
|
||||
|
||||
|
||||
void timing_set(std::vector<uint32_t> &track, uint32_t start, uint32_t end, uint32_t time);
|
||||
bool generate_timings(track_info *t, std::vector<uint32_t> &track, const std::vector<uint32_t> &data_pos, const std::vector<uint32_t> &gap_pos);
|
||||
|
||||
|
||||
void rotate(std::vector<uint32_t> &track, uint32_t offset, uint32_t size);
|
||||
void mark_track_splice(std::vector<uint32_t> &track, uint32_t offset, uint32_t size);
|
||||
bool generate_track(track_info *t, floppy_image *image);
|
||||
bool generate_tracks(floppy_image *image);
|
||||
|
||||
|
||||
bool parse(std::vector<uint8_t> &data, floppy_image *image);
|
||||
};
|
||||
};
|
||||
|
@ -130,10 +130,10 @@ std::vector<uint8_t> vtech_common_format::flux_to_image(floppy_image *image)
|
||||
switch(mode) {
|
||||
case 0: // idle
|
||||
if(buf == 0x80808000fee718c3)
|
||||
mode = 1;
|
||||
mode = 1;
|
||||
count = 0;
|
||||
break;
|
||||
|
||||
|
||||
case 1: // sector header
|
||||
if(count == 24) {
|
||||
uint8_t trk = buf >> 16;
|
||||
@ -148,23 +148,23 @@ std::vector<uint8_t> vtech_common_format::flux_to_image(floppy_image *image)
|
||||
mode = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 2: // look for sector data
|
||||
if(buf == 0x80808000fee718c3)
|
||||
mode = 1;
|
||||
mode = 1;
|
||||
else if(buf == 0x80808000c318e7fe)
|
||||
mode = 3;
|
||||
count = 0;
|
||||
break;
|
||||
|
||||
|
||||
case 3: // sector data
|
||||
if(count <= 128*8 && !(count & 7)) {
|
||||
uint8_t byte = buf;
|
||||
checksum += byte;
|
||||
*dest++ = byte;
|
||||
} else if(count == 128*8+16) {
|
||||
// uint16_t disk_checksum = buf;
|
||||
// printf("sector checksum %04x %04x\n", checksum, disk_checksum);
|
||||
// uint16_t disk_checksum = buf;
|
||||
// printf("sector checksum %04x %04x\n", checksum, disk_checksum);
|
||||
mode = 0;
|
||||
}
|
||||
break;
|
||||
@ -280,10 +280,10 @@ bool vtech_dsk_format::load(io_generic *io, uint32_t form_factor, const std::vec
|
||||
switch(mode) {
|
||||
case 0: // idle
|
||||
if(buf == 0x80808000fee718c3)
|
||||
mode = 1;
|
||||
mode = 1;
|
||||
count = 0;
|
||||
break;
|
||||
|
||||
|
||||
case 1: // sector header
|
||||
if(count == 3) {
|
||||
uint8_t trk = buf >> 16;
|
||||
@ -298,15 +298,15 @@ bool vtech_dsk_format::load(io_generic *io, uint32_t form_factor, const std::vec
|
||||
mode = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 2: // look for sector data
|
||||
if(buf == 0x80808000fee718c3)
|
||||
mode = 1;
|
||||
mode = 1;
|
||||
else if(buf == 0x80808000c318e7fe)
|
||||
mode = 3;
|
||||
count = 0;
|
||||
break;
|
||||
|
||||
|
||||
case 3: // sector data
|
||||
if(count <= 128) {
|
||||
uint8_t byte = buf;
|
||||
|
@ -4,14 +4,14 @@
|
||||
|
||||
Super A'Can sound driver
|
||||
|
||||
Currently has a number of unknown registers and functionality.
|
||||
Currently has a number of unknown registers and functionality.
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "acan.h"
|
||||
|
||||
#define VERBOSE (1)
|
||||
#define VERBOSE (1)
|
||||
#include "logmacro.h"
|
||||
|
||||
// device type definition
|
||||
|
@ -2,62 +2,62 @@
|
||||
// copyright-holders:R. Belmont, tim lindner
|
||||
/***************************************************************************
|
||||
|
||||
drivers/enmirage.c
|
||||
drivers/enmirage.c
|
||||
|
||||
Ensoniq Mirage Sampler
|
||||
Preliminary driver by R. Belmont
|
||||
Fleshed out by tim lindner
|
||||
Ensoniq Mirage Sampler
|
||||
Preliminary driver by R. Belmont
|
||||
Fleshed out by tim lindner
|
||||
|
||||
Models:
|
||||
DSK-8: Pratt-Reed keyboard (early 1984)
|
||||
DSK-8: Fatar keyboard (late 1984)
|
||||
DMS-8: Rack mount (1985)
|
||||
DSK-1: Unweighted keyboard, stereo output (1986)
|
||||
Models:
|
||||
DSK-8: Pratt-Reed keyboard (early 1984)
|
||||
DSK-8: Fatar keyboard (late 1984)
|
||||
DMS-8: Rack mount (1985)
|
||||
DSK-1: Unweighted keyboard, stereo output (1986)
|
||||
|
||||
M6809 Map for Mirage:
|
||||
0000-7fff: 32k window on 128k of sample RAM
|
||||
8000-bfff: main RAM
|
||||
c000-dfff: optional expansion RAM
|
||||
e100-e101: 6850 UART (for MIDI)
|
||||
e200-e2ff: 6522 VIA
|
||||
e400-e407: write to both filters
|
||||
e408-e40f: filter cut-off frequency
|
||||
e410-e417: filter resonance
|
||||
e418-e41f: DAC pre-set
|
||||
e800-e803: WD1770 FDC
|
||||
ec00-ecef: ES5503 "DOC" sound chip
|
||||
f000-ffff: boot ROM
|
||||
M6809 Map for Mirage:
|
||||
0000-7fff: 32k window on 128k of sample RAM
|
||||
8000-bfff: main RAM
|
||||
c000-dfff: optional expansion RAM
|
||||
e100-e101: 6850 UART (for MIDI)
|
||||
e200-e2ff: 6522 VIA
|
||||
e400-e407: write to both filters
|
||||
e408-e40f: filter cut-off frequency
|
||||
e410-e417: filter resonance
|
||||
e418-e41f: DAC pre-set
|
||||
e800-e803: WD1770 FDC
|
||||
ec00-ecef: ES5503 "DOC" sound chip
|
||||
f000-ffff: boot ROM
|
||||
|
||||
M6809 Interrupts:
|
||||
NMI: IRQ from WD1772
|
||||
IRQ: wired-ORed: DRQ from WD1772, IRQ from ES5503, IRQ from VIA6522, IRQ from cartridge
|
||||
FIRQ: IRQ from 6850 UART
|
||||
M6809 Interrupts:
|
||||
NMI: IRQ from WD1772
|
||||
IRQ: wired-ORed: DRQ from WD1772, IRQ from ES5503, IRQ from VIA6522, IRQ from cartridge
|
||||
FIRQ: IRQ from 6850 UART
|
||||
|
||||
LED / switch matrix:
|
||||
LED / switch matrix:
|
||||
|
||||
A B C D E F G DP
|
||||
ROW 0: LOAD UPPER LOAD LOWER SAMPLE UPPER PLAY SEQ LOAD SEQ SAVE SEQ REC SEQ SAMPLE LOWER
|
||||
ROW 1: 3 6 9 5 8 0 2 Enter
|
||||
ROW 2: 1 4 7 up arrow PARAM dn arrow VALUE CANCEL
|
||||
L. AN: SEG A SEG B SEG C SEG D SEG E SEG F SEG G SEG DP (decimal point)
|
||||
R. AN: SEG A SEG B SEG C SEG D SEG E SEG F SEG G SEG DP
|
||||
A B C D E F G DP
|
||||
ROW 0: LOAD UPPER LOAD LOWER SAMPLE UPPER PLAY SEQ LOAD SEQ SAVE SEQ REC SEQ SAMPLE LOWER
|
||||
ROW 1: 3 6 9 5 8 0 2 Enter
|
||||
ROW 2: 1 4 7 up arrow PARAM dn arrow VALUE CANCEL
|
||||
L. AN: SEG A SEG B SEG C SEG D SEG E SEG F SEG G SEG DP (decimal point)
|
||||
R. AN: SEG A SEG B SEG C SEG D SEG E SEG F SEG G SEG DP
|
||||
|
||||
Column number in VIA port A bits 0-2 is converted to discrete lines by a 74LS145.
|
||||
Port A bit 3 is right anode, bit 4 is left anode
|
||||
ROW 0 is read on VIA port A bit 5, ROW 1 in port A bit 6, and ROW 2 in port A bit 7.
|
||||
Column number in VIA port A bits 0-2 is converted to discrete lines by a 74LS145.
|
||||
Port A bit 3 is right anode, bit 4 is left anode
|
||||
ROW 0 is read on VIA port A bit 5, ROW 1 in port A bit 6, and ROW 2 in port A bit 7.
|
||||
|
||||
Keyboard models talk to the R6500/11 through the VIA shifter: CA2 is handshake, CB1 is shift clock,
|
||||
CB2 is shift data.
|
||||
This is unconnected on the rackmount version.
|
||||
Keyboard models talk to the R6500/11 through the VIA shifter: CA2 is handshake, CB1 is shift clock,
|
||||
CB2 is shift data.
|
||||
This is unconnected on the rackmount version.
|
||||
|
||||
Unimplemented:
|
||||
* Four Pole Low-Pass Voltage Controlled Filter section
|
||||
* External sync signal
|
||||
* Foot pedal
|
||||
* ADC feedback
|
||||
* Piano keyboard controller
|
||||
* Expansion connector
|
||||
* Stereo output
|
||||
Unimplemented:
|
||||
* Four Pole Low-Pass Voltage Controlled Filter section
|
||||
* External sync signal
|
||||
* Foot pedal
|
||||
* ADC feedback
|
||||
* Piano keyboard controller
|
||||
* Expansion connector
|
||||
* Stereo output
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -79,15 +79,15 @@
|
||||
|
||||
#include "enmirage.lh"
|
||||
|
||||
#define LOG_ADC_READ (1U << 1)
|
||||
#define LOG_FILTER_WRITE (1U << 2)
|
||||
#define LOG_ADC_READ (1U << 1)
|
||||
#define LOG_FILTER_WRITE (1U << 2)
|
||||
#define VERBOSE (0)
|
||||
//#define VERBOSE (LOG_ADC_READ)
|
||||
//#define VERBOSE (LOG_ADC_READ|LOG_FILTER_WRITE)
|
||||
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGADCREAD(...) LOGMASKED(LOG_ADC_READ, __VA_ARGS__)
|
||||
#define LOGADCREAD(...) LOGMASKED(LOG_ADC_READ, __VA_ARGS__)
|
||||
#define LOGFILTERWRITE(...) LOGMASKED(LOG_FILTER_WRITE, __VA_ARGS__)
|
||||
|
||||
#define PITCH_TAG "pitch"
|
||||
@ -175,7 +175,7 @@ uint8_t enmirage_state::mirage_adc_read()
|
||||
switch(m_mux_value & 0x03)
|
||||
{
|
||||
case 0:
|
||||
// value = m_cassette->input(); /* compressed and mixed input: audio in and ES 5503 (TODO) */
|
||||
// value = m_cassette->input(); /* compressed and mixed input: audio in and ES 5503 (TODO) */
|
||||
value = m_wave[m_wave_index]; /* fake data to get past filter calibration (remove when filter implemented) */
|
||||
LOGADCREAD("%s, 5503 sample: channel: compressed input, data: $%02x\n", machine().describe_context(), value);
|
||||
if(++m_wave_index == 34) m_wave_index = 0;
|
||||
@ -241,7 +241,7 @@ void enmirage_state::coefficients_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
|
||||
// port A:
|
||||
// bits 5/6/7 keypad rows 0/1/2 return
|
||||
// bits 5/6/7 keypad rows 0/1/2 return
|
||||
INPUT_CHANGED_MEMBER(enmirage_state::input_changed)
|
||||
{
|
||||
update_keypad_matrix();
|
||||
@ -259,8 +259,8 @@ void enmirage_state::update_keypad_matrix()
|
||||
}
|
||||
|
||||
// port B:
|
||||
// bit 6: IN disk load
|
||||
// bit 5: IN Q Chip sync
|
||||
// bit 6: IN disk load
|
||||
// bit 5: IN Q Chip sync
|
||||
|
||||
uint8_t enmirage_state::mirage_via_read_portb()
|
||||
{
|
||||
@ -280,10 +280,10 @@ uint8_t enmirage_state::mirage_via_read_portb()
|
||||
|
||||
// port A: front panel
|
||||
// bits 0/1/2: dual purpose (0 to 7 lines, though a 74LS145 decoder):
|
||||
// keyboard matrix column select
|
||||
// 7 segment display driver
|
||||
// bits 3/4 = right and left 7 segment display enable
|
||||
// bits 5/6/7 = Keyboard matrix row sense from 0 to 2
|
||||
// keyboard matrix column select
|
||||
// 7 segment display driver
|
||||
// bits 3/4 = right and left 7 segment display enable
|
||||
// bits 5/6/7 = Keyboard matrix row sense from 0 to 2
|
||||
void enmirage_state::mirage_via_write_porta(uint8_t data)
|
||||
{
|
||||
u8 segdata = data & 7;
|
||||
@ -298,12 +298,12 @@ void enmirage_state::mirage_via_write_porta(uint8_t data)
|
||||
}
|
||||
|
||||
// port B:
|
||||
// bit 7: OUT UART clock
|
||||
// bit 4: OUT disk select, motor on, and 6500/11 reset
|
||||
// bit 3: OUT sample/play
|
||||
// bit 2: OUT mic line/in
|
||||
// bit 1: OUT upper/lower bank (64k halves)
|
||||
// bit 0: OUT bank 0/bank 1 (32k quarters)
|
||||
// bit 7: OUT UART clock
|
||||
// bit 4: OUT disk select, motor on, and 6500/11 reset
|
||||
// bit 3: OUT sample/play
|
||||
// bit 2: OUT mic line/in
|
||||
// bit 1: OUT upper/lower bank (64k halves)
|
||||
// bit 0: OUT bank 0/bank 1 (32k quarters)
|
||||
|
||||
void enmirage_state::mirage_via_write_portb(uint8_t data)
|
||||
{
|
||||
@ -386,32 +386,32 @@ void enmirage_state::mirage(machine_config &config)
|
||||
|
||||
static INPUT_PORTS_START(mirage)
|
||||
PORT_START("pb5") /* KEY ROW 0 */
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Load Upper") PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Load Lower") PORT_CODE(KEYCODE_B) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Sample Upper") PORT_CODE(KEYCODE_C) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Play Sequence") PORT_CODE(KEYCODE_D) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Load Sequence") PORT_CODE(KEYCODE_E) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Save Sequence") PORT_CODE(KEYCODE_F) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Record Sequence") PORT_CODE(KEYCODE_G) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Sample Lower") PORT_CODE(KEYCODE_H) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Load Upper") PORT_CODE(KEYCODE_A) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Load Lower") PORT_CODE(KEYCODE_B) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Sample Upper") PORT_CODE(KEYCODE_C) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Play Sequence") PORT_CODE(KEYCODE_D) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Load Sequence") PORT_CODE(KEYCODE_E) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Save Sequence") PORT_CODE(KEYCODE_F) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Record Sequence") PORT_CODE(KEYCODE_G) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Sample Lower") PORT_CODE(KEYCODE_H) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_START("pb6") /* KEY ROW 1 */
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0/Prog") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0/Prog") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_START("pb7") /* KEY ROW 2 */
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On/Up") PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Param") PORT_CODE(KEYCODE_I) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Off/Down") PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Value") PORT_CODE(KEYCODE_J) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Cancel") PORT_CODE(KEYCODE_K) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("On/Up") PORT_CODE(KEYCODE_UP) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Param") PORT_CODE(KEYCODE_I) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Off/Down") PORT_CODE(KEYCODE_DOWN) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Value") PORT_CODE(KEYCODE_J) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Cancel") PORT_CODE(KEYCODE_K) PORT_CHANGED_MEMBER(DEVICE_SELF, enmirage_state, input_changed, 0)
|
||||
|
||||
PORT_START(PITCH_TAG)
|
||||
PORT_BIT(0xff, 0x7f, IPT_PADDLE) PORT_NAME("Pitch Wheel") PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x00,0xff) PORT_CODE_INC(KEYCODE_4_PAD) PORT_CODE_DEC(KEYCODE_1_PAD) PORT_PLAYER(1)
|
||||
|
@ -874,7 +874,7 @@ void gticlub_state::gticlub(machine_config &config)
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(60);
|
||||
screen.set_size(1024, 1024);
|
||||
screen.set_visarea(40, 511+40, 28, 383+28); // needs CRTC emulation
|
||||
screen.set_visarea(40, 511+40, 28, 383+28); // needs CRTC emulation
|
||||
screen.set_screen_update(FUNC(gticlub_state::screen_update_gticlub));
|
||||
|
||||
PALETTE(config, m_palette).set_entries(65536);
|
||||
|
@ -567,14 +567,14 @@ void hornet_state::sysreg_w(offs_t offset, uint8_t data)
|
||||
case 4: // System Register 1
|
||||
{
|
||||
/*
|
||||
0x80 = SNDRES (sound reset)
|
||||
0x40 = COMRES (COM reset)
|
||||
0x20 = COINRQ2 (EEPROM SCL?)
|
||||
0x10 = COINRQ1 (EEPROM data)
|
||||
0x08 = ADCS (ADC CS)
|
||||
0x04 = ADCONV (ADC CONV)
|
||||
0x02 = ADDI (ADC DI)
|
||||
0x01 = ADDSCLK (ADC SCLK)
|
||||
0x80 = SNDRES (sound reset)
|
||||
0x40 = COMRES (COM reset)
|
||||
0x20 = COINRQ2 (EEPROM SCL?)
|
||||
0x10 = COINRQ1 (EEPROM data)
|
||||
0x08 = ADCS (ADC CS)
|
||||
0x04 = ADCONV (ADC CONV)
|
||||
0x02 = ADDI (ADC DI)
|
||||
0x01 = ADDSCLK (ADC SCLK)
|
||||
*/
|
||||
m_adc12138->cs_w((data >> 3) & 0x1);
|
||||
m_adc12138->conv_w((data >> 2) & 0x1);
|
||||
|
@ -179,16 +179,16 @@ void inufuku_state::palettereg_w(offs_t offset, u16 data)
|
||||
m_bg_palettebank = (data & 0xf000) >> 12;
|
||||
m_bg_tilemap->mark_all_dirty();
|
||||
/*
|
||||
if (data & ~0xf000)
|
||||
logerror("%s: palettereg_w %02X: %04x\n", machine().describe_context(), offset << 1, data);
|
||||
if (data & ~0xf000)
|
||||
logerror("%s: palettereg_w %02X: %04x\n", machine().describe_context(), offset << 1, data);
|
||||
*/
|
||||
break;
|
||||
case 0x03:
|
||||
m_tx_palettebank = (data & 0xf000) >> 12;
|
||||
m_tx_tilemap->mark_all_dirty();
|
||||
/*
|
||||
if (data & ~0xf000)
|
||||
logerror("%s: palettereg_w %02X: %04x\n", machine().describe_context(), offset << 1, data);
|
||||
if (data & ~0xf000)
|
||||
logerror("%s: palettereg_w %02X: %04x\n", machine().describe_context(), offset << 1, data);
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
@ -209,8 +209,8 @@ void inufuku_state::scrollreg_w(offs_t offset, u16 data)
|
||||
case 0x04:
|
||||
m_bg_raster = BIT(~data, 9);
|
||||
/*
|
||||
if (data & ~0x0200)
|
||||
logerror("%s: palettereg_w %02X: %04x\n", machine().describe_context(), offset << 1, data);
|
||||
if (data & ~0x0200)
|
||||
logerror("%s: palettereg_w %02X: %04x\n", machine().describe_context(), offset << 1, data);
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
|
@ -222,8 +222,8 @@ uint8_t mc10_state::mc6847_videoram_r(offs_t offset)
|
||||
if (offset == ~0) return 0xff;
|
||||
|
||||
uint8_t result = m_ram->read(offset);
|
||||
m_mc6847->inv_w(BIT(result, 6));
|
||||
m_mc6847->as_w(BIT(result, 7));
|
||||
m_mc6847->inv_w(BIT(result, 6));
|
||||
m_mc6847->as_w(BIT(result, 7));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
/*******************************************************************************
|
||||
|
||||
Skeleton driver for Merit Scorpion darts machines.
|
||||
The same PCB is used also on other Merit darts machines, like Regent Darts.
|
||||
The same PCB is used also on other Merit darts machines, like Regent Darts.
|
||||
|
||||
Hardware overview:
|
||||
Main CPU: Dallas DS80C3202-UM or compatible (80C31 on older models)
|
||||
|
@ -174,7 +174,7 @@ void mermaid_state::mermaid_map(address_map &map)
|
||||
map(0xe800, 0xe807).w("latch2", FUNC(ls259_device::write_d0));
|
||||
map(0xf000, 0xf000).portr("P2");
|
||||
map(0xf800, 0xf800).r(FUNC(mermaid_state::mermaid_collision_r));
|
||||
// map(0xf802, 0xf802).nopw(); // ???
|
||||
// map(0xf802, 0xf802).nopw(); // ???
|
||||
map(0xf806, 0xf806).w(FUNC(mermaid_state::mermaid_ay8910_write_port_w));
|
||||
map(0xf807, 0xf807).w(FUNC(mermaid_state::mermaid_ay8910_control_port_w));
|
||||
}
|
||||
|
@ -876,7 +876,7 @@ static INPUT_PORTS_START( pangdsw )
|
||||
|
||||
// the settings are shown if entering test mode. The game always respects the dip setting, changing the values in test mode has no effect
|
||||
// it appears the bootleggers didn't care to add dips for flipscreen, free play and extend values (or at least they haven't been found yet)
|
||||
PORT_START("DSW1")
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:6,7,8")
|
||||
PORT_DIPSETTING( 0x07, DEF_STR( 5C_1C ) )
|
||||
PORT_DIPSETTING( 0x06, DEF_STR( 4C_1C ) )
|
||||
|
@ -378,7 +378,7 @@ uint32_t nwktr_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
int board = m_exrgb ? 1 : 0;
|
||||
|
||||
m_voodoo[board]->voodoo_update(bitmap, cliprect);
|
||||
m_k001604[0]->draw_front_layer(screen, bitmap, cliprect); // K001604 on slave board doesn't seem to output anything. Bug or intended?
|
||||
m_k001604[0]->draw_front_layer(screen, bitmap, cliprect); // K001604 on slave board doesn't seem to output anything. Bug or intended?
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -407,7 +407,7 @@ uint8_t nwktr_state::sysreg_r(offs_t offset)
|
||||
case 4:
|
||||
r = m_dsw->read();
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -439,11 +439,11 @@ void nwktr_state::sysreg_w(offs_t offset, uint8_t data)
|
||||
|
||||
case 7:
|
||||
/*
|
||||
0x80 = EXRES1
|
||||
0x40 = EXRES0
|
||||
0x20 = EXID1
|
||||
0x10 = EXID0
|
||||
0x01 = EXRGB
|
||||
0x80 = EXRES1
|
||||
0x40 = EXRES0
|
||||
0x20 = EXID1
|
||||
0x10 = EXID0
|
||||
0x01 = EXRGB
|
||||
*/
|
||||
if (data & 0x80) // CG Board 1 IRQ Ack
|
||||
m_maincpu->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
|
||||
@ -455,7 +455,7 @@ void nwktr_state::sysreg_w(offs_t offset, uint8_t data)
|
||||
// Racing Jam sets CG board ID to 2 when writing to the tilemap chip.
|
||||
// This could mean broadcast to both CG boards?
|
||||
|
||||
m_exrgb = data & 0x1; // Select which CG Board outputs signal
|
||||
m_exrgb = data & 0x1; // Select which CG Board outputs signal
|
||||
|
||||
m_cg_view.select(m_konppc->get_cgboard_id() ? 1 : 0);
|
||||
break;
|
||||
|
@ -235,10 +235,10 @@ uint8_t portfolio_state::irq_status_r()
|
||||
{
|
||||
uint8_t data = m_ip;
|
||||
/*
|
||||
The BIOS interrupt 11h (Equipment list) reports that the second floppy drive (B:) is
|
||||
installed if the 3rd bit is set (which is also the external interrupt line).
|
||||
It is not clear if the ~NMD1 line is OR or XORed or muxed with the interrupt line,
|
||||
but this way seems to work.
|
||||
The BIOS interrupt 11h (Equipment list) reports that the second floppy drive (B:) is
|
||||
installed if the 3rd bit is set (which is also the external interrupt line).
|
||||
It is not clear if the ~NMD1 line is OR or XORed or muxed with the interrupt line,
|
||||
but this way seems to work.
|
||||
*/
|
||||
data |= !m_exp->nmd1_r() << 3;
|
||||
|
||||
@ -383,10 +383,10 @@ uint8_t portfolio_state::battery_r()
|
||||
uint8_t data = 0;
|
||||
|
||||
/*
|
||||
Partially stores what has been written into this port.
|
||||
Used by interrupt 61h service 24h (Get ROM/CCM state).
|
||||
Setting bit 1 here causes the BIOS to permanently wedge the external ROM
|
||||
select on, so mask it out as a workaround.
|
||||
Partially stores what has been written into this port.
|
||||
Used by interrupt 61h service 24h (Get ROM/CCM state).
|
||||
Setting bit 1 here causes the BIOS to permanently wedge the external ROM
|
||||
select on, so mask it out as a workaround.
|
||||
*/
|
||||
data |= (m_rom_b & 0b101);
|
||||
|
||||
|
@ -340,7 +340,7 @@ uint8_t schick_state::schick_prot_0a_r(offs_t offset)
|
||||
uint8_t schick_state::schick_prot_76_r(offs_t offset)
|
||||
{
|
||||
// if you get the ? blocks together on round 6?
|
||||
// will give game over if wrong
|
||||
// will give game over if wrong
|
||||
|
||||
// FCCD: DB 26 in a,($76)
|
||||
// FCCF: CB 57 bit 2,a
|
||||
@ -406,8 +406,8 @@ void schick_state::schick_map(address_map &map)
|
||||
map(0x9080, 0x90bf).portr("IN1");
|
||||
map(0x90c0, 0x90ff).portr("IN0");
|
||||
|
||||
// map(0xa000, 0xbfff).rom(); // maybe ROM?
|
||||
map(0xa808, 0xa808).r(FUNC(schick_state::schick_prot_a808_r));
|
||||
// map(0xa000, 0xbfff).rom(); // maybe ROM?
|
||||
map(0xa808, 0xa808).r(FUNC(schick_state::schick_prot_a808_r));
|
||||
|
||||
map(0xe000, 0xffff).rom(); // ROM
|
||||
}
|
||||
|
@ -2,42 +2,42 @@
|
||||
// copyright-holders:David Haywood
|
||||
|
||||
/*
|
||||
Alien Storm 'System 18' bootlegs
|
||||
Alien Storm 'System 18' bootlegs
|
||||
|
||||
these have extensively reworked 68000 code to handle the modified hardware
|
||||
these have extensively reworked 68000 code to handle the modified hardware
|
||||
|
||||
Noteworthy features
|
||||
- no VDP
|
||||
(so no backgrounds in gallary stages, some enemies removed from first stage)
|
||||
- completely reworked background 'tilemaps'
|
||||
(regular page registers not used, instead there's a new 'row list' defining page and scroll per row)
|
||||
- less capable sound system
|
||||
(only hooked up for astormb2 set, astormbl set is using original sound, which might not be correct)
|
||||
Noteworthy features
|
||||
- no VDP
|
||||
(so no backgrounds in gallary stages, some enemies removed from first stage)
|
||||
- completely reworked background 'tilemaps'
|
||||
(regular page registers not used, instead there's a new 'row list' defining page and scroll per row)
|
||||
- less capable sound system
|
||||
(only hooked up for astormb2 set, astormbl set is using original sound, which might not be correct)
|
||||
|
||||
Issues
|
||||
- title screen vanishes as soon as it appears (it's in the wrong half of 'tilemap' pages?)
|
||||
does this happen on hardware? swapping them causes issues ingame instead, currently a kludge is used to only swap one layer
|
||||
Issues
|
||||
- title screen vanishes as soon as it appears (it's in the wrong half of 'tilemap' pages?)
|
||||
does this happen on hardware? swapping them causes issues ingame instead, currently a kludge is used to only swap one layer
|
||||
|
||||
- some stuck parts in the gallery stages
|
||||
again, does this happen on hardware? fixed with same kludge as above?
|
||||
- some stuck parts in the gallery stages
|
||||
again, does this happen on hardware? fixed with same kludge as above?
|
||||
|
||||
- there are 'bad' pixels near the shadows on some player sprites, but these differences in the GFX ROMs have been found on
|
||||
more than 1 PCB, does the bootleg hardware need them for some purpose?
|
||||
- there are 'bad' pixels near the shadows on some player sprites, but these differences in the GFX ROMs have been found on
|
||||
more than 1 PCB, does the bootleg hardware need them for some purpose?
|
||||
|
||||
- the 'Action' 'Destroy' and 'Run' screens don't display properly in attract, this also seems to be related to how
|
||||
the bootleg is remapping the tilemap pages and needs checking against the bootleg hardware.
|
||||
- the 'Action' 'Destroy' and 'Run' screens don't display properly in attract, this also seems to be related to how
|
||||
the bootleg is remapping the tilemap pages and needs checking against the bootleg hardware.
|
||||
|
||||
- "Press Start" doesn't flash after inserting a credit, nor does the number of credits display
|
||||
again this should be verified against the bootleg hardware
|
||||
- "Press Start" doesn't flash after inserting a credit, nor does the number of credits display
|
||||
again this should be verified against the bootleg hardware
|
||||
|
||||
Currently the modified background tilemaps are not handled with the tilemap system, as some of the changes make them much more
|
||||
difficult to fit into the tilemap system. This might be reconsidered later.
|
||||
Currently the modified background tilemaps are not handled with the tilemap system, as some of the changes make them much more
|
||||
difficult to fit into the tilemap system. This might be reconsidered later.
|
||||
|
||||
TODO:
|
||||
TODO:
|
||||
|
||||
tidy up + optimized video code, decide if using tilemaps is cleaner or not
|
||||
verify glitches etc. against bootleg hardware
|
||||
convert system18 / bootleg OKI sound system to devices to share with other drivers
|
||||
tidy up + optimized video code, decide if using tilemaps is cleaner or not
|
||||
verify glitches etc. against bootleg hardware
|
||||
convert system18 / bootleg OKI sound system to devices to share with other drivers
|
||||
|
||||
*/
|
||||
|
||||
@ -62,7 +62,7 @@ namespace {
|
||||
class segas18_astormbl_state : public sega_16bit_common_base
|
||||
{
|
||||
protected:
|
||||
segas18_astormbl_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
segas18_astormbl_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: sega_16bit_common_base(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_screen(*this, "screen")
|
||||
@ -107,7 +107,7 @@ private:
|
||||
class segas18_astormbl_s18snd_state : public segas18_astormbl_state
|
||||
{
|
||||
public:
|
||||
segas18_astormbl_s18snd_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
segas18_astormbl_s18snd_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: segas18_astormbl_state(mconfig, type, tag)
|
||||
, m_soundcpu(*this, "soundcpu")
|
||||
, m_soundbank(*this, "soundbank")
|
||||
@ -136,7 +136,7 @@ private:
|
||||
class segas18_astormbl_bootsnd_state : public segas18_astormbl_state
|
||||
{
|
||||
public:
|
||||
segas18_astormbl_bootsnd_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
segas18_astormbl_bootsnd_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: segas18_astormbl_state(mconfig, type, tag)
|
||||
, m_soundcpu(*this, "soundcpu")
|
||||
, m_soundlatch(*this, "soundlatch")
|
||||
|
@ -12143,7 +12143,7 @@ u16 downtown_state::downtown_protection_r(offs_t offset)
|
||||
static const u8 word[] = "WALTZ0";
|
||||
if (offset >= 0x100/2 && offset <= 0x10a/2)
|
||||
return word[offset - 0x100/2];
|
||||
|
||||
|
||||
// definitely wants to read-back hi-score table from 0x110-0x15f
|
||||
break;
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ CONS( 2005, jak_care, 0, 0, jakks_gkr_cb, jak_care, jakks_gkr_st
|
||||
// release version of X-Men is not dumped yet
|
||||
CONS( 2005, jak_xmenp, 0, 0, jakks_gkr_2m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Amaze Entertainment", "X-Men - Mutant Reign (JAKKS Pacific TV Game, prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
// Dreamworks Movie Night was never manufactured
|
||||
// Dreamworks Movie Night was never manufactured
|
||||
CONS( 2006, jak_dwmn, 0, 0, jakks_gkr_2m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Amaze Entertainment", "Dreamworks Movie Night (JAKKS Pacific TV Game, Oct 18 2006, prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
CONS( 2006, jak_dwmno,jak_dwmn, 0, jakks_gkr_2m_i2c, jak_gkr_i2c, jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Amaze Entertainment", "Dreamworks Movie Night (JAKKS Pacific TV Game, Apr 24 2006, test program)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
|
@ -213,7 +213,7 @@ Notes:
|
||||
0x7004: 0x4003d554()
|
||||
0x7005: 0x4003d168()
|
||||
0x8000: ? Used by vibration (force feedback?) on pwrshovl
|
||||
0x9100: ? Dendego3 speedometer and brake meter. io_shared[0x1c3c] = speed, io_shared[0x1c3e] = brake
|
||||
0x9100: ? Dendego3 speedometer and brake meter. io_shared[0x1c3c] = speed, io_shared[0x1c3e] = brake
|
||||
0xa000: ? Used by vibration (force feedback?) on pwrshovl
|
||||
0xf000: 0x4002f328() TLCS_Init
|
||||
0xf010: 0x4002f074() Enables TLCS watchdog timer
|
||||
@ -1989,7 +1989,7 @@ void taitotz_state::ppc_common_w(offs_t offset, uint64_t data, uint64_t mem_mask
|
||||
/*
|
||||
if (m_io_share_ram[0xfff] == 0x1010)
|
||||
{
|
||||
printf("PPC -> TLCS cmd 1010: %04X %04X %04X %04X\n", m_io_share_ram[0x1a02/2], m_io_share_ram[0x1a04/2], m_io_share_ram[0x1a06/2], m_io_share_ram[0x1a08/2]);
|
||||
printf("PPC -> TLCS cmd 1010: %04X %04X %04X %04X\n", m_io_share_ram[0x1a02/2], m_io_share_ram[0x1a04/2], m_io_share_ram[0x1a06/2], m_io_share_ram[0x1a08/2]);
|
||||
}
|
||||
*/
|
||||
|
||||
|
@ -4,9 +4,9 @@
|
||||
Yamaha PSR-60/PSR-70 PortaSound keyboards
|
||||
Preliminary driver by R. Belmont, major thanks to reverse-engineering work by JKN0
|
||||
|
||||
Note: PSR-50 is likely the same hardware.
|
||||
Note: PSR-50 is likely the same hardware.
|
||||
|
||||
Special thanks to
|
||||
Special thanks to
|
||||
|
||||
Documentation: https://github.com/JKN0/PSR70-reverse
|
||||
More documentation: https://retroandreverse.blogspot.com/2021/01/reversing-psr-70-hardware.html
|
||||
@ -14,9 +14,9 @@
|
||||
https://retroandreverse.blogspot.com/2021/01/digging-into-ymopq.html
|
||||
|
||||
Service manuals: https://elektrotanya.com/yamaha_psr-60.pdf/download.html
|
||||
https://elektrotanya.com/yamaha_psr-70_sm.pdf/download.html
|
||||
https://elektrotanya.com/yamaha_psr-70_sm.pdf/download.html
|
||||
|
||||
Thanks to Lord Nightmare for help with the BBD filter chain
|
||||
Thanks to Lord Nightmare for help with the BBD filter chain
|
||||
|
||||
CPU: Z80 @ 6 MHz
|
||||
Sound: YM3533 "OPQ" FM @ 3.58 MHz + YM2154 "RYP" sample playback chip for drums
|
||||
@ -284,8 +284,8 @@ void psr60_state::drvif_w(offs_t offset, u8 data)
|
||||
for (int bit = 0; bit < 4; bit++)
|
||||
m_drvif_out[m_drvif_select][bit] = BIT(data, 3 - bit);
|
||||
}
|
||||
// else
|
||||
// printf("DRVIF: %02X = %02X\n", offset, data);
|
||||
// else
|
||||
// printf("DRVIF: %02X = %02X\n", offset, data);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER(psr60_state::drvif_changed)
|
||||
@ -677,11 +677,11 @@ void psr60_state::psr_common(machine_config &config)
|
||||
|
||||
YM3533(config, m_ym3533, 3.579545_MHz_XTAL);
|
||||
m_ym3533->irq_handler().set(FUNC(psr60_state::ym_irq_w));
|
||||
m_ym3533->add_route(0, m_lmixer, 0.16); // channel 1 = ORC
|
||||
m_ym3533->add_route(0, m_lmixer, 0.16); // channel 1 = ORC
|
||||
m_ym3533->add_route(0, m_rmixer, 0.16);
|
||||
m_ym3533->add_route(1, m_lmixer, 0.22); // channel 2 = SABC
|
||||
m_ym3533->add_route(1, m_lmixer, 0.22); // channel 2 = SABC
|
||||
m_ym3533->add_route(1, m_rmixer, 0.22);
|
||||
m_ym3533->add_route(1, m_ic204a, 1.0); // routed to BBD via filters
|
||||
m_ym3533->add_route(1, m_ic204a, 1.0); // routed to BBD via filters
|
||||
|
||||
YM2154(config, m_ryp4, 2250000);
|
||||
m_ryp4->irq_handler().set(FUNC(psr60_state::ryp4_irq_w));
|
||||
|
@ -812,7 +812,7 @@ void jetwave_state::jetwave(machine_config &config)
|
||||
|
||||
// video hardware
|
||||
m_screen->set_size(1024, 1024);
|
||||
m_screen->set_visarea(40, 511 + 40, 27, 383 + 27); // needs CRTC emulation
|
||||
m_screen->set_visarea(40, 511 + 40, 27, 383 + 27); // needs CRTC emulation
|
||||
m_screen->set_screen_update(FUNC(jetwave_state::screen_update));
|
||||
|
||||
K001604(config, m_k001604, 0);
|
||||
|
@ -963,10 +963,10 @@ license:CC0
|
||||
<element ref="keyfill"><bounds x="564" y="494" width="2395" height="524" /></element>
|
||||
|
||||
<!-- key layout:
|
||||
wwwww bbbbbb wwwwwww bbbbbbbb wwwwwwww wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww
|
||||
wwwww bbbbbb wwwwwww bbbbbbbb wwwwwwww wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww
|
||||
45 44 53 44 45 45 44 44 44 44 44 45
|
||||
0->45 48->92 95->148 151->195 198->243 243->288 291->335 338->382 385->429 432->476 479->523 526->571
|
||||
0->79 82->161 164->243 246->325 328->407 410->489 492->571
|
||||
0->45 48->92 95->148 151->195 198->243 243->288 291->335 338->382 385->429 432->476 479->523 526->571
|
||||
0->79 82->161 164->243 246->325 328->407 410->489 492->571
|
||||
-->
|
||||
|
||||
<!-- octave 0 -->
|
||||
|
@ -881,10 +881,10 @@ license:CC0
|
||||
<element ref="keyfill"><bounds x="564" y="494" width="2969" height="524" /></element>
|
||||
|
||||
<!-- key layout:
|
||||
wwwww bbbbbb wwwwwww bbbbbbbb wwwwwwww wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww
|
||||
wwwww bbbbbb wwwwwww bbbbbbbb wwwwwwww wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww bbbbbbbb wwwwwwww
|
||||
45 44 53 44 45 45 44 44 44 44 44 45
|
||||
0->45 48->92 95->148 151->195 198->243 243->288 291->335 338->382 385->429 432->476 479->523 526->571
|
||||
0->79 82->161 164->243 246->325 328->407 410->489 492->571
|
||||
0->45 48->92 95->148 151->195 198->243 243->288 291->335 338->382 385->429 432->476 479->523 526->571
|
||||
0->79 82->161 164->243 246->325 328->407 410->489 492->571
|
||||
-->
|
||||
|
||||
<!-- split leds -->
|
||||
|
@ -135,11 +135,11 @@ uint32_t konami_gn676_lan_device::lanc2_r(offs_t offset, uint32_t mem_mask)
|
||||
}
|
||||
}
|
||||
else if (offset == 1)
|
||||
{
|
||||
r |= 0x00005555; // set all other machines as disconnected
|
||||
{
|
||||
r |= 0x00005555; // set all other machines as disconnected
|
||||
}
|
||||
else if (offset == 3)
|
||||
{
|
||||
{
|
||||
r |= 0xffffffff;
|
||||
}
|
||||
else if (offset == 4)
|
||||
|
@ -5,7 +5,7 @@
|
||||
#include "machine/segashiobd.h"
|
||||
|
||||
/*
|
||||
837-14438 SH I/O BD
|
||||
837-14438 SH I/O BD
|
||||
|
||||
|-------------------------------------------------------------------------------------|
|
||||
| CN3 CN6 CN2 CN1 CN11 |
|
||||
@ -31,38 +31,38 @@
|
||||
| CN4 CN7 CN8 |
|
||||
|-------------------------------------------------------------------------------------|
|
||||
|
||||
IC1 - Hitachi/Renesas SH4 SoC
|
||||
IC2 - Xilinx Spartan XC2S50 PQ208AMS0341 FPGA
|
||||
IC3 - Xilinx 17S50APC Spartan-II Family OTP Configuration PROM, stamped 6372A
|
||||
IC4,5 - Toshiba TC59S6432CFT-10 512K x4 banks x32bit SDRAM
|
||||
IC6 - Macronix MX29LV160ATTC-90 16Mbit Flash ROM
|
||||
IC7 - ST M68AF127BL55MC6 1Mbit (128K x8) SRAM
|
||||
IC8 - 42-pin DIP socket, unpopulated
|
||||
IC9 - NS USBN9604-28M USB Node Controller
|
||||
OSC1 - 33.3333 MHz
|
||||
OSC2 - 32.0000 MHz
|
||||
OCS3 - 24.0000 MHz
|
||||
SW1,2 - pushbuttons
|
||||
DIPSW1 - 4x DIP switch
|
||||
LED1-5 - LEDs
|
||||
LED6,7 - 7seg LEDs
|
||||
BT1 - Panasonic CR2032 battery
|
||||
IC1 - Hitachi/Renesas SH4 SoC
|
||||
IC2 - Xilinx Spartan XC2S50 PQ208AMS0341 FPGA
|
||||
IC3 - Xilinx 17S50APC Spartan-II Family OTP Configuration PROM, stamped 6372A
|
||||
IC4,5 - Toshiba TC59S6432CFT-10 512K x4 banks x32bit SDRAM
|
||||
IC6 - Macronix MX29LV160ATTC-90 16Mbit Flash ROM
|
||||
IC7 - ST M68AF127BL55MC6 1Mbit (128K x8) SRAM
|
||||
IC8 - 42-pin DIP socket, unpopulated
|
||||
IC9 - NS USBN9604-28M USB Node Controller
|
||||
OSC1 - 33.3333 MHz
|
||||
OSC2 - 32.0000 MHz
|
||||
OCS3 - 24.0000 MHz
|
||||
SW1,2 - pushbuttons
|
||||
DIPSW1 - 4x DIP switch
|
||||
LED1-5 - LEDs
|
||||
LED6,7 - 7seg LEDs
|
||||
BT1 - Panasonic CR2032 battery
|
||||
|
||||
CN1 - 8 pin JST VH series connector
|
||||
1 12V
|
||||
2 5V
|
||||
3 5V
|
||||
4 3.3V
|
||||
5 3.3V
|
||||
6 gnd
|
||||
7 gnd
|
||||
8 gnd
|
||||
|
||||
CN2 - 4 pin JST VH series connector
|
||||
1 12V
|
||||
2 12V
|
||||
3 gnd
|
||||
4 gnd
|
||||
CN1 - 8 pin JST VH series connector
|
||||
1 12V
|
||||
2 5V
|
||||
3 5V
|
||||
4 3.3V
|
||||
5 3.3V
|
||||
6 gnd
|
||||
7 gnd
|
||||
8 gnd
|
||||
|
||||
CN2 - 4 pin JST VH series connector
|
||||
1 12V
|
||||
2 12V
|
||||
3 gnd
|
||||
4 gnd
|
||||
*/
|
||||
|
||||
DEFINE_DEVICE_TYPE(SEGA837_14438, sega_837_14438_device, "sega837_14438", "Sega 837-14438 SH I/O BD")
|
||||
|
@ -16,11 +16,11 @@
|
||||
Character RAM:
|
||||
* Foreground tiles 2x or 4x 1Mbit SRAM in a 16-bit bus.
|
||||
- GTI Club: 37C 34C 32C 29C filled
|
||||
- NWK-TR: 34A 31A filled, no empty solder pads
|
||||
- NWK-TR: 34A 31A filled, no empty solder pads
|
||||
* Background tiles 2x or 4x 1Mbit SRAM in a 16-bit bus.
|
||||
- GTI Club: 37A 34A filled, 32A 29A empty
|
||||
- NWK-TR: 34C 31C 28C 25C empty
|
||||
|
||||
- NWK-TR: 34C 31C 28C 25C empty
|
||||
|
||||
Tile RAM:
|
||||
* 3x 256Kbit SRAMs in a 24-bit bus
|
||||
* Each tile entry is 24 bits, 32768 total
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
Background and foreground layer with ROZ capabilities
|
||||
Both tilemaps are 128x128 tiles, with ability to use smaller sub-tilemaps
|
||||
Foreground seems to use 8x8 tiles only, background can select 8x8 or 16x16 tiles
|
||||
Foreground seems to use 8x8 tiles only, background can select 8x8 or 16x16 tiles
|
||||
|
||||
Registers:
|
||||
|
||||
@ -45,11 +45,11 @@
|
||||
0c ???????????????? ----------------
|
||||
---------------- ????????????????
|
||||
20 sxxxxxxxxxxxxxxx ---------------- Background X start (13.3 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Background Y start (13.3 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Background Y start (13.3 fixed point)
|
||||
24 sxxxxxxxxxxxxxxx ---------------- Background ROZ XX (5.11 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Background ROZ YX (5.11 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Background ROZ YX (5.11 fixed point)
|
||||
28 sxxxxxxxxxxxxxxx ---------------- Background ROZ YY (5.11 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Background ROZ XY (5.11 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Background ROZ XY (5.11 fixed point)
|
||||
2c ???????????????? ----------------
|
||||
---------------- ????????????????
|
||||
40 xxxxxxxxxxxxxxxx ----------------
|
||||
@ -65,35 +65,35 @@
|
||||
60 x--------------- ---------------- FG tilemap enable?
|
||||
-x-------------- ---------------- BG tilemap enable?
|
||||
-------x-------- ---------------- Select FG/BG tiles for character RAM read/write access
|
||||
-------0-------- ---------------- FG character RAM
|
||||
-------1-------- ---------------- BG character RAM
|
||||
---------x------ ---------------- BG tile size
|
||||
---------0------ ---------------- 16x16
|
||||
---------1------ ---------------- 8x8
|
||||
---------------- --------------xx Character bank for FG tiles
|
||||
---------------- ------xx-------- Character bank for BG tiles
|
||||
------------xx-- ---------------- Tilemap layout (both bits either set or unset)
|
||||
------------00-- ---------------- "landscape", 256 tiles wide
|
||||
------------11-- ---------------- "portrait", 128 tiles wide
|
||||
6c -x-------------- ---------------- Swap FG/BG tilemap location in portrait mode? (used by Solar Assault) Might also swap left/right in landscape mode but nothing uses this.
|
||||
-0-------------- ---------------- FG Tilemap at 0x0000, BG at 0x4000
|
||||
-1-------------- ---------------- FG Tilemap at 0x4000, BG at 0x0000
|
||||
--------x------- ---------------- ?
|
||||
---------xx----- ---------------- FG sub tilemap width?
|
||||
------------x--- ---------------- ?
|
||||
-------------xx- ---------------- FG sub tilemap height?
|
||||
---------------- ----x----------- Enable BG sub tilemap?
|
||||
---------------- -----xx--------- BG sub tilemap width?
|
||||
---------------- -----00--------- 128 tiles
|
||||
---------------- -----10--------- 64 tiles
|
||||
---------------- -----11--------- 32 tiles
|
||||
---------------- --------x------- ?
|
||||
---------------- ---------xx----- BG sub tilemap height?
|
||||
---------------- ---------00----- 128 tiles
|
||||
---------------- ---------10----- 64 tiles
|
||||
---------------- ---------11----- 32 tiles
|
||||
---------------- ------------x--- ?
|
||||
---------------- -------------xx- BG sub tilemap X (in units of 32 tiles)
|
||||
-------0-------- ---------------- FG character RAM
|
||||
-------1-------- ---------------- BG character RAM
|
||||
---------x------ ---------------- BG tile size
|
||||
---------0------ ---------------- 16x16
|
||||
---------1------ ---------------- 8x8
|
||||
---------------- --------------xx Character bank for FG tiles
|
||||
---------------- ------xx-------- Character bank for BG tiles
|
||||
------------xx-- ---------------- Tilemap layout (both bits either set or unset)
|
||||
------------00-- ---------------- "landscape", 256 tiles wide
|
||||
------------11-- ---------------- "portrait", 128 tiles wide
|
||||
6c -x-------------- ---------------- Swap FG/BG tilemap location in portrait mode? (used by Solar Assault) Might also swap left/right in landscape mode but nothing uses this.
|
||||
-0-------------- ---------------- FG Tilemap at 0x0000, BG at 0x4000
|
||||
-1-------------- ---------------- FG Tilemap at 0x4000, BG at 0x0000
|
||||
--------x------- ---------------- ?
|
||||
---------xx----- ---------------- FG sub tilemap width?
|
||||
------------x--- ---------------- ?
|
||||
-------------xx- ---------------- FG sub tilemap height?
|
||||
---------------- ----x----------- Enable BG sub tilemap?
|
||||
---------------- -----xx--------- BG sub tilemap width?
|
||||
---------------- -----00--------- 128 tiles
|
||||
---------------- -----10--------- 64 tiles
|
||||
---------------- -----11--------- 32 tiles
|
||||
---------------- --------x------- ?
|
||||
---------------- ---------xx----- BG sub tilemap height?
|
||||
---------------- ---------00----- 128 tiles
|
||||
---------------- ---------10----- 64 tiles
|
||||
---------------- ---------11----- 32 tiles
|
||||
---------------- ------------x--- ?
|
||||
---------------- -------------xx- BG sub tilemap X (in units of 32 tiles)
|
||||
|
||||
|
||||
Tilemap layout:
|
||||
@ -111,7 +111,7 @@
|
||||
|
||||
"portrait" mode:
|
||||
|
||||
0 128
|
||||
0 128
|
||||
0x0000 +----------------+
|
||||
| |
|
||||
| |
|
||||
@ -129,23 +129,23 @@
|
||||
+----------------+
|
||||
|
||||
Tilemap sub-split:
|
||||
Tilemap can be split in X and Y direction into 32/64/128 x 32/64/128 sub-tilemaps
|
||||
Sub-tilemap selection works in units of 32 tiles
|
||||
Tilemap can be split in X and Y direction into 32/64/128 x 32/64/128 sub-tilemaps
|
||||
Sub-tilemap selection works in units of 32 tiles
|
||||
|
||||
0 32 64 96 128
|
||||
+-----+-----+-----+-----+
|
||||
| | | | |
|
||||
0 32 64 96 128
|
||||
+-----+-----+-----+-----+
|
||||
| | | | |
|
||||
| 0,0 | 1,0 | 2,0 | 3,0 |
|
||||
32 +-----+-----+-----+-----+
|
||||
| | | | |
|
||||
| | | | |
|
||||
| 0,1 | 1,1 | 2,1 | 3,1 |
|
||||
64 +-----+-----+-----+-----+
|
||||
| | | | |
|
||||
| 0,2 | 1,2 | 2,2 | 3,2 |
|
||||
96 +-----+-----+-----+-----+
|
||||
| | | | |
|
||||
| 0,3 | 1,3 | 2,3 | 3,3 |
|
||||
128 +-----+-----+-----+-----+
|
||||
| | | | |
|
||||
| 0,2 | 1,2 | 2,2 | 3,2 |
|
||||
96 +-----+-----+-----+-----+
|
||||
| | | | |
|
||||
| 0,3 | 1,3 | 2,3 | 3,3 |
|
||||
128 +-----+-----+-----+-----+
|
||||
|
||||
|
||||
|
||||
@ -194,9 +194,9 @@ void k001604_device::device_start()
|
||||
16*128
|
||||
};
|
||||
|
||||
m_fg_char_ram = make_unique_clear<uint8_t[]>(0x80000); // 4x 128Kx8
|
||||
m_bg_char_ram = make_unique_clear<uint8_t[]>(0x80000); // 4x 128Kx8
|
||||
m_tile_ram = make_unique_clear<uint32_t[]>(0x8000); // 32K x 24 bits
|
||||
m_fg_char_ram = make_unique_clear<uint8_t[]>(0x80000); // 4x 128Kx8
|
||||
m_bg_char_ram = make_unique_clear<uint8_t[]>(0x80000); // 4x 128Kx8
|
||||
m_tile_ram = make_unique_clear<uint32_t[]>(0x8000); // 32K x 24 bits
|
||||
m_reg = make_unique_clear<uint32_t[]>(0x400 / 4);
|
||||
|
||||
/* create tilemaps */
|
||||
@ -242,9 +242,9 @@ TILE_GET_INFO_MEMBER(k001604_device::tile_info_fg)
|
||||
uint32_t tilebase = (m_reg[0x18] & 0x40000) ? ((m_reg[0x1b] & 0x40000000) ? 0x4000 : 0x0000) : 0x0000;
|
||||
uint32_t x = tile_index & 0x7f;
|
||||
uint32_t y = tile_index / 128;
|
||||
uint32_t tilemap_pitch = (m_reg[0x18] & 0x40000) ? 128 : 256;
|
||||
uint32_t tilemap_pitch = (m_reg[0x18] & 0x40000) ? 128 : 256;
|
||||
uint32_t val = m_tile_ram[(y * tilemap_pitch) + x + tilebase];
|
||||
int color = (val >> 17) & 0x1f;
|
||||
int color = (val >> 17) & 0x1f;
|
||||
int tile = val & 0x1fff;
|
||||
int flags = 0;
|
||||
|
||||
@ -277,7 +277,7 @@ TILE_GET_INFO_MEMBER(k001604_device::tile_info_bg8)
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(k001604_device::tile_info_bg16)
|
||||
{
|
||||
{
|
||||
uint32_t tilebase = (m_reg[0x18] & 0x40000) ? ((m_reg[0x1b] & 0x40000000) ? 0x0000 : 0x4000) : 0x0000;
|
||||
uint32_t x = tile_index & 0x7f;
|
||||
uint32_t y = tile_index / 128;
|
||||
@ -301,7 +301,7 @@ TILE_GET_INFO_MEMBER(k001604_device::tile_info_bg16)
|
||||
void k001604_device::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, bool front, tilemap_t* tilemap)
|
||||
{
|
||||
const rectangle& visarea = screen.visible_area();
|
||||
static const int SUBTILEMAP_DIMENSION[4] = { 128, 128, 64, 32 }; // entry 1 seems unused
|
||||
static const int SUBTILEMAP_DIMENSION[4] = { 128, 128, 64, 32 }; // entry 1 seems unused
|
||||
|
||||
int32_t startx, starty, incxx, incyx, incxy, incyy;
|
||||
|
||||
@ -321,7 +321,7 @@ void k001604_device::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitmap, c
|
||||
incxx = (int32_t)((int16_t)(m_reg[0x09])) << 5;
|
||||
incyx = (int32_t)((int16_t)(m_reg[0x09] >> 16)) << 5;
|
||||
incxy = (int32_t)((int16_t)(m_reg[0x0a])) << 5;
|
||||
incyy = (int32_t)((int16_t)(m_reg[0x0a] >> 16)) << 5;
|
||||
incyy = (int32_t)((int16_t)(m_reg[0x0a] >> 16)) << 5;
|
||||
}
|
||||
|
||||
bitmap_ind16& pixmap = tilemap->pixmap();
|
||||
@ -362,7 +362,7 @@ void k001604_device::draw_tilemap(screen_device &screen, bitmap_rgb32 &bitmap, c
|
||||
}
|
||||
|
||||
// draw the tilemap
|
||||
//
|
||||
//
|
||||
// loop over rows
|
||||
while (sy <= ey)
|
||||
{
|
||||
@ -463,9 +463,9 @@ void k001604_device::tile_w(offs_t offset, uint32_t data, uint32_t mem_mask)
|
||||
// portrait
|
||||
uint32_t fg_tilebase = (m_reg[0x1b] & 0x40000000) ? 0x4000 : 0x0000;
|
||||
uint32_t bg_tilebase = (m_reg[0x1b] & 0x40000000) ? 0x0000 : 0x4000;
|
||||
|
||||
|
||||
if (offset >= fg_tilebase && offset < fg_tilebase + 0x4000)
|
||||
{
|
||||
{
|
||||
m_fg_tilemap->mark_tile_dirty(offset - fg_tilebase);
|
||||
}
|
||||
if (offset >= bg_tilebase && offset < bg_tilebase + 0x4000)
|
||||
@ -500,7 +500,7 @@ void k001604_device::char_w(offs_t offset, uint32_t data, uint32_t mem_mask)
|
||||
int chip;
|
||||
uint32_t addr;
|
||||
|
||||
bool bg = (m_reg[0x60 / 4] & 0x1000000) ? true : false;
|
||||
bool bg = (m_reg[0x60 / 4] & 0x1000000) ? true : false;
|
||||
|
||||
// select individual RAM chip to access
|
||||
if (bg)
|
||||
|
@ -29,7 +29,7 @@ protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
private:
|
||||
// internal state
|
||||
// internal state
|
||||
tilemap_t* m_fg_tilemap;
|
||||
tilemap_t* m_bg_tilemap8;
|
||||
tilemap_t* m_bg_tilemap16;
|
||||
|
@ -15,7 +15,7 @@ Konami 037122
|
||||
---------------- ----------xxxxxx Green
|
||||
|
||||
Tilemap can be rotated, zoomed, similar to K053936 "simple mode"
|
||||
Tilemap can be configured either as 256x64 tiles (2048x512 pixels) or 128x128 tiles (1024x1024 pixels), Each tile is 8bpp 8x8.
|
||||
Tilemap can be configured either as 256x64 tiles (2048x512 pixels) or 128x128 tiles (1024x1024 pixels), Each tile is 8bpp 8x8.
|
||||
|
||||
Tile format (4 byte (1x32bit word) per each tile)
|
||||
Bits Description
|
||||
@ -45,19 +45,19 @@ Konami 037122
|
||||
20 sxxxxxxxxxxxxxxx ---------------- X counter starting value (12.4 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx Y counter starting value (12.4 fixed point)
|
||||
24 sxxxxxxxxxxxxxxx ---------------- amount to add to the X counter after each line (4.12 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx amount to add to the Y counter after each line (4.12 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx amount to add to the Y counter after each line (4.12 fixed point)
|
||||
28 sxxxxxxxxxxxxxxx ---------------- amount to add to the X counter after each horizontal pixel (4.12 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx amount to add to the Y counter after each horizontal pixel (4.12 fixed point)
|
||||
---------------- sxxxxxxxxxxxxxxx amount to add to the Y counter after each horizontal pixel (4.12 fixed point)
|
||||
30 ---------------x ---------------- Tilemap size
|
||||
---------------0 ---------------- 128x128
|
||||
---------------1 ---------------- 256x64
|
||||
---------------0 ---------------- 128x128
|
||||
---------------1 ---------------- 256x64
|
||||
---------------- -------------xxx Character RAM bank
|
||||
34 ---------------- -------------x-- CLUT location
|
||||
---------------- -------------0-- CLUT at 0x00000-0x08000
|
||||
---------------- -------------1-- CLUT at 0x18000-0x20000
|
||||
---------------x ---------------- Tilemap Y origin
|
||||
---------------0 ---------------- Origin at tilemap center
|
||||
---------------1 ---------------- Origin at 0
|
||||
34 ---------------- -------------x-- CLUT location
|
||||
---------------- -------------0-- CLUT at 0x00000-0x08000
|
||||
---------------- -------------1-- CLUT at 0x18000-0x20000
|
||||
---------------x ---------------- Tilemap Y origin
|
||||
---------------0 ---------------- Origin at tilemap center
|
||||
---------------1 ---------------- Origin at 0
|
||||
|
||||
Other bits/registers unknown, some registers are used
|
||||
|
||||
@ -173,7 +173,7 @@ void k037122_device::tile_draw( screen_device &screen, bitmap_rgb32 &bitmap, con
|
||||
int16_t incxx = m_reg[0xa] >> 16;
|
||||
int16_t incxy = m_reg[0xa] & 0xffff;
|
||||
int16_t incyx = m_reg[0x9] >> 16;
|
||||
int16_t incyy = m_reg[0x9] & 0xffff;
|
||||
int16_t incyy = m_reg[0x9] & 0xffff;
|
||||
|
||||
if (m_reg[0xc] & 0x10000)
|
||||
{
|
||||
|
@ -37,7 +37,7 @@ private:
|
||||
tilemap_t* m_tilemap_256;
|
||||
|
||||
uint32_t m_palette_base;
|
||||
uint32_t m_tilemap_base;
|
||||
uint32_t m_tilemap_base;
|
||||
|
||||
std::unique_ptr<uint32_t[]> m_tile_ram;
|
||||
std::unique_ptr<uint32_t[]> m_char_ram;
|
||||
|
@ -242,7 +242,7 @@ uint32_t mermaid_state::screen_update_mermaid(screen_device &screen, bitmap_ind1
|
||||
|
||||
|
||||
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
draw_sprites(bitmap, cliprect);
|
||||
draw_sprites(bitmap, cliprect);
|
||||
}
|
||||
else if (m_bg_mask)
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ static void display_usage()
|
||||
}
|
||||
|
||||
static void display_formats()
|
||||
{
|
||||
{
|
||||
int sk = 0;
|
||||
for(const auto &e : formats.floppy_format_info_by_key) {
|
||||
int sz = e.first.size();
|
||||
@ -80,7 +80,7 @@ static void display_formats()
|
||||
fprintf(stderr, " %-*s - %s\n",
|
||||
sk,
|
||||
f2->m_name,
|
||||
f2->m_description);
|
||||
f2->m_description);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -111,7 +111,7 @@ static int identify(int argc, char *argv[])
|
||||
if(len > sz)
|
||||
sz = len;
|
||||
}
|
||||
|
||||
|
||||
for(int i=2; i<argc; i++) {
|
||||
image_handler ih;
|
||||
ih.set_on_disk_path(argv[i]);
|
||||
@ -124,7 +124,7 @@ static int identify(int argc, char *argv[])
|
||||
if(len > sz2)
|
||||
sz2 = len;
|
||||
}
|
||||
|
||||
|
||||
bool first = true;
|
||||
for(const auto &e : scores) {
|
||||
printf("%-*s %c %3d - %-*s %s\n", sz, first ? argv[i] : "", first ? ':' : ' ', e.first, sz2, e.second->m_format->name(), e.second->m_format->description());
|
||||
@ -151,7 +151,7 @@ static const floppy_format_info *find_floppy_source_format(const char *name, ima
|
||||
if(len > sz)
|
||||
sz = len;
|
||||
}
|
||||
|
||||
|
||||
for(const auto &e : scores)
|
||||
printf(" %3d - %-*s %s\n", e.first, sz, e.second->m_format->name(), e.second->m_format->description());
|
||||
return nullptr;
|
||||
@ -179,7 +179,7 @@ static int flopconvert(int argc, char *argv[])
|
||||
|
||||
image_handler ih;
|
||||
ih.set_on_disk_path(argv[4]);
|
||||
|
||||
|
||||
const floppy_format_info *source_format = find_floppy_source_format(argv[2], ih);
|
||||
if(!source_format)
|
||||
return 1;
|
||||
@ -317,7 +317,7 @@ static int generic_dir(image_handler &ih)
|
||||
std::unordered_map<fs_meta_name, size_t> nmap;
|
||||
for(size_t i = 0; i != names.size(); i++)
|
||||
nmap[names[i]] = i;
|
||||
|
||||
|
||||
auto root = fs->root();
|
||||
std::vector<std::vector<std::string>> entries;
|
||||
|
||||
@ -356,7 +356,7 @@ static int flopdir(int argc, char *argv[])
|
||||
|
||||
image_handler ih;
|
||||
ih.set_on_disk_path(argv[4]);
|
||||
|
||||
|
||||
const floppy_format_info *source_format = find_floppy_source_format(argv[2], ih);
|
||||
if(!source_format)
|
||||
return 1;
|
||||
@ -480,7 +480,7 @@ static int flopread(int argc, char *argv[])
|
||||
|
||||
image_handler ih;
|
||||
ih.set_on_disk_path(argv[4]);
|
||||
|
||||
|
||||
const floppy_format_info *source_format = find_floppy_source_format(argv[2], ih);
|
||||
if(!source_format)
|
||||
return 1;
|
||||
@ -601,7 +601,7 @@ static int flopwrite(int argc, char *argv[])
|
||||
|
||||
image_handler ih;
|
||||
ih.set_on_disk_path(argv[4]);
|
||||
|
||||
|
||||
const floppy_format_info *source_format = find_floppy_source_format(argv[2], ih);
|
||||
if(!source_format)
|
||||
return 1;
|
||||
@ -626,7 +626,7 @@ static int flopwrite(int argc, char *argv[])
|
||||
fprintf(stderr, "Error: Parsing as filesystem '%s' failed\n", fs->m_manager->name());
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int err = generic_write(ih, argv[5], argv[6]);
|
||||
if(err)
|
||||
return err;
|
||||
@ -634,7 +634,7 @@ static int flopwrite(int argc, char *argv[])
|
||||
ih.fs_to_floppy();
|
||||
if(ih.floppy_save(source_format))
|
||||
return 1;
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,7 @@ namespace {
|
||||
m_format->m_floppy_raw = true;
|
||||
m_format->m_floppy_create.emplace_back(std::make_unique<floppy_create_info>(name, key, description));
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
void formats_table::init()
|
||||
@ -268,7 +268,7 @@ void image_handler::fsave(std::string path, const std::vector<u8> &data)
|
||||
void image_handler::fsave_rsrc(std::string path, const std::vector<u8> &data)
|
||||
{
|
||||
u8 head[0x2a];
|
||||
|
||||
|
||||
filesystem_t::w32b(head+0x00, 0x00051607); // Magic
|
||||
filesystem_t::w32b(head+0x04, 0x00020000); // Version
|
||||
filesystem_t::fill(head+0x08, 0, 16); // Filler
|
||||
@ -377,7 +377,7 @@ void image_handler::floppy_create(const floppy_create_info *format, fs_meta_data
|
||||
source_format->load(iog, floppy_image::FF_UNKNOWN, variants, &m_floppy_image);
|
||||
delete source_format;
|
||||
delete iog;
|
||||
|
||||
|
||||
} else
|
||||
fs_unformatted::format(format->m_key, &m_floppy_image);
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ struct floppy_format_info {
|
||||
|
||||
struct floppy_create_info {
|
||||
const filesystem_manager_t *m_manager;
|
||||
|
||||
|
||||
floppy_format_type m_type;
|
||||
u32 m_image_size;
|
||||
u32 m_key;
|
||||
|
Loading…
Reference in New Issue
Block a user