int vstrt = diwstrt >> 8;
int vstop = diwstop >> 8;
- if (diwhigh_written) {
- hstrt |= ((diwhigh >> 5) & 1) << 8;
- hstop |= ((diwhigh >> 13) & 1) << 8;
+ // vertical in ECS Agnus
+ if (diwhigh_written && (currprefs.chipset_mask & CSMASK_ECS_AGNUS)) {
vstrt |= (diwhigh & 7) << 8;
vstop |= ((diwhigh >> 8) & 7) << 8;
} else {
- hstop += 0x100;
if ((vstop & 0x80) == 0)
vstop |= 0x100;
}
+ // horizontal in ECS Denise
+ if (diwhigh_written && (currprefs.chipset_mask & CSMASK_ECS_DENISE)) {
+ hstrt |= ((diwhigh >> 5) & 1) << 8;
+ hstop |= ((diwhigh >> 13) & 1) << 8;
+ } else {
+ hstop += 0x100;
+ }
diw_hstrt = hstrt;
if (currprefs.cs_deniserev >= 0)
return currprefs.cs_deniserev;
#ifdef AGA
- if (currprefs.chipset_mask & CSMASK_AGA)
+ if (currprefs.chipset_mask & CSMASK_AGA) {
+ if (currprefs.cs_ide == IDE_A4000)
+ return 0xFCF8;
return 0x00F8;
+ }
#endif
if (currprefs.chipset_mask & CSMASK_ECS_DENISE)
return 0xFFFC;
return islightpentriggered () ? hpos_lpen : (issyncstopped () ? hpos_previous : current_hpos ());
}
-#define HPOS_OFFSET 3
+#define HPOS_OFFSET 4
STATIC_INLINE uae_u16 VPOSR (void)
{
static void DIWHIGH (int hpos, uae_u16 v)
{
- if (!(currprefs.chipset_mask & CSMASK_ECS_DENISE))
+ if (!(currprefs.chipset_mask & (CSMASK_ECS_DENISE | CSMASK_ECS_AGNUS)))
return;
if (!(currprefs.chipset_mask & CSMASK_AGA))
v &= ~(0x0008 | 0x0010 | 0x1000 | 0x0800);
#define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
#define GETBDD(x) ((x) % 100)
-#define WINUAEPUBLICBETA 1
+#define WINUAEPUBLICBETA 0
#define LANG_DLL 1
-#define WINUAEBETA L"Beta 3"
-#define WINUAEDATE MAKEBD(2009, 12, 22)
-#define WINUAEEXTRA L"RC1"
+#define WINUAEBETA L""
+#define WINUAEDATE MAKEBD(2009, 12, 23)
+#define WINUAEEXTRA L""
#define WINUAEREV L""
#define IHF_WINDOWHIDDEN 6
Beta 3: (RC1)
- emulate OCS Denise "bug", vertical DIW already active, matches again
- with horizontal start DIW=0 or 1 -> vertical DIW stops until next
+ with horizontal start DIW=0 or 1 -> DIW stays inactive until next
frame. (Kefrens Megademo 8, Snake Bite part)
- emulate ECS Denise (and AGA) "bug fix", horizontal start DIW=0 or 1
gets ignored. (=b2 fix -> ECS Denise/AGA only)
-- ECS Denise DENISEID register returned 0x00FC, correct is 0xFFFC
- sometimes sprite was visible even if bitplane DMA should have
disabled it (older bug)
+- ECS Denise DENISEID register returned 0x00FC, correct is 0xFFFC
Beta 2: