]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
6000b32
authorToni Wilen <twilen@winuae.net>
Mon, 16 Jun 2025 18:50:25 +0000 (21:50 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 16 Jun 2025 18:50:25 +0000 (21:50 +0300)
custom.cpp
drawing.cpp
include/drawing.h
od-win32/win32.h
od-win32/winuaechangelog.txt

index 7cee6bbb9e848a76459e8e82edb97de16315beb2..0a584fbefe24113b561ff5478b07640e25eb7e1c 100644 (file)
@@ -119,7 +119,7 @@ static struct linestate *current_line_state;
 static struct linestate lines[MAX_SCANDOUBLED_LINES + 1][2];
 static int rga_denise_cycle, rga_denise_cycle_start, rga_denise_cycle_count_start, rga_denise_cycle_count_end;
 static int draw_line_next_line, draw_line_wclks;
-static int rga_denise_cycle_line = 1;
+static uae_u32 rga_denise_cycle_line = 1;
 static struct pipeline_reg preg;
 static struct pipeline_func pfunc[MAX_PIPELINE_REG];
 static uae_u16 prev_strobe;
index ab03f737a35ff60d2f22c65ac004df4706cb5d00..d552d760caddb91380dfe8c4c96bdf58a5f34ee8 100644 (file)
@@ -113,10 +113,10 @@ static volatile bool thread_debug_lock;
 
 static void denise_handle_quick_strobe(uae_u16 strobe, int offset, int vpos);
 static void draw_denise_vsync(int);
-static void denise_update_reg(uae_u16 reg, uae_u16 v, int linecnt);
+static void denise_update_reg(uae_u16 reg, uae_u16 v, uae_u32 linecnt);
 static void draw_denise_line(int gfx_ypos, nln_how how, uae_u32 linecnt, int startpos, int startcycle, int endcycle, int skip, int skip2, int dtotal, int calib_start, int calib_len, bool lol, int hdelay, bool blanked, bool finalseg, struct linestate *ls);
 
-static void quick_denise_rga(int linecnt, int startpos, int endpos)
+static void quick_denise_rga(uae_u32 linecnt, int startpos, int endpos)
 {
        int pos = startpos;
        endpos++;
@@ -3900,7 +3900,7 @@ static void expand_drga(struct denise_rga *rd)
        }
 }
 
-static void flush_fast_rga(int linecnt)
+static void flush_fast_rga(uae_u32 linecnt)
 {
        // extract fast CPU RGA pipeline
        while (rga_denise_fast_write != rga_denise_fast_read) {
@@ -3916,7 +3916,7 @@ static void flush_fast_rga(int linecnt)
        }
 }
 
-static void denise_update_reg(uae_u16 reg, uae_u16 v, int linecnt)
+static void denise_update_reg(uae_u16 reg, uae_u16 v, uae_u32 linecnt)
 {
        // makes sure fast queue is flushed first
        if (rga_denise_fast_write != rga_denise_fast_read) {
@@ -5737,7 +5737,7 @@ static void draw_denise_line(int gfx_ypos, enum nln_how how, uae_u32 linecnt, in
                const int indicator_width = 16;
                int yadjust = currprefs.gfx_overscanmode < OVERSCANMODE_ULTRA ? minfirstline_linear << currprefs.gfx_vresolution : 0;
                int lineno = gfx_ypos;
-               int w = (buf1 - buf1t) - indicator_width;
+               int w = addrdiff(buf1, buf1t) - indicator_width;
                if (w > 0) {
                        if (w > MAX_PIXELS_PER_LINE) {
                                w = MAX_PIXELS_PER_LINE;
@@ -7151,6 +7151,9 @@ static bool waitqueue_nolock(void)
 }
 static bool waitqueue(void)
 {
+       if (quit_program) {
+               return false;
+       }
        if (!thread_debug_lock) {
                write_log("Denise queue without lock!\n");
                return false;
@@ -7217,7 +7220,7 @@ void draw_denise_bitplane_line_fast_queue(int gfx_ypos, enum nln_how how, struct
        }
 }
 
-void quick_denise_rga_queue(int linecnt, int startpos, int endpos)
+void quick_denise_rga_queue(uae_u32 linecnt, int startpos, int endpos)
 {
        if (MULTITHREADED_DENISE) {
 
index 228a1b167b3112ded2d300a70c0507900d89c886..3375d638ea6afd479301b4c92f34a0807a142611 100644 (file)
@@ -191,7 +191,7 @@ void denise_restore_registers(void);
 bool denise_is_vb(void);
 void draw_denise_vsync_queue(int);
 void draw_denise_line_queue_flush(void);
-void quick_denise_rga_queue(int linecnt, int startpos, int endpos);
+void quick_denise_rga_queue(uae_u32 linecnt, int startpos, int endpos);
 void denise_handle_quick_strobe_queue(uae_u16 strobe, int strobe_pos, int endpos);
 bool drawing_can_lineoptimizations(void);
 void set_drawbuffer(void);
index d1cce42f099c9ea5e66495a188746752d49a7786..6db3bc443c158ca2ef43ea7ad99cec080f6e62f6 100644 (file)
 #define LANG_DLL_FULL_VERSION_MATCH 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("31")
+#define WINUAEBETA _T("32")
 #else
 #define WINUAEBETA _T("")
 #endif
 
-#define WINUAEDATE MAKEBD(2025, 6, 7)
+#define WINUAEDATE MAKEBD(2025, 6, 16)
 
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index d67695f52213a7966b6fa41154d097d139c1ffbb..fcdbf376047400ba867a5d6b7021b56db5bc4cc3 100644 (file)
@@ -1,5 +1,14 @@
 
-Beta 31:
+Beta 32 (RC2):
+
+- Paula audio timing calcution used programmed vertical timing but hardwired PAL/NTSC horizontal timing when in RTG mode with inactive Amiga screen in doublescan mode. (b22)
+- Fixed genlock emulation horizontal scaling and horizontal lightpen positioning, horizontal blanking changes broke it in some early beta.
+- Pause zeroed display line count OSD (That normally shows 313p etc).
+- At least Sound stereo delay GUI setting become empty instead of showing "-" when entering GUI again. Possibly others too. (Old bug)
+- If ECS/AGA programmed mode registers got badly enough corrupted causing Agnus DMA to steal all cycles and CPU was accessing chip RAM: exiting UAE would become impossible because CPU never got any cycles. Normally CPU emulator checks state changes between each instruction.
+- Added some missing translation strings.
+
+Beta 31 (RC1):
 
 - Adjusted CDTV CD+G subchannel read timing. CDTV CD+G graphics should be stable again. Timing is quite critical, every subchannel byte generates interrupt, CPU runs short interrupt handler which reads the byte and acknowledges the interrupt, then returns. There are 96 subchannel bytes per CD audio frame = 75 * 96 bytes per second. One interrupt about every 2.2 scan lines.
 - Refresh indicator feature is working again (show_refresh_indicator=true command line option). Now detects all graphics changes, previously only bitplane changes counted. Also can be more CPU heavy because it stores whole RGB output, not just bitplane chunky values. (v6 chipset emulation does not anymore have separate temporary chunky bitplane buffers). Not supported in fast drawing modes.