shithub: cstory

Download patch

ref: eaf7b08f2723bc9e6a9b1848b04ed3d78ab67307
parent: b734bed63f7db53fdd34ee78f6899e1dcad821b8
parent: b325efd981a809493682dceacd519a6be3c4b3bb
author: Cucky <44537737+cuckydev@users.noreply.github.com>
date: Fri Jan 25 05:58:25 EST 2019

Merge pull request #10 from Clownacy/master

Cleanup and fixes

--- a/Makefile
+++ b/Makefile
@@ -1,22 +1,20 @@
 RELEASE = 0
 
+ifeq ($(RELEASE), 0)
+CXXFLAGS := -O0 -g -static -mconsole
+FILENAME := debug
+else
+CXXFLAGS := -O3 -s -static
+FILENAME := release
+endif
+
 ifeq ($(JAPANESE), 1)
+CXXFLAGS += -DJAPANESE
 	ifeq ($(RELEASE), 0)
-	CXXFLAGS := -DJAPANESE -O0 -g -static -mconsole
 	FILENAME := debugjp
 	else
-	CXXFLAGS := -DJAPANESE -O3 -s -static
 	FILENAME := releasejp
 	endif
-
-else
-	ifeq ($(RELEASE), 0)
-	CXXFLAGS := -O0 -g -static -mconsole
-	FILENAME := debug
-	else
-	CXXFLAGS := -O3 -s -static
-	FILENAME := release
-	endif
 endif
 
 ifeq ($(FIX_BUGS), 1)
@@ -76,8 +74,6 @@
 	BITMAP/CREDIT16.bmp \
 	BITMAP/CREDIT17.bmp \
 	BITMAP/CREDIT18.bmp \
-	BITMAP/PIXEL.bmp \
-	BITMAP/PIXEL_JP.bmp \
 	ICON/4.bmp \
 	ORG/ACCESS \
 	ORG/ANZEN \
@@ -122,6 +118,12 @@
 	ORG/XXXX \
 	ORG/ZONBIE \
 	WAVE/WAVE100
+
+ifeq ($(JAPANESE), 1)
+	RESOURCES += BITMAP/PIXEL_JP.bmp
+else
+	RESOURCES += BITMAP/PIXEL.bmp
+endif
 
 OBJECTS = $(addprefix obj/$(FILENAME)/, $(addsuffix .o, $(SOURCES)))
 
--- a/src/Draw.cpp
+++ b/src/Draw.cpp
@@ -316,7 +316,7 @@
 	//Target surface
 	if (!surf[to].texture)
 	{
-		printf("Tried to draw to surface %s, which doesn't exist\n", to);
+		printf("Tried to draw to surface %d, which doesn't exist\n", to);
 		return;
 	}
 	
@@ -350,7 +350,7 @@
 	//Target surface
 	if (!surf[surf_no].texture)
 	{
-		printf("Tried to draw a rectangle to surface %s, which doesn't exist\n", surf_no);
+		printf("Tried to draw a rectangle to surface %d, which doesn't exist\n", surf_no);
 		return;
 	}
 	
--- a/src/Ending.cpp
+++ b/src/Ending.cpp
@@ -123,7 +123,7 @@
 void ReloadIllust(int a)
 {
 	char name[16];
-	sprintf(name, "CREDIT%02ld", a);
+	sprintf(name, "CREDIT%02d", a);
 	ReloadBitmap_Resource(name, SURFACE_ID_CREDITS_IMAGE);
 }
 
--- a/src/Font.cpp
+++ b/src/Font.cpp
@@ -4,7 +4,9 @@
 #include <stddef.h>
 #include <stdlib.h>
 
+#ifdef JAPANESE
 #include <iconv.h>
+#endif
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
@@ -38,25 +40,47 @@
 	unsigned int length;
 	unsigned long charcode;
 
