]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2810b7
authorToni Wilen <twilen@winuae.net>
Fri, 13 Jun 2014 15:08:40 +0000 (18:08 +0300)
committerToni Wilen <twilen@winuae.net>
Fri, 13 Jun 2014 15:08:40 +0000 (18:08 +0300)
custom.cpp
drawing.cpp
od-win32/win32.h
od-win32/winuaechangelog.txt

index a24fbc72d46ddb91115834ecb8446f9b5e46cdde..2260ff29cd0bffd6d9b16dec3d8ab7d127841e3e 100644 (file)
@@ -3555,7 +3555,7 @@ void compute_vsynctime (void)
                        svpos += 1.0;
                }
                double clk = svpos * shpos * fake_vblank_hz;
-               write_log (_T("SNDRATE %.1f*%.1f*%.6f=%.6f\n"), svpos, shpos, fake_vblank_hz, clk);
+               //write_log (_T("SNDRATE %.1f*%.1f*%.6f=%.6f\n"), svpos, shpos, fake_vblank_hz, clk);
                update_sound (clk);
        }
 }
@@ -5012,10 +5012,8 @@ static void BPLxDAT (int hpos, int num, uae_u16 v)
        if (num == 0 && hpos >= 8) {
                bpl1dat_written = true;
                bpl1dat_written_at_least_once = true;
-               if (thisline_decision.plfleft < 0) {
-                       thisline_decision.plfleft = hpos;
+               if (thisline_decision.plfleft < 0)
                        reset_bpl_vars ();
-               }
                beginning_of_plane_block (hpos, fetchmode);
        }
 }
@@ -5749,7 +5747,7 @@ static int customdelay[]= {
        /* BPLCON0-3,BPLMOD1-2 */
        0,0,0,0,0,0,0,0, /* 8 */
        /* BPLxDAT */
-       1,1,1,1,1,1,1,1, /* 8 */
+       0,0,0,0,0,0,0,0, /* 8 */
        /* SPRxPTH/SPRxPTL */
        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 16 */
        /* SPRxPOS/SPRxCTL/SPRxDATA/SPRxDATB */
@@ -9578,6 +9576,7 @@ void wait_cpu_cycle_write_ce020 (uaecptr addr, int mode, uae_u32 v)
 
 void do_cycles_ce (unsigned long cycles)
 {
+       cycles += extra_cycle;
        while (cycles >= CYCLE_UNIT) {
                int hpos = current_hpos () + 1;
                decide_line (hpos);
@@ -9588,6 +9587,7 @@ void do_cycles_ce (unsigned long cycles)
                do_cycles (1 * CYCLE_UNIT);
                cycles -= CYCLE_UNIT;
        }
+       extra_cycle = cycles;
 }
 
 void do_cycles_ce020 (unsigned long cycles)
index 77fd02d6d49dd8113b9445373adcf2fd279a6814..d0d20fee075f8840cc82326b027f0c862ce9260c 100644 (file)
@@ -742,6 +742,7 @@ All of these are forced into the visible window (VISIBLE_LEFT_BORDER .. VISIBLE_
 PLAYFIELD_START and PLAYFIELD_END are in window coordinates.  */
 static int playfield_start, playfield_end;
 static int real_playfield_start, real_playfield_end;
+static int sprite_playfield_start;
 static int linetoscr_diw_start, linetoscr_diw_end;
 static int native_ddf_left, native_ddf_right;
 
@@ -821,8 +822,9 @@ static void pfield_init_linetoscr (bool border)
        if (playfield_end > visible_right_border)
                playfield_end = visible_right_border;
 
-       real_playfield_end = playfield_end;
        real_playfield_start = playfield_start;
+       sprite_playfield_start = playfield_start;
+       real_playfield_end = playfield_end;
 
        // Sprite hpos don't include DIW_DDF_OFFSET and can appear 1 lores pixel
        // before first bitplane pixel appears.
@@ -840,6 +842,7 @@ static void pfield_init_linetoscr (bool border)
                                playfield_start = left;
                        }
                } else {
+                       sprite_playfield_start = 0;
                        if (playfield_end < linetoscr_diw_end && hblank_right_stop > playfield_end) {
                                playfield_end = linetoscr_diw_end;
                        }
@@ -1088,7 +1091,7 @@ static void fill_line_border (void)
 }
 
 #define SPRITE_DEBUG 0
-STATIC_INLINE uae_u8 render_sprites (int pos, int dualpf, uae_u8 apixel, int aga)
+static uae_u8 render_sprites (int pos, int dualpf, uae_u8 apixel, int aga)
 {
        struct spritepixelsbuf *spb = &spritepixels[pos];
        unsigned int v = spb->data;
@@ -1101,7 +1104,8 @@ STATIC_INLINE uae_u8 render_sprites (int pos, int dualpf, uae_u8 apixel, int aga
        maskshift = shift_lookup[apixel];
        plfmask = (plf_sprite_mask >> maskshift) >> maskshift;
        v &= ~plfmask;
-       if (v != 0 || SPRITE_DEBUG) {
+       /* Extra 1 sprite pixel at DDFSTRT is only possible if at least 1 plane is active */
+       if ((bplplanecnt > 0 || pos >= sprite_playfield_start) && (v != 0 || SPRITE_DEBUG)) {
                unsigned int vlo, vhi, col;
                unsigned int v1 = v & 255;
                /* OFFS determines the sprite pair with the highest priority that has
index 5d6c0d4adbfb86bde32233c08620ec8c08306b07..8e203559086b53dffd98a2f06974e2d5b4ef0c55 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 0
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("6")
+#define WINUAEBETA _T("7")
 #else
 #define WINUAEBETA _T("")
 #endif
-#define WINUAEDATE MAKEBD(2014, 6, 7)
-#define WINUAEEXTRA _T("")
+
+#define WINUAEDATE MAKEBD(2014, 6, 13)
+
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
+
+#ifndef WINUAEEXTRA
+#define WINUAEEXTRA _T("")
+#endif
+#ifndef WINUAEREV
 #define WINUAEREV _T("")
+#endif
 
 #define IHF_WINDOWHIDDEN 6
 #define WINUAEAPPNAME _T("Arabuusimiehet.WinUAE")
index 4d7adbd176e518941655474f4aaeb850fbd7a813..13bdb21d7c553b12d4f37212f8e6103acc350825 100644 (file)
@@ -18,6 +18,15 @@ Things that may happen in 2015:
 
 - restore only single input target to default.
 
+Beta 7:
+
+- Yet another BPLxDAT update. If BPL1DAT is written when sprite is already active and no planes enabled in
+  BPLCON0, "sprites visible 1 lores pixel before first bitplane pixel" feature is not active. Previous
+  update was not correct and broke some other demos. (Real fix for Rink A Dink / Lemon extra pixel in
+  rotozoomer part)
+- 68000 CE with 8x (or higher) clock multiplier was really fast (270b4)
+- AROS ROM updated.
+
 Beta 6:
 
 - b2 HAM update was incomplete and broken, nr_color_changes check was not fully working. (b2)