srcclean and manual tidying up in preparation for 0.242 release

This commit is contained in:
Vas Crabb 2022-03-27 13:22:33 +11:00
parent 2a3c402cae
commit b6df0d2d3d
44 changed files with 419 additions and 421 deletions

View File

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

View File

@ -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 &quot;Nth&quot; 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">

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 << ", #";

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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