From dfd50ecf8d9aa263e19ddf65eea346c2a9734103 Mon Sep 17 00:00:00 2001 From: Clownacy Date: Sun, 26 Jan 2020 14:45:36 +0000 Subject: [PATCH] Remove MycParam.cpp's dependency on SDL Instead we just encrypt/decrypt the 290.rec data in an endian-neutral way. --- src/MycParam.cpp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/MycParam.cpp b/src/MycParam.cpp index 06e8243a..fbe30c0c 100644 --- a/src/MycParam.cpp +++ b/src/MycParam.cpp @@ -2,8 +2,6 @@ #include -#include "SDL.h" - #include "WindowsWrapper.h" #include "ArmsItem.h" @@ -432,7 +430,7 @@ void PutTimeCounter(int x, int y) BOOL SaveTimeCounter(void) { int i; - unsigned char *p; + unsigned char p[4]; REC rec; FILE *fp; char path[MAX_PATH]; @@ -458,11 +456,13 @@ BOOL SaveTimeCounter(void) rec.random[3] = fgetc(fp); fclose(fp); - p = (unsigned char*)&rec.counter[0]; - p[0] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[0]) : (rec.random[0] / 2); - p[1] -= rec.random[0]; - p[2] -= rec.random[0]; - p[3] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[0] / 2) : (rec.random[0]); + p[0] = (unsigned char)(rec.counter[0] - rec.random[0]); + p[1] = (unsigned char)((rec.counter[0] >> 8) - rec.random[0]); + p[2] = (unsigned char)((rec.counter[0] >> 16) - rec.random[0]); + p[3] = (unsigned char)((rec.counter[0] >> 24) - rec.random[0] / 2); + + rec.counter[0] = p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); + // If this is faster than our new time, quit if (rec.counter[0] < time_count) return TRUE; @@ -474,11 +474,12 @@ BOOL SaveTimeCounter(void) rec.counter[i] = time_count; rec.random[i] = Random(0, 250) + i; - p = (unsigned char*)&rec.counter[i]; - p[0] += (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i]) : (rec.random[i] / 2); - p[1] += rec.random[i]; - p[2] += rec.random[i]; - p[3] += (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i] / 2) : (rec.random[i]); + p[0] = (unsigned char)(rec.counter[i] + rec.random[i]); + p[1] = (unsigned char)((rec.counter[i] >> 8) + rec.random[i]); + p[2] = (unsigned char)((rec.counter[i] >> 16) + rec.random[i]); + p[3] = (unsigned char)((rec.counter[i] >> 24) + rec.random[i] / 2); + + rec.counter[i] = p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); } fp = fopen(path, "wb"); @@ -501,7 +502,7 @@ BOOL SaveTimeCounter(void) int LoadTimeCounter(void) { int i; - unsigned char *p; + unsigned char p[4]; REC rec; FILE *fp; char path[MAX_PATH]; @@ -527,11 +528,12 @@ int LoadTimeCounter(void) // Decode from checksum for (i = 0; i < 4; ++i) { - p = (unsigned char*)&rec.counter[i]; - p[0] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i]) : (rec.random[i] / 2); - p[1] -= rec.random[i]; - p[2] -= rec.random[i]; - p[3] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i] / 2) : (rec.random[i]); + p[0] = (unsigned char)(rec.counter[i] - rec.random[i]); + p[1] = (unsigned char)((rec.counter[i] >> 8) - rec.random[i]); + p[2] = (unsigned char)((rec.counter[i] >> 16) - rec.random[i]); + p[3] = (unsigned char)((rec.counter[i] >> 24) - rec.random[i] / 2); + + rec.counter[i] = p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); } // Verify checksum's result