From d0e5671142217bfc5c2dcec137626878c73365ed Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 23 Jan 2021 16:05:07 +0200 Subject: [PATCH] 4500b16 --- debug.cpp | 10 +- gfxboard.cpp | 20 +++- memory.cpp | 5 +- newcpu.cpp | 4 +- od-win32/gencpu_msvc/gencpu_msvc.vcxproj | 2 +- od-win32/win32.h | 4 +- od-win32/win32gui.cpp | 115 ----------------------- od-win32/winuaechangelog.txt | 16 +++- 8 files changed, 43 insertions(+), 133 deletions(-) diff --git a/debug.cpp b/debug.cpp index 5a596326..249571c1 100644 --- a/debug.cpp +++ b/debug.cpp @@ -114,16 +114,16 @@ void activate_debugger (void) if (isfullscreen() > 0) return; - if (debugger_active) { - // already in debugger but some break point triggered - // during disassembly etc.. - return; - } debugger_load_libraries(); inside_debugger = 1; debug_pc = 0xffffffff; trace_mode = 0; + if (debugger_active) { + // already in debugger but some break point triggered + // during disassembly etc.. + return; + } debug_cycles(); debugger_active = 1; set_special (SPCFLAG_BRK); diff --git a/gfxboard.cpp b/gfxboard.cpp index c1b17de0..b8540981 100644 --- a/gfxboard.cpp +++ b/gfxboard.cpp @@ -3857,6 +3857,7 @@ static int s3virgeaddr(struct pci_board_state *pcibs, uaecptr *addrp) } else if (addr >= pcibs->bar[0] + 0x00000000 && addr < pcibs->bar[0] + 0x01000000) { // LFB LE addr = ((addr - pcibs->bar[0]) & 0x3fffff) + pcibs->bar[0]; + swap = -2; } else if (addr >= pcibs->bar[0] + 0x01000000 && addr < pcibs->bar[0] + 0x02000000) { // MMIO LE addr = ((addr - pcibs->bar[0]) & 0xffff) + pcibs->bar[0] + 0x01000000; @@ -3871,7 +3872,7 @@ static void REGPARAM2 s3virge_mb0_lput(struct pci_board_state *pcibs, uaecptr ad if (swap > 0) { if (swap == 1) b = do_byteswap_32(b); - } else if (swap < 0) { + } else if (swap == -1) { struct rtggfxboard *gb = getgfxboard(addr); int m = gb->lfbbyteswapmode; switch (m) @@ -3884,6 +3885,8 @@ static void REGPARAM2 s3virge_mb0_lput(struct pci_board_state *pcibs, uaecptr ad b = (b >> 16) | (b << 16); break; } + } else if (swap < -1) { + } put_mem_pcem(addr, b, 2); } @@ -3893,7 +3896,7 @@ static void REGPARAM2 s3virge_mb0_wput(struct pci_board_state *pcibs, uaecptr ad if (swap > 0) { if (swap == 1) b = do_byteswap_16(b); - } else if (swap < 0) { + } else if (swap <= -1) { struct rtggfxboard *gb = getgfxboard(addr); int m = gb->lfbbyteswapmode; switch (m) @@ -3905,6 +3908,8 @@ static void REGPARAM2 s3virge_mb0_wput(struct pci_board_state *pcibs, uaecptr ad b = do_byteswap_16(b); break; } + } else if (swap < -1) { + } put_mem_pcem(addr, b, 1); } @@ -3920,7 +3925,7 @@ static uae_u32 REGPARAM2 s3virge_mb0_lget(struct pci_board_state *pcibs, uaecptr if (swap > 0) { if (swap == 1) v = do_byteswap_32(v); - } else if (swap < 0) { + } else if (swap == -1) { struct rtggfxboard *gb = getgfxboard(addr); int m = gb->lfbbyteswapmode; switch (m) @@ -3933,6 +3938,8 @@ static uae_u32 REGPARAM2 s3virge_mb0_lget(struct pci_board_state *pcibs, uaecptr v = do_byteswap_32(v); break; } + } else if (swap < -1) { + } return v; } @@ -3943,7 +3950,7 @@ static uae_u32 REGPARAM2 s3virge_mb0_wget(struct pci_board_state *pcibs, uaecptr if (swap > 0) { if (swap == 1) v = do_byteswap_16(v); - } else if (swap < 0) { + } else if (swap == -1) { struct rtggfxboard *gb = getgfxboard(addr); int m = gb->lfbbyteswapmode; switch (m) @@ -3955,7 +3962,10 @@ static uae_u32 REGPARAM2 s3virge_mb0_wget(struct pci_board_state *pcibs, uaecptr v = do_byteswap_16(v); break; } - } return v; + } else if (swap < -1) { + + } + return v; } static uae_u32 REGPARAM2 s3virge_mb0_bget(struct pci_board_state *pcibs, uaecptr addr) { diff --git a/memory.cpp b/memory.cpp index dee6e0c0..3a4c26ac 100644 --- a/memory.cpp +++ b/memory.cpp @@ -1143,7 +1143,8 @@ uae_u8 *REGPARAM2 default_xlate (uaecptr addr) } write_log (_T("\n")); } - memory_map_dump (); + memory_map_dump(); + m68k_dumpstate(NULL, 0xffffffff); } if (0 || (gary_toenb && (gary_nonrange(addr) || (size > 1 && gary_nonrange(addr + size - 1))))) { hardware_exception2(addr, 0, true, true, size); @@ -2017,7 +2018,7 @@ static void add_shmmaps (uae_u32 start, addrbank *what) shm_start = y; } -#define MAPPED_MALLOC_DEBUG 0 +#define MAPPED_MALLOC_DEBUG 1 bool mapped_malloc (addrbank *ab) { diff --git a/newcpu.cpp b/newcpu.cpp index f6164ab4..f453f598 100644 --- a/newcpu.cpp +++ b/newcpu.cpp @@ -3644,8 +3644,8 @@ static void m68k_reset_restore(void) void REGPARAM2 op_unimpl (uae_u32 opcode) { static int warned; - if (warned < 20) { - write_log (_T("68060 unimplemented opcode %04X, PC=%08x\n"), opcode, regs.instruction_pc); + if (warned < 1000) { + write_log (_T("68060 unimplemented opcode %04X, PC=%08x SP=%08x\n"), opcode, regs.instruction_pc, regs.regs[15]); warned++; } ExceptionL (61, regs.instruction_pc); diff --git a/od-win32/gencpu_msvc/gencpu_msvc.vcxproj b/od-win32/gencpu_msvc/gencpu_msvc.vcxproj index f8b01866..14cdee66 100644 --- a/od-win32/gencpu_msvc/gencpu_msvc.vcxproj +++ b/od-win32/gencpu_msvc/gencpu_msvc.vcxproj @@ -21,7 +21,7 @@ gencpu {DEF7ACF7-050E-4069-BB99-5B5D93F60521} - 10.0.18362.0 + 10.0 diff --git a/od-win32/win32.h b/od-win32/win32.h index f7c9fa16..6b1113a9 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -20,12 +20,12 @@ #define LANG_DLL_FULL_VERSION_MATCH 1 #if WINUAEPUBLICBETA -#define WINUAEBETA _T("Beta 15") +#define WINUAEBETA _T("Beta 16") #else #define WINUAEBETA _T("") #endif -#define WINUAEDATE MAKEBD(2021, 1, 9) +#define WINUAEDATE MAKEBD(2021, 1, 23) //#define WINUAEEXTRA _T("AmiKit Preview") //#define WINUAEEXTRA _T("Amiga Forever Edition") diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 15f2c747..b5ffdddb 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -1882,63 +1882,7 @@ static void show_rom_list (void) 9, 10, -1, 107, 108, -1, -1, // CDTV-CR 49, 50, 75, 51, 76, 77, -1, 5, 4, -1, -2, // ARCADIA - 53, 54, 55, 56, -1, -1, // A590/A2091 - 57, 58, -1, -1, // A4091 - 174, -1, -1, // a-team - 132, -1, -1, // add500 - 129, 141, -1, -1, // adide - 133, -1, -1, // adscsi - 117, -1, -1, // alf - 118, -1, -1, // alf+ - 200, -1, -1, // comspec - 102, -1, -1, // Fastlane - 111, -1, -1, // GVP Series I - 109, 110, -1, -1, // GVP Series II - 173, -1, -1, // hardframe - 127, 140, -1, -1, // kommos - 124, -1, -1, // kupke golem - 157, -1, -1, // golem fast - 201, -1, -1, // malibu - 130, 199, -1, -1, // m-tec - 120, -1, -1, // masoboshi - 156, -1, -1, // multi evolution - 139, -1, -1, // nexus - 103, -1, -1, // Oktagon - 131, -1, -1, // protar - 207, -1,-1, // Rapidfire - 138, 146, -1, -1, // roctec - 121, 134, 135, 136, -1, -1, // supradrive - 161, -1, -1, // trumpcard pro - 128, -1, -2, // vector falcon - 18, -1, 19, -1, 74, 23, -1, -1, // CD32 FMV - 91, -1, -2, // Picasso IV - - 105, 106, -1, -1, // A2630 - 119, -1, -1, // Apollo 1240/1260 - 110, -1, -1, // GVP A530 - 110, -1, -1, // GVP G-Force 030 - 114, -1, -1, // A3001 - 126, -1, -1, // Golem 030 - 144, -1, -1, // E-Matrix 530 - 163, -1, -1, // 1230-II - 162, -1, -1, // 1230-III - 89, -1, -1, // 1230-IV - 162, -1, 167, -1, -1, // 1230-III SCSI - 89, -1, 94, -1, -1, // 1230-IV SCSI - 90, -1, -1, // 1260 - 90, -1, 94, -1, -1, // 1260 SCSI - 92, -1, -1, // 2060 - 93, -1, -1, // Warp Engine - 105, -1, -1, // TekMagic - 112, -1, -1, // DKB 12x0 - 143, -1, -1, // DKB WildFire - 113, -1, -1, // Fusion Forty - 95, 101, -1, -1, // CS MK I - 96, -1, -1, // CS MK II - 97, -1, -1, // CS MK III - 99, 100, -1, -1, // BPPC - 98, -1 ,-2, // CSPPC 69, 67, 70, 115, -1, -1, // nordic power 65, 68, -1, -1, // x-power @@ -1954,70 +1898,11 @@ static void show_rom_list (void) p1 = _T("A500 Boot ROM 1.2\0A500 Boot ROM 1.3\0A500+\0A600\0A1000\0A1200\0A3000\0A4000\0A4000T\0") _T("CD32\0CDTV\0CDTV-CR\0Arcadia Multi Select\0") - - _T("A590/A2091 SCSI/XT\0") - _T("A4091 SCSI\0") - _T("Mainhattan A-Team IDE\0") - _T("Archos ADD-500\0") - _T("AdIDE\0") - _T("AdSCSI\0") - _T("AlfaPower/AT-BUS 508/2008 SCSI\0") - _T("AlfaPower Plus SCSI\0") - _T("Comspec SA-1000 SCSI\0") - _T("Fastlane SCSI\0") - _T("GVP Series I SCSI\0") - _T("GVP Series II SCSI\0") - _T("Microbotics HardFrame SCSI\0") - _T("Kommos A500/A2000 SCSI\0") - _T("Golem SCSI\0") - _T("Golem Fast SCSI/IDE\0") - _T("Malibu SCSI\0") - _T("M-Tec AT500/Megabody IDE\0") - _T("Masoboshi MC-302/MC-702 IDE/SCSI\0") - _T("Multi Evolution SCSI\0") - _T("Preferred Technologies Nexus\0") - _T("Oktagon 2008 SCSI\0") - _T("Protar A500HD SCSI\0") - _T("DKB RapidFire SCSI\0") - _T("Roctec RH800C\0") - _T("SupraDrive SCSI\0") - _T("IVS Trumpcard Pro/GrandSlam\0") - _T("Vector Falcon 8000 SCSI\0") - _T("CD32 Full Motion Video\0") - _T("Picasso IV\0") - - _T("A2620/A2630\0") - _T("Apollo 1240/1260+SCSI\0") - _T("GVP A530\0") - _T("GVP G-FORCE 030\0") - _T("GVP A3001 Series I\0") - _T("Kupke Golem 030\0") - _T("M-Tec E-Matrix 530\0") - _T("Blizzard 1230-II\0") - _T("Blizzard 1230-III\0") - _T("Blizzard 1230-IV\0") - _T("Blizzard 1260\0") - _T("Blizzard 1230-III/SCSI\0") - _T("Blizzard 1230-IV/SCSI\0") - _T("Blizzard 1260/SCSI\0") - _T("Blizzard 2060\0") - _T("Warp Engine\0") - _T("TekMagic 2040/2060\0") - _T("DKB 1230/1240\0") - _T("DKB WildFire\0") - _T("Fusion Forty\0") - _T("CyberStorm MK I\0") - _T("CyberStorm MK II\0") - _T("CyberStorm MK III\0") - _T("Blizzard PPC\0") - _T("CyberStorm PPC\0") - _T("Nordic Power\0X-Power Professional 500\0Action Cartridge Super IV Professional\0") _T("Pro Access\0") _T("Action Replay MK I\0Action Replay MK II\0Action Replay MK III\0") _T("Action Replay 1200\0") - _T("\0"); p = xmalloc (TCHAR, 100000); diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index 2b87a058..358adea1 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -1,4 +1,18 @@ +Beta 16: + +- Hard reset leaked indirect mode allocated memory banks (outside of JIT compatible address range), for example Z3 RAM outside of partially outside of first ~2G of address space. +- GUI misc list powerled dims option never worked, option was always cleared. (Only manual config file editing worked) +- fi debugger command now accepts assembly syntax (for example "fi trap #0"). Only max first 3 words (if it is longer than 3 words) are used in breakpoint condition. +- CPU% OSD leading zero removed. +- "Blacker than black" display panel option did nothing in non-AGA modes. +- 68060 unimplemented integer instruction mode + unimplemented instruction with -(A7)/(A7)+ addressing mode in user mode: exception stack frame was created first, then -(A7)/(A7)+ modification was incorrectly restored using supervisor stack pointer. +- 68040/060 unimplemented FPU instructions also update FPIAR. Some invalid instructions don't but this seems to be undefined behavior. 6888x only update FPIAR if FPU exception(s) are enabled. +- 68040/060 unimplemented FPU mode arithmetic exception fixes, all 68060 FPSP test package tests now pass. (and when run using 68040 or 6888x: test errors will match real hardware 100%) +- Fixed FMOVEM.L #xxx, disassembly. +- Windowed mode status bar height is correctly calculated when window is moved to different DPI monitor. +- Removed ROM scan expansion device result list. It is out of date and code was almost unmaintainable. +- Hopefully last blitter update related fix, copper blitter waits should work correcly again. (This is a hack. Copper emulation also needs an update.) Beta 15: @@ -10,6 +24,7 @@ Beta 15: - Aranym JIT update missed move from FPU register to data register clamping (for example FPn -150.0 to Dn.B should become -128). Re-added. - Fixed FPU instruction JIT blacklist support. - Combitec HD 20 A/HD 40 A (not 100% sure it is exactly this model but very likely) emulation. +- Another blitter/copper timing bug fix. (b12) Combitec HD 20 A/HD 40 A: - OMTI compatible HD controller. Usual OMTI IO offset 0x641. Base address is at $800000 + autoboot ROM at $f00000. @@ -17,7 +32,6 @@ Combitec HD 20 A/HD 40 A: - Boot ROM version string: "autoboot.device (autoboot.device 6.18 (27.8.89) , Rom_1.2, FFS, Bildchen, Search, New Boot Partition Programmiert von Bernhard Möllemann & Hartmut Sprave (C) Combitec 1988,1989" - Boot screen ("COMPUTER TOP EQUIPMENT COLOSSUS(R) HD-AutoBoot") - Beta 14: - Fixed possible out of bounds array access when virtual mouse driver is installed. -- 2.47.3