ref: ded926b422c4bc9e256e0baacb6a68f16972ceaf
parent: efec3d420d60b03cf7b619f310f0a943a40fa0be
author: cuckydev <[email protected]>
date: Sat Feb 9 13:03:38 EST 2019
Saving Nikumaru Counter
--- a/Makefile
+++ b/Makefile
@@ -1,18 +1,18 @@
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
@@ -19,7 +19,7 @@
FILENAME ?= $(FILENAME_DEF)
ifeq ($(FIX_BUGS), 1)
-CXXFLAGS += -DFIX_BUGS
+ CXXFLAGS += -DFIX_BUGS
endif
ifeq ($(WINDOWS), 1)
binary files /dev/null b/build/data/ArmsItemJapanese.tsc differ
--- /dev/null
+++ b/build/data/CreditJapanese.tsc
@@ -1,0 +1,19 @@
+KPQYR-*APPSS-*{@@]@���
+����@]@@}PPPP-*MPSRP-*{������ɢ���ݰ��b��}PPPPMPPVT-*{�ͫc���z����@@@@@@}PPPPMPPSR-*{�`���@��H�x�{I@@@}PPPQMPPVT-*{���x���
+� �x�{���z}PPPPMPPSR-*{�`���@����@@@@@@@}PPPRMPPVT-*{�x�{���
+��@@@@@@@@}PPPPMPPSR-*{�`���@�s� @@@@@@@}PPPSMPPVT-*{�x�{�챃���@@@@@@}PPPPMPPSR-*{�`���{�x�~�{@@@@@@}PPPTMPPVT-*{�����k�{�����е���}PPPPMPPSR-*{�`����@@@@@@@@@@@@}PPPUMPPVT-*MPPVS-*{�������k�{���ڡ�@@}PPPPMPPVT-*{�d�բ͢䬲�c@@@@@@}PPPPMPPSR-*{�`������@@@@@@@@@@}PPQSMPPVT-*{�ڢ죪�{��{@@@@@@}PPPPMPPSR-*{�`�l���o@@@@@@@@@@}PPQTMPPVT-*{�ڢ죉�����{�q@@@@}PPPPMPPSR-*{�`�w�����n@@@@@@@@}PPQUMPPVT-*{� ���h����� @@@@@@}PPPPMPPSR-*{�`���{����@@@@@@@@}PPQVMPPVT-*{����ʢբݢ�@@@@@@}PPPPMPPSR-*{�`�ɢ����@@@@@@@@}PPRPMPPVT-*{�����緽@@@@@@@@@@}PPPPMPPSR-*{�`�o���@@@@@@@@@@}PPQYMPPVT-*MPPVS-*{���n�t������@@@@@@}PPPPMPPVT-*{�
+��� ���@@@@@@@@}PPPPMPPSR-*{�`�t���~@@@@@@@@@@}PPQWMPPVT-*{�f�����k�{@@@@@@@@}PPPPMPPSR-*{�`�����r@@@@@@@@@@}PPQXMPPVT-*{���ٮڢ�� ��@@@@}PPPPMPPSR-*{�`�����r@@@@@@@@@@}PPRUMPPVT-*MPPVS-*{���۫��}PPPPMPPVT-*{�����k�{�����@@@@}PPPPMPPSR-*{�`�j�{���{@@@@@@@@}PPPWMPPVT-*{�j�{���{�ʨ����@@}PPPPMPPSR-*{�`�r�����y@@@@@@@@}PPPXMPPVT-*{�۫���Ӵ���@@@@@@}PPPPMPPSR-*{�`�w�f���j@@@@@@@@}PPPYMPPVT-*MPPSQ-*{�w�f���j���Ĭ²b@@}PPPPMPPSR-*{�`���w��@@@@@@@@@@}PPQPMPPSR-*{�`�v����@@@@@@@@@@}PPQPMPPSR-*{�`�j�p��@@@@@@@@@@}PPQPMPPSR-*{�`�����n@@@@@@@@@@}PPQPMPPSR-*{�`����@@@@@@@@@@@@}PPQPMPPVT-*MPPVS-*{�����@@@@@@@@@@}PPPPMPPVT-*{��쵰� ��@@@@@@}PPPPMPPSR-*{�`������@@@@@@@@@@}PPRWMPPVT-*{������@@@@@@@@}PPPPMPPSR-*{�`���n�~�{�ڸc@@@@}PPRXMPPVT-*{���������@@@@@@@@}PPPPMPPSR-*{�`���{�x�`�@@@@@@}PPRYMPPVT-*MPPVS-*{��������@@@@@@@@}PPPPMPPVT-*{�ͯ������k�{@@@@@@}PPPPMPPSR-*{�`���g@@@@@@@@@@@@}PPRSMPPVT-*{�
+�����k�{@@@@@@@@}PPPPMPPSR-*{�`�{����@@@@@@@@@@}PPRTMPPVT-*{�����˫`�緽@@@@@@}PPPPMPPSR-*{�`���ʢ�@@@@@@@@@@}PPRRMPPVT-*{���n�~�{�m��@@@@@@}PPPPMPPSR-*{�`�x�r����+�����@@@@@@}PPPPMPPSR-*{�`���j@�s��@@@@@@@}PPSUMPPVT-*{����l���r@@@@@@@@}PPPPMPPSR-*{�`���e��������@@@@}PPTUMPPVT-*{�o�����z�+��@@@@}PPPPMPPSR-*{�`��������@@@@@@@@}PPSQMPPVT-*{����ԯz��@@@@@@@@}PPPPMPPSR-*{�`�n���d���{@@@@@@}PPSRMPPVT-*{���Ģ ��@@@@@@}PPPPMPPSR-*{�`����@@@@@@@@@@@@}PPXXMPPVT-*�PQPP-*-*�PPYP-*{���ˮ��ݢߡ�@@@@@@}PPPPMPPVT-*{�ĪŢ��â٢�
+�ծ�}PPPPMPPSR-*{�`���n�~�{@@@@@@@@}PPPVMPPVT-*{�ĪŢ��� �
+�ծ�@@}PPPPMPPSR-*{�`���u���{@@@@@@@@}PPQQMPPVT-*{���i�i�������@@@@}PPPPMPPSR-*{�`�������o@@@@@@@@}PPQRMPPVT-*MPPVS-*{���ۢ��ܡ�@@@@@@@@}PPPPMPPVT-*{���
+�����@@@@@@}PPPPMPPSR-*{�`���j@�s��@@@@@@@}PPSUMPPVT-*{�l�Ϣʱ�� �l���r@@}PPPPMPPSR-*{�`���e��������@@@@}PPTUMPPVT-*{�o�����z�+��@@@@}PPPPMPPSR-*{�`��������@@@@@@@@}PPSQMPPVT-*{����ԯz��@@@@@@@@}PPPPMPPSR-*{�`�n���d���{@@@@@@}PPSRMPPVT-*{���Ģ ��@@@@@@}PPPPMPPSR-*{�`����@@@@@@@@@@@@}PPXXMPPVT-*MPPVS-*{��������
+�ݰ٨��}PPPPMPPVT-*{���բˣw�f���j��� }PPPPMPPSR-*{�`�����x@@@@@@@@@@}PQPSMPPVT-*�PQPP-*MPQPP-*�-*MPRUP-*APPPQ-*KPPVS-*{@]@�����x�~�{�ݢ�@]@}PPPPMPPSR-*MPPVS-*{@���ޢ�բ��ݢZ�n�����~�{}PPSYMPPTX-*{@�䷐�r�e����Z������@@@@@@@@}PPTPMPPTX-*{@�ݢɢʼ��¢�� +�c�ޢ�Z�����m��@@@@@@@@@@}PPSXMPPTX-*{@�k�e�`�˪��Z��@@@@@@@@@@}PPTTMPPTX-*{@�Т���ım�Z���w��@@@@@@@@}PPTYMPPTX-*{@�ɲ���|Z���{����@@@@@@@@@@}PPTVMPPTX-*{@�������Z���x@@@@@@@@@@@@}PPTWMPPTX-*{@�Ţ�����Z�����{�n�����~�{@@}PPUPMPPTX-*{@���j�����Z��������@@@@@@@ }PPUQMPPTX-*{@�̢Ӣ£j�g��Z����@@@@@@@@@@}PPUTMPPTX-*{@�j�g���Т�ТZ�������o@@@@}PPUUMPPTX-*{@��� ��� �y��Z�����n���q@@@@}PPURMPPTX-*{@���ģn���qZ�n����@@@@@@@@@@}PPUSMPPTX-*{@�Ŷ|�ۣ����k�{Z������@@@@@@}PPUWMPPTX-*{@�Ʈ����Z�����x@@@@@@@@@@@@}PPUVMPPTX-*{@���r�h�¢���Z�ۣ���@@@@@@@@}PPVQMPPTX-*{@�����ijʪw��Z�x�j��������@@}PPVSMPPTX-*{@�۲�����Z�x�j���x������@@}PPVUMPPTX-*{@���«ͳgZ�x�p������@@@@@@@@}PPVRMPPTX-*{@�۫�죎���~�{Z�n���e@@@@@@}PPVTMPPTX-*{@��t�c��Z�a�����w��@@@@@@}PPVPMPPTX-*{@���ע��ʷZ�������v��@@@@@@}PPUYMPPTX-*{@� �� �����u� Z���c���{@@}PPUXMPPTX-*{@�Ŷ|�ۣ�������Z�����j��@@}PPVVMPPTX-*{@����z��Z�k�e���b@@@@@@@@}PPVWMPPTX-*{@���� ��Z�a�{���{@@@@@@@@}PPVXMPPTX-*{@�z���췱Z�k�e���b�g���o@@@@}PPVYMPPTX-*{@��������`Z���`�c�a���{��@@}PPWQMPPTX-*{@�²����ֶݱ�Z���������{�x}PPWSMPPTX-*{@���aZ������@@@@@@@@@@@@@@}PPWRMPPTX-*{@�k�e���b����Z���`�y@@@@@@@@}PPWTMPPTX-*{@�Т��ɢݢ��Z���`�y�r�a@@@@}PPWUMPPTX-*{@�Ȣ��֢�Z����٢���@@@@@@}PPWVMPPTX-*{@���ۢ��ش�Z�����s���}����@@}PPWYMPPTX-*{@���ഺ��Z�j�e���~�{����@@@@}PPWXMPPTX-*{@�o���������Z� ����@@@@@@}PPXQMPPTX-*{@�բ�� Z�������{@@@@@@@@@@@@}PPXRMPPTX-*{@����̰ ��Z������@@@@@@@@}PPXUMPPTX-*{@���ɢ�֢+��Z�����{��@@@@}PPXTMPPTX-*{@�Ţ��Z�k�����b���v��@@@@@@}PPXVMPPTX-*{@�
+������Z�i�����w����@@@@@@}PPXSMPPTX-*{@�����죇����Z�x�~�����{@@}PPXWMPPTX-*-*�RPPPZPQYP�PRPP�PQYP-*MPPPR-*{@�����쮇��Z�����{��@@@@@@@@}PPYXMPPTX-*{@�����쮇��Z���t@@@@@@@@@@@@}PPYYMPPTX-*{@�Ӯ��c���˶�Z�o���{��������}PQPPMPPTX-*{@����}�ʢ����Z���{�����o@@}PPYTMPPTX-*{@���h����̢���Z�����{��@@@@}PPYUMPPTX-*�PRPP-*MPQPP-*KPPVT-*{@]@���x�ݢ�@]@}PPPPMPPSR-*MPPVS-*{�x�{��Ӣ���ݫŶ|�ۣ����k�{}PPPPMPPSR-*{�`�c�s�{��}PPYQMPPVT-*{���u���{�춢�`�壏�����o�ʵﰇ}PPPPMPPSR-*{�`���x�������o}PQPTMPPVT-*{�ۢ�����`�b��}PPPPMPPSR-*{�`�i���k}PQPUMPPVT-*{���©������}PPPPMPPSR-*{�`��������}PQPXMPPVT-*{���㯪�髯���¢ݢȩۢ�}PPPPMPPSR-*{�`���{�e�������n}PPSPMPPVT-*{����� ������x}PPPPMPPSR-*{�`�����x�~�{��}PPWPMPPVT-*{�����s��}PPPPMPPSR-*{�`�r�a}PQPVMPPVT-*{�����ζ̢��ۢ
+�ݫ���}PPPPMPPSR-*{�`�a�c����������}PPWWMPPVT-*{��p�ע ���������}PPPPMPPSR-*{�`�v�x�~�{�y}PPXPMPPVT-*{�~���e���ʯ���Ĩ˶�}PPPPMPPSR-*{�`���s}PPXYMPPVT-*{���¬��ۢ����ʶ|��}PPPPMPPSR-*{�`�����x�����n�~�{}PQPYMPPVT-*{�֫c���n�~�{�泧���s��}PPPPMPPSR-*{�`�a���������r�a}PQPWMPPVT-*�RPPPZPRYP�PSPP�PRYP-*MPPPR-*{���բݣ��j}PPPPMPPSR-*{�`�����b�����x}PQQQMPPVT-*{���ˢ��֫c����}PPPPMPPSR-*{�`�����x}PQQPMPQRX-*�PSPP-*MPPXP-*KPPTP-*{@]@������@]@}PPPPMPPSR-*MPPSQ-*{�a�n�z�x@@@@}PPSVMPPSR-*{����@@@@@@@@}PPSVMPPSR-*{�����k�{����}PPSVMPPSR-*{��������@@@@}PPSVMPPSR-*{�������o�죅�{��}PPSVMPPSR-*MPPSQ-*{�o�������b@@}PPSVMPPSR-*{�z���~���{@@}PPSVMPPSR-*{���s���s@@@@}PPSVMPPSR-*{� ����ͣ���}PPSVMPPSR-*{����@@@@@@@@}PPSVMPPSR-*MPPSQ-*{�n�t���������}PPSVMPPSR-*{�r�Ƣ ����@@}PPSVMPPSR-*{��������e���q}PPSVMPPSR-*{�|�n@@@@@@@@}PPSVMPPSR-*{�ƢТ�i@@@@}PPSVMPPSR-*MPPSQ-*{�֢Ƣ�ɢp@@}PPSVMPPSR-*{�֢Ƣ�ɢq@@}PPSVMPPSR-*{����`�c��}PPSVMPPSR-*{���m@@@@@@@@}PPSVMPPSR-*{�Ӵ��ע ���j��}PPSVMPPSR-*MPPSQ-*{�֢ˢݰ��h@@}PPSVMPPSR-*{���ɢ�� @@@@}PPSVMPPSR-*{���m�촗��@@}PPSVMPPSR-*{���ˢ��Ģ�@@}PPSVMPPSR-*{���h@@@@@@@@}PPSVMPPSR-*MPPSQ-*{�Ԭa�Ȭ
+@@@@}PPSVMPPSR-*{������Ԭa@@}PPSVMPPSR-*{�����r���{@@}PPSVMPPSR-*{�p��@@@@@@@@}PPSVMPPSR-*{�}�����{@@@@}PPSVMPPSR-*MPPSQ-*{���x��������}PPSVMPPSR-*{�����@����NN}PPSVMPPSR-*{���������o����}PPSVMPPSR-*{�������@@@@}PPSVMPPSR-*{�a��h@@@@@@}PPSVMPPSR-*MPQPP-*KPPTP-*{]@�¸��������ݵ�x@]}PPPPMPPSR-*KPPTX-*MPPSR-*{����@@@@@@}PPSWMPPTP-*{���i�n@@@@}PQRRMPPTP-*{�͢�¢���}PQQYMPPTP-*{baR@@@@@@@}PPSSMPPTP-*{����@@@@@@}PQRPMPPTP-*{n��@@@@@@@}PQQWMPPTP-*{�ۢբ���r����x}PPPPMPPTP-*MPPVS-*{����ʢ��ĢҢԢ¢��բݡb}PQRYMPPSR-*MPRTP-*KPQRP-*{�Ԭa�Ȭ
+@�Ȣ �}PPPP-*MPRXP-*O-*-*\\\-*RPPP�j�{���{�g�����b���o
\ No newline at end of file
binary files /dev/null b/build/data/HeadJapanese.tsc differ
binary files /dev/null b/build/data/StageSelectJapanese.tsc differ
--- a/src/MycParam.cpp
+++ b/src/MycParam.cpp
@@ -382,6 +382,75 @@
}
}
+bool SaveTimeCounter()
+{
+ REC rec;
+
+ //Quit if player doesn't have the Nikumaru Counter
+ if (!(gMC.equip & 0x100))
+ return true;
+
+ //Get last time
+ char path[PATH_LENGTH];
+ sprintf(path, "%s/290.rec", gModulePath);
+
+ SDL_RWops *fp = SDL_RWFromFile(path, "rb");
+ if (fp)
+ {
+ //Read data
+ rec.counter[0] = SDL_ReadLE32(fp);
+ rec.counter[1] = SDL_ReadLE32(fp);
+ rec.counter[2] = SDL_ReadLE32(fp);
+ rec.counter[3] = SDL_ReadLE32(fp);
+ rec.random[0] = SDL_ReadU8(fp);
+ rec.random[1] = SDL_ReadU8(fp);
+ rec.random[2] = SDL_ReadU8(fp);
+ rec.random[3] = SDL_ReadU8(fp);
+ SDL_RWclose(fp);
+
+ //Decode from checksum
+ for (int i = 0; i < 4; 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]);
+ }
+
+ //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 @@
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
--- a/src/MycParam.h
+++ b/src/MycParam.h
@@ -26,5 +26,5 @@
void PutMyLife(bool flash);
void PutMyAir(int x, int y);
void PutTimeCounter(int x, int y);
-
+bool SaveTimeCounter();
int LoadTimeCounter();
--- a/src/TextScr.cpp
+++ b/src/TextScr.cpp
@@ -706,6 +706,11 @@
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);