From ded926b422c4bc9e256e0baacb6a68f16972ceaf Mon Sep 17 00:00:00 2001 From: cuckydev Date: Sat, 9 Feb 2019 18:03:38 -0500 Subject: [PATCH] Saving Nikumaru Counter --- Makefile | 18 +++---- build/data/ArmsItemJapanese.tsc | Bin 0 -> 8272 bytes build/data/CreditJapanese.tsc | Bin 0 -> 7616 bytes build/data/HeadJapanese.tsc | Bin 0 -> 1433 bytes build/data/StageSelectJapanese.tsc | 1 + src/MycParam.cpp | 79 ++++++++++++++++++++++++++--- src/MycParam.h | 2 +- src/TextScr.cpp | 5 ++ 8 files changed, 88 insertions(+), 17 deletions(-) create mode 100644 build/data/ArmsItemJapanese.tsc create mode 100644 build/data/CreditJapanese.tsc create mode 100644 build/data/HeadJapanese.tsc create mode 100644 build/data/StageSelectJapanese.tsc diff --git a/Makefile b/Makefile index e3d2cbd9..6161b58a 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,25 @@ ifeq ($(RELEASE), 1) -CXXFLAGS := -O3 -s -FILENAME_DEF = release + CXXFLAGS := -O3 -s + FILENAME_DEF = release else -CXXFLAGS := -O0 -g -FILENAME_DEF = debug + CXXFLAGS := -O0 -g + FILENAME_DEF = debug endif ifeq ($(JAPANESE), 1) -CXXFLAGS += -DJAPANESE -LIBS += -liconv + CXXFLAGS += -DJAPANESE + LIBS += -liconv ifeq ($(RELEASE), 1) - FILENAME_DEF = releasejp + FILENAME_DEF = releasejp else - FILENAME_DEF = debugjp + FILENAME_DEF = debugjp endif endif FILENAME ?= $(FILENAME_DEF) ifeq ($(FIX_BUGS), 1) -CXXFLAGS += -DFIX_BUGS + CXXFLAGS += -DFIX_BUGS endif ifeq ($(WINDOWS), 1) diff --git a/build/data/ArmsItemJapanese.tsc b/build/data/ArmsItemJapanese.tsc new file mode 100644 index 0000000000000000000000000000000000000000..5666559abf9d6d7a7afa6a8906d36086e2684015 GIT binary patch literal 8272 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 y(%frjP4_mWw3@!xaSL}mW(9n|C literal 0 HcmV?d00001 diff --git a/build/data/CreditJapanese.tsc b/build/data/CreditJapanese.tsc new file mode 100644 index 0000000000000000000000000000000000000000..77bc749d4340183a9febd9f7ab3faf087c199321 GIT binary patch literal 7616 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 1); + p[1] -= rec.random[i]; + p[2] -= rec.random[i]; + p[3] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i] >> 1) : (rec.random[i]); + } + + //If this is faster than our new time, quit + if (rec.counter[0] < time_count) + return true; + } + + //Save new time + for (int i = 0; i < 4; i++) + { + rec.counter[i] = time_count; + rec.random[i] = Random(0, 250) + i; + + uint8_t *p = (uint8_t*)&rec.counter[i]; + p[0] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i]) : (rec.random[i] >> 1); + p[1] -= rec.random[i]; + p[2] -= rec.random[i]; + p[3] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i] >> 1) : (rec.random[i]); + } + + fp = SDL_RWFromFile(path, "wb"); + if (!fp) + return false; + SDL_WriteLE32(fp, rec.counter[0]); + SDL_WriteLE32(fp, rec.counter[1]); + SDL_WriteLE32(fp, rec.counter[2]); + SDL_WriteLE32(fp, rec.counter[3]); + SDL_WriteU8(fp, rec.random[0]); + SDL_WriteU8(fp, rec.random[1]); + SDL_WriteU8(fp, rec.random[2]); + SDL_WriteU8(fp, rec.random[3]); + SDL_RWclose(fp); + return true; +} + int LoadTimeCounter() { //Open file @@ -405,18 +474,14 @@ int LoadTimeCounter() rec.random[3] = SDL_ReadU8(fp); SDL_RWclose(fp); - //HACK: this swaps the random values to correspond to the correct bytes - *((uint32_t*)rec.random) = SDL_SwapLE32(*((uint32_t*)rec.random)); - //Decode from checksum - uint8_t *p; for (int i = 0; i < 4; i++) { - p = (uint8_t*)&rec.counter[i]; - p[0] -= rec.random[i]; + uint8_t *p = (uint8_t*)&rec.counter[i]; + p[0] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i]) : (rec.random[i] >> 1); p[1] -= rec.random[i]; p[2] -= rec.random[i]; - p[3] -= rec.random[i] >> 1; + p[3] -= (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? (rec.random[i] >> 1) : (rec.random[i]); } //Verify checksum's result diff --git a/src/MycParam.h b/src/MycParam.h index 2547791c..1de454d3 100644 --- a/src/MycParam.h +++ b/src/MycParam.h @@ -26,5 +26,5 @@ void PutActiveArmsList(); void PutMyLife(bool flash); void PutMyAir(int x, int y); void PutTimeCounter(int x, int y); - +bool SaveTimeCounter(); int LoadTimeCounter(); diff --git a/src/TextScr.cpp b/src/TextScr.cpp index 54a0756b..0ab047d8 100644 --- a/src/TextScr.cpp +++ b/src/TextScr.cpp @@ -706,6 +706,11 @@ int TextScriptProc() ChangeMyUnit(z); gTS.p_read += 8; } + else if (IS_COMMAND('S','T','C')) + { + SaveTimeCounter(); + gTS.p_read += 4; + } else if (IS_COMMAND('T','R','A')) { z = GetTextScriptNo(gTS.p_read + 4);