From 6e57ece7fff9f4358af15f37bc61d4a8f9a086d6 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Wed, 23 Dec 2009 12:46:59 +0200 Subject: [PATCH] imported winuaesrc2010.zip --- custom.c | 22 +++++++++++++++------- od-win32/win32.h | 8 ++++---- od-win32/winuaechangelog.txt | 4 ++-- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/custom.c b/custom.c index d73ac420..e1ff89db 100644 --- a/custom.c +++ b/custom.c @@ -2810,16 +2810,21 @@ static void calcdiw (void) 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; @@ -2892,8 +2897,11 @@ STATIC_INLINE uae_u16 DENISEID (void) 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; @@ -2942,7 +2950,7 @@ STATIC_INLINE int GETHPOS (void) return islightpentriggered () ? hpos_lpen : (issyncstopped () ? hpos_previous : current_hpos ()); } -#define HPOS_OFFSET 3 +#define HPOS_OFFSET 4 STATIC_INLINE uae_u16 VPOSR (void) { @@ -3570,7 +3578,7 @@ static void DIWSTOP (int hpos, uae_u16 v) 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); diff --git a/od-win32/win32.h b/od-win32/win32.h index 8d94c891..34ceb21e 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -15,12 +15,12 @@ #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 diff --git a/od-win32/winuaechangelog.txt b/od-win32/winuaechangelog.txt index a6e1edec..69b0fc0c 100644 --- a/od-win32/winuaechangelog.txt +++ b/od-win32/winuaechangelog.txt @@ -2,13 +2,13 @@ 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: -- 2.47.3