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;
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++;
}
}
-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) {
}
}
-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) {
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;
}
static bool waitqueue(void)
{
+ if (quit_program) {
+ return false;
+ }
if (!thread_debug_lock) {
write_log("Denise queue without lock!\n");
return false;
}
}
-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) {
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);
#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")
-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.