From c62947dac50fbbca0681fc4cad82f45ec0f213ef Mon Sep 17 00:00:00 2001 From: Gwenhael Le Moine Date: Tue, 19 Mar 2024 23:35:31 +0100 Subject: [PATCH] 2023-09-17: Updated to version 1.66 Signed-off-by: Gwenhael Le Moine --- Emu48.exe | Bin 319488 -> 323584 bytes PROBLEMS.TXT | 4 +- Sources/Emu48/CHANGES.TXT | 102 ++++++ Sources/Emu48/DISRPL.C | 130 +++---- Sources/Emu48/EMU48.C | 56 ++- Sources/Emu48/EMU48.DSP | 10 +- Sources/Emu48/EMU48.H | 11 +- Sources/Emu48/EMU48.RC | 12 +- Sources/Emu48/Emu48.vcxproj | 10 +- Sources/Emu48/Emu48.vcxproj.filters | 6 + Sources/Emu48/FILES.C | 257 ++++++++------ Sources/Emu48/KML.C | 134 +++++--- Sources/Emu48/LODEPNG.C | 511 +++++++++++++++++++++++----- Sources/Emu48/LODEPNG.H | 10 +- Sources/Emu48/MOPS.C | 35 +- Sources/Emu48/PCH.H | 18 + Sources/Emu48/PNGCRC.C | 57 ++++ Sources/Emu48/ROMCRC.C | 250 ++++++++++++++ Sources/Emu48/SERIAL.C | 26 +- Sources/Emu48/UDP.C | 27 +- Sources/GCCPatch/EMU48GCC.RC | 12 +- Sources/GCCPatch/Makefile | 14 +- Sources/GCCPatch/PCH.H | 16 + Sources/GCCPatch/README.TXT | 2 +- uninst.exe | Bin 66820 -> 66820 bytes 25 files changed, 1329 insertions(+), 381 deletions(-) create mode 100644 Sources/Emu48/PNGCRC.C create mode 100644 Sources/Emu48/ROMCRC.C diff --git a/Emu48.exe b/Emu48.exe index 2b021a5b25aa9cd4d82a9d90ddd3d803c100799a..0b79d1a5385cd8f72cd16832bf2e3e15f325ca7a 100755 GIT binary patch literal 323584 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 X^r6rtEC{HWPNTLIW&pj2 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%0AmYD;>Y_?Z)$_d=O1N~= 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 C-v{ad diff --git a/PROBLEMS.TXT b/PROBLEMS.TXT index d1b45b6..f4913cc 100644 --- a/PROBLEMS.TXT +++ b/PROBLEMS.TXT @@ -1,4 +1,4 @@ -Known bugs and restrictions of Emu48 V1.65 +Known bugs and restrictions of Emu48 V1.66 ------------------------------------------ - the following I/O bits aren't emulated (incomplete) @@ -47,4 +47,4 @@ Known bugs and restrictions of Emu48 V1.65 - quitting the emulator while programming the flash isn't allowed, because the content of flash state machine isn't saved so far -07/26/22 (c) by Christoph Gießelink, c dot giesselink at gmx dot de +06/20/23 (c) by Christoph Gießelink, c dot giesselink at gmx dot de diff --git a/Sources/Emu48/CHANGES.TXT b/Sources/Emu48/CHANGES.TXT index dab5a6f..c30f61a 100644 --- a/Sources/Emu48/CHANGES.TXT +++ b/Sources/Emu48/CHANGES.TXT @@ -1,3 +1,105 @@ +Service Pack 66 for Emu48 Version 1.0 + +DISRPL.C +- changed function PutSn(), BINx(), DoSemiStream(), + RplDecodeObject() and RplCreateObjView(), added error handling for + memory allocation failed + +EMU48.C +- changed function WinMain(), added disable of TIMER_RESOLUTION + throttling for Windows 11 and added a more flexible CPU binding + for the Saturn core emulation thread on Windows Vista and later + with function GetCurrentProcessorNumber() + +EMU48.H +- added _KB definition +- changed function prototypes +- extern declaration of global variable and functions +- removed extern declaration of global function +- added inline function UpCRC(), new implementation as inline + function using a polynomial multiplication instead of the earlier + polynomial table solution which is faster on host CPUs with a + hardware integer multiplication unit + +EMU48.DSP +- added romcrc.c and pngcrc.c sources +- added "LODEPNG_NO_COMPILE_CRC" to lodepng.c definitions + +EMU48.RC +- changed version and copyright + +FILES.C +- added global variable for ROM CRC correction +- changed pbySignatureA[], pbySignatureB[], pbySignatureE[], + pbySignatureW[] and pbySignatureV[] to the byte pointer array + bySignature[] and defined signatures as constant +- changed function PatchRom(), made function public and set flag to + correct the ROM CRC +- changed function MapRom() and UnmapRom(), speed optimization + unpacking/packing ROM image and added reset of ROM patch flag +- changed function CrcPort2(), made function public, optimized + memory access and replaced CRC formula by call of function UpCRC() +- changed function NewDocument(), SaveBackup(), RestoreBackup() and + CreateRgnFromBitmap(), added error handling for memory allocation + failed +- changed function OpenDocument(), simplified file signature check +- changed function SaveDocument(), adjusted to bySignatureE[] + +KML.C +- changed function AddToLog(), optimized implementation +- changed function DestroyKmlList(), minor optimization +- changed function CreateKmlList(), added error handling for memory + allocation failed +- changed function ParseString(), optimized memory allocation and + added error handling for memory allocation failed +- changed function ParseLine(), ParseLines() and ParseBlock(), + added error handling for memory allocation failed +- changed function InitKML(), added rebuild of ROM CRC after ROM + patches + +LODEPNG.C +- changed implementation file to LodePNG version 20230410 with + unmarked typecast patches for x64 compatibility, Copyright (c) + 2005-2023 Lode Vandevenne + +LODEPNG.H +- changed header file to LodePNG version 20230410 + +MOPS.C +- moved function UpCRC() with a new function prototype and + implementation to EMU48.H +- changed function Nread(), adjusted to he new prototype of function + UpCRC() +- changed function ReadIO(), added CPU slow down for the TBF bit in + the TCS (0x112) register as workaround for the HP48G-series + transmit buffer full timeout overflow in the XSEND command and the + software derivations base on this source code + +PCH.H +- added definitions, emum and struct for calling function + SetProcessInformation() + +PNGCRC.C +- new module for generating the PNG CRC32 replacing the CRC + generation in LODEPNG.C + +ROMCRC.C +- new module correcting the ROM CRC after a ROM patch + +SERIAL.C +- bugfix in function CommOpen(), global variable dwBytesRead wasn't + initialized with 0 in all cases +- bugfix in function CommReceive(), added workaround for ReadFile() + timeouts to get "Library 1275: XYMODEM v3.2 for S/G" working + +UDP.C +- replaced static IN_ADDR by SOCKADDR_IN structure +- changed function ResetUdp(), invalidate IP address inside + SOCKADDR_IN structure +- changed function SendByteUdp(), replaced local SOCKADDR_IN + by the global static SOCKADDR_IN structure + + Service Pack 65 for Emu48 Version 1.0 EMU48.C diff --git a/Sources/Emu48/DISRPL.C b/Sources/Emu48/DISRPL.C index 3120b53..494eae8 100644 --- a/Sources/Emu48/DISRPL.C +++ b/Sources/Emu48/DISRPL.C @@ -29,31 +29,36 @@ typedef struct static VOID PutSn(String *str, LPCTSTR szVal, DWORD dwLen) { - if (str != NULL) // with output + if (str != NULL && dwLen > 0) // with output and actual string length { - if (str->dwSize == 0) // no buffer allocated + // string buffer to small + if (str->dwPos + dwLen > str->dwSize) { - str->dwSize = ALLOCSIZE; // buffer size - VERIFY(str->szBuffer = (LPTSTR) malloc(str->dwSize * sizeof(TCHAR))); - str->dwPos = 0; + LPTSTR szNewBuffer; + + DWORD dwMinSize; + dwMinSize = dwLen + str->dwSize - str->dwPos; + dwMinSize = (dwMinSize + ALLOCSIZE - 1) / ALLOCSIZE; + dwMinSize *= ALLOCSIZE; + + str->dwSize += dwMinSize; // new buffer size + VERIFY(szNewBuffer = (LPTSTR) realloc(str->szBuffer,str->dwSize * sizeof(TCHAR))); + + if (szNewBuffer) // new buffer allocated + { + str->szBuffer = szNewBuffer; + } + else // allocation failed + { + str->dwSize = 0; // size of buffer + free(str->szBuffer); // buffer memory + str->szBuffer = NULL; + str->dwPos = 0; // position inside buffer + } } - _ASSERT(str->szBuffer != NULL); - - if (dwLen > 0) // actual string length + if (str->szBuffer) { - // string buffer to small - if (str->dwPos + dwLen > str->dwSize) - { - DWORD dwMinSize; - dwMinSize = dwLen + str->dwSize - str->dwPos; - dwMinSize = (dwMinSize + ALLOCSIZE - 1) / ALLOCSIZE; - dwMinSize *= ALLOCSIZE; - - str->dwSize += dwMinSize; // new buffer size - VERIFY(str->szBuffer = (LPTSTR) realloc(str->szBuffer,str->dwSize * sizeof(TCHAR))); - } - CopyMemory(&str->szBuffer[str->dwPos],szVal,dwLen * sizeof(TCHAR)); str->dwPos += dwLen; } @@ -212,23 +217,24 @@ static BOOL BCDx(BYTE CONST *pbyNum,INT nMantLen,INT nExpLen,String *str) static BOOL BINx(DWORD *pdwAddr,INT nBinLen,String *str) { - LPBYTE pbyNumber; - INT i; - - VERIFY(pbyNumber = (LPBYTE) malloc(nBinLen)); - - for (i = 0; i < nBinLen; ++i) // read data - pbyNumber[i] = RplReadNibble(pdwAddr); - - // strip leading zeros - for (i = nBinLen - 1; pbyNumber[i] == 0 && i > 0; --i) { } - - for (; i >= 0; --i) // write rest of bin + LPBYTE pbyNumber = (LPBYTE) malloc(nBinLen); + if (pbyNumber != NULL) { - PutC(str,cHex[pbyNumber[i]]); - } + INT i; - free(pbyNumber); + for (i = 0; i < nBinLen; ++i) // read data + pbyNumber[i] = RplReadNibble(pdwAddr); + + // strip leading zeros + for (i = nBinLen - 1; pbyNumber[i] == 0 && i > 0; --i) { } + + for (; i >= 0; --i) // write rest of bin + { + PutC(str,cHex[pbyNumber[i]]); + } + + free(pbyNumber); + } return FALSE; } @@ -327,29 +333,31 @@ static BOOL DoIntStream(DWORD *pdwAddr,String *str,UINT *pnLevel) dwLength -= 5; // object length - VERIFY(pbyData = (LPBYTE) malloc(dwLength)); - - for (i = 0; i < dwLength; ++i) // read data - pbyData[i] = RplReadNibble(pdwAddr); - - if (dwLength <= 1) // special implementation for zero + pbyData = (LPBYTE) malloc(dwLength); + if (pbyData != NULL) { - _ASSERT(dwLength == 0 || (dwLength == 1 && pbyData[0] == 0)); - PutC(str,_T('0')); - } - else - { - if (pbyData[--dwLength] == 9) // negative number - PutC(str,_T('-')); + for (i = 0; i < dwLength; ++i) // read data + pbyData[i] = RplReadNibble(pdwAddr); - while (dwLength > 0) // write rest of zint + if (dwLength <= 1) // special implementation for zero { - // use only decimal part for translation - PutC(str,cHex[pbyData[--dwLength]]); + _ASSERT(dwLength == 0 || (dwLength == 1 && pbyData[0] == 0)); + PutC(str,_T('0')); } - } + else + { + if (pbyData[--dwLength] == 9) // negative number + PutC(str,_T('-')); - free(pbyData); + while (dwLength > 0) // write rest of zint + { + // use only decimal part for translation + PutC(str,cHex[pbyData[--dwLength]]); + } + } + + free(pbyData); + } return FALSE; UNREFERENCED_PARAMETER(pnLevel); } @@ -1291,9 +1299,9 @@ DWORD RplSkipObject(DWORD dwAddr) LPTSTR RplDecodeObject(DWORD dwAddr, DWORD *pdwNxtAddr) { - String str = { 0 }; - DWORD dwNxtAddr; - UINT nLevel = 0; // don't nest DOCOL objects + String str = { 0, NULL, 0 }; + DWORD dwNxtAddr; + UINT nLevel = 0; // don't nest DOCOL objects dwNxtAddr = dwAddr; // init next address @@ -1302,7 +1310,7 @@ LPTSTR RplDecodeObject(DWORD dwAddr, DWORD *pdwNxtAddr) PutC(&str,0); // set EOS - // release unnecessary allocated buffer memory + // release unnecessary allocated buffer memory (shrinking) VERIFY(str.szBuffer = (LPTSTR) realloc(str.szBuffer,str.dwPos * sizeof(str.szBuffer[0]))); // return address of next object @@ -1472,7 +1480,7 @@ static DWORD AssemblyOutput(DWORD dwAddr, DWORD dwEndAddr, DWORD dwLevel, String LPTSTR RplCreateObjView(DWORD dwStartAddr, DWORD dwEndAddr, BOOL bSingleObj) { - String str = { 0 }; + String str = { 0, NULL, 0 }; LPCTSTR lpszName; LPTSTR lpszObject; DWORD dwLevel,dwAddr,dwNxtAddr; @@ -1486,6 +1494,10 @@ LPTSTR RplCreateObjView(DWORD dwStartAddr, DWORD dwEndAddr, BOOL bSingleObj) for (dwAddr = dwStartAddr;dwAddr < dwEndAddr; dwAddr = dwNxtAddr) { lpszObject = RplDecodeObject(dwAddr,&dwNxtAddr); + if (lpszObject == NULL) // no memory + { + break; // break decoding + } if (dwLevel > 0 && lstrcmp(lpszObject,_T(";")) == 0) --dwLevel; @@ -1586,7 +1598,7 @@ LPTSTR RplCreateObjView(DWORD dwStartAddr, DWORD dwEndAddr, BOOL bSingleObj) PutC(&str,0); // set EOS - // release unnecessary allocated buffer memory + // release unnecessary allocated buffer memory (shrinking) VERIFY(str.szBuffer = (LPTSTR) realloc(str.szBuffer,str.dwPos * sizeof(str.szBuffer[0]))); return str.szBuffer; } diff --git a/Sources/Emu48/EMU48.C b/Sources/Emu48/EMU48.C index 7af76f8..37419d5 100644 --- a/Sources/Emu48/EMU48.C +++ b/Sources/Emu48/EMU48.C @@ -13,7 +13,7 @@ #include "kml.h" #include "debugger.h" -#define VERSION "1.65" +#define VERSION "1.66" #ifdef _DEBUG LPCTSTR szNoTitle = _T("Emu48 ")_T(VERSION)_T(" Debug"); @@ -2031,19 +2031,19 @@ LRESULT CALLBACK MainWndProc(HWND hWindow, UINT uMsg, WPARAM wParam, LPARAM lPar int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { - typedef DWORD (WINAPI *LPFN_STIP)(HANDLE hThread,DWORD dwIdealProcessor); - MSG msg; WNDCLASS wc; ATOM classAtom; RECT rectWindow; HACCEL hAccel; DWORD dwThreadId; - LPFN_STIP fnSetThreadIdealProcessor; DWORD dwProcessor; HSZ hszService, hszTopic; // variables for DDE server LPTSTR lpFilePart; + // module handle to kernel32 + const HMODULE hmKernel32 = GetModuleHandle(_T("kernel32")); + // enable memory leak detection _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); @@ -2136,6 +2136,26 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC return 0; // quit program } + // disable TIMER_RESOLUTION throttling for Windows 11 and later + { + typedef const BOOL(WINAPI* LPFN_SPI)(HANDLE hProcess,INT ProcessInformationClass,LPVOID ProcessInformation,DWORD ProcessInformationSize); + + // SetProcessInformation() is available since Windows 8, PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION since Windows 11 + LPFN_SPI fnSetProcessInformation = (LPFN_SPI) GetProcAddress(hmKernel32, "SetProcessInformation"); + + if (fnSetProcessInformation != NULL) // running on Windows 8 or later + { + PROCESS_POWER_THROTTLING_STATE Ppts; + + ZeroMemory(&Ppts,sizeof(Ppts)); + Ppts.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION; + Ppts.ControlMask = PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION; + + // don't check for success, success only on Windoes 11 and later + fnSetProcessInformation(GetCurrentProcess(),ProcessPowerThrottling,&Ppts,sizeof(Ppts)); + } + } + // Create window rectWindow.left = 0; rectWindow.top = 0; @@ -2186,15 +2206,29 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC return FALSE; } - // SetThreadIdealProcessor() is available since Windows NT4.0 - fnSetThreadIdealProcessor = (LPFN_STIP) GetProcAddress(GetModuleHandle(_T("kernel32")), - "SetThreadIdealProcessor"); + // get processor for Saturn CPU thread + { + // GetCurrentProcessorNumber() is available since Windows Vista + typedef const DWORD (WINAPI *LPFN_GCPN)(VOID); + LPFN_GCPN fnGetCurrentProcessorNumber = (LPFN_GCPN) GetProcAddress(hmKernel32,"GetCurrentProcessorNumber"); - // bind Saturn CPU emulation thread to current ideal processor - dwProcessor = (fnSetThreadIdealProcessor != NULL) // running on NT4.0 or later - ? fnSetThreadIdealProcessor(hThread,MAXIMUM_PROCESSORS) // get ideal processor no. - : 0; // select 1st processor + if (fnGetCurrentProcessorNumber != NULL) // running on Vista or later + { + dwProcessor = fnGetCurrentProcessorNumber(); // get current processor number + } + else + { + // SetThreadIdealProcessor() is available since Windows NT4.0 + typedef const DWORD (WINAPI *LPFN_STIP)(HANDLE hThread,DWORD dwIdealProcessor); + LPFN_STIP fnSetThreadIdealProcessor = (LPFN_STIP) GetProcAddress(hmKernel32,"SetThreadIdealProcessor"); + dwProcessor = (fnSetThreadIdealProcessor != NULL) // running on NT4.0 or later + ? fnSetThreadIdealProcessor(hThread,MAXIMUM_PROCESSORS) // get ideal processor no. + : 0; // select 1st processor + } + } + + // bind Saturn CPU emulation thread to selected processor // on multiprocessor machines for QueryPerformanceCounter() VERIFY(SetThreadAffinityMask(hThread,(DWORD_PTR) (1 << dwProcessor))); ResumeThread(hThread); // start thread diff --git a/Sources/Emu48/EMU48.DSP b/Sources/Emu48/EMU48.DSP index b1d8f13..3fc3065 100644 --- a/Sources/Emu48/EMU48.DSP +++ b/Sources/Emu48/EMU48.DSP @@ -216,7 +216,7 @@ SOURCE=.\kml.c # Begin Source File SOURCE=.\lodepng.c -# ADD CPP /D "LODEPNG_NO_COMPILE_ENCODER" /D "LODEPNG_NO_COMPILE_DISK" /D "LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS" /D "LODEPNG_NO_COMPILE_ERROR_TEXT" /D "LODEPNG_NO_COMPILE_CPP" +# ADD CPP /D "LODEPNG_NO_COMPILE_ENCODER" /D "LODEPNG_NO_COMPILE_DISK" /D "LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS" /D "LODEPNG_NO_COMPILE_ERROR_TEXT" /D "LODEPNG_NO_COMPILE_CPP" /D "LODEPNG_NO_COMPILE_CRC" # SUBTRACT CPP /YX /Yc /Yu # End Source File # Begin Source File @@ -242,10 +242,18 @@ SOURCE=.\pch.c # End Source File # Begin Source File +SOURCE=.\pngcrc.c +# End Source File +# Begin Source File + SOURCE=.\redeye.c # End Source File # Begin Source File +SOURCE=.\romcrc.c +# End Source File +# Begin Source File + SOURCE=.\rpl.c # End Source File # Begin Source File diff --git a/Sources/Emu48/EMU48.H b/Sources/Emu48/EMU48.H index 570e62c..2bdd35f 100644 --- a/Sources/Emu48/EMU48.H +++ b/Sources/Emu48/EMU48.H @@ -8,6 +8,8 @@ */ #include "types.h" +#define _KB(a) ((a)*2*1024) + #define HARDWARE "Yorke" // emulator hardware #define MODELS "6AEGSX" // valid calculator models @@ -73,6 +75,9 @@ enum MMUMAP { M_IO, M_ROM, M_RAM, M_P1, M_P2, M_BS }; // values for disassembler memory mapping modes enum MEM_MAPPING { MEM_MMU, MEM_NCE1, MEM_NCE2, MEM_CE1, MEM_CE2, MEM_NCE3 }; +// Kermit CRC calculation +static __inline WORD UpCRC(WORD wCRC, BYTE nib) { return (wCRC >> 4) ^ (((wCRC ^ nib) & 0xf) * 0x1081); } + // Emu48.c extern HPALETTE hPalette; extern HPALETTE hOldPalette; @@ -250,6 +255,7 @@ extern DWORD dwRomSize; extern LPBYTE pbyRomDirtyPage; extern DWORD dwRomDirtyPageSize; extern WORD wRomCrc; +extern BOOL bRomCrcCorrection; extern LPBYTE pbyPort2; extern BOOL bPort2Writeable; extern BOOL bPort2IsShared; @@ -261,12 +267,12 @@ extern VOID SetWindowLocation(HWND hWnd,INT nPosX,INT nPosY); extern DWORD GetCutPathName(LPCTSTR szFileName,LPTSTR szBuffer,DWORD dwBufferLength,INT nCutLength); extern VOID SetWindowPathTitle(LPCTSTR szFileName); extern BOOL CheckForBeepPatch(VOID); +extern BOOL PatchNibble(DWORD dwAddress, BYTE byPatch); extern VOID UpdatePatches(BOOL bPatch); extern BOOL PatchRom(LPCTSTR szFilename); extern BOOL CrcRom(WORD *pwChk); extern BOOL MapRom(LPCTSTR szFilename); extern VOID UnmapRom(VOID); -extern BOOL CrcPort2(WORD *pwCrc); extern BOOL MapPort2(LPCTSTR szFilename); extern VOID UnmapPort2(VOID); extern VOID ResetDocument(VOID); @@ -289,6 +295,9 @@ extern VOID LoadIconDefault(VOID); extern HBITMAP LoadBitmapFile(LPCTSTR szFilename,BOOL bPalette); extern HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol); +// Romcrc.c +extern VOID RebuildRomCrc(VOID); + // Timer.c extern VOID SetHP48Time(VOID); extern VOID StartTimers(VOID); diff --git a/Sources/Emu48/EMU48.RC b/Sources/Emu48/EMU48.RC index 155416f..15e2e4b 100644 --- a/Sources/Emu48/EMU48.RC +++ b/Sources/Emu48/EMU48.RC @@ -303,7 +303,7 @@ FONT 8, "MS Sans Serif" BEGIN ICON IDI_EMU48,IDC_STATIC,7,6,20,20,SS_REALSIZEIMAGE LTEXT "",IDC_VERSION,29,6,151,8,NOT WS_GROUP - LTEXT "Copyright © 2022 Christoph Gießelink && Sébastien Carlier", + LTEXT "Copyright © 2023 Christoph Gießelink && Sébastien Carlier", IDC_STATIC,29,18,181,8 DEFPUSHBUTTON "OK",IDOK,215,12,39,14 EDITTEXT IDC_LICENSE,7,33,247,112,ES_MULTILINE | ES_AUTOHSCROLL | @@ -723,8 +723,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,6,5,0 - PRODUCTVERSION 1,6,5,0 + FILEVERSION 1,6,6,0 + PRODUCTVERSION 1,6,6,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -741,12 +741,12 @@ BEGIN BEGIN VALUE "CompanyName", "Christoph Gießelink & Sebastien Carlier\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 6, 5, 0\0" + VALUE "FileVersion", "1, 6, 6, 0\0" VALUE "InternalName", "Emu48\0" - VALUE "LegalCopyright", "Copyright © 2022\0" + VALUE "LegalCopyright", "Copyright © 2023\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 6, 5, 0\0" + VALUE "ProductVersion", "1, 6, 6, 0\0" END END BLOCK "VarFileInfo" diff --git a/Sources/Emu48/Emu48.vcxproj b/Sources/Emu48/Emu48.vcxproj index b277133..bd73f8e 100644 --- a/Sources/Emu48/Emu48.vcxproj +++ b/Sources/Emu48/Emu48.vcxproj @@ -285,16 +285,16 @@ - LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;%(PreprocessorDefinitions) + LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;LODEPNG_NO_COMPILE_CRC;%(PreprocessorDefinitions) - LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;%(PreprocessorDefinitions) + LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;LODEPNG_NO_COMPILE_CRC;%(PreprocessorDefinitions) - LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;%(PreprocessorDefinitions) + LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;LODEPNG_NO_COMPILE_CRC;%(PreprocessorDefinitions) - LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;%(PreprocessorDefinitions) + LODEPNG_NO_COMPILE_ENCODER;LODEPNG_NO_COMPILE_DISK;LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS;LODEPNG_NO_COMPILE_ERROR_TEXT;LODEPNG_NO_COMPILE_CPP;LODEPNG_NO_COMPILE_CRC;%(PreprocessorDefinitions) @@ -312,7 +312,9 @@ Create pch.h + + diff --git a/Sources/Emu48/Emu48.vcxproj.filters b/Sources/Emu48/Emu48.vcxproj.filters index 0d598ae..ad42e68 100644 --- a/Sources/Emu48/Emu48.vcxproj.filters +++ b/Sources/Emu48/Emu48.vcxproj.filters @@ -78,9 +78,15 @@ Source Files + + Source Files + Source Files + + Source Files + Source Files diff --git a/Sources/Emu48/FILES.C b/Sources/Emu48/FILES.C index bee26d6..1666492 100644 --- a/Sources/Emu48/FILES.C +++ b/Sources/Emu48/FILES.C @@ -41,6 +41,7 @@ DWORD dwRomSize = 0; LPBYTE pbyRomDirtyPage = NULL; DWORD dwRomDirtyPageSize = 0; WORD wRomCrc = 0; // fingerprint of patched ROM +BOOL bRomCrcCorrection = FALSE; // ROM CRC correction disabled LPBYTE pbyPort2 = NULL; BOOL bPort2Writeable = FALSE; @@ -54,15 +55,19 @@ BOOL bBackup = FALSE; static HANDLE hRomFile = NULL; static HANDLE hPort2File = NULL; static HANDLE hPort2Map = NULL; - -// document signatures -static BYTE pbySignatureA[16] = "Emu38 Document\xFE"; -static BYTE pbySignatureB[16] = "Emu39 Document\xFE"; -static BYTE pbySignatureE[16] = "Emu48 Document\xFE"; -static BYTE pbySignatureW[16] = "Win48 Document\xFE"; -static BYTE pbySignatureV[16] = "Emu49 Document\xFE"; static HANDLE hCurrentFile = NULL; +// valid document signatures +static CONST LPBYTE bySignature[] = +{ + (CONST LPBYTE) "Emu48 Document\xFE", + (CONST LPBYTE) "Emu38 Document\xFE", + (CONST LPBYTE) "Emu39 Document\xFE", + (CONST LPBYTE) "Emu49 Document\xFE", + (CONST LPBYTE) "Win48 Document\xFE", + (CONST LPBYTE) "Win48 Document\xFF" +}; + static CHIPSET BackupChipset; static LPBYTE BackupPort0; static LPBYTE BackupPort1; @@ -100,11 +105,11 @@ VOID SetWindowLocation(HWND hWnd,INT nPosX,INT nPosY) DWORD GetCutPathName(LPCTSTR szFileName, LPTSTR szBuffer, DWORD dwBufferLength, INT nCutLength) { - TCHAR cPath[_MAX_PATH]; // full filename - TCHAR cDrive[_MAX_DRIVE]; - TCHAR cDir[_MAX_DIR]; - TCHAR cFname[_MAX_FNAME]; - TCHAR cExt[_MAX_EXT]; + TCHAR cPath[_MAX_PATH]; // full filename + TCHAR cDrive[_MAX_DRIVE]; + TCHAR cDir[_MAX_DIR]; + TCHAR cFname[_MAX_FNAME]; + TCHAR cExt[_MAX_EXT]; _ASSERT(nCutLength >= 0); // 0 = only drive and name @@ -207,7 +212,7 @@ BOOL CheckForBeepPatch(VOID) } BEEPPATCH, *PBEEPPATCH; // known beep patches - const BEEPPATCH s38[] = { { 0x017D0, { 0x8, 0x1, 0xB, 0x1 } } }; + const BEEPPATCH s38[] = { { 0x017D0, { 0x8, 0x1, 0xB, 0x1 } } }; const BEEPPATCH s39[] = { { 0x017BC, { 0x8, 0x1, 0xB, 0x1 } } }; const BEEPPATCH s48[] = { { 0x017A6, { 0x8, 0x1, 0xB, 0x1 } } }; const BEEPPATCH s49[] = { { 0x4157A, { 0x8, 0x1, 0xB, 0x1 } }, // 1.18/1.19-5/1.19-6 @@ -287,7 +292,7 @@ typedef struct tnode static TREENODE *nodePatch = NULL; -static BOOL PatchNibble(DWORD dwAddress, BYTE byPatch) +BOOL PatchNibble(DWORD dwAddress, BYTE byPatch) { PTREENODE p; @@ -444,6 +449,7 @@ BOOL PatchRom(LPCTSTR szFilename) { // patch ROM and save original nibble PatchNibble(dwAddress, Asc2Nib(lpBuf[nPos])); + bRomCrcCorrection = TRUE; } ++dwAddress; } @@ -478,7 +484,7 @@ BOOL CrcRom(WORD *pwChk) // calculate fingerprint of ROM // use checksum, because it's faster while (dwSize-- > 0) { - DWORD dwData = *pdwData++; + CONST DWORD dwData = *pdwData++; if ((dwData & 0xF0F0F0F0) != 0) // data packed? return FALSE; dwChk += dwData; @@ -499,6 +505,7 @@ BOOL MapRom(LPCTSTR szFilename) { return FALSE; } + bRomCrcCorrection = FALSE; // ROM CRC correction disabled SetCurrentDirectory(szEmuDirectory); if (bRomRW) // ROM writeable { @@ -595,12 +602,13 @@ BOOL MapRom(LPCTSTR szFilename) if (bRomPacked) // packed ROM image { - dwSize = dwRomSize; // destination start address - while (dwFileSize > 0) // unpack source + LPBYTE pbySrc = pbyRom+dwFileSize; // source start address + LPBYTE pbyDest = pbyRom+dwRomSize; // destination start address + while (pbySrc != pbyDest) // unpack source { - BYTE byValue = pbyRom[--dwFileSize]; - pbyRom[--dwSize] = byValue >> 4; - pbyRom[--dwSize] = byValue & 0xF; + CONST BYTE byValue = *(--pbySrc); + *(--pbyDest) = byValue >> 4; + *(--pbyDest) = byValue & 0xF; } } return TRUE; @@ -636,19 +644,19 @@ VOID UnmapRom(VOID) if (bRomPacked) // repack data { - LPBYTE pbySrc,pbyDest; - DWORD j; + LPBYTE pbySrc,pbyDest,pbyEnd; dwSize /= 2; // adjust no. of bytes to write dwFilePos /= 2; // linear pos in packed file // pack data in page pbySrc = pbyDest = &pbyRom[dwLinPos]; - for (j = 0; j < dwSize; j++) + pbyEnd = pbyDest + dwSize; + while (pbyDest < pbyEnd) { *pbyDest = *pbySrc++; *pbyDest |= *pbySrc++ << 4; - pbyDest++; + ++pbyDest; } } @@ -668,6 +676,7 @@ VOID UnmapRom(VOID) pbyRom = NULL; dwRomSize = 0; wRomCrc = 0; + bRomCrcCorrection = FALSE; // ROM CRC correction disabled return; } @@ -679,25 +688,24 @@ VOID UnmapRom(VOID) //# //################ -BOOL CrcPort2(WORD *pwCrc) // calculate fingerprint of port2 +static BOOL CrcPort2(WORD *pwCrc) // calculate fingerprint of port2 { - DWORD dwCount; - DWORD dwFileSize; - *pwCrc = 0; - // port2 CRC isn't available - if (pbyPort2 == NULL) return TRUE; - - dwFileSize = GetFileSize(hPort2File, &dwCount); // get real filesize - _ASSERT(dwCount == 0); // isn't created by MapPort2() - - for (dwCount = 0;dwCount < dwFileSize; ++dwCount) + if (pbyPort2 != NULL) // port2 CRC available { - if ((pbyPort2[dwCount] & 0xF0) != 0) // data packed? - return FALSE; + LPBYTE pbyMem; - *pwCrc = (*pwCrc >> 4) ^ (((*pwCrc ^ ((WORD) pbyPort2[dwCount])) & 0xf) * 0x1081); + // get real filesize + DWORD dwFileSize = GetFileSize(hPort2File, NULL); + + for (pbyMem = pbyPort2; dwFileSize > 0; --dwFileSize) + { + if ((*pbyMem & 0xF0) != 0) // data packed? + return FALSE; + + *pwCrc = UpCRC(*pwCrc,*pbyMem++); + } } return TRUE; } @@ -834,7 +842,7 @@ VOID ResetDocument(VOID) hCurrentFile = NULL; } szCurrentKml[0] = 0; - szCurrentFilename[0]=0; + szCurrentFilename[0] = 0; if (Port0) { free(Port0); Port0 = NULL; } if (Port1) { free(Port1); Port1 = NULL; } if (Port2) { free(Port2); Port2 = NULL; } else UnmapPort2(); @@ -913,17 +921,17 @@ BOOL NewDocument(VOID) if (Chipset.Port0Size) { Port0 = (LPBYTE) calloc(Chipset.Port0Size*2048,sizeof(*Port0)); - _ASSERT(Port0 != NULL); + if (Port0 == NULL) goto restore; } if (Chipset.Port1Size) { Port1 = (LPBYTE) calloc(Chipset.Port1Size*2048,sizeof(*Port1)); - _ASSERT(Port1 != NULL); + if (Port1 == NULL) goto restore; } if (Chipset.Port2Size) { - Port2 = (LPBYTE) calloc(Chipset.Port2Size*2048,sizeof(*Port1)); - _ASSERT(Port2 != NULL); + Port2 = (LPBYTE) calloc(Chipset.Port2Size*2048,sizeof(*Port2)); + if (Port2 == NULL) goto restore; } LoadBreakpointList(NULL); // clear debugger breakpoint list RomSwitch(0); // boot ROM view of HP49G and map memory @@ -952,10 +960,9 @@ BOOL OpenDocument(LPCTSTR szFilename) HANDLE hFile = INVALID_HANDLE_VALUE; DWORD lBytesRead,lSizeofChipset; - BYTE pbyFileSignature[16]; - LPBYTE pbySig; - UINT ctBytesCompared; - UINT nLength; + BYTE byFileSignature[16]; + BOOL bMatch; + UINT i,nLength; // Open file if (lstrcmpi(szCurrentFilename,szFilename) == 0) @@ -975,38 +982,19 @@ BOOL OpenDocument(LPCTSTR szFilename) } // Read and Compare signature - ReadFile(hFile, pbyFileSignature, 16, &lBytesRead, NULL); - switch (pbyFileSignature[0]) + ReadFile(hFile, byFileSignature, sizeof(byFileSignature), &lBytesRead, NULL); + // go through all valid document signatures + for (bMatch = FALSE, i = 0; !bMatch && i < ARRAYSIZEOF(bySignature); ++i) { - case 'E': - pbySig = (pbyFileSignature[3] == '3') - ? ((pbyFileSignature[4] == '8') ? pbySignatureA : pbySignatureB) - : ((pbyFileSignature[4] == '8') ? pbySignatureE : pbySignatureV); - for (ctBytesCompared=0; ctBytesCompared<14; ctBytesCompared++) - { - if (pbyFileSignature[ctBytesCompared]!=pbySig[ctBytesCompared]) - { - AbortMessage(_T("This file is not a valid Emu48 document.")); - goto restore; - } - } - break; - case 'W': - for (ctBytesCompared=0; ctBytesCompared<14; ctBytesCompared++) - { - if (pbyFileSignature[ctBytesCompared]!=pbySignatureW[ctBytesCompared]) - { - AbortMessage(_T("This file is not a valid Win48 document.")); - goto restore; - } - } - break; - default: - AbortMessage(_T("This file is not a valid document.")); + bMatch = (memcmp(byFileSignature, bySignature[i], sizeof(byFileSignature)) == 0); + } + if (!bMatch) // no valid document signature found + { + AbortMessage(_T("This file is not a valid Emu48 document.")); goto restore; } - switch (pbyFileSignature[14]) + switch (byFileSignature[14]) { case 0xFE: // Win48 2.1 / Emu4x 0.99.x format // read length of KML script name @@ -1045,8 +1033,7 @@ BOOL OpenDocument(LPCTSTR szFilename) case 0xFF: // Win48 2.05 format break; default: - AbortMessage(_T("This file is for an unknown version of Emu48.")); - goto restore; + _ASSERT(FALSE); } // read chipset size inside file @@ -1081,9 +1068,7 @@ BOOL OpenDocument(LPCTSTR szFilename) { if (szCurrentKml[0]) // KML file name { - BOOL bOK; - - bOK = InitKML(szCurrentKml,FALSE); + BOOL bOK = InitKML(szCurrentKml,FALSE); bOK = bOK && (cCurrentRomType == Chipset.type); if (bOK) break; @@ -1222,9 +1207,10 @@ BOOL SaveDocument(VOID) SetFilePointer(hCurrentFile,0,NULL,FILE_BEGIN); - if (!WriteFile(hCurrentFile, pbySignatureE, sizeof(pbySignatureE), &lBytesWritten, NULL)) + // write default "Emu48 Document\xFE" signature + if (!WriteFile(hCurrentFile, bySignature[0], 16, &lBytesWritten, NULL)) { - AbortMessage(_T("Could not write into file !")); + AbortMessage(_T("Could not write into document file!")); return FALSE; } @@ -1298,6 +1284,8 @@ BOOL SaveBackup(VOID) { WINDOWPLACEMENT wndpl; + BOOL bSucc = TRUE; + if (!bDocumentAvail) return FALSE; _ASSERT(nState != SM_RUN); // emulation engine is running @@ -1318,27 +1306,41 @@ BOOL SaveBackup(VOID) if (Port0 && Chipset.Port0Size) { BackupPort0 = (LPBYTE) malloc(Chipset.Port0Size*2048); - CopyMemory(BackupPort0,Port0,Chipset.Port0Size*2048); + if (BackupPort0) + { + CopyMemory(BackupPort0,Port0,Chipset.Port0Size*2048); + } + bSucc = bSucc && (BackupPort0 != NULL); } if (Port1 && Chipset.Port1Size) { BackupPort1 = (LPBYTE) malloc(Chipset.Port1Size*2048); - CopyMemory(BackupPort1,Port1,Chipset.Port1Size*2048); + if (BackupPort1) + { + CopyMemory(BackupPort1,Port1,Chipset.Port1Size*2048); + } + bSucc = bSucc && (BackupPort1 != NULL); } if (Port2 && Chipset.Port2Size) // internal port2 { BackupPort2 = (LPBYTE) malloc(Chipset.Port2Size*2048); - CopyMemory(BackupPort2,Port2,Chipset.Port2Size*2048); + if (BackupPort2) + { + CopyMemory(BackupPort2,Port2,Chipset.Port2Size*2048); + } + bSucc = bSucc && (BackupPort2 != NULL); } CreateBackupBreakpointList(); - bBackup = TRUE; - return TRUE; + bBackup = bSucc; + return bSucc; } BOOL RestoreBackup(VOID) { BOOL bDbgOpen; + BOOL bSucc = TRUE; + if (!bBackup) return FALSE; bDbgOpen = (nDbgState != DBG_OFF); // debugger window open? @@ -1365,17 +1367,29 @@ BOOL RestoreBackup(VOID) if (BackupPort0 && Chipset.Port0Size) { Port0 = (LPBYTE) malloc(Chipset.Port0Size*2048); - CopyMemory(Port0,BackupPort0,Chipset.Port0Size*2048); + if (Port0) + { + CopyMemory(Port0,BackupPort0,Chipset.Port0Size*2048); + } + bSucc = bSucc && (Port0 != NULL); } if (BackupPort1 && Chipset.Port1Size) { Port1 = (LPBYTE) malloc(Chipset.Port1Size*2048); - CopyMemory(Port1,BackupPort1,Chipset.Port1Size*2048); + if (Port1) + { + CopyMemory(Port1,BackupPort1,Chipset.Port1Size*2048); + } + bSucc = bSucc && (Port1 != NULL); } if (BackupPort2 && Chipset.Port2Size) // internal port2 { Port2 = (LPBYTE) malloc(Chipset.Port2Size*2048); - CopyMemory(Port2,BackupPort2,Chipset.Port2Size*2048); + if (Port2) + { + CopyMemory(Port2,BackupPort2,Chipset.Port2Size*2048); + } + bSucc = bSucc && (Port2 != NULL); } // map port2 else @@ -1391,8 +1405,12 @@ BOOL RestoreBackup(VOID) SetWindowLocation(hWnd,Chipset.nPosX,Chipset.nPosY); RestoreBackupBreakpointList(); // restore the debugger breakpoint list if (bDbgOpen) OnToolDebug(); // reopen the debugger - bDocumentAvail = TRUE; // document available - return TRUE; + if (!bSucc) // restore not successful (memory allocation errors) + { + ResetDocument(); // cleanup remainders + } + bDocumentAvail = bSucc; // document available + return bSucc; } BOOL ResetBackup(VOID) @@ -2601,7 +2619,6 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) BOOL (*fnColorCmp)(DWORD dwColor1,DWORD dwColor2,DWORD dwTol); DWORD dwRed,dwGreen,dwBlue; - HRGN hRgn; LPRGNDATA pRgnData; LPBITMAPINFO bi; LPBYTE pbyBits; @@ -2613,6 +2630,8 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) BOOL bFoundLeft; BOOL bIsMask; + HRGN hRgn = NULL; // no region defined + if (dwTol >= 1000) // use CIE L*a*b compare { fnColorCmp = LabColorCmp; @@ -2624,7 +2643,10 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) } // allocate memory for extended image information incl. RGBQUAD color table - bi = (LPBITMAPINFO) calloc(1,sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); + if ((bi = (LPBITMAPINFO) calloc(1,sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD))) == NULL) + { + return hRgn; // no region + } bi->bmiHeader.biSize = sizeof(bi->bmiHeader); _ASSERT(bi->bmiHeader.biBitCount == 0); // for query without color table @@ -2643,7 +2665,11 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) } // allocate memory for image data (colors) - pbyBits = (LPBYTE) malloc(bi->bmiHeader.biSizeImage); + if ((pbyBits = (LPBYTE) malloc(bi->bmiHeader.biSizeImage)) == NULL) + { + free(bi); // free bitmap info + return hRgn; // no region + } // fill bits buffer GetDIBits(hWindowDC,hBmp,0,bi->bmiHeader.biHeight,pbyBits,bi,DIB_RGB_COLORS); @@ -2688,18 +2714,20 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) // allocate memory for region data pRgnData = (PRGNDATA) malloc(sizeof(RGNDATAHEADER) + dwRectsCount * sizeof(RECT)); + if (pRgnData) + { + // fill it by default + ZeroMemory(&pRgnData->rdh,sizeof(pRgnData->rdh)); + pRgnData->rdh.dwSize = sizeof(pRgnData->rdh); + pRgnData->rdh.iType = RDH_RECTANGLES; + SetRect(&pRgnData->rdh.rcBound,MAXLONG,MAXLONG,0,0); + } - // fill it by default - ZeroMemory(&pRgnData->rdh,sizeof(pRgnData->rdh)); - pRgnData->rdh.dwSize = sizeof(pRgnData->rdh); - pRgnData->rdh.iType = RDH_RECTANGLES; - SetRect(&pRgnData->rdh.rcBound,MAXLONG,MAXLONG,0,0); - - for (y = 0; y < bi->bmiHeader.biHeight; ++y) + for (y = 0; pRgnData && y < bi->bmiHeader.biHeight; ++y) { LPBYTE pbyLineStart = pbyColor; - for (x = 0; x < bi->bmiHeader.biWidth; ++x) + for (x = 0; pRgnData && x < bi->bmiHeader.biWidth; ++x) { // get color switch (bi->bmiHeader.biBitCount) @@ -2756,9 +2784,19 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) // if buffer full reallocate it with more room if (pRgnData->rdh.nCount >= dwRectsCount) { - dwRectsCount += ADD_RECTS_COUNT; + LPRGNDATA pNewRgnData; - pRgnData = (LPRGNDATA) realloc(pRgnData,sizeof(RGNDATAHEADER) + dwRectsCount * sizeof(RECT)); + dwRectsCount += ADD_RECTS_COUNT; + pNewRgnData = (LPRGNDATA) realloc(pRgnData,sizeof(RGNDATAHEADER) + dwRectsCount * sizeof(RECT)); + if (pNewRgnData) + { + pRgnData = pNewRgnData; + } + else + { + free(pRgnData); + pRgnData = NULL; + } } bFoundLeft = FALSE; @@ -2773,10 +2811,11 @@ HRGN CreateRgnFromBitmap(HBITMAP hBmp,COLORREF color,DWORD dwTol) free(pbyBits); free(bi); - // create region - hRgn = ExtCreateRegion(NULL,sizeof(RGNDATAHEADER) + pRgnData->rdh.nCount * sizeof(RECT),pRgnData); - - free(pRgnData); + if (pRgnData) // has region data, create region + { + hRgn = ExtCreateRegion(NULL,sizeof(RGNDATAHEADER) + pRgnData->rdh.nCount * sizeof(RECT),pRgnData); + free(pRgnData); + } return hRgn; #undef ADD_RECTS_COUNT } diff --git a/Sources/Emu48/KML.C b/Sources/Emu48/KML.C index 6513a20..80b5d1a 100644 --- a/Sources/Emu48/KML.C +++ b/Sources/Emu48/KML.C @@ -165,30 +165,23 @@ static VOID ClearLog() static VOID AddToLog(LPCTSTR szString) { + LPTSTR szLogTmp; + UINT nLength = lstrlen(szString) + 2; // CR+LF - if (szLog == NULL) + if (szLog == NULL) // no log { - nLogLength = nLength + 1; // \0 - szLog = (LPTSTR) malloc(nLogLength*sizeof(szLog[0])); - if (szLog==NULL) - { - nLogLength = 0; - return; - } - lstrcpy(szLog,szString); + nLogLength = 1; // room for \0 } - else + + szLogTmp = (LPTSTR) realloc(szLog,(nLogLength+nLength)*sizeof(szLog[0])); + if (szLogTmp == NULL) { - LPTSTR szLogTmp = (LPTSTR) realloc(szLog,(nLogLength+nLength)*sizeof(szLog[0])); - if (szLogTmp == NULL) - { - ClearLog(); - return; - } - szLog = szLogTmp; - lstrcpy(&szLog[nLogLength-1],szString); - nLogLength += nLength; + ClearLog(); + return; } + szLog = szLogTmp; + lstrcpy(&szLog[nLogLength-1],szString); + nLogLength += nLength; szLog[nLogLength-3] = _T('\r'); szLog[nLogLength-2] = _T('\n'); szLog[nLogLength-1] = 0; @@ -274,11 +267,9 @@ static CHAR cKmlType; static VOID DestroyKmlList(VOID) { - KmlScript* pList; - while (pKmlList) { - pList = pKmlList->pNext; + KmlScript* pList = pKmlList->pNext; free(pKmlList->szFilename); free(pKmlList->szTitle); free(pKmlList); @@ -304,36 +295,45 @@ static VOID CreateKmlList(VOID) KmlScript* pScript; KmlBlock* pBlock; LPCTSTR szTitle; + BOOL bInvalidPlatform; pBlock = LoadKMLGlobal(pFindFileData.cFileName); if (pBlock == NULL) continue; // check for correct KML script platform szTitle = GetStringParam(pBlock,TOK_GLOBAL,TOK_HARDWARE,0); - if (szTitle && lstrcmpi(_T(HARDWARE),szTitle) != 0) - { - FreeBlocks(pBlock); - continue; - } + bInvalidPlatform = (szTitle && lstrcmpi(_T(HARDWARE),szTitle) != 0); // check for supported Model szTitle = GetStringParam(pBlock,TOK_GLOBAL,TOK_MODEL,0); - // skip all scripts with invalid or different Model statement - if ( (szTitle == NULL) + // skip all scripts with invalid platform and invalid or different Model statement + if ( bInvalidPlatform + || (szTitle == NULL) || (cKmlType && szTitle[0] != cKmlType) || !isModelValid(szTitle[0])) { FreeBlocks(pBlock); continue; } - VERIFY(pScript = (KmlScript*) malloc(sizeof(KmlScript))); - pScript->szFilename = DuplicateString(pFindFileData.cFileName); - szTitle = GetStringParam(pBlock,TOK_GLOBAL,TOK_TITLE,0); - if (szTitle == NULL) szTitle = pScript->szFilename; - pScript->szTitle = DuplicateString(szTitle); + pScript = (KmlScript*) malloc(sizeof(KmlScript)); + if (pScript) // script node allocated + { + pScript->szFilename = DuplicateString(pFindFileData.cFileName); + szTitle = GetStringParam(pBlock,TOK_GLOBAL,TOK_TITLE,0); + if (szTitle == NULL) szTitle = pScript->szFilename; + pScript->szTitle = DuplicateString(szTitle); + if (pScript->szFilename == NULL || pScript->szTitle == NULL) + { + free(pScript->szFilename); + free(pScript->szTitle); + free(pScript); + FreeBlocks(pBlock); + continue; + } + pScript->nId = nKmlFiles; + pScript->pNext = pKmlList; + pKmlList = pScript; + nKmlFiles++; + } FreeBlocks(pBlock); - pScript->nId = nKmlFiles; - pScript->pNext = pKmlList; - pKmlList = pScript; - nKmlFiles++; } while (FindNextFile(hFindFile,&pFindFileData)); FindClose(hFindFile); return; @@ -677,20 +677,29 @@ static DWORD ParseInteger(VOID) static LPTSTR ParseString(VOID) { - LPTSTR lpszString; - UINT nLength; - UINT nBlock; + LPTSTR lpszString = NULL; // no mem allocated + UINT nBlock = 0; + UINT nLength = 0; + + LPTSTR lpszAllocString; szText++; // skip leading '"' - nLength = 0; - nBlock = 256; - lpszString = (LPTSTR) malloc(nBlock * sizeof(lpszString[0])); + while (*szText != _T('"')) { - if (nLength == nBlock - 1) // ran out of buffer space + if (nLength >= nBlock) // ran out of buffer space { nBlock += 256; - lpszString = (LPTSTR) realloc(lpszString,nBlock * sizeof(lpszString[0])); + lpszAllocString = (LPTSTR) realloc(lpszString,nBlock * sizeof(lpszString[0])); + if (lpszAllocString) + { + lpszString = lpszAllocString; + } + else + { + free(lpszString); // cleanup allocation failture + return NULL; + } } if (*szText == _T('\\')) // escape char @@ -716,10 +725,17 @@ static LPTSTR ParseString(VOID) lpszString[nLength++] = *szText++; // save char } szText++; // skip ending '"' - lpszString[nLength] = 0; // set EOS - // release unnecessary allocated bytes - return (LPTSTR) realloc(lpszString,(nLength+1) * sizeof(lpszString[0])); + // release unnecessary allocated bytes or allocate byte for EOS + if ((lpszAllocString = (LPTSTR) realloc(lpszString,(nLength+1) * sizeof(lpszString[0])))) + { + lpszAllocString[nLength] = 0; // set EOS + } + else + { + free(lpszString); // cleanup allocation failture + } + return lpszAllocString; } static TokenId Lex(UINT nMode) @@ -767,7 +783,9 @@ static KmlLine* ParseLine(TokenId eCommand) } if (pLexToken[i].nLen == 0) return NULL; - pLine = (KmlLine*) calloc(1,sizeof(KmlLine)); + if ((pLine = (KmlLine*) calloc(1,sizeof(KmlLine))) == NULL) + return NULL; + pLine->eCommand = eCommand; for (j = 0, nParams = pLexToken[i].nParams; TRUE; nParams >>= 3) @@ -946,7 +964,10 @@ static KmlLine* ParseLines(BOOL bInclude) if (pFirst == NULL) // regular exit with empty block { // create an empty line - pLine = pFirst = (KmlLine*) calloc(1,sizeof(KmlLine)); + if ((pFirst = (KmlLine*) calloc(1,sizeof(KmlLine))) == NULL) + goto abort; + + pLine = pFirst; pLine->eCommand = TOK_NONE; } if (pLine) pLine->pNext = NULL; @@ -985,7 +1006,9 @@ static KmlBlock* ParseBlock(BOOL bInclude, TokenId eType) nLinesIncludeLevel = 0; - VERIFY(pBlock = (KmlBlock *) calloc(1,sizeof(KmlBlock))); + if ((pBlock = (KmlBlock *) calloc(1,sizeof(KmlBlock))) == NULL) + return NULL; + pBlock->eType = eType; for (i = 0; pLexToken[i].nLen; ++i) // search for token @@ -1829,7 +1852,7 @@ static VOID AdjustPixel(LPBYTE pbyPixel, BYTE byOffset) { INT i = 3; // BGR colors - while (--i >= 0) + while (--i >= 0) { WORD wColor = (WORD) *pbyPixel + byOffset; // jumpless saturation to 0xFF @@ -2618,6 +2641,11 @@ BOOL InitKML(LPCTSTR szFilename, BOOL bNoLog) AddToLog(_T("This KML Script doesn't specify the ROM to use, or the ROM could not be loaded.")); goto quit; } + if (bRomCrcCorrection) // ROM CRC correction enabled + { + AddToLog(_T("Rebuild the ROM CRC.")); + RebuildRomCrc(); // rebuild the ROM CRC's + } if (hMainDC == NULL) { AddToLog(_T("This KML Script doesn't specify the background bitmap, or bitmap could not be loaded.")); diff --git a/Sources/Emu48/LODEPNG.C b/Sources/Emu48/LODEPNG.C index 9d82e29..2c807ef 100644 --- a/Sources/Emu48/LODEPNG.C +++ b/Sources/Emu48/LODEPNG.C @@ -1,7 +1,7 @@ /* -LodePNG version 20220717 +LodePNG version 20230410 -Copyright (c) 2005-2022 Lode Vandevenne +Copyright (c) 2005-2023 Lode Vandevenne This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -44,7 +44,7 @@ Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for #pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/ #endif /*_MSC_VER */ -const char* LODEPNG_VERSION_STRING = "20220717"; +const char* LODEPNG_VERSION_STRING = "20230410"; /* This source file is divided into the following large parts. The code sections @@ -140,7 +140,6 @@ static size_t lodepng_strlen(const char* a) { #define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b)) #define LODEPNG_MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define LODEPNG_ABS(x) ((x) < 0 ? -(x) : (x)) #if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_DECODER) /* Safely check if adding two integers will overflow (no undefined @@ -2374,54 +2373,328 @@ const LodePNGDecompressSettings lodepng_default_decompress_settings = {0, 0, 0, #ifdef LODEPNG_COMPILE_CRC -/* CRC polynomial: 0xedb88320 */ -static unsigned lodepng_crc32_table[256] = { - 0u, 1996959894u, 3993919788u, 2567524794u, 124634137u, 1886057615u, 3915621685u, 2657392035u, - 249268274u, 2044508324u, 3772115230u, 2547177864u, 162941995u, 2125561021u, 3887607047u, 2428444049u, - 498536548u, 1789927666u, 4089016648u, 2227061214u, 450548861u, 1843258603u, 4107580753u, 2211677639u, - 325883990u, 1684777152u, 4251122042u, 2321926636u, 335633487u, 1661365465u, 4195302755u, 2366115317u, - 997073096u, 1281953886u, 3579855332u, 2724688242u, 1006888145u, 1258607687u, 3524101629u, 2768942443u, - 901097722u, 1119000684u, 3686517206u, 2898065728u, 853044451u, 1172266101u, 3705015759u, 2882616665u, - 651767980u, 1373503546u, 3369554304u, 3218104598u, 565507253u, 1454621731u, 3485111705u, 3099436303u, - 671266974u, 1594198024u, 3322730930u, 2970347812u, 795835527u, 1483230225u, 3244367275u, 3060149565u, - 1994146192u, 31158534u, 2563907772u, 4023717930u, 1907459465u, 112637215u, 2680153253u, 3904427059u, - 2013776290u, 251722036u, 2517215374u, 3775830040u, 2137656763u, 141376813u, 2439277719u, 3865271297u, - 1802195444u, 476864866u, 2238001368u, 4066508878u, 1812370925u, 453092731u, 2181625025u, 4111451223u, - 1706088902u, 314042704u, 2344532202u, 4240017532u, 1658658271u, 366619977u, 2362670323u, 4224994405u, - 1303535960u, 984961486u, 2747007092u, 3569037538u, 1256170817u, 1037604311u, 2765210733u, 3554079995u, - 1131014506u, 879679996u, 2909243462u, 3663771856u, 1141124467u, 855842277u, 2852801631u, 3708648649u, - 1342533948u, 654459306u, 3188396048u, 3373015174u, 1466479909u, 544179635u, 3110523913u, 3462522015u, - 1591671054u, 702138776u, 2966460450u, 3352799412u, 1504918807u, 783551873u, 3082640443u, 3233442989u, - 3988292384u, 2596254646u, 62317068u, 1957810842u, 3939845945u, 2647816111u, 81470997u, 1943803523u, - 3814918930u, 2489596804u, 225274430u, 2053790376u, 3826175755u, 2466906013u, 167816743u, 2097651377u, - 4027552580u, 2265490386u, 503444072u, 1762050814u, 4150417245u, 2154129355u, 426522225u, 1852507879u, - 4275313526u, 2312317920u, 282753626u, 1742555852u, 4189708143u, 2394877945u, 397917763u, 1622183637u, - 3604390888u, 2714866558u, 953729732u, 1340076626u, 3518719985u, 2797360999u, 1068828381u, 1219638859u, - 3624741850u, 2936675148u, 906185462u, 1090812512u, 3747672003u, 2825379669u, 829329135u, 1181335161u, - 3412177804u, 3160834842u, 628085408u, 1382605366u, 3423369109u, 3138078467u, 570562233u, 1426400815u, - 3317316542u, 2998733608u, 733239954u, 1555261956u, 3268935591u, 3050360625u, 752459403u, 1541320221u, - 2607071920u, 3965973030u, 1969922972u, 40735498u, 2617837225u, 3943577151u, 1913087877u, 83908371u, - 2512341634u, 3803740692u, 2075208622u, 213261112u, 2463272603u, 3855990285u, 2094854071u, 198958881u, - 2262029012u, 4057260610u, 1759359992u, 534414190u, 2176718541u, 4139329115u, 1873836001u, 414664567u, - 2282248934u, 4279200368u, 1711684554u, 285281116u, 2405801727u, 4167216745u, 1634467795u, 376229701u, - 2685067896u, 3608007406u, 1308918612u, 956543938u, 2808555105u, 3495958263u, 1231636301u, 1047427035u, - 2932959818u, 3654703836u, 1088359270u, 936918000u, 2847714899u, 3736837829u, 1202900863u, 817233897u, - 3183342108u, 3401237130u, 1404277552u, 615818150u, 3134207493u, 3453421203u, 1423857449u, 601450431u, - 3009837614u, 3294710456u, 1567103746u, 711928724u, 3020668471u, 3272380065u, 1510334235u, 755167117u + +static const unsigned lodepng_crc32_table0[256] = { + 0x00000000u, 0x77073096u, 0xee0e612cu, 0x990951bau, 0x076dc419u, 0x706af48fu, 0xe963a535u, 0x9e6495a3u, + 0x0edb8832u, 0x79dcb8a4u, 0xe0d5e91eu, 0x97d2d988u, 0x09b64c2bu, 0x7eb17cbdu, 0xe7b82d07u, 0x90bf1d91u, + 0x1db71064u, 0x6ab020f2u, 0xf3b97148u, 0x84be41deu, 0x1adad47du, 0x6ddde4ebu, 0xf4d4b551u, 0x83d385c7u, + 0x136c9856u, 0x646ba8c0u, 0xfd62f97au, 0x8a65c9ecu, 0x14015c4fu, 0x63066cd9u, 0xfa0f3d63u, 0x8d080df5u, + 0x3b6e20c8u, 0x4c69105eu, 0xd56041e4u, 0xa2677172u, 0x3c03e4d1u, 0x4b04d447u, 0xd20d85fdu, 0xa50ab56bu, + 0x35b5a8fau, 0x42b2986cu, 0xdbbbc9d6u, 0xacbcf940u, 0x32d86ce3u, 0x45df5c75u, 0xdcd60dcfu, 0xabd13d59u, + 0x26d930acu, 0x51de003au, 0xc8d75180u, 0xbfd06116u, 0x21b4f4b5u, 0x56b3c423u, 0xcfba9599u, 0xb8bda50fu, + 0x2802b89eu, 0x5f058808u, 0xc60cd9b2u, 0xb10be924u, 0x2f6f7c87u, 0x58684c11u, 0xc1611dabu, 0xb6662d3du, + 0x76dc4190u, 0x01db7106u, 0x98d220bcu, 0xefd5102au, 0x71b18589u, 0x06b6b51fu, 0x9fbfe4a5u, 0xe8b8d433u, + 0x7807c9a2u, 0x0f00f934u, 0x9609a88eu, 0xe10e9818u, 0x7f6a0dbbu, 0x086d3d2du, 0x91646c97u, 0xe6635c01u, + 0x6b6b51f4u, 0x1c6c6162u, 0x856530d8u, 0xf262004eu, 0x6c0695edu, 0x1b01a57bu, 0x8208f4c1u, 0xf50fc457u, + 0x65b0d9c6u, 0x12b7e950u, 0x8bbeb8eau, 0xfcb9887cu, 0x62dd1ddfu, 0x15da2d49u, 0x8cd37cf3u, 0xfbd44c65u, + 0x4db26158u, 0x3ab551ceu, 0xa3bc0074u, 0xd4bb30e2u, 0x4adfa541u, 0x3dd895d7u, 0xa4d1c46du, 0xd3d6f4fbu, + 0x4369e96au, 0x346ed9fcu, 0xad678846u, 0xda60b8d0u, 0x44042d73u, 0x33031de5u, 0xaa0a4c5fu, 0xdd0d7cc9u, + 0x5005713cu, 0x270241aau, 0xbe0b1010u, 0xc90c2086u, 0x5768b525u, 0x206f85b3u, 0xb966d409u, 0xce61e49fu, + 0x5edef90eu, 0x29d9c998u, 0xb0d09822u, 0xc7d7a8b4u, 0x59b33d17u, 0x2eb40d81u, 0xb7bd5c3bu, 0xc0ba6cadu, + 0xedb88320u, 0x9abfb3b6u, 0x03b6e20cu, 0x74b1d29au, 0xead54739u, 0x9dd277afu, 0x04db2615u, 0x73dc1683u, + 0xe3630b12u, 0x94643b84u, 0x0d6d6a3eu, 0x7a6a5aa8u, 0xe40ecf0bu, 0x9309ff9du, 0x0a00ae27u, 0x7d079eb1u, + 0xf00f9344u, 0x8708a3d2u, 0x1e01f268u, 0x6906c2feu, 0xf762575du, 0x806567cbu, 0x196c3671u, 0x6e6b06e7u, + 0xfed41b76u, 0x89d32be0u, 0x10da7a5au, 0x67dd4accu, 0xf9b9df6fu, 0x8ebeeff9u, 0x17b7be43u, 0x60b08ed5u, + 0xd6d6a3e8u, 0xa1d1937eu, 0x38d8c2c4u, 0x4fdff252u, 0xd1bb67f1u, 0xa6bc5767u, 0x3fb506ddu, 0x48b2364bu, + 0xd80d2bdau, 0xaf0a1b4cu, 0x36034af6u, 0x41047a60u, 0xdf60efc3u, 0xa867df55u, 0x316e8eefu, 0x4669be79u, + 0xcb61b38cu, 0xbc66831au, 0x256fd2a0u, 0x5268e236u, 0xcc0c7795u, 0xbb0b4703u, 0x220216b9u, 0x5505262fu, + 0xc5ba3bbeu, 0xb2bd0b28u, 0x2bb45a92u, 0x5cb36a04u, 0xc2d7ffa7u, 0xb5d0cf31u, 0x2cd99e8bu, 0x5bdeae1du, + 0x9b64c2b0u, 0xec63f226u, 0x756aa39cu, 0x026d930au, 0x9c0906a9u, 0xeb0e363fu, 0x72076785u, 0x05005713u, + 0x95bf4a82u, 0xe2b87a14u, 0x7bb12baeu, 0x0cb61b38u, 0x92d28e9bu, 0xe5d5be0du, 0x7cdcefb7u, 0x0bdbdf21u, + 0x86d3d2d4u, 0xf1d4e242u, 0x68ddb3f8u, 0x1fda836eu, 0x81be16cdu, 0xf6b9265bu, 0x6fb077e1u, 0x18b74777u, + 0x88085ae6u, 0xff0f6a70u, 0x66063bcau, 0x11010b5cu, 0x8f659effu, 0xf862ae69u, 0x616bffd3u, 0x166ccf45u, + 0xa00ae278u, 0xd70dd2eeu, 0x4e048354u, 0x3903b3c2u, 0xa7672661u, 0xd06016f7u, 0x4969474du, 0x3e6e77dbu, + 0xaed16a4au, 0xd9d65adcu, 0x40df0b66u, 0x37d83bf0u, 0xa9bcae53u, 0xdebb9ec5u, 0x47b2cf7fu, 0x30b5ffe9u, + 0xbdbdf21cu, 0xcabac28au, 0x53b39330u, 0x24b4a3a6u, 0xbad03605u, 0xcdd70693u, 0x54de5729u, 0x23d967bfu, + 0xb3667a2eu, 0xc4614ab8u, 0x5d681b02u, 0x2a6f2b94u, 0xb40bbe37u, 0xc30c8ea1u, 0x5a05df1bu, 0x2d02ef8du }; -/*Return the CRC of the bytes buf[0..len-1].*/ +static const unsigned lodepng_crc32_table1[256] = { + 0x00000000u, 0x191b3141u, 0x32366282u, 0x2b2d53c3u, 0x646cc504u, 0x7d77f445u, 0x565aa786u, 0x4f4196c7u, + 0xc8d98a08u, 0xd1c2bb49u, 0xfaefe88au, 0xe3f4d9cbu, 0xacb54f0cu, 0xb5ae7e4du, 0x9e832d8eu, 0x87981ccfu, + 0x4ac21251u, 0x53d92310u, 0x78f470d3u, 0x61ef4192u, 0x2eaed755u, 0x37b5e614u, 0x1c98b5d7u, 0x05838496u, + 0x821b9859u, 0x9b00a918u, 0xb02dfadbu, 0xa936cb9au, 0xe6775d5du, 0xff6c6c1cu, 0xd4413fdfu, 0xcd5a0e9eu, + 0x958424a2u, 0x8c9f15e3u, 0xa7b24620u, 0xbea97761u, 0xf1e8e1a6u, 0xe8f3d0e7u, 0xc3de8324u, 0xdac5b265u, + 0x5d5daeaau, 0x44469febu, 0x6f6bcc28u, 0x7670fd69u, 0x39316baeu, 0x202a5aefu, 0x0b07092cu, 0x121c386du, + 0xdf4636f3u, 0xc65d07b2u, 0xed705471u, 0xf46b6530u, 0xbb2af3f7u, 0xa231c2b6u, 0x891c9175u, 0x9007a034u, + 0x179fbcfbu, 0x0e848dbau, 0x25a9de79u, 0x3cb2ef38u, 0x73f379ffu, 0x6ae848beu, 0x41c51b7du, 0x58de2a3cu, + 0xf0794f05u, 0xe9627e44u, 0xc24f2d87u, 0xdb541cc6u, 0x94158a01u, 0x8d0ebb40u, 0xa623e883u, 0xbf38d9c2u, + 0x38a0c50du, 0x21bbf44cu, 0x0a96a78fu, 0x138d96ceu, 0x5ccc0009u, 0x45d73148u, 0x6efa628bu, 0x77e153cau, + 0xbabb5d54u, 0xa3a06c15u, 0x888d3fd6u, 0x91960e97u, 0xded79850u, 0xc7cca911u, 0xece1fad2u, 0xf5facb93u, + 0x7262d75cu, 0x6b79e61du, 0x4054b5deu, 0x594f849fu, 0x160e1258u, 0x0f152319u, 0x243870dau, 0x3d23419bu, + 0x65fd6ba7u, 0x7ce65ae6u, 0x57cb0925u, 0x4ed03864u, 0x0191aea3u, 0x188a9fe2u, 0x33a7cc21u, 0x2abcfd60u, + 0xad24e1afu, 0xb43fd0eeu, 0x9f12832du, 0x8609b26cu, 0xc94824abu, 0xd05315eau, 0xfb7e4629u, 0xe2657768u, + 0x2f3f79f6u, 0x362448b7u, 0x1d091b74u, 0x04122a35u, 0x4b53bcf2u, 0x52488db3u, 0x7965de70u, 0x607eef31u, + 0xe7e6f3feu, 0xfefdc2bfu, 0xd5d0917cu, 0xcccba03du, 0x838a36fau, 0x9a9107bbu, 0xb1bc5478u, 0xa8a76539u, + 0x3b83984bu, 0x2298a90au, 0x09b5fac9u, 0x10aecb88u, 0x5fef5d4fu, 0x46f46c0eu, 0x6dd93fcdu, 0x74c20e8cu, + 0xf35a1243u, 0xea412302u, 0xc16c70c1u, 0xd8774180u, 0x9736d747u, 0x8e2de606u, 0xa500b5c5u, 0xbc1b8484u, + 0x71418a1au, 0x685abb5bu, 0x4377e898u, 0x5a6cd9d9u, 0x152d4f1eu, 0x0c367e5fu, 0x271b2d9cu, 0x3e001cddu, + 0xb9980012u, 0xa0833153u, 0x8bae6290u, 0x92b553d1u, 0xddf4c516u, 0xc4eff457u, 0xefc2a794u, 0xf6d996d5u, + 0xae07bce9u, 0xb71c8da8u, 0x9c31de6bu, 0x852aef2au, 0xca6b79edu, 0xd37048acu, 0xf85d1b6fu, 0xe1462a2eu, + 0x66de36e1u, 0x7fc507a0u, 0x54e85463u, 0x4df36522u, 0x02b2f3e5u, 0x1ba9c2a4u, 0x30849167u, 0x299fa026u, + 0xe4c5aeb8u, 0xfdde9ff9u, 0xd6f3cc3au, 0xcfe8fd7bu, 0x80a96bbcu, 0x99b25afdu, 0xb29f093eu, 0xab84387fu, + 0x2c1c24b0u, 0x350715f1u, 0x1e2a4632u, 0x07317773u, 0x4870e1b4u, 0x516bd0f5u, 0x7a468336u, 0x635db277u, + 0xcbfad74eu, 0xd2e1e60fu, 0xf9ccb5ccu, 0xe0d7848du, 0xaf96124au, 0xb68d230bu, 0x9da070c8u, 0x84bb4189u, + 0x03235d46u, 0x1a386c07u, 0x31153fc4u, 0x280e0e85u, 0x674f9842u, 0x7e54a903u, 0x5579fac0u, 0x4c62cb81u, + 0x8138c51fu, 0x9823f45eu, 0xb30ea79du, 0xaa1596dcu, 0xe554001bu, 0xfc4f315au, 0xd7626299u, 0xce7953d8u, + 0x49e14f17u, 0x50fa7e56u, 0x7bd72d95u, 0x62cc1cd4u, 0x2d8d8a13u, 0x3496bb52u, 0x1fbbe891u, 0x06a0d9d0u, + 0x5e7ef3ecu, 0x4765c2adu, 0x6c48916eu, 0x7553a02fu, 0x3a1236e8u, 0x230907a9u, 0x0824546au, 0x113f652bu, + 0x96a779e4u, 0x8fbc48a5u, 0xa4911b66u, 0xbd8a2a27u, 0xf2cbbce0u, 0xebd08da1u, 0xc0fdde62u, 0xd9e6ef23u, + 0x14bce1bdu, 0x0da7d0fcu, 0x268a833fu, 0x3f91b27eu, 0x70d024b9u, 0x69cb15f8u, 0x42e6463bu, 0x5bfd777au, + 0xdc656bb5u, 0xc57e5af4u, 0xee530937u, 0xf7483876u, 0xb809aeb1u, 0xa1129ff0u, 0x8a3fcc33u, 0x9324fd72u +}; + +static const unsigned lodepng_crc32_table2[256] = { + 0x00000000u, 0x01c26a37u, 0x0384d46eu, 0x0246be59u, 0x0709a8dcu, 0x06cbc2ebu, 0x048d7cb2u, 0x054f1685u, + 0x0e1351b8u, 0x0fd13b8fu, 0x0d9785d6u, 0x0c55efe1u, 0x091af964u, 0x08d89353u, 0x0a9e2d0au, 0x0b5c473du, + 0x1c26a370u, 0x1de4c947u, 0x1fa2771eu, 0x1e601d29u, 0x1b2f0bacu, 0x1aed619bu, 0x18abdfc2u, 0x1969b5f5u, + 0x1235f2c8u, 0x13f798ffu, 0x11b126a6u, 0x10734c91u, 0x153c5a14u, 0x14fe3023u, 0x16b88e7au, 0x177ae44du, + 0x384d46e0u, 0x398f2cd7u, 0x3bc9928eu, 0x3a0bf8b9u, 0x3f44ee3cu, 0x3e86840bu, 0x3cc03a52u, 0x3d025065u, + 0x365e1758u, 0x379c7d6fu, 0x35dac336u, 0x3418a901u, 0x3157bf84u, 0x3095d5b3u, 0x32d36beau, 0x331101ddu, + 0x246be590u, 0x25a98fa7u, 0x27ef31feu, 0x262d5bc9u, 0x23624d4cu, 0x22a0277bu, 0x20e69922u, 0x2124f315u, + 0x2a78b428u, 0x2bbade1fu, 0x29fc6046u, 0x283e0a71u, 0x2d711cf4u, 0x2cb376c3u, 0x2ef5c89au, 0x2f37a2adu, + 0x709a8dc0u, 0x7158e7f7u, 0x731e59aeu, 0x72dc3399u, 0x7793251cu, 0x76514f2bu, 0x7417f172u, 0x75d59b45u, + 0x7e89dc78u, 0x7f4bb64fu, 0x7d0d0816u, 0x7ccf6221u, 0x798074a4u, 0x78421e93u, 0x7a04a0cau, 0x7bc6cafdu, + 0x6cbc2eb0u, 0x6d7e4487u, 0x6f38fadeu, 0x6efa90e9u, 0x6bb5866cu, 0x6a77ec5bu, 0x68315202u, 0x69f33835u, + 0x62af7f08u, 0x636d153fu, 0x612bab66u, 0x60e9c151u, 0x65a6d7d4u, 0x6464bde3u, 0x662203bau, 0x67e0698du, + 0x48d7cb20u, 0x4915a117u, 0x4b531f4eu, 0x4a917579u, 0x4fde63fcu, 0x4e1c09cbu, 0x4c5ab792u, 0x4d98dda5u, + 0x46c49a98u, 0x4706f0afu, 0x45404ef6u, 0x448224c1u, 0x41cd3244u, 0x400f5873u, 0x4249e62au, 0x438b8c1du, + 0x54f16850u, 0x55330267u, 0x5775bc3eu, 0x56b7d609u, 0x53f8c08cu, 0x523aaabbu, 0x507c14e2u, 0x51be7ed5u, + 0x5ae239e8u, 0x5b2053dfu, 0x5966ed86u, 0x58a487b1u, 0x5deb9134u, 0x5c29fb03u, 0x5e6f455au, 0x5fad2f6du, + 0xe1351b80u, 0xe0f771b7u, 0xe2b1cfeeu, 0xe373a5d9u, 0xe63cb35cu, 0xe7fed96bu, 0xe5b86732u, 0xe47a0d05u, + 0xef264a38u, 0xeee4200fu, 0xeca29e56u, 0xed60f461u, 0xe82fe2e4u, 0xe9ed88d3u, 0xebab368au, 0xea695cbdu, + 0xfd13b8f0u, 0xfcd1d2c7u, 0xfe976c9eu, 0xff5506a9u, 0xfa1a102cu, 0xfbd87a1bu, 0xf99ec442u, 0xf85cae75u, + 0xf300e948u, 0xf2c2837fu, 0xf0843d26u, 0xf1465711u, 0xf4094194u, 0xf5cb2ba3u, 0xf78d95fau, 0xf64fffcdu, + 0xd9785d60u, 0xd8ba3757u, 0xdafc890eu, 0xdb3ee339u, 0xde71f5bcu, 0xdfb39f8bu, 0xddf521d2u, 0xdc374be5u, + 0xd76b0cd8u, 0xd6a966efu, 0xd4efd8b6u, 0xd52db281u, 0xd062a404u, 0xd1a0ce33u, 0xd3e6706au, 0xd2241a5du, + 0xc55efe10u, 0xc49c9427u, 0xc6da2a7eu, 0xc7184049u, 0xc25756ccu, 0xc3953cfbu, 0xc1d382a2u, 0xc011e895u, + 0xcb4dafa8u, 0xca8fc59fu, 0xc8c97bc6u, 0xc90b11f1u, 0xcc440774u, 0xcd866d43u, 0xcfc0d31au, 0xce02b92du, + 0x91af9640u, 0x906dfc77u, 0x922b422eu, 0x93e92819u, 0x96a63e9cu, 0x976454abu, 0x9522eaf2u, 0x94e080c5u, + 0x9fbcc7f8u, 0x9e7eadcfu, 0x9c381396u, 0x9dfa79a1u, 0x98b56f24u, 0x99770513u, 0x9b31bb4au, 0x9af3d17du, + 0x8d893530u, 0x8c4b5f07u, 0x8e0de15eu, 0x8fcf8b69u, 0x8a809decu, 0x8b42f7dbu, 0x89044982u, 0x88c623b5u, + 0x839a6488u, 0x82580ebfu, 0x801eb0e6u, 0x81dcdad1u, 0x8493cc54u, 0x8551a663u, 0x8717183au, 0x86d5720du, + 0xa9e2d0a0u, 0xa820ba97u, 0xaa6604ceu, 0xaba46ef9u, 0xaeeb787cu, 0xaf29124bu, 0xad6fac12u, 0xacadc625u, + 0xa7f18118u, 0xa633eb2fu, 0xa4755576u, 0xa5b73f41u, 0xa0f829c4u, 0xa13a43f3u, 0xa37cfdaau, 0xa2be979du, + 0xb5c473d0u, 0xb40619e7u, 0xb640a7beu, 0xb782cd89u, 0xb2cddb0cu, 0xb30fb13bu, 0xb1490f62u, 0xb08b6555u, + 0xbbd72268u, 0xba15485fu, 0xb853f606u, 0xb9919c31u, 0xbcde8ab4u, 0xbd1ce083u, 0xbf5a5edau, 0xbe9834edu +}; + +static const unsigned lodepng_crc32_table3[256] = { + 0x00000000u, 0xb8bc6765u, 0xaa09c88bu, 0x12b5afeeu, 0x8f629757u, 0x37def032u, 0x256b5fdcu, 0x9dd738b9u, + 0xc5b428efu, 0x7d084f8au, 0x6fbde064u, 0xd7018701u, 0x4ad6bfb8u, 0xf26ad8ddu, 0xe0df7733u, 0x58631056u, + 0x5019579fu, 0xe8a530fau, 0xfa109f14u, 0x42acf871u, 0xdf7bc0c8u, 0x67c7a7adu, 0x75720843u, 0xcdce6f26u, + 0x95ad7f70u, 0x2d111815u, 0x3fa4b7fbu, 0x8718d09eu, 0x1acfe827u, 0xa2738f42u, 0xb0c620acu, 0x087a47c9u, + 0xa032af3eu, 0x188ec85bu, 0x0a3b67b5u, 0xb28700d0u, 0x2f503869u, 0x97ec5f0cu, 0x8559f0e2u, 0x3de59787u, + 0x658687d1u, 0xdd3ae0b4u, 0xcf8f4f5au, 0x7733283fu, 0xeae41086u, 0x525877e3u, 0x40edd80du, 0xf851bf68u, + 0xf02bf8a1u, 0x48979fc4u, 0x5a22302au, 0xe29e574fu, 0x7f496ff6u, 0xc7f50893u, 0xd540a77du, 0x6dfcc018u, + 0x359fd04eu, 0x8d23b72bu, 0x9f9618c5u, 0x272a7fa0u, 0xbafd4719u, 0x0241207cu, 0x10f48f92u, 0xa848e8f7u, + 0x9b14583du, 0x23a83f58u, 0x311d90b6u, 0x89a1f7d3u, 0x1476cf6au, 0xaccaa80fu, 0xbe7f07e1u, 0x06c36084u, + 0x5ea070d2u, 0xe61c17b7u, 0xf4a9b859u, 0x4c15df3cu, 0xd1c2e785u, 0x697e80e0u, 0x7bcb2f0eu, 0xc377486bu, + 0xcb0d0fa2u, 0x73b168c7u, 0x6104c729u, 0xd9b8a04cu, 0x446f98f5u, 0xfcd3ff90u, 0xee66507eu, 0x56da371bu, + 0x0eb9274du, 0xb6054028u, 0xa4b0efc6u, 0x1c0c88a3u, 0x81dbb01au, 0x3967d77fu, 0x2bd27891u, 0x936e1ff4u, + 0x3b26f703u, 0x839a9066u, 0x912f3f88u, 0x299358edu, 0xb4446054u, 0x0cf80731u, 0x1e4da8dfu, 0xa6f1cfbau, + 0xfe92dfecu, 0x462eb889u, 0x549b1767u, 0xec277002u, 0x71f048bbu, 0xc94c2fdeu, 0xdbf98030u, 0x6345e755u, + 0x6b3fa09cu, 0xd383c7f9u, 0xc1366817u, 0x798a0f72u, 0xe45d37cbu, 0x5ce150aeu, 0x4e54ff40u, 0xf6e89825u, + 0xae8b8873u, 0x1637ef16u, 0x048240f8u, 0xbc3e279du, 0x21e91f24u, 0x99557841u, 0x8be0d7afu, 0x335cb0cau, + 0xed59b63bu, 0x55e5d15eu, 0x47507eb0u, 0xffec19d5u, 0x623b216cu, 0xda874609u, 0xc832e9e7u, 0x708e8e82u, + 0x28ed9ed4u, 0x9051f9b1u, 0x82e4565fu, 0x3a58313au, 0xa78f0983u, 0x1f336ee6u, 0x0d86c108u, 0xb53aa66du, + 0xbd40e1a4u, 0x05fc86c1u, 0x1749292fu, 0xaff54e4au, 0x322276f3u, 0x8a9e1196u, 0x982bbe78u, 0x2097d91du, + 0x78f4c94bu, 0xc048ae2eu, 0xd2fd01c0u, 0x6a4166a5u, 0xf7965e1cu, 0x4f2a3979u, 0x5d9f9697u, 0xe523f1f2u, + 0x4d6b1905u, 0xf5d77e60u, 0xe762d18eu, 0x5fdeb6ebu, 0xc2098e52u, 0x7ab5e937u, 0x680046d9u, 0xd0bc21bcu, + 0x88df31eau, 0x3063568fu, 0x22d6f961u, 0x9a6a9e04u, 0x07bda6bdu, 0xbf01c1d8u, 0xadb46e36u, 0x15080953u, + 0x1d724e9au, 0xa5ce29ffu, 0xb77b8611u, 0x0fc7e174u, 0x9210d9cdu, 0x2aacbea8u, 0x38191146u, 0x80a57623u, + 0xd8c66675u, 0x607a0110u, 0x72cfaefeu, 0xca73c99bu, 0x57a4f122u, 0xef189647u, 0xfdad39a9u, 0x45115eccu, + 0x764dee06u, 0xcef18963u, 0xdc44268du, 0x64f841e8u, 0xf92f7951u, 0x41931e34u, 0x5326b1dau, 0xeb9ad6bfu, + 0xb3f9c6e9u, 0x0b45a18cu, 0x19f00e62u, 0xa14c6907u, 0x3c9b51beu, 0x842736dbu, 0x96929935u, 0x2e2efe50u, + 0x2654b999u, 0x9ee8defcu, 0x8c5d7112u, 0x34e11677u, 0xa9362eceu, 0x118a49abu, 0x033fe645u, 0xbb838120u, + 0xe3e09176u, 0x5b5cf613u, 0x49e959fdu, 0xf1553e98u, 0x6c820621u, 0xd43e6144u, 0xc68bceaau, 0x7e37a9cfu, + 0xd67f4138u, 0x6ec3265du, 0x7c7689b3u, 0xc4caeed6u, 0x591dd66fu, 0xe1a1b10au, 0xf3141ee4u, 0x4ba87981u, + 0x13cb69d7u, 0xab770eb2u, 0xb9c2a15cu, 0x017ec639u, 0x9ca9fe80u, 0x241599e5u, 0x36a0360bu, 0x8e1c516eu, + 0x866616a7u, 0x3eda71c2u, 0x2c6fde2cu, 0x94d3b949u, 0x090481f0u, 0xb1b8e695u, 0xa30d497bu, 0x1bb12e1eu, + 0x43d23e48u, 0xfb6e592du, 0xe9dbf6c3u, 0x516791a6u, 0xccb0a91fu, 0x740cce7au, 0x66b96194u, 0xde0506f1u +}; + +static const unsigned lodepng_crc32_table4[256] = { + 0x00000000u, 0x3d6029b0u, 0x7ac05360u, 0x47a07ad0u, 0xf580a6c0u, 0xc8e08f70u, 0x8f40f5a0u, 0xb220dc10u, + 0x30704bc1u, 0x0d106271u, 0x4ab018a1u, 0x77d03111u, 0xc5f0ed01u, 0xf890c4b1u, 0xbf30be61u, 0x825097d1u, + 0x60e09782u, 0x5d80be32u, 0x1a20c4e2u, 0x2740ed52u, 0x95603142u, 0xa80018f2u, 0xefa06222u, 0xd2c04b92u, + 0x5090dc43u, 0x6df0f5f3u, 0x2a508f23u, 0x1730a693u, 0xa5107a83u, 0x98705333u, 0xdfd029e3u, 0xe2b00053u, + 0xc1c12f04u, 0xfca106b4u, 0xbb017c64u, 0x866155d4u, 0x344189c4u, 0x0921a074u, 0x4e81daa4u, 0x73e1f314u, + 0xf1b164c5u, 0xccd14d75u, 0x8b7137a5u, 0xb6111e15u, 0x0431c205u, 0x3951ebb5u, 0x7ef19165u, 0x4391b8d5u, + 0xa121b886u, 0x9c419136u, 0xdbe1ebe6u, 0xe681c256u, 0x54a11e46u, 0x69c137f6u, 0x2e614d26u, 0x13016496u, + 0x9151f347u, 0xac31daf7u, 0xeb91a027u, 0xd6f18997u, 0x64d15587u, 0x59b17c37u, 0x1e1106e7u, 0x23712f57u, + 0x58f35849u, 0x659371f9u, 0x22330b29u, 0x1f532299u, 0xad73fe89u, 0x9013d739u, 0xd7b3ade9u, 0xead38459u, + 0x68831388u, 0x55e33a38u, 0x124340e8u, 0x2f236958u, 0x9d03b548u, 0xa0639cf8u, 0xe7c3e628u, 0xdaa3cf98u, + 0x3813cfcbu, 0x0573e67bu, 0x42d39cabu, 0x7fb3b51bu, 0xcd93690bu, 0xf0f340bbu, 0xb7533a6bu, 0x8a3313dbu, + 0x0863840au, 0x3503adbau, 0x72a3d76au, 0x4fc3fedau, 0xfde322cau, 0xc0830b7au, 0x872371aau, 0xba43581au, + 0x9932774du, 0xa4525efdu, 0xe3f2242du, 0xde920d9du, 0x6cb2d18du, 0x51d2f83du, 0x167282edu, 0x2b12ab5du, + 0xa9423c8cu, 0x9422153cu, 0xd3826fecu, 0xeee2465cu, 0x5cc29a4cu, 0x61a2b3fcu, 0x2602c92cu, 0x1b62e09cu, + 0xf9d2e0cfu, 0xc4b2c97fu, 0x8312b3afu, 0xbe729a1fu, 0x0c52460fu, 0x31326fbfu, 0x7692156fu, 0x4bf23cdfu, + 0xc9a2ab0eu, 0xf4c282beu, 0xb362f86eu, 0x8e02d1deu, 0x3c220dceu, 0x0142247eu, 0x46e25eaeu, 0x7b82771eu, + 0xb1e6b092u, 0x8c869922u, 0xcb26e3f2u, 0xf646ca42u, 0x44661652u, 0x79063fe2u, 0x3ea64532u, 0x03c66c82u, + 0x8196fb53u, 0xbcf6d2e3u, 0xfb56a833u, 0xc6368183u, 0x74165d93u, 0x49767423u, 0x0ed60ef3u, 0x33b62743u, + 0xd1062710u, 0xec660ea0u, 0xabc67470u, 0x96a65dc0u, 0x248681d0u, 0x19e6a860u, 0x5e46d2b0u, 0x6326fb00u, + 0xe1766cd1u, 0xdc164561u, 0x9bb63fb1u, 0xa6d61601u, 0x14f6ca11u, 0x2996e3a1u, 0x6e369971u, 0x5356b0c1u, + 0x70279f96u, 0x4d47b626u, 0x0ae7ccf6u, 0x3787e546u, 0x85a73956u, 0xb8c710e6u, 0xff676a36u, 0xc2074386u, + 0x4057d457u, 0x7d37fde7u, 0x3a978737u, 0x07f7ae87u, 0xb5d77297u, 0x88b75b27u, 0xcf1721f7u, 0xf2770847u, + 0x10c70814u, 0x2da721a4u, 0x6a075b74u, 0x576772c4u, 0xe547aed4u, 0xd8278764u, 0x9f87fdb4u, 0xa2e7d404u, + 0x20b743d5u, 0x1dd76a65u, 0x5a7710b5u, 0x67173905u, 0xd537e515u, 0xe857cca5u, 0xaff7b675u, 0x92979fc5u, + 0xe915e8dbu, 0xd475c16bu, 0x93d5bbbbu, 0xaeb5920bu, 0x1c954e1bu, 0x21f567abu, 0x66551d7bu, 0x5b3534cbu, + 0xd965a31au, 0xe4058aaau, 0xa3a5f07au, 0x9ec5d9cau, 0x2ce505dau, 0x11852c6au, 0x562556bau, 0x6b457f0au, + 0x89f57f59u, 0xb49556e9u, 0xf3352c39u, 0xce550589u, 0x7c75d999u, 0x4115f029u, 0x06b58af9u, 0x3bd5a349u, + 0xb9853498u, 0x84e51d28u, 0xc34567f8u, 0xfe254e48u, 0x4c059258u, 0x7165bbe8u, 0x36c5c138u, 0x0ba5e888u, + 0x28d4c7dfu, 0x15b4ee6fu, 0x521494bfu, 0x6f74bd0fu, 0xdd54611fu, 0xe03448afu, 0xa794327fu, 0x9af41bcfu, + 0x18a48c1eu, 0x25c4a5aeu, 0x6264df7eu, 0x5f04f6ceu, 0xed242adeu, 0xd044036eu, 0x97e479beu, 0xaa84500eu, + 0x4834505du, 0x755479edu, 0x32f4033du, 0x0f942a8du, 0xbdb4f69du, 0x80d4df2du, 0xc774a5fdu, 0xfa148c4du, + 0x78441b9cu, 0x4524322cu, 0x028448fcu, 0x3fe4614cu, 0x8dc4bd5cu, 0xb0a494ecu, 0xf704ee3cu, 0xca64c78cu +}; + +static const unsigned lodepng_crc32_table5[256] = { + 0x00000000u, 0xcb5cd3a5u, 0x4dc8a10bu, 0x869472aeu, 0x9b914216u, 0x50cd91b3u, 0xd659e31du, 0x1d0530b8u, + 0xec53826du, 0x270f51c8u, 0xa19b2366u, 0x6ac7f0c3u, 0x77c2c07bu, 0xbc9e13deu, 0x3a0a6170u, 0xf156b2d5u, + 0x03d6029bu, 0xc88ad13eu, 0x4e1ea390u, 0x85427035u, 0x9847408du, 0x531b9328u, 0xd58fe186u, 0x1ed33223u, + 0xef8580f6u, 0x24d95353u, 0xa24d21fdu, 0x6911f258u, 0x7414c2e0u, 0xbf481145u, 0x39dc63ebu, 0xf280b04eu, + 0x07ac0536u, 0xccf0d693u, 0x4a64a43du, 0x81387798u, 0x9c3d4720u, 0x57619485u, 0xd1f5e62bu, 0x1aa9358eu, + 0xebff875bu, 0x20a354feu, 0xa6372650u, 0x6d6bf5f5u, 0x706ec54du, 0xbb3216e8u, 0x3da66446u, 0xf6fab7e3u, + 0x047a07adu, 0xcf26d408u, 0x49b2a6a6u, 0x82ee7503u, 0x9feb45bbu, 0x54b7961eu, 0xd223e4b0u, 0x197f3715u, + 0xe82985c0u, 0x23755665u, 0xa5e124cbu, 0x6ebdf76eu, 0x73b8c7d6u, 0xb8e41473u, 0x3e7066ddu, 0xf52cb578u, + 0x0f580a6cu, 0xc404d9c9u, 0x4290ab67u, 0x89cc78c2u, 0x94c9487au, 0x5f959bdfu, 0xd901e971u, 0x125d3ad4u, + 0xe30b8801u, 0x28575ba4u, 0xaec3290au, 0x659ffaafu, 0x789aca17u, 0xb3c619b2u, 0x35526b1cu, 0xfe0eb8b9u, + 0x0c8e08f7u, 0xc7d2db52u, 0x4146a9fcu, 0x8a1a7a59u, 0x971f4ae1u, 0x5c439944u, 0xdad7ebeau, 0x118b384fu, + 0xe0dd8a9au, 0x2b81593fu, 0xad152b91u, 0x6649f834u, 0x7b4cc88cu, 0xb0101b29u, 0x36846987u, 0xfdd8ba22u, + 0x08f40f5au, 0xc3a8dcffu, 0x453cae51u, 0x8e607df4u, 0x93654d4cu, 0x58399ee9u, 0xdeadec47u, 0x15f13fe2u, + 0xe4a78d37u, 0x2ffb5e92u, 0xa96f2c3cu, 0x6233ff99u, 0x7f36cf21u, 0xb46a1c84u, 0x32fe6e2au, 0xf9a2bd8fu, + 0x0b220dc1u, 0xc07ede64u, 0x46eaaccau, 0x8db67f6fu, 0x90b34fd7u, 0x5bef9c72u, 0xdd7beedcu, 0x16273d79u, + 0xe7718facu, 0x2c2d5c09u, 0xaab92ea7u, 0x61e5fd02u, 0x7ce0cdbau, 0xb7bc1e1fu, 0x31286cb1u, 0xfa74bf14u, + 0x1eb014d8u, 0xd5ecc77du, 0x5378b5d3u, 0x98246676u, 0x852156ceu, 0x4e7d856bu, 0xc8e9f7c5u, 0x03b52460u, + 0xf2e396b5u, 0x39bf4510u, 0xbf2b37beu, 0x7477e41bu, 0x6972d4a3u, 0xa22e0706u, 0x24ba75a8u, 0xefe6a60du, + 0x1d661643u, 0xd63ac5e6u, 0x50aeb748u, 0x9bf264edu, 0x86f75455u, 0x4dab87f0u, 0xcb3ff55eu, 0x006326fbu, + 0xf135942eu, 0x3a69478bu, 0xbcfd3525u, 0x77a1e680u, 0x6aa4d638u, 0xa1f8059du, 0x276c7733u, 0xec30a496u, + 0x191c11eeu, 0xd240c24bu, 0x54d4b0e5u, 0x9f886340u, 0x828d53f8u, 0x49d1805du, 0xcf45f2f3u, 0x04192156u, + 0xf54f9383u, 0x3e134026u, 0xb8873288u, 0x73dbe12du, 0x6eded195u, 0xa5820230u, 0x2316709eu, 0xe84aa33bu, + 0x1aca1375u, 0xd196c0d0u, 0x5702b27eu, 0x9c5e61dbu, 0x815b5163u, 0x4a0782c6u, 0xcc93f068u, 0x07cf23cdu, + 0xf6999118u, 0x3dc542bdu, 0xbb513013u, 0x700de3b6u, 0x6d08d30eu, 0xa65400abu, 0x20c07205u, 0xeb9ca1a0u, + 0x11e81eb4u, 0xdab4cd11u, 0x5c20bfbfu, 0x977c6c1au, 0x8a795ca2u, 0x41258f07u, 0xc7b1fda9u, 0x0ced2e0cu, + 0xfdbb9cd9u, 0x36e74f7cu, 0xb0733dd2u, 0x7b2fee77u, 0x662adecfu, 0xad760d6au, 0x2be27fc4u, 0xe0beac61u, + 0x123e1c2fu, 0xd962cf8au, 0x5ff6bd24u, 0x94aa6e81u, 0x89af5e39u, 0x42f38d9cu, 0xc467ff32u, 0x0f3b2c97u, + 0xfe6d9e42u, 0x35314de7u, 0xb3a53f49u, 0x78f9ececu, 0x65fcdc54u, 0xaea00ff1u, 0x28347d5fu, 0xe368aefau, + 0x16441b82u, 0xdd18c827u, 0x5b8cba89u, 0x90d0692cu, 0x8dd55994u, 0x46898a31u, 0xc01df89fu, 0x0b412b3au, + 0xfa1799efu, 0x314b4a4au, 0xb7df38e4u, 0x7c83eb41u, 0x6186dbf9u, 0xaada085cu, 0x2c4e7af2u, 0xe712a957u, + 0x15921919u, 0xdececabcu, 0x585ab812u, 0x93066bb7u, 0x8e035b0fu, 0x455f88aau, 0xc3cbfa04u, 0x089729a1u, + 0xf9c19b74u, 0x329d48d1u, 0xb4093a7fu, 0x7f55e9dau, 0x6250d962u, 0xa90c0ac7u, 0x2f987869u, 0xe4c4abccu +}; + +static const unsigned lodepng_crc32_table6[256] = { + 0x00000000u, 0xa6770bb4u, 0x979f1129u, 0x31e81a9du, 0xf44f2413u, 0x52382fa7u, 0x63d0353au, 0xc5a73e8eu, + 0x33ef4e67u, 0x959845d3u, 0xa4705f4eu, 0x020754fau, 0xc7a06a74u, 0x61d761c0u, 0x503f7b5du, 0xf64870e9u, + 0x67de9cceu, 0xc1a9977au, 0xf0418de7u, 0x56368653u, 0x9391b8ddu, 0x35e6b369u, 0x040ea9f4u, 0xa279a240u, + 0x5431d2a9u, 0xf246d91du, 0xc3aec380u, 0x65d9c834u, 0xa07ef6bau, 0x0609fd0eu, 0x37e1e793u, 0x9196ec27u, + 0xcfbd399cu, 0x69ca3228u, 0x582228b5u, 0xfe552301u, 0x3bf21d8fu, 0x9d85163bu, 0xac6d0ca6u, 0x0a1a0712u, + 0xfc5277fbu, 0x5a257c4fu, 0x6bcd66d2u, 0xcdba6d66u, 0x081d53e8u, 0xae6a585cu, 0x9f8242c1u, 0x39f54975u, + 0xa863a552u, 0x0e14aee6u, 0x3ffcb47bu, 0x998bbfcfu, 0x5c2c8141u, 0xfa5b8af5u, 0xcbb39068u, 0x6dc49bdcu, + 0x9b8ceb35u, 0x3dfbe081u, 0x0c13fa1cu, 0xaa64f1a8u, 0x6fc3cf26u, 0xc9b4c492u, 0xf85cde0fu, 0x5e2bd5bbu, + 0x440b7579u, 0xe27c7ecdu, 0xd3946450u, 0x75e36fe4u, 0xb044516au, 0x16335adeu, 0x27db4043u, 0x81ac4bf7u, + 0x77e43b1eu, 0xd19330aau, 0xe07b2a37u, 0x460c2183u, 0x83ab1f0du, 0x25dc14b9u, 0x14340e24u, 0xb2430590u, + 0x23d5e9b7u, 0x85a2e203u, 0xb44af89eu, 0x123df32au, 0xd79acda4u, 0x71edc610u, 0x4005dc8du, 0xe672d739u, + 0x103aa7d0u, 0xb64dac64u, 0x87a5b6f9u, 0x21d2bd4du, 0xe47583c3u, 0x42028877u, 0x73ea92eau, 0xd59d995eu, + 0x8bb64ce5u, 0x2dc14751u, 0x1c295dccu, 0xba5e5678u, 0x7ff968f6u, 0xd98e6342u, 0xe86679dfu, 0x4e11726bu, + 0xb8590282u, 0x1e2e0936u, 0x2fc613abu, 0x89b1181fu, 0x4c162691u, 0xea612d25u, 0xdb8937b8u, 0x7dfe3c0cu, + 0xec68d02bu, 0x4a1fdb9fu, 0x7bf7c102u, 0xdd80cab6u, 0x1827f438u, 0xbe50ff8cu, 0x8fb8e511u, 0x29cfeea5u, + 0xdf879e4cu, 0x79f095f8u, 0x48188f65u, 0xee6f84d1u, 0x2bc8ba5fu, 0x8dbfb1ebu, 0xbc57ab76u, 0x1a20a0c2u, + 0x8816eaf2u, 0x2e61e146u, 0x1f89fbdbu, 0xb9fef06fu, 0x7c59cee1u, 0xda2ec555u, 0xebc6dfc8u, 0x4db1d47cu, + 0xbbf9a495u, 0x1d8eaf21u, 0x2c66b5bcu, 0x8a11be08u, 0x4fb68086u, 0xe9c18b32u, 0xd82991afu, 0x7e5e9a1bu, + 0xefc8763cu, 0x49bf7d88u, 0x78576715u, 0xde206ca1u, 0x1b87522fu, 0xbdf0599bu, 0x8c184306u, 0x2a6f48b2u, + 0xdc27385bu, 0x7a5033efu, 0x4bb82972u, 0xedcf22c6u, 0x28681c48u, 0x8e1f17fcu, 0xbff70d61u, 0x198006d5u, + 0x47abd36eu, 0xe1dcd8dau, 0xd034c247u, 0x7643c9f3u, 0xb3e4f77du, 0x1593fcc9u, 0x247be654u, 0x820cede0u, + 0x74449d09u, 0xd23396bdu, 0xe3db8c20u, 0x45ac8794u, 0x800bb91au, 0x267cb2aeu, 0x1794a833u, 0xb1e3a387u, + 0x20754fa0u, 0x86024414u, 0xb7ea5e89u, 0x119d553du, 0xd43a6bb3u, 0x724d6007u, 0x43a57a9au, 0xe5d2712eu, + 0x139a01c7u, 0xb5ed0a73u, 0x840510eeu, 0x22721b5au, 0xe7d525d4u, 0x41a22e60u, 0x704a34fdu, 0xd63d3f49u, + 0xcc1d9f8bu, 0x6a6a943fu, 0x5b828ea2u, 0xfdf58516u, 0x3852bb98u, 0x9e25b02cu, 0xafcdaab1u, 0x09baa105u, + 0xfff2d1ecu, 0x5985da58u, 0x686dc0c5u, 0xce1acb71u, 0x0bbdf5ffu, 0xadcafe4bu, 0x9c22e4d6u, 0x3a55ef62u, + 0xabc30345u, 0x0db408f1u, 0x3c5c126cu, 0x9a2b19d8u, 0x5f8c2756u, 0xf9fb2ce2u, 0xc813367fu, 0x6e643dcbu, + 0x982c4d22u, 0x3e5b4696u, 0x0fb35c0bu, 0xa9c457bfu, 0x6c636931u, 0xca146285u, 0xfbfc7818u, 0x5d8b73acu, + 0x03a0a617u, 0xa5d7ada3u, 0x943fb73eu, 0x3248bc8au, 0xf7ef8204u, 0x519889b0u, 0x6070932du, 0xc6079899u, + 0x304fe870u, 0x9638e3c4u, 0xa7d0f959u, 0x01a7f2edu, 0xc400cc63u, 0x6277c7d7u, 0x539fdd4au, 0xf5e8d6feu, + 0x647e3ad9u, 0xc209316du, 0xf3e12bf0u, 0x55962044u, 0x90311ecau, 0x3646157eu, 0x07ae0fe3u, 0xa1d90457u, + 0x579174beu, 0xf1e67f0au, 0xc00e6597u, 0x66796e23u, 0xa3de50adu, 0x05a95b19u, 0x34414184u, 0x92364a30u +}; + +static const unsigned lodepng_crc32_table7[256] = { + 0x00000000u, 0xccaa009eu, 0x4225077du, 0x8e8f07e3u, 0x844a0efau, 0x48e00e64u, 0xc66f0987u, 0x0ac50919u, + 0xd3e51bb5u, 0x1f4f1b2bu, 0x91c01cc8u, 0x5d6a1c56u, 0x57af154fu, 0x9b0515d1u, 0x158a1232u, 0xd92012acu, + 0x7cbb312bu, 0xb01131b5u, 0x3e9e3656u, 0xf23436c8u, 0xf8f13fd1u, 0x345b3f4fu, 0xbad438acu, 0x767e3832u, + 0xaf5e2a9eu, 0x63f42a00u, 0xed7b2de3u, 0x21d12d7du, 0x2b142464u, 0xe7be24fau, 0x69312319u, 0xa59b2387u, + 0xf9766256u, 0x35dc62c8u, 0xbb53652bu, 0x77f965b5u, 0x7d3c6cacu, 0xb1966c32u, 0x3f196bd1u, 0xf3b36b4fu, + 0x2a9379e3u, 0xe639797du, 0x68b67e9eu, 0xa41c7e00u, 0xaed97719u, 0x62737787u, 0xecfc7064u, 0x205670fau, + 0x85cd537du, 0x496753e3u, 0xc7e85400u, 0x0b42549eu, 0x01875d87u, 0xcd2d5d19u, 0x43a25afau, 0x8f085a64u, + 0x562848c8u, 0x9a824856u, 0x140d4fb5u, 0xd8a74f2bu, 0xd2624632u, 0x1ec846acu, 0x9047414fu, 0x5ced41d1u, + 0x299dc2edu, 0xe537c273u, 0x6bb8c590u, 0xa712c50eu, 0xadd7cc17u, 0x617dcc89u, 0xeff2cb6au, 0x2358cbf4u, + 0xfa78d958u, 0x36d2d9c6u, 0xb85dde25u, 0x74f7debbu, 0x7e32d7a2u, 0xb298d73cu, 0x3c17d0dfu, 0xf0bdd041u, + 0x5526f3c6u, 0x998cf358u, 0x1703f4bbu, 0xdba9f425u, 0xd16cfd3cu, 0x1dc6fda2u, 0x9349fa41u, 0x5fe3fadfu, + 0x86c3e873u, 0x4a69e8edu, 0xc4e6ef0eu, 0x084cef90u, 0x0289e689u, 0xce23e617u, 0x40ace1f4u, 0x8c06e16au, + 0xd0eba0bbu, 0x1c41a025u, 0x92cea7c6u, 0x5e64a758u, 0x54a1ae41u, 0x980baedfu, 0x1684a93cu, 0xda2ea9a2u, + 0x030ebb0eu, 0xcfa4bb90u, 0x412bbc73u, 0x8d81bcedu, 0x8744b5f4u, 0x4beeb56au, 0xc561b289u, 0x09cbb217u, + 0xac509190u, 0x60fa910eu, 0xee7596edu, 0x22df9673u, 0x281a9f6au, 0xe4b09ff4u, 0x6a3f9817u, 0xa6959889u, + 0x7fb58a25u, 0xb31f8abbu, 0x3d908d58u, 0xf13a8dc6u, 0xfbff84dfu, 0x37558441u, 0xb9da83a2u, 0x7570833cu, + 0x533b85dau, 0x9f918544u, 0x111e82a7u, 0xddb48239u, 0xd7718b20u, 0x1bdb8bbeu, 0x95548c5du, 0x59fe8cc3u, + 0x80de9e6fu, 0x4c749ef1u, 0xc2fb9912u, 0x0e51998cu, 0x04949095u, 0xc83e900bu, 0x46b197e8u, 0x8a1b9776u, + 0x2f80b4f1u, 0xe32ab46fu, 0x6da5b38cu, 0xa10fb312u, 0xabcaba0bu, 0x6760ba95u, 0xe9efbd76u, 0x2545bde8u, + 0xfc65af44u, 0x30cfafdau, 0xbe40a839u, 0x72eaa8a7u, 0x782fa1beu, 0xb485a120u, 0x3a0aa6c3u, 0xf6a0a65du, + 0xaa4de78cu, 0x66e7e712u, 0xe868e0f1u, 0x24c2e06fu, 0x2e07e976u, 0xe2ade9e8u, 0x6c22ee0bu, 0xa088ee95u, + 0x79a8fc39u, 0xb502fca7u, 0x3b8dfb44u, 0xf727fbdau, 0xfde2f2c3u, 0x3148f25du, 0xbfc7f5beu, 0x736df520u, + 0xd6f6d6a7u, 0x1a5cd639u, 0x94d3d1dau, 0x5879d144u, 0x52bcd85du, 0x9e16d8c3u, 0x1099df20u, 0xdc33dfbeu, + 0x0513cd12u, 0xc9b9cd8cu, 0x4736ca6fu, 0x8b9ccaf1u, 0x8159c3e8u, 0x4df3c376u, 0xc37cc495u, 0x0fd6c40bu, + 0x7aa64737u, 0xb60c47a9u, 0x3883404au, 0xf42940d4u, 0xfeec49cdu, 0x32464953u, 0xbcc94eb0u, 0x70634e2eu, + 0xa9435c82u, 0x65e95c1cu, 0xeb665bffu, 0x27cc5b61u, 0x2d095278u, 0xe1a352e6u, 0x6f2c5505u, 0xa386559bu, + 0x061d761cu, 0xcab77682u, 0x44387161u, 0x889271ffu, 0x825778e6u, 0x4efd7878u, 0xc0727f9bu, 0x0cd87f05u, + 0xd5f86da9u, 0x19526d37u, 0x97dd6ad4u, 0x5b776a4au, 0x51b26353u, 0x9d1863cdu, 0x1397642eu, 0xdf3d64b0u, + 0x83d02561u, 0x4f7a25ffu, 0xc1f5221cu, 0x0d5f2282u, 0x079a2b9bu, 0xcb302b05u, 0x45bf2ce6u, 0x89152c78u, + 0x50353ed4u, 0x9c9f3e4au, 0x121039a9u, 0xdeba3937u, 0xd47f302eu, 0x18d530b0u, 0x965a3753u, 0x5af037cdu, + 0xff6b144au, 0x33c114d4u, 0xbd4e1337u, 0x71e413a9u, 0x7b211ab0u, 0xb78b1a2eu, 0x39041dcdu, 0xf5ae1d53u, + 0x2c8e0fffu, 0xe0240f61u, 0x6eab0882u, 0xa201081cu, 0xa8c40105u, 0x646e019bu, 0xeae10678u, 0x264b06e6u +}; + +/* Computes the cyclic redundancy check as used by PNG chunks*/ unsigned lodepng_crc32(const unsigned char* data, size_t length) { + /*Using the Slicing by Eight algorithm*/ unsigned r = 0xffffffffu; - size_t i; - for(i = 0; i < length; ++i) { - r = lodepng_crc32_table[(r ^ data[i]) & 0xffu] ^ (r >> 8u); + while(length >= 8) { + r = lodepng_crc32_table7[(data[0] ^ (r & 0xffu))] ^ + lodepng_crc32_table6[(data[1] ^ ((r >> 8) & 0xffu))] ^ + lodepng_crc32_table5[(data[2] ^ ((r >> 16) & 0xffu))] ^ + lodepng_crc32_table4[(data[3] ^ ((r >> 24) & 0xffu))] ^ + lodepng_crc32_table3[data[4]] ^ + lodepng_crc32_table2[data[5]] ^ + lodepng_crc32_table1[data[6]] ^ + lodepng_crc32_table0[data[7]]; + data += 8; + length -= 8; + } + while(length--) { + r = lodepng_crc32_table0[(r ^ *data++) & 0xffu] ^ (r >> 8); } return r ^ 0xffffffffu; } #else /* LODEPNG_COMPILE_CRC */ /*in this case, the function is only declared here, and must be defined externally -so that it will be linked in*/ +so that it will be linked in. + +Example implementation that uses a much smaller lookup table for memory constrained cases: + +unsigned lodepng_crc32(const unsigned char* data, size_t length) { + unsigned r = 0xffffffffu; + static const unsigned table[16] = { + 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, + 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c + }; + while(length--) { + r = table[(r ^ *data) & 0xf] ^ (r >> 4); + r = table[(r ^ (*data >> 4)) & 0xf] ^ (r >> 4); + data++; + } + return r ^ 0xffffffffu; +} +*/ unsigned lodepng_crc32(const unsigned char* data, size_t length); #endif /* LODEPNG_COMPILE_CRC */ @@ -3964,15 +4237,14 @@ static unsigned auto_choose_color(LodePNGColorMode* mode_out, #endif /* #ifdef LODEPNG_COMPILE_ENCODER */ -/* -Paeth predictor, used by PNG filter type 4 -The parameters are of type short, but should come from unsigned chars, the shorts -are only needed to make the paeth calculation correct. -*/ -static unsigned char paethPredictor(short a, short b, short c) { - short pa = LODEPNG_ABS(b - c); - short pb = LODEPNG_ABS(a - c); - short pc = LODEPNG_ABS(a + b - c - c); +/*Paeth predictor, used by PNG filter type 4*/ +static unsigned char paethPredictor(unsigned char a, unsigned char b, unsigned char c) { + /* the subtractions of unsigned char cast it to a signed type. + With gcc, short is faster than int, with clang int is as fast (as of april 2023)*/ + short pa = (b - c) < 0 ? -(b - c) : (b - c); + short pb = (a - c) < 0 ? -(a - c) : (a - c); + /* writing it out like this compiles to something faster than introducing a temp variable*/ + short pc = (a + b - c - c) < 0 ? -(a + b - c - c) : (a + b - c - c); /* return input value associated with smallest of pa, pb, pc (with certain priority if equal) */ if(pb < pa) { a = b; pa = pb; } return (pc < pa) ? c : a; @@ -4168,47 +4440,108 @@ static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scan break; case 4: if(precon) { - size_t j = 0; - for(i = 0; i != bytewidth; ++i) { - recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ - } - - /* Unroll independent paths of the paeth predictor. A 6x and 8x version is also possible but that - adds too much code. Whether this speeds up anything depends on compiler and settings. */ - if(bytewidth >= 4) { - for(; i + 3 < length; i += 4, j += 4) { - unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2], s3 = scanline[i + 3]; - unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2], r3 = recon[j + 3]; - unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2], p3 = precon[i + 3]; - unsigned char q0 = precon[j + 0], q1 = precon[j + 1], q2 = precon[j + 2], q3 = precon[j + 3]; - recon[i + 0] = s0 + paethPredictor(r0, p0, q0); - recon[i + 1] = s1 + paethPredictor(r1, p1, q1); - recon[i + 2] = s2 + paethPredictor(r2, p2, q2); - recon[i + 3] = s3 + paethPredictor(r3, p3, q3); + /* Unroll independent paths of this predictor. Whether this speeds up + anything depends on compiler and settings. */ + if(bytewidth == 8) { + unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0; + unsigned char a4, b4 = 0, c4, d4 = 0, a5, b5 = 0, c5, d5 = 0; + unsigned char a6, b6 = 0, c6, d6 = 0, a7, b7 = 0, c7, d7 = 0; + for(i = 0; i + 7 < length; i += 8) { + c0 = b0; c1 = b1; c2 = b2; c3 = b3; + c4 = b4; c5 = b5; c6 = b6; c7 = b7; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; b3 = precon[i + 3]; + b4 = precon[i + 4]; b5 = precon[i + 5]; b6 = precon[i + 6]; b7 = precon[i + 7]; + a0 = d0; a1 = d1; a2 = d2; a3 = d3; + a4 = d4; a5 = d5; a6 = d6; a7 = d7; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + d3 = scanline[i + 3] + paethPredictor(a3, b3, c3); + d4 = scanline[i + 4] + paethPredictor(a4, b4, c4); + d5 = scanline[i + 5] + paethPredictor(a5, b5, c5); + d6 = scanline[i + 6] + paethPredictor(a6, b6, c6); + d7 = scanline[i + 7] + paethPredictor(a7, b7, c7); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; recon[i + 3] = d3; + recon[i + 4] = d4; recon[i + 5] = d5; recon[i + 6] = d6; recon[i + 7] = d7; } - } else if(bytewidth >= 3) { - for(; i + 2 < length; i += 3, j += 3) { - unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1], s2 = scanline[i + 2]; - unsigned char r0 = recon[j + 0], r1 = recon[j + 1], r2 = recon[j + 2]; - unsigned char p0 = precon[i + 0], p1 = precon[i + 1], p2 = precon[i + 2]; - unsigned char q0 = precon[j + 0], q1 = precon[j + 1], q2 = precon[j + 2]; - recon[i + 0] = s0 + paethPredictor(r0, p0, q0); - recon[i + 1] = s1 + paethPredictor(r1, p1, q1); - recon[i + 2] = s2 + paethPredictor(r2, p2, q2); + } else if(bytewidth == 6) { + unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0; + unsigned char a4, b4 = 0, c4, d4 = 0, a5, b5 = 0, c5, d5 = 0; + for(i = 0; i + 5 < length; i += 6) { + c0 = b0; c1 = b1; c2 = b2; + c3 = b3; c4 = b4; c5 = b5; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; + b3 = precon[i + 3]; b4 = precon[i + 4]; b5 = precon[i + 5]; + a0 = d0; a1 = d1; a2 = d2; + a3 = d3; a4 = d4; a5 = d5; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + d3 = scanline[i + 3] + paethPredictor(a3, b3, c3); + d4 = scanline[i + 4] + paethPredictor(a4, b4, c4); + d5 = scanline[i + 5] + paethPredictor(a5, b5, c5); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; + recon[i + 3] = d3; recon[i + 4] = d4; recon[i + 5] = d5; } - } else if(bytewidth >= 2) { - for(; i + 1 < length; i += 2, j += 2) { - unsigned char s0 = scanline[i + 0], s1 = scanline[i + 1]; - unsigned char r0 = recon[j + 0], r1 = recon[j + 1]; - unsigned char p0 = precon[i + 0], p1 = precon[i + 1]; - unsigned char q0 = precon[j + 0], q1 = precon[j + 1]; - recon[i + 0] = s0 + paethPredictor(r0, p0, q0); - recon[i + 1] = s1 + paethPredictor(r1, p1, q1); + } else if(bytewidth == 4) { + unsigned char a0, b0 = 0, c0, d0 = 0, a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0, a3, b3 = 0, c3, d3 = 0; + for(i = 0; i + 3 < length; i += 4) { + c0 = b0; c1 = b1; c2 = b2; c3 = b3; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; b3 = precon[i + 3]; + a0 = d0; a1 = d1; a2 = d2; a3 = d3; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + d3 = scanline[i + 3] + paethPredictor(a3, b3, c3); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; recon[i + 3] = d3; + } + } else if(bytewidth == 3) { + unsigned char a0, b0 = 0, c0, d0 = 0; + unsigned char a1, b1 = 0, c1, d1 = 0; + unsigned char a2, b2 = 0, c2, d2 = 0; + for(i = 0; i + 2 < length; i += 3) { + c0 = b0; c1 = b1; c2 = b2; + b0 = precon[i + 0]; b1 = precon[i + 1]; b2 = precon[i + 2]; + a0 = d0; a1 = d1; a2 = d2; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + d2 = scanline[i + 2] + paethPredictor(a2, b2, c2); + recon[i + 0] = d0; recon[i + 1] = d1; recon[i + 2] = d2; + } + } else if(bytewidth == 2) { + unsigned char a0, b0 = 0, c0, d0 = 0; + unsigned char a1, b1 = 0, c1, d1 = 0; + for(i = 0; i + 1 < length; i += 2) { + c0 = b0; c1 = b1; + b0 = precon[i + 0]; + b1 = precon[i + 1]; + a0 = d0; a1 = d1; + d0 = scanline[i + 0] + paethPredictor(a0, b0, c0); + d1 = scanline[i + 1] + paethPredictor(a1, b1, c1); + recon[i + 0] = d0; + recon[i + 1] = d1; + } + } else if(bytewidth == 1) { + unsigned char a, b = 0, c, d = 0; + for(i = 0; i != length; ++i) { + c = b; + b = precon[i]; + a = d; + d = scanline[i] + paethPredictor(a, b, c); + recon[i] = d; + } + } else { + /* Normally not a possible case, but this would handle it correctly */ + for(i = 0; i != bytewidth; ++i) { + recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ } } - - for(; i != length; ++i, ++j) { - recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[j])); + /* finish any remaining bytes */ + for(; i != length; ++i) { + recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth])); } } else { size_t j = 0; diff --git a/Sources/Emu48/LODEPNG.H b/Sources/Emu48/LODEPNG.H index fdafc77..81d4985 100644 --- a/Sources/Emu48/LODEPNG.H +++ b/Sources/Emu48/LODEPNG.H @@ -1,7 +1,7 @@ /* -LodePNG version 20220717 +LodePNG version 20230410 -Copyright (c) 2005-2022 Lode Vandevenne +Copyright (c) 2005-2023 Lode Vandevenne This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -92,7 +92,10 @@ or comment out LODEPNG_COMPILE_ALLOCATORS below*/ #endif /*Disable built-in CRC function, in that case a custom implementation of -lodepng_crc32 must be defined externally so that it can be linked in.*/ +lodepng_crc32 must be defined externally so that it can be linked in. +The default built-in CRC code comes with 8KB of lookup tables, so for memory constrained environment you may want it +disabled and provide a much smaller implementation externally as said above. You can find such an example implementation +in a comment in the lodepng.c(pp) file in the 'else' case of the searchable LODEPNG_COMPILE_CRC section.*/ #ifndef LODEPNG_NO_COMPILE_CRC /*pass -DLODEPNG_NO_COMPILE_CRC to the compiler to disable the built-in one, or comment out LODEPNG_COMPILE_CRC below*/ @@ -1909,6 +1912,7 @@ symbol. Not all changes are listed here, the commit history in github lists more: https://github.com/lvandeve/lodepng +*) 10 apr 2023: faster CRC32 implementation, but with larger lookup table. *) 13 jun 2022: added support for the sBIT chunk. *) 09 jan 2022: minor decoder speed improvements. *) 27 jun 2021: added warnings that file reading/writing functions don't support diff --git a/Sources/Emu48/MOPS.C b/Sources/Emu48/MOPS.C index ff6e96e..99409c8 100644 --- a/Sources/Emu48/MOPS.C +++ b/Sources/Emu48/MOPS.C @@ -33,17 +33,6 @@ BYTE disp = 0; // flag for update display area static LPBYTE pbyRomView[2] = {NULL, NULL}; // HP49G ROM views -// CRC calculation -static WORD crc_table[] = -{ - 0x0000, 0x1081, 0x2102, 0x3183, 0x4204, 0x5285, 0x6306, 0x7387, - 0x8408, 0x9489, 0xA50A, 0xB58B, 0xC60C, 0xD68D, 0xE70E, 0xF78F -}; -static __inline VOID UpCRC(BYTE nib) -{ - Chipset.crc = (WORD)((Chipset.crc>>4)^crc_table[(Chipset.crc^nib)&0xf]); -} - static __inline UINT MIN(UINT a, UINT b) { return (a to avoid this slow down CPU speed on transmit buffer full + + InitAdjustSpeed(); // init variables if necessary + EnterCriticalSection(&csSlowLock); + { + nOpcSlow = 10; // slow down next 10 opcodes + } + LeaveCriticalSection(&csSlowLock); + } + #if defined DEBUG_SERIAL if (bUpdate) { diff --git a/Sources/Emu48/PCH.H b/Sources/Emu48/PCH.H index a905b1c..555374a 100644 --- a/Sources/Emu48/PCH.H +++ b/Sources/Emu48/PCH.H @@ -61,6 +61,24 @@ typedef ULONG ULONG_PTR, *PULONG_PTR; typedef LONG LONG_PTR, *PLONG_PTR; #endif +#if !defined PROCESS_POWER_THROTTLING_CURRENT_VERSION +#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 1 +#endif + +#if !defined PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION +#define PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION 0x04 +#endif + +#if _MSC_VER <= 1900 // add until VS2015 from processthreadsapi.h +enum { ProcessPowerThrottling = 4 }; + +typedef struct _PROCESS_POWER_THROTTLING_STATE { + ULONG Version; + ULONG ControlMask; + ULONG StateMask; +} PROCESS_POWER_THROTTLING_STATE, * PPROCESS_POWER_THROTTLING_STATE; +#endif + #if _MSC_VER >= 1400 // valid for VS2005 and later #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\" \ diff --git a/Sources/Emu48/PNGCRC.C b/Sources/Emu48/PNGCRC.C new file mode 100644 index 0000000..d8493c5 --- /dev/null +++ b/Sources/Emu48/PNGCRC.C @@ -0,0 +1,57 @@ +/* + * pngcrc.c + * + * This file is part of Emu48 + * + * Copyright (C) 2023 Christoph Gießelink + * + */ +#include "pch.h" + +/* CRC polynomial: 0xedb88320 */ +static const unsigned lodepng_crc32_table[256] = +{ + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D +}; + +/*Return the CRC of the bytes buf[0..len-1].*/ +unsigned lodepng_crc32(const unsigned char* data, size_t length) +{ + unsigned r = 0xffffffffu; + while (length--) + { + r = lodepng_crc32_table[(r ^ *data++) & 0xffu] ^ (r >> 8u); + } + return ~r; +} diff --git a/Sources/Emu48/ROMCRC.C b/Sources/Emu48/ROMCRC.C new file mode 100644 index 0000000..392c0dd --- /dev/null +++ b/Sources/Emu48/ROMCRC.C @@ -0,0 +1,250 @@ +/* + * romcrc.c + * + * This file is part of Emu48 + * + * Copyright (C) 2022 Christoph Gießelink + * + */ +#include "pch.h" +#include "Emu48.h" +#include "ops.h" + +// flash page types +#define BOOT 0x86 +#define FS 0x18 +#define SYSTEM 0x32 +#define ROM 0x0F +#define RAM 0xF0 + +//################ +//# +//# Restore HP38G/HP48GX/SX ROM CRC +//# +//################ + +// Clarke/Yorke CRC for HP38G and HP48GX/SX +#define a0 0x0 // Start Address +#define d0 (n0*16) // Address offset +#define n0 0x4000 // Reads/Half-Sector +#define s0 1 // #Sectors (Sector Size=2*d) + +// rebuild of the calculator =CHECKSUM function for the Clarke and the Yorke chip ROM +static WORD Checksum(LPBYTE pbyROM, DWORD dwStart, DWORD dwOffset, INT nReads, INT nSector) +{ + int i,j; + + WORD wCrc = 0; + + for (;nSector > 0; --nSector) // evaluate each sector + { + LPBYTE pbyAddr1 = pbyROM + dwStart; + LPBYTE pbyAddr2 = pbyAddr1 + dwOffset; + + for (i = 0; i < nReads; ++i) // no. of reads in sector + { + for (j = 0; j < 16; ++j) wCrc = UpCRC(wCrc,*pbyAddr1++); + for (j = 0; j < 16; ++j) wCrc = UpCRC(wCrc,*pbyAddr2++); + } + + dwStart += 2 * dwOffset; // next start page + } + return wCrc; +} + +// calculate proper checksum to produce final CRC of FFFF +static __inline WORD CalcChksum(WORD wCrc, WORD wChksum) +{ + WORD q, r = wCrc, s = wChksum; + + // first take the last 4-nib back out of the CRC + r = (((r >> 12) * 0x811) ^ (r << 4) ^ (s & 0xf)); + s >>= 4; + r = (((r >> 12) * 0x811) ^ (r << 4) ^ (s & 0xf)); + s >>= 4; + r = (((r >> 12) * 0x811) ^ (r << 4) ^ (s & 0xf)); + s >>= 4; + r = (((r >> 12) * 0x811) ^ (r << 4) ^ (s & 0xf)); + + // calculate new checksum to correct the CRC + s = 0xf831; // required MSNs to make goal + q = (q<<4) | ((r ^ s) & 0xf); // get 1st (least sig) nib + r = (r>>4) ^ ((s & 0xf) * 0x1081); + s >>= 4; + q = (q<<4) | ((r ^ s) & 0xf); + r = (r>>4) ^ ((s & 0xf) * 0x1081); + s >>= 4; + q = (q<<4) | ((r ^ s) & 0xf); + r = (r>>4) ^ ((s & 0xf) * 0x1081); + s >>= 4; + q = (q<<4) | ((r ^ s) & 0xf); + return q; +} + +static VOID CorrectCrc(DWORD dwAddrCrc, WORD wCrc) +{ + if (wCrc != 0xFFFF) // wrong crc result + { + INT s; + + // get actual crc correction value + const WORD wChkAct = (pbyRom[dwAddrCrc+0] << 12) + | (pbyRom[dwAddrCrc+1] << 8) + | (pbyRom[dwAddrCrc+2] << 4) + | (pbyRom[dwAddrCrc+3]); + + wCrc = CalcChksum(wCrc,wChkAct); // calculate new checksum + + for (s = 3; s >= 0; --s) // write new checksum + { + PatchNibble(dwAddrCrc + s,(BYTE) (wCrc & 0xf)); + wCrc >>= 4; + } + } + return; +} + + +//################ +//# +//# Restore HP49G ROM CRC +//# +//################ + +static VOID CorrectFlashCrc(LPBYTE pbyMem, DWORD dwSize, DWORD dwOffset, DWORD dwLength) +{ + // address overflow (data length + 4 nibble CRC) + if (dwOffset + dwLength + 4 <= dwSize) + { + WORD wRefCrc,wCrc = 0; + + pbyMem += dwOffset; // start address + + for (; dwLength > 0; --dwLength) // update CRC + { + wCrc = UpCRC(wCrc,*pbyMem++); + } + + wRefCrc = (WORD) Npack(pbyMem,4); // read reference CRC + + if(wRefCrc != wCrc) // wrong page CRC + { + INT s; + + // linear CRC address in ROM + DWORD dwAddrCrc = (DWORD) (pbyMem - pbyRom); + + wRefCrc = wCrc; // working copy of CRC + for (s = 0; s < 4; ++s) // write new checksum + { + PatchNibble(dwAddrCrc++,(BYTE) (wRefCrc & 0xf)); + wRefCrc >>= 4; + } + + _ASSERT(wCrc == (WORD) Npack(pbyMem,4)); + } + } + return; +} + +static __inline VOID CorrectFlashRom(LPBYTE pbyMem, DWORD dwSize) +{ + CorrectFlashCrc(pbyMem,dwSize,0x20A,Npack(pbyMem+0x20A,5)); + return; +} + +static __inline VOID CorrectFlashSystem(LPBYTE pbyMem, DWORD dwSize) +{ + CorrectFlashCrc(pbyMem,dwSize,0x20A,Npack(pbyMem+0x100,5)); + return; +} + +static __inline VOID CorrectFlashPage(LPBYTE pbyMem, DWORD dwSize, DWORD dwPage) +{ + _ASSERT(dwPage >= 0 && dwPage < 16); + + dwPage *= _KB(128); // convert page no. to data offset + if (dwPage + _KB(128) <= dwSize) // page inside flash chip + { + BYTE byType; + + pbyMem += dwPage; // page address + dwPage = _KB(128); // page size + + // get bank type + byType = (BYTE) Npack(pbyMem+0x200,2); + if (byType == BOOT) // 1st half of page is the boot bank + { + pbyMem += _KB(64); // 2nd half of page + dwPage = _KB(64); // page size + + // get bank type + byType = (BYTE) Npack(pbyMem+0x200,2); + } + + _ASSERT(dwPage == _KB(64) || dwPage == _KB(128)); + + switch (byType) + { + case FS: // FRBankFileSystem + case ROM: // FRBankRom + CorrectFlashRom(pbyMem,dwPage); + break; + case SYSTEM: // FRBankSystem + CorrectFlashSystem(pbyMem,dwPage); + break; + case RAM: // FRBankRam + default: // illegal bank identifier + break; + } + } + return; +} + +static __inline VOID CorrectAllFlashPages(VOID) +{ + DWORD dwPage; + + // check CRC of all pages + CONST DWORD dwLastPage = dwRomSize / _KB(128); + for (dwPage = 0; dwPage < dwLastPage; ++dwPage) + { + // correct CRC of page + CorrectFlashPage(pbyRom,dwRomSize,dwPage); + } + return; +} + + +//################ +//# +//# Restore ROM CRC +//# +//################ + +VOID RebuildRomCrc(VOID) +{ + // HP38G, HP48GX, HP48SX + if ((strchr("6AGS",cCurrentRomType)) && dwRomSize >= _KB(256)) + { + // first 256KB + CorrectCrc(0x7FFFC,Checksum(pbyRom,a0,d0,n0,s0)); + } + // HP38G, HP48GX + if ((strchr("6AG",cCurrentRomType)) && dwRomSize == _KB(512)) + { + // second 256KB + CorrectCrc(0xFFFFC,Checksum(pbyRom,a0+_KB(256),d0,n0,s0)); + } + // HP39G/40G + if (cCurrentRomType == 'E') + { + // has no Crc + } + // HP49G + if (cCurrentRomType == 'X' && dwRomSize == _KB(2048)) + { + CorrectAllFlashPages(); // go through all pages + } + return; +} diff --git a/Sources/Emu48/SERIAL.C b/Sources/Emu48/SERIAL.C index c5b7a5b..52efb58 100644 --- a/Sources/Emu48/SERIAL.C +++ b/Sources/Emu48/SERIAL.C @@ -107,6 +107,8 @@ BOOL CommOpen(LPTSTR strWirePort,LPTSTR strIrPort) _ASSERT(Chipset.IORam[IOC] & SON); // UART on CommClose(); // close port if already open + dwBytesRead = 0L; // no bytes received + if (lstrcmp(strPort, _T(NO_SERIAL))) // port defined { TCHAR szDevice[256] = _T("\\\\.\\"); @@ -130,7 +132,6 @@ BOOL CommOpen(LPTSTR strWirePort,LPTSTR strIrPort) DWORD dwThreadId; nRp = 0; // reset receiver state - dwBytesRead = 0L; SetCommTimeouts(hComm,&CommTimeouts); CommSetBaud(); @@ -157,7 +158,9 @@ BOOL CommOpen(LPTSTR strWirePort,LPTSTR strIrPort) while (!bReading) Sleep(0); // wait for SerialThread started } else + { hComm = NULL; + } } #if defined DEBUG_SERIAL @@ -350,12 +353,23 @@ VOID CommReceive(VOID) break; // reject reading if com port is closed and not whole operation - if (hComm && dwBytesRead == 0L) // com port open and buffer empty + if (hComm) // com port open { - if (ReadFile(hComm,cBuffer,sizeof(cBuffer),&dwBytesRead,&os) == FALSE) - dwBytesRead = 0L; - else // bytes received - nRp = 0; // reset read pointer + UINT uCnt = 0; // retry counter + + while (dwBytesRead == 0L) // buffer empty + { + if (ReadFile(hComm,cBuffer,sizeof(cBuffer),&dwBytesRead,&os) == FALSE) + dwBytesRead = 0L; + else // bytes received + nRp = 0; // reset read pointer + + // something received or passed 1st retry + if (dwBytesRead != 0L || ++uCnt > 1) + break; // quit + + Sleep(1); // workaround, retry 1ms later + } } if (dwBytesRead == 0L) // receive buffer empty diff --git a/Sources/Emu48/UDP.C b/Sources/Emu48/UDP.C index e404943..7e20930 100644 --- a/Sources/Emu48/UDP.C +++ b/Sources/Emu48/UDP.C @@ -10,27 +10,27 @@ #include "Emu48.h" TCHAR szUdpServer[1024] = _T("localhost"); -WORD wUdpPort = 5025; // scpi-raw +WORD wUdpPort = 5025; // scpi-raw -static IN_ADDR ip_addr = { 255, 255, 255, 255 }; +static SOCKADDR_IN sServer = { AF_INET, 0, { 255, 255, 255, 255 } }; VOID ResetUdp(VOID) { - ip_addr.s_addr = INADDR_NONE; // invalidate saved UDP address + sServer.sin_addr.s_addr = INADDR_NONE; // invalidate saved UDP address return; } BOOL SendByteUdp(BYTE byData) { - WSADATA wsd; - SOCKET sClient; - SOCKADDR_IN sServer; + WSADATA wsd; + SOCKET sClient; BOOL bErr = TRUE; VERIFY(WSAStartup(MAKEWORD(1,1),&wsd) == 0); - if (ip_addr.s_addr == INADDR_NONE) // IP address not specified + // IP address not specified + if (sServer.sin_addr.s_addr == INADDR_NONE) { LPSTR lpszIpAddr; @@ -38,7 +38,7 @@ BOOL SendByteUdp(BYTE byData) DWORD dwLength = lstrlen(szUdpServer) + 1; if ((lpszIpAddr = (LPSTR) _alloca(dwLength)) == NULL) - return TRUE; // server not found + return TRUE; // server ip address not found WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, szUdpServer, dwLength, @@ -47,27 +47,26 @@ BOOL SendByteUdp(BYTE byData) lpszIpAddr = szUdpServer; #endif - ip_addr.s_addr = inet_addr(lpszIpAddr); + // try to interpret string as IPv4 address + sServer.sin_addr.s_addr = inet_addr(lpszIpAddr); // not a valid ip address -> try to get ip address from name server - if (ip_addr.s_addr == INADDR_NONE) + if (sServer.sin_addr.s_addr == INADDR_NONE) { PHOSTENT host = gethostbyname(lpszIpAddr); if (host == NULL) { - return TRUE; // server not found + return TRUE; // server ip address not found } - ip_addr.s_addr = ((PIN_ADDR) host->h_addr_list[0])->s_addr; + sServer.sin_addr.s_addr = ((PIN_ADDR) host->h_addr_list[0])->s_addr; } } // create UDP socket if ((sClient = socket(AF_INET, SOCK_DGRAM, 0)) != INVALID_SOCKET) { - sServer.sin_family = AF_INET; sServer.sin_port = htons(wUdpPort); - sServer.sin_addr.s_addr = ip_addr.s_addr; // transmit data byte bErr = sendto(sClient, (LPCCH) &byData, sizeof(byData), 0, (LPSOCKADDR) &sServer, sizeof(sServer)) == SOCKET_ERROR; diff --git a/Sources/GCCPatch/EMU48GCC.RC b/Sources/GCCPatch/EMU48GCC.RC index c10be25..8f5933f 100644 --- a/Sources/GCCPatch/EMU48GCC.RC +++ b/Sources/GCCPatch/EMU48GCC.RC @@ -303,7 +303,7 @@ FONT 8, "MS Sans Serif" BEGIN ICON IDI_EMU48,IDC_STATIC,7,6,20,20,SS_REALSIZEIMAGE LTEXT "",IDC_VERSION,29,6,151,8,NOT WS_GROUP - LTEXT "Copyright © 2022 Christoph Gießelink && Sébastien Carlier", + LTEXT "Copyright © 2023 Christoph Gießelink && Sébastien Carlier", IDC_STATIC,29,18,181,8 DEFPUSHBUTTON "OK",IDOK,215,12,39,14 EDITTEXT IDC_LICENSE,7,33,247,112,ES_MULTILINE | ES_AUTOHSCROLL | @@ -752,8 +752,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,6,5,0 - PRODUCTVERSION 1,6,5,0 + FILEVERSION 1,6,6,0 + PRODUCTVERSION 1,6,6,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -770,12 +770,12 @@ BEGIN BEGIN VALUE "CompanyName", "Christoph Gießelink & Sebastien Carlier\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 6, 5, 0\0" + VALUE "FileVersion", "1, 6, 6, 0\0" VALUE "InternalName", "Emu48\0" - VALUE "LegalCopyright", "Copyright © 2022\0" + VALUE "LegalCopyright", "Copyright © 2023\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 6, 5, 0\0" + VALUE "ProductVersion", "1, 6, 6, 0\0" END END BLOCK "VarFileInfo" diff --git a/Sources/GCCPatch/Makefile b/Sources/GCCPatch/Makefile index 0afa653..2904cff 100644 --- a/Sources/GCCPatch/Makefile +++ b/Sources/GCCPatch/Makefile @@ -15,7 +15,8 @@ LODEPNGDEFINES= -DLODEPNG_NO_COMPILE_ENCODER \ -DLODEPNG_NO_COMPILE_DISK \ -DLODEPNG_NO_COMPILE_ANCILLARY_CHUNKS \ -DLODEPNG_NO_COMPILE_ERROR_TEXT \ - -DLODEPNG_NO_COMPILE_CPP + -DLODEPNG_NO_COMPILE_CPP \ + -DLODEPNG_NO_COMPILE_CRC LDFLAGS= -s -mwindows @@ -31,8 +32,8 @@ RSRCOBJ=$(PRJ).o OBJS=cursor.o ddeserv.o debugger.o disasm.o dismem.o display.o disrpl.o \ emu48.o engine.o fetch.o files.o i28f160.o keyboard.o \ keymacro.o kml.o lodepng.o lowbat.o mru.o mops.o opcodes.o \ - redeye.o rpl.o serial.o settings.o sndenum.o sound.o stack.o \ - symbfile.o timer.o udp.o \ + pngcrc.o redeye.o romcrc.o rpl.o serial.o settings.o sndenum.o \ + sound.o stack.o symbfile.o timer.o udp.o \ $(RSRCOBJ) LIBS=-lwinmm -lcomctl32 -lws2_32 -luuid @@ -122,9 +123,16 @@ opcodes.o: opcodes.c pch.h emu48.h types.h opcodes.h \ # pch.o: pch.c pch.h # $(CC) $(CFLAGS) $(DEFINES) -c -o pch.o pch.c +pngcrc.o: pngcrc.c pch.h + $(CC) $(CFLAGS) $(DEFINES) -c -o pngcrc.o pngcrc.c + redeye.o: redeye.c pch.h emu48.h types.h io.h $(CC) $(CFLAGS) $(DEFINES) -c -o redeye.o redeye.c +romcrc.o: romcrc.c pch.h emu48.h ops.h + $(CC) $(CFLAGS) $(DEFINES) -c -o romcrc.o romcrc.c + + rpl.o: rpl.c pch.h emu48.h types.h ops.h io.h $(CC) $(CFLAGS) $(DEFINES) -c -o rpl.o rpl.c diff --git a/Sources/GCCPatch/PCH.H b/Sources/GCCPatch/PCH.H index 7bc6e95..10a2d1f 100644 --- a/Sources/GCCPatch/PCH.H +++ b/Sources/GCCPatch/PCH.H @@ -45,3 +45,19 @@ #define VERIFY(f) ((VOID)(f)) #endif // _DEBUG #endif // VERIFY + +#if !defined PROCESS_POWER_THROTTLING_CURRENT_VERSION +#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 1 +#endif + +#if !defined PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION +#define PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION 0x04 +#endif + +enum { ProcessPowerThrottling = 4 }; + +typedef struct _PROCESS_POWER_THROTTLING_STATE { + ULONG Version; + ULONG ControlMask; + ULONG StateMask; +} PROCESS_POWER_THROTTLING_STATE, * PPROCESS_POWER_THROTTLING_STATE; diff --git a/Sources/GCCPatch/README.TXT b/Sources/GCCPatch/README.TXT index 88a235b..c9a1c94 100644 --- a/Sources/GCCPatch/README.TXT +++ b/Sources/GCCPatch/README.TXT @@ -67,4 +67,4 @@ Many thanks to Pedro A. Arranda Guti compatible. -07/19/22 (c) by Christoph Gießelink +04/18/23 (c) by Christoph Gießelink diff --git a/uninst.exe b/uninst.exe index 0d136b75298e29a0dafc966c8510dd228b1704c4..6bebbff5e92c9a32c47bd3bd819e3df467bfd8af 100755 GIT binary patch delta 66 zcmZqaVrl7O*)Z=ACmRDB10w?i1KZ~1hg=yM%_hG+Yz-tej|4IrPp&><3uNy+;tnJk TkJ>YuZFW4m-=2m4<`xG4%iR{< delta 66 zcmZqaVrl7O*)Z=ACo2OR10w?i1MBAHhg=yMO((xSYz-tej|4IrO|Cv-3uNy+;tnJk TkJ>YuZgxDn-=3u>?;9Hc%hnd~