From 97fad5192a0f4ac835668a93af63775a394c8422 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Mon, 21 Jan 2008 20:19:50 +0200 Subject: [PATCH] imported winuaesrc1460b7.zip --- audio.c | 2 ++ cdtv.c | 4 +++- debug.c | 4 ++-- drawing.c | 23 +++++++++++++++-------- memory.c | 15 ++++++++------- newcpu.c | 1 - od-win32/win32.c | 2 +- od-win32/win32.h | 4 ++-- od-win32/winuaechangelog.txt | 10 ++++++++++ sana2.c | 4 ++++ 10 files changed, 47 insertions(+), 22 deletions(-) diff --git a/audio.c b/audio.c index c7812ab6..3fe170cc 100644 --- a/audio.c +++ b/audio.c @@ -1635,6 +1635,8 @@ void AUDxDAT (int nr, uae_u16 v) /* cpu >= 68020: another "too fast" memory/CPU hack */ if (cdp->state == 0 || currprefs.cpu_model >= 68020) { cdp->state = 2; + cdp->wlen = cdp->len; + cdp->pt = cdp->lc; if (currprefs.cpu_model >= 68020) INTREQ (0x80 << nr); audio_handler (nr); diff --git a/cdtv.c b/cdtv.c index e9549d9c..8e2fb0ea 100644 --- a/cdtv.c +++ b/cdtv.c @@ -614,6 +614,8 @@ static void dma_do_thread(void) while (dma_finished) sleep_millis (2); + if (!cdtv_sectorsize) + return; cnt = dmac_wtc; write_log ("DMAC DMA: sector=%d, addr=%08.8X, words=%d (of %d)\n", cdrom_offset / cdtv_sectorsize, dmac_acr, cnt, cdrom_length / 2); @@ -1262,7 +1264,7 @@ static void REGPARAM2 dmac_bput (uaecptr addr, uae_u32 b) b &= 0xff; if (addr == 0x48) { map_banks (&dmac_bank, b, 0x10000 >> 16, 0x10000); - write_log ("CDTV DMAC autoconfigured at %02.2X0000\n", b & 0xff); + write_log ("CDTV DMAC autoconfigured at %02X0000\n", b); configured = 1; expamem_next(); return; diff --git a/debug.c b/debug.c index 4132bae4..c5c8e9d3 100644 --- a/debug.c +++ b/debug.c @@ -884,9 +884,9 @@ static void listcheater(int mode, int size) b = get_word (ts->addr); } if (mode) - console_out("%08.8X=%4.4X ", ts->addr, b); + console_out("%08X=%04X ", ts->addr, b); else - console_out("%08.8X ", ts->addr); + console_out("%08X ", ts->addr); if ((i % skip) == skip) console_out("\n"); } diff --git a/drawing.c b/drawing.c index 6ba84f29..2ad5007a 100644 --- a/drawing.c +++ b/drawing.c @@ -1979,7 +1979,8 @@ static void center_image (void) if (doublescan) visible_left_border = (max_diwlastword - 48) / 2 - gfxvidinfo.width; } - visible_left_border += currprefs.gfx_xcenter_adjust; + if (currprefs.gfx_xcenter_adjust > 0) + visible_left_border = currprefs.gfx_xcenter_adjust + (DIW_DDF_OFFSET << currprefs.gfx_resolution); visible_left_border &= ~((xshift (1, lores_shift)) - 1); if (visible_left_border > max_diwlastword - 32) @@ -2010,13 +2011,19 @@ static void center_image (void) thisframe_y_adjust = prev_y_adjust; } } - thisframe_y_adjust += currprefs.gfx_ycenter_adjust; - /* Make sure the value makes sense */ - if (thisframe_y_adjust + max_drawn_amiga_line > maxvpos_max) - thisframe_y_adjust = maxvpos_max - max_drawn_amiga_line; - if (thisframe_y_adjust < minfirstline) - thisframe_y_adjust = minfirstline; - + if (currprefs.gfx_ycenter_adjust > 0) { + thisframe_y_adjust = currprefs.gfx_ycenter_adjust; + if (thisframe_y_adjust + max_drawn_amiga_line > 2 * maxvpos_max) + thisframe_y_adjust = 2 * maxvpos_max - max_drawn_amiga_line; + if (thisframe_y_adjust < 0) + thisframe_y_adjust = 0; + } else { + /* Make sure the value makes sense */ + if (thisframe_y_adjust + max_drawn_amiga_line > maxvpos_max) + thisframe_y_adjust = maxvpos_max - max_drawn_amiga_line; + if (thisframe_y_adjust < minfirstline) + thisframe_y_adjust = minfirstline; + } thisframe_y_adjust_real = thisframe_y_adjust << (linedbl ? 1 : 0); tmp = (maxvpos_max - thisframe_y_adjust) << (linedbl ? 1 : 0); if (tmp != max_ypos_thisframe) { diff --git a/memory.c b/memory.c index eaf14375..7b430134 100644 --- a/memory.c +++ b/memory.c @@ -2452,6 +2452,7 @@ static int load_kickstart (void) extendedkickmem_size = 0x80000; if (currprefs.cs_cdtvcd || currprefs.cs_cdtvram) { extendedkickmem_type = EXTENDED_ROM_CDTV; + extendedkickmem_size *= 2; extendedkickmemory = mapped_malloc (extendedkickmem_size, "rom_f0"); } else { extendedkickmem_type = EXTENDED_ROM_KS; @@ -2459,7 +2460,7 @@ static int load_kickstart (void) } extendedkickmem_bank.baseaddr = extendedkickmemory; zfile_fseek (f, extpos, SEEK_SET); - read_kickstart (f, extendedkickmemory, 0x80000, 0, 0, 1); + read_kickstart (f, extendedkickmemory, extendedkickmem_size, 0, 0, 1); extendedkickmem_mask = extendedkickmem_size - 1; } if (filesize > 524288 * 2) { @@ -2987,11 +2988,6 @@ void memory_reset (void) map_banks (&kickmem_bank, addr, 8, 0); } -#ifdef AUTOCONFIG - if (need_uae_boot_rom ()) - map_banks (&rtarea_bank, rtarea_base >> 16, 1, 0); -#endif - if (a1000_bootrom) a1000_handle_kickstart (1); #ifdef AUTOCONFIG @@ -3007,7 +3003,7 @@ void memory_reset (void) break; #ifdef CDTV case EXTENDED_ROM_CDTV: - map_banks (&extendedkickmem_bank, 0xF0, 8, 0); + map_banks (&extendedkickmem_bank, 0xF0, extendedkickmem_size == 2 * 524288 ? 16 : 8, 0); break; #endif #ifdef CD32 @@ -3017,6 +3013,11 @@ void memory_reset (void) #endif } +#ifdef AUTOCONFIG + if (need_uae_boot_rom ()) + map_banks (&rtarea_bank, rtarea_base >> 16, 1, 0); +#endif + if ((cloanto_rom || currprefs.cs_ksmirror_e0) && !currprefs.maprom && !extendedkickmem_type) map_banks (&kickmem_bank, 0xE0, 8, 0); if (currprefs.cs_ksmirror_a8) { diff --git a/newcpu.c b/newcpu.c index 9b61e2a1..27bddcc0 100644 --- a/newcpu.c +++ b/newcpu.c @@ -1080,7 +1080,6 @@ static void Exception_normal (int nr, struct regstruct *regs, uaecptr oldpc) put_word (m68k_areg (regs, 7) + 8, regs->sr); put_long (m68k_areg (regs, 7) + 10, last_addr_for_exception_3); write_log ("Exception %d (%x) at %x -> %x!\n", nr, oldpc, currpc, get_long (regs->vbr + 4*nr)); - activate_debugger(); goto kludge_me_do; } m68k_areg (regs, 7) -= 4; diff --git a/od-win32/win32.c b/od-win32/win32.c index 08af4484..2716af95 100644 --- a/od-win32/win32.c +++ b/od-win32/win32.c @@ -74,7 +74,7 @@ #endif extern int harddrive_dangerous, do_rdbdump, aspi_allow_all, no_rawinput; -int log_scsi, log_net = 1; +int log_scsi, log_net = 0; extern FILE *debugfile; extern int console_logging; diff --git a/od-win32/win32.h b/od-win32/win32.h index 4a25fc75..144c2a07 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -15,9 +15,9 @@ #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100) #define GETBDD(x) ((x) % 100) -#define WINUAEBETA 6 +#define WINUAEBETA 7 #define WINUAEPUBLICBETA 1 -#define WINUAEDATE MAKEBD(2008, 1, 16) +#define WINUAEDATE MAKEBD(2008, 1, 21) #define WINUAEEXTRA "" #define WINUAEREV "" diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index a72c0fa0..e87170f4 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -3,6 +3,16 @@ 1.4.6 will be the last Windows 98/ME compatible version. 1.5.0 will require Windows 2000 or newer. +Beta 7: + +- debugger activating when address error happened (debug code..) +- 1M CDTV ROM (0xf00000-0xffffff) confused CPU emulator if m68k + instruction crossed extended and ks rom memory banks, 1M CDTV ROM is + now single 1M extended rom bank (I am still doing 1M real CDTV EPROM + tests..) +- audio emulation update, copy AUDLEN and AUDLC to backup registers + when AUDxDAT starts interrupt-driven audio mode (Dungeon Master II) + Beta 6: - binary support added to debugger, '%10101' diff --git a/sana2.c b/sana2.c index 36349e0f..9ce367e3 100644 --- a/sana2.c +++ b/sana2.c @@ -305,6 +305,7 @@ static int openfail (uaecptr ioreq, int error) { put_long (ioreq + 20, -1); put_byte (ioreq + 31, error); + put_long (ioreq + 32, 0); /* io_device */ return (uae_u32)-1; } @@ -341,6 +342,9 @@ static uae_u32 REGPARAM2 dev_open_2 (TrapContext *context) write_log ("opening %s:%d ioreq=%08.8X\n", SANA2NAME, unit, ioreq); if (!dev) return openfail (ioreq, 32); /* badunitnum */ + if (get_word (ioreq + 0x12) < 32 + 4 + 4 + SANA2_MAX_ADDR_BYTES * 2 + 4 + 4 + 4 + 4) + return openfail (ioreq, -1); /* too small iorequest */ + if (!buffermgmt) return openfail (ioreq, S2ERR_BAD_ARGUMENT); if ((flags & SANA2OPF_PROM) && dev->opencnt > 0) -- 2.47.3