From 1faa5d5668ba711a21202c731f831cc46e90cd58 Mon Sep 17 00:00:00 2001 From: tomcw Date: Tue, 29 Dec 2020 09:43:25 +0000 Subject: [PATCH 1/7] Update README.md for 1.29.16 --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 26546301..d3e0147e 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ AppleWin Apple II emulator for Windows -Download latest (stable) release: [AppleWin v1.29.13.0](https://github.com/AppleWin/AppleWin/releases/download/v1.29.13.0/AppleWin1.29.13.0.zip) +Download latest (stable) release: [AppleWin v1.29.16.0](https://github.com/AppleWin/AppleWin/releases/download/v1.29.16.0/AppleWin1.29.16.0.zip) -Release Notes: [v1.29.13.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.29.13.0) +Release Notes: [v1.29.16.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.29.16.0) Building @@ -26,8 +26,10 @@ Please report [new issues](https://github.com/AppleWin/AppleWin/issues/new) Previous Versions ================= -* [AppleWin v1.28.8.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.28.8.0) +Last version supporting Windows 2000: -Last pre-NTSC change: +* [AppleWin v1.29.16.0](https://github.com/AppleWin/AppleWin/releases/tag/v1.29.16.0) + +Last version supporting Windows 98/ME: * [AppleWin v1.25.0.4](https://github.com/AppleWin/AppleWin/releases/tag/v1.25.0.4) From c819347502ce74f4918b510b052107a7b77e7f7f Mon Sep 17 00:00:00 2001 From: TomCh Date: Tue, 29 Dec 2020 10:07:47 +0000 Subject: [PATCH 2/7] Update README.md Added a brief overview of what is supported. --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d3e0147e..473265ca 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,20 @@ AppleWin ======== -Apple II emulator for Windows +#### Apple II emulator for Windows + +AppleWin is a fully-featured emulator supporting different Apple II models and clones. A variety of peripheral cards and video display modes are supported (eg. NTSC, RGB); and there's an extensive built-in symbolic debugger. + +Peripheral cards supported: +- Mockingboard, Phasor and SAM sound cards +- Disk II interface for floppy disk drives +- Hard disk controller +- Super Serial Card (SSC) +- Parallel printer card +- Mouse interface +- RGB cards: Apple's Extended 80-Column Text/AppleColor Adaptor Card, 'Le Chat Mauve' Féline and Eve. +- CP/M SoftCard +- Uthernet I (ethernet card) Download latest (stable) release: [AppleWin v1.29.16.0](https://github.com/AppleWin/AppleWin/releases/download/v1.29.16.0/AppleWin1.29.16.0.zip) From 19abefb2b36d14aa9abfeca80ccb932bc5fad73e Mon Sep 17 00:00:00 2001 From: TomCh Date: Tue, 29 Dec 2020 10:18:23 +0000 Subject: [PATCH 3/7] Update README.md Added 80Col/RamWorks III --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 473265ca..b0844104 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Peripheral cards supported: - Super Serial Card (SSC) - Parallel printer card - Mouse interface +- Apple IIe Extended 80-Column Text Card and RamWorks III (8MB) - RGB cards: Apple's Extended 80-Column Text/AppleColor Adaptor Card, 'Le Chat Mauve' Féline and Eve. - CP/M SoftCard - Uthernet I (ethernet card) From 6cf907f303c414a5fed994e7c74a3004eace7cdc Mon Sep 17 00:00:00 2001 From: Andrea Date: Tue, 29 Dec 2020 21:13:35 +0000 Subject: [PATCH 4/7] In Linux, save logfile to /tmp. (PR #900) --- source/Log.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/Log.cpp b/source/Log.cpp index a1137aa3..1a0124f6 100644 --- a/source/Log.cpp +++ b/source/Log.cpp @@ -31,6 +31,15 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "Log.h" FILE* g_fh = NULL; +#ifdef _MSC_VER +#define LOG_FILENAME "AppleWin.log" +#else +// save to /tmp as otherwise it creates a file in the current folder which can be a bit everywhere +// especially if the program is installed to /usr +#define LOG_FILENAME "/tmp/AppleWin.log" +#endif + + //--------------------------------------------------------------------------- void LogInit(void) @@ -38,7 +47,7 @@ void LogInit(void) if (g_fh) return; - g_fh = fopen("AppleWin.log", "a+t"); // Open log file (append & text mode) + g_fh = fopen(LOG_FILENAME, "a+t"); // Open log file (append & text mode) setvbuf(g_fh, NULL, _IONBF, 0); // No buffering (so implicit fflush after every fprintf) CHAR aDateStr[80], aTimeStr[80]; GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, (LPTSTR)aDateStr, sizeof(aDateStr)); From b226bdfd5370fecae9234851716110f3056ec851 Mon Sep 17 00:00:00 2001 From: Andrea Date: Tue, 29 Dec 2020 21:17:03 +0000 Subject: [PATCH 5/7] Small changes to improve compatibility with GCC. (PR #902) * Fix GCC build. 1) do not fwd declare enums 2) include only base class header file IPropertySheet. * DSInit(): make sure sound devices are cleaned before the 2nd call. And use std::string to avoid need of memory management. --- source/Interface.h | 2 +- source/NTSC.h | 3 ++- source/SoundCore.cpp | 7 +++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/source/Interface.h b/source/Interface.h index 119b39a7..bc13d7f0 100644 --- a/source/Interface.h +++ b/source/Interface.h @@ -11,7 +11,7 @@ #include "Video.h" Video& GetVideo(void); -#include "Configuration/PropertySheet.h" +#include "Configuration/IPropertySheet.h" IPropertySheet& GetPropertySheet(void); #include "FrameBase.h" diff --git a/source/NTSC.h b/source/NTSC.h index fc629553..c010057e 100644 --- a/source/NTSC.h +++ b/source/NTSC.h @@ -1,5 +1,7 @@ #pragma once +#include "Video.h" + // Globals (Public) extern uint16_t g_nVideoClockVert; extern uint16_t g_nVideoClockHorz; @@ -21,7 +23,6 @@ extern void NTSC_VideoUpdateCycles( UINT cycles6502 ); extern void NTSC_VideoRedrawWholeScreen( void ); - enum VideoRefreshRate_e; void NTSC_SetRefreshRate(VideoRefreshRate_e rate); UINT NTSC_GetCyclesPerFrame(void); UINT NTSC_GetCyclesPerLine(void); diff --git a/source/SoundCore.cpp b/source/SoundCore.cpp index 7bd01739..68a2336a 100644 --- a/source/SoundCore.cpp +++ b/source/SoundCore.cpp @@ -38,7 +38,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #define MAX_SOUND_DEVICES 10 -static char *sound_devices[MAX_SOUND_DEVICES]; +static std::string sound_devices[MAX_SOUND_DEVICES]; static GUID sound_device_guid[MAX_SOUND_DEVICES]; static int num_sound_devices = 0; @@ -67,7 +67,9 @@ static BOOL CALLBACK DSEnumProc(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrv return TRUE; if(lpGUID != NULL) memcpy(&sound_device_guid[i], lpGUID, sizeof (GUID)); - sound_devices[i] = _strdup(lpszDesc); + else + memset(&sound_device_guid[i], 0, sizeof(GUID)); + sound_devices[i] = lpszDesc; if(g_fh) fprintf(g_fh, "%d: %s - %s\n",i,lpszDesc,lpszDrvName); @@ -491,6 +493,7 @@ bool DSInit() return true; // Already initialised successfully } + num_sound_devices = 0; HRESULT hr = DirectSoundEnumerate((LPDSENUMCALLBACK)DSEnumProc, NULL); if(FAILED(hr)) { From d0cd7ca09049cd9feaf8125e64c0f6d78b06c6e7 Mon Sep 17 00:00:00 2001 From: Andrea Date: Tue, 29 Dec 2020 21:30:17 +0000 Subject: [PATCH 6/7] WinVideo: share some generic code (PR #901) * WinVideo: move some generic functions back to Video. Introduce a new virtual function (VideoPresentScreen) to draw the video buffer to video memory. * Move Win32Frame::VideoRedrawScreen() to FrameBase as it is generic. --- source/FrameBase.cpp | 7 ++++ source/FrameBase.h | 3 +- source/Video.cpp | 56 ++++++++++++++++++++++++++++- source/Video.h | 12 ++++--- source/Windows/AppleWin.cpp | 2 +- source/Windows/Win32Frame.h | 1 - source/Windows/WinFrame.cpp | 4 +-- source/Windows/WinVideo.cpp | 72 ++----------------------------------- source/Windows/WinVideo.h | 5 +-- 9 files changed, 79 insertions(+), 83 deletions(-) diff --git a/source/FrameBase.cpp b/source/FrameBase.cpp index 1c4722be..98a28478 100644 --- a/source/FrameBase.cpp +++ b/source/FrameBase.cpp @@ -1,6 +1,7 @@ #include "StdAfx.h" #include "FrameBase.h" +#include "Interface.h" FrameBase::FrameBase() { @@ -15,3 +16,9 @@ FrameBase::~FrameBase() { } + +void FrameBase::VideoRedrawScreen(void) +{ + // NB. Can't rely on g_uVideoMode being non-zero (ie. so it can double up as a flag) since 'GR,PAGE1,non-mixed' mode == 0x00. + GetVideo().VideoRefreshScreen(GetVideo().GetVideoMode(), true); +} diff --git a/source/FrameBase.h b/source/FrameBase.h index c409fac6..b588f8ce 100644 --- a/source/FrameBase.h +++ b/source/FrameBase.h @@ -13,13 +13,14 @@ public: BOOL g_bMultiMon; bool g_bFreshReset; + void VideoRedrawScreen(); + virtual void FrameDrawDiskLEDS(HDC hdc) = 0; virtual void FrameDrawDiskStatus(HDC hdc) = 0; virtual void FrameRefreshStatus(int, bool bUpdateDiskStatus = true) = 0; virtual void FrameUpdateApple2Type() = 0; virtual void FrameSetCursorPosByMousePos() = 0; - virtual void VideoRedrawScreen() = 0; virtual void SetFullScreenShowSubunitStatus(bool bShow) = 0; virtual bool GetBestDisplayResolutionForFullScreen(UINT& bestWidth, UINT& bestHeight, UINT userSpecifiedHeight = 0) = 0; virtual int SetViewportScale(int nNewScale, bool bForce = false) = 0; diff --git a/source/Video.cpp b/source/Video.cpp index 10a33553..9b0f20dc 100644 --- a/source/Video.cpp +++ b/source/Video.cpp @@ -620,7 +620,7 @@ void Video::Video_SaveScreenShot(const VideoScreenShot_e ScreenShotType, const T //=========================================================================== -bool Video::ReadVideoRomFile(const TCHAR* pRomFile) +bool Video::ReadVideoRomFile(const char* pRomFile) { g_videoRomSize = 0; @@ -830,3 +830,57 @@ const char* Video::VideoGetAppWindowTitle(void) else return apVideoMonitorModeDesc[ GetVideoRefreshRate() == VR_60HZ ? 0 : 1 ]; // NTSC or PAL } + +void Video::VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit /*=false*/) +{ + if (bInit) + { + // Just entered full-speed mode + dwFullSpeedStartTime = GetTickCount(); + return; + } + + DWORD dwFullSpeedDuration = GetTickCount() - dwFullSpeedStartTime; + if (dwFullSpeedDuration <= 16) // Only update after every realtime ~17ms of *continuous* full-speed + return; + + dwFullSpeedStartTime += dwFullSpeedDuration; + + VideoRedrawScreenAfterFullSpeed(dwCyclesThisFrame); +} + +void Video::VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame) +{ + NTSC_VideoClockResync(dwCyclesThisFrame); + GetFrame().VideoRedrawScreen(); // Better (no flicker) than using: NTSC_VideoReinitialize() or VideoReinitialize() +} + +void Video::Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename) +{ + _ASSERT(pScreenshotFilename); + if (!pScreenshotFilename) + return; + + GetFrame().VideoRedrawScreen(); + Video_SaveScreenShot(Video::SCREENSHOT_560x384, pScreenshotFilename); +} + +void Video::VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode, bool bRedrawWholeScreen) +{ + if (bRedrawWholeScreen || g_nAppMode == MODE_PAUSED) + { + // uVideoModeForWholeScreen set if: + // . MODE_DEBUG : always + // . MODE_RUNNING : called from VideoRedrawScreen(), eg. during full-speed + if (bRedrawWholeScreen) + NTSC_SetVideoMode(uRedrawWholeScreenVideoMode); + NTSC_VideoRedrawWholeScreen(); + + // MODE_DEBUG|PAUSED: Need to refresh a 2nd time if changing video-type, otherwise could have residue from prev image! + // . eg. Amber -> B&W TV + if (g_nAppMode == MODE_DEBUG || g_nAppMode == MODE_PAUSED) + NTSC_VideoRedrawWholeScreen(); + } + + VideoPresentScreen(); +} diff --git a/source/Video.h b/source/Video.h index 699fb440..160c091f 100644 --- a/source/Video.h +++ b/source/Video.h @@ -210,14 +210,16 @@ public: { } - virtual void VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit = false) = 0; - virtual void VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame) = 0; - virtual void VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode = 0, bool bRedrawWholeScreen = false) = 0; - virtual void Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename) = 0; + virtual void VideoPresentScreen(void) = 0; virtual void ChooseMonochromeColor(void) = 0; virtual void Benchmark(void) = 0; virtual void DisplayLogo(void) = 0; + void VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode, bool bRedrawWholeScreen); + void VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit = false); + void VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame); + void Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename); + uint8_t* GetFrameBuffer(void) { return g_pFramebufferbits; } void SetFrameBuffer(uint8_t* frameBuffer) { g_pFramebufferbits = frameBuffer; } @@ -331,6 +333,8 @@ private: UINT g_videoRomSize; bool g_videoRomRockerSwitch; + DWORD dwFullSpeedStartTime; + static const char g_aVideoChoices[]; static const char m_szModeDesc0[]; diff --git a/source/Windows/AppleWin.cpp b/source/Windows/AppleWin.cpp index 33f879ee..70cd5efb 100644 --- a/source/Windows/AppleWin.cpp +++ b/source/Windows/AppleWin.cpp @@ -253,7 +253,7 @@ static void ContinueExecution(void) if (g_bFullSpeed) GetVideo().VideoRedrawScreenDuringFullSpeed(g_dwCyclesThisFrame); else - GetVideo().VideoRefreshScreen(); // Just copy the output of our Apple framebuffer to the system Back Buffer + GetVideo().VideoPresentScreen(); // Just copy the output of our Apple framebuffer to the system Back Buffer } #ifdef LOG_PERF_TIMINGS diff --git a/source/Windows/Win32Frame.h b/source/Windows/Win32Frame.h index 8c978ffa..c7002aa8 100644 --- a/source/Windows/Win32Frame.h +++ b/source/Windows/Win32Frame.h @@ -11,7 +11,6 @@ public: virtual void FrameUpdateApple2Type(); virtual void FrameSetCursorPosByMousePos(); - virtual void VideoRedrawScreen(); virtual void SetFullScreenShowSubunitStatus(bool bShow); virtual bool GetBestDisplayResolutionForFullScreen(UINT& bestWidth, UINT& bestHeight, UINT userSpecifiedHeight = 0); virtual int SetViewportScale(int nNewScale, bool bForce = false); diff --git a/source/Windows/WinFrame.cpp b/source/Windows/WinFrame.cpp index 6a49ff9a..fe8c443f 100644 --- a/source/Windows/WinFrame.cpp +++ b/source/Windows/WinFrame.cpp @@ -1256,11 +1256,11 @@ LRESULT CALLBACK FrameWndProc ( if ( DebugGetVideoMode(&debugVideoMode) ) GetVideo().VideoRefreshScreen(debugVideoMode, true); else - GetVideo().VideoRefreshScreen(); + GetVideo().VideoPresentScreen(); } else { - GetVideo().VideoRefreshScreen(); + GetVideo().VideoPresentScreen(); } } diff --git a/source/Windows/WinVideo.cpp b/source/Windows/WinVideo.cpp index 76650ab5..fb6c17f6 100644 --- a/source/Windows/WinVideo.cpp +++ b/source/Windows/WinVideo.cpp @@ -29,7 +29,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "StdAfx.h" #include "Windows/WinVideo.h" -#include "Windows/Win32Frame.h" #include "Windows/WinFrame.h" #include "Windows/AppleWin.h" #include "Interface.h" @@ -162,7 +161,7 @@ void WinVideo::Benchmark(void) memset(mem+0x400,0x14,0x400); else memcpy(mem+0x400,mem+((cycle & 2) ? 0x4000 : 0x6000),0x400); - VideoRefreshScreen(); + VideoPresentScreen(); if (cycle++ >= 3) cycle = 0; totaltextfps++; @@ -184,7 +183,7 @@ void WinVideo::Benchmark(void) memset(mem+0x2000,0x14,0x2000); else memcpy(mem+0x2000,mem+((cycle & 2) ? 0x4000 : 0x6000),0x2000); - VideoRefreshScreen(); + VideoPresentScreen(); if (cycle++ >= 3) cycle = 0; totalhiresfps++; @@ -421,53 +420,8 @@ void WinVideo::DisplayLogo(void) //=========================================================================== -void WinVideo::VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit /*=false*/) +void WinVideo::VideoPresentScreen(void) { - static DWORD dwFullSpeedStartTime = 0; - - if (bInit) - { - // Just entered full-speed mode - dwFullSpeedStartTime = GetTickCount(); - return; - } - - DWORD dwFullSpeedDuration = GetTickCount() - dwFullSpeedStartTime; - if (dwFullSpeedDuration <= 16) // Only update after every realtime ~17ms of *continuous* full-speed - return; - - dwFullSpeedStartTime += dwFullSpeedDuration; - - VideoRedrawScreenAfterFullSpeed(dwCyclesThisFrame); -} - -//=========================================================================== - -void WinVideo::VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame) -{ - NTSC_VideoClockResync(dwCyclesThisFrame); - GetFrame().VideoRedrawScreen(); // Better (no flicker) than using: NTSC_VideoReinitialize() or VideoReinitialize() -} - -//=========================================================================== - -void WinVideo::VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode /* =0*/, bool bRedrawWholeScreen /* =false*/) -{ - if (bRedrawWholeScreen || g_nAppMode == MODE_PAUSED) - { - // uVideoModeForWholeScreen set if: - // . MODE_DEBUG : always - // . MODE_RUNNING : called from VideoRedrawScreen(), eg. during full-speed - if (bRedrawWholeScreen) - NTSC_SetVideoMode( uRedrawWholeScreenVideoMode ); - NTSC_VideoRedrawWholeScreen(); - - // MODE_DEBUG|PAUSED: Need to refresh a 2nd time if changing video-type, otherwise could have residue from prev image! - // . eg. Amber -> B&W TV - if (g_nAppMode == MODE_DEBUG || g_nAppMode == MODE_PAUSED) - NTSC_VideoRedrawWholeScreen(); - } - HDC hFrameDC = FrameGetDC(); if (hFrameDC) @@ -569,23 +523,3 @@ void WinVideo::DDUninit(void) #undef SAFE_RELEASE //=========================================================================== - -void WinVideo::Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename) -{ - _ASSERT(pScreenshotFilename); - if (!pScreenshotFilename) - return; - - GetFrame().VideoRedrawScreen(); - Video_SaveScreenShot(Video::SCREENSHOT_560x384, pScreenshotFilename); -} - -//=========================================================================== -//=========================================================================== - -// NB. Win32Frame, not WinVideo -void Win32Frame::VideoRedrawScreen(void) -{ - // NB. Can't rely on g_uVideoMode being non-zero (ie. so it can double up as a flag) since 'GR,PAGE1,non-mixed' mode == 0x00. - GetVideo().VideoRefreshScreen( GetVideo().GetVideoMode(), true ); -} diff --git a/source/Windows/WinVideo.h b/source/Windows/WinVideo.h index 49d0c0bf..e1761aa8 100644 --- a/source/Windows/WinVideo.h +++ b/source/Windows/WinVideo.h @@ -19,10 +19,7 @@ public: virtual void Initialize(void); virtual void Destroy(void); - virtual void VideoRedrawScreenDuringFullSpeed(DWORD dwCyclesThisFrame, bool bInit = false); - virtual void VideoRedrawScreenAfterFullSpeed(DWORD dwCyclesThisFrame); - virtual void VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode = 0, bool bRedrawWholeScreen = false); - virtual void Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename); + virtual void VideoPresentScreen(void); virtual void ChooseMonochromeColor(void); virtual void Benchmark(void); virtual void DisplayLogo(void); From c7d9a780bb96c2890a1d8a61bad96d4c32a3bb2a Mon Sep 17 00:00:00 2001 From: tomcw Date: Tue, 29 Dec 2020 21:45:56 +0000 Subject: [PATCH 7/7] Minor tweaks + comment for GCC needing header file --- source/NTSC.h | 48 ++++++++++++++++++++++++------------------------ source/Video.cpp | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/source/NTSC.h b/source/NTSC.h index c010057e..5e5771fa 100644 --- a/source/NTSC.h +++ b/source/NTSC.h @@ -1,31 +1,31 @@ #pragma once -#include "Video.h" +#include "Video.h" // NB. needed by GCC (for fwd enum declaration) // Globals (Public) - extern uint16_t g_nVideoClockVert; - extern uint16_t g_nVideoClockHorz; - extern uint32_t g_nChromaSize; +extern uint16_t g_nVideoClockVert; +extern uint16_t g_nVideoClockHorz; +extern uint32_t g_nChromaSize; // Prototypes (Public) ________________________________________________ - extern void NTSC_SetVideoMode( uint32_t uVideoModeFlags, bool bDelay=false ); - extern void NTSC_SetVideoStyle(); - extern void NTSC_SetVideoTextMode( int cols ); - extern uint32_t*NTSC_VideoGetChromaTable( bool bHueTypeMonochrome, bool bMonitorTypeColorTV ); - extern void NTSC_VideoClockResync( const DWORD dwCyclesThisFrame ); - extern uint16_t NTSC_VideoGetScannerAddress( const ULONG uExecutedCycles ); - extern uint16_t NTSC_VideoGetScannerAddressForDebugger(void); - extern void NTSC_Destroy(void); - extern void NTSC_VideoInit( uint8_t *pFramebuffer ); - extern void NTSC_VideoReinitialize( DWORD cyclesThisFrame, bool bInitVideoScannerAddress ); - extern void NTSC_VideoInitAppleType(); - extern void NTSC_VideoInitChroma(); - extern void NTSC_VideoUpdateCycles( UINT cycles6502 ); - extern void NTSC_VideoRedrawWholeScreen( void ); +void NTSC_SetVideoMode(uint32_t uVideoModeFlags, bool bDelay=false); +void NTSC_SetVideoStyle(void); +void NTSC_SetVideoTextMode(int cols); +uint32_t* NTSC_VideoGetChromaTable(bool bHueTypeMonochrome, bool bMonitorTypeColorTV); +void NTSC_VideoClockResync(const DWORD dwCyclesThisFrame); +uint16_t NTSC_VideoGetScannerAddress(const ULONG uExecutedCycles); +uint16_t NTSC_VideoGetScannerAddressForDebugger(void); +void NTSC_Destroy(void); +void NTSC_VideoInit(uint8_t *pFramebuffer); +void NTSC_VideoReinitialize(DWORD cyclesThisFrame, bool bInitVideoScannerAddress); +void NTSC_VideoInitAppleType(void); +void NTSC_VideoInitChroma(void); +void NTSC_VideoUpdateCycles(UINT cycles6502); +void NTSC_VideoRedrawWholeScreen(void); - void NTSC_SetRefreshRate(VideoRefreshRate_e rate); - UINT NTSC_GetCyclesPerFrame(void); - UINT NTSC_GetCyclesPerLine(void); - UINT NTSC_GetVideoLines(void); - UINT NTSC_GetCyclesUntilVBlank(int cycles); - bool NTSC_IsVisible(void); +void NTSC_SetRefreshRate(VideoRefreshRate_e rate); +UINT NTSC_GetCyclesPerFrame(void); +UINT NTSC_GetCyclesPerLine(void); +UINT NTSC_GetVideoLines(void); +UINT NTSC_GetCyclesUntilVBlank(int cycles); +bool NTSC_IsVisible(void); diff --git a/source/Video.cpp b/source/Video.cpp index 9b0f20dc..4b45ec6e 100644 --- a/source/Video.cpp +++ b/source/Video.cpp @@ -862,7 +862,7 @@ void Video::Video_RedrawAndTakeScreenShot(const char* pScreenshotFilename) return; GetFrame().VideoRedrawScreen(); - Video_SaveScreenShot(Video::SCREENSHOT_560x384, pScreenshotFilename); + Video_SaveScreenShot(SCREENSHOT_560x384, pScreenshotFilename); } void Video::VideoRefreshScreen(uint32_t uRedrawWholeScreenVideoMode, bool bRedrawWholeScreen)