]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
6000b22
authorToni Wilen <twilen@winuae.net>
Sat, 19 Apr 2025 18:04:11 +0000 (21:04 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 19 Apr 2025 18:04:11 +0000 (21:04 +0300)
custom.cpp
od-win32/rp.cpp
od-win32/win32.h
od-win32/winuaechangelog.txt
vm.cpp

index 74ffe4b44dea296639507c2c0989c0f81c94b1ee..92600b15a014a098d97841f0ce0fb9e53d688c09 100644 (file)
@@ -10809,141 +10809,6 @@ static void dmal_fast(void)
        }
 }
 
-#if 0
-
-static struct denise_fastsprite dfs[MAX_SPRITES];
-static int dfs_num;
-static void process_sprites_fast(void)
-{
-       dfs_num = 0;
-       if (dmaen(DMA_SPRITE) && !agnus_bsvb && !agnus_vb_active) {
-               for (int i = 0; i < MAX_SPRITES; i++) {
-                       struct sprite *s = &spr[i];
-                       struct denise_fastsprite *fs = &dfs[i];
-                       fs->active = false;
-                       if (!s->dmacycle && s->dmastate) {
-                               s->dmacycle = 1;
-                       }
-                       if (vpos == s->vstart) {
-                               s->dmastate = 1;
-                               s->dmacycle = 1;
-                               if (i == 0) {
-                                       cursorsprite(s);
-                               }
-                       }
-                       if (vpos == s->vstop || agnus_vb_active_end_line) {
-                               s->dmastate = 0;
-                               s->dmacycle = 1;
-                       }
-                       if (s->dmacycle) {
-                               bool dodma = false;
-
-                               if (1) {
-#ifdef AGA
-                                       if (s->dblscan && (fmode & 0x8000) && (vpos & 1) != (s->vstart & 1) && s->dmastate) {
-                                               fs->active = true;
-                                               dfs_num++;
-                                               continue;
-                                       }
-#endif
-                                       struct rgabuf r = { 0 };
-                                       r.p = &s->pt;
-                                       r.pv = *r.p;
-                                       uae_u16 pos, ctl;
-                                       if (fetchmode_fmode_spr >= 2) {
-                                               fs->data64[0] = fetch64(&r);
-                                               r.pv += 8;
-                                               fs->data64[1] = fetch64(&r);
-                                               r.pv += 8;
-                                               pos = fs->data64[0] >> 48;
-                                               ctl = fs->data64[1] >> 48;
-                                       } else if (fetchmode_fmode_spr == 1) {
-                                               fs->data[0] = fetch32_spr(&r);
-                                               r.pv += 4;
-                                               fs->data[1] = fetch32_spr(&r);
-                                               r.pv += 4;
-                                               pos = fs->data[0] >> 16;
-                                               ctl = fs->data[1] >> 16;
-                                       } else {
-                                               fs->data[0] = fetch16(&r);
-                                               r.pv += 2;
-                                               fs->data[1] = fetch16(&r);
-                                               r.pv += 2;
-                                               pos = fs->data[0];
-                                               ctl = fs->data[1];
-                                       }
-                                       *r.p = r.pv;
-
-                                       if (s->dmastate) {
-                                               fs->pos = s->pos;
-                                               fs->ctl = s->ctl;
-                                               fs->active = true;
-                                               dfs_num++;
-                                       } else {
-                                               SPRxPOS(pos, i);
-                                               SPRxCTL_DMA(ctl, i);
-                                       }
-                               }
-                       }
-                       s->dmacycle = 0;
-                       if (s->dmastate) {
-                               s->dmacycle = 1;
-                       }
-               }
-       }
-}
-
-static void draw_line_fast(void)
-{
-       int dvp = calculate_linetype(linear_display_vpos);
-       uae_u8 *bplptp[MAX_PLANES];
-       int s = display_hstart_cyclewait_skip + display_hstart_cyclewait_skip;
-
-       int bstart = -1;
-       int blen = -1;
-       if (dmaen(DMA_BITPLANE) && vdiwstate == diw_states::DIW_waiting_stop && bplcon0_planes > 0) {
-               for (int i = 0; i < MAX_PLANES; i++) {
-                       bplptp[i] = get_real_address(bplpt[i]);
-               }
-               bstart = ddfstrt + 3 + fetchstart;
-               blen = ((ddfstop - ddfstrt + fetchunit - 1) & ~(fetchunit - 1)) + fetchunit;
-               if (blen < 0) {
-                       blen = 0;
-               }
-               blen += 7;
-               blen >>= 3;
-               bstart -= s;
-               bstart *= 4;
-       }
-
-       int wclks = wclks_prev;
-       int dstart = s * 4 + 2;
-       int dlen = maxhpos * 4;
-
-       draw_denise_line_fast(bplptp, bstart, blen, dvp, nextline_how, rga_denise_cycle_count, dstart, wclks, agnus_vb_active, dfs_num > 0 ? dfs : NULL);
-
-       if (dmaen(DMA_BITPLANE) && vdiwstate == diw_states::DIW_waiting_stop && bplcon0_planes > 0) {
-               int planes = GET_PLANES(BPLCON0_Agnus_mask(bplcon0));
-               // first BPL1DAT position
-               int len = ((ddfstop - ddfstrt + fetchunit - 1) & ~(fetchunit - 1)) + fetchunit;
-               len >>= fetchstart_shift;
-               for (int bpl = 0; bpl < planes; bpl++) {
-                       int mod = 0;
-                       if (fmode & 0x4000) {
-                               if (((diwstrt >> 8) ^ (vpos ^ 1)) & 1) {
-                                       mod = bpl2mod;
-                               } else {
-                                       mod = bpl1mod;
-                               }
-                       } else {
-                               mod = (bpl & 1) ? bpl2mod : bpl1mod;
-                       }
-                       bplpt[bpl] += mod + len * fetchmode_bytes;
-               }
-       }
-}
-#endif
-
 static void do_draw_line(void)
 {
        if (!has_draw_denise()) {
index e803cd46587983966b9991de30849a898f320c8d..89efd2f1c3bb0d315513c8bea8d48594cf15feae 100644 (file)
@@ -1413,21 +1413,7 @@ static int screencap(LPCVOID pData, struct AmigaMonitor *mon)
                if (rpsc->szScreenFiltered[0])
                        ok = screenshotf(0, rpsc->szScreenFiltered, 1, 1, 0, NULL);
                if (rpsc->szScreenRaw[0]) {
-#if 0
-                       struct vidbuf_description *avidinfo = &adisplays[0].gfxvidinfo;
-                       struct vidbuffer vb;
-                       int w = avidinfo->drawbuffer.inwidth;
-                       int h = get_vertical_visible_height(true);
-                       allocvidbuffer(0, &vb, w, h, avidinfo->drawbuffer.pixbytes * 8);
-                       set_custom_limits(-1, -1, -1, -1);
-                       draw_frame(&vb);
-                       ok |= screenshotf(0, rpsc->szScreenRaw, 1, 1, 1, &vb);
-                       if (log_rp & 2)
-                               write_log(_T("Rawscreenshot %dx%d\n"), w, h);
-                       freevidbuffer(0, &vb);
-#else
                        ok |= screenshotf(0, rpsc->szScreenRaw, 1, 1, 1, NULL);
-#endif
                }
                screenshotmode = ossm;
                if (log_rp & 2)
index 39fcd5296bd565ca68b0fc58fbf64b639a4bf318..d4506a9b0aec9037dc57948a2c33d10d89d5fd7a 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("21")
+#define WINUAEBETA _T("22")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2025, 4, 13)
+#define WINUAEDATE MAKEBD(2025, 4, 19)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index 507df238837907bd4f8af8ff6040b275f80c8dba..223c8242715734319c2d5dcf760f97bbf7330b5a 100644 (file)
@@ -1,4 +1,21 @@
 
+Beta 22:
+
+- Fast mode drawing + HAM + left TV overscan blanking part of display caused HAM artifacts.
+- Fast mode shres HAM in hires or hires HAM in lores didn't include skipped pixels in HAM color calculation.
+- Fast mode drawing didn't mask bitplane addresses with chip ram address mask.
+- Fast mode Remove interlace artifacts scrolling glitches mostly fixed.
+- Garbage was possible in right border if bitplane ended earlier than HDIW. Fast mode only.
+- Filter settings should not limit display width or height in extreme or higher overscan modes, extreme (and higher) should always show whole display area.
+- Hardware emulated RTG boards didn't have vsync timing (b21)
+- DIWHIGH state restore was unreliable.
+- Automatic scaling (and related filters) now also work correctly if HDIW end never matches.
+- Filtered lores option supported again. (If Amiga mode resolution is higher than display panel mode: normally every other pixel is dropped, filtered lores mode takes average color of two pixels)
+- VPOS(H)W write refresh rate changes work again. (For example Wings of Death, DynaBlaster fake 60Hz). Non-CE modes only accept forwards vpos move and not out of range values.
+- RTG with default settings (all 4 checkboxes in left side of RTG panel unticked) display positiong fixed.
+- Adjusted display position and screenshot position/size slightly to better match older versions.
+
+Beta 21:
 
 - Filter panel TV modes and filter overscan blanking work correctly again (not doing anything since b1). Extra horizontal and vertical blanking handling changed again, might cause side-effects.
 - NTSC horizontal long/short line artifacts are gone in TV overscan modes. NOTE: NTSC still have problems with some filter modes.
diff --git a/vm.cpp b/vm.cpp
index 6b1fc1d271c2d4837db7674bb2ea3676d24d0dac..c043673d688ca51d4aee27b7ca1ba3648f4ca182 100644 (file)
--- a/vm.cpp
+++ b/vm.cpp
@@ -158,7 +158,7 @@ static void *uae_vm_alloc_with_flags(uae_u32 size, int flags, int protect)
        int mmap_prot = protect_to_native(protect);
 #endif
 
-#if !defined(CPU_64_BIT) or defined(__APPLE__)
+#if !defined(CPU_64_BIT) || defined(__APPLE__)
        flags &= ~UAE_VM_32BIT;
 #endif
        if (flags & UAE_VM_32BIT) {