mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
srcclean and manual tidying up in preparation for 0.242 release
This commit is contained in:
parent
2a3c402cae
commit
b6df0d2d3d
@ -114,7 +114,7 @@ Boots to a purple and blue flickering screen, [FDC] dsksync
|
||||
<publisher>Mindscape</publisher>
|
||||
<notes><![CDATA[
|
||||
Not extensively tested
|
||||
[Lisa] sprites leaves an empty gap on bottom of playfield
|
||||
[Lisa] sprites leaves an empty gap on bottom of playfield
|
||||
]]></notes>
|
||||
<info name="usage" value="Requires AGA" />
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
@ -985,7 +985,7 @@ Collision detection is pretty fussy
|
||||
Mongols encounter caused wrong colors and Guru Meditation (TODO: verify)
|
||||
]]></notes>
|
||||
<info name="usage" value="Requires AGA, sports Civilization Quiz copy-protection" />
|
||||
|
||||
|
||||
<!-- Game prompts for Disks 1-2-3-4, but markings are confirmed to be letter based -->
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<feature name="part_id" value="Disk A" />
|
||||
@ -2665,7 +2665,7 @@ Text layer has last 4 chars with wrong violet color, i.e. last 3 digit of score
|
||||
<publisher>Gremlin Graphics</publisher>
|
||||
<notes><![CDATA[
|
||||
Mouse cursor is uncontrollable, [joytest] reset counter
|
||||
]]></notes>
|
||||
]]></notes>
|
||||
<info name="usage" value="Requires AGA" />
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<feature name="part_id" value="Disk 1" />
|
||||
|
@ -19,13 +19,13 @@ license:CC0
|
||||
- a generic "failed" means that most if not all tracks reports as bad (test didn't complete);
|
||||
- C refers to the Track number(s), H is the (U)pper, (L)ower head (if not omitted),
|
||||
"1 Sector Bad" reports as one sector being bad, otherwise "Bad" [Track];
|
||||
Notice this is just an extra note added to identify disk behaviour with our FDC:
|
||||
it has no value for the supported flag.
|
||||
Notice this is just an extra note added to identify disk behaviour with our FDC:
|
||||
it has no value for the supported flag.
|
||||
|
||||
Note that disk swaps are known to be quite fussy on Amiga.
|
||||
As a rule of thumb it's really advised to not try a "live swap" of disks,
|
||||
but instead unmount (empty) the disk buffer first then mount whatever the SW asks to.
|
||||
This holds particularly true for anything that don't explictly asks for the user to press any key on devices.
|
||||
Note that disk swaps are known to be quite fussy on Amiga.
|
||||
As a rule of thumb it's really advised to not try a "live swap" of disks,
|
||||
but instead unmount (empty) the disk buffer first then mount whatever the SW asks to.
|
||||
This holds particularly true for anything that don't explictly asks for the user to press any key on devices.
|
||||
|
||||
todo (SPS):
|
||||
- see if it's possible to better verify these images, the SPS dat only lists the (highly insecure) CRC32s so we're relying on trust here
|
||||
@ -19890,7 +19890,7 @@ ATK test: OK
|
||||
<!-- Publisher: Prism Leisure -->
|
||||
<publisher>Addictive</publisher>
|
||||
<notes><![CDATA[
|
||||
Guru Meditation during Workbench load after pressing left mouse button on Hot Shot advertisement
|
||||
Guru Meditation during Workbench load after pressing left mouse button on Hot Shot advertisement
|
||||
ATK test: OK
|
||||
]]></notes>
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
@ -36207,7 +36207,7 @@ ATK test: failed
|
||||
ATK test: OK
|
||||
]]></notes>
|
||||
<!-- TODO: untested afterwards -->
|
||||
<info name="usage" value="Sports code wheel copy-protection"/>
|
||||
<info name="usage" value="Sports code wheel copy-protection"/>
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<dataarea name="flop" size="1049612">
|
||||
<rom name="(sps1051)operationharrier.ipf" size="1049612" crc="c1b27e88" sha1="e6a7a0ca4fbf3f4a041262009da77cdaba9c331f"/>
|
||||
@ -57088,7 +57088,7 @@ Enables AGA bitplanes == 7 even on OCS and ECS machines
|
||||
ATK test: failed
|
||||
]]></notes>
|
||||
<info name="alt_title" value="Zool - Ninja of the "Nth" Dimension (Box)"/>
|
||||
<info name="usage" value="Sports code wheel copy-protection"/>
|
||||
<info name="usage" value="Sports code wheel copy-protection"/>
|
||||
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<feature name="part_id" value="Disk 1" />
|
||||
@ -57146,7 +57146,7 @@ Top-most score display is garbled, [Copper]
|
||||
[Paula] gives white noise on BGM loop
|
||||
ATK test: failed
|
||||
]]></notes>
|
||||
<info name="usage" value="Sports code wheel copy-protection"/>
|
||||
<info name="usage" value="Sports code wheel copy-protection"/>
|
||||
<part name="flop1" interface="floppy_3_5">
|
||||
<feature name="part_id" value="Disk 1" />
|
||||
<dataarea name="flop" size="1009206">
|
||||
|
@ -18914,7 +18914,7 @@ license:CC0
|
||||
<sharedfeat name="compatibility" value="A2P,A2E,A2EE,A2C,A2GS"/>
|
||||
<!-- It requires a 48K Apple II+ or later. -->
|
||||
<!--"Pursuit of the Graf Spee" is a 1982 strategy game developed by Joel Billings and distributed by Strategic Simulations. It requires a 48K Apple ][+ or later.-->
|
||||
<!-- This disk was replaced on March 24th, 2022 because the previous disk we obtained proved to be a fake. -->
|
||||
<!-- This disk was replaced on March 24th, 2022 because the previous disk we obtained proved to be a fake. -->
|
||||
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="254799">
|
||||
|
@ -531,21 +531,21 @@ Soccer League - Winner's Cup, Tennis, Wild Gunman, Wrecking Crew
|
||||
</software>
|
||||
|
||||
<!--
|
||||
<software name="punchout">
|
||||
<description>Punch-Out!!</description>
|
||||
<year>1990</year>
|
||||
<publisher>Nintendo</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="pxrom" />
|
||||
<feature name="pcb" value="SSS-PNROM??" />
|
||||
<dataarea name="prg" size="0x20000">
|
||||
<rom name="nes-qp-0 prg" size="0x20000" crc="" sha1="" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="0x20000">
|
||||
<rom name="nes-qp-0 chr" size="0x20000" crc="" sha1="" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
<software name="punchout">
|
||||
<description>Punch-Out!!</description>
|
||||
<year>1990</year>
|
||||
<publisher>Nintendo</publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="pxrom" />
|
||||
<feature name="pcb" value="SSS-PNROM??" />
|
||||
<dataarea name="prg" size="0x20000">
|
||||
<rom name="nes-qp-0 prg" size="0x20000" crc="" sha1="" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="0x20000">
|
||||
<rom name="nes-qp-0 chr" size="0x20000" crc="" sha1="" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
-->
|
||||
|
||||
<software name="rockman">
|
||||
|
@ -5943,7 +5943,7 @@ has been replaced with an all-zero block. -->
|
||||
</software>
|
||||
|
||||
<software name="msdos32a" supported="no" cloneof="msdos32">
|
||||
<description>MS-DOS (Version 3.2) (alt.)</description>
|
||||
<description>MS-DOS (Version 3.2) (alt)</description>
|
||||
<year>1985</year>
|
||||
<publisher>Microsoft</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
|
@ -6,7 +6,7 @@ license:CC0
|
||||
<softwarelist name="roland_tnsc1" description="Roland TN-SC1 Music Style Cards">
|
||||
<!--
|
||||
Known cards:
|
||||
Dumped Serial Type Name Contents
|
||||
Dumped Serial Type Name Contents
|
||||
No TN-SC1-01 Music Style Card Country Bluegrass, Tex / Mex, Country Waltz, Country Rock
|
||||
No TN-SC1-02 Music Style Card 50's and 60's M'Town, Rock 'n' Roll 2, Mexican Rock, Slow Soul
|
||||
Yes TN-SC1-03 Music Style Card 70's and 80's Euro Pop, Rap, Funk 3, Big Rock
|
||||
@ -25,10 +25,10 @@ license:CC0
|
||||
|
||||
<software name="tnsc103" supported="no">
|
||||
<!--
|
||||
1. Euro Pop
|
||||
2. Rap
|
||||
3. Funk 3
|
||||
4. Big Rock
|
||||
1. Euro Pop
|
||||
2. Rap
|
||||
3. Funk 3
|
||||
4. Big Rock
|
||||
-->
|
||||
<description>70's and 80's (TN-SC1-03)</description>
|
||||
<year>19??</year>
|
||||
|
@ -280,7 +280,7 @@ void luxor_4105_device::write_sasi_data(uint8_t data)
|
||||
|
||||
// clock REQ FF
|
||||
m_req = m_sasi->req_r();
|
||||
|
||||
|
||||
update_ack();
|
||||
update_dma();
|
||||
}
|
||||
@ -304,7 +304,7 @@ WRITE_LINE_MEMBER( luxor_4105_device::write_sasi_cd )
|
||||
WRITE_LINE_MEMBER( luxor_4105_device::write_sasi_req )
|
||||
{
|
||||
if (LOG) logerror("%s REQ %u\n", machine().describe_context(), state);
|
||||
|
||||
|
||||
if (!state)
|
||||
{
|
||||
// reset REQ FF
|
||||
@ -540,6 +540,6 @@ void luxor_4105_device::abcbus_prac(int state)
|
||||
if (LOG) logerror("%s PRAC %u\n", machine().describe_context(), state);
|
||||
|
||||
m_prac = state;
|
||||
|
||||
|
||||
update_dma();
|
||||
}
|
||||
|
@ -354,7 +354,7 @@ u32 arm7_disassembler::arm7_disasm( std::ostream &stream, uint32_t pc, uint32_t
|
||||
/* xxxx 0001 0B00 nnnn dddd 0000 1001 mmmm */
|
||||
util::stream_format( stream, "SWP%s%s", pConditionCode, (opcode & 0x400000)?"B":"" ); //Bit 22 = Byte/Word selection
|
||||
WritePadding(stream, start_position);
|
||||
|
||||
|
||||
//Rd, Rm, [Rn]
|
||||
util::stream_format( stream, "R%d, R%d, [R%d]",
|
||||
(opcode>>12)&0xf, opcode&0xf, (opcode>>16)&0xf );
|
||||
@ -637,7 +637,7 @@ u32 arm7_disassembler::arm7_disasm( std::ostream &stream, uint32_t pc, uint32_t
|
||||
{
|
||||
/* immediate form */
|
||||
util::stream_format( stream, "[R%d%s", rn, (opcode&0x01000000)?"":"]" );
|
||||
|
||||
|
||||
//hide zero offsets
|
||||
if(opcode&0xfff) {
|
||||
stream << ", #";
|
||||
|
@ -113,7 +113,7 @@ offs_t b5000_common_disassembler::common_disasm(const u8 *lut_opmap, std::ostrea
|
||||
case 1: stream << "S"; break; // 0,1
|
||||
case 2: stream << "C"; break; // 1,0
|
||||
case 3: stream << "C,S"; break; // 1,1
|
||||
default: break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
else if (instr >= em_LB0 && instr <= em_LB11)
|
||||
|
@ -1457,12 +1457,12 @@ void i960_cpu_device::execute_op(uint32_t opcode)
|
||||
|
||||
case 0x4: // dmovt
|
||||
/*
|
||||
The dmovt instruction moves a 32-bit word from one register to another
|
||||
and tests the least-significant byte of the operand to determine if it is a
|
||||
valid ASCII-coded decimal digit (001100002 through 001110012,
|
||||
corresponding to the decimal digits 0 through 9). For valid digits, the
|
||||
condition code (CC) is set to 000; otherwise the condition code is set to
|
||||
010.
|
||||
The dmovt instruction moves a 32-bit word from one register to another
|
||||
and tests the least-significant byte of the operand to determine if it is a
|
||||
valid ASCII-coded decimal digit (001100002 through 001110012,
|
||||
corresponding to the decimal digits 0 through 9). For valid digits, the
|
||||
condition code (CC) is set to 000; otherwise the condition code is set to
|
||||
010.
|
||||
*/
|
||||
m_icount -= 7;
|
||||
t1 = get_1_ri(opcode);
|
||||
|
@ -58,14 +58,14 @@
|
||||
appear to include the addition of an onboard power-on reset. It
|
||||
is unknown what other differences these devices have.
|
||||
|
||||
TODO:
|
||||
- For some reason most if not all Amiga MCU programs accesses arbitrary
|
||||
TODO:
|
||||
- For some reason most if not all Amiga MCU programs accesses arbitrary
|
||||
zero page 0x90-0xff with a back-to-back cmp($00, x) opcode at
|
||||
PC=c06-c08 with the actual result discarded. X can be any value in
|
||||
the 0x90-0xff range, depending on the last user keypress row source
|
||||
the 0x90-0xff range, depending on the last user keypress row source
|
||||
e.g. 0xdf-0xe0 for 'A', 0xef-0xf0 for 'Q', 0xfb-0xfc for function
|
||||
keys.
|
||||
This can be extremely verbose in the logging facility so we currently
|
||||
keys.
|
||||
This can be extremely verbose in the logging facility so we currently
|
||||
nop it out for the time being.
|
||||
|
||||
***************************************************************************/
|
||||
|
@ -11,8 +11,8 @@
|
||||
- convert volume values to non-linear dB scale (cfr. )
|
||||
- Verify ADKCON modulation;
|
||||
- Verify manual mode:
|
||||
\- AGA roadkill during gameplay, which also has very long period setups,
|
||||
extremely aliased;
|
||||
\- AGA roadkill during gameplay, which also has very long period setups,
|
||||
extremely aliased;
|
||||
- When a DMA stop occurs, is the correlated channel playback stopped
|
||||
at the end of the current cycle or as soon as possible like current
|
||||
implementation?
|
||||
|
@ -11,13 +11,13 @@
|
||||
- Chunky to planar converter
|
||||
- 2x CIA chips
|
||||
|
||||
TODO:
|
||||
TODO:
|
||||
- Reportedly the CD drive should be a Sony KSM-2101BAM,
|
||||
schematics shows Akiko connected to a laconic "26-pin CD connector"
|
||||
- NVRAM needs inheriting from i2c_24c08_device;
|
||||
- Handle tray open/close events, needed at very least by:
|
||||
\- cdtv:cdremix2 load sequences;
|
||||
\- kangfu on cd32 as "out of memory" workaround;
|
||||
schematics shows Akiko connected to a laconic "26-pin CD connector"
|
||||
- NVRAM needs inheriting from i2c_24c08_device;
|
||||
- Handle tray open/close events, needed at very least by:
|
||||
\- cdtv:cdremix2 load sequences;
|
||||
\- kangfu on cd32 as "out of memory" workaround;
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -759,7 +759,7 @@ void akiko_device::update_cdrom()
|
||||
{
|
||||
resp[1] = 0x80;
|
||||
}
|
||||
|
||||
|
||||
// needed by cdtv:defcrown (would otherwise hardlock emulation)
|
||||
m_cdrom_cmd_start = (m_cdrom_cmd_start + 2) & 0xff;
|
||||
|
||||
|
@ -2,24 +2,24 @@
|
||||
// copyright-holders:Aaron Giles, Angelo Salese
|
||||
/**************************************************************************************************
|
||||
|
||||
Amiga Copper
|
||||
Amiga Copper
|
||||
|
||||
"Co-processor" contained inside Agnus,
|
||||
it's a finite-state machine that either wait to a h/v video beam position or direct writes to
|
||||
the Amiga chipset registers via program lists, ranging from "simple" video mode/color changes
|
||||
to override sprite structures and beyond ...
|
||||
"Co-processor" contained inside Agnus,
|
||||
it's a finite-state machine that either wait to a h/v video beam position or direct writes to
|
||||
the Amiga chipset registers via program lists, ranging from "simple" video mode/color changes
|
||||
to override sprite structures and beyond ...
|
||||
|
||||
TODO:
|
||||
- Current handling is horizontally offset by several pixels, also cfr. amiga video notes
|
||||
(screen geometry slightly incorrect?);
|
||||
- Fix Bitplane offset corruption in some games (e.g. exile, zoola, AGA games).
|
||||
Same as above?
|
||||
- Fix missing/corrupt sprites in known nasty examples
|
||||
(e.g. zoola status bar, parasol score layer on top, riskyw backgrounds);
|
||||
- Find & verify cdang examples (especially for ECS/AGA);
|
||||
- Find & verify examples that uses this non-canonically,
|
||||
i.e. anything that may use this for controlling Paula, FDC or Blitter;
|
||||
- Add debugger command for printing the current disassembler structure;
|
||||
TODO:
|
||||
- Current handling is horizontally offset by several pixels, also cfr. amiga video notes
|
||||
(screen geometry slightly incorrect?);
|
||||
- Fix Bitplane offset corruption in some games (e.g. exile, zoola, AGA games).
|
||||
Same as above?
|
||||
- Fix missing/corrupt sprites in known nasty examples
|
||||
(e.g. zoola status bar, parasol score layer on top, riskyw backgrounds);
|
||||
- Find & verify cdang examples (especially for ECS/AGA);
|
||||
- Find & verify examples that uses this non-canonically,
|
||||
i.e. anything that may use this for controlling Paula, FDC or Blitter;
|
||||
- Add debugger command for printing the current disassembler structure;
|
||||
|
||||
**************************************************************************************************/
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
#define LOG_WARN (1U << 1) // Show warnings
|
||||
#define LOG_COPINS (1U << 2) // Show instruction fetches thru COPINS
|
||||
#define LOG_INST (1U << 3) // Show live instruction fetches
|
||||
#define LOG_INST (1U << 3) // Show live instruction fetches
|
||||
#define LOG_PC (1U << 4) // Show PC fetches
|
||||
#define LOG_CHIPSET (1U << 5) // Show custom chipset writes
|
||||
|
||||
@ -78,7 +78,7 @@ amiga_copper_device::amiga_copper_device(const machine_config &mconfig, const ch
|
||||
|
||||
|
||||
void amiga_copper_device::device_start()
|
||||
{
|
||||
{
|
||||
m_host_space = &m_host_cpu->space(AS_PROGRAM);
|
||||
m_chipmem_r.resolve_safe(0);
|
||||
|
||||
@ -92,7 +92,7 @@ void amiga_copper_device::device_start()
|
||||
save_item(NAME(m_state_waitblit));
|
||||
save_item(NAME(m_waitval));
|
||||
save_item(NAME(m_waitmask));
|
||||
// save_item(NAME(m_wait_offset));
|
||||
// save_item(NAME(m_wait_offset));
|
||||
save_item(NAME(m_pending_data));
|
||||
save_item(NAME(m_pending_offset));
|
||||
}
|
||||
@ -126,7 +126,7 @@ void amiga_copper_device::regs_map(address_map &map)
|
||||
map(0x06, 0x07).w(FUNC(amiga_copper_device::copxlcl_w<1>));
|
||||
map(0x08, 0x09).rw(FUNC(amiga_copper_device::copjmpx_r<0>), FUNC(amiga_copper_device::copjmpx_w<0>));
|
||||
map(0x0a, 0x0b).rw(FUNC(amiga_copper_device::copjmpx_r<1>), FUNC(amiga_copper_device::copjmpx_w<1>));
|
||||
// map(0x0c, 0x0d).w(FUNC(amiga_copper_device::copins_w));
|
||||
// map(0x0c, 0x0d).w(FUNC(amiga_copper_device::copins_w));
|
||||
}
|
||||
|
||||
void amiga_copper_device::dmacon_set(u16 data)
|
||||
@ -135,7 +135,7 @@ void amiga_copper_device::dmacon_set(u16 data)
|
||||
m_dma_copen = bool(BIT(data, 7));
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* COPCON 02E W A Copper Control Register
|
||||
*
|
||||
* ---- ---- ---- --x- CDANG (Copper Danger Mode) setting
|
||||
@ -146,10 +146,10 @@ void amiga_copper_device::dmacon_set(u16 data)
|
||||
* access to the blitter HW therefore $dff080 is the
|
||||
* minimum for non-cdang and $dff040 for cdang mode.
|
||||
*
|
||||
* In ECS and AGA the latter limitation is lifted so Copper
|
||||
* In ECS and AGA the latter limitation is lifted so Copper
|
||||
* can access $dff000-$dff03f too, which basically means the
|
||||
* possibility of accessing disk block regs.
|
||||
* (i.e. the other regs are either r/o or wouldn't have much
|
||||
* (i.e. the other regs are either r/o or wouldn't have much
|
||||
* sense to write via Copper).
|
||||
*
|
||||
*/
|
||||
@ -267,7 +267,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
|
||||
{
|
||||
m_state_waiting = false;
|
||||
//#if GUESS_COPPER_OFFSET
|
||||
// return xpos + COPPER_CYCLES_TO_PIXELS(1 + m_wait_offset);
|
||||
// return xpos + COPPER_CYCLES_TO_PIXELS(1 + m_wait_offset);
|
||||
//#else
|
||||
return xpos + COPPER_CYCLES_TO_PIXELS(1 + 3);
|
||||
//#endif
|
||||
@ -289,7 +289,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
|
||||
m_host_space->write_word(0xdff08c, word0);
|
||||
m_pc += 2;
|
||||
xpos += COPPER_CYCLES_TO_PIXELS(1);
|
||||
|
||||
|
||||
/* fetch the second data word */
|
||||
word1 = m_chipmem_r(m_pc);
|
||||
m_host_space->write_word(0xdff08c, word1);
|
||||
@ -355,7 +355,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
|
||||
{
|
||||
LOGINST(" Waiting for %04x & %04x (currently %04x)\n",
|
||||
m_waitval,
|
||||
m_waitmask,
|
||||
m_waitmask,
|
||||
(ypos << 8) | (xpos >> 1)
|
||||
);
|
||||
|
||||
@ -367,7 +367,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
|
||||
{
|
||||
int curpos = (ypos << 8) | (xpos >> 1);
|
||||
|
||||
LOGINST(" Skipping if %04x & %04x (currently %04x)\n",
|
||||
LOGINST(" Skipping if %04x & %04x (currently %04x)\n",
|
||||
m_waitval,
|
||||
m_waitmask,
|
||||
(ypos << 8) | (xpos >> 1)
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Aaron Giles, Angelo Salese
|
||||
/***************************************************************************
|
||||
|
||||
Amiga Copper
|
||||
Amiga Copper
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -68,7 +68,7 @@ private:
|
||||
u16 m_waitmask;
|
||||
u16 m_pending_offset;
|
||||
u16 m_pending_data;
|
||||
// int m_wait_offset;
|
||||
// int m_wait_offset;
|
||||
|
||||
// waitstate delays for copper
|
||||
// basically anything that doesn't belong to Angus has a penalty for Copper
|
||||
|
@ -335,7 +335,7 @@ int z80dma_device::is_ready()
|
||||
void z80dma_device::interrupt_check()
|
||||
{
|
||||
m_out_int_cb(m_ip ? ASSERT_LINE : CLEAR_LINE);
|
||||
|
||||
|
||||
int ieo = m_iei;
|
||||
if (m_ip) {
|
||||
ieo = 0;
|
||||
|
@ -129,7 +129,7 @@ private:
|
||||
uint8_t m_latch;
|
||||
|
||||
// interrupts
|
||||
int m_iei; // interrupt enable input
|
||||
int m_iei; // interrupt enable input
|
||||
int m_ip; // interrupt pending
|
||||
int m_ius; // interrupt under service
|
||||
uint8_t m_vector; // interrupt vector
|
||||
|
@ -143,7 +143,7 @@ void k051649_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
||||
}
|
||||
// scale to 11 bit digital output on chip
|
||||
if (voice.key)
|
||||
outputs[0].add_int(i, (voice.waveram[voice.counter] * voice.volume) >> 4, 1024);
|
||||
outputs[0].add_int(i, (voice.waveram[voice.counter] * voice.volume) >> 4, 1024);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ int flex_format::find_size(util::random_read &io, uint32_t form_factor, const st
|
||||
return -1;
|
||||
|
||||
uint8_t boot0_sector_id = 1;
|
||||
// uint8_t boot1_sector_id = 2;
|
||||
// uint8_t boot1_sector_id = 2;
|
||||
|
||||
// This floppy format uses a strategy of looking for 6800 boot code to
|
||||
// set the numbering of the first two sectors. If this is shown to not
|
||||
@ -124,11 +124,11 @@ int flex_format::find_size(util::random_read &io, uint32_t form_factor, const st
|
||||
|
||||
// boot1 is not actually used (yet?)
|
||||
// Look for a link to the next sector, normal usage.
|
||||
// if (boot1[0] != 0 || boot1[1] != 3)
|
||||
// {
|
||||
// if (boot1[0] != 0 || boot1[1] != 3)
|
||||
// {
|
||||
// If not then assume it is a boot sector.
|
||||
// boot1_sector_id = 1;
|
||||
// }
|
||||
// boot1_sector_id = 1;
|
||||
// }
|
||||
}
|
||||
|
||||
for (int i=0; formats[i].form_factor; i++) {
|
||||
|
@ -195,8 +195,8 @@ uint8_t gottlieb_sound_p3_device::r6530b_r()
|
||||
|
||||
void gottlieb_sound_p3_device::r6530b_w(u8 data)
|
||||
{
|
||||
// if (BIT(data, 6))
|
||||
// m_cpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
|
||||
// if (BIT(data, 6))
|
||||
// m_cpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
TODO:
|
||||
|
||||
- z80dma.cpp register read must return byte UP counter value (0x200 at end of block, not 0 as it does now)
|
||||
- z80dma.cpp register read must return byte UP counter value (0x200 at end of block, not 0 as it does now)
|
||||
- short/long reset (RSTBUT)
|
||||
- CIO
|
||||
- optimize timers!
|
||||
|
@ -149,7 +149,7 @@ private:
|
||||
// bsmt
|
||||
u8 rdstat_r() { return m_bsmt_rdcode; }
|
||||
u8 rdcode_r() { m_audiocpu->set_input_line(0, CLEAR_LINE); return m_cpu_to_bsmt; }
|
||||
void wrcode_w(u8 data) { m_bsmt_to_cpu = data; m_via1->write_ca1(BIT(data, 0)); }
|
||||
void wrcode_w(u8 data) { m_bsmt_to_cpu = data; m_via1->write_ca1(BIT(data, 0)); }
|
||||
void bsmt_w(offs_t offset, u8 data);
|
||||
void watch_w(u8 data) { if (!BIT(data, 6)) m_bsmt->reset(); }
|
||||
void bsmt_ready_w() { m_bsmt_rdcode |= 0x80; }
|
||||
|
@ -1403,7 +1403,7 @@ ROM_START( bonzeadv )
|
||||
ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) // banked
|
||||
|
||||
// no ADPCM-A samples
|
||||
|
||||
|
||||
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 )
|
||||
ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
|
||||
ROM_END
|
||||
@ -1430,7 +1430,7 @@ ROM_START( bonzeadvo )
|
||||
ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) // banked
|
||||
|
||||
// no ADPCM-A samples
|
||||
|
||||
|
||||
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 )
|
||||
ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
|
||||
ROM_END
|
||||
@ -1457,7 +1457,7 @@ ROM_START( bonzeadvu )
|
||||
ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) // banked
|
||||
|
||||
// no ADPCM-A samples
|
||||
|
||||
|
||||
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 )
|
||||
ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
|
||||
ROM_END
|
||||
|
@ -27,8 +27,7 @@
|
||||
#include "sound/okim9810.h"
|
||||
#include "speaker.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
namespace {
|
||||
|
||||
class cosmos_playc8f_state : public driver_device
|
||||
{
|
||||
@ -45,7 +44,7 @@ public:
|
||||
|
||||
private:
|
||||
required_device<m68hc05_device> m_maincpu;
|
||||
optional_device<mcs51_cpu_device> m_soundcpu;
|
||||
optional_device<mcs51_cpu_device> m_soundcpu;
|
||||
};
|
||||
|
||||
static INPUT_PORTS_START(playc8f)
|
||||
@ -54,7 +53,7 @@ INPUT_PORTS_END
|
||||
// PLAYC8F + SY-MUSIC01 (music)
|
||||
void cosmos_playc8f_state::playc8f_symusic01(machine_config &config)
|
||||
{
|
||||
M68HC705C8A(config, m_maincpu, 4_MHz_XTAL);
|
||||
M68HC705C8A(config, m_maincpu, 4_MHz_XTAL);
|
||||
|
||||
I80C51(config, m_soundcpu, 6_MHz_XTAL); // Actually an AT89C51
|
||||
|
||||
@ -67,12 +66,12 @@ void cosmos_playc8f_state::playc8f_symusic01(machine_config &config)
|
||||
// PLAYC8F (without sound hardware)
|
||||
void cosmos_playc8f_state::playc8f(machine_config &config)
|
||||
{
|
||||
M68HC705C8A(config, m_maincpu, 4_MHz_XTAL);
|
||||
M68HC705C8A(config, m_maincpu, 4_MHz_XTAL);
|
||||
}
|
||||
|
||||
ROM_START(bgbasketb)
|
||||
ROM_REGION(0x002000, "maincpu", 0)
|
||||
ROM_LOAD("srlqj02-2-01_2013-03-23.u13", 0x000000, 0x002000, CRC(9ab77de9) SHA1(c3507636dfe963023d5894403b850b65da2613b4)) // MC705C8ACPE
|
||||
ROM_LOAD("srlqj02-2-01_2013-03-23.u13", 0x000000, 0x002000, CRC(9ab77de9) SHA1(c3507636dfe963023d5894403b850b65da2613b4)) // MC705C8ACPE
|
||||
|
||||
ROM_REGION(0x001000, "soundcpu", 0)
|
||||
ROM_LOAD("mglqj-y-3-3_2004-10-22.u2", 0x000000, 0x001000, NO_DUMP) // AT89C51, protected
|
||||
|
@ -3120,16 +3120,16 @@ static INPUT_PORTS_START( pang3b4 )
|
||||
PORT_DIPSETTING( 0x18, "3" )
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
PORT_DIPNAME( 0x60, 0x20, "Extend" ) PORT_DIPLOCATION("DIP-B:6,7")
|
||||
PORT_DIPSETTING( 0x00, "30K, 250K, 1M, 3M, 7M" )
|
||||
PORT_DIPSETTING( 0x00, "30K, 250K, 1M, 3M, 7M" )
|
||||
PORT_DIPSETTING( 0x20, "80K, 500k, 2M, 5M, 10M" )
|
||||
PORT_DIPSETTING( 0x40, "250K, 1M, 3M, 7M, 15M" )
|
||||
PORT_DIPSETTING( 0x60, "Not extend" )
|
||||
PORT_DIPNAME( 0x80, 0x80, "Free play" ) PORT_DIPLOCATION("DIP-B:8")
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSWC")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "DIP-C:1" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "DIP-C:1" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "DIP-C:2" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "DIP-C:3" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "DIP-C:4" ) // Missing freeze code @ 0x020B74
|
||||
@ -13360,8 +13360,8 @@ ROM_END
|
||||
|
||||
/* This bootleg uses a bootlegged B board nearly identical to that used in sf2ceblp.
|
||||
In my set:
|
||||
- Board-A is missing so I don't know if a normal or a dash board was used.
|
||||
- Board-C is an hacked 88622-C-5 with an unusual CPS-B-12 and clearly it's not its C-board because
|
||||
- Board-A is missing so I don't know if a normal or a dash board was used.
|
||||
- Board-C is an hacked 88622-C-5 with an unusual CPS-B-12 and clearly it's not its C-board because
|
||||
code analisys led to identify the CPS_B_21_DEF as the right configuration.
|
||||
- Board-B has some missing components:
|
||||
- audio cpu code EPROM @B13 (pang3b pa3_11.11f used instead)
|
||||
@ -13370,10 +13370,10 @@ ROM_END
|
||||
The program code is almost the same as of pang3b with some minor, yet interesting, hacks:
|
||||
- Dip switch use for board configuration (code@ 0x000300, 0xe0000) instead of a serial EPROM
|
||||
- Removed freeze from dip switch (code@ 020B74)
|
||||
- Some code to handle the PIC (protection?).
|
||||
- Some code to handle the PIC (protection?).
|
||||
Read and write to addresses 0x5762b0 and 0x57a2b0 occurs in the code but the return value is never really used (nop or bra skips relevant parts)
|
||||
and so seems that the PIC protection is ineffective.
|
||||
- Read and write to port 0x80017a (EEPROM in pang3) still are present in the code, but are filtered by the PAL16V8 @ E13 so there is no need to
|
||||
- Read and write to port 0x80017a (EEPROM in pang3) still are present in the code, but are filtered by the PAL16V8 @ E13 so there is no need to
|
||||
create a port for that address here in mame (altough this causes a popmessage "CPS-B read port 3A contact MAMEDEV" to occurr at startup if compiled with
|
||||
DEBUG=1)
|
||||
|
||||
@ -13436,7 +13436,7 @@ ROM_END
|
||||
|
||||
/* B-Board Mitchell 94916-10 */
|
||||
/* This set comes from an encrypted bootleg that uses a very well reproduced Mitchell 94916-10 B-Board surmounted by an
|
||||
original Capcom 90631C-5 C-Board taken from a Knights of the round board (there's a sticker on it).
|
||||
original Capcom 90631C-5 C-Board taken from a Knights of the round board (there's a sticker on it).
|
||||
Protection chip MACH215 is present. */
|
||||
ROM_START( pang3b5 )
|
||||
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
|
||||
@ -13456,7 +13456,7 @@ ROM_START( pang3b5 )
|
||||
|
||||
ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
|
||||
ROM_LOAD( "pa3_11.11f", 0x00000, 0x08000, CRC(cb1423a2) SHA1(3191bf5d340168647881738cb2aed09b1d86146e) ) // == 11.11f has the same content of pa3w_16.10l from pang3 romset
|
||||
ROM_IGNORE( 0x18000 )
|
||||
ROM_IGNORE( 0x18000 )
|
||||
|
||||
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
|
||||
ROM_LOAD( "pa3_05.10d", 0x00000, 0x20000, CRC(73a10d5d) SHA1(999465e4fbc35a34746d2db61ad49f61403d5af7) ) // 5.10c has the same content of pa3_05.10d from pang3 romset
|
||||
@ -13472,7 +13472,7 @@ ROM_START( pang3b5 )
|
||||
ROM_REGION( 0x0200, "bboardplds", 0 )
|
||||
ROM_LOAD( "cp1b1f_boot.1f", 0x0000, 0x0117, CRC(658849dc) SHA1(4fc386fa33322ce52334dee1391d617e0754bde0) )
|
||||
ROM_LOAD( "cp1b8k.8k", 0x0000, 0x0117, CRC(8a52ea7a) SHA1(47a59abc54a83292cfd6faa2d293c8f948c7ea03) ) // I was not able to dump the original PAL. Tryied to swap it with a legit CP1B8K on real hw
|
||||
// and it's working, so I suppose they're functionally equivalent
|
||||
// and it's working, so I suppose they're functionally equivalent
|
||||
ROM_LOAD( "cp1b9ka.9k", 0x0000, 0x0117, CRC(238d3ff4) SHA1(597f429d6a0ea485746322592604188c1ec87595) ) // The PAL @ 9k was bruteforced and verified to be to be functionally equivalent to a standard cp1b9ka
|
||||
|
||||
ROM_REGION( 0x0200, "cboardplds", 0 )
|
||||
@ -14180,31 +14180,30 @@ Pang 3b4 - code accesso to $5762b0 and $57a2b0 (PIC)
|
||||
*/
|
||||
uint16_t cps_state::pang3b4_prot_r()
|
||||
{
|
||||
|
||||
if ((pang3b4_prot & 0xFF) >=0 && (pang3b4_prot & 0xFF) <=7)
|
||||
return (pang3b4_prot & 0xFF)+0x20; // Game level + extend
|
||||
if (pang3b4_prot == 0x17)
|
||||
return 0x7321; // Guessed from code @0x314
|
||||
return 0xFFFF;
|
||||
if ((pang3b4_prot & 0xff) >=0 && (pang3b4_prot & 0xff) <=7)
|
||||
return (pang3b4_prot & 0xff) + 0x20; // Game level + extend
|
||||
if (pang3b4_prot == 0x17)
|
||||
return 0x7321; // Guessed from code @0x314
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
void cps_state::pang3b4_prot_w(uint16_t data)
|
||||
{
|
||||
pang3b4_prot = data;
|
||||
pang3b4_prot = data;
|
||||
}
|
||||
|
||||
|
||||
void cps_state::init_pang3b4()
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16smo_delegate(*this, FUNC(cps_state::pang3b4_prot_w)));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x57A2b0, 0x57A2b1, read16smo_delegate(*this, FUNC(cps_state::pang3b4_prot_r)));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16smo_delegate(*this, FUNC(cps_state::pang3b4_prot_w)));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x57a2b0, 0x57a2b1, read16smo_delegate(*this, FUNC(cps_state::pang3b4_prot_r)));
|
||||
|
||||
/* In pang3 the Mach215 security chip outputs 2 control signals (pins 4, 6) which switch the eeprom in/out serial data lines onto the main 68k data bus when required
|
||||
They're mapped in the CPS-B address range but there is not the EPROM on the board
|
||||
Read and write to port 0x80017a still are present in the code, but they are filtered by the PAL16V8 @ E13 */
|
||||
m_maincpu->space(AS_PROGRAM).nop_readwrite(0x80017a, 0x80017b);
|
||||
/* In pang3 the Mach215 security chip outputs 2 control signals (pins 4, 6) which switch the eeprom in/out serial data lines onto the main 68k data bus when required
|
||||
They're mapped in the CPS-B address range but there is not the EPROM on the board
|
||||
Read and write to port 0x80017a still are present in the code, but they are filtered by the PAL16V8 @ E13 */
|
||||
m_maincpu->space(AS_PROGRAM).nop_readwrite(0x80017a, 0x80017b);
|
||||
|
||||
init_cps1();
|
||||
init_cps1();
|
||||
}
|
||||
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
- remove m_input_hack functions, needed to make inputs working
|
||||
- lsrquiz2i, lsrquizg: access violation on microtouch_device destructor when exiting emulation
|
||||
Caused by microtouch_device::rcv_complete() overrunning the m_rx_buffer
|
||||
array space with 149 (array size=16).
|
||||
array space with 149 (array size=16).
|
||||
|
||||
|
||||
Known Games:
|
||||
@ -1070,7 +1070,7 @@ void cubo_state::cubo(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &cubo_state::cubo_mem);
|
||||
|
||||
ADDRESS_MAP_BANK(config, m_overlay).set_map(&cubo_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000);
|
||||
ADDRESS_MAP_BANK(config, m_chipset).set_map(&cubo_state::aga_map).set_options(ENDIANNESS_BIG, 32, 9, 0x200);
|
||||
ADDRESS_MAP_BANK(config, m_chipset).set_map(&cubo_state::aga_map).set_options(ENDIANNESS_BIG, 32, 9, 0x200);
|
||||
|
||||
AMIGA_COPPER(config, m_copper, amiga_state::CLK_28M_PAL / 2);
|
||||
m_copper->set_host_cpu_tag(m_maincpu);
|
||||
|
@ -66,7 +66,7 @@ private:
|
||||
|
||||
required_region_ptr<uint16_t> m_spirom;
|
||||
required_ioport m_testio;
|
||||
|
||||
|
||||
uint16_t reg3001_r(offs_t offset);
|
||||
void reg3001_w(offs_t offset, uint16_t data);
|
||||
uint16_t reg3002_r(offs_t offset);
|
||||
@ -262,7 +262,7 @@ void generalplus_gpl_unknown_state::reg3034_w(offs_t offset, uint16_t data)
|
||||
|
||||
void generalplus_gpl_unknown_state::reg3041_audiodac_w(offs_t offset, uint16_t data)
|
||||
{
|
||||
// logerror("%s: reg3041_audiodac_w %04x\n", machine().describe_context(), data);
|
||||
// logerror("%s: reg3041_audiodac_w %04x\n", machine().describe_context(), data);
|
||||
|
||||
// mapacman only writes 0000 / 7fff / 8000, but is known to have more limited sound than other units
|
||||
|
||||
@ -322,7 +322,7 @@ void generalplus_gpl_unknown_state::reg30e2_w(offs_t offset, uint16_t data)
|
||||
/* this appears to be querying the SPI Flash, eg.
|
||||
command 0xab = Read Electonic Signature
|
||||
command 0x9f = Read ID of the SPI Flash
|
||||
|
||||
|
||||
[:] ':maincpu' (0075DD): reg3001_w 1c00
|
||||
[:] ':maincpu' (00769B): reg3001_w 0c00
|
||||
[:] ':maincpu' (00769F): reg30e2_w 00ab (WITHOUT m_3001 & 0x1000)
|
||||
@ -380,9 +380,9 @@ mapacman vectors
|
||||
4863 irq 1 - just acks by writing 4000 to 3051, no payload
|
||||
486A irq 2 (used - needed to pass check on value in RAM changing in boot) acks with 2000 to 3051
|
||||
487D irq 3 (used - needed to pass check on value in RAM changing shortly after) acks with 0100 to 3051?
|
||||
4886 irq 4 - just acks by writing 10 to 3051, no payload
|
||||
4886 irq 4 - just acks by writing 10 to 3051, no payload
|
||||
488C irq 5 - push/pop/return
|
||||
488F irq 6 - push/pop/return
|
||||
488F irq 6 - push/pop/return
|
||||
4892 irq 7 - minimal payload, no 3051 ack?
|
||||
*/
|
||||
|
||||
@ -429,15 +429,15 @@ void generalplus_gpl_unknown_state::reg3092_lcd_w(offs_t offset, uint16_t data)
|
||||
/*
|
||||
if (m_displayposx == 256)
|
||||
{
|
||||
m_displayposy++;
|
||||
m_displayposx = 0;
|
||||
m_displayposy++;
|
||||
m_displayposx = 0;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
if (m_displayposy == 128)
|
||||
{
|
||||
m_displayposy = 0;
|
||||
m_displayposx = 0;
|
||||
m_displayposy = 0;
|
||||
m_displayposx = 0;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
@ -7,15 +7,15 @@
|
||||
and 1x sio. One of the sio ports communicated with the keyboard with a coiled
|
||||
telephone cord, complete with modular plug on each end. The keyboard carries
|
||||
its own Intel 87C51 processor and is an intelligent device.
|
||||
|
||||
Kaypro 5 notes:
|
||||
The Kaycomp Kay Pro V / Non-Linear Systems Kaypro 5: https://retrocmp.de/kaypro/kay-p1_vers.htm#kay-5,
|
||||
a version of the Kaypro II, but with a 5MB harddisk instead of one of the floppy drives, was announced
|
||||
in December 1982, but apart from the relevant articles of the time, only one photo can be found.
|
||||
|
||||
|
||||
Kaypro 5 notes:
|
||||
The Kaycomp Kay Pro V / Non-Linear Systems Kaypro 5: https://retrocmp.de/kaypro/kay-p1_vers.htm#kay-5,
|
||||
a version of the Kaypro II, but with a 5MB harddisk instead of one of the floppy drives, was announced
|
||||
in December 1982, but apart from the relevant articles of the time, only one photo can be found.
|
||||
|
||||
Kaypro 10 notes:
|
||||
This machine comes with a 10MB hard drive, split into 2 5MB partitions. It also has one floppy drive.
|
||||
The drive letters change depending on what drive it was booted from. The boot drive is always A:.
|
||||
This machine comes with a 10MB hard drive, split into 2 5MB partitions. It also has one floppy drive.
|
||||
The drive letters change depending on what drive it was booted from. The boot drive is always A:.
|
||||
- If booted from floppy:
|
||||
A: floppy
|
||||
B: HD partition 1
|
||||
|
@ -294,14 +294,14 @@ K: uses alt. ext. analog I/O board GX700-PWB(K)
|
||||
|
||||
GX700-PWB(K)A (C)2000 KONAMI
|
||||
|-----------------------------|
|
||||
| CN9 CN4 |
|
||||
| CN9 CN4 |
|
||||
| CN3 CN5 |
|
||||
| |
|
||||
| U2 U1 |
|
||||
| |-----------------|
|
||||
| CN6 |
|
||||
| U3 U4 U5 U6 |
|
||||
| U7 U8 U9-U16 |
|
||||
| U7 U8 U9-U16 |
|
||||
| U17 U18 |
|
||||
| |
|
||||
| U19 |
|
||||
@ -310,27 +310,27 @@ GX700-PWB(K)A (C)2000 KONAMI
|
||||
|-----------------------------------------------|
|
||||
Notes: (all ICs shown)
|
||||
|
||||
CN1 - (bottom) Connector joining this PCB to the MAIN PCB
|
||||
CN2 - (unpopulated custom 80-pin)
|
||||
CN3 - JST ??12
|
||||
CN4 - JST ??12
|
||||
CN5 - JST ??12
|
||||
CN6 - JST ??10
|
||||
CN7 - (unpopulated 5-pin)
|
||||
CN8 - (unpopulated 8-pin)
|
||||
CN9 - (unpopulated 4-pin)
|
||||
U1 - Maxim DS2401 (SOIC6)
|
||||
U2 - (unpopulated SOIC8)
|
||||
U3 - Motorola 74LS74A (SOIC14)
|
||||
U4,U5,U6 - Motorola 74LS244 (SOIC20)
|
||||
U7 - (unpopulated 4-pad)
|
||||
U8 - AMD PALCE16V8Q-15, stamped 'X700K01' (DIP20)
|
||||
U9-16 - Sharp PC817XF (DIP4)
|
||||
U17 - TI 74LV245A (SOIC20)
|
||||
U18 - Motorola 74LS273 (SOIC20)
|
||||
U19 - (unpopulated PLCC44 socket)
|
||||
U20 - (unpopulated SOIC16)
|
||||
U21 - (unpopulated SOIC16)
|
||||
CN1 - (bottom) Connector joining this PCB to the MAIN PCB
|
||||
CN2 - (unpopulated custom 80-pin)
|
||||
CN3 - JST ??12
|
||||
CN4 - JST ??12
|
||||
CN5 - JST ??12
|
||||
CN6 - JST ??10
|
||||
CN7 - (unpopulated 5-pin)
|
||||
CN8 - (unpopulated 8-pin)
|
||||
CN9 - (unpopulated 4-pin)
|
||||
U1 - Maxim DS2401 (SOIC6)
|
||||
U2 - (unpopulated SOIC8)
|
||||
U3 - Motorola 74LS74A (SOIC14)
|
||||
U4,U5,U6 - Motorola 74LS244 (SOIC20)
|
||||
U7 - (unpopulated 4-pad)
|
||||
U8 - AMD PALCE16V8Q-15, stamped 'X700K01' (DIP20)
|
||||
U9-16 - Sharp PC817XF (DIP4)
|
||||
U17 - TI 74LV245A (SOIC20)
|
||||
U18 - Motorola 74LS273 (SOIC20)
|
||||
U19 - (unpopulated PLCC44 socket)
|
||||
U20 - (unpopulated SOIC16)
|
||||
U21 - (unpopulated SOIC16)
|
||||
|
||||
|
||||
PCMCIA Flash Card
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
What is implemented but not working :
|
||||
|
||||
- The rear serial port.(Prise péri-informatique)
|
||||
- The rear serial port.(Prise péri-informatique)
|
||||
(Internal 8051 serial port emulation missing).
|
||||
|
||||
What is not yet implemented :
|
||||
@ -197,12 +197,12 @@ void minitel_state::port1_w(uint8_t data)
|
||||
{
|
||||
LOG("PORT_1_MDM_TXD : %d \n", data & PORT_1_MDM_TXD );
|
||||
}
|
||||
|
||||
|
||||
if(lineconnected)
|
||||
{
|
||||
m_modem->write_txd(!!(data & PORT_1_MDM_TXD));
|
||||
}
|
||||
|
||||
|
||||
if( (port1 ^ data) & PORT_1_MDM_RTS )
|
||||
{
|
||||
LOG("PORT_1_MDM_RTS : %d \n", data & PORT_1_MDM_RTS );
|
||||
|
@ -382,7 +382,7 @@ uint8_t mk98_state::video_r(offs_t offset)
|
||||
case 5:
|
||||
return video_register_r();
|
||||
}
|
||||
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
@ -418,16 +418,16 @@ void mk98_state::mk98_map(address_map &map)
|
||||
void mk98_state::mk98_io(address_map &map)
|
||||
{
|
||||
map.unmap_value_low();
|
||||
// map(0x0000, 0x000f).unmaprw();
|
||||
// map(0x0000, 0x000f).unmaprw();
|
||||
map(0x0020, 0x002f).rw(m_pic8259, FUNC(mk98pic_device::read), FUNC(mk98pic_device::write));
|
||||
map(0x0040, 0x004f).rw("pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write));
|
||||
map(0x0060, 0x0063).rw(FUNC(mk98_state::keyboard_r), FUNC(mk98_state::keyboard_w));
|
||||
// unidentified devices
|
||||
// map(0x00a0, 0x00a1).unmapw();
|
||||
// map(0x0110, 0x0111).unmapw();
|
||||
// map(0x0112, 0x0113).unmaprw();
|
||||
// map(0x0150, 0x0150).unmapw(); -- cart slot select
|
||||
// map(0x0170, 0x0170).unmapw();
|
||||
// unidentified devices
|
||||
// map(0x00a0, 0x00a1).unmapw();
|
||||
// map(0x0110, 0x0111).unmapw();
|
||||
// map(0x0112, 0x0113).unmaprw();
|
||||
// map(0x0150, 0x0150).unmapw(); -- cart slot select
|
||||
// map(0x0170, 0x0170).unmapw();
|
||||
map(0x03d0, 0x03df).rw(FUNC(mk98_state::video_r), FUNC(mk98_state::video_w));
|
||||
map(0x03f8, 0x03fe).rw("uart0", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
|
||||
map(0x03ff, 0x03ff).rw(FUNC(mk98_state::serial_r), FUNC(mk98_state::serial_w));
|
||||
|
@ -138,9 +138,9 @@
|
||||
Fruit Star Bonus control panel layout:
|
||||
|
||||
.------------------------------------------------------------------------------.
|
||||
| .--------. .--------. .--------. .--------. .--------. .--------. .--------. |
|
||||
| .--------. .--------. .--------. .--------. .--------. .--------. .--------. |
|
||||
| | BET | | TAKE | | STOP 1 | | STOP 2 | | STOP 3 | | STOP 4 | | START | |
|
||||
| '--------' '--------' '--------' '--------' '--------' '--------' '--------' |
|
||||
| '--------' '--------' '--------' '--------' '--------' '--------' '--------' |
|
||||
'------------------------------------------------------------------------------'
|
||||
|
||||
|
||||
@ -382,8 +382,8 @@
|
||||
|
||||
|
||||
[2022-01-16 to 2022-03-04]
|
||||
|
||||
After hard work....
|
||||
|
||||
After hard work....
|
||||
|
||||
- Fixed screen matrix according to the CRTC values.
|
||||
- Improved memory map.
|
||||
@ -434,7 +434,7 @@
|
||||
#include "tilemap.h"
|
||||
#include "machine/ticket.h"
|
||||
|
||||
#include "fruitstb.lh"
|
||||
#include "fruitstb.lh"
|
||||
|
||||
#define MASTER_CLOCK XTAL(8'000'000)
|
||||
|
||||
@ -467,7 +467,7 @@ private:
|
||||
tilemap_t *m_bg_tilemap = nullptr;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<ticket_dispenser_device> m_hopper;
|
||||
required_device<ticket_dispenser_device> m_hopper;
|
||||
output_finder<15> m_lamps;
|
||||
|
||||
void mp12wbk_outport(offs_t offset, uint8_t data);
|
||||
@ -491,7 +491,7 @@ private:
|
||||
|
||||
82s131 82s147
|
||||
---------- ----------------------
|
||||
3 2 1 0 7 6 5 4 3 2 1 0 Bits RESNET (Ohms)
|
||||
3 2 1 0 7 6 5 4 3 2 1 0 Bits RESNET (Ohms)
|
||||
| | | | | | | | | | | | 3210
|
||||
| '------------------------------------------- Color R -> ---x ----ZZZ(2200)----+---- RED
|
||||
| | | | | | | | | | '-------- Color R -> --x- ----ZZZ(1000)----+
|
||||
@ -526,7 +526,7 @@ void mpu12wbk_state::mpu12wbk_palette(palette_device &palette) const
|
||||
for (int i = 0; i < palette.entries(); i++)
|
||||
{
|
||||
int data = (color_prom2[i] << 8) | color_prom[i]; // 4bit + 8bit
|
||||
data = bitswap<12>(data, 8, 7, 6, 9, 5, 4, 3, 11, 2, 1, 0, 10);
|
||||
data = bitswap<12>(data, 8, 7, 6, 9, 5, 4, 3, 11, 2, 1, 0, 10);
|
||||
|
||||
int bit0, bit1, bit2, bit3;
|
||||
|
||||
@ -614,24 +614,24 @@ WRITE_LINE_MEMBER( mpu12wbk_state::crtc_vs )
|
||||
|
||||
void mpu12wbk_state::mpu12wbk_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x0fff).ram().share("nvram"); // Backed battery MB8464A-10L
|
||||
map(0x1300, 0x1300).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // OK
|
||||
map(0x1301, 0x1301).w("ay8910", FUNC(ay8910_device::address_w)); // OK
|
||||
map(0x1400, 0x1400).w("crtc", FUNC(mc6845_device::address_w)); // OK
|
||||
map(0x1401, 0x1401).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // OK
|
||||
map(0x1800, 0x1fff).ram().share("nvram2"); // Backed battery MB8464A-10L
|
||||
map(0x2000, 0x2fff).ram().w(FUNC(mpu12wbk_state::mpu12wbk_videoram_w)).share("videoram"); // 1x MB8464A-10L
|
||||
map(0x3000, 0x3fff).ram().w(FUNC(mpu12wbk_state::mpu12wbk_colorram_w)).share("colorram"); // 1x MB8464A-10L
|
||||
map(0x0000, 0x0fff).ram().share("nvram"); // Backed battery MB8464A-10L
|
||||
map(0x1300, 0x1300).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // OK
|
||||
map(0x1301, 0x1301).w("ay8910", FUNC(ay8910_device::address_w)); // OK
|
||||
map(0x1400, 0x1400).w("crtc", FUNC(mc6845_device::address_w)); // OK
|
||||
map(0x1401, 0x1401).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // OK
|
||||
map(0x1800, 0x1fff).ram().share("nvram2"); // Backed battery MB8464A-10L
|
||||
map(0x2000, 0x2fff).ram().w(FUNC(mpu12wbk_state::mpu12wbk_videoram_w)).share("videoram"); // 1x MB8464A-10L
|
||||
map(0x3000, 0x3fff).ram().w(FUNC(mpu12wbk_state::mpu12wbk_colorram_w)).share("colorram"); // 1x MB8464A-10L
|
||||
|
||||
map(0x1000, 0x1000).portr("IN0"); // OK
|
||||
map(0x1004, 0x1004).portr("IN1"); // OK
|
||||
map(0x1008, 0x1008).portr("IN2"); // OK
|
||||
map(0x1000, 0x1000).portr("IN0"); // OK
|
||||
map(0x1004, 0x1004).portr("IN1"); // OK
|
||||
map(0x1008, 0x1008).portr("IN2"); // OK
|
||||
|
||||
map(0x100c, 0x1018).w(FUNC(mpu12wbk_state::mp12wbk_outport)); // OK
|
||||
|
||||
map(0x1100, 0x1100).portr("SW1"); // OK
|
||||
map(0x1100, 0x1100).portr("SW1"); // OK
|
||||
|
||||
map(0x8000, 0xffff).rom(); // OK
|
||||
map(0x8000, 0xffff).rom(); // OK
|
||||
};
|
||||
|
||||
|
||||
@ -643,64 +643,64 @@ void mpu12wbk_state::mpu12wbk_map(address_map &map)
|
||||
Fruit Star Bonus - Out Ports
|
||||
----------------------------
|
||||
|
||||
0x100C D0 Meter Coin ???
|
||||
D1 Meter Coin Out
|
||||
D2 Meter Coin In
|
||||
D3 Lamp Stop Reel 2
|
||||
D4 x
|
||||
D5 x
|
||||
D6 x
|
||||
D7 x
|
||||
|
||||
0x1010 D0 Lamp Stop Reel 3
|
||||
D1 Lamp Take
|
||||
D2 Lamp Stop Reel 4
|
||||
D3 Lamp Stop Reel 1
|
||||
D4 Start
|
||||
D5 Bet
|
||||
D6 Unused
|
||||
D7 Unused
|
||||
|
||||
0x1014 D0 ?0
|
||||
D1 ?0
|
||||
D2 ?0
|
||||
D3 ?0
|
||||
D4 ?0
|
||||
D5 ?1
|
||||
D6 ?0
|
||||
D7 ?0
|
||||
|
||||
0x1018 D0 ?1
|
||||
D1 ?1
|
||||
D2 ?1
|
||||
D3 ?1
|
||||
D4 ?1
|
||||
D5 x
|
||||
D6 ?1/0
|
||||
D7 x
|
||||
0x100C D0 Meter Coin ???
|
||||
D1 Meter Coin Out
|
||||
D2 Meter Coin In
|
||||
D3 Lamp Stop Reel 2
|
||||
D4 x
|
||||
D5 x
|
||||
D6 x
|
||||
D7 x
|
||||
|
||||
0x1010 D0 Lamp Stop Reel 3
|
||||
D1 Lamp Take
|
||||
D2 Lamp Stop Reel 4
|
||||
D3 Lamp Stop Reel 1
|
||||
D4 Start
|
||||
D5 Bet
|
||||
D6 Unused
|
||||
D7 Unused
|
||||
|
||||
0x1014 D0 ?0
|
||||
D1 ?0
|
||||
D2 ?0
|
||||
D3 ?0
|
||||
D4 ?0
|
||||
D5 ?1
|
||||
D6 ?0
|
||||
D7 ?0
|
||||
|
||||
0x1018 D0 ?1
|
||||
D1 ?1
|
||||
D2 ?1
|
||||
D3 ?1
|
||||
D4 ?1
|
||||
D5 x
|
||||
D6 ?1/0
|
||||
D7 x
|
||||
|
||||
*/
|
||||
|
||||
void mpu12wbk_state::mp12wbk_outport(offs_t offset, uint8_t data)
|
||||
{
|
||||
// logerror("Offset: %x - Data:%x\n", offset, data);
|
||||
|
||||
// logerror("Offset: %x - Data:%x\n", offset, data);
|
||||
|
||||
switch( offset )
|
||||
{
|
||||
// 0x100C
|
||||
case 0x00: machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // M1 - Coins ???.
|
||||
case 0x00: machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // M1 - Coins ???.
|
||||
machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // M2 - Coins Out.
|
||||
machine().bookkeeping().coin_counter_w(2, BIT(data, 2)); // M3 - Coins In.
|
||||
m_lamps[6] = BIT(data, 3); // lamp6 (Stop 1) ok
|
||||
break;
|
||||
|
||||
// 0x1010
|
||||
case 0x04: m_lamps[0] = BIT(data, 0); // lamp0 (Stop 3) ok
|
||||
case 0x04: m_lamps[0] = BIT(data, 0); // lamp0 (Stop 3) ok
|
||||
m_lamps[1] = BIT(data, 1); // lamp1 (Take)
|
||||
m_lamps[2] = BIT(data, 2); // lamp2 (Stop 4) ok
|
||||
m_lamps[3] = BIT(data, 3); // lamp3 (Stop 1) ok
|
||||
m_lamps[4] = BIT(data, 4); // lamp4 (Start) ok
|
||||
m_lamps[5] = BIT(data, 5); // lamp5 (Bet) ok
|
||||
m_lamps[5] = BIT(data, 5); // lamp5 (Bet) ok
|
||||
break;
|
||||
|
||||
// 0x1014
|
||||
@ -708,9 +708,9 @@ void mpu12wbk_state::mp12wbk_outport(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
// 0x1018
|
||||
case 0x0c: break;
|
||||
case 0x0c: break;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/********************************
|
||||
@ -723,122 +723,122 @@ void mpu12wbk_state::mp12wbk_outport(offs_t offset, uint8_t data)
|
||||
|
||||
---- 0x1000 ----
|
||||
|
||||
D0 KeyOut
|
||||
D1 Coin2 / Change (Partial KeyOut). (DSW#3 ON for Coin2 Mode. OFF for Change Mode)
|
||||
D2 Payout (Hopper)
|
||||
D3 -
|
||||
D4 Hopper coin out
|
||||
D5 Coin3
|
||||
D6 KeyIn1 -> Stop1 -> 100 Credits
|
||||
-> Stop2 -> 1000 Credits
|
||||
-> Stop3 -> 100 Credits
|
||||
-> Take -> Clear
|
||||
-> Stop4 -> Accounting
|
||||
|
||||
D7 Service -> Stop1 -> Program -> Stop1 -> Coin In 2 (0-20, 30, 40, 50, 60, 70, 80, 90, 100)
|
||||
-> Stop2 -> Coin In 3 (0-20, 30, 40, 50, 60, 70, 80, 90, 100)
|
||||
-> Stop3 -> Max Bet (DSW#5 ON) (1, 2, 3, 4, 5, 10, 20)
|
||||
-> Stop4 -> Coin Out (x1, x2, x3, x4)
|
||||
-> Bet -> Coin In 1 (0-20, 30, 40, 50, 60, 70, 80, 90, 100)
|
||||
-> Start -> End
|
||||
|
||||
-> Stop2 -> Print Accounting 2
|
||||
-> Stop4 -> Screen Test / Lamp Test
|
||||
-> Start -> End
|
||||
-> Stop3 -> Hopper Fill
|
||||
-> Take -> 5 Seconds -> Data Clear
|
||||
-> Coin1 -> Button Echo
|
||||
D0 KeyOut
|
||||
D1 Coin2 / Change (Partial KeyOut). (DSW#3 ON for Coin2 Mode. OFF for Change Mode)
|
||||
D2 Payout (Hopper)
|
||||
D3 -
|
||||
D4 Hopper coin out
|
||||
D5 Coin3
|
||||
D6 KeyIn1 -> Stop1 -> 100 Credits
|
||||
-> Stop2 -> 1000 Credits
|
||||
-> Stop3 -> 100 Credits
|
||||
-> Take -> Clear
|
||||
-> Stop4 -> Accounting
|
||||
|
||||
D7 Service -> Stop1 -> Program -> Stop1 -> Coin In 2 (0-20, 30, 40, 50, 60, 70, 80, 90, 100)
|
||||
-> Stop2 -> Coin In 3 (0-20, 30, 40, 50, 60, 70, 80, 90, 100)
|
||||
-> Stop3 -> Max Bet (DSW#5 ON) (1, 2, 3, 4, 5, 10, 20)
|
||||
-> Stop4 -> Coin Out (x1, x2, x3, x4)
|
||||
-> Bet -> Coin In 1 (0-20, 30, 40, 50, 60, 70, 80, 90, 100)
|
||||
-> Start -> End
|
||||
|
||||
-> Stop2 -> Print Accounting 2
|
||||
-> Stop4 -> Screen Test / Lamp Test
|
||||
-> Start -> End
|
||||
-> Stop3 -> Hopper Fill
|
||||
-> Take -> 5 Seconds -> Data Clear
|
||||
-> Coin1 -> Button Echo
|
||||
|
||||
|
||||
|
||||
---- 0x1004 ----
|
||||
|
||||
D0 Stop2
|
||||
D1 Stop1
|
||||
D2 Stop3
|
||||
D3 Stop4
|
||||
D4 Start/Double
|
||||
D5 Take
|
||||
D6 Bet / Half Gamble
|
||||
D7 KeyIn2 -> Stop1 -> 100 Credits
|
||||
-> Stop2 -> 1000 Credits
|
||||
-> Stop3 -> 100 Credits
|
||||
-> Take -> Clear
|
||||
D0 Stop2
|
||||
D1 Stop1
|
||||
D2 Stop3
|
||||
D3 Stop4
|
||||
D4 Start/Double
|
||||
D5 Take
|
||||
D6 Bet / Half Gamble
|
||||
D7 KeyIn2 -> Stop1 -> 100 Credits
|
||||
-> Stop2 -> 1000 Credits
|
||||
-> Stop3 -> 100 Credits
|
||||
-> Take -> Clear
|
||||
|
||||
|
||||
---- 0x1008 ----
|
||||
|
||||
D0 Coin1
|
||||
D1 Unknown
|
||||
D2 Operator Accounting
|
||||
D3 Unknown
|
||||
D4 Unknown
|
||||
D5 Unknown
|
||||
D6 Unknown
|
||||
D7 Unknown
|
||||
D0 Coin1
|
||||
D1 Unknown
|
||||
D2 Operator Accounting
|
||||
D3 Unknown
|
||||
D4 Unknown
|
||||
D5 Unknown
|
||||
D6 Unknown
|
||||
D7 Unknown
|
||||
|
||||
*/
|
||||
|
||||
static INPUT_PORTS_START( mpu12wbk )
|
||||
PORT_START("IN0") // 0x1000
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // DSW#2 OFF = Change; DSW#2 ON = Coin2
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // DSW#2 OFF = Change; DSW#2 ON = Coin2
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-4") PORT_CODE(KEYCODE_S) // unknown
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-4") PORT_CODE(KEYCODE_S) // unknown
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Supervisor Key") PORT_CODE(KEYCODE_8) PORT_TOGGLE // key in / other features
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service") PORT_CODE(KEYCODE_0) // all settings
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Supervisor Key") PORT_CODE(KEYCODE_8) PORT_TOGGLE // key in / other features
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service") PORT_CODE(KEYCODE_0) // all settings
|
||||
|
||||
PORT_START("IN1") // 0x1004
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Stop 2") // button 4 in layout.
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Stop 1") // button 3 in layout.
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Stop 3 / Paytable") // button 5 in layout.
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Stop 4 / Paytable") // button 6 in layout.
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Double (Doppeln)") // button 7 in layout.
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take (Loeschen-Nehmen)") // button 2 in layout.
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Half Gamble") // button 1 in layout.
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Stop 2") // button 4 in layout.
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Stop 1") // button 3 in layout.
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Stop 3 / Paytable") // button 5 in layout.
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Stop 4 / Paytable") // button 6 in layout.
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Double (Doppeln)") // button 7 in layout.
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) PORT_NAME("Take (Loeschen-Nehmen)") // button 2 in layout.
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Half Gamble") // button 1 in layout.
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Attendant Key") PORT_CODE(KEYCODE_9) PORT_TOGGLE // key in / in-out accounts
|
||||
|
||||
PORT_START("IN2") // 0x1008
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-2") PORT_CODE(KEYCODE_F) // unknown
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-2") PORT_CODE(KEYCODE_F) // unknown
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Operator Accounting") PORT_CODE(KEYCODE_E) PORT_TOGGLE // in-out accounts
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-4") PORT_CODE(KEYCODE_G) // unknown
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-5") PORT_CODE(KEYCODE_H) // unknown
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-6") PORT_CODE(KEYCODE_J) // unknown
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-7") PORT_CODE(KEYCODE_K) // unknown
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-8") PORT_CODE(KEYCODE_L) // unknown
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-4") PORT_CODE(KEYCODE_G) // unknown
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-5") PORT_CODE(KEYCODE_H) // unknown
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-6") PORT_CODE(KEYCODE_J) // unknown
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-7") PORT_CODE(KEYCODE_K) // unknown
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-8") PORT_CODE(KEYCODE_L) // unknown
|
||||
|
||||
PORT_START("SW1") // 0x1100
|
||||
PORT_DIPNAME( 0x01, 0x01, "Enable Remote Accounts Clear" ) PORT_DIPLOCATION("SW1:1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Enable Remote Accounts Clear" ) PORT_DIPLOCATION("SW1:1")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_DIPNAME( 0x02, 0x02, "Quick Start on Max Bet" ) PORT_DIPLOCATION("SW1:2")
|
||||
PORT_DIPNAME( 0x02, 0x02, "Quick Start on Max Bet" ) PORT_DIPLOCATION("SW1:2")
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_DIPNAME( 0x04, 0x00, "Coin 2 Settings" ) PORT_DIPLOCATION("SW1:3")
|
||||
PORT_DIPNAME( 0x04, 0x00, "Coin 2 Settings" ) PORT_DIPLOCATION("SW1:3")
|
||||
PORT_DIPSETTING( 0x04, "Change" )
|
||||
PORT_DIPSETTING( 0x00, "Coin 2" )
|
||||
|
||||
PORT_DIPNAME( 0x08, 0x08, "Key In" ) PORT_DIPLOCATION("SW1:4")
|
||||
PORT_DIPNAME( 0x08, 0x08, "Key In" ) PORT_DIPLOCATION("SW1:4")
|
||||
PORT_DIPSETTING( 0x08, "Enable" )
|
||||
PORT_DIPSETTING( 0x00, "Disable" )
|
||||
|
||||
PORT_DIPNAME( 0x10, 0x00, "Max Bet Settings" ) PORT_DIPLOCATION("SW1:5")
|
||||
PORT_DIPNAME( 0x10, 0x00, "Max Bet Settings" ) PORT_DIPLOCATION("SW1:5")
|
||||
PORT_DIPSETTING( 0x10, "Allow" )
|
||||
PORT_DIPSETTING( 0x00, "Deny" )
|
||||
|
||||
PORT_DIPNAME( 0x20, 0x20, "Currency" ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPNAME( 0x20, 0x20, "Currency" ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPSETTING( 0x20, "Credits" )
|
||||
PORT_DIPSETTING( 0x00, "Euro Currency" )
|
||||
|
||||
PORT_DIPNAME( 0x40, 0x40, "Autostop") PORT_DIPLOCATION("SW1:7")
|
||||
PORT_DIPNAME( 0x40, 0x40, "Autostop") PORT_DIPLOCATION("SW1:7")
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_DIPNAME( 0x80, 0x80, "Hopper" ) PORT_DIPLOCATION("SW1:8")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Hopper" ) PORT_DIPLOCATION("SW1:8")
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
@ -853,8 +853,8 @@ static const gfx_layout charlayout =
|
||||
4,8,
|
||||
RGN_FRAC(1,3),
|
||||
6,
|
||||
// the first two bitplanes are inverted...
|
||||
{ RGN_FRAC(0,3) + 4, RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(1,3) + 4, RGN_FRAC(2,3), RGN_FRAC(2,3) + 4 },
|
||||
// the first two bitplanes are inverted...
|
||||
{ RGN_FRAC(0,3) + 4, RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(1,3) + 4, RGN_FRAC(2,3), RGN_FRAC(2,3) + 4 },
|
||||
{ 3, 2, 1, 0 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*4*2
|
||||
@ -892,8 +892,8 @@ void mpu12wbk_state::mpu12wbk(machine_config &config)
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
|
||||
// Default screen values analyzing the MC6845 setup / init.
|
||||
screen.set_size((48+1)*8, (48+1)*8); // From MC6845, registers 00 & 04. (value-1)
|
||||
screen.set_visarea(0*8, 48*8-1, 0*8, 32*8-1); // Driven by MC6845, registers 01 & 06
|
||||
screen.set_size((48+1)*8, (48+1)*8); // From MC6845, registers 00 & 04. (value-1)
|
||||
screen.set_visarea(0*8, 48*8-1, 0*8, 32*8-1); // Driven by MC6845, registers 01 & 06
|
||||
screen.set_screen_update(FUNC(mpu12wbk_state::screen_update_mpu12wbk));
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, "palette", gfx_mpu12wbk);
|
||||
@ -905,7 +905,7 @@ void mpu12wbk_state::mpu12wbk(machine_config &config)
|
||||
crtc.set_char_width(4);
|
||||
//crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
crtc.out_vsync_callback().set(FUNC(mpu12wbk_state::crtc_vs));
|
||||
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
AY8910(config, "ay8910", MASTER_CLOCK / 4).add_route(ALL_OUTPUTS, "mono", 1.00); // clock guessed
|
||||
@ -985,7 +985,7 @@ ROM_END
|
||||
|
||||
The game displays 8.30UNG-200 in the service mode)
|
||||
|
||||
Even when the version is higher in number,
|
||||
Even when the version is higher in number,
|
||||
program and graphics are older.
|
||||
|
||||
*/
|
||||
@ -1021,7 +1021,7 @@ ROM_END
|
||||
Program flash ROM is inside a CPU epoxy block
|
||||
with M6809 CPU and one PLD.
|
||||
|
||||
Even when the version is higher in number,
|
||||
Even when the version is higher in number,
|
||||
program and graphics are older.
|
||||
|
||||
*/
|
||||
|
@ -349,10 +349,10 @@ ROM_START(photoply99sp)
|
||||
-Atmel AT89C2051 MCU (2KBytes internal ROM)
|
||||
-Xtal 11.05MHz
|
||||
-24C08W6 SEEPROM
|
||||
-HC132
|
||||
-HC132
|
||||
On each dongle there's a sticker with the revision number, but we've found the same MCU program on different revisions and
|
||||
different SEEPROM contents on the same revision. We're adding here every found combination of MCU program and SEEPROM content.
|
||||
*/
|
||||
*/
|
||||
ROM_REGION(0xC00, "dongle", 0)
|
||||
|
||||
// Same MCU program as "pp_99_dongle_r3a", and "pp_99_dongle_r1" but with unique SEEPROM content
|
||||
|
@ -19,7 +19,7 @@ There are mistakes in the sound board schematic: IC14 pin12 goes to IC5 pin13 on
|
||||
|
||||
Also, very unobvious is the fact that PIA ports A and B are swapped around compared to the Inder
|
||||
soundcard.
|
||||
|
||||
|
||||
Issues with the sound:
|
||||
- MSM6585 sounds are very slow, like a faulty tape player. MSM5205 sounds are better, although some
|
||||
speech can be slow.
|
||||
|
@ -2223,7 +2223,7 @@ static INPUT_PORTS_START( alphahob )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Missile Bonus Life" ) PORT_DIPLOCATION("SW1:3")
|
||||
PORT_DIPSETTING( 0x00, "10k" )
|
||||
PORT_DIPSETTING( 0x04, "15k" )
|
||||
|
||||
|
||||
PORT_MODIFY("IN3")
|
||||
PORT_DIPNAME( 0x04, 0x00, "Missile Final UFO Bonus" ) PORT_DIPLOCATION("SW1:4")
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
|
@ -124,7 +124,7 @@ private:
|
||||
void spec_contr_reg_w(uint8_t data);
|
||||
|
||||
void dbrq_w(int state);
|
||||
|
||||
|
||||
uint8_t cio_pa_r();
|
||||
uint8_t cio_pb_r();
|
||||
void cio_pb_w(uint8_t data);
|
||||
|
@ -317,10 +317,10 @@ public:
|
||||
, m_cia_1(*this, "cia_1")
|
||||
, m_rs232(*this, "rs232")
|
||||
, m_centronics(*this, "centronics")
|
||||
// , m_agnus(*this, "agnus")
|
||||
// , m_denise(*this, "denise")
|
||||
// , m_agnus(*this, "agnus")
|
||||
// , m_denise(*this, "denise")
|
||||
, m_copper(*this, "copper")
|
||||
// , m_blitter(*this, "blitter")
|
||||
// , m_blitter(*this, "blitter")
|
||||
, m_paula(*this, "paula")
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_screen(*this, "screen")
|
||||
@ -365,7 +365,7 @@ public:
|
||||
/* chip RAM access */
|
||||
uint16_t read_chip_ram(offs_t byteoffs)
|
||||
{
|
||||
// We use rand() here so that an attempt to go beyond the allocated chip RAM
|
||||
// We use rand() here so that an attempt to go beyond the allocated chip RAM
|
||||
// (hopefully) doesn't go unnoticed.
|
||||
// FIXME: most likely open bus instead.
|
||||
return EXPECTED(byteoffs < m_chip_ram.bytes()) ? m_chip_ram.read(byteoffs >> 1) : machine().rand();
|
||||
|
@ -48,7 +48,7 @@ copyright-holders: Grull Osgo, Roberto Fresca.
|
||||
<bounds x="0" y="0.3" width="1" height="0.4" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
|
||||
<element name="stop4" defstate="0">
|
||||
<rect state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
@ -61,7 +61,7 @@ copyright-holders: Grull Osgo, Roberto Fresca.
|
||||
<bounds x="0" y="0.3" width="1" height="0.4" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
|
||||
|
||||
<element name="take" defstate="0">
|
||||
<rect state="1">
|
||||
@ -255,7 +255,7 @@ copyright-holders: Grull Osgo, Roberto Fresca.
|
||||
</element>
|
||||
<element name="lamp6" ref="stop2" inputtag="IN1" inputmask="0x01">
|
||||
<bounds x="1.85" y="3.10" width="0.30" height="0.30" />
|
||||
</element>
|
||||
</element>
|
||||
|
||||
|
||||
</view>
|
||||
|
@ -231,7 +231,7 @@ uint8_t abc1600_mac_device::read(offs_t offset)
|
||||
{
|
||||
if (nonx)
|
||||
{
|
||||
logerror("%s BUS ERROR R %05x:%06x (NONX %u WP %u TASK %u FC %u MAGIC %u)\n",
|
||||
logerror("%s BUS ERROR R %05x:%06x (NONX %u WP %u TASK %u FC %u MAGIC %u)\n",
|
||||
machine().describe_context(), offset, virtual_offset, nonx, wp, task, fc, m_magic);
|
||||
dump();
|
||||
m_write_buserr(offset, 1);
|
||||
@ -274,14 +274,14 @@ void abc1600_mac_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (nonx)
|
||||
{
|
||||
logerror("%s BUS ERROR W %05x:%06x (NONX %u WP %u TASK %u FC %u MAGIC %u)\n",
|
||||
logerror("%s BUS ERROR W %05x:%06x (NONX %u WP %u TASK %u FC %u MAGIC %u)\n",
|
||||
machine().describe_context(), offset, virtual_offset, nonx, wp, task, fc, m_magic);
|
||||
dump();
|
||||
m_write_buserr(offset, 0);
|
||||
}
|
||||
if (!wp)
|
||||
{
|
||||
logerror("%s BUS ERROR W %05x:%06x (NONX %u WP %u TASK %u FC %u MAGIC %u)\n",
|
||||
logerror("%s BUS ERROR W %05x:%06x (NONX %u WP %u TASK %u FC %u MAGIC %u)\n",
|
||||
machine().describe_context(), offset, virtual_offset, nonx, wp, task, fc, m_magic);
|
||||
dump();
|
||||
m_write_buserr(offset, 0);
|
||||
|
@ -61,12 +61,12 @@ public:
|
||||
void dma0_mreq_w(offs_t offset, uint8_t data) { dma_mreq_w(0, DMAMAP_R0_LO, offset, data); }
|
||||
uint8_t dma0_iorq_r(offs_t offset) { return dma_iorq_r(DMAMAP_R0_LO, offset); }
|
||||
void dma0_iorq_w(offs_t offset, uint8_t data) { dma_iorq_w(DMAMAP_R0_LO, offset, data); }
|
||||
|
||||
|
||||
uint8_t dma1_mreq_r(offs_t offset) { return dma_mreq_r(1, DMAMAP_R1_LO, offset); }
|
||||
void dma1_mreq_w(offs_t offset, uint8_t data) { dma_mreq_w(1, DMAMAP_R1_LO, offset, data); }
|
||||
uint8_t dma1_iorq_r(offs_t offset) { return dma_iorq_r(DMAMAP_R1_LO, offset); }
|
||||
void dma1_iorq_w(offs_t offset, uint8_t data) { dma_iorq_w(DMAMAP_R1_LO, offset, data); }
|
||||
|
||||
|
||||
uint8_t dma2_mreq_r(offs_t offset) { return dma_mreq_r(2, DMAMAP_R2_LO, offset); }
|
||||
void dma2_mreq_w(offs_t offset, uint8_t data) { dma_mreq_w(2, DMAMAP_R2_LO, offset, data); }
|
||||
uint8_t dma2_iorq_r(offs_t offset) { return dma_iorq_r(DMAMAP_R2_LO, offset); }
|
||||
@ -121,7 +121,7 @@ private:
|
||||
|
||||
devcb_read8::array<3> m_read_tren;
|
||||
devcb_write8::array<3> m_write_tren;
|
||||
|
||||
|
||||
bool m_boote;
|
||||
bool m_magic;
|
||||
int m_task;
|
||||
|
@ -1144,132 +1144,132 @@ void amiga_state::ocs_map(address_map &map)
|
||||
map(0x000, 0x1ff).rw(FUNC(amiga_state::custom_chip_r), FUNC(amiga_state::custom_chip_w));
|
||||
|
||||
// Reading state section
|
||||
// map(0x000, 0x001).r(FUNC(amiga_state::bltddat_r));
|
||||
// map(0x002, 0x003).r(FUNC(amiga_state::dmaconr_r));
|
||||
// map(0x000, 0x001).r(FUNC(amiga_state::bltddat_r));
|
||||
// map(0x002, 0x003).r(FUNC(amiga_state::dmaconr_r));
|
||||
map(0x004, 0x005).r(FUNC(amiga_state::vposr_r));
|
||||
// map(0x006, 0x007).r(FUNC(amiga_state::vhposr_r));
|
||||
// map(0x008, 0x009).r(FUNC(amiga_state::dskdatr_r));
|
||||
// map(0x006, 0x007).r(FUNC(amiga_state::vhposr_r));
|
||||
// map(0x008, 0x009).r(FUNC(amiga_state::dskdatr_r));
|
||||
// TODO: verify if JOYxDAT really belongs to Denise (???)
|
||||
// map(0x00a, 0x00b).r(FUNC(amiga_state::joydat_r<0>));
|
||||
// map(0x00c, 0x00d).r(FUNC(amiga_state::joydat_r<1>));
|
||||
// map(0x00e, 0x00f).r(FUNC(amiga_state::clxdat_r));
|
||||
// map(0x00a, 0x00b).r(FUNC(amiga_state::joydat_r<0>));
|
||||
// map(0x00c, 0x00d).r(FUNC(amiga_state::joydat_r<1>));
|
||||
// map(0x00e, 0x00f).r(FUNC(amiga_state::clxdat_r));
|
||||
map(0x010, 0x011).r(m_fdc, FUNC(amiga_fdc_device::adkcon_r));
|
||||
// map(0x012, 0x013).r(FUNC(amiga_state::potdat_r<0>)); // POT0DAT
|
||||
// map(0x014, 0x015).r(FUNC(amiga_state::potdat_r<1>));
|
||||
// map(0x016, 0x017).r(FUNC(amiga_state::potgor_r)); // a.k.a. POTINP
|
||||
// map(0x018, 0x019).r(FUNC(amiga_state::serdat_r));
|
||||
// map(0x012, 0x013).r(FUNC(amiga_state::potdat_r<0>)); // POT0DAT
|
||||
// map(0x014, 0x015).r(FUNC(amiga_state::potdat_r<1>));
|
||||
// map(0x016, 0x017).r(FUNC(amiga_state::potgor_r)); // a.k.a. POTINP
|
||||
// map(0x018, 0x019).r(FUNC(amiga_state::serdat_r));
|
||||
map(0x01a, 0x01b).r(m_fdc, FUNC(amiga_fdc_device::dskbytr_r));
|
||||
// map(0x01c, 0x01d).r(m_paula, FUNC(paula_8364_device::intenar_r));
|
||||
// map(0x01e, 0x01f).r(m_paula, FUNC(paula_8364_device::intreqr_r));
|
||||
// map(0x01c, 0x01d).r(m_paula, FUNC(paula_8364_device::intenar_r));
|
||||
// map(0x01e, 0x01f).r(m_paula, FUNC(paula_8364_device::intreqr_r));
|
||||
|
||||
// FDC writes
|
||||
// FIXME: these two belongs to Agnus, also shouldn't be readable
|
||||
map(0x020, 0x021).rw(m_fdc, FUNC(amiga_fdc_device::dskpth_r), FUNC(amiga_fdc_device::dskpth_w));
|
||||
map(0x022, 0x023).rw(m_fdc, FUNC(amiga_fdc_device::dskptl_r), FUNC(amiga_fdc_device::dskptl_w));
|
||||
map(0x024, 0x025).w(m_fdc, FUNC(amiga_fdc_device::dsklen_w));
|
||||
// map(0x026, 0x027).w(m_fdc, FUNC(amiga_fdc_device::dskdat_w));
|
||||
// map(0x026, 0x027).w(m_fdc, FUNC(amiga_fdc_device::dskdat_w));
|
||||
|
||||
// map(0x028, 0x029).w(FUNC(amiga_state::refptr_w));
|
||||
// map(0x028, 0x029).w(FUNC(amiga_state::refptr_w));
|
||||
map(0x02a, 0x02b).w(FUNC(amiga_state::vposw_w));
|
||||
// map(0x02c, 0x02d).w(FUNC(amiga_state::vhposw_w));
|
||||
// map(0x02c, 0x02d).w(FUNC(amiga_state::vhposw_w));
|
||||
map(0x02e, 0x02f).w(m_copper, FUNC(amiga_copper_device::copcon_w));
|
||||
|
||||
// input strobes
|
||||
// map(0x030, 0x031).w(FUNC(amiga_state::serdat_w));
|
||||
// map(0x032, 0x033).w(FUNC(amiga_state::serper_w));
|
||||
// map(0x034, 0x035).w(FUNC(amiga_state::potgo_w));
|
||||
// map(0x036, 0x037).w(FUNC(amiga_state::joytest_w));
|
||||
// map(0x030, 0x031).w(FUNC(amiga_state::serdat_w));
|
||||
// map(0x032, 0x033).w(FUNC(amiga_state::serper_w));
|
||||
// map(0x034, 0x035).w(FUNC(amiga_state::potgo_w));
|
||||
// map(0x036, 0x037).w(FUNC(amiga_state::joytest_w));
|
||||
|
||||
// video beam strobes
|
||||
// map(0x038, 0x039).w(FUNC(amiga_state::strequ_w));
|
||||
// map(0x03a, 0x03b).w(FUNC(amiga_state::strvbl_w));
|
||||
// map(0x03c, 0x03d).w(FUNC(amiga_state::strhor_w));
|
||||
// map(0x038, 0x039).w(FUNC(amiga_state::strequ_w));
|
||||
// map(0x03a, 0x03b).w(FUNC(amiga_state::strvbl_w));
|
||||
// map(0x03c, 0x03d).w(FUNC(amiga_state::strhor_w));
|
||||
|
||||
// map(0x040, 0x075).m(m_blitter, FUNC(amiga_blitter_device::regs_map));
|
||||
// map(0x07c, 0x07d).r <open bus for OCS>
|
||||
// map(0x040, 0x075).m(m_blitter, FUNC(amiga_blitter_device::regs_map));
|
||||
// map(0x07c, 0x07d).r <open bus for OCS>
|
||||
map(0x07e, 0x07f).w(m_fdc, FUNC(amiga_fdc_device::dsksync_w));
|
||||
|
||||
// Copper
|
||||
map(0x080, 0x08b).m(m_copper, FUNC(amiga_copper_device::regs_map));
|
||||
map(0x08c, 0x08d).w(m_copper, FUNC(amiga_copper_device::copins_w));
|
||||
// Display window
|
||||
// map(0x08e, 0x08f).w(FUNC(amiga_state::diwstrt_w));
|
||||
// map(0x090, 0x091).w(FUNC(amiga_state::diwstop_w));
|
||||
// map(0x08e, 0x08f).w(FUNC(amiga_state::diwstrt_w));
|
||||
// map(0x090, 0x091).w(FUNC(amiga_state::diwstop_w));
|
||||
// Display horizontal fetch
|
||||
// map(0x092, 0x093).w(FUNC(amiga_state::ddfstrt_w));
|
||||
// map(0x094, 0x095).w(FUNC(amiga_state::ddfstop_w));
|
||||
// map(0x092, 0x093).w(FUNC(amiga_state::ddfstrt_w));
|
||||
// map(0x094, 0x095).w(FUNC(amiga_state::ddfstop_w));
|
||||
|
||||
// map(0x096, 0x097).w(FUNC(amiga_state::dmacon_w));
|
||||
// map(0x098, 0x099).w(FUNC(amiga_state::clxcon_w));
|
||||
// map(0x09a, 0x09b).w(m_paula, FUNC(paula_8364_device::intena_w));
|
||||
// map(0x09c, 0x09d).w(m_paula, FUNC(paula_8364_device::intreq_w));
|
||||
// map(0x09e, 0x09f).w(m_paula, FUNC(paula_8364_device::adkcon_w));
|
||||
// map(0x096, 0x097).w(FUNC(amiga_state::dmacon_w));
|
||||
// map(0x098, 0x099).w(FUNC(amiga_state::clxcon_w));
|
||||
// map(0x09a, 0x09b).w(m_paula, FUNC(paula_8364_device::intena_w));
|
||||
// map(0x09c, 0x09d).w(m_paula, FUNC(paula_8364_device::intreq_w));
|
||||
// map(0x09e, 0x09f).w(m_paula, FUNC(paula_8364_device::adkcon_w));
|
||||
// Audio section
|
||||
map(0x0a0, 0x0ab).m(m_paula, FUNC(paula_8364_device::audio_channel_map<0>));
|
||||
map(0x0b0, 0x0bb).m(m_paula, FUNC(paula_8364_device::audio_channel_map<1>));
|
||||
map(0x0c0, 0x0cb).m(m_paula, FUNC(paula_8364_device::audio_channel_map<2>));
|
||||
map(0x0d0, 0x0db).m(m_paula, FUNC(paula_8364_device::audio_channel_map<3>));
|
||||
|
||||
|
||||
// Bitplane pointer section
|
||||
// map(0x0e0, 0x0ff).m(amiga_state::bplxptr_map));
|
||||
// map(0x0e0, 0x0ff).m(amiga_state::bplxptr_map));
|
||||
|
||||
// Video bitplane registers
|
||||
map(0x100, 0x101).w(FUNC(amiga_state::bplcon0_w));
|
||||
// map(0x102, 0x103).w(FUNC(amiga_state::bplcon1_w));
|
||||
// map(0x104, 0x105).w(FUNC(amiga_state::bplcon2_w));
|
||||
// map(0x102, 0x103).w(FUNC(amiga_state::bplcon1_w));
|
||||
// map(0x104, 0x105).w(FUNC(amiga_state::bplcon2_w));
|
||||
|
||||
// map(0x108, 0x109).w(FUNC(amiga_state::bpl1mod_w));
|
||||
// map(0x10a, 0x10b).w(FUNC(amiga_state::bpl2mod_w));
|
||||
// map(0x108, 0x109).w(FUNC(amiga_state::bpl1mod_w));
|
||||
// map(0x10a, 0x10b).w(FUNC(amiga_state::bpl2mod_w));
|
||||
|
||||
// map(0x110, 0x11f).m(amiga_state::bplxdat_map));
|
||||
// map(0x110, 0x11f).m(amiga_state::bplxdat_map));
|
||||
// Sprite section
|
||||
// map(0x120, 0x17f).m(amiga_state::sprxpt_map));
|
||||
// map(0x120, 0x17f).m(amiga_state::sprxpt_map));
|
||||
// Color section
|
||||
// map(0x180, 0x1bf).m(amiga_state::colorxx_map));
|
||||
// map(0x180, 0x1bf).m(amiga_state::colorxx_map));
|
||||
}
|
||||
|
||||
void amiga_state::ecs_map(address_map &map)
|
||||
{
|
||||
ocs_map(map);
|
||||
// map(0x03e, 0x03f).w(FUNC(amiga_state::strlong_w));
|
||||
// map(0x078, 0x079).w(FUNC(amiga_state::sprhdat_w));
|
||||
// map(0x07c, 0x07d).r(FUNC(amiga_state::deniseid_r));
|
||||
// map(0x03e, 0x03f).w(FUNC(amiga_state::strlong_w));
|
||||
// map(0x078, 0x079).w(FUNC(amiga_state::sprhdat_w));
|
||||
// map(0x07c, 0x07d).r(FUNC(amiga_state::deniseid_r));
|
||||
|
||||
// map(0x106, 0x107).w(FUNC(amiga_state::bplcon3_w));
|
||||
|
||||
// map(0x106, 0x107).w(FUNC(amiga_state::bplcon3_w));
|
||||
|
||||
// Extended ECS registers
|
||||
// video geometry regs
|
||||
// map(0x1c0, 0x1c7).m(FUNC(amiga_state::horz_screen_map));
|
||||
// map(0x1c8, 0x1cf).m(FUNC(amiga_state::vert_screen_map));
|
||||
// map(0x1dc, 0x1dd).w(FUNC(amiga_state::beamcon0_w));
|
||||
// map(0x1c0, 0x1c7).m(FUNC(amiga_state::horz_screen_map));
|
||||
// map(0x1c8, 0x1cf).m(FUNC(amiga_state::vert_screen_map));
|
||||
// map(0x1dc, 0x1dd).w(FUNC(amiga_state::beamcon0_w));
|
||||
// Screen sync regs, VARHSY / VARVSY
|
||||
// map(0x1de, 0x1df).w(FUNC(amiga_state::hsstrt_w));
|
||||
// map(0x1e0, 0x1e1).w(FUNC(amiga_state::vsstrt_w));
|
||||
// map(0x1de, 0x1df).w(FUNC(amiga_state::hsstrt_w));
|
||||
// map(0x1e0, 0x1e1).w(FUNC(amiga_state::vsstrt_w));
|
||||
|
||||
// map(0x1e2, 0x1e3).w(FUNC(amiga_state::hcenter_w));
|
||||
// map(0x1e4, 0x1e5).w(FUNC(amiga_state::diwhigh_w));
|
||||
// map(0x1e2, 0x1e3).w(FUNC(amiga_state::hcenter_w));
|
||||
// map(0x1e4, 0x1e5).w(FUNC(amiga_state::diwhigh_w));
|
||||
|
||||
// dummy, either related to copper lockup restart or "last N refresh cycles"
|
||||
// map(0x1fe, 0x1ff).?(FUNC(amiga_state::no_op_*));
|
||||
// map(0x1fe, 0x1ff).?(FUNC(amiga_state::no_op_*));
|
||||
}
|
||||
|
||||
void amiga_state::aga_map(address_map &map)
|
||||
{
|
||||
ecs_map(map);
|
||||
|
||||
// map(0x078, 0x079).w(FUNC(amiga_state::sprhdat_w));
|
||||
// map(0x078, 0x079).w(FUNC(amiga_state::sprhdat_w));
|
||||
|
||||
map(0x100, 0x101).w(FUNC(amiga_state::aga_bplcon0_w));
|
||||
|
||||
// UHRES regs
|
||||
// TODO: may be shared with ECS?
|
||||
// map(0x1e6, 0x1e7).w(FUNC(amiga_state::bplhmod_w));
|
||||
// map(0x1e8, 0x1e9).w(FUNC(amiga_state::sprhpth_w));
|
||||
// map(0x1ea, 0x1eb).w(FUNC(amiga_state::sprhptl_w));
|
||||
// map(0x1ec, 0x1ed).w(FUNC(amiga_state::bplhpth_w));
|
||||
// map(0x1ed, 0x1ef).w(FUNC(amiga_state::bplhptl_w));
|
||||
// map(0x1e6, 0x1e7).w(FUNC(amiga_state::bplhmod_w));
|
||||
// map(0x1e8, 0x1e9).w(FUNC(amiga_state::sprhpth_w));
|
||||
// map(0x1ea, 0x1eb).w(FUNC(amiga_state::sprhptl_w));
|
||||
// map(0x1ec, 0x1ed).w(FUNC(amiga_state::bplhpth_w));
|
||||
// map(0x1ed, 0x1ef).w(FUNC(amiga_state::bplhptl_w));
|
||||
|
||||
// map(0x1fc, 0x1fd).w(FUNC(amiga_state::fmode_w));
|
||||
// map(0x1fc, 0x1fd).w(FUNC(amiga_state::fmode_w));
|
||||
}
|
||||
|
||||
|
||||
@ -1298,8 +1298,8 @@ void amiga_state::vposw_w(u16 data)
|
||||
// TODO: ECS always resets the LOF no matter the setting
|
||||
CUSTOM_REG(REG_VPOSR) = (data & VPOSR_LOF) | (data & 7);
|
||||
// TODO: high bits of screen height
|
||||
// if (data & 7)
|
||||
// popmessage("Upper VPOSW set %02x", data);
|
||||
// if (data & 7)
|
||||
// popmessage("Upper VPOSW set %02x", data);
|
||||
}
|
||||
|
||||
void amiga_state::bplcon0_w(u16 data)
|
||||
|
@ -1537,7 +1537,7 @@ static const struct gfx_range mapper_CP1B1F_boot_table[] =
|
||||
// bank0 = pin 16 (ROMs 1,7 /ce)
|
||||
// pin 18 (ROMs 3,9 /ce)
|
||||
// bank1 = pin 17 (ROMs 2,8 /ce)
|
||||
// pin 19 (ROMs 4,10 /ce)
|
||||
// pin 19 (ROMs 4,10 /ce)
|
||||
// An a19 line is available on pin 13 for 32MBit roms (pin 44 of the EPROM) but is unused.
|
||||
// pin 14 is fixed high in 16Mbit mode and is driven by gfx_chnl (CPS B-21 pin 108) if 32Mbit mode is selected
|
||||
|
||||
@ -1964,7 +1964,7 @@ static const struct CPS1config cps1_config_table[]=
|
||||
{"pang3b", CPS_B_21_DEF, mapper_CP1B1F }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */
|
||||
{"pang3b2", CPS_B_21_DEF, mapper_CP1B1F }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */
|
||||
{"pang3b3", CPS_B_17, mapper_CP1B1F }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */
|
||||
{"pang3b4", CPS_B_21_DEF, mapper_pang3b4 },
|
||||
{"pang3b4", CPS_B_21_DEF, mapper_pang3b4 },
|
||||
{"pang3b5", CPS_B_21_DEF, mapper_CP1B1F_boot }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */
|
||||
{"ganbare", CPS_B_21_DEF, mapper_GBPR2 },
|
||||
{"gulunpa", CPS_B_21_DEF, mapper_gulunpa }, // wrong
|
||||
|
@ -41,7 +41,7 @@ void spectrum_128_state::video_start()
|
||||
|
||||
The screen consists of 312 scanlines as follows:
|
||||
64 border lines (the last 48 are actual border lines; the others may be
|
||||
border lines or vertical retrace)
|
||||
border lines or vertical retrace)
|
||||
192 screen lines
|
||||
56 border lines
|
||||
|
||||
|
@ -94,17 +94,17 @@ bool sdl_osd_interface::window_init()
|
||||
|
||||
// initialize the renderer
|
||||
const int fallbacks[VIDEO_MODE_COUNT] = {
|
||||
-1, // NONE -> no fallback
|
||||
-1, // No GDI on Linux
|
||||
-1, // NONE -> no fallback
|
||||
-1, // No GDI on Linux
|
||||
#if defined(USE_OPENGL) && USE_OPENGL
|
||||
VIDEO_MODE_OPENGL, // BGFX -> OpenGL
|
||||
VIDEO_MODE_OPENGL, // BGFX -> OpenGL
|
||||
-1, // OpenGL -> no fallback
|
||||
#else
|
||||
VIDEO_MODE_SDL2ACCEL, // BGFX -> SDL2Accel
|
||||
VIDEO_MODE_SDL2ACCEL, // BGFX -> SDL2Accel
|
||||
#endif
|
||||
-1, // SDL2ACCEL -> no fallback
|
||||
-1, // No D3D on Linux
|
||||
-1, // SOFT -> no fallback
|
||||
-1, // No D3D on Linux
|
||||
-1, // SOFT -> no fallback
|
||||
};
|
||||
|
||||
int current_mode = video_config.mode;
|
||||
|
Loading…
Reference in New Issue
Block a user