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: