diff --git a/.gitignore b/.gitignore index fe93a06b..958ca91a 100755 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ nonmatchings/* __pycache__ # Automatically generated folders should be ignored +tools/dkr_assets_tool_src/_build/ build/ assets/ ucode/ diff --git a/asm/assets/assets.s b/asm/assets/assets.s index 0cdd7ec7..d4b3eafb 100755 --- a/asm/assets/assets.s +++ b/asm/assets/assets.s @@ -6139,6 +6139,8 @@ glabel ASSET_TEX2D_MENU_ICONTTAMULET4_0 .incbin "./build/us_1.0/assets/textures/2d/menu/icon_tt_amulet4_0.bin" glabel ASSET_TEX2D_MENU_ICONTTAMULET4_1 .incbin "./build/us_1.0/assets/textures/2d/menu/icon_tt_amulet4_1.bin" +glabel ASSET_TEX2D_COMICFANS +.incbin "./build/us_1.0/assets/textures/2d/font/comicfans/comicfans.bin" glabel ASSET_TEXTURES_2D_END /********** ASSET_TEXTURES_2D_TABLE **********/ @@ -7051,6 +7053,7 @@ glabel ASSET_TEXTURES_2D_TABLE .word ASSET_TEX2D_MENU_ICONTTAMULET3_1 - ASSET_TEXTURES_2D .word ASSET_TEX2D_MENU_ICONTTAMULET4_0 - ASSET_TEXTURES_2D .word ASSET_TEX2D_MENU_ICONTTAMULET4_1 - ASSET_TEXTURES_2D +.word ASSET_TEX2D_COMICFANS - ASSET_TEXTURES_2D .word ASSET_TEXTURES_2D_END - ASSET_TEXTURES_2D .word 0xFFFFFFFF glabel ASSET_TEXTURES_2D_TABLE_END diff --git a/include/asset_enums.h b/include/asset_enums.h index 59247c01..a13d30e5 100644 --- a/include/asset_enums.h +++ b/include/asset_enums.h @@ -2387,7 +2387,8 @@ typedef enum AssetTextures2dEnum { ASSET_TEX2D_MENU_ICONTTAMULET3_0, ASSET_TEX2D_MENU_ICONTTAMULET3_1, ASSET_TEX2D_MENU_ICONTTAMULET4_0, - ASSET_TEX2D_MENU_ICONTTAMULET4_1 + ASSET_TEX2D_MENU_ICONTTAMULET4_1, + ASSET_TEX2D_COMICFANS } AssetTextures2dEnum; /********** ASSET_GAME_TEXT **********/ @@ -4822,7 +4823,8 @@ typedef enum AssetFontsEnum { ASSET_FONTS_FUNFONT, ASSET_FONTS_SMALLFONT, ASSET_FONTS_BIGFONT, - ASSET_FONTS_SUBTITLEFONT + ASSET_FONTS_SUBTITLEFONT, + ASSET_FONTS_COMICFANS } AssetFontsEnum; /********** ASSET_TTGHOSTS **********/ diff --git a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/asmHeader.o b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/asmHeader.o index b727be1e..c7abd10e 100644 Binary files a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/asmHeader.o and b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/asmHeader.o differ diff --git a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/c/cHeader.o b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/c/cHeader.o index f8cba2a3..e0852926 100644 Binary files a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/c/cHeader.o and b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/c/cHeader.o differ diff --git a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/fileHelper.o b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/fileHelper.o index 27d1516a..ca171cfd 100644 Binary files a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/fileHelper.o and b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/helpers/fileHelper.o differ diff --git a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/prebuild/linker/ld.o b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/prebuild/linker/ld.o index 2454795d..00f357e8 100644 Binary files a/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/prebuild/linker/ld.o and b/tools/dkr_assets_tool_src/_build/dkr_assets_tool_src/prebuild/linker/ld.o differ diff --git a/tools/dkr_assets_tool_src/helpers/asmHeader.cpp b/tools/dkr_assets_tool_src/helpers/asmHeader.cpp index 17f76b0b..cceda181 100644 --- a/tools/dkr_assets_tool_src/helpers/asmHeader.cpp +++ b/tools/dkr_assets_tool_src/helpers/asmHeader.cpp @@ -50,5 +50,5 @@ void WritableAsmInclude::write_global_label(const std::string &label, bool align void WritableAsmInclude::save(fs::path filepath) { std::string headerText = _out.str(); - FileHelper::write_text_file(headerText, filepath, true); + FileHelper::write_text_file_if_changed(headerText, filepath, true); } diff --git a/tools/dkr_assets_tool_src/helpers/c/cHeader.cpp b/tools/dkr_assets_tool_src/helpers/c/cHeader.cpp index a3f98ef5..eac57804 100644 --- a/tools/dkr_assets_tool_src/helpers/c/cHeader.cpp +++ b/tools/dkr_assets_tool_src/helpers/c/cHeader.cpp @@ -30,5 +30,5 @@ void WritableCHeader::write_raw_text_line(std::string text) { void WritableCHeader::save(fs::path filepath) { std::string headerText = _out.str(); - FileHelper::write_text_file(headerText, filepath, true); + FileHelper::write_text_file_if_changed(headerText, filepath, true); } diff --git a/tools/dkr_assets_tool_src/helpers/fileHelper.cpp b/tools/dkr_assets_tool_src/helpers/fileHelper.cpp index bd2203a1..ebb3969c 100644 --- a/tools/dkr_assets_tool_src/helpers/fileHelper.cpp +++ b/tools/dkr_assets_tool_src/helpers/fileHelper.cpp @@ -41,6 +41,24 @@ void FileHelper::write_text_file(const std::string &text, const fs::path &filepa myfile.close(); } +void FileHelper::write_text_file_if_changed(const std::string &text, const fs::path &filepath, bool ensurePathExists) { + if(FileHelper::path_exists(filepath)) { + // TODO: Is there a faster way to do this? + std::string savedText = FileHelper::read_text_file(filepath); + if(text == savedText) { + return; // Text is exactly the same, so return early. + } + } + if(ensurePathExists) { + write_folder_if_it_does_not_exist(filepath); + } + std::ofstream myfile; + myfile.open(filepath); + myfile << text; + myfile.close(); +} + + void FileHelper::write_folder_if_it_does_not_exist(const fs::path &path) { fs::path dirPath = path; if (dirPath.has_filename()) { diff --git a/tools/dkr_assets_tool_src/helpers/fileHelper.h b/tools/dkr_assets_tool_src/helpers/fileHelper.h index 906851b6..d21bf31a 100644 --- a/tools/dkr_assets_tool_src/helpers/fileHelper.h +++ b/tools/dkr_assets_tool_src/helpers/fileHelper.h @@ -18,6 +18,8 @@ public: static std::string read_text_file(const fs::path &filepath, size_t maxSize=SIZE_MAX); static void write_text_file(const std::string &text, const fs::path &filepath, bool ensurePathExists=false); + // Only writes if the contents of the file have been changed. + static void write_text_file_if_changed(const std::string &text, const fs::path &filepath, bool ensurePathExists=false); static void write_folder_if_it_does_not_exist(const fs::path &path); diff --git a/tools/dkr_assets_tool_src/libs/md5.hpp b/tools/dkr_assets_tool_src/libs/md5.hpp index 5392eb17..f2e5e670 100644 --- a/tools/dkr_assets_tool_src/libs/md5.hpp +++ b/tools/dkr_assets_tool_src/libs/md5.hpp @@ -201,6 +201,12 @@ namespace md5 { c.append(&bytes[0], bytes.size()); return c.final(); } + + static Digest compute(uint8_t *data, size_t dataLength) { + details::Context c; + c.append(data, dataLength); + return c.final(); + } } #endif \ No newline at end of file diff --git a/tools/dkr_assets_tool_src/prebuild/linker/ld.cpp b/tools/dkr_assets_tool_src/prebuild/linker/ld.cpp index 18f2319a..487762eb 100644 --- a/tools/dkr_assets_tool_src/prebuild/linker/ld.cpp +++ b/tools/dkr_assets_tool_src/prebuild/linker/ld.cpp @@ -74,6 +74,6 @@ void WritableLD::write_newline() { void WritableLD::save(const std::string &filepath) { std::string ldText = _out.str(); - FileHelper::write_text_file(ldText, filepath, true); + FileHelper::write_text_file_if_changed(ldText, filepath, true); }