]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1460b7.zip
authorToni Wilen <twilen@winuae.net>
Mon, 21 Jan 2008 18:19:50 +0000 (20:19 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:38:20 +0000 (21:38 +0200)
audio.c
cdtv.c
debug.c
drawing.c
memory.c
newcpu.c
od-win32/win32.c
od-win32/win32.h
od-win32/winuaechangelog.txt
sana2.c

diff --git a/audio.c b/audio.c
index c7812ab662b08152976d6e0c36f5d135584f0df1..3fe170ccca61c9c57a3a34c6c4ed7b44cd2f7961 100644 (file)
--- 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 e9549d9cca3b5a7740047d6ef035a18745bf40cb..8e2fb0ea286ce8d84c80c2923d8242420c28a47b 100644 (file)
--- 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 4132bae4c829df6d6c0b3d31ab84e7ac278d81d5..c5c8e9d36e4348f4817ff1974d4545d5f24de9c8 100644 (file)
--- 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");
     }
index 6ba84f29814897b1ff65dbe93bd25f60cb0c0480..2ad5007ab237818695c16e7c2b57f3dccce48f2e 100644 (file)
--- 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) {
index eaf14375fb4a01dff080c0b76214df6f6045df98..7b430134604e134ed29191ac7206ec2ad8e6fd6a 100644 (file)
--- 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) {
index 9b61e2a1da9dd88e72f06dc7ee75cc7b8d18cdd2..27bddcc00f679c5cb3c4b017a6b2f6012d22daa9 100644 (file)
--- 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;
index 08af44841c4e652b43251e2df9c080d172610320..2716af956d1389fbf618d5b3c7e476de5b73fe42 100644 (file)
@@ -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;
index 4a25fc75c5b57d3f324b5763f3ba2c16c762f102..144c2a075c467e9d9cc8234acd779a569244e588 100644 (file)
@@ -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 ""
 
index a72c0fa0723e551a27b6b0616e528335a6f19c78..e87170f48cf0bc1349fe0e9a3a0e3f9f844ce93d 100644 (file)
@@ -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 36349e0fec537d02efb685b6243c27fdecee3157..9ce367e3c10636e3cb0fc67a9b9cf1e50296e571 100644 (file)
--- 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)