-	if ((string[0] & 0x80) == 0)
+	unsigned int zero_bit = 0;
+	for (unsigned char lead_byte = string[0]; zero_bit < 5 && (lead_byte & 0x80); ++zero_bit, lead_byte <<= 1);
+
+	switch (zero_bit)
 	{
-		length = 1;
-		charcode = string[0] & 0x7F;
-	}
-	else if ((string[0] & 0xE0) == 0xC0)
-	{
-		length = 2;
-		charcode = ((string[0] & ~0xE0) << 6) | (string[1] & 0x3F);
-	}
-	else if ((string[0] & 0xF0) == 0xE0)
-	{
-		length = 3;
-		charcode = ((string[0] & ~0xF0) << (6 * 2)) | ((string[1] & 0x3F) << 6) | (string[2] & 0x3F);
-	}
-	else //if (string[0] & 0xF8 == 0xF0)
-	{
-		length = 4;
-		charcode = ((string[0] & ~0xF8) << (6 * 3)) | ((string[1] & 0x3F) << (6 * 2)) | ((string[2] & 0x3F) << 6) | (string[3] & 0x3F);
+		case 0:
+			// Single-byte character
+			length = 1;
+			charcode = string[0];
+			break;
+
+		case 2:
+		case 3:
+		case 4:
+			length = zero_bit;
+			charcode = string[0] & (1 << (8 - zero_bit)) - 1;
+
+			for (unsigned int i = 1; i < zero_bit; ++i)
+			{
+				if ((string[i] & 0xC0) == 0x80)
+				{
+					charcode <<= 6;
+					charcode |= string[i] & ~0xC0;
+				}
+				else
+				{
+					// Error: Invalid continuation byte
+					length = 1;
+					charcode = 0xFFFD;
+					break;
+				}
+			}
+
+			break;
+
+		default:
+			// Error: Invalid lead byte
+			length = 1;
+			charcode = 0xFFFD;
+			break;
+
 	}
 
 	if (bytes_read)
--- a/src/GenericLoad.cpp
+++ b/src/GenericLoad.cpp
@@ -3,11 +3,7 @@
 
 bool LoadGenericData()
 {
-#ifdef JAPANESE
-	MakeSurface_Resource("PIXEL_JP", 1);
-#else
 	MakeSurface_Resource("PIXEL", 1);
-#endif
 	
 	bool bError = false;
 	if (!MakeSurface_File("MyChar", 16))
--- a/src/Resource.cpp
+++ b/src/Resource.cpp
@@ -64,8 +64,11 @@
 #include "Resource/BITMAP/CREDIT16.bmp.h"
 #include "Resource/BITMAP/CREDIT17.bmp.h"
 #include "Resource/BITMAP/CREDIT18.bmp.h"
-#include "Resource/BITMAP/PIXEL.bmp.h"
+#ifdef JAPANESE
 #include "Resource/BITMAP/PIXEL_JP.bmp.h"
+#else
+#include "Resource/BITMAP/PIXEL.bmp.h"
+#endif
 #include "Resource/ICON/4.bmp.h"
 
 const unsigned char* GetResource(const char *name, size_t *size)
@@ -377,13 +380,13 @@
 	}
 	if (!strcmp(name, "PIXEL"))
 	{
-		*size = sizeof(rPIXEL);
-		return rPIXEL;
-	}
-	if (!strcmp(name, "PIXEL_JP"))
-	{
+#ifdef JAPANESE
 		*size = sizeof(rPIXEL_JP);
 		return rPIXEL_JP;
+#else
+		*size = sizeof(rPIXEL);
+		return rPIXEL;
+#endif
 	}
 	
 	//ICON
--- a/src/Sound.cpp
+++ b/src/Sound.cpp
@@ -31,6 +31,7 @@
 	
 	playing = false;
 	looping = false;
+	looped = false;
 	
 	frequency = 0.0;
 	volume = 1.0;
@@ -274,7 +275,7 @@
 	uint8_t *buf = nullptr;
 	size_t len;
 		
-	for (size_t n = 0; n < SOUND_NO; n++)
+	for (unsigned int n = 0; n < SOUND_NO; n++)
 	{
 		sprintf(path, "%2.2X.pxt", n);