shithub: cstory

Download patch

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);