diff options
| author | louist103 <35883445+louist103@users.noreply.github.com> | 2023-04-25 00:01:17 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-25 00:01:17 -0400 |
| commit | aea46e7cb290b770ece05112259e1b09d77b35f2 (patch) | |
| tree | 12472bf4b8bdc95d6add92439d3ef79c340a786a /ZAPDTR | |
| parent | 44d3f1ccbbdcca85e969947c2a4bb6099f927a17 (diff) | |
Implement built in Extractor for Windows (#2730)
* wip
* const
* split zapd into two targets
* Workingish.
* fix working dir and copy xmls on build (#2)
* dont change current working dir with dialog prompts
* copy asset xmls to target dir
* make zpadlib public
* Messagebox.
* Check for WIN32
* threading
* Cleanups to the exporter and main.
* Multi extraction.
* Fix byteswap header includes.
* Fix another byteswap include.
* fix again.
* stddef size_t
* Add other targets for ZAPDLib
* Non windows.
* IDYES IDNO
* Linux fixes
* hopefully remove switch and wiiu from building extractor
* Please?
* validate roms and add another valid rom
* ifdef out extract.h for switch and wiiu
* Maybe update lux
* Remove ZAPDlib from switch and WiiU
* more rules
* Update soh/soh/Extractor/Extract.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update ZAPDTR/ZAPD/ExecutableMain.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update ZAPDTR/ZAPD/CMakeLists.txt
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update ZAPDTR/ZAPD/GameConfig.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update ZAPDTR/ZAPD/Globals.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update ZAPDTR/ZAPD/Main.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/CMakeLists.txt
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/soh/Extractor/Extract.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/soh/Extractor/Extract.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* Update soh/soh/Extractor/Extract.cpp
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
* the last fix
* Add context to a comment
---------
Co-authored-by: Adam Bird <archez39@me.com>
Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Diffstat (limited to 'ZAPDTR')
| -rw-r--r-- | ZAPDTR/ZAPD/CMakeLists.txt | 29 | ||||
| -rw-r--r-- | ZAPDTR/ZAPD/ExecutableMain.cpp | 5 | ||||
| -rw-r--r-- | ZAPDTR/ZAPD/Globals.cpp | 11 | ||||
| -rw-r--r-- | ZAPDTR/ZAPD/Globals.h | 2 | ||||
| -rw-r--r-- | ZAPDTR/ZAPD/Main.cpp | 93 |
5 files changed, 101 insertions, 39 deletions
diff --git a/ZAPDTR/ZAPD/CMakeLists.txt b/ZAPDTR/ZAPD/CMakeLists.txt index 4b9110c32..0b0412c40 100644 --- a/ZAPDTR/ZAPD/CMakeLists.txt +++ b/ZAPDTR/ZAPD/CMakeLists.txt @@ -1,4 +1,4 @@ -set(PROJECT_NAME ZAPD)
+set(PROJECT_NAME ZAPDLib)
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
#set(CMAKE_C_STANDARD 11 CACHE STRING "The C standard to use")
@@ -260,10 +260,17 @@ set(ALL_FILES ################################################################################
# Target
################################################################################
-add_executable(${PROJECT_NAME} ${ALL_FILES})
+
+add_library(${PROJECT_NAME} STATIC ${ALL_FILES})
+
+add_executable(ZAPD ExecutableMain.cpp)
+target_link_libraries(ZAPD ${PROJECT_NAME})
+
+
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
+use_props(ZAPD "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
endif()
################################################################################
# Includes for CMake from *.props
@@ -282,7 +289,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") )
endif()
elseif (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
- set_target_properties(${PROJECT_NAME} PROPERTIES
+ set_target_properties(ZAPD PROPERTIES
OUTPUT_NAME "ZAPD.out"
)
endif()
@@ -290,7 +297,8 @@ endif() # MSVC runtime library
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
- get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
+foreach(ZTarget ${PROJECT_NAME} ZAPD)
+ get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${ZTarget} PROPERTY MSVC_RUNTIME_LIBRARY)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
$<$<CONFIG:Debug>:
@@ -302,7 +310,8 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
)
endif()
- set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
+ set_target_properties(${ZTarget} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
+endforeach()
endif()
################################################################################
# Compile definitions
@@ -404,7 +413,7 @@ if(MSVC) endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
- target_compile_options(${PROJECT_NAME} PRIVATE
+ target_compile_options(${PROJECT_NAME} PUBLIC
-Wall -Wextra -Wno-error
-Wno-unused-parameter
-Wno-unused-function
@@ -417,11 +426,11 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang") )
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PUBLIC
-pthread
)
else()
- target_link_options(${PROJECT_NAME} PRIVATE
+ target_link_options(${PROJECT_NAME} PUBLIC
-pthread
-Wl,-export-dynamic
)
@@ -491,7 +500,7 @@ endif() if(CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
add_library(pathconf OBJECT pathconf.c)
-target_link_libraries(${PROJECT_NAME} PRIVATE "${ADDITIONAL_LIBRARY_DEPENDENCIES}" $<TARGET_OBJECTS:pathconf> )
+target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}" $<TARGET_OBJECTS:pathconf> )
else()
-target_link_libraries(${PROJECT_NAME} PRIVATE "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
+target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
endif()
diff --git a/ZAPDTR/ZAPD/ExecutableMain.cpp b/ZAPDTR/ZAPD/ExecutableMain.cpp new file mode 100644 index 000000000..303ea24ad --- /dev/null +++ b/ZAPDTR/ZAPD/ExecutableMain.cpp @@ -0,0 +1,5 @@ +extern "C" int zapd_main(int argc, char* argv[]); + +int main(int argc, char* argv[]) { + return zapd_main(argc, argv); +} diff --git a/ZAPDTR/ZAPD/Globals.cpp b/ZAPDTR/ZAPD/Globals.cpp index c02c8df4b..8443e4d07 100644 --- a/ZAPDTR/ZAPD/Globals.cpp +++ b/ZAPDTR/ZAPD/Globals.cpp @@ -27,11 +27,14 @@ Globals::Globals() Globals::~Globals() { - auto& exporters = GetExporterMap(); - - for (auto& it : exporters) + for (const auto& w : workerData) { - delete it.second; + delete w.second; + } + + if (rom != nullptr) + { + delete rom; } } diff --git a/ZAPDTR/ZAPD/Globals.h b/ZAPDTR/ZAPD/Globals.h index 629a5d353..c599266ef 100644 --- a/ZAPDTR/ZAPD/Globals.h +++ b/ZAPDTR/ZAPD/Globals.h @@ -67,7 +67,7 @@ public: bool buildRawTexture = false; bool onlyGenSohOtr = false; - ZRom* rom; + ZRom* rom = nullptr; std::vector<ZFile*> files; std::vector<ZFile*> externalFiles; std::vector<int32_t> segments; diff --git a/ZAPDTR/ZAPD/Main.cpp b/ZAPDTR/ZAPD/Main.cpp index 38b0f1597..486813f1e 100644 --- a/ZAPDTR/ZAPD/Main.cpp +++ b/ZAPDTR/ZAPD/Main.cpp @@ -4,9 +4,71 @@ #include "Utils/File.h" #include "Utils/Path.h" #include "WarningHandler.h" + #include "ZAnimation.h" +ZNormalAnimation nAnim(nullptr); +ZCurveAnimation cAnim(nullptr); +ZLinkAnimation lAnim(nullptr); +ZLegacyAnimation lAnim2(nullptr); + +#include "ZArray.h" +ZArray arr(nullptr); + +#include "ZAudio.h" +ZAudio audio(nullptr); + #include "ZBackground.h" +ZBackground back(nullptr); + #include "ZBlob.h" +ZBlob blob(nullptr); + +#include "ZCollision.h" +ZCollisionHeader colHeader(nullptr); + +#include "ZCutscene.h" +ZCutscene cs(nullptr); + +#include "ZLimb.h" +ZLimb limb(nullptr); + +#include "ZMtx.h" +ZMtx mtx(nullptr); + +#include "ZPath.h" +ZPath path(nullptr); + +#include "ZPlayerAnimationData.h" +ZPlayerAnimationData pAnimData(nullptr); + +#include "ZScalar.h" +ZScalar scalar(nullptr); + +#include "ZSkeleton.h" +ZLimbTable limbTbl(nullptr); +ZSkeleton skel(nullptr); + +#include "ZString.h" +ZString str(nullptr); + +#include "ZSymbol.h" +ZSymbol sym(nullptr); + +#include "ZText.h" +ZText txt(nullptr); + +#include "ZTexture.h" +ZTexture tex(nullptr); + +#include "ZVector.h" +ZVector vec(nullptr); + +#include "ZVtx.h" +ZVtx vtx(nullptr); + +#include "ZRoom/ZRoom.h" +ZRoom room(nullptr); + #include "ZFile.h" #include "ZTexture.h" @@ -29,29 +91,6 @@ const char gBuildHash[] = ""; // LINUX_TODO: remove, those are because of soh <-> lus dependency problems -float divisor_num = 0.0f; - -extern "C" void Audio_SetGameVolume(int player_id, float volume) -{ - -} - - -extern "C" int ResourceMgr_OTRSigCheck(char* imgData) -{ - return 0; -} - -void DebugConsole_SaveCVars() -{ - -} - -void DebugConsole_LoadCVars() -{ - -} - bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath, ZFileMode fileMode, int workerID); @@ -119,7 +158,9 @@ void ErrorHandler(int sig) } #endif -int main(int argc, char* argv[]) +extern void ImportExporters(); + +extern "C" int zapd_main(int argc, char* argv[]) { // Syntax: ZAPD.out [mode (btex/bovl/e)] (Arbritrary Number of Arguments) @@ -242,6 +283,7 @@ int main(int argc, char* argv[]) } else if (arg == "-se" || arg == "--set-exporter") // Set Current Exporter { + ImportExporters(); Globals::Instance->currentExporter = argv[++i]; } else if (arg == "--gcc-compat") // GCC compatibility @@ -434,6 +476,9 @@ int main(int argc, char* argv[]) exporterSet->endProgramFunc(); end: + delete exporterSet; + + //Globals::Instance->GetExporterSet() = nullptr; //TODO NULL this out. Compiler complains about lvalue assignment. delete g; return 0; |
