diff --git a/hash/amigaocs_flop.xml b/hash/amigaocs_flop.xml
index a3bca57e897..8e9561fd0c6 100644
--- a/hash/amigaocs_flop.xml
+++ b/hash/amigaocs_flop.xml
@@ -34,7 +34,6 @@ license:CC0-1.0
- check / add any missing parent/clone relationships
- find out why we have duplicates of some releases with different IPF files (typically the _0 ones)
(the ones not in the SPS database have been marked as bad?)
- - move AGA only discs to the AGA list
- add any other image which can be found
- test compatibility with emulation, note which games require manuals for operation (either protection or important game notes)
- document hardware configurations needed for 'fussy' games, and which ones differ in operation depending on HW config
@@ -42,11 +41,12 @@ license:CC0-1.0
document the original packages (see e.g. 16bithit, tnt and a few others below)
todo (General):
- - add the various cracked dumps after verifying them
- - add Public Domain titles, Demos etc. (maybe in separate lists)
- - add Utilities (separate lists?)
- - add list to document various Amiga viruses (maybe, if I'm feeling perverted)
-
+ - add the various cracked dumps after verifying them;
+ - add Public Domain and homebrew titles (maybe in separate list);
+ - Pinpoint copy protection mechanisms as a node ID type;
+ - Split virus node warnings as they are (warnings), add identifiers;
+ - rerun ATK test suite at some point, notify changed behaviour (after new68k they definitely
+ are), notify changed behaviour with newer ATK version.
Virus Warning
@@ -30332,9 +30332,10 @@ fatalerrors when trying to mount "Incompatible image format or corrupted data"
1992
Ocean
@@ -30758,7 +30759,8 @@ ATK test: OK
1988
Mandarin
@@ -31174,7 +31176,7 @@ ATK test: OK
-
+
The Lost Vikings (Europe)
@@ -31182,10 +31184,12 @@ ATK test: OK
1993
Interplay
+
+
@@ -31618,7 +31622,7 @@ ATK test: OK
1990
Krisalis
@@ -34024,7 +34028,7 @@ ATK test: C:0 H:U Bad
-
+
Morph (Europe)
@@ -34032,7 +34036,7 @@ ATK test: C:0 H:U Bad
1993
Millennium
@@ -34371,7 +34375,7 @@ ATK test: OK
1989
Turtle Byte
8" with out of bounds access at $200000 (verify track number)
ATK test: OK
]]>
@@ -34839,7 +34843,7 @@ ATK test: OK
-
+
Never Mind (Europe)
@@ -34847,8 +34851,8 @@ ATK test: OK
1989
Psyclapse
@@ -36605,7 +36609,7 @@ ATK test: OK
-
+
Out Run (Europe)
@@ -36613,7 +36617,7 @@ ATK test: OK
1989
U.S. Gold
@@ -36852,9 +36856,8 @@ ATK test: failed
1991
Global
@@ -37010,7 +37013,8 @@ ATK test: failed
1990
Futura
@@ -37076,10 +37080,10 @@ ATK test: C:0 H:U Bad
1990
Hewson
@@ -40220,11 +40224,12 @@ ATK test: failed
1991
Activision
+
@@ -42000,7 +42005,7 @@ ATK test: OK
1991
Storm
1991
Mindcraft
+
@@ -43144,6 +43150,7 @@ ATK test: OK
Mindscape
-
+
Sensible World of Soccer (Europe, v1.1)
@@ -43362,6 +43369,7 @@ ATK test: failed
1995
Renegade
@@ -43378,14 +43386,16 @@ ATK test: C:0 H:U Bad
-
+
+
Sensible World of Soccer (Europe)
1994
Renegade
@@ -43410,8 +43420,11 @@ ATK test: C:0 H:U Bad
1995
Renegade
+
+
@@ -43419,7 +43432,7 @@ ATK test: OK
-
+
Sensible World of Soccer 95-96 (Europe)
@@ -43427,6 +43440,7 @@ ATK test: OK
1995
Renegade
@@ -43443,7 +43457,7 @@ ATK test: C:0 H:U Bad
-
+
Sensible World of Soccer 95-96 - European Championship Edition (Europe)
@@ -43451,6 +43465,7 @@ ATK test: C:0 H:U Bad
1996
Renegade
@@ -43467,7 +43482,7 @@ ATK test: C:0 H:U Bad
-
+
Sensible World of Soccer 96-97 (Europe)
@@ -43475,8 +43490,9 @@ ATK test: C:0 H:U Bad
1996
Renegade
@@ -45636,8 +45652,8 @@ ATK test: C:0 H:U Bad
1989
Microdeal
@@ -45767,8 +45783,7 @@ ATK test: C:79 Bad
1993
Krisalis
@@ -45805,8 +45820,8 @@ ATK test: OK
1992
Codemasters
@@ -45842,6 +45857,7 @@ ATK test: OK
Kaiko
@@ -46095,7 +46111,7 @@ ATK test: failed
1991
Empire
@@ -47528,8 +47544,9 @@ ATK test: OK
1993
Bloodhouse
diff --git a/src/devices/machine/amiga_copper.cpp b/src/devices/machine/amiga_copper.cpp
index aa6bd60bc4a..df2cee3c2bb 100644
--- a/src/devices/machine/amiga_copper.cpp
+++ b/src/devices/machine/amiga_copper.cpp
@@ -19,7 +19,8 @@
- 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;
+ - Add debugger command for printing the current disassembler structure
+ (current live logging is painfully slow in places, cfr. lweapon);
**************************************************************************************************/
@@ -33,6 +34,8 @@
#define LOG_CHIPSET (1U << 5) // Show custom chipset writes
#define VERBOSE (LOG_WARN)
+//#define VERBOSE (LOG_WARN | LOG_CHIPSET | LOG_PC | LOG_INST)
+//#define LOG_OUTPUT_FUNC osd_printf_info
#include "logmacro.h"
@@ -245,7 +248,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
if (m_pending_offset)
{
//LOGCHIPSET("%02X.%02X: Write to %s = %04x\n", ypos, xpos / 2, s_custom_reg_names[m_copper_pending_offset & 0xff], m_copper_pending_data);
- LOGCHIPSET("%02X.%02X: Write to $dff%03x = %04x\n",
+ LOGCHIPSET("%02X.%02X: MOVE $dff%03x = %04x\n",
ypos,
xpos / 2,
(m_pending_offset << 1),
@@ -313,7 +316,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
if (delay[word0] == 0)
{
//LOGCHIPSET("%02X.%02X: Write to %s = %04x\n", ypos, xpos / 2, s_custom_reg_names[word0 & 0xff], word1);
- LOGCHIPSET("%02X.%02X: Write to $dff%03x = %04x\n",
+ LOGCHIPSET("%02X.%02X: MOVE $dff%03x = %04x\n",
ypos,
xpos / 2,
word0 << 1,
@@ -352,7 +355,7 @@ int amiga_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy)
/* handle a wait */
if ((word1 & 1) == 0)
{
- LOGINST(" Waiting for %04x & %04x (currently %04x)\n",
+ LOGINST(" WAIT %04x & %04x (currently %04x)\n",
m_waitval,
m_waitmask,
(ypos << 8) | (xpos >> 1)
@@ -366,7 +369,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(" SKIP %04x & %04x (currently %04x)\n",
m_waitval,
m_waitmask,
(ypos << 8) | (xpos >> 1)
diff --git a/src/mame/amiga/amiga.h b/src/mame/amiga/amiga.h
index b7b36c4b9e0..2ecbe1d877d 100644
--- a/src/mame/amiga/amiga.h
+++ b/src/mame/amiga/amiga.h
@@ -438,8 +438,8 @@ public:
void update_screenmode();
TIMER_CALLBACK_MEMBER( scanline_callback );
- TIMER_CALLBACK_MEMBER (amiga_irq_proc );
- TIMER_CALLBACK_MEMBER( amiga_blitter_proc );
+ TIMER_CALLBACK_MEMBER( irq_process_callback );
+ TIMER_CALLBACK_MEMBER( blitter_process_callback );
void update_irqs();
template DECLARE_CUSTOM_INPUT_MEMBER( amiga_joystick_convert );
diff --git a/src/mame/amiga/amiga_m.cpp b/src/mame/amiga/amiga_m.cpp
index 2a79a27bf2e..15f1739aea0 100644
--- a/src/mame/amiga/amiga_m.cpp
+++ b/src/mame/amiga/amiga_m.cpp
@@ -14,7 +14,6 @@
#include "amiga.h"
#include "cpu/m68000/m68000.h"
-
/*************************************
*
* Debugging
@@ -165,8 +164,8 @@ void amiga_state::machine_start()
m_chip_ram_mask = (m_chip_ram.bytes() - 1) & ~1;
// set up the timers
- m_irq_timer = timer_alloc(FUNC(amiga_state::amiga_irq_proc), this);
- m_blitter_timer = timer_alloc(FUNC(amiga_state::amiga_blitter_proc), this);
+ m_irq_timer = timer_alloc(FUNC(amiga_state::irq_process_callback), this);
+ m_blitter_timer = timer_alloc(FUNC(amiga_state::blitter_process_callback), this);
m_serial_timer = timer_alloc(FUNC(amiga_state::serial_shift), this);
m_scanline_timer = timer_alloc(FUNC(amiga_state::scanline_callback), this);
@@ -240,6 +239,7 @@ void amiga_state::vblank()
}
// TODO: CIA A clock can be connected to either a fixed 50/60hz signal from the power supply, or the vblank
+// TODO: move almost everything to a DMA scheduler, cfr. HRM diagram
TIMER_CALLBACK_MEMBER( amiga_state::scanline_callback )
{
int scanline = param;
@@ -360,7 +360,7 @@ void amiga_state::update_irqs()
CUSTOM_REG(REG_INTREQ) |= INTENA_EXTER;
}
-TIMER_CALLBACK_MEMBER( amiga_state::amiga_irq_proc )
+TIMER_CALLBACK_MEMBER( amiga_state::irq_process_callback )
{
update_irqs();
m_irq_timer->reset();
@@ -853,7 +853,7 @@ uint32_t amiga_state::blit_line()
*
*************************************/
-TIMER_CALLBACK_MEMBER( amiga_state::amiga_blitter_proc )
+TIMER_CALLBACK_MEMBER( amiga_state::blitter_process_callback )
{
uint32_t blitsum = 0;
@@ -947,14 +947,14 @@ void amiga_state::blitter_setup()
/* compute the blit time */
// TODO: verify timings
- // According to https://github.com/alpine9000/amiga_examples test 010,
- // blitting is currently taking half the time than necessary.
- // Is it expecting to account for RAM access waitstates or ...?
+ // - https://github.com/alpine9000/amiga_examples test 010,
+ // blitting is currently taking half the time than necessary.
+ // - viz does heavy bbusy checks.
blittime = ticks * height * width;
/* if 'blitter-nasty' is set, then the blitter takes over the bus. Make the blit semi-immediate */
- // TODO: blitter nasty doesn't seem to work as intended.
- // cfr. spinwrld
+ // FIXME: emulate bus priority implications here
+ // cfr. spinwrld no backgrounds
if ( CUSTOM_REG(REG_DMACON) & 0x0400 )
{
/* simulate the 68k not running while the blit is going */
@@ -1315,7 +1315,8 @@ uint16_t amiga_state::custom_chip_r(offs_t offset)
return amiga_gethvpos() & 0xffff;
case REG_SERDATR:
- LOGMASKED(LOG_SERIAL, "r SERDATR: %04x\n", CUSTOM_REG(REG_SERDATR));
+ if (!machine().side_effects_disabled())
+ LOGMASKED(LOG_SERIAL, "r SERDATR: %04x\n", CUSTOM_REG(REG_SERDATR));
return CUSTOM_REG(REG_SERDATR);
case REG_JOY0DAT: