shithub: cstory

Download patch

ref: 5ec9fea302a39d6212584fd255a770e5a4be559e
parent: 3cbe18b9c521e1ff3dab9a0fec27b6a40ebe2882
author: Clownacy <[email protected]>
date: Sat Apr 13 23:36:57 EDT 2019

The build folder is now automatically generated

This way, we don't need to tell everyone who uses the enhanced branch
that they need to copy res/data_en. It also gives the CMake project a
way to bundle everything into a neat little folder.

--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@
 
 # Misc
 /obj
-/build/data*
+/build
 *.dat
 *.rec
 build.7z
@@ -13,10 +13,10 @@
 *.exe
 
 # MSVC trash
-msvc2003/CSE2.ncb
-msvc2003/CSE2.suo
-msvc2003/Debug
-msvc2003/Release
-msvc2003/Debug (Japanese)
-msvc2003/Release (Japanese)
+msvc/msvc2003/CSE2.ncb
+msvc/msvc2003/CSE2.suo
+msvc/msvc2003/Debug
+msvc/msvc2003/Release
+msvc/msvc2003/Debug (Japanese)
+msvc/msvc2003/Release (Japanese)
 *.aps
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -220,9 +220,11 @@
 
 # Handle options
 if (JAPANESE)
+	set(FILES_DIR "res/files_jp")
 	list(APPEND RESOURCES "BITMAP/PIXEL_JP.bmp")
 	target_compile_definitions(CSE2 PRIVATE JAPANESE)
 else()
+	set(FILES_DIR "res/files_en")
 	list(APPEND RESOURCES "BITMAP/PIXEL.bmp")
 endif()
 
@@ -240,7 +242,7 @@
 
 # Make some tweaks if we're targetting Windows
 if (WIN32)
-	target_sources(CSE2 PRIVATE "res/ICON/ICON.rc")
+	target_sources(CSE2 PRIVATE "res/resources/ICON/ICON.rc")
 	target_compile_definitions(CSE2 PRIVATE WINDOWS)
 	set_target_properties(CSE2 PROPERTIES WIN32_EXECUTABLE YES)	# Disable the console window
 else()
@@ -248,9 +250,9 @@
 endif()
 
 # Magic to convert resources to header files
-add_executable(bin2h res/bin2h.c)
+add_executable(bin2h src/misc/bin2h.c)
 foreach(FILENAME IN LISTS RESOURCES)
-	set(IN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res")
+	set(IN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/res/resources")
 	set(OUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/Resource")
 	get_filename_component(DIRECTORY "${FILENAME}" DIRECTORY)
 	add_custom_command(
@@ -335,3 +337,12 @@
 target_include_directories(CSE2 PRIVATE ${SDL2_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS})
 target_compile_options(CSE2 PRIVATE ${SDL2_CFLAGS_OTHER} ${FREETYPE_CFLAGS_OTHER})
 target_link_libraries(CSE2 ${SDL2_LIBRARIES} ${FREETYPE_LIBRARIES})
+
+# Set up the output directory
+add_custom_command(TARGET CSE2 PRE_BUILD
+	COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/cavestory")
+
+set_target_properties(CSE2 PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/cavestory")
+
+add_custom_command(TARGET CSE2 POST_BUILD
+	COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/${FILES_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/cavestory")
--- a/Makefile
+++ b/Makefile
@@ -200,10 +200,20 @@
 	OBJECTS += obj/$(FILENAME)/win_icon.o
 endif
 
-all: build/$(FILENAME)
+all: build
 
-build/$(FILENAME): $(OBJECTS)
+ifeq ($(JAPANESE), 1)
+build: res/files_jp obj/$(FILENAME)/$(FILENAME)
+else
+build: res/files_en obj/$(FILENAME)/$(FILENAME)
+endif
 	@mkdir -p $(@D)
+	@echo "Copying files to 'build'"
+	@cp -r $< $@
+	@cp obj/$(FILENAME)/$(FILENAME) $@
+
+obj/$(FILENAME)/$(FILENAME): $(OBJECTS)
+	@mkdir -p $(@D)
 	@echo Linking
 	@$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
 	@echo Finished compiling: $@
@@ -218,12 +228,12 @@
 	@echo Compiling $<
 	@$(CXX) $(CXXFLAGS) $< -o $@ -c
 
-src/Resource/%.h: res/% obj/bin2h
+src/Resource/%.h: res/resources/% obj/bin2h
 	@mkdir -p $(@D)
 	@echo Converting $<
 	@obj/bin2h $< $@
 
-obj/bin2h: res/bin2h.c
+obj/bin2h: src/misc/bin2h.c
 	@mkdir -p $(@D)
 	@echo Compiling $^
 	@$(CC) -O3 -s -std=c90 $^ -o $@
@@ -230,7 +240,7 @@
 
 include $(wildcard $(DEPENDENCIES))
 
-obj/$(FILENAME)/win_icon.o: res/ICON/ICON.rc res/ICON/0.ico res/ICON/ICON_MINI.ico
+obj/$(FILENAME)/win_icon.o: res/resources/ICON/ICON.rc res/resources/ICON/0.ico res/resources/ICON/ICON_MINI.ico
 	@mkdir -p $(@D)
 	@windres $< $@
 
binary files a/build/font/cour.ttf /dev/null differ
binary files a/build/font/msgothic.ttc /dev/null differ
binary files a/res/BITMAP/CREDIT01.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT02.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT03.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT04.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT05.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT06.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT07.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT08.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT09.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT10.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT11.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT12.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT14.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT15.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT16.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT17.bmp /dev/null differ
binary files a/res/BITMAP/CREDIT18.bmp /dev/null differ
binary files a/res/BITMAP/PIXEL.bmp /dev/null differ
binary files a/res/BITMAP/PIXEL_JP.bmp /dev/null differ
binary files a/res/CURSOR/CURSOR_IKA.bmp /dev/null differ
binary files a/res/CURSOR/CURSOR_NORMAL.bmp /dev/null differ
binary files a/res/ICON/0.ico /dev/null differ
--- a/res/ICON/ICON.rc
+++ /dev/null
@@ -1,2 +1,0 @@
-101 ICON "0.ico"
-102 ICON "ICON_MINI.ico"
binary files a/res/ICON/ICON_MINI.bmp /dev/null differ
binary files a/res/ICON/ICON_MINI.ico /dev/null differ
binary files a/res/ORG/ACCESS.org /dev/null differ
binary files a/res/ORG/ANZEN.org /dev/null differ
binary files a/res/ORG/BALCONY.org /dev/null differ
binary files a/res/ORG/BALLOS.org /dev/null differ
binary files a/res/ORG/BDOWN.org /dev/null differ
binary files a/res/ORG/CEMETERY.org /dev/null differ
binary files a/res/ORG/CURLY.org /dev/null differ
binary files a/res/ORG/DR.org /dev/null differ
binary files a/res/ORG/ENDING.org /dev/null differ
binary files a/res/ORG/ESCAPE.org /dev/null differ
binary files a/res/ORG/FANFALE1.org /dev/null differ
binary files a/res/ORG/FANFALE2.org /dev/null differ
binary files a/res/ORG/FANFALE3.org /dev/null differ
binary files a/res/ORG/FIREEYE.org /dev/null differ
binary files a/res/ORG/GAMEOVER.org /dev/null differ
binary files a/res/ORG/GINSUKE.org /dev/null differ
binary files a/res/ORG/GRAND.org /dev/null differ
binary files a/res/ORG/GRAVITY.org /dev/null differ
binary files a/res/ORG/HELL.org /dev/null differ
binary files a/res/ORG/IRONH.org /dev/null differ
binary files a/res/ORG/JENKA.org /dev/null differ
binary files a/res/ORG/JENKA2.org /dev/null differ
binary files a/res/ORG/KODOU.org /dev/null differ
binary files a/res/ORG/LASTBT3.org /dev/null differ
binary files a/res/ORG/LASTBTL.org /dev/null differ
binary files a/res/ORG/LASTCAVE.org /dev/null differ
binary files a/res/ORG/MARINE.org /dev/null differ
binary files a/res/ORG/MAZE.org /dev/null differ
binary files a/res/ORG/MDOWN2.org /dev/null differ
binary files a/res/ORG/MURA.org /dev/null differ
binary files a/res/ORG/OSIDE.org /dev/null differ
binary files a/res/ORG/PLANT.org /dev/null differ
binary files a/res/ORG/QUIET.org /dev/null differ
binary files a/res/ORG/REQUIEM.org /dev/null differ
binary files a/res/ORG/TOROKO.org /dev/null differ
binary files a/res/ORG/VIVI.org /dev/null differ
binary files a/res/ORG/WANPAK2.org /dev/null differ
binary files a/res/ORG/WANPAKU.org /dev/null differ
binary files a/res/ORG/WEED.org /dev/null differ
binary files a/res/ORG/WHITE.org /dev/null differ
binary files a/res/ORG/XXXX.org /dev/null differ
binary files a/res/ORG/ZONBIE.org /dev/null differ
binary files a/res/WAVE/WAVE100 /dev/null differ
--- a/res/bin2h.c
+++ /dev/null
@@ -1,92 +1,0 @@
-/*Bin2h by -C-u-c-k-y- Clownypants*/
-/*Converts files to the .h's expected by Cave Story Engine for resources.*/
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int main(int argc, char *argv[])
-{
-	int result = 0;
-
-	if (argc > 2)
-	{
-		char *last_forward_slash;
-		char *last_back_slash;
-		char *last_path_seperator;
-		char *filename_pointer;
-		char *dot;
-		size_t filename_length;
-		char *filename;
-		FILE *in_file;
-		FILE *out_file;
-
-		last_forward_slash = strrchr(argv[1], '/');
-		last_back_slash = strrchr(argv[1], '\\');
-
-		last_path_seperator = last_forward_slash > last_back_slash ? last_forward_slash : last_back_slash;
-
-		filename_pointer = (last_path_seperator == NULL) ? argv[1] : last_path_seperator + 1;
-		dot = strchr(filename_pointer, '.');
-		filename_length = (dot == NULL) ? strlen(filename_pointer) : dot - filename_pointer;
-
-		filename = malloc(filename_length + 1);
-		memcpy(filename, filename_pointer, filename_length);
-		filename[filename_length] = '\0';
-
-		in_file = fopen(argv[1], "rb");
-		out_file = fopen(argv[2], "w");
-
-		if (in_file == NULL)
-		{
-			printf("Couldn't open '%s'\n", argv[1]);
-			result = 1;
-		}
-		else if (out_file == NULL)
-		{
-			printf("Couldn't open '%s'\n", argv[2]);
-			result = 1;
-		}
-		else
-		{
-			long in_file_size;
-			unsigned char *in_file_buffer;
-			unsigned char *in_file_pointer;
-			long i;
-
-			fseek(in_file, 0, SEEK_END);
-			in_file_size = ftell(in_file);
-			rewind(in_file);
-			in_file_buffer = malloc(in_file_size);
-			fread(in_file_buffer, 1, in_file_size, in_file);
-			fclose(in_file);
-			in_file_pointer = in_file_buffer;
-
-			setvbuf(out_file, NULL, _IOFBF, 0x10000);
-
-			fprintf(out_file, "#pragma once\n\nconst unsigned char r%s[0x%lX] = {\n\t", filename, in_file_size);
-
-			for (i = 0; i < in_file_size - 1; ++i)
-			{
-				if (i % 16 == 15)
-					fprintf(out_file, "0x%02X,\n\t", *in_file_pointer++);
-				else
-					fprintf(out_file, "0x%02X, ", *in_file_pointer++);
-			}
-
-			fprintf(out_file, "0x%02X\n};\n", *in_file_pointer++);
-
-			fclose(out_file);
-			free(in_file_buffer);
-		}
-
-		free(filename);
-	}
-	else
-	{
-		result = 1;
-	}
-
-	return result;
-}
binary files /dev/null b/res/files_en/font/cour.ttf differ
binary files /dev/null b/res/files_jp/font/msgothic.ttc differ
binary files /dev/null b/res/resources/BITMAP/CREDIT01.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT02.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT03.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT04.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT05.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT06.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT07.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT08.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT09.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT10.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT11.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT12.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT14.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT15.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT16.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT17.bmp differ
binary files /dev/null b/res/resources/BITMAP/CREDIT18.bmp differ
binary files /dev/null b/res/resources/BITMAP/PIXEL.bmp differ
binary files /dev/null b/res/resources/BITMAP/PIXEL_JP.bmp differ
binary files /dev/null b/res/resources/CURSOR/CURSOR_IKA.bmp differ
binary files /dev/null b/res/resources/CURSOR/CURSOR_NORMAL.bmp differ
binary files /dev/null b/res/resources/ICON/0.ico differ
--- /dev/null
+++ b/res/resources/ICON/ICON.rc
@@ -1,0 +1,2 @@
+101 ICON "0.ico"
+102 ICON "ICON_MINI.ico"
binary files /dev/null b/res/resources/ICON/ICON_MINI.bmp differ
binary files /dev/null b/res/resources/ICON/ICON_MINI.ico differ
binary files /dev/null b/res/resources/ORG/ACCESS.org differ
binary files /dev/null b/res/resources/ORG/ANZEN.org differ
binary files /dev/null b/res/resources/ORG/BALCONY.org differ
binary files /dev/null b/res/resources/ORG/BALLOS.org differ
binary files /dev/null b/res/resources/ORG/BDOWN.org differ
binary files /dev/null b/res/resources/ORG/CEMETERY.org differ
binary files /dev/null b/res/resources/ORG/CURLY.org differ
binary files /dev/null b/res/resources/ORG/DR.org differ
binary files /dev/null b/res/resources/ORG/ENDING.org differ
binary files /dev/null b/res/resources/ORG/ESCAPE.org differ
binary files /dev/null b/res/resources/ORG/FANFALE1.org differ
binary files /dev/null b/res/resources/ORG/FANFALE2.org differ
binary files /dev/null b/res/resources/ORG/FANFALE3.org differ
binary files /dev/null b/res/resources/ORG/FIREEYE.org differ
binary files /dev/null b/res/resources/ORG/GAMEOVER.org differ
binary files /dev/null b/res/resources/ORG/GINSUKE.org differ
binary files /dev/null b/res/resources/ORG/GRAND.org differ
binary files /dev/null b/res/resources/ORG/GRAVITY.org differ
binary files /dev/null b/res/resources/ORG/HELL.org differ
binary files /dev/null b/res/resources/ORG/IRONH.org differ
binary files /dev/null b/res/resources/ORG/JENKA.org differ
binary files /dev/null b/res/resources/ORG/JENKA2.org differ
binary files /dev/null b/res/resources/ORG/KODOU.org differ
binary files /dev/null b/res/resources/ORG/LASTBT3.org differ
binary files /dev/null b/res/resources/ORG/LASTBTL.org differ
binary files /dev/null b/res/resources/ORG/LASTCAVE.org differ
binary files /dev/null b/res/resources/ORG/MARINE.org differ
binary files /dev/null b/res/resources/ORG/MAZE.org differ
binary files /dev/null b/res/resources/ORG/MDOWN2.org differ
binary files /dev/null b/res/resources/ORG/MURA.org differ
binary files /dev/null b/res/resources/ORG/OSIDE.org differ
binary files /dev/null b/res/resources/ORG/PLANT.org differ
binary files /dev/null b/res/resources/ORG/QUIET.org differ
binary files /dev/null b/res/resources/ORG/REQUIEM.org differ
binary files /dev/null b/res/resources/ORG/TOROKO.org differ
binary files /dev/null b/res/resources/ORG/VIVI.org differ
binary files /dev/null b/res/resources/ORG/WANPAK2.org differ
binary files /dev/null b/res/resources/ORG/WANPAKU.org differ
binary files /dev/null b/res/resources/ORG/WEED.org differ
binary files /dev/null b/res/resources/ORG/WHITE.org differ
binary files /dev/null b/res/resources/ORG/XXXX.org differ
binary files /dev/null b/res/resources/ORG/ZONBIE.org differ
binary files /dev/null b/res/resources/WAVE/WAVE100 differ
--- /dev/null
+++ b/src/misc/bin2h.c
@@ -1,0 +1,92 @@
+/*Bin2h by -C-u-c-k-y- Clownypants*/
+/*Converts files to the .h's expected by Cave Story Engine for resources.*/
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main(int argc, char *argv[])
+{
+	int result = 0;
+
+	if (argc > 2)
+	{
+		char *last_forward_slash;
+		char *last_back_slash;
+		char *last_path_seperator;
+		char *filename_pointer;
+		char *dot;
+		size_t filename_length;
+		char *filename;
+		FILE *in_file;
+		FILE *out_file;
+
+		last_forward_slash = strrchr(argv[1], '/');
+		last_back_slash = strrchr(argv[1], '\\');
+
+		last_path_seperator = last_forward_slash > last_back_slash ? last_forward_slash : last_back_slash;
+
+		filename_pointer = (last_path_seperator == NULL) ? argv[1] : last_path_seperator + 1;
+		dot = strchr(filename_pointer, '.');
+		filename_length = (dot == NULL) ? strlen(filename_pointer) : dot - filename_pointer;
+
+		filename = malloc(filename_length + 1);
+		memcpy(filename, filename_pointer, filename_length);
+		filename[filename_length] = '\0';
+
+		in_file = fopen(argv[1], "rb");
+		out_file = fopen(argv[2], "w");
+
+		if (in_file == NULL)
+		{
+			printf("Couldn't open '%s'\n", argv[1]);
+			result = 1;
+		}
+		else if (out_file == NULL)
+		{
+			printf("Couldn't open '%s'\n", argv[2]);
+			result = 1;
+		}
+		else
+		{
+			long in_file_size;
+			unsigned char *in_file_buffer;
+			unsigned char *in_file_pointer;
+			long i;
+
+			fseek(in_file, 0, SEEK_END);
+			in_file_size = ftell(in_file);
+			rewind(in_file);
+			in_file_buffer = malloc(in_file_size);
+			fread(in_file_buffer, 1, in_file_size, in_file);
+			fclose(in_file);
+			in_file_pointer = in_file_buffer;
+
+			setvbuf(out_file, NULL, _IOFBF, 0x10000);
+
+			fprintf(out_file, "#pragma once\n\nconst unsigned char r%s[0x%lX] = {\n\t", filename, in_file_size);
+
+			for (i = 0; i < in_file_size - 1; ++i)
+			{
+				if (i % 16 == 15)
+					fprintf(out_file, "0x%02X,\n\t", *in_file_pointer++);
+				else
+					fprintf(out_file, "0x%02X, ", *in_file_pointer++);
+			}
+
+			fprintf(out_file, "0x%02X\n};\n", *in_file_pointer++);
+
+			fclose(out_file);
+			free(in_file_buffer);
+		}
+
+		free(filename);
+	}
+	else
+	{
+		result = 1;
+	}
+
+	return result;
+}