From b6904aa2cc756e1b553d65cce2f04410d21d0210 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Mon, 7 Jun 2021 18:31:56 -0400 Subject: [PATCH] Convert every submodule into subrepo (#170) * remove ZAPD submodule * git subrepo clone https://github.com/zeldaret/ZAPD.git tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "ca229f19" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "ca229f19" git-subrepo: version: "0.4.3" origin: "???" commit: "???" * git subrepo clone https://github.com/simonlindholm/decomp-permuter.git tools/decomp-permuter subrepo: subdir: "tools/decomp-permuter" merged: "1e4b85a7" upstream: origin: "https://github.com/simonlindholm/decomp-permuter.git" branch: "main" commit: "1e4b85a7" git-subrepo: version: "0.4.3" origin: "???" commit: "???" * Remove asm-differ * git subrepo clone https://github.com/simonlindholm/asm-differ.git tools/asm-differ subrepo: subdir: "tools/asm-differ" merged: "eaf72269" upstream: origin: "https://github.com/simonlindholm/asm-differ.git" branch: "master" commit: "eaf72269" git-subrepo: version: "0.4.3" origin: "???" commit: "???" * remove asm-processor * git subrepo clone https://github.com/simonlindholm/asm-processor.git tools/asm-processor subrepo: subdir: "tools/asm-processor" merged: "85288fcd" upstream: origin: "https://github.com/simonlindholm/asm-processor.git" branch: "master" commit: "85288fcd" git-subrepo: version: "0.4.3" origin: "???" commit: "???" * remove .gitmodules file * Update REAMDE * Update warnings --- .gitmodules | 13 - Makefile | 5 - README.md | 9 +- tools/ZAPD | 1 - tools/ZAPD/.clang-format | 84 + tools/ZAPD/.gitignore | 337 + tools/ZAPD/.gitrepo | 12 + tools/ZAPD/Jenkinsfile | 47 + tools/ZAPD/LICENSE | 21 + tools/ZAPD/Makefile | 78 + tools/ZAPD/README.md | 109 + tools/ZAPD/ZAPD.sln | 46 + tools/ZAPD/ZAPD/BitConverter.h | 159 + tools/ZAPD/ZAPD/CRC32.h | 23 + tools/ZAPD/ZAPD/Declaration.cpp | 79 + tools/ZAPD/ZAPD/Declaration.h | 65 + tools/ZAPD/ZAPD/Directory.h | 39 + tools/ZAPD/ZAPD/File.h | 65 + tools/ZAPD/ZAPD/Globals.cpp | 186 + tools/ZAPD/ZAPD/Globals.h | 87 + tools/ZAPD/ZAPD/HighLevel/HLAnimation.h | 12 + .../HighLevel/HLAnimationIntermediette.cpp | 110 + .../ZAPD/HighLevel/HLAnimationIntermediette.h | 32 + .../ZAPD/ZAPD/HighLevel/HLFileIntermediette.h | 5 + .../ZAPD/HighLevel/HLModelIntermediette.cpp | 1185 + .../ZAPD/HighLevel/HLModelIntermediette.h | 312 + tools/ZAPD/ZAPD/HighLevel/HLTexture.cpp | 13 + tools/ZAPD/ZAPD/HighLevel/HLTexture.h | 31 + tools/ZAPD/ZAPD/ImageBackend.cpp | 473 + tools/ZAPD/ZAPD/ImageBackend.h | 71 + tools/ZAPD/ZAPD/Main.cpp | 417 + tools/ZAPD/ZAPD/OutputFormatter.cpp | 116 + tools/ZAPD/ZAPD/OutputFormatter.h | 41 + tools/ZAPD/ZAPD/Overlays/ZOverlay.cpp | 236 + tools/ZAPD/ZAPD/Overlays/ZOverlay.h | 67 + tools/ZAPD/ZAPD/Path.h | 53 + tools/ZAPD/ZAPD/StringHelper.h | 108 + tools/ZAPD/ZAPD/Vec3s.h | 21 + tools/ZAPD/ZAPD/ZAPD.vcxproj | 316 + tools/ZAPD/ZAPD/ZAPD.vcxproj.filters | 553 + tools/ZAPD/ZAPD/ZAnimation.cpp | 474 + tools/ZAPD/ZAPD/ZAnimation.h | 138 + tools/ZAPD/ZAPD/ZArray.cpp | 86 + tools/ZAPD/ZAPD/ZArray.h | 26 + tools/ZAPD/ZAPD/ZBackground.cpp | 209 + tools/ZAPD/ZAPD/ZBackground.h | 36 + tools/ZAPD/ZAPD/ZBlob.cpp | 107 + tools/ZAPD/ZAPD/ZBlob.h | 31 + tools/ZAPD/ZAPD/ZCollision.cpp | 330 + tools/ZAPD/ZAPD/ZCollision.h | 98 + tools/ZAPD/ZAPD/ZCutscene.cpp | 1263 + tools/ZAPD/ZAPD/ZCutscene.h | 444 + tools/ZAPD/ZAPD/ZCutsceneMM.cpp | 92 + tools/ZAPD/ZAPD/ZCutsceneMM.h | 36 + tools/ZAPD/ZAPD/ZDisplayList.cpp | 2196 ++ tools/ZAPD/ZAPD/ZDisplayList.h | 388 + tools/ZAPD/ZAPD/ZFile.cpp | 1248 + tools/ZAPD/ZAPD/ZFile.h | 119 + tools/ZAPD/ZAPD/ZLimb.cpp | 688 + tools/ZAPD/ZAPD/ZLimb.h | 163 + tools/ZAPD/ZAPD/ZMtx.cpp | 97 + tools/ZAPD/ZAPD/ZMtx.h | 31 + tools/ZAPD/ZAPD/ZPath.cpp | 214 + tools/ZAPD/ZAPD/ZPath.h | 54 + tools/ZAPD/ZAPD/ZResource.cpp | 259 + tools/ZAPD/ZAPD/ZResource.h | 153 + tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.cpp | 20 + tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.h | 13 + .../ZRoom/Commands/SetActorCutsceneList.cpp | 97 + .../ZRoom/Commands/SetActorCutsceneList.h | 42 + .../ZAPD/ZAPD/ZRoom/Commands/SetActorList.cpp | 151 + tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.h | 47 + .../ZRoom/Commands/SetAlternateHeaders.cpp | 70 + .../ZAPD/ZRoom/Commands/SetAlternateHeaders.h | 22 + .../Commands/SetAnimatedMaterialList.cpp | 412 + .../ZRoom/Commands/SetAnimatedMaterialList.h | 119 + .../ZAPD/ZRoom/Commands/SetCameraSettings.cpp | 31 + .../ZAPD/ZRoom/Commands/SetCameraSettings.h | 20 + .../ZRoom/Commands/SetCollisionHeader.cpp | 42 + .../ZAPD/ZRoom/Commands/SetCollisionHeader.h | 21 + .../ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.cpp | 162 + tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.h | 42 + .../ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.cpp | 115 + tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.h | 36 + .../ZAPD/ZRoom/Commands/SetEchoSettings.cpp | 27 + .../ZAPD/ZRoom/Commands/SetEchoSettings.h | 19 + .../ZAPD/ZRoom/Commands/SetEntranceList.cpp | 83 + .../ZAPD/ZRoom/Commands/SetEntranceList.h | 33 + .../ZAPD/ZAPD/ZRoom/Commands/SetExitList.cpp | 67 + tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.h | 21 + .../ZAPD/ZAPD/ZRoom/Commands/SetLightList.cpp | 94 + tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.h | 43 + .../ZRoom/Commands/SetLightingSettings.cpp | 103 + .../ZAPD/ZRoom/Commands/SetLightingSettings.h | 40 + tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.cpp | 671 + tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.h | 190 + .../ZAPD/ZRoom/Commands/SetMinimapChests.cpp | 85 + .../ZAPD/ZRoom/Commands/SetMinimapChests.h | 36 + .../ZAPD/ZRoom/Commands/SetMinimapList.cpp | 98 + .../ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.h | 40 + .../ZAPD/ZRoom/Commands/SetObjectList.cpp | 73 + .../ZAPD/ZAPD/ZRoom/Commands/SetObjectList.h | 21 + .../ZAPD/ZAPD/ZRoom/Commands/SetPathways.cpp | 58 + tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.h | 28 + .../ZAPD/ZRoom/Commands/SetRoomBehavior.cpp | 49 + .../ZAPD/ZRoom/Commands/SetRoomBehavior.h | 30 + .../ZAPD/ZAPD/ZRoom/Commands/SetRoomList.cpp | 88 + tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.h | 32 + .../ZAPD/ZRoom/Commands/SetSkyboxModifier.cpp | 32 + .../ZAPD/ZRoom/Commands/SetSkyboxModifier.h | 20 + .../ZAPD/ZRoom/Commands/SetSkyboxSettings.cpp | 36 + .../ZAPD/ZRoom/Commands/SetSkyboxSettings.h | 22 + .../ZAPD/ZRoom/Commands/SetSoundSettings.cpp | 30 + .../ZAPD/ZRoom/Commands/SetSoundSettings.h | 21 + .../ZAPD/ZRoom/Commands/SetSpecialObjects.cpp | 30 + .../ZAPD/ZRoom/Commands/SetSpecialObjects.h | 20 + .../ZRoom/Commands/SetStartPositionList.cpp | 65 + .../ZRoom/Commands/SetStartPositionList.h | 21 + .../ZAPD/ZRoom/Commands/SetTimeSettings.cpp | 30 + .../ZAPD/ZRoom/Commands/SetTimeSettings.h | 21 + .../ZRoom/Commands/SetTransitionActorList.cpp | 95 + .../ZRoom/Commands/SetTransitionActorList.h | 39 + tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.cpp | 32 + tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.h | 22 + .../ZRoom/Commands/SetWorldMapVisited.cpp | 22 + .../ZAPD/ZRoom/Commands/SetWorldMapVisited.h | 14 + tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.cpp | 21 + tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.h | 14 + tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.cpp | 21 + tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.h | 14 + .../ZAPD/ZRoom/Commands/ZRoomCommandUnk.cpp | 20 + .../ZAPD/ZRoom/Commands/ZRoomCommandUnk.h | 12 + tools/ZAPD/ZAPD/ZRoom/ZNames.h | 49 + tools/ZAPD/ZAPD/ZRoom/ZRoom.cpp | 473 + tools/ZAPD/ZAPD/ZRoom/ZRoom.h | 50 + tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.cpp | 56 + tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.h | 88 + tools/ZAPD/ZAPD/ZScalar.cpp | 230 + tools/ZAPD/ZAPD/ZScalar.h | 64 + tools/ZAPD/ZAPD/ZSkeleton.cpp | 252 + tools/ZAPD/ZAPD/ZSkeleton.h | 49 + tools/ZAPD/ZAPD/ZString.cpp | 62 + tools/ZAPD/ZAPD/ZString.h | 23 + tools/ZAPD/ZAPD/ZSymbol.cpp | 96 + tools/ZAPD/ZAPD/ZSymbol.h | 28 + tools/ZAPD/ZAPD/ZTexture.cpp | 885 + tools/ZAPD/ZAPD/ZTexture.h | 95 + tools/ZAPD/ZAPD/ZVector.cpp | 117 + tools/ZAPD/ZAPD/ZVector.h | 33 + tools/ZAPD/ZAPD/ZVtx.cpp | 85 + tools/ZAPD/ZAPD/ZVtx.h | 33 + tools/ZAPD/ZAPD/genbuildinfo.py | 18 + tools/ZAPD/copycheck.py | 7 + .../docs/zapd_extraction_xml_reference.md | 482 + .../ZAPD/lib/assimp-built/assimp-vc142-mt.dll | Bin 0 -> 5542400 bytes .../ZAPD/lib/assimp-built/assimp-vc142-mt.lib | Bin 0 -> 374310 bytes .../lib/assimp/include/assimp/.editorconfig | 8 + .../lib/assimp/include/assimp/BaseImporter.h | 418 + tools/ZAPD/lib/assimp/include/assimp/Bitmap.h | 125 + .../lib/assimp/include/assimp/BlobIOSystem.h | 338 + .../lib/assimp/include/assimp/ByteSwapper.h | 287 + .../assimp/include/assimp/Compiler/poppack1.h | 22 + .../assimp/include/assimp/Compiler/pstdint.h | 912 + .../include/assimp/Compiler/pushpack1.h | 43 + .../assimp/include/assimp/CreateAnimMesh.h | 58 + .../assimp/include/assimp/DefaultIOStream.h | 140 + .../assimp/include/assimp/DefaultIOSystem.h | 93 + .../assimp/include/assimp/DefaultLogger.hpp | 188 + .../ZAPD/lib/assimp/include/assimp/Defines.h | 49 + .../lib/assimp/include/assimp/Exceptional.h | 125 + .../lib/assimp/include/assimp/Exporter.hpp | 505 + .../assimp/include/assimp/GenericProperty.h | 133 + tools/ZAPD/lib/assimp/include/assimp/Hash.h | 118 + .../lib/assimp/include/assimp/IOStream.hpp | 142 + .../assimp/include/assimp/IOStreamBuffer.h | 355 + .../lib/assimp/include/assimp/IOSystem.hpp | 357 + .../lib/assimp/include/assimp/Importer.hpp | 659 + .../lib/assimp/include/assimp/LineSplitter.h | 285 + tools/ZAPD/lib/assimp/include/assimp/LogAux.h | 131 + .../lib/assimp/include/assimp/LogStream.hpp | 111 + .../ZAPD/lib/assimp/include/assimp/Logger.hpp | 305 + tools/ZAPD/lib/assimp/include/assimp/Macros.h | 49 + .../lib/assimp/include/assimp/MathFunctions.h | 86 + .../assimp/include/assimp/MemoryIOWrapper.h | 244 + .../lib/assimp/include/assimp/NullLogger.hpp | 99 + .../lib/assimp/include/assimp/ParsingUtils.h | 259 + .../ZAPD/lib/assimp/include/assimp/Profiler.h | 99 + .../assimp/include/assimp/ProgressHandler.hpp | 145 + .../assimp/include/assimp/RemoveComments.h | 91 + .../lib/assimp/include/assimp/SGSpatialSort.h | 150 + .../lib/assimp/include/assimp/SceneCombiner.h | 403 + .../include/assimp/SkeletonMeshBuilder.h | 125 + .../assimp/include/assimp/SmoothingGroups.h | 108 + .../assimp/include/assimp/SmoothingGroups.inl | 138 + .../lib/assimp/include/assimp/SpatialSort.h | 174 + .../assimp/include/assimp/StandardShapes.h | 200 + .../lib/assimp/include/assimp/StreamReader.h | 343 + .../lib/assimp/include/assimp/StreamWriter.h | 303 + .../assimp/include/assimp/StringComparison.h | 233 + .../lib/assimp/include/assimp/StringUtils.h | 143 + .../lib/assimp/include/assimp/Subdivision.h | 131 + .../lib/assimp/include/assimp/TinyFormatter.h | 166 + tools/ZAPD/lib/assimp/include/assimp/Vertex.h | 348 + .../ZAPD/lib/assimp/include/assimp/XMLTools.h | 83 + .../include/assimp/ZipArchiveIOSystem.h | 87 + tools/ZAPD/lib/assimp/include/assimp/aabb.h | 76 + .../lib/assimp/include/assimp/ai_assert.h | 57 + tools/ZAPD/lib/assimp/include/assimp/anim.h | 577 + tools/ZAPD/lib/assimp/include/assimp/camera.h | 221 + .../ZAPD/lib/assimp/include/assimp/cexport.h | 261 + .../ZAPD/lib/assimp/include/assimp/cfileio.h | 138 + .../ZAPD/lib/assimp/include/assimp/cimport.h | 565 + tools/ZAPD/lib/assimp/include/assimp/color4.h | 104 + .../ZAPD/lib/assimp/include/assimp/color4.inl | 209 + tools/ZAPD/lib/assimp/include/assimp/config.h | 1018 + .../lib/assimp/include/assimp/config.h.in | 1018 + tools/ZAPD/lib/assimp/include/assimp/defs.h | 310 + .../lib/assimp/include/assimp/fast_atof.h | 373 + .../lib/assimp/include/assimp/importerdesc.h | 146 + .../lib/assimp/include/assimp/irrXMLWrapper.h | 149 + tools/ZAPD/lib/assimp/include/assimp/light.h | 259 + .../ZAPD/lib/assimp/include/assimp/material.h | 1600 ++ .../lib/assimp/include/assimp/material.inl | 390 + .../lib/assimp/include/assimp/matrix3x3.h | 183 + .../lib/assimp/include/assimp/matrix3x3.inl | 357 + .../lib/assimp/include/assimp/matrix4x4.h | 280 + .../lib/assimp/include/assimp/matrix4x4.inl | 685 + tools/ZAPD/lib/assimp/include/assimp/mesh.h | 859 + .../ZAPD/lib/assimp/include/assimp/metadata.h | 380 + .../lib/assimp/include/assimp/pbrmaterial.h | 77 + .../port/AndroidJNI/AndroidJNIIOSystem.h | 92 + .../lib/assimp/include/assimp/postprocess.h | 684 + tools/ZAPD/lib/assimp/include/assimp/qnan.h | 165 + .../lib/assimp/include/assimp/quaternion.h | 130 + .../lib/assimp/include/assimp/quaternion.inl | 286 + tools/ZAPD/lib/assimp/include/assimp/scene.h | 425 + .../ZAPD/lib/assimp/include/assimp/texture.h | 227 + tools/ZAPD/lib/assimp/include/assimp/types.h | 541 + .../ZAPD/lib/assimp/include/assimp/vector2.h | 107 + .../lib/assimp/include/assimp/vector2.inl | 244 + .../ZAPD/lib/assimp/include/assimp/vector3.h | 146 + .../lib/assimp/include/assimp/vector3.inl | 309 + .../ZAPD/lib/assimp/include/assimp/version.h | 115 + tools/ZAPD/lib/elfio/elfio/elf_types.hpp | 851 + tools/ZAPD/lib/elfio/elfio/elfio.hpp | 955 + tools/ZAPD/lib/elfio/elfio/elfio_dump.hpp | 976 + tools/ZAPD/lib/elfio/elfio/elfio_dynamic.hpp | 257 + tools/ZAPD/lib/elfio/elfio/elfio_header.hpp | 145 + tools/ZAPD/lib/elfio/elfio/elfio_note.hpp | 170 + .../ZAPD/lib/elfio/elfio/elfio_relocation.hpp | 373 + tools/ZAPD/lib/elfio/elfio/elfio_section.hpp | 314 + tools/ZAPD/lib/elfio/elfio/elfio_segment.hpp | 246 + tools/ZAPD/lib/elfio/elfio/elfio_strings.hpp | 100 + tools/ZAPD/lib/elfio/elfio/elfio_symbols.hpp | 282 + tools/ZAPD/lib/elfio/elfio/elfio_utils.hpp | 209 + tools/ZAPD/lib/json/include/nlohmann/json.hpp | 20406 ++++++++++++++++ tools/ZAPD/lib/libgfxd/.gitrepo | 12 + tools/ZAPD/lib/libgfxd/LICENSE | 21 + tools/ZAPD/lib/libgfxd/Makefile | 25 + tools/ZAPD/lib/libgfxd/README.md | 478 + tools/ZAPD/lib/libgfxd/gbi.h | 3822 +++ tools/ZAPD/lib/libgfxd/gfxd.c | 863 + tools/ZAPD/lib/libgfxd/gfxd.h | 387 + tools/ZAPD/lib/libgfxd/priv.h | 123 + tools/ZAPD/lib/libgfxd/uc.c | 54 + tools/ZAPD/lib/libgfxd/uc_argfn.c | 1814 ++ tools/ZAPD/lib/libgfxd/uc_argtbl.c | 490 + tools/ZAPD/lib/libgfxd/uc_f3d.c | 4 + tools/ZAPD/lib/libgfxd/uc_f3db.c | 5 + tools/ZAPD/lib/libgfxd/uc_f3dex.c | 4 + tools/ZAPD/lib/libgfxd/uc_f3dex2.c | 4 + tools/ZAPD/lib/libgfxd/uc_f3dexb.c | 5 + tools/ZAPD/lib/libgfxd/uc_macrofn.c | 2458 ++ tools/ZAPD/lib/libgfxd/uc_macrotbl.c | 1397 ++ tools/ZAPD/lib/tinygltf/tiny_gltf.h | 7584 ++++++ tools/ZAPD/lib/tinyxml2/tinyxml2.cpp | 2837 +++ tools/ZAPD/lib/tinyxml2/tinyxml2.h | 2309 ++ tools/asm-differ | 1 - tools/asm-differ/.gitignore | 2 + tools/asm-differ/.gitrepo | 12 + tools/asm-differ/README.md | 40 + tools/asm-differ/diff.py | 1607 ++ tools/asm-differ/diff_settings.py | 10 + tools/asm-differ/mypy.ini | 16 + tools/asm-differ/screenshot.png | Bin 0 -> 99842 bytes tools/asm-processor | 1 - tools/asm-processor/.gitignore | 1 + tools/asm-processor/.gitrepo | 12 + tools/asm-processor/LICENSE | 24 + tools/asm-processor/README.md | 93 + tools/asm-processor/add-test.sh | 4 + tools/asm-processor/asm_processor.py | 1236 + tools/asm-processor/compile.sh | 23 + tools/asm-processor/include-stdin.c | 2 + tools/asm-processor/prelude.s | 8 + tools/asm-processor/run-tests.sh | 8 + tools/asm-processor/tests/ascii.c | 19 + tools/asm-processor/tests/ascii.objdump | 19 + tools/asm-processor/tests/comments.c | 6 + tools/asm-processor/tests/comments.objdump | 13 + tools/asm-processor/tests/label-sameline.c | 7 + .../tests/label-sameline.objdump | 11 + tools/asm-processor/tests/large.c | 164 + tools/asm-processor/tests/large.objdump | 50 + tools/asm-processor/tests/late_rodata_align.c | 80 + .../tests/late_rodata_align.objdump | 31 + .../asm-processor/tests/late_rodata_doubles.c | 83 + .../tests/late_rodata_doubles.objdump | 32 + .../tests/late_rodata_doubles_mips1.c | 86 + .../tests/late_rodata_doubles_mips1.objdump | 29 + tools/asm-processor/tests/late_rodata_jtbl.c | 77 + .../tests/late_rodata_jtbl.objdump | 33 + .../tests/late_rodata_jtbl_mips1.c | 79 + .../tests/late_rodata_jtbl_mips1.objdump | 34 + .../tests/late_rodata_misaligned_doubles.c | 77 + .../late_rodata_misaligned_doubles.objdump | 33 + .../tests/line-continuation-separate-file.s | 4 + tools/asm-processor/tests/line-continuation.c | 22 + .../tests/line-continuation.objdump | 20 + tools/asm-processor/tests/o2.c | 26 + tools/asm-processor/tests/o2.objdump | 17 + tools/asm-processor/tests/static.c | 33 + tools/asm-processor/tests/static.objdump | 56 + tools/asm-processor/tests/test1.c | 71 + tools/asm-processor/tests/test1.objdump | 24 + tools/asm-processor/tests/test2.c | 69 + tools/asm-processor/tests/test2.objdump | 32 + tools/asm-processor/tests/test3.c | 70 + tools/asm-processor/tests/test3.objdump | 30 + tools/decomp-permuter | 1 - .../.github/workflows/systray.yml | 45 + tools/decomp-permuter/.gitignore | 11 + tools/decomp-permuter/.gitrepo | 12 + tools/decomp-permuter/.pre-commit-config.yaml | 6 + tools/decomp-permuter/README.md | 120 + tools/decomp-permuter/USAGE.md | 25 + tools/decomp-permuter/compile_example.sh | 2 + tools/decomp-permuter/diff.sh | 17 + tools/decomp-permuter/import.py | 678 + tools/decomp-permuter/mypy.ini | 27 + tools/decomp-permuter/pah.py | 4 + tools/decomp-permuter/permuter.py | 5 + .../permuter_settings_example.toml | 9 + tools/decomp-permuter/run-tests.sh | 3 + tools/decomp-permuter/sort_cands.sh | 13 + tools/decomp-permuter/src/__init__.py | 0 tools/decomp-permuter/src/ast_types.py | 303 + tools/decomp-permuter/src/ast_util.py | 501 + tools/decomp-permuter/src/candidate.py | 99 + tools/decomp-permuter/src/compiler.py | 48 + tools/decomp-permuter/src/error.py | 11 + tools/decomp-permuter/src/helpers.py | 22 + tools/decomp-permuter/src/main.py | 645 + tools/decomp-permuter/src/net/__init__.py | 0 tools/decomp-permuter/src/net/client.py | 272 + tools/decomp-permuter/src/net/cmd/__init__.py | 0 tools/decomp-permuter/src/net/cmd/base.py | 17 + .../src/net/cmd/icons/notok.ico | Bin 0 -> 114366 bytes .../decomp-permuter/src/net/cmd/icons/ok.ico | Bin 0 -> 103191 bytes .../src/net/cmd/icons/okthink.ico | Bin 0 -> 112600 bytes tools/decomp-permuter/src/net/cmd/main.py | 70 + tools/decomp-permuter/src/net/cmd/ping.py | 32 + .../decomp-permuter/src/net/cmd/run_server.py | 616 + tools/decomp-permuter/src/net/cmd/setup.py | 86 + .../src/net/cmd/systray/.gitignore | 2 + .../src/net/cmd/systray/LICENSE | 21 + .../src/net/cmd/systray/README.md | 13 + .../src/net/cmd/systray/go.mod | 7 + .../src/net/cmd/systray/go.sum | 4 + .../prebuilt/permuter-systray-linux-x86_64 | Bin 0 -> 1917264 bytes .../prebuilt/permuter-systray-macos-x86_64 | Bin 0 -> 2190536 bytes .../prebuilt/permuter-systray-win-x86_64.exe | Bin 0 -> 2207744 bytes .../src/net/cmd/systray/tray.go | 287 + tools/decomp-permuter/src/net/cmd/util.py | 15 + tools/decomp-permuter/src/net/cmd/vouch.py | 73 + .../src/net/controller/.gitignore | 3 + .../src/net/controller/Cargo.lock | 607 + .../src/net/controller/Cargo.toml | 19 + .../src/net/controller/README.md | 23 + .../src/net/controller/config_example.toml | 2 + .../src/net/controller/src/client.rs | 205 + .../src/net/controller/src/db.rs | 105 + .../net/controller/src/flimsy_semaphore.rs | 61 + .../src/net/controller/src/main.rs | 417 + .../src/net/controller/src/port.rs | 115 + .../src/net/controller/src/save.rs | 158 + .../src/net/controller/src/server.rs | 500 + .../src/net/controller/src/setup.rs | 57 + .../src/net/controller/src/stats.rs | 88 + .../src/net/controller/src/util.rs | 37 + .../src/net/controller/src/vouch.rs | 80 + tools/decomp-permuter/src/net/core.py | 416 + tools/decomp-permuter/src/net/evaluator.py | 401 + tools/decomp-permuter/src/net/server.py | 944 + tools/decomp-permuter/src/objdump.py | 186 + tools/decomp-permuter/src/perm/__init__.py | 0 tools/decomp-permuter/src/perm/ast.py | 58 + tools/decomp-permuter/src/perm/eval.py | 36 + tools/decomp-permuter/src/perm/parse.py | 144 + tools/decomp-permuter/src/perm/perm.py | 289 + tools/decomp-permuter/src/permuter.py | 279 + tools/decomp-permuter/src/preprocess.py | 10 + tools/decomp-permuter/src/printer.py | 46 + tools/decomp-permuter/src/profiler.py | 23 + tools/decomp-permuter/src/randomizer.py | 1908 ++ tools/decomp-permuter/src/scorer.py | 144 + tools/decomp-permuter/strip_other_fns.py | 74 + .../stubs/pycparser/__init__.py | 18 + .../decomp-permuter/stubs/pycparser/c_ast.py | 719 + .../stubs/pycparser/c_generator.py | 13 + .../stubs/pycparser/c_parser.py | 15 + .../stubs/pycparser/plyparser.py | 27 + tools/decomp-permuter/test.py | 13 + tools/decomp-permuter/test/__init__.py | 0 tools/decomp-permuter/test/compile.sh | 2 + tools/decomp-permuter/test/test_perm.py | 247 + .../warnings_count/warnings_build_current.txt | 2 +- .../warnings_count/warnings_setup_current.txt | 45 +- 418 files changed, 113047 insertions(+), 62 deletions(-) delete mode 100644 .gitmodules delete mode 160000 tools/ZAPD create mode 100644 tools/ZAPD/.clang-format create mode 100644 tools/ZAPD/.gitignore create mode 100644 tools/ZAPD/.gitrepo create mode 100644 tools/ZAPD/Jenkinsfile create mode 100644 tools/ZAPD/LICENSE create mode 100644 tools/ZAPD/Makefile create mode 100644 tools/ZAPD/README.md create mode 100644 tools/ZAPD/ZAPD.sln create mode 100644 tools/ZAPD/ZAPD/BitConverter.h create mode 100644 tools/ZAPD/ZAPD/CRC32.h create mode 100644 tools/ZAPD/ZAPD/Declaration.cpp create mode 100644 tools/ZAPD/ZAPD/Declaration.h create mode 100644 tools/ZAPD/ZAPD/Directory.h create mode 100644 tools/ZAPD/ZAPD/File.h create mode 100644 tools/ZAPD/ZAPD/Globals.cpp create mode 100644 tools/ZAPD/ZAPD/Globals.h create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLAnimation.h create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.cpp create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.h create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLFileIntermediette.h create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.cpp create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.h create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLTexture.cpp create mode 100644 tools/ZAPD/ZAPD/HighLevel/HLTexture.h create mode 100644 tools/ZAPD/ZAPD/ImageBackend.cpp create mode 100644 tools/ZAPD/ZAPD/ImageBackend.h create mode 100644 tools/ZAPD/ZAPD/Main.cpp create mode 100644 tools/ZAPD/ZAPD/OutputFormatter.cpp create mode 100644 tools/ZAPD/ZAPD/OutputFormatter.h create mode 100644 tools/ZAPD/ZAPD/Overlays/ZOverlay.cpp create mode 100644 tools/ZAPD/ZAPD/Overlays/ZOverlay.h create mode 100644 tools/ZAPD/ZAPD/Path.h create mode 100644 tools/ZAPD/ZAPD/StringHelper.h create mode 100644 tools/ZAPD/ZAPD/Vec3s.h create mode 100644 tools/ZAPD/ZAPD/ZAPD.vcxproj create mode 100644 tools/ZAPD/ZAPD/ZAPD.vcxproj.filters create mode 100644 tools/ZAPD/ZAPD/ZAnimation.cpp create mode 100644 tools/ZAPD/ZAPD/ZAnimation.h create mode 100644 tools/ZAPD/ZAPD/ZArray.cpp create mode 100644 tools/ZAPD/ZAPD/ZArray.h create mode 100644 tools/ZAPD/ZAPD/ZBackground.cpp create mode 100644 tools/ZAPD/ZAPD/ZBackground.h create mode 100644 tools/ZAPD/ZAPD/ZBlob.cpp create mode 100644 tools/ZAPD/ZAPD/ZBlob.h create mode 100644 tools/ZAPD/ZAPD/ZCollision.cpp create mode 100644 tools/ZAPD/ZAPD/ZCollision.h create mode 100644 tools/ZAPD/ZAPD/ZCutscene.cpp create mode 100644 tools/ZAPD/ZAPD/ZCutscene.h create mode 100644 tools/ZAPD/ZAPD/ZCutsceneMM.cpp create mode 100644 tools/ZAPD/ZAPD/ZCutsceneMM.h create mode 100644 tools/ZAPD/ZAPD/ZDisplayList.cpp create mode 100644 tools/ZAPD/ZAPD/ZDisplayList.h create mode 100644 tools/ZAPD/ZAPD/ZFile.cpp create mode 100644 tools/ZAPD/ZAPD/ZFile.h create mode 100644 tools/ZAPD/ZAPD/ZLimb.cpp create mode 100644 tools/ZAPD/ZAPD/ZLimb.h create mode 100644 tools/ZAPD/ZAPD/ZMtx.cpp create mode 100644 tools/ZAPD/ZAPD/ZMtx.h create mode 100644 tools/ZAPD/ZAPD/ZPath.cpp create mode 100644 tools/ZAPD/ZAPD/ZPath.h create mode 100644 tools/ZAPD/ZAPD/ZResource.cpp create mode 100644 tools/ZAPD/ZAPD/ZResource.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/ZNames.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/ZRoom.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/ZRoom.h create mode 100644 tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.cpp create mode 100644 tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.h create mode 100644 tools/ZAPD/ZAPD/ZScalar.cpp create mode 100644 tools/ZAPD/ZAPD/ZScalar.h create mode 100644 tools/ZAPD/ZAPD/ZSkeleton.cpp create mode 100644 tools/ZAPD/ZAPD/ZSkeleton.h create mode 100644 tools/ZAPD/ZAPD/ZString.cpp create mode 100644 tools/ZAPD/ZAPD/ZString.h create mode 100644 tools/ZAPD/ZAPD/ZSymbol.cpp create mode 100644 tools/ZAPD/ZAPD/ZSymbol.h create mode 100644 tools/ZAPD/ZAPD/ZTexture.cpp create mode 100644 tools/ZAPD/ZAPD/ZTexture.h create mode 100644 tools/ZAPD/ZAPD/ZVector.cpp create mode 100644 tools/ZAPD/ZAPD/ZVector.h create mode 100644 tools/ZAPD/ZAPD/ZVtx.cpp create mode 100644 tools/ZAPD/ZAPD/ZVtx.h create mode 100644 tools/ZAPD/ZAPD/genbuildinfo.py create mode 100755 tools/ZAPD/copycheck.py create mode 100644 tools/ZAPD/docs/zapd_extraction_xml_reference.md create mode 100644 tools/ZAPD/lib/assimp-built/assimp-vc142-mt.dll create mode 100644 tools/ZAPD/lib/assimp-built/assimp-vc142-mt.lib create mode 100644 tools/ZAPD/lib/assimp/include/assimp/.editorconfig create mode 100644 tools/ZAPD/lib/assimp/include/assimp/BaseImporter.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Bitmap.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/BlobIOSystem.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/ByteSwapper.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Compiler/poppack1.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Compiler/pstdint.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Compiler/pushpack1.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/CreateAnimMesh.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/DefaultIOStream.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/DefaultIOSystem.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/DefaultLogger.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Defines.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Exceptional.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Exporter.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/GenericProperty.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Hash.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/IOStream.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/IOStreamBuffer.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/IOSystem.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Importer.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/LineSplitter.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/LogAux.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/LogStream.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Logger.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Macros.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/MathFunctions.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/MemoryIOWrapper.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/NullLogger.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/ParsingUtils.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Profiler.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/ProgressHandler.hpp create mode 100644 tools/ZAPD/lib/assimp/include/assimp/RemoveComments.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/SGSpatialSort.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/SceneCombiner.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/SkeletonMeshBuilder.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/SmoothingGroups.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/SmoothingGroups.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/SpatialSort.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/StandardShapes.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/StreamReader.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/StreamWriter.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/StringComparison.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/StringUtils.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Subdivision.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/TinyFormatter.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/Vertex.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/XMLTools.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/ZipArchiveIOSystem.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/aabb.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/ai_assert.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/anim.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/camera.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/cexport.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/cfileio.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/cimport.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/color4.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/color4.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/config.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/config.h.in create mode 100644 tools/ZAPD/lib/assimp/include/assimp/defs.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/fast_atof.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/importerdesc.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/irrXMLWrapper.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/light.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/material.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/material.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/matrix3x3.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/matrix3x3.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/matrix4x4.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/matrix4x4.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/mesh.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/metadata.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/pbrmaterial.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/postprocess.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/qnan.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/quaternion.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/quaternion.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/scene.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/texture.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/types.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/vector2.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/vector2.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/vector3.h create mode 100644 tools/ZAPD/lib/assimp/include/assimp/vector3.inl create mode 100644 tools/ZAPD/lib/assimp/include/assimp/version.h create mode 100644 tools/ZAPD/lib/elfio/elfio/elf_types.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_dump.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_dynamic.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_header.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_note.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_relocation.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_section.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_segment.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_strings.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_symbols.hpp create mode 100644 tools/ZAPD/lib/elfio/elfio/elfio_utils.hpp create mode 100644 tools/ZAPD/lib/json/include/nlohmann/json.hpp create mode 100644 tools/ZAPD/lib/libgfxd/.gitrepo create mode 100644 tools/ZAPD/lib/libgfxd/LICENSE create mode 100644 tools/ZAPD/lib/libgfxd/Makefile create mode 100644 tools/ZAPD/lib/libgfxd/README.md create mode 100644 tools/ZAPD/lib/libgfxd/gbi.h create mode 100644 tools/ZAPD/lib/libgfxd/gfxd.c create mode 100644 tools/ZAPD/lib/libgfxd/gfxd.h create mode 100644 tools/ZAPD/lib/libgfxd/priv.h create mode 100644 tools/ZAPD/lib/libgfxd/uc.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_argfn.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_argtbl.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_f3d.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_f3db.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_f3dex.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_f3dex2.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_f3dexb.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_macrofn.c create mode 100644 tools/ZAPD/lib/libgfxd/uc_macrotbl.c create mode 100644 tools/ZAPD/lib/tinygltf/tiny_gltf.h create mode 100644 tools/ZAPD/lib/tinyxml2/tinyxml2.cpp create mode 100644 tools/ZAPD/lib/tinyxml2/tinyxml2.h delete mode 160000 tools/asm-differ create mode 100644 tools/asm-differ/.gitignore create mode 100644 tools/asm-differ/.gitrepo create mode 100644 tools/asm-differ/README.md create mode 100755 tools/asm-differ/diff.py create mode 100644 tools/asm-differ/diff_settings.py create mode 100644 tools/asm-differ/mypy.ini create mode 100644 tools/asm-differ/screenshot.png delete mode 160000 tools/asm-processor create mode 100644 tools/asm-processor/.gitignore create mode 100644 tools/asm-processor/.gitrepo create mode 100644 tools/asm-processor/LICENSE create mode 100644 tools/asm-processor/README.md create mode 100755 tools/asm-processor/add-test.sh create mode 100644 tools/asm-processor/asm_processor.py create mode 100755 tools/asm-processor/compile.sh create mode 100644 tools/asm-processor/include-stdin.c create mode 100644 tools/asm-processor/prelude.s create mode 100755 tools/asm-processor/run-tests.sh create mode 100644 tools/asm-processor/tests/ascii.c create mode 100644 tools/asm-processor/tests/ascii.objdump create mode 100644 tools/asm-processor/tests/comments.c create mode 100644 tools/asm-processor/tests/comments.objdump create mode 100644 tools/asm-processor/tests/label-sameline.c create mode 100644 tools/asm-processor/tests/label-sameline.objdump create mode 100644 tools/asm-processor/tests/large.c create mode 100644 tools/asm-processor/tests/large.objdump create mode 100644 tools/asm-processor/tests/late_rodata_align.c create mode 100644 tools/asm-processor/tests/late_rodata_align.objdump create mode 100644 tools/asm-processor/tests/late_rodata_doubles.c create mode 100644 tools/asm-processor/tests/late_rodata_doubles.objdump create mode 100644 tools/asm-processor/tests/late_rodata_doubles_mips1.c create mode 100644 tools/asm-processor/tests/late_rodata_doubles_mips1.objdump create mode 100644 tools/asm-processor/tests/late_rodata_jtbl.c create mode 100644 tools/asm-processor/tests/late_rodata_jtbl.objdump create mode 100644 tools/asm-processor/tests/late_rodata_jtbl_mips1.c create mode 100644 tools/asm-processor/tests/late_rodata_jtbl_mips1.objdump create mode 100644 tools/asm-processor/tests/late_rodata_misaligned_doubles.c create mode 100644 tools/asm-processor/tests/late_rodata_misaligned_doubles.objdump create mode 100644 tools/asm-processor/tests/line-continuation-separate-file.s create mode 100644 tools/asm-processor/tests/line-continuation.c create mode 100644 tools/asm-processor/tests/line-continuation.objdump create mode 100644 tools/asm-processor/tests/o2.c create mode 100644 tools/asm-processor/tests/o2.objdump create mode 100644 tools/asm-processor/tests/static.c create mode 100644 tools/asm-processor/tests/static.objdump create mode 100644 tools/asm-processor/tests/test1.c create mode 100644 tools/asm-processor/tests/test1.objdump create mode 100644 tools/asm-processor/tests/test2.c create mode 100644 tools/asm-processor/tests/test2.objdump create mode 100644 tools/asm-processor/tests/test3.c create mode 100644 tools/asm-processor/tests/test3.objdump delete mode 160000 tools/decomp-permuter create mode 100644 tools/decomp-permuter/.github/workflows/systray.yml create mode 100644 tools/decomp-permuter/.gitignore create mode 100644 tools/decomp-permuter/.gitrepo create mode 100644 tools/decomp-permuter/.pre-commit-config.yaml create mode 100644 tools/decomp-permuter/README.md create mode 100644 tools/decomp-permuter/USAGE.md create mode 100755 tools/decomp-permuter/compile_example.sh create mode 100755 tools/decomp-permuter/diff.sh create mode 100755 tools/decomp-permuter/import.py create mode 100644 tools/decomp-permuter/mypy.ini create mode 100755 tools/decomp-permuter/pah.py create mode 100755 tools/decomp-permuter/permuter.py create mode 100644 tools/decomp-permuter/permuter_settings_example.toml create mode 100755 tools/decomp-permuter/run-tests.sh create mode 100755 tools/decomp-permuter/sort_cands.sh create mode 100644 tools/decomp-permuter/src/__init__.py create mode 100644 tools/decomp-permuter/src/ast_types.py create mode 100644 tools/decomp-permuter/src/ast_util.py create mode 100644 tools/decomp-permuter/src/candidate.py create mode 100644 tools/decomp-permuter/src/compiler.py create mode 100644 tools/decomp-permuter/src/error.py create mode 100644 tools/decomp-permuter/src/helpers.py create mode 100644 tools/decomp-permuter/src/main.py create mode 100644 tools/decomp-permuter/src/net/__init__.py create mode 100644 tools/decomp-permuter/src/net/client.py create mode 100644 tools/decomp-permuter/src/net/cmd/__init__.py create mode 100644 tools/decomp-permuter/src/net/cmd/base.py create mode 100644 tools/decomp-permuter/src/net/cmd/icons/notok.ico create mode 100644 tools/decomp-permuter/src/net/cmd/icons/ok.ico create mode 100644 tools/decomp-permuter/src/net/cmd/icons/okthink.ico create mode 100644 tools/decomp-permuter/src/net/cmd/main.py create mode 100644 tools/decomp-permuter/src/net/cmd/ping.py create mode 100644 tools/decomp-permuter/src/net/cmd/run_server.py create mode 100644 tools/decomp-permuter/src/net/cmd/setup.py create mode 100644 tools/decomp-permuter/src/net/cmd/systray/.gitignore create mode 100644 tools/decomp-permuter/src/net/cmd/systray/LICENSE create mode 100644 tools/decomp-permuter/src/net/cmd/systray/README.md create mode 100644 tools/decomp-permuter/src/net/cmd/systray/go.mod create mode 100644 tools/decomp-permuter/src/net/cmd/systray/go.sum create mode 100755 tools/decomp-permuter/src/net/cmd/systray/prebuilt/permuter-systray-linux-x86_64 create mode 100755 tools/decomp-permuter/src/net/cmd/systray/prebuilt/permuter-systray-macos-x86_64 create mode 100755 tools/decomp-permuter/src/net/cmd/systray/prebuilt/permuter-systray-win-x86_64.exe create mode 100644 tools/decomp-permuter/src/net/cmd/systray/tray.go create mode 100644 tools/decomp-permuter/src/net/cmd/util.py create mode 100644 tools/decomp-permuter/src/net/cmd/vouch.py create mode 100644 tools/decomp-permuter/src/net/controller/.gitignore create mode 100644 tools/decomp-permuter/src/net/controller/Cargo.lock create mode 100644 tools/decomp-permuter/src/net/controller/Cargo.toml create mode 100644 tools/decomp-permuter/src/net/controller/README.md create mode 100644 tools/decomp-permuter/src/net/controller/config_example.toml create mode 100644 tools/decomp-permuter/src/net/controller/src/client.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/db.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/flimsy_semaphore.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/main.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/port.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/save.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/server.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/setup.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/stats.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/util.rs create mode 100644 tools/decomp-permuter/src/net/controller/src/vouch.rs create mode 100644 tools/decomp-permuter/src/net/core.py create mode 100644 tools/decomp-permuter/src/net/evaluator.py create mode 100644 tools/decomp-permuter/src/net/server.py create mode 100644 tools/decomp-permuter/src/objdump.py create mode 100644 tools/decomp-permuter/src/perm/__init__.py create mode 100644 tools/decomp-permuter/src/perm/ast.py create mode 100644 tools/decomp-permuter/src/perm/eval.py create mode 100644 tools/decomp-permuter/src/perm/parse.py create mode 100644 tools/decomp-permuter/src/perm/perm.py create mode 100644 tools/decomp-permuter/src/permuter.py create mode 100644 tools/decomp-permuter/src/preprocess.py create mode 100644 tools/decomp-permuter/src/printer.py create mode 100644 tools/decomp-permuter/src/profiler.py create mode 100644 tools/decomp-permuter/src/randomizer.py create mode 100644 tools/decomp-permuter/src/scorer.py create mode 100644 tools/decomp-permuter/strip_other_fns.py create mode 100644 tools/decomp-permuter/stubs/pycparser/__init__.py create mode 100644 tools/decomp-permuter/stubs/pycparser/c_ast.py create mode 100644 tools/decomp-permuter/stubs/pycparser/c_generator.py create mode 100644 tools/decomp-permuter/stubs/pycparser/c_parser.py create mode 100644 tools/decomp-permuter/stubs/pycparser/plyparser.py create mode 100755 tools/decomp-permuter/test.py create mode 100644 tools/decomp-permuter/test/__init__.py create mode 100755 tools/decomp-permuter/test/compile.sh create mode 100644 tools/decomp-permuter/test/test_perm.py diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 746dc80584..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,13 +0,0 @@ -[submodule "tools/asm-processor"] - path = tools/asm-processor - url = https://github.com/simonlindholm/asm-processor.git -[submodule "tools/asm-differ"] - path = tools/asm-differ - url = https://github.com/simonlindholm/asm-differ.git -[submodule "tools/decomp-permuter"] - path = tools/decomp-permuter - url = https://github.com/simonlindholm/decomp-permuter - branch = main -[submodule "ZAPD"] - path = tools/ZAPD - url = https://github.com/zeldaret/ZAPD.git diff --git a/Makefile b/Makefile index 4cc08957df..d4d822d7b8 100644 --- a/Makefile +++ b/Makefile @@ -215,11 +215,6 @@ distclean: assetclean clean ## Extraction step setup: - # Initialize submodules, fetching commit in case it is not on the default branch - -git submodule update --init --recursive - git submodule foreach --recursive 'git fetch origin $$sha1' - git submodule update --recursive - python3 -m pip install -r requirements.txt $(MAKE) -C tools ./tools/extract_rom.py $(MM_BASEROM) python3 extract_assets.py diff --git a/README.md b/README.md index ff44be8035..afda80a401 100644 --- a/README.md +++ b/README.md @@ -56,12 +56,19 @@ The build process has the following package requirements: * binutils-mips-linux-gnu * python3 * pip3 +* libpng-dev Under Debian / Ubuntu (which we recommend using), you can install them with the following commands: ```bash sudo apt update -sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip +sudo apt install make git build-essential binutils-mips-linux-gnu python3 python3-pip libpng-dev +``` + +To install the Python dependencies simply run in a terminal: + +```bash +python3 -m pip install -r requirements.txt ``` #### 2. Fork the repository diff --git a/tools/ZAPD b/tools/ZAPD deleted file mode 160000 index ca229f19b9..0000000000 --- a/tools/ZAPD +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ca229f19b991c613c29afade3d70b100522cece1 diff --git a/tools/ZAPD/.clang-format b/tools/ZAPD/.clang-format new file mode 100644 index 0000000000..784e734e97 --- /dev/null +++ b/tools/ZAPD/.clang-format @@ -0,0 +1,84 @@ +--- +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlinesLeft: false +AlignOperands: true +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: InlineOnly +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: true +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true + AfterUnion: true + BeforeCatch: true + BeforeElse: true + IndentBraces: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +ColumnLimit: 100 +CommentPragmas: '^ (IWYU pragma:|NOLINT)' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ForEachMacros: [ ] +IncludeCategories: + - Regex: '^<[Ww]indows\.h>$' + Priority: 1 + - Regex: '^<' + Priority: 2 + - Regex: '^"' + Priority: 3 +IndentCaseLabels: false +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Left +ReflowComments: true +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Latest +TabWidth: 4 +UseTab: AlignWithSpaces +... + diff --git a/tools/ZAPD/.gitignore b/tools/ZAPD/.gitignore new file mode 100644 index 0000000000..4a9671810a --- /dev/null +++ b/tools/ZAPD/.gitignore @@ -0,0 +1,337 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +*.out +*.o +*.d +lib/libgfxd/libgfxd.a +.vscode/ +ZAPD/BuildInfo.h \ No newline at end of file diff --git a/tools/ZAPD/.gitrepo b/tools/ZAPD/.gitrepo new file mode 100644 index 0000000000..ac8686c2e9 --- /dev/null +++ b/tools/ZAPD/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = https://github.com/zeldaret/ZAPD.git + branch = master + commit = ca229f19b991c613c29afade3d70b100522cece1 + parent = 6ab539cda1870420d07e38e25db09208fd7b21a8 + method = merge + cmdver = 0.4.3 diff --git a/tools/ZAPD/Jenkinsfile b/tools/ZAPD/Jenkinsfile new file mode 100644 index 0000000000..d7ea29396f --- /dev/null +++ b/tools/ZAPD/Jenkinsfile @@ -0,0 +1,47 @@ +pipeline { + agent { + label "ZAPD" + } + + stages { + stage('Build ZAPD') { + steps { + sh 'make -j' + } + } + stage('Checkout oot') { + steps { + dir('oot') { + git url: 'https://github.com/zeldaret/oot.git' + } + } + } + stage('Set up oot') { + steps { + dir('oot') { + sh 'cp /usr/local/etc/roms/baserom_oot.z64 baserom_original.z64' + + // Identical to `make setup` except for copying our newer ZAPD.out into oot + sh 'git submodule update --init --recursive' + sh 'make -C tools' + sh 'cp ../ZAPD.out tools/ZAPD/' + sh 'python3 fixbaserom.py' + sh 'python3 extract_baserom.py' + sh 'python3 extract_assets.py' + } + } + } + stage('Build oot') { + steps { + dir('oot') { + sh 'make -j' + } + } + } + } + post { + always { + cleanWs() + } + } +} diff --git a/tools/ZAPD/LICENSE b/tools/ZAPD/LICENSE new file mode 100644 index 0000000000..90b734bde8 --- /dev/null +++ b/tools/ZAPD/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Zelda Reverse Engineering Team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/ZAPD/Makefile b/tools/ZAPD/Makefile new file mode 100644 index 0000000000..f6f70bc2fe --- /dev/null +++ b/tools/ZAPD/Makefile @@ -0,0 +1,78 @@ +OPTIMIZATION_ON ?= 1 +ASAN ?= 0 +DEPRECATION_OFF ?= 0 +DEBUG ?= 0 +CFLAGS ?= +COPYCHECK_ARGS ?= + +CC := g++ +INC := -I ZAPD -I lib/assimp/include -I lib/elfio -I lib/json/include -I lib/stb -I lib/tinygltf -I lib/libgfxd -I lib/tinyxml2 +CFLAGS += -fpic -std=c++17 -rdynamic -Wall -fno-omit-frame-pointer + +ifneq ($(DEBUG),0) + OPTIMIZATION_ON = 0 + DEPRECATION_OFF = 1 + CFLAGS += -g3 -DDEVELOPMENT + COPYCHECK_ARGS += --devel +endif + +ifeq ($(OPTIMIZATION_ON),0) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifneq ($(ASAN),0) + CFLAGS += -fsanitize=address +endif +ifneq ($(DEPRECATION_OFF),0) + CFLAGS += -DDEPRECATION_OFF +endif +# CFLAGS += -DTEXTURE_DEBUG + +LDFLAGS := -ldl -lpng +UNAME := $(shell uname) + +FS_INC ?= +ifneq ($(UNAME), Darwin) + FS_INC += -lstdc++fs + CFLAGS += -Wl,-export-dynamic +endif + +SRC_DIRS := ZAPD ZAPD/ZRoom ZAPD/ZRoom/Commands ZAPD/Overlays ZAPD/HighLevel + +ZAPD_CPP_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp)) +ZAPD_H_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.h)) + +CPP_FILES += $(ZAPD_CPP_FILES) lib/tinyxml2/tinyxml2.cpp +O_FILES := $(CPP_FILES:.cpp=.o) + +all: ZAPD.out copycheck + +genbuildinfo: + python3 ZAPD/genbuildinfo.py $(COPYCHECK_ARGS) + +copycheck: ZAPD.out + python3 copycheck.py + +clean: + rm -f $(O_FILES) ZAPD.out + $(MAKE) -C lib/libgfxd clean + +rebuild: clean all + +format: + clang-format-11 -i $(ZAPD_CPP_FILES) $(ZAPD_H_FILES) + +.PHONY: all genbuildinfo copycheck clean rebuild format + +%.o: %.cpp + $(CC) $(CFLAGS) $(INC) -c $< -o $@ $(LDFLAGS) + +ZAPD/Main.o: genbuildinfo ZAPD/Main.cpp + $(CC) $(CFLAGS) $(INC) -c ZAPD/Main.cpp -o $@ $(LDFLAGS) + +lib/libgfxd/libgfxd.a: + $(MAKE) -C lib/libgfxd + +ZAPD.out: $(O_FILES) lib/libgfxd/libgfxd.a + $(CC) $(CFLAGS) $(INC) $(O_FILES) lib/libgfxd/libgfxd.a -o $@ $(FS_INC) $(LDFLAGS) diff --git a/tools/ZAPD/README.md b/tools/ZAPD/README.md new file mode 100644 index 0000000000..a8bc05160c --- /dev/null +++ b/tools/ZAPD/README.md @@ -0,0 +1,109 @@ +# ZAPD: Zelda Asset Processor for Decomp + +## Compiling + +### Dependencies + +ZAPD needs a compiler with C++17 support. + +ZAPD has the following library dependencies: + +- `libpng` + +In a Debian/Ubuntu based environment, those could be installed with the following command: + +```bash +sudo apt install libpng-dev +``` + +### Building + +#### Linux / *nix + +ZAPD uses the clasic `Makefile` approach. To build just run `make` (or even better `make -j` for faster compilations). + +You can configure a bit your ZAPD build with the following options: + +- `OPTIMIZATION_ON`: If set to `0` optimizations will be disabled (compile with `-O0`). Any other value compiles with `-O2`. Defaults to `1`. +- `ASAN`: If it is set to a non-zero then ZAPD will be compiled with Address Sanitizer enabled (`-fsanitize=address`). Defaults to `0`. +- `DEPRECATION_OFF`: If it is set to a non-zero then deprecation warnings will be disabled. Defaults to `0`. +- `DEBUG`: If non-zero, ZAPD will be compiled in _development mode_. This implies the following: + - Debugging symbols enabled (`-g3`). They are disabled by default. + - `OPTIMIZATION_ON=0`: Disables optimizations (`-O0`). + - `DEPRECATION_OFF=1`: Disables deprecation warnings. + +As an example, if you want to build ZAPD with optimizations disabled and use the address sanitizer, you could use the following command: + +```bash +make -j OPTIMIZATION_ON=0 ASAN=1 +``` + +#### Windows + +This repository contains `vcxproj` files for compiling under Visual Studio environments. See `ZAPD/ZAPD.vcxproj`. + +## Invoking ZAPD + +ZAPD needs a _File parsing mode_ to be passed as first parameter. The options are: + +- `e`: "Extraction" mode. + - In this mode, ZAPD expects a XML file as input, a folder as ouput and a path to the baserom files. + - ZAPD will read the XML and use it as a guide to extract the contents of the specified asset file from the baserom folder. + - For more info of the format of those XMLs, see the [ZAPD extraction XML reference](docs/zapd_extraction_xml_reference.md). +- `bsf`: "Build source file" mode. + - This is an experimental mode. + - It was going to be used to let you have XMLs that aren't just for extraction. Might get used, might not. Still need to experiment on that. +- `btex`: "Build texture" mode. + - In this mode, ZAPD expects a PNG file as input, a filename as ouput and a texture type parameter (`-tt`). + - ZAPD will try to convert the given PNG into the contents of a `uint64_t` C array. +- `bren`: "Build (render) background" mode. + - In this mode, ZAPD expects a JPG file as input and a filename as ouput. + - ZAPD will try to convert the given JPG into the contents of a `uint64_t` C array. +- `blb`: "Build blob" mode. + - In this mode, ZAPD expects a BIN file as input and a filename as ouput. + - ZAPD will try to convert the given BIN into the contents of a `uint8_t` C array. +- `bovl`: "Build overlay" mode. + - In this mode, ZAPD expects an overlay C file as input, a filename as ouput and an overlay configuration path (`-cfg`). + - ZAPD will generate a reloc `.s` file. + +ZAPD also accepts the following list of extra parameters: + +- `-i PATH` / `--inputpath PATH`: Set input path. +- `-o PATH` / `--outputpath PATH`: Set output path. +- `-b PATH` / `--baserompath`: Set baserom path. + - Can be used only in `e` or `bsf` modes. +- `-osf PATH`: Set source output path. This is the path where the `.c` and `.h` files will be extracted to. If omitted, it will use the value passed to `--outputpath` parameter. +- `-gsf MODE`: Generate source file during extraction. If `MODE` is `1`, C source files will be generated. + - Can be used only in `e` mode. +- `-crc` / `--output-crc`: Outputs a CRC file for each extracted texture. + - Can be used only in `e` or `bsf` modes. +- `-ulzdl MODE`: Use "Legacy ZDisplayList" instead of `libgfxd`. Set `MODE` to `1` to enable it. + - Can be used only in `e` or `bsf` modes. +- `-profile MODE`: Enable profiling. Set `MODE` to `1` to enable it. +- `-uer MODE`: Split resources into their individual components (enabled by default). Set `MODE` to non-`1` to disable it. +- `-tt TYPE`: Set texture type. + - Can be used only in mode `btex`. + - Valid values: + - `rgba32` + - `rgb5a1` + - `i4` + - `i8` + - `ia4` + - `ia8` + - `ia16` + - `ci4` + - `ci8` +- `-cfg PATH`: Set cfg path (for overlays). + - Can be used only in `bovl` mode. +- `-rconf PATH` Read Config File. +- `-eh`: Enable error handler. + - Only available in non-Windows environments. +- `-v MODE`: Enable verbosity. Currently there are 3 possible values: + - `0`: Default. Completely silent (except for warnings and errors). + - `1`: Information. + - `2` (and higher): Debug. +- `-wu` / `--warn-unaccounted`: Enable warnings for each unaccounted block of data found. + - Can be used only in `e` or `bsf` modes. +- `-tm MODE`: Test Mode (enables certain experimental features). To enable it, set `MODE` to `1`. + +Additionally, you can pass the flag `--version` to see the current ZAPD version. If that flag is passed, ZAPD will ignore any other parameter passed. diff --git a/tools/ZAPD/ZAPD.sln b/tools/ZAPD/ZAPD.sln new file mode 100644 index 0000000000..4280808b49 --- /dev/null +++ b/tools/ZAPD/ZAPD.sln @@ -0,0 +1,46 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30320.27 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZAPD", "ZAPD\ZAPD.vcxproj", "{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + MinSizeRel|x64 = MinSizeRel|x64 + MinSizeRel|x86 = MinSizeRel|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + RelWithDebInfo|x64 = RelWithDebInfo|x64 + RelWithDebInfo|x86 = RelWithDebInfo|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x64.ActiveCfg = Debug|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x64.Build.0 = Debug|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x86.ActiveCfg = Debug|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x86.Build.0 = Debug|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x64.ActiveCfg = Release|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x64.Build.0 = Release|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x86.ActiveCfg = Release|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x86.Build.0 = Release|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x64.ActiveCfg = Release|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x64.Build.0 = Release|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x86.ActiveCfg = Release|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x86.Build.0 = Release|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x64.ActiveCfg = Release|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x64.Build.0 = Release|x64 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x86.ActiveCfg = Release|Win32 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C2E1CC72-7A50-3249-AFD5-DFF6FE25CDCA} + EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection +EndGlobal diff --git a/tools/ZAPD/ZAPD/BitConverter.h b/tools/ZAPD/ZAPD/BitConverter.h new file mode 100644 index 0000000000..7df68de5e0 --- /dev/null +++ b/tools/ZAPD/ZAPD/BitConverter.h @@ -0,0 +1,159 @@ +#pragma once + +#include +#include +#include + +class BitConverter +{ +public: + static inline int8_t ToInt8BE(const uint8_t* data, int32_t offset) + { + return (uint8_t)data[offset + 0]; + } + + static inline int8_t ToInt8BE(const std::vector& data, int32_t offset) + { + return (uint8_t)data[offset + 0]; + } + + static inline uint8_t ToUInt8BE(const uint8_t* data, int32_t offset) + { + return (uint8_t)data[offset + 0]; + } + + static inline uint8_t ToUInt8BE(const std::vector& data, int32_t offset) + { + return (uint8_t)data[offset + 0]; + } + + static inline int16_t ToInt16BE(const uint8_t* data, int32_t offset) + { + return ((uint16_t)data[offset + 0] << 8) + (uint16_t)data[offset + 1]; + } + + static inline int16_t ToInt16BE(const std::vector& data, int32_t offset) + { + return ((uint16_t)data[offset + 0] << 8) + (uint16_t)data[offset + 1]; + } + + static inline uint16_t ToUInt16BE(const uint8_t* data, int32_t offset) + { + return ((uint16_t)data[offset + 0] << 8) + (uint16_t)data[offset + 1]; + } + + static inline uint16_t ToUInt16BE(const std::vector& data, int32_t offset) + { + return ((uint16_t)data[offset + 0] << 8) + (uint16_t)data[offset + 1]; + } + + static inline int32_t ToInt32BE(const uint8_t* data, int32_t offset) + { + return ((uint32_t)data[offset + 0] << 24) + ((uint32_t)data[offset + 1] << 16) + + ((uint32_t)data[offset + 2] << 8) + (uint32_t)data[offset + 3]; + } + + static inline int32_t ToInt32BE(const std::vector& data, int32_t offset) + { + return ((uint32_t)data[offset + 0] << 24) + ((uint32_t)data[offset + 1] << 16) + + ((uint32_t)data[offset + 2] << 8) + (uint32_t)data[offset + 3]; + } + + static inline uint32_t ToUInt32BE(const uint8_t* data, int32_t offset) + { + return ((uint32_t)data[offset + 0] << 24) + ((uint32_t)data[offset + 1] << 16) + + ((uint32_t)data[offset + 2] << 8) + (uint32_t)data[offset + 3]; + } + + static inline uint32_t ToUInt32BE(const std::vector& data, int32_t offset) + { + return ((uint32_t)data[offset + 0] << 24) + ((uint32_t)data[offset + 1] << 16) + + ((uint32_t)data[offset + 2] << 8) + (uint32_t)data[offset + 3]; + } + + static inline int64_t ToInt64BE(const uint8_t* data, int32_t offset) + { + return ((uint64_t)data[offset + 0] << 56) + ((uint64_t)data[offset + 1] << 48) + + ((uint64_t)data[offset + 2] << 40) + ((uint64_t)data[offset + 3] << 32) + + ((uint64_t)data[offset + 4] << 24) + ((uint64_t)data[offset + 5] << 16) + + ((uint64_t)data[offset + 6] << 8) + ((uint64_t)data[offset + 7]); + } + + static inline int64_t ToInt64BE(const std::vector& data, int32_t offset) + { + return ((uint64_t)data[offset + 0] << 56) + ((uint64_t)data[offset + 1] << 48) + + ((uint64_t)data[offset + 2] << 40) + ((uint64_t)data[offset + 3] << 32) + + ((uint64_t)data[offset + 4] << 24) + ((uint64_t)data[offset + 5] << 16) + + ((uint64_t)data[offset + 6] << 8) + ((uint64_t)data[offset + 7]); + } + + static inline uint64_t ToUInt64BE(const uint8_t* data, int32_t offset) + { + return ((uint64_t)data[offset + 0] << 56) + ((uint64_t)data[offset + 1] << 48) + + ((uint64_t)data[offset + 2] << 40) + ((uint64_t)data[offset + 3] << 32) + + ((uint64_t)data[offset + 4] << 24) + ((uint64_t)data[offset + 5] << 16) + + ((uint64_t)data[offset + 6] << 8) + ((uint64_t)data[offset + 7]); + } + + static inline uint64_t ToUInt64BE(const std::vector& data, int32_t offset) + { + return ((uint64_t)data[offset + 0] << 56) + ((uint64_t)data[offset + 1] << 48) + + ((uint64_t)data[offset + 2] << 40) + ((uint64_t)data[offset + 3] << 32) + + ((uint64_t)data[offset + 4] << 24) + ((uint64_t)data[offset + 5] << 16) + + ((uint64_t)data[offset + 6] << 8) + ((uint64_t)data[offset + 7]); + } + + static inline float ToFloatBE(const uint8_t* data, int32_t offset) + { + float value; + uint32_t floatData = ((uint32_t)data[offset + 0] << 24) + + ((uint32_t)data[offset + 1] << 16) + + ((uint32_t)data[offset + 2] << 8) + (uint32_t)data[offset + 3]; + static_assert(sizeof(uint32_t) == sizeof(float)); + std::memcpy(&value, &floatData, sizeof(value)); + return value; + } + + static inline float ToFloatBE(const std::vector& data, int32_t offset) + { + float value; + uint32_t floatData = ((uint32_t)data[offset + 0] << 24) + + ((uint32_t)data[offset + 1] << 16) + + ((uint32_t)data[offset + 2] << 8) + (uint32_t)data[offset + 3]; + static_assert(sizeof(uint32_t) == sizeof(float)); + std::memcpy(&value, &floatData, sizeof(value)); + return value; + } + + static inline double ToDoubleBE(const uint8_t* data, int32_t offset) + { + double value; + uint64_t floatData = + ((uint64_t)data[offset + 0] << 56) + ((uint64_t)data[offset + 1] << 48) + + ((uint64_t)data[offset + 2] << 40) + ((uint64_t)data[offset + 3] << 32) + + ((uint64_t)data[offset + 4] << 24) + ((uint64_t)data[offset + 5] << 16) + + ((uint64_t)data[offset + 6] << 8) + ((uint64_t)data[offset + 7]); + static_assert(sizeof(uint64_t) == sizeof(double)); + // Checks if the float format on the platform the ZAPD binary is running on supports the + // same float format as the object file. + static_assert(std::numeric_limits::is_iec559); + std::memcpy(&value, &floatData, sizeof(value)); + return value; + } + + static inline double ToDoubleBE(const std::vector& data, int32_t offset) + { + double value; + uint64_t floatData = + ((uint64_t)data[offset + 0] << 56) + ((uint64_t)data[offset + 1] << 48) + + ((uint64_t)data[offset + 2] << 40) + ((uint64_t)data[offset + 3] << 32) + + ((uint64_t)data[offset + 4] << 24) + ((uint64_t)data[offset + 5] << 16) + + ((uint64_t)data[offset + 6] << 8) + ((uint64_t)data[offset + 7]); + static_assert(sizeof(uint64_t) == sizeof(double)); + // Checks if the float format on the platform the ZAPD binary is running on supports the + // same float format as the object file. + static_assert(std::numeric_limits::is_iec559); + std::memcpy(&value, &floatData, sizeof(value)); + return value; + } +}; diff --git a/tools/ZAPD/ZAPD/CRC32.h b/tools/ZAPD/ZAPD/CRC32.h new file mode 100644 index 0000000000..4158a55289 --- /dev/null +++ b/tools/ZAPD/ZAPD/CRC32.h @@ -0,0 +1,23 @@ +#pragma once + +static uint32_t CRC32B(unsigned char* message, int32_t size) +{ + int32_t byte, crc; + int32_t mask; + + crc = 0xFFFFFFFF; + + for (int32_t i = 0; i < size; i++) + { + byte = message[i]; + crc = crc ^ byte; + + for (int32_t j = 7; j >= 0; j--) + { + mask = -(crc & 1); + crc = (crc >> 1) ^ (0xEDB88320 & mask); + } + } + + return ~(uint32_t)(crc); +} \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/Declaration.cpp b/tools/ZAPD/ZAPD/Declaration.cpp new file mode 100644 index 0000000000..63a3918050 --- /dev/null +++ b/tools/ZAPD/ZAPD/Declaration.cpp @@ -0,0 +1,79 @@ +#include "Declaration.h" + +Declaration::Declaration(DeclarationAlignment nAlignment, DeclarationPadding nPadding, size_t nSize, + std::string nText) +{ + alignment = nAlignment; + padding = nPadding; + size = nSize; + text = nText; +} + +Declaration::Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, std::string nText) + : Declaration(nAlignment, DeclarationPadding::None, nSize, nText) +{ + varType = nVarType; + varName = nVarName; + isArray = nIsArray; +} + +Declaration::Declaration(DeclarationAlignment nAlignment, DeclarationPadding nPadding, size_t nSize, + std::string nVarType, std::string nVarName, bool nIsArray, + std::string nText) + : Declaration(nAlignment, nPadding, nSize, nText) +{ + varType = nVarType; + varName = nVarName; + isArray = nIsArray; +} + +Declaration::Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, size_t nArrayItemCnt, + std::string nText) + : Declaration(nAlignment, DeclarationPadding::None, nSize, nText) +{ + varType = nVarType; + varName = nVarName; + isArray = nIsArray; + arrayItemCnt = nArrayItemCnt; +} + +Declaration::Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, std::string nArrayItemCntStr, + std::string nText) + : Declaration(nAlignment, DeclarationPadding::None, nSize, nText) +{ + varType = nVarType; + varName = nVarName; + isArray = nIsArray; + arrayItemCntStr = nArrayItemCntStr; +} + +Declaration::Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, size_t nArrayItemCnt, + std::string nText, bool nIsExternal) + : Declaration(nAlignment, nSize, nVarType, nVarName, nIsArray, nArrayItemCnt, nText) +{ + isExternal = nIsExternal; +} + +Declaration::Declaration(DeclarationAlignment nAlignment, DeclarationPadding nPadding, size_t nSize, + std::string nVarType, std::string nVarName, bool nIsArray, + size_t nArrayItemCnt, std::string nText) + : Declaration(nAlignment, nPadding, nSize, nText) +{ + varType = nVarType; + varName = nVarName; + isArray = nIsArray; + arrayItemCnt = nArrayItemCnt; +} + +Declaration::Declaration(std::string nIncludePath, size_t nSize, std::string nVarType, + std::string nVarName) + : Declaration(DeclarationAlignment::None, DeclarationPadding::None, nSize, "") +{ + includePath = nIncludePath; + varType = nVarType; + varName = nVarName; +} diff --git a/tools/ZAPD/ZAPD/Declaration.h b/tools/ZAPD/ZAPD/Declaration.h new file mode 100644 index 0000000000..fa8653b858 --- /dev/null +++ b/tools/ZAPD/ZAPD/Declaration.h @@ -0,0 +1,65 @@ +#pragma once + +#include +#include + +enum class DeclarationAlignment +{ + None, + Align4, + Align8, + Align16 +}; + +enum class DeclarationPadding +{ + None, + Pad4, + Pad8, + Pad16 +}; + +class Declaration +{ +public: + DeclarationAlignment alignment; + DeclarationPadding padding; + size_t size = 0; + std::string preText; + std::string text; + std::string rightText; + std::string postText; + std::string preComment; + std::string postComment; + std::string varType; + std::string varName; + std::string includePath; + bool isExternal = false; + bool isArray = false; + size_t arrayItemCnt = 0; + std::string arrayItemCntStr; + std::vector references; + bool isUnaccounted = false; + bool isPlaceholder = false; + + Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, std::string nText); + Declaration(DeclarationAlignment nAlignment, DeclarationPadding nPadding, size_t nSize, + std::string nVarType, std::string nVarName, bool nIsArray, std::string nText); + Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, size_t nArrayItemCnt, std::string nText); + Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, std::string nArrayItemCntStr, + std::string nText); + Declaration(DeclarationAlignment nAlignment, size_t nSize, std::string nVarType, + std::string nVarName, bool nIsArray, size_t nArrayItemCnt, std::string nText, + bool nIsExternal); + Declaration(DeclarationAlignment nAlignment, DeclarationPadding nPadding, size_t nSize, + std::string nVarType, std::string nVarName, bool nIsArray, size_t nArrayItemCnt, + std::string nText); + Declaration(std::string nIncludePath, size_t nSize, std::string nVarType, std::string nVarName); + +protected: + Declaration(DeclarationAlignment nAlignment, DeclarationPadding nPadding, size_t nSize, + std::string nText); +}; diff --git a/tools/ZAPD/ZAPD/Directory.h b/tools/ZAPD/ZAPD/Directory.h new file mode 100644 index 0000000000..74bb14ed6c --- /dev/null +++ b/tools/ZAPD/ZAPD/Directory.h @@ -0,0 +1,39 @@ +#pragma once + +#include +#include +#include + +#if __has_include() +#include +namespace fs = std::filesystem; +#else +#include +namespace fs = std::experimental::filesystem; +#endif + +#include "StringHelper.h" + +class Directory +{ +public: + static std::string GetCurrentDirectory() { return fs::current_path().u8string(); } + + static bool Exists(const std::string& path) { return fs::exists(fs::path(path)); } + + static void CreateDirectory(const std::string& path) + { + std::string curPath = ""; + std::vector split = StringHelper::Split(path, "/"); + + for (std::string s : split) + { + curPath += s + "/"; + + if (!Exists(curPath)) + fs::create_directory(curPath); + } + + // fs::create_directory(path); + } +}; diff --git a/tools/ZAPD/ZAPD/File.h b/tools/ZAPD/ZAPD/File.h new file mode 100644 index 0000000000..69aa0441dc --- /dev/null +++ b/tools/ZAPD/ZAPD/File.h @@ -0,0 +1,65 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "StringHelper.h" + +class File +{ +public: + static bool Exists(const std::string& filePath) + { + std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); + return file.good(); + } + + static std::vector ReadAllBytes(const std::string& filePath) + { + std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); + int32_t fileSize = (int32_t)file.tellg(); + file.seekg(0); + char* data = new char[fileSize]; + file.read(data, fileSize); + std::vector result = std::vector(data, data + fileSize); + delete[] data; + + return result; + }; + + static std::string ReadAllText(const std::string& filePath) + { + std::ifstream file(filePath, std::ios::in | std::ios::binary | std::ios::ate); + int32_t fileSize = (int32_t)file.tellg(); + file.seekg(0); + char* data = new char[fileSize + 1]; + memset(data, 0, fileSize + 1); + file.read(data, fileSize); + std::string str = std::string((const char*)data); + delete[] data; + + return str; + }; + + static std::vector ReadAllLines(const std::string& filePath) + { + std::string text = ReadAllText(filePath); + std::vector lines = StringHelper::Split(text, "\n"); + + return lines; + }; + + static void WriteAllBytes(const std::string& filePath, const std::vector& data) + { + std::ofstream file(filePath, std::ios::binary); + file.write((char*)data.data(), data.size()); + }; + + static void WriteAllText(const std::string& filePath, const std::string& text) + { + std::ofstream file(filePath, std::ios::out); + file.write(text.c_str(), text.size()); + } +}; diff --git a/tools/ZAPD/ZAPD/Globals.cpp b/tools/ZAPD/ZAPD/Globals.cpp new file mode 100644 index 0000000000..a8676cc639 --- /dev/null +++ b/tools/ZAPD/ZAPD/Globals.cpp @@ -0,0 +1,186 @@ +#include "Globals.h" +#include +#include "File.h" +#include "Path.h" +#include "tinyxml2.h" + +using namespace tinyxml2; + +Globals* Globals::Instance; + +Globals::Globals() +{ + Instance = this; + + files = std::vector(); + segments = std::vector(); + symbolMap = std::map(); + segmentRefs = std::map(); + segmentRefFiles = std::map(); + game = ZGame::OOT_RETAIL; + genSourceFile = true; + testMode = false; + profile = false; + useLegacyZDList = false; + useExternalResources = true; + lastScene = nullptr; + verbosity = VerbosityLevel::VERBOSITY_SILENT; +} + +std::string Globals::FindSymbolSegRef(int32_t segNumber, uint32_t symbolAddress) +{ + if (segmentRefs.find(segNumber) != segmentRefs.end()) + { + if (segmentRefFiles.find(segNumber) == segmentRefFiles.end()) + { + XMLDocument doc; + std::string filePath = segmentRefs[segNumber]; + XMLError eResult = doc.LoadFile(filePath.c_str()); + + if (eResult != tinyxml2::XML_SUCCESS) + return "ERROR"; + + XMLNode* root = doc.FirstChild(); + + if (root == nullptr) + return "ERROR"; + + for (XMLElement* child = root->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + if (std::string(child->Name()) == "File") + { + ZFile* file = new ZFile(fileMode, child, "", "", "", filePath, true); + file->GeneratePlaceholderDeclarations(); + segmentRefFiles[segNumber] = file; + break; + } + } + } + + return segmentRefFiles[segNumber]->GetDeclarationName(symbolAddress, "ERROR"); + } + + return "ERROR"; +} + +void Globals::ReadConfigFile(const std::string& configFilePath) +{ + XMLDocument doc; + XMLError eResult = doc.LoadFile(configFilePath.c_str()); + + if (eResult != tinyxml2::XML_SUCCESS) + { + throw std::runtime_error("Error: Unable to read config file."); + return; + } + + XMLNode* root = doc.FirstChild(); + + if (root == nullptr) + return; + + for (XMLElement* child = root->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + if (std::string(child->Name()) == "SymbolMap") + { + std::string fileName = std::string(child->Attribute("File")); + GenSymbolMap(Path::GetDirectoryName(configFilePath) + "/" + fileName); + } + else if (std::string(child->Name()) == "Segment") + { + std::string fileName = std::string(child->Attribute("File")); + int32_t segNumber = child->IntAttribute("Number"); + segmentRefs[segNumber] = fileName; + } + else if (std::string(child->Name()) == "ActorList") + { + std::string fileName = std::string(child->Attribute("File")); + std::vector lines = + File::ReadAllLines(Path::GetDirectoryName(configFilePath) + "/" + fileName); + + for (std::string line : lines) + cfg.actorList.push_back(StringHelper::Strip(line, "\r")); + } + else if (std::string(child->Name()) == "ObjectList") + { + std::string fileName = std::string(child->Attribute("File")); + std::vector lines = + File::ReadAllLines(Path::GetDirectoryName(configFilePath) + "/" + fileName); + + for (std::string line : lines) + cfg.objectList.push_back(StringHelper::Strip(line, "\r")); + } + else if (std::string(child->Name()) == "TexturePool") + { + std::string fileName = std::string(child->Attribute("File")); + ReadTexturePool(Path::GetDirectoryName(configFilePath) + "/" + fileName); + } + else if (std::string(child->Name()) == "BGConfig") + { + cfg.bgScreenWidth = child->IntAttribute("ScreenWidth", 320); + cfg.bgScreenHeight = child->IntAttribute("ScreenHeight", 240); + } + } +} + +void Globals::ReadTexturePool(const std::string& texturePoolXmlPath) +{ + XMLDocument doc; + XMLError eResult = doc.LoadFile(texturePoolXmlPath.c_str()); + + if (eResult != tinyxml2::XML_SUCCESS) + { + fprintf(stderr, "Warning: Unable to read texture pool XML with error code %i\n", eResult); + return; + } + + XMLNode* root = doc.FirstChild(); + + if (root == nullptr) + return; + + for (XMLElement* child = root->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + if (std::string(child->Name()) == "Texture") + { + std::string crcStr = std::string(child->Attribute("CRC")); + fs::path texPath = std::string(child->Attribute("Path")); + std::string texName = ""; + + uint32_t crc = strtoul(crcStr.c_str(), NULL, 16); + + cfg.texturePool[crc].path = texPath; + } + } +} + +void Globals::GenSymbolMap(const std::string& symbolMapPath) +{ + auto symbolLines = File::ReadAllLines(symbolMapPath); + + for (std::string symbolLine : symbolLines) + { + auto split = StringHelper::Split(symbolLine, " "); + uint32_t addr = strtoul(split[0].c_str(), NULL, 16); + std::string symbolName = split[1]; + + symbolMap[addr] = symbolName; + } +} + +void Globals::AddSegment(int32_t segment, ZFile* file) +{ + if (std::find(segments.begin(), segments.end(), segment) == segments.end()) + segments.push_back(segment); + + segmentRefs[segment] = file->GetXmlFilePath(); + segmentRefFiles[segment] = file; +} + +bool Globals::HasSegment(int32_t segment) +{ + return std::find(segments.begin(), segments.end(), segment) != segments.end(); +} diff --git a/tools/ZAPD/ZAPD/Globals.h b/tools/ZAPD/ZAPD/Globals.h new file mode 100644 index 0000000000..a7f1fed059 --- /dev/null +++ b/tools/ZAPD/ZAPD/Globals.h @@ -0,0 +1,87 @@ +#pragma once + +#include +#include +#include +#include "ZFile.h" +#include "ZRoom/ZRoom.h" +#include "ZTexture.h" + +enum class VerbosityLevel +{ + VERBOSITY_SILENT, + VERBOSITY_INFO, + VERBOSITY_DEBUG +}; + +struct TexturePoolEntry +{ + fs::path path = ""; // Path to Shared Texture +}; + +class GameConfig +{ +public: + std::map segmentRefs; + std::map segmentRefFiles; + std::map symbolMap; + std::vector actorList; + std::vector objectList; + std::map texturePool; // Key = CRC + + // ZBackground + uint32_t bgScreenWidth = 320, bgScreenHeight = 240; + + GameConfig() = default; +}; + +class Globals +{ +public: + static Globals* Instance; + + bool genSourceFile; // Used for extraction + bool useExternalResources; + bool testMode; // Enables certain experimental features + bool outputCrc = false; + bool profile; // Measure performance of certain operations + bool useLegacyZDList; + VerbosityLevel verbosity; // ZAPD outputs additional information + ZFileMode fileMode; + fs::path baseRomPath, inputPath, outputPath, sourceOutputPath, cfgPath; + TextureType texType; + ZGame game; + GameConfig cfg; + bool warnUnaccounted = false; + + std::vector files; + std::vector segments; + std::map segmentRefs; + std::map segmentRefFiles; + ZRoom* lastScene; + std::map symbolMap; + + Globals(); + std::string FindSymbolSegRef(int32_t segNumber, uint32_t symbolAddress); + void ReadConfigFile(const std::string& configFilePath); + void ReadTexturePool(const std::string& texturePoolXmlPath); + void GenSymbolMap(const std::string& symbolMapPath); + void AddSegment(int32_t segment, ZFile* file); + bool HasSegment(int32_t segment); +}; + +/* + * Note: In being able to track references across files, there are a few major files that make use + * of segments... + * Segment 1: nintendo_rogo_static/title_static + * Segment 2: parameter_static + * Segment 4: gameplay_keep + * Segment 5: gameplay_field_keep, gameplay_dangeon_keep + * Segment 7: link_animetion + * Segment 8: icon_item_static + * Segment 9: icon_item_24_static + * Segment 12: icon_item_field_static, icon_item_dungeon_static + * Segment 13: icon_item_nes_static + * + * I'm thinking a config file could be usable, but I'll have to experiment... + */ diff --git a/tools/ZAPD/ZAPD/HighLevel/HLAnimation.h b/tools/ZAPD/ZAPD/HighLevel/HLAnimation.h new file mode 100644 index 0000000000..52d6847a66 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLAnimation.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +/* + * The high level format for animations. + */ + +class HLAnimation +{ +public: +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.cpp b/tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.cpp new file mode 100644 index 0000000000..a316ddf6f4 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.cpp @@ -0,0 +1,110 @@ +#include "HLAnimationIntermediette.h" + +using namespace tinyxml2; + +HLAnimationIntermediette::HLAnimationIntermediette() +{ + limit = 0; + limbCount = 0; + frameCount = 0; + rotationValues = std::vector(); + rotationIndices = std::vector(); +} + +HLAnimationIntermediette::~HLAnimationIntermediette() +{ +} + +HLAnimationIntermediette* HLAnimationIntermediette::FromXML(std::string xmlPath) +{ + HLAnimationIntermediette* anim = new HLAnimationIntermediette(); + XMLDocument doc; + + doc.LoadFile(xmlPath.c_str()); + + XMLElement* root = doc.RootElement(); + + anim->limit = root->IntAttribute("Limit"); + anim->limbCount = root->IntAttribute("LimbCount"); + anim->frameCount = root->IntAttribute("FrameCount"); + + for (XMLElement* child = root->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + if (std::string(child->Name()) == "RotationValues") + { + for (XMLElement* child2 = child->FirstChildElement(); child2 != NULL; + child2 = child2->NextSiblingElement()) + { + std::string value = child2->GetText(); + anim->rotationValues.push_back(atoi(value.c_str())); + } + } + else if (std::string(child->Name()) == "RotationIndices") + { + for (XMLElement* child2 = child->FirstChildElement(); child2 != NULL; + child2 = child2->NextSiblingElement()) + anim->rotationIndices.push_back(RotationIndex(child2->IntAttribute("X"), + child2->IntAttribute("Y"), + child2->IntAttribute("Z"))); + } + } + + return anim; +} + +HLAnimationIntermediette* HLAnimationIntermediette::FromZAnimation(ZAnimation* zAnim) +{ + HLAnimationIntermediette* anim = new HLAnimationIntermediette(); + + return anim; +} + +ZAnimation* HLAnimationIntermediette::ToZAnimation() +{ + ZAnimation* zAnim = new ZNormalAnimation(nullptr); + + return zAnim; +} + +std::string HLAnimationIntermediette::OutputXML() +{ + std::string output = ""; + XMLDocument doc; + + XMLElement* root = doc.NewElement("HLAnimationIntermediette"); + root->SetAttribute("Limit", limit); + root->SetAttribute("LimbCount", limbCount); + root->SetAttribute("FrameCount", frameCount); + + doc.InsertFirstChild(root); + + XMLElement* rotValues = doc.NewElement("RotationValues"); + + for (size_t i = 0; i < rotationValues.size(); i++) + { + XMLElement* rotValue = doc.NewElement("Value"); + rotValue->SetText(rotationValues[i]); + rotValues->InsertEndChild(rotValue); + } + + root->InsertEndChild(rotValues); + + XMLElement* rotIndices = doc.NewElement("RotationIndices"); + + for (size_t i = 0; i < rotationIndices.size(); i++) + { + XMLElement* rotIndex = doc.NewElement("Value"); + rotIndex->SetAttribute("X", rotationIndices[i].x); + rotIndex->SetAttribute("Y", rotationIndices[i].y); + rotIndex->SetAttribute("Z", rotationIndices[i].z); + rotIndices->InsertEndChild(rotIndex); + } + + root->InsertEndChild(rotIndices); + + XMLPrinter printer; + + doc.Accept(&printer); + return printer.CStr(); +} \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.h b/tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.h new file mode 100644 index 0000000000..171ac9d4d9 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLAnimationIntermediette.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include "../ZAnimation.h" +#include "HLFileIntermediette.h" +#include "tinyxml2.h" + +/* + * An intermediette format for animations. Going to use XML. + * Goes from FBX->XML->C + * Note: At the moment this is a very direct representation of the output format. + * Optimally we can determine where the keyframes are and remove redundant information. + */ + +class HLAnimationIntermediette +{ +public: + int16_t frameCount; + int16_t limit; + int16_t limbCount; + std::vector rotationValues; + std::vector rotationIndices; + + HLAnimationIntermediette(); + ~HLAnimationIntermediette(); + + std::string OutputXML(); + ZAnimation* ToZAnimation(); + + static HLAnimationIntermediette* FromXML(std::string xmlPath); + static HLAnimationIntermediette* FromZAnimation(ZAnimation* zAnim); +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/HighLevel/HLFileIntermediette.h b/tools/ZAPD/ZAPD/HighLevel/HLFileIntermediette.h new file mode 100644 index 0000000000..ef16bb8fd9 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLFileIntermediette.h @@ -0,0 +1,5 @@ +#pragma once + +class HLFileIntermediette +{ +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.cpp b/tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.cpp new file mode 100644 index 0000000000..88f66a46dd --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.cpp @@ -0,0 +1,1185 @@ +#include "HLModelIntermediette.h" +#include "../File.h" +#include "../Globals.h" +#include "../Path.h" +#include "../StringHelper.h" +#include "../ZDisplayList.h" + +#ifdef USE_ASSIMP +#include +#include +#include +#include +#endif + +using namespace tinyxml2; + +HLModelIntermediette::HLModelIntermediette() +{ + blocks = std::vector(); + startIndex = 0; + meshStartIndex = 0; + hasSkeleton = false; + lastTrans = Vec3s(0, 0, 0); +} + +HLModelIntermediette::~HLModelIntermediette() +{ +} + +HLModelIntermediette* HLModelIntermediette::FromXML(tinyxml2::XMLElement* root) +{ + HLModelIntermediette* model = new HLModelIntermediette(); + + for (XMLElement* child = root->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + std::string childName = child->Name(); + HLIntermediette* block = nullptr; + + if (childName == "Mesh") + block = new HLMeshIntermediette(); + else if (childName == "Limb") + block = new HLLimbIntermediette(); + else if (childName == "Vertices") + block = new HLVerticesIntermediette(); + else if (childName == "Texture") + block = new HLTextureIntermediette(); + else if (childName == "Material") + block = new HLMaterialIntermediette(); + + if (block != nullptr) + { + block->parent = model; + block->InitFromXML(child); + model->blocks.push_back(block); + } + } + + return model; +} + +void HLModelIntermediette::FromZDisplayList(HLModelIntermediette* model, ZDisplayList* zDisplayList) +{ + HLLimbIntermediette* limb = new HLLimbIntermediette(); + limb->name = zDisplayList->GetName(); + + // Go through verts + std::vector finalVerts; + + int32_t vStart = -1; + + for (auto& pair : zDisplayList->vertices) + { + if (vStart == -1) // TODO: Find a better way to do this + vStart = pair.first; + + for (auto& v : pair.second) + finalVerts.push_back(v); + } + + HLVerticesIntermediette* vertIntr = new HLVerticesIntermediette(); + vertIntr->vertices = finalVerts; + vertIntr->name = StringHelper::Sprintf("%s_verts", zDisplayList->GetName().c_str()); + model->blocks.push_back(vertIntr); + + // Go through textures + // TODO: Textures are now stored directly in ZFile + /* + for (pair pair : zDisplayList->textures) + { + HLTextureIntermediette* texIntr = new HLTextureIntermediette(); + texIntr->tex = pair.second; + texIntr->name = texIntr->tex->GetName(); + + model->blocks.push_back(texIntr); + } + */ + + // Analyze display lists to determine components + HLDisplayListIntermediette* dList = new HLDisplayListIntermediette(); + dList->address = zDisplayList->GetRawDataIndex(); + int32_t startIndex = 0; + + // Go through the display lists and setup commands + int32_t meshCnt = 0; + + HLMeshIntermediette* mesh = new HLMeshIntermediette(); + mesh->name = StringHelper::Sprintf("%s_%i", zDisplayList->GetName().c_str(), meshCnt); + + int32_t matCnt = 0; + HLMaterialIntermediette* lastMat = new HLMaterialIntermediette(); + lastMat->name = StringHelper::Sprintf("Material_%i", matCnt); + + uint8_t lastClrR = 0, lastClrG = 0, lastClrB = 0, lastClrA = 0, lastClrM = 0, lastClrL = 0; + + startIndex = 0; + + for (size_t i = startIndex; i < zDisplayList->instructions.size(); i++) + { + uint64_t data = zDisplayList->instructions[i]; + F3DZEXOpcode opcode = (F3DZEXOpcode)(data >> 56); + + if (opcode == F3DZEXOpcode::G_SETOTHERMODE_L) + { + } + else if (opcode == F3DZEXOpcode::G_SETPRIMCOLOR) + { + int32_t mm = (data & 0x0000FF0000000000) >> 40; + int32_t ff = (data & 0x000000FF00000000) >> 32; + int32_t rr = (data & 0x00000000FF000000) >> 24; + int32_t gg = (data & 0x0000000000FF0000) >> 16; + int32_t bb = (data & 0x000000000000FF00) >> 8; + int32_t aa = (data & 0x00000000000000FF) >> 0; + + lastClrR = rr; + lastClrG = gg; + lastClrB = bb; + lastClrA = aa; + lastClrL = ff; + lastClrM = mm; + + lastMat->clrR = rr; + lastMat->clrG = gg; + lastMat->clrB = bb; + lastMat->clrA = aa; + lastMat->clrL = ff; + lastMat->clrM = mm; + } + else if (opcode == F3DZEXOpcode::G_SETTILE && + (F3DZEXOpcode)(zDisplayList->instructions[i - 1] >> 56) != + F3DZEXOpcode::G_RDPPIPESYNC) + { + int32_t cc = + (data & 0b0000000000000000000000000000000000000000000011000000000000000000) >> 18; + int32_t dd = + (data & 0b0000000000000000000000000000000000000000000000000000001100000000) >> 8; + + lastMat->cmtH = (HLMaterialCmt)cc; + lastMat->cmtV = (HLMaterialCmt)dd; + + matCnt++; + + if (matCnt > 1 && mesh->commands.size() > 0) + { + model->blocks.push_back(lastMat); + limb->commands.push_back(new HLLimbCommand(mesh->name, lastMat->name)); + lastMat = new HLMaterialIntermediette(); + lastMat->name = StringHelper::Sprintf("Material_%i", matCnt); + + lastMat->clrR = lastClrR; + lastMat->clrG = lastClrG; + lastMat->clrB = lastClrB; + lastMat->clrA = lastClrA; + lastMat->clrL = lastClrL; + lastMat->clrM = lastClrM; + + // Bit of a hack here... + // int32_t lastData = (int32_t)(zDisplayList->instructions[i - 1]); + // TODO + // string texName = zDisplayList->textures[lastData & 0x00FFFFFF]->GetName(); + // lastMat->textureName = texName; + + // -------------------------- + model->blocks.push_back(mesh); + + meshCnt++; + + mesh = new HLMeshIntermediette(); + mesh->name = + StringHelper::Sprintf("%s_%i", zDisplayList->GetName().c_str(), meshCnt); + } + } + else if (opcode == F3DZEXOpcode::G_SETTIMG) + { + // int32_t texAddress = data & 0x00FFFFFF; + + // TODO + // string texName = zDisplayList->textures[texAddress]->GetName(); + // lastMat->textureName = texName; + } + else if (opcode == F3DZEXOpcode::G_VTX) + { + int32_t nn = (data & 0x000FF00000000000ULL) >> 44; + int32_t aa = (data & 0x000000FF00000000ULL) >> 32; + int32_t startIndex = ((aa >> 1) - nn); + uint32_t vtxAddr = data & 0x00FFFFFF; + uint32_t diff = vtxAddr - vStart; + + startIndex += diff / 16; + + mesh->commands.push_back(new HLMeshCmdLoadVertices(nn, startIndex)); + } + else if (opcode == F3DZEXOpcode::G_TRI1) + { + int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2; + int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2; + int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2; + + mesh->commands.push_back(new HLMeshCmdTriangle1(aa, bb, cc, 0)); + } + else if (opcode == F3DZEXOpcode::G_TRI2) + { + int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2; + int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2; + int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2; + int32_t dd = ((data & 0x00000000FF0000ULL) >> 16) / 2; + int32_t ee = ((data & 0x0000000000FF00ULL) >> 8) / 2; + int32_t ff = ((data & 0x000000000000FFULL) >> 0) / 2; + + mesh->commands.push_back(new HLMeshCmdTriangle2(aa, bb, cc, 0, dd, ee, ff, 0)); + } + + // int32_t bp = 0; + } + + limb->commands.push_back(new HLLimbCommand(mesh->name, lastMat->name)); + model->blocks.push_back(lastMat); + model->blocks.push_back(mesh); + model->blocks.push_back(limb); +} + +void HLModelIntermediette::FromZSkeleton(HLModelIntermediette* model, ZSkeleton* zSkeleton) +{ + model->hasSkeleton = true; + + // Start at the root skeleton node, go down... + ProcessZSkeletonLimb(model, zSkeleton, zSkeleton->limbs[0]); +} + +void HLModelIntermediette::ProcessZSkeletonLimb(HLModelIntermediette* model, ZSkeleton* zSkeleton, + ZLimb* limb) +{ + /* + if (limb->dList == nullptr && limb->dListPtr != 0) + limb->dList = (ZDisplayList*)zSkeleton->parent->FindResource(limb->dListPtr); + + if (limb->dList != nullptr) + { + auto cmdTrans = new HLSetTranslation(limb->transX, limb->transY, limb->transZ); + cmdTrans->parent = model; + model->blocks.push_back(cmdTrans); + + FromZDisplayList(model, limb->dList); + } + */ + + /*for (ZLimb* childLimb : limb->children) + { + ProcessZSkeletonLimb(model, zSkeleton, childLimb); + }*/ +} + +std::string HLModelIntermediette::ToOBJFile() +{ + std::string output = ""; + + for (HLIntermediette* block : blocks) + { + block->parent = this; + std::string code = block->OutputOBJ(); + + output += code; + + if (code != "") + output += "\n"; + } + + return output; +} + +std::string HLModelIntermediette::ToAssimpFile() +{ +#ifdef USE_ASSIMP + Assimp::Exporter exporter; + aiScene* newScene = new aiScene(); + newScene->mMeshes = new aiMesh*[128]; + newScene->mRootNode = new aiNode(); + newScene->mRootNode->mName = "RootNode"; + + std::vector vertices; + + int32_t idx = 0; + + for (HLIntermediette* block : blocks) + { + block->parent = this; + block->OutputAssimp(newScene, &vertices); + + idx++; + } + + newScene->mRootNode->mNumChildren += newScene->mNumMeshes; + newScene->mRootNode->mChildren = new aiNode*[newScene->mRootNode->mNumChildren]; + + for (size_t i = 0; i < newScene->mNumMeshes; i++) + { + aiNode* child = new aiNode(); + child->mName = StringHelper::Sprintf("OBJ_%i", i); + child->mNumMeshes = 1; + child->mMeshes = new uint32_t[1]; + child->mMeshes[0] = i; + child->mTransformation.Translation(aiVector3D(meshTranslations[i].x * 10, + meshTranslations[i].y * 10, + meshTranslations[i].z * 10), + child->mTransformation); + newScene->mRootNode->mChildren[i] = child; + } + + newScene->mNumMaterials = 1; + newScene->mMaterials = new aiMaterial*[1]; + newScene->mMaterials[0] = new aiMaterial(); + + exporter.Export(newScene, "fbx", "__export.fbx"); +#endif + + return ""; +} + +std::string HLModelIntermediette::OutputCode() +{ + std::string output = ""; + + for (HLIntermediette* block : blocks) + { + std::string code = block->OutputCode(); + + output += code; + + if (code != "") + output += "\n"; + } + + return output; +} + +std::string HLModelIntermediette::OutputXML() +{ + std::string output = ""; + XMLDocument doc; + + XMLElement* root = doc.NewElement("HLModelIntermediette"); + + for (HLIntermediette* block : blocks) + block->OutputXML(&doc, root); + + doc.InsertEndChild(root); + + XMLPrinter printer; + + doc.Accept(&printer); + return printer.CStr(); +} + +template +inline T* HLModelIntermediette::FindByName(std::string name) +{ + for (HLIntermediette* block : blocks) + { + if (typeid(*block) == typeid(T)) + { + if (block->name == name) + return (T*)block; + } + } + + return nullptr; +} + +template +inline T* HLModelIntermediette::FindByType() +{ + for (HLIntermediette* block : blocks) + { + if (typeid(*block) == typeid(T)) + return (T*)block; + } + + return nullptr; +} + +HLIntermediette::HLIntermediette() +{ + name = ""; + parent = nullptr; +} + +HLIntermediette::~HLIntermediette() +{ +} + +void HLIntermediette::InitFromXML(XMLElement* xmlElement) +{ + name = xmlElement->Attribute("Name"); +} + +std::string HLIntermediette::OutputCode() +{ + return ""; +} + +std::string HLIntermediette::OutputOBJ() +{ + return ""; +} + +void HLIntermediette::OutputAssimp(aiScene* scene, std::vector* verts) +{ +} + +void HLIntermediette::OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root) +{ +} + +void HLMeshCommand::InitFromXML(XMLElement* xmlElement) +{ +} + +std::string HLMeshCommand::OutputCode(HLModelIntermediette* parent) +{ + return ""; +} + +std::string HLMeshCommand::OutputOBJ(HLModelIntermediette* parent) +{ + return ""; +} + +void HLMeshCommand::OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh) +{ +} + +void HLMeshCommand::OutputXML(tinyxml2::XMLElement* parent) +{ +} + +HLVerticesIntermediette::HLVerticesIntermediette() : HLIntermediette() +{ + vertices = std::vector(); +} + +void HLVerticesIntermediette::InitFromXML(XMLElement* verticesElement) +{ + name = verticesElement->Attribute("Name"); + + /* + for (XMLElement* child = verticesElement->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + vertices.push_back(ZVtx(child->IntAttribute("X"), child->IntAttribute("Y"), + child->IntAttribute("Z"), child->IntAttribute("Flags"), + child->IntAttribute("S"), child->IntAttribute("T"), + child->IntAttribute("R"), child->IntAttribute("G"), + child->IntAttribute("B"), child->IntAttribute("A"))); + */ +} + +void HLVerticesIntermediette::InitFromVertices(std::vector dispListVertices) +{ + for (auto v : dispListVertices) + vertices.push_back(v); +} + +std::string HLVerticesIntermediette::OutputCode(HLModelIntermediette* parent) +{ + std::string output = ""; + + output += StringHelper::Sprintf("Vtx %s_verts[] = \n{\n", name.c_str()); + + for (auto v : vertices) + { + output += StringHelper::Sprintf(" { %i, %i, %i, %i, %i, %i, %i, %i, %i, %i },\n", v.x, + v.y, v.z, v.flag, v.s, v.t, v.r, v.g, v.b, v.a); + } + + output += StringHelper::Sprintf("};\n"); + + return output; +} + +std::string HLVerticesIntermediette::OutputOBJ() +{ + std::string output = ""; + + for (auto& v : vertices) + { + output += StringHelper::Sprintf("v %f %f %f %i %i %i %i\n", (float)v.x * 0.1f, + (float)v.y * 0.1f, (float)v.z * 0.1f, v.r, v.g, v.b, v.a); + } + + return output; +} + +void HLVerticesIntermediette::OutputAssimp(aiScene* scene, std::vector* verts) +{ + verts->clear(); + + for (size_t i = 0; i < vertices.size(); i++) + { + verts->push_back(aiVector3D(vertices[i].x, vertices[i].y, vertices[i].z)); + } +} + +void HLVerticesIntermediette::OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root) +{ + XMLElement* element = doc->NewElement("Vertices"); + + element->SetAttribute("Name", name.c_str()); + + for (auto& v : vertices) + { + XMLElement* vElem = doc->NewElement("Vertex"); + vElem->SetAttribute("X", v.x); + vElem->SetAttribute("Y", v.y); + vElem->SetAttribute("Z", v.z); + vElem->SetAttribute("Flag", v.flag); + vElem->SetAttribute("S", v.s); + vElem->SetAttribute("T", v.t); + vElem->SetAttribute("R", v.r); + vElem->SetAttribute("G", v.g); + vElem->SetAttribute("B", v.b); + vElem->SetAttribute("A", v.a); + + element->InsertEndChild(vElem); + } + + root->InsertEndChild(element); +} + +HLMeshCmdGeoSettings::HLMeshCmdGeoSettings() +{ + on = ""; + off = ""; +} + +void HLMeshCmdGeoSettings::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + on = xmlElement->Attribute("On"); + off = xmlElement->Attribute("Off"); +} + +std::string HLMeshCmdGeoSettings::OutputCode(HLModelIntermediette* parent) +{ + std::string output = ""; + + if (off != "") + output += + StringHelper::Sprintf("gsSPClearGeometryMode(G_TEXTURE_ENABLE | %s),\n", off.c_str()); + + if (on != "") + output += StringHelper::Sprintf("gsSPSetGeometryMode(G_TEXTURE_ENABLE | %s),", on.c_str()); + + return output; +} + +HLMeshCmdTriangle1::HLMeshCmdTriangle1() +{ + v0 = 0; + v1 = 0; + v2 = 0; + flag = 0; +} + +HLMeshCmdTriangle1::HLMeshCmdTriangle1(int32_t nV0, int32_t nV1, int32_t nV2, int32_t nFlag) +{ + v0 = nV0; + v1 = nV1; + v2 = nV2; + flag = nFlag; +} + +void HLMeshCmdTriangle1::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + v0 = xmlElement->IntAttribute("v0"); + v1 = xmlElement->IntAttribute("v1"); + v2 = xmlElement->IntAttribute("v2"); + flag = xmlElement->IntAttribute("flag"); +} + +std::string HLMeshCmdTriangle1::OutputCode(HLModelIntermediette* parent) +{ + return StringHelper::Sprintf("gsSP1Triangle(%i, %i, %i, %i),", v0, v1, v2, flag); +} + +void HLMeshCmdTriangle1::OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh) +{ + aiFace* face = new aiFace(); + face->mNumIndices = 3; + face->mIndices = new uint32_t[3]; + face->mIndices[0] = parent->startIndex + v0; + face->mIndices[1] = parent->startIndex + v1; + face->mIndices[2] = parent->startIndex + v2; + + mesh->mFaces[mesh->mNumFaces++] = face[0]; +} + +void HLMeshCmdTriangle1::OutputXML(tinyxml2::XMLElement* parent) +{ + XMLElement* elem = parent->GetDocument()->NewElement("Triangle1"); + + elem->SetAttribute("V0", v0); + elem->SetAttribute("V1", v1); + elem->SetAttribute("V2", v2); + elem->SetAttribute("Flag", flag); + + parent->InsertEndChild(elem); +} + +HLMeshCmdTriangle2::HLMeshCmdTriangle2() +{ + v0 = 0; + v1 = 0; + v2 = 0; + flag0 = 0; + v10 = 0; + v11 = 0; + v12 = 0; + flag1 = 0; +} + +HLMeshCmdTriangle2::HLMeshCmdTriangle2(int32_t nV0, int32_t nV1, int32_t nV2, int32_t nFlag0, + int32_t nV10, int32_t nV11, int32_t nV12, int32_t nFlag1) +{ + v0 = nV0; + v1 = nV1; + v2 = nV2; + flag0 = nFlag0; + v10 = nV10; + v11 = nV11; + v12 = nV12; + flag1 = nFlag1; +} + +void HLMeshCmdTriangle2::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + v0 = xmlElement->IntAttribute("V0"); + v1 = xmlElement->IntAttribute("V1"); + v2 = xmlElement->IntAttribute("V2"); + flag0 = xmlElement->IntAttribute("Flag0"); + v10 = xmlElement->IntAttribute("V10"); + v11 = xmlElement->IntAttribute("V11"); + v12 = xmlElement->IntAttribute("V12"); + flag1 = xmlElement->IntAttribute("Flag1"); +} + +std::string HLMeshCmdTriangle2::OutputCode(HLModelIntermediette* parent) +{ + return StringHelper::Sprintf("gsSP2Triangles(%i, %i, %i, %i, %i, %i, %i, %i),", v0, v1, v2, + flag0, v10, v11, v12, flag1); +} + +std::string HLMeshCmdTriangle2::OutputOBJ(HLModelIntermediette* parent) +{ + std::string output = ""; + + int32_t startIndex = parent->startIndex; + + output += StringHelper::Sprintf("f %i %i %i\n", startIndex + v0 + 1, startIndex + v1 + 1, + startIndex + v2 + 1); + output += StringHelper::Sprintf("f %i %i %i\n", startIndex + v10 + 1, startIndex + v11 + 1, + startIndex + v12 + 1); + + return output; +} + +void HLMeshCmdTriangle2::OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh) +{ + { + aiFace* face = new aiFace(); + face->mNumIndices = 3; + face->mIndices = new uint32_t[3]; + face->mIndices[0] = parent->startIndex + v0; + face->mIndices[1] = parent->startIndex + v1; + face->mIndices[2] = parent->startIndex + v2; + + mesh->mFaces[mesh->mNumFaces++] = face[0]; + } + + { + aiFace* face = new aiFace(); + face->mNumIndices = 3; + face->mIndices = new uint32_t[3]; + face->mIndices[0] = parent->startIndex + v10; + face->mIndices[1] = parent->startIndex + v11; + face->mIndices[2] = parent->startIndex + v12; + + mesh->mFaces[mesh->mNumFaces++] = face[0]; + } +} + +void HLMeshCmdTriangle2::OutputXML(tinyxml2::XMLElement* parent) +{ + XMLElement* elem = parent->GetDocument()->NewElement("Triangle2"); + + elem->SetAttribute("V0", v0); + elem->SetAttribute("V1", v1); + elem->SetAttribute("V2", v2); + elem->SetAttribute("Flag0", flag0); + elem->SetAttribute("V10", v10); + elem->SetAttribute("V11", v11); + elem->SetAttribute("V12", v12); + elem->SetAttribute("Flag1", flag1); + + parent->InsertEndChild(elem); +} + +HLMeshCmdLoadVertices::HLMeshCmdLoadVertices() : HLMeshCommand() +{ + numVerts = 0; + startIndex = 0; +} + +HLMeshCmdLoadVertices::HLMeshCmdLoadVertices(uint8_t nNumVerts, uint8_t nStartIndex) +{ + numVerts = nNumVerts; + startIndex = nStartIndex; +} + +void HLMeshCmdLoadVertices::OutputXML(tinyxml2::XMLElement* parent) +{ + XMLElement* elem = parent->GetDocument()->NewElement("LoadVertices"); + + elem->SetAttribute("StartIndex", startIndex); + elem->SetAttribute("NumVerts", numVerts); + + parent->InsertEndChild(elem); +} + +void HLMeshCmdLoadVertices::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + numVerts = xmlElement->IntAttribute("NumVerts", 0); + startIndex = xmlElement->IntAttribute("StartIndex", 0); +} + +std::string HLMeshCmdLoadVertices::OutputOBJ(HLModelIntermediette* parent) +{ + parent->startIndex = startIndex; + return ""; +} + +void HLMeshCmdLoadVertices::OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh) +{ + parent->startIndex = startIndex; +} + +std::string HLMeshCmdLoadVertices::OutputCode(HLModelIntermediette* parent) +{ + HLVerticesIntermediette* verts = parent->FindByType(); + return StringHelper::Sprintf("gsSPVertex(&%s[%i], %i, %i),", verts->name.c_str(), startIndex, + numVerts, 0); +} + +HLMaterialIntermediette::HLMaterialIntermediette() +{ + textureName = ""; + clrR = 0; + clrG = 0; + clrB = 0; + clrA = 0; + clrM = 0; + clrL = 0; + cmtH = HLMaterialCmt::Wrap; + cmtV = HLMaterialCmt::Wrap; +} + +void HLMaterialIntermediette::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + name = xmlElement->Attribute("Name"); + textureName = xmlElement->Attribute("TextureName"); + clrR = xmlElement->IntAttribute("ClrR"); + clrG = xmlElement->IntAttribute("ClrG"); + clrB = xmlElement->IntAttribute("ClrB"); + clrA = xmlElement->IntAttribute("ClrA"); + clrM = xmlElement->IntAttribute("ClrM"); + clrL = xmlElement->IntAttribute("ClrL"); +} + +std::string HLMaterialIntermediette::OutputCode() +{ + return ""; +} + +void HLMaterialIntermediette::OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* parent) +{ + XMLElement* elem = parent->GetDocument()->NewElement("Material"); + + elem->SetAttribute("Name", name.c_str()); + elem->SetAttribute("TextureName", textureName.c_str()); + elem->SetAttribute("ClrR", clrR); + elem->SetAttribute("ClrG", clrG); + elem->SetAttribute("ClrB", clrB); + elem->SetAttribute("ClrA", clrA); + elem->SetAttribute("ClrL", clrL); + elem->SetAttribute("ClrM", clrM); + elem->SetAttribute("CmtH", (int32_t)cmtH); + elem->SetAttribute("CmtV", (int32_t)cmtV); + + parent->InsertEndChild(elem); +} + +HLDisplayListIntermediette::HLDisplayListIntermediette() +{ + commands = std::vector(); +} + +std::string HLDisplayListIntermediette::OutputCode() +{ + return std::string(); +} + +void HLDisplayListIntermediette::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + for (XMLElement* child = xmlElement->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + std::string name = child->Name(); + + HLDisplayListCommand* cmd = nullptr; + + if (name == "DrawMesh") + cmd = new HLDisplayListCmdDrawMesh(); + else if (name == "PipeSync") + cmd = new HLDisplayListCmdPipeSync(); + + if (cmd != nullptr) + { + cmd->InitFromXML(child); + commands.push_back(cmd); + } + } +} + +void HLDisplayListCommand::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ +} + +std::string HLDisplayListCommand::OutputCode() +{ + return ""; +} + +void HLDisplayListCmdDrawMesh::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + meshName = xmlElement->Attribute("Mesh"); + materialName = xmlElement->Attribute("Material"); +} + +std::string HLDisplayListCmdDrawMesh::OutputCode() +{ + return ""; +} + +HLTextureIntermediette::HLTextureIntermediette() +{ + tex = nullptr; +} + +void HLTextureIntermediette::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + name = xmlElement->Attribute("Name"); + + fileName = xmlElement->Attribute("TextureName"); + // std::string format = xmlElement->Attribute("Format"); + std::string format = "rgb5a1"; // TEST + + // tex = HLTexture::FromPNG(fileName, + // (HLTextureType)ZTexture::GetTextureTypeFromString(format)); + tex = new ZTexture(nullptr); + tex->ZTexture::FromPNG(Path::GetDirectoryName(Globals::Instance->inputPath.string()) + "/" + + fileName, + ZTexture::GetTextureTypeFromString(format)); +} + +std::string HLTextureIntermediette::OutputCode() +{ + return StringHelper::Sprintf("#include <../%s/%s.inc.c>", Globals::Instance->outputPath.c_str(), + name.c_str()); +} + +void HLTextureIntermediette::OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root) +{ + XMLElement* element = doc->NewElement("Texture"); + + element->SetAttribute("Name", name.c_str()); + element->SetAttribute("TextureName", + (name + "." + tex->GetExternalExtension() + ".png").c_str()); + tex->Save(Globals::Instance->outputPath.string()); + + root->InsertEndChild(element); +} + +void HLDisplayListCmdPipeSync::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ +} + +std::string HLDisplayListCmdPipeSync::OutputCode() +{ + return "gsDPPipeSync(),"; +} + +HLMeshCmdCull::HLMeshCmdCull() : HLMeshCommand() +{ + indexStart = 0; + indexEnd = 0; +} + +void HLMeshCmdCull::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + indexStart = xmlElement->IntAttribute("IndexStart", 0); + indexEnd = xmlElement->IntAttribute("IndexEnd", 0); +} + +std::string HLMeshCmdCull::OutputCode(HLModelIntermediette* parent) +{ + return StringHelper::Sprintf("gsSPCullDisplayList(%i, %i),", indexStart, indexEnd); +} + +HLMeshIntermediette::HLMeshIntermediette() : HLIntermediette() +{ + commands = std::vector(); +} + +void HLMeshIntermediette::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + name = xmlElement->Attribute("Name"); + + for (XMLElement* child = xmlElement->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + std::string name = child->Name(); + + HLMeshCommand* cmd = nullptr; + + if (name == "Triangle1") + cmd = new HLMeshCmdTriangle1(); + else if (name == "Triangle2") + cmd = new HLMeshCmdTriangle2(); + else if (name == "LoadVertices") + cmd = new HLMeshCmdLoadVertices(); + else if (name == "GeoSettings") + cmd = new HLMeshCmdGeoSettings(); + else if (name == "Cull") + cmd = new HLMeshCmdCull(); + + if (cmd != nullptr) + { + cmd->InitFromXML(child); + commands.push_back(cmd); + } + } +} + +std::string HLMeshIntermediette::OutputCode(std::string materialName) +{ + std::string output = ""; + + HLMaterialIntermediette* mat = parent->FindByName(materialName); + HLTextureIntermediette* tex = parent->FindByName(mat->textureName); + + output += StringHelper::Sprintf(" gsDPPipeSync(),\n"); + output += StringHelper::Sprintf(" gsDPSetPrimColor(%i, %i, %i, %i, %i, %i),\n", mat->clrL, + mat->clrM, mat->clrR, mat->clrG, mat->clrB, mat->clrA); + output += StringHelper::Sprintf(" gsDPPipeSync(),\n"); + output += StringHelper::Sprintf(" gsSPTexture(65535, 65535, 0, 0, G_ON),\n"); + + output += StringHelper::Sprintf( + " gsDPLoadMultiBlock(%s, 0, 0, %s, %s, %i, %i, 0, 0, 0, 5, 5, 0, 0),\n", + mat->textureName.c_str(), tex->tex->GetIMFmtFromType().c_str(), + tex->tex->GetIMSizFromType().c_str(), tex->tex->GetWidth(), tex->tex->GetHeight()); + + for (HLMeshCommand* cmd : commands) + output += " " + cmd->OutputCode(parent) + "\n"; + + return output; +} + +std::string HLMeshIntermediette::OutputOBJ() +{ + std::string output = ""; + + output += StringHelper::Sprintf("o %s\n", name.c_str()); + + for (HLMeshCommand* cmd : commands) + output += cmd->OutputOBJ(parent); + + return output; +} + +void HLMeshIntermediette::OutputAssimp(aiScene* scene, std::vector* verts) +{ + aiMesh* mesh = new aiMesh(); + mesh->mVertices = + new aiVector3D[8192]; // TODO: Replace these hardcoded counts with the actual count + mesh->mNormals = new aiVector3D[8192]; + mesh->mFaces = new aiFace[8192]; + mesh->mPrimitiveTypes = 8; + mesh->mName = name; + + for (HLMeshCommand* cmd : commands) + { + cmd->OutputAssimp(parent, scene, mesh); + } + + parent->meshTranslations.push_back(parent->lastTrans); + // parent->objects.push_back(new HLModelObj(parent->lastTransX, )) + + scene->mMeshes[scene->mNumMeshes++] = mesh; +} + +void HLMeshIntermediette::OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root) +{ + XMLElement* element = doc->NewElement("Mesh"); + + element->SetAttribute("Name", name.c_str()); + + for (HLMeshCommand* cmd : commands) + { + cmd->OutputXML(element); + } + + root->InsertEndChild(element); +} + +HLLimbIntermediette::HLLimbIntermediette() +{ + commands = std::vector(); +} + +void HLLimbIntermediette::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + name = xmlElement->Attribute("Name"); + + for (XMLElement* child = xmlElement->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + std::string name = child->Name(); + + HLLimbCommand* cmd = nullptr; + + if (name == "DrawMesh") + cmd = new HLLimbCommand(); + + if (cmd != nullptr) + { + cmd->InitFromXML(child); + commands.push_back(cmd); + } + } +} + +std::string HLLimbIntermediette::OutputCode() +{ + std::string output = ""; + + output += StringHelper::Sprintf("Gfx %s[] = \n{\n", name.c_str()); + + for (HLLimbCommand* cmd : commands) + output += cmd->OutputCode(parent); + + output += StringHelper::Sprintf(" gsSPEndDisplayList(),\n"); + output += StringHelper::Sprintf("};\n"); + + return output; +} + +void HLLimbIntermediette::OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root) +{ + XMLElement* element = doc->NewElement("Limb"); + + element->SetAttribute("Name", name.c_str()); + + for (HLLimbCommand* cmd : commands) + cmd->OutputXML(element); + + root->InsertEndChild(element); +} + +HLLimbCommand::HLLimbCommand() +{ + meshName = ""; + materialName = ""; +} + +HLLimbCommand::HLLimbCommand(std::string nMeshName, std::string nMaterialName) +{ + meshName = nMeshName; + materialName = nMaterialName; +} + +void HLLimbCommand::InitFromXML(tinyxml2::XMLElement* xmlElement) +{ + meshName = xmlElement->Attribute("Mesh"); + materialName = xmlElement->Attribute("Material"); +} + +void HLLimbCommand::OutputXML(tinyxml2::XMLElement* parent) +{ + XMLElement* elem = parent->GetDocument()->NewElement("DrawMesh"); + + elem->SetAttribute("Mesh", meshName.c_str()); + elem->SetAttribute("Material", materialName.c_str()); + + parent->InsertEndChild(elem); +} + +std::string HLLimbCommand::OutputCode(HLModelIntermediette* parent) +{ + std::string output = ""; + + // Time to generate the display list... + HLMeshIntermediette* mesh = parent->FindByName(meshName); + + output += mesh->OutputCode(materialName); + + return output; +} + +HLTerminator::HLTerminator() +{ +} + +HLTerminator::~HLTerminator() +{ +} + +void HLTerminator::OutputAssimp(aiScene* scene, std::vector* verts) +{ + for (uint32_t i = parent->meshStartIndex; i < scene->mNumMeshes; i++) + { + scene->mMeshes[i]->mNumVertices = verts->size(); + + for (uint32_t j = 0; j < verts->size(); j++) + scene->mMeshes[i]->mVertices[j] = verts[0][j]; + + parent->meshStartIndex++; + } + + verts->clear(); +} + +HLSetTranslation::HLSetTranslation() +{ + transX = 0; + transY = 0; + transZ = 0; +} + +HLSetTranslation::HLSetTranslation(float nTransX, float nTransY, float nTransZ) +{ + transX = nTransX; + transY = nTransY; + transZ = nTransZ; +} + +void HLSetTranslation::OutputAssimp(aiScene* scene, std::vector* verts) +{ + parent->lastTrans = Vec3s(transX, transY, transZ); +} + +HLModelObj::HLModelObj(Vec3s nPos, Vec3s nRot, std::vector nVerts, + std::vector nIndices) +{ + pos = nPos; + rot = nRot; + vertices = nVerts; + indices = nIndices; +} diff --git a/tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.h b/tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.h new file mode 100644 index 0000000000..e591e2c8f0 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLModelIntermediette.h @@ -0,0 +1,312 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "../ZDisplayList.h" +#include "../ZSkeleton.h" +#include "HLFileIntermediette.h" +#include "tinyxml2.h" + +/* + * An intermediette format for models. Goes from FBX<-->Intermediette<-->Display List C Code. + */ + +class HLModelIntermediette; + +class HLIntermediette +{ +public: + std::string name; + HLModelIntermediette* parent; + + HLIntermediette(); + ~HLIntermediette(); + + virtual std::string OutputCode(); + virtual std::string OutputOBJ(); + virtual void OutputAssimp(aiScene* scene, std::vector* verts); + virtual void OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root); + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); +}; + +class HLModelObj +{ +public: + Vec3s pos; + Vec3s rot; + std::vector vertices; + std::vector indices; + + HLModelObj() = default; + HLModelObj(Vec3s nPos, Vec3s nRot, std::vector nVerts, + std::vector nIndices); +}; + +class HLModelIntermediette : public HLFileIntermediette +{ +public: + std::vector blocks; + std::vector meshTranslations; + std::vector objects; + Vec3s lastTrans; + + bool hasSkeleton; + + bool startsWithPipeSync; + bool startsWithClearGeometryMode; + bool lerpBeforeTextureBlock; + + uint32_t startIndex; + uint32_t meshStartIndex; + + HLModelIntermediette(); + ~HLModelIntermediette(); + + static HLModelIntermediette* FromXML(tinyxml2::XMLElement* root); + static void FromZDisplayList(HLModelIntermediette* model, ZDisplayList* zDisplayList); + static void FromZSkeleton(HLModelIntermediette* model, ZSkeleton* zSkeleton); + static void ProcessZSkeletonLimb(HLModelIntermediette* model, ZSkeleton* zSkeleton, + ZLimb* limb); + std::string ToOBJFile(); + std::string ToAssimpFile(); + + std::string OutputCode(); + std::string OutputXML(); + + template + T* FindByName(std::string name); + + template + T* FindByType(); +}; + +class HLTextureIntermediette : public HLIntermediette +{ +public: + ZTexture* tex; + std::string fileName; + + HLTextureIntermediette(); + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(); + virtual void OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root); +}; + +class HLSetTranslation : public HLIntermediette +{ +public: + float transX, transY, transZ; + + HLSetTranslation(); + HLSetTranslation(float nTransX, float nTransY, float nTransZ); + + virtual void OutputAssimp(aiScene* scene, std::vector* verts); +}; + +class HLTerminator : public HLIntermediette +{ +public: + HLTerminator(); + ~HLTerminator(); + + virtual void OutputAssimp(aiScene* scene, std::vector* verts); +}; + +enum class HLMaterialCmt +{ + Wrap, + Mirror, + Clamp +}; + +class HLMaterialIntermediette : public HLIntermediette +{ +public: + std::string textureName; + // int32_t repeatH, repeatV; + uint8_t clrR, clrG, clrB, clrA, clrM, clrL; + // bool clampH, clampV; + // bool mirrorH, mirrorV; + HLMaterialCmt cmtH, cmtV; + + // TODO: Remember to add lerp params here... + + HLMaterialIntermediette(); + + virtual std::string OutputCode(); + virtual void OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* parent); + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); +}; + +class HLMeshCommand +{ +public: + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(HLModelIntermediette* parent); + virtual std::string OutputOBJ(HLModelIntermediette* parent); + virtual void OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh); + + virtual void OutputXML(tinyxml2::XMLElement* parent); +}; + +class HLVerticesIntermediette : public HLIntermediette +{ +public: + std::vector vertices; + + HLVerticesIntermediette(); + + virtual void InitFromXML(tinyxml2::XMLElement* verticesElement); + void InitFromVertices(std::vector dispListVertices); + virtual std::string OutputCode(HLModelIntermediette* parent); + virtual std::string OutputOBJ(); + virtual void OutputAssimp(aiScene* scene, std::vector* verts); + virtual void OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root); +}; + +class HLMeshCmdTriangle1 : public HLMeshCommand +{ +public: + int32_t v0, v1, v2, flag; + + HLMeshCmdTriangle1(); + HLMeshCmdTriangle1(int32_t nV0, int32_t nV1, int32_t nV2, int32_t nFlag); + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(HLModelIntermediette* parent); + virtual void OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh); + virtual void OutputXML(tinyxml2::XMLElement* parent); +}; + +class HLMeshCmdTriangle2 : public HLMeshCommand +{ +public: + int32_t v0, v1, v2, flag0, v10, v11, v12, flag1; + + HLMeshCmdTriangle2(); + HLMeshCmdTriangle2(int32_t nV0, int32_t nV1, int32_t nV2, int32_t nFlag0, int32_t nV10, + int32_t nV11, int32_t nV12, int32_t nFlag1); + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(HLModelIntermediette* parent); + virtual std::string OutputOBJ(HLModelIntermediette* parent); + virtual void OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh); + virtual void OutputXML(tinyxml2::XMLElement* parent); +}; + +class HLMeshCmdLoadVertices : public HLMeshCommand +{ +public: + uint8_t numVerts; + uint8_t startIndex; + + HLMeshCmdLoadVertices(); + HLMeshCmdLoadVertices(uint8_t nNumVerts, uint8_t nStartIndex); + + virtual void OutputXML(tinyxml2::XMLElement* parent); + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputOBJ(HLModelIntermediette* parent); + virtual void OutputAssimp(HLModelIntermediette* parent, aiScene* scene, aiMesh* mesh); + virtual std::string OutputCode(HLModelIntermediette* parent); +}; + +class HLMeshCmdCull : public HLMeshCommand +{ +public: + uint8_t indexStart; + uint8_t indexEnd; + + HLMeshCmdCull(); + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(HLModelIntermediette* parent); +}; + +class HLMeshCmdGeoSettings : public HLMeshCommand +{ +public: + std::string on, off; + + HLMeshCmdGeoSettings(); + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(HLModelIntermediette* parent); +}; + +class HLMeshIntermediette : public HLIntermediette +{ +public: + std::vector commands; + + HLMeshIntermediette(); + + void InitFromXML(tinyxml2::XMLElement* xmlElement); + std::string OutputCode(std::string materialName); + virtual std::string OutputOBJ(); + virtual void OutputAssimp(aiScene* scene, std::vector* verts); + virtual void OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root); +}; + +class HLDisplayListCommand +{ +public: + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(); +}; + +class HLDisplayListCmdDrawMesh : public HLDisplayListCommand +{ +public: + std::string meshName, materialName; + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(); +}; + +class HLDisplayListCmdPipeSync : public HLDisplayListCommand +{ +public: + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual std::string OutputCode(); +}; + +class HLDisplayListIntermediette : public HLIntermediette +{ +public: + std::vector commands; + uint32_t address; + + HLDisplayListIntermediette(); + + virtual std::string OutputCode(); + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); +}; + +class HLLimbCommand +{ +public: + std::string meshName, materialName; + + HLLimbCommand(); + HLLimbCommand(std::string nMeshName, std::string nMaterialName); + + virtual void InitFromXML(tinyxml2::XMLElement* xmlElement); + virtual void OutputXML(tinyxml2::XMLElement* parent); + virtual std::string OutputCode(HLModelIntermediette* parent); +}; + +class HLLimbIntermediette : public HLIntermediette +{ +public: + std::vector commands; + + HLLimbIntermediette(); + + void InitFromXML(tinyxml2::XMLElement* xmlElement); + std::string OutputCode(); + virtual void OutputXML(tinyxml2::XMLDocument* doc, tinyxml2::XMLElement* root); +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/HighLevel/HLTexture.cpp b/tools/ZAPD/ZAPD/HighLevel/HLTexture.cpp new file mode 100644 index 0000000000..b7e3a93e01 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLTexture.cpp @@ -0,0 +1,13 @@ +#include "HLTexture.h" +#include "../StringHelper.h" + +HLTexture* HLTexture::FromPNG(std::string pngFilePath, HLTextureType texType) +{ + // int32_t comp; + HLTexture* tex = new HLTexture(); + tex->type = texType; + // tex->bmpRgba = (uint8_t*)stbi_load((pngFilePath).c_str(), (int32_t*)&tex->width, + // (int32_t*)&tex->height, &comp, STBI_rgb_alpha); + + return tex; +} diff --git a/tools/ZAPD/ZAPD/HighLevel/HLTexture.h b/tools/ZAPD/ZAPD/HighLevel/HLTexture.h new file mode 100644 index 0000000000..53f1cadee6 --- /dev/null +++ b/tools/ZAPD/ZAPD/HighLevel/HLTexture.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include + +// TODO: This was duplicated from ZTexture. It's probably going to be modified to differentiate from +// ZTexture but if not, we're going to need to have the two share an enum. +enum class HLTextureType +{ + RGBA32bpp, + RGBA16bpp, + Palette4bpp, + Palette8bpp, + Grayscale4bpp, + Grayscale8bpp, + GrayscaleAlpha4bpp, + GrayscaleAlpha8bpp, + GrayscaleAlpha16bpp, + Error +}; + +class HLTexture +{ +public: + static HLTexture* FromPNG(std::string pngFilePath, HLTextureType texType); + + HLTextureType type; + uint32_t width, height; + uint8_t* bmpRgba; +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/ImageBackend.cpp b/tools/ZAPD/ZAPD/ImageBackend.cpp new file mode 100644 index 0000000000..0b4bce360a --- /dev/null +++ b/tools/ZAPD/ZAPD/ImageBackend.cpp @@ -0,0 +1,473 @@ +#include "ImageBackend.h" + +#include +#include +#include +#include + +#include "StringHelper.h" + +/* ImageBackend */ + +ImageBackend::~ImageBackend() +{ + FreeImageData(); +} + +void ImageBackend::ReadPng(const char* filename) +{ + FreeImageData(); + + FILE* fp = fopen(filename, "rb"); + if (fp == nullptr) + throw std::runtime_error(StringHelper::Sprintf( + "ImageBackend::ReadPng: Error.\n\t Couldn't open file '%s'.", filename)); + + png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); + if (!png) + throw std::runtime_error("ImageBackend::ReadPng: Error.\n\t Couldn't create png struct."); + + png_infop info = png_create_info_struct(png); + if (!info) + throw std::runtime_error("ImageBackend::ReadPng: Error.\n\t Couldn't create png info."); + + if (setjmp(png_jmpbuf(png))) + throw std::runtime_error("ImageBackend::ReadPng: Error.\n\t setjmp(png_jmpbuf(png))."); + + png_init_io(png, fp); + + png_read_info(png, info); + + width = png_get_image_width(png, info); + height = png_get_image_height(png, info); + colorType = png_get_color_type(png, info); + bitDepth = png_get_bit_depth(png, info); + +#ifdef TEXTURE_DEBUG + printf("Width: %u\n", width); + printf("Height: %u\n", height); + printf("ColorType: "); + switch (colorType) + { + case PNG_COLOR_TYPE_RGBA: + printf("PNG_COLOR_TYPE_RGBA\n"); + break; + + case PNG_COLOR_TYPE_RGB: + printf("PNG_COLOR_TYPE_RGB\n"); + break; + + case PNG_COLOR_TYPE_PALETTE: + printf("PNG_COLOR_TYPE_PALETTE\n"); + break; + + default: + printf("%u\n", colorType); + break; + } + printf("BitDepth: %u\n", bitDepth); + printf("\n"); +#endif + + // Read any color_type into 8bit depth, RGBA format. + // See http://www.libpng.org/pub/png/libpng-manual.txt + + if (bitDepth == 16) + png_set_strip_16(png); + + if (colorType == PNG_COLOR_TYPE_PALETTE) + { + // png_set_palette_to_rgb(png); + isColorIndexed = true; + } + + // PNG_COLOR_TYPE_GRAY_ALPHA is always 8 or 16bit depth. + if (colorType == PNG_COLOR_TYPE_GRAY && bitDepth < 8) + png_set_expand_gray_1_2_4_to_8(png); + + /*if (png_get_valid(png, info, PNG_INFO_tRNS)) + png_set_tRNS_to_alpha(png);*/ + + // These color_type don't have an alpha channel then fill it with 0xff. + /*if(*color_type == PNG_COLOR_TYPE_RGB || + *color_type == PNG_COLOR_TYPE_GRAY || + *color_type == PNG_COLOR_TYPE_PALETTE) + png_set_filler(png, 0xFF, PNG_FILLER_AFTER);*/ + + if (colorType == PNG_COLOR_TYPE_GRAY || colorType == PNG_COLOR_TYPE_GRAY_ALPHA) + png_set_gray_to_rgb(png); + + png_read_update_info(png, info); + + size_t rowBytes = png_get_rowbytes(png, info); + pixelMatrix = (uint8_t**)malloc(sizeof(uint8_t*) * height); + for (size_t y = 0; y < height; y++) + { + pixelMatrix[y] = (uint8_t*)malloc(rowBytes); + } + + png_read_image(png, pixelMatrix); + +#ifdef TEXTURE_DEBUG + printf("rowBytes: %zu\n", rowBytes); + + size_t bytePerPixel = GetBytesPerPixel(); + printf("imgData\n"); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + for (size_t z = 0; z < bytePerPixel; z++) + { + printf("%02X ", pixelMatrix[y][x * bytePerPixel + z]); + } + printf(" "); + } + printf("\n"); + } + printf("\n"); +#endif + + fclose(fp); + + png_destroy_read_struct(&png, &info, nullptr); + + hasImageData = true; +} + +void ImageBackend::ReadPng(const fs::path& filename) +{ + ReadPng(filename.c_str()); +} + +void ImageBackend::WritePng(const char* filename) +{ + assert(hasImageData); + + FILE* fp = fopen(filename, "wb"); + if (!fp) + throw std::runtime_error(StringHelper::Sprintf( + "ImageBackend::WritePng: Error.\n\t Couldn't open file '%s' in write mode.", filename)); + + png_structp png = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr); + if (!png) + throw std::runtime_error("ImageBackend::WritePng: Error.\n\t Couldn't create png struct."); + + png_infop info = png_create_info_struct(png); + if (!info) + throw std::runtime_error("ImageBackend::WritePng: Error.\n\t Couldn't create png info."); + + if (setjmp(png_jmpbuf(png))) + throw std::runtime_error("ImageBackend::WritePng: Error.\n\t setjmp(png_jmpbuf(png))."); + + png_init_io(png, fp); + + png_set_IHDR(png, info, width, height, + bitDepth, // 8, + colorType, // PNG_COLOR_TYPE_RGBA, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + if (isColorIndexed) + { + png_set_PLTE(png, info, static_cast(colorPalette), paletteSize); + +#ifdef TEXTURE_DEBUG + printf("palette\n"); + png_color* aux = (png_color*)colorPalette; + for (size_t y = 0; y < paletteSize; y++) + { + printf("#%02X%02X%02X ", aux[y].red, aux[y].green, aux[y].blue); + if ((y + 1) % 8 == 0) + printf("\n"); + } + printf("\n"); +#endif + + png_set_tRNS(png, info, alphaPalette, paletteSize, nullptr); + } + + png_write_info(png, info); + + // To remove the alpha channel for PNG_COLOR_TYPE_RGB format, + // Use png_set_filler(). + // png_set_filler(png, 0, PNG_FILLER_AFTER); + +#ifdef TEXTURE_DEBUG + size_t bytePerPixel = GetBytesPerPixel(); + printf("imgData\n"); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width * bytePerPixel; x++) + { + printf("%02X ", pixelMatrix[y][x]); + } + printf("\n"); + } + printf("\n"); +#endif + + png_write_image(png, pixelMatrix); + png_write_end(png, nullptr); + + fclose(fp); + + png_destroy_write_struct(&png, &info); +} + +void ImageBackend::WritePng(const fs::path& filename) +{ + WritePng(filename.c_str()); +} + +void ImageBackend::SetTextureData(const std::vector>& texData, + uint32_t nWidth, uint32_t nHeight, uint8_t nColorType, + uint8_t nBitDepth) +{ + FreeImageData(); + + width = nWidth; + height = nHeight; + colorType = nColorType; + bitDepth = nBitDepth; + + size_t bytePerPixel = GetBytesPerPixel(); + + pixelMatrix = static_cast(malloc(sizeof(uint8_t*) * height)); + for (size_t y = 0; y < height; y++) + { + pixelMatrix[y] = static_cast(malloc(sizeof(uint8_t*) * width * bytePerPixel)); + for (size_t x = 0; x < width; x++) + { + pixelMatrix[y][x * bytePerPixel + 0] = texData.at(y).at(x).r; + pixelMatrix[y][x * bytePerPixel + 1] = texData.at(y).at(x).g; + pixelMatrix[y][x * bytePerPixel + 2] = texData.at(y).at(x).b; + + if (colorType == PNG_COLOR_TYPE_RGBA) + pixelMatrix[y][x * bytePerPixel + 3] = texData.at(y).at(x).a; + } + } + hasImageData = true; +} + +void ImageBackend::InitEmptyRGBImage(uint32_t nWidth, uint32_t nHeight, bool alpha) +{ + FreeImageData(); + + width = nWidth; + height = nHeight; + colorType = PNG_COLOR_TYPE_RGB; + if (alpha) + colorType = PNG_COLOR_TYPE_RGBA; + bitDepth = 8; // nBitDepth; + + size_t bytePerPixel = GetBytesPerPixel(); + + pixelMatrix = static_cast(malloc(sizeof(uint8_t*) * height)); + for (size_t y = 0; y < height; y++) + { + pixelMatrix[y] = static_cast(calloc(width * bytePerPixel, sizeof(uint8_t*))); + } + + hasImageData = true; +} + +void ImageBackend::InitEmptyPaletteImage(uint32_t nWidth, uint32_t nHeight) +{ + FreeImageData(); + + width = nWidth; + height = nHeight; + colorType = PNG_COLOR_TYPE_PALETTE; + bitDepth = 8; + + size_t bytePerPixel = GetBytesPerPixel(); + + pixelMatrix = (uint8_t**)malloc(sizeof(uint8_t*) * height); + for (size_t y = 0; y < height; y++) + { + pixelMatrix[y] = static_cast(calloc(width * bytePerPixel, sizeof(uint8_t*))); + } + colorPalette = calloc(paletteSize, sizeof(png_color)); + alphaPalette = static_cast(calloc(paletteSize, sizeof(uint8_t))); + + hasImageData = true; + isColorIndexed = true; +} + +RGBAPixel ImageBackend::GetPixel(size_t y, size_t x) const +{ + assert(y < height); + assert(x < width); + assert(!isColorIndexed); + + RGBAPixel pixel; + size_t bytePerPixel = GetBytesPerPixel(); + pixel.r = pixelMatrix[y][x * bytePerPixel + 0]; + pixel.g = pixelMatrix[y][x * bytePerPixel + 1]; + pixel.b = pixelMatrix[y][x * bytePerPixel + 2]; + if (colorType == PNG_COLOR_TYPE_RGBA) + pixel.a = pixelMatrix[y][x * bytePerPixel + 3]; + return pixel; +} + +uint8_t ImageBackend::GetIndexedPixel(size_t y, size_t x) const +{ + assert(y < height); + assert(x < width); + assert(isColorIndexed); + + return pixelMatrix[y][x]; +} + +void ImageBackend::SetRGBPixel(size_t y, size_t x, uint8_t nR, uint8_t nG, uint8_t nB, uint8_t nA) +{ + assert(hasImageData); + assert(y < height); + assert(x < width); + + size_t bytePerPixel = GetBytesPerPixel(); + pixelMatrix[y][x * bytePerPixel + 0] = nR; + pixelMatrix[y][x * bytePerPixel + 1] = nG; + pixelMatrix[y][x * bytePerPixel + 2] = nB; + if (colorType == PNG_COLOR_TYPE_RGBA) + pixelMatrix[y][x * bytePerPixel + 3] = nA; +} + +void ImageBackend::SetGrayscalePixel(size_t y, size_t x, uint8_t grayscale, uint8_t alpha) +{ + assert(hasImageData); + assert(y < height); + assert(x < width); + + size_t bytePerPixel = GetBytesPerPixel(); + pixelMatrix[y][x * bytePerPixel + 0] = grayscale; + pixelMatrix[y][x * bytePerPixel + 1] = grayscale; + pixelMatrix[y][x * bytePerPixel + 2] = grayscale; + if (colorType == PNG_COLOR_TYPE_RGBA) + pixelMatrix[y][x * bytePerPixel + 3] = alpha; +} + +void ImageBackend::SetIndexedPixel(size_t y, size_t x, uint8_t index, uint8_t grayscale) +{ + assert(hasImageData); + assert(y < height); + assert(x < width); + + size_t bytePerPixel = GetBytesPerPixel(); + pixelMatrix[y][x * bytePerPixel + 0] = index; + + assert(index < paletteSize); + png_color* pal = static_cast(colorPalette); + pal[index].red = grayscale; + pal[index].green = grayscale; + pal[index].blue = grayscale; + alphaPalette[index] = 255; +} + +void ImageBackend::SetPaletteIndex(size_t index, uint8_t nR, uint8_t nG, uint8_t nB, uint8_t nA) +{ + assert(isColorIndexed); + assert(index < paletteSize); + + png_color* pal = static_cast(colorPalette); + pal[index].red = nR; + pal[index].green = nG; + pal[index].blue = nB; + alphaPalette[index] = nA; +} + +void ImageBackend::SetPalette(const ImageBackend& pal) +{ + assert(isColorIndexed); + size_t bytePerPixel = pal.GetBytesPerPixel(); + + for (size_t y = 0; y < pal.height; y++) + { + for (size_t x = 0; x < pal.width; x++) + { + uint8_t r = pal.pixelMatrix[y][x * bytePerPixel + 0]; + uint8_t g = pal.pixelMatrix[y][x * bytePerPixel + 1]; + uint8_t b = pal.pixelMatrix[y][x * bytePerPixel + 2]; + uint8_t a = pal.pixelMatrix[y][x * bytePerPixel + 3]; + SetPaletteIndex(y * pal.width + x, r, g, b, a); + } + } +} + +uint32_t ImageBackend::GetWidth() const +{ + return width; +} + +uint32_t ImageBackend::GetHeight() const +{ + return height; +} + +uint8_t ImageBackend::GetColorType() const +{ + return colorType; +} + +uint8_t ImageBackend::GetBitDepth() const +{ + return bitDepth; +} + +double ImageBackend::GetBytesPerPixel() const +{ + switch (colorType) + { + case PNG_COLOR_TYPE_RGBA: + return 4 * bitDepth / 8; + + case PNG_COLOR_TYPE_RGB: + return 3 * bitDepth / 8; + + case PNG_COLOR_TYPE_PALETTE: + return 1 * bitDepth / 8; + + default: + throw std::invalid_argument("ImageBackend::GetBytesPerPixel():\n\t Invalid color type."); + } +} + +void ImageBackend::FreeImageData() +{ + if (hasImageData) + { + for (size_t y = 0; y < height; y++) + free(pixelMatrix[y]); + free(pixelMatrix); + pixelMatrix = nullptr; + } + + if (isColorIndexed) + { + free(colorPalette); + free(alphaPalette); + colorPalette = nullptr; + alphaPalette = nullptr; + isColorIndexed = false; + } + + hasImageData = false; +} + +/* RGBAPixel */ + +void RGBAPixel::SetRGBA(uint8_t nR, uint8_t nG, uint8_t nB, uint8_t nA) +{ + r = nR; + g = nG; + b = nB; + a = nA; +} + +void RGBAPixel::SetGrayscale(uint8_t grayscale, uint8_t alpha) +{ + r = grayscale; + g = grayscale; + b = grayscale; + a = alpha; +} diff --git a/tools/ZAPD/ZAPD/ImageBackend.h b/tools/ZAPD/ZAPD/ImageBackend.h new file mode 100644 index 0000000000..25ab83216f --- /dev/null +++ b/tools/ZAPD/ZAPD/ImageBackend.h @@ -0,0 +1,71 @@ +#pragma once + +#include +#include + +#include "Directory.h" + +class RGBAPixel +{ +public: + RGBAPixel() = default; + + void SetRGBA(uint8_t nR, uint8_t nG, uint8_t nB, uint8_t nA); + void SetGrayscale(uint8_t grayscale, uint8_t alpha = 0); + + uint8_t r = 0; + uint8_t g = 0; + uint8_t b = 0; + uint8_t a = 0; +}; + +class ImageBackend +{ +public: + ImageBackend() = default; + ~ImageBackend(); + + void ReadPng(const char* filename); + void ReadPng(const fs::path& filename); + void WritePng(const char* filename); + void WritePng(const fs::path& filename); + + void SetTextureData(const std::vector>& texData, uint32_t nWidth, + uint32_t nHeight, uint8_t nColorType, uint8_t nBitDepth); + void InitEmptyRGBImage(uint32_t nWidth, uint32_t nHeight, bool alpha); + void InitEmptyPaletteImage(uint32_t nWidth, uint32_t nHeight); + + RGBAPixel GetPixel(size_t y, size_t x) const; + uint8_t GetIndexedPixel(size_t y, size_t x) const; + + void SetRGBPixel(size_t y, size_t x, uint8_t nR, uint8_t nG, uint8_t nB, uint8_t nA = 0); + void SetGrayscalePixel(size_t y, size_t x, uint8_t grayscale, uint8_t alpha = 0); + + void SetIndexedPixel(size_t y, size_t x, uint8_t index, uint8_t grayscale); + void SetPaletteIndex(size_t index, uint8_t nR, uint8_t nG, uint8_t nB, uint8_t nA); + void SetPalette(const ImageBackend& pal); + + uint32_t GetWidth() const; + uint32_t GetHeight() const; + uint8_t GetColorType() const; + uint8_t GetBitDepth() const; + +protected: + uint8_t** pixelMatrix = nullptr; // height * [width * bytePerPixel] + + void* colorPalette = nullptr; + uint8_t* alphaPalette = nullptr; + size_t paletteSize = 16 * 16; + + uint32_t width = 0; + uint32_t height = 0; + uint8_t colorType = 0; + uint8_t bitDepth = 0; + + bool hasImageData = false; + bool isColorIndexed = false; + + double GetBytesPerPixel() const; + + void FreeImageData(); +}; diff --git a/tools/ZAPD/ZAPD/Main.cpp b/tools/ZAPD/ZAPD/Main.cpp new file mode 100644 index 0000000000..4728c7ae5d --- /dev/null +++ b/tools/ZAPD/ZAPD/Main.cpp @@ -0,0 +1,417 @@ +#include "BuildInfo.h" +#include "Directory.h" +#include "File.h" +#include "Globals.h" +#include "HighLevel/HLAnimationIntermediette.h" +#include "HighLevel/HLModelIntermediette.h" +#include "Overlays/ZOverlay.h" +#include "Path.h" +#include "ZAnimation.h" +#include "ZBackground.h" +#include "ZBlob.h" +#include "ZFile.h" +#include "ZTexture.h" + +#if !defined(_MSC_VER) && !defined(__CYGWIN__) +#include +#include +#include // for __cxa_demangle +#include // for dladdr +#include +#include +#include +#endif + +#include +#include "tinyxml2.h" + +using namespace tinyxml2; + +bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath, + ZFileMode fileMode); + +void BuildAssetTexture(const fs::path& pngFilePath, TextureType texType, const fs::path& outPath); +void BuildAssetBackground(const fs::path& imageFilePath, const fs::path& outPath); +void BuildAssetBlob(const fs::path& blobFilePath, const fs::path& outPath); +void BuildAssetModelIntermediette(const fs::path& outPath); +void BuildAssetAnimationIntermediette(const fs::path& animPath, const fs::path& outPath); + +#if !defined(_MSC_VER) && !defined(__CYGWIN__) +#define ARRAY_COUNT(arr) (sizeof(arr) / sizeof(arr[0])) +void ErrorHandler(int sig) +{ + void* array[4096]; + const size_t nMaxFrames = sizeof(array) / sizeof(array[0]); + size_t size = backtrace(array, nMaxFrames); + char** symbols = backtrace_symbols(array, nMaxFrames); + + fprintf(stderr, "\nZAPD crashed. (Signal: %i)\n", sig); + + // Feel free to add more crash messages. + const char* crashEasterEgg[] = { + "\tYou've met with a terrible fate, haven't you?", + "\tSEA BEARS FOAM. SLEEP BEARS DREAMS. \n\tBOTH END IN THE SAME WAY: CRASSSH!", + }; + + srand(time(nullptr)); + auto easterIndex = rand() % ARRAY_COUNT(crashEasterEgg); + + fprintf(stderr, "\n%s\n\n", crashEasterEgg[easterIndex]); + + fprintf(stderr, "Traceback:\n"); + for (size_t i = 1; i < size; i++) + { + Dl_info info; + uint32_t gotAddress = dladdr(array[i], &info); + std::string functionName(symbols[i]); + + if (gotAddress != 0 && info.dli_sname != nullptr) + { + int32_t status; + char* demangled = abi::__cxa_demangle(info.dli_sname, nullptr, nullptr, &status); + const char* nameFound = info.dli_sname; + + if (status == 0) + { + nameFound = demangled; + } + + functionName = StringHelper::Sprintf("%s (+0x%X)", nameFound, + (char*)array[i] - (char*)info.dli_saddr); + free(demangled); + } + + fprintf(stderr, "%-3zd %s\n", i, functionName.c_str()); + } + + fprintf(stderr, "\n"); + + free(symbols); + exit(1); +} +#endif + +int main(int argc, char* argv[]) +{ + // Syntax: ZAPD.out [mode (btex/bovl/e)] (Arbritrary Number of Arguments) + + if (argc < 2) + { + printf("ZAPD.out (%s) [mode (btex/bovl/bsf/bblb/bmdlintr/bamnintr/e)] ...\n", gBuildHash); + return 1; + } + + for (int i = 1; i < argc; i++) + { + if (!strcmp(argv[i], "--version")) + { + printf("ZAPD.out %s\n", gBuildHash); + return 0; + } + else if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) + { + printf("Congratulations!\n"); + printf("You just found the (unimplemented and undocumented) ZAPD's help message.\n"); + printf("Feel free to implement it if you want :D\n"); + return 0; + } + } + + Globals* g = new Globals(); + + // Parse File Mode + std::string buildMode = argv[1]; + ZFileMode fileMode = ZFileMode::Invalid; + + if (buildMode == "btex") + fileMode = ZFileMode::BuildTexture; + else if (buildMode == "bren") + fileMode = ZFileMode::BuildBackground; + else if (buildMode == "bovl") + fileMode = ZFileMode::BuildOverlay; + else if (buildMode == "bsf") + fileMode = ZFileMode::BuildSourceFile; + else if (buildMode == "bblb") + fileMode = ZFileMode::BuildBlob; + else if (buildMode == "bmdlintr") + fileMode = ZFileMode::BuildModelIntermediette; + else if (buildMode == "bamnintr") + fileMode = ZFileMode::BuildAnimationIntermediette; + else if (buildMode == "e") + fileMode = ZFileMode::Extract; + + if (fileMode == ZFileMode::Invalid) + { + printf("Error: Invalid file mode '%s'\n", buildMode.c_str()); + return 1; + } + + // Parse other "commands" + for (int32_t i = 2; i < argc; i++) + { + std::string arg = argv[i]; + + if (arg == "-o" || arg == "--outputpath") // Set output path + { + Globals::Instance->outputPath = argv[i + 1]; + + if (Globals::Instance->sourceOutputPath == "") + Globals::Instance->sourceOutputPath = Globals::Instance->outputPath; + + i++; + } + else if (arg == "-i" || arg == "--inputpath") // Set input path + { + Globals::Instance->inputPath = argv[i + 1]; + i++; + } + else if (arg == "-b" || arg == "--baserompath") // Set baserom path + { + Globals::Instance->baseRomPath = argv[i + 1]; + i++; + } + else if (arg == "-osf") // Set source output path + { + Globals::Instance->sourceOutputPath = argv[i + 1]; + i++; + } + else if (arg == "-gsf") // Generate source file during extraction + { + Globals::Instance->genSourceFile = std::string(argv[i + 1]) == "1"; + i++; + } + else if (arg == "-tm") // Test Mode (enables certain experimental features) + { + Globals::Instance->testMode = std::string(argv[i + 1]) == "1"; + i++; + } + else if (arg == "-crc" || + arg == "--output-crc") // Outputs a CRC file for each extracted texture. + { + Globals::Instance->outputCrc = true; + } + else if (arg == "-ulzdl") // Use Legacy ZDisplay List + { + Globals::Instance->useLegacyZDList = std::string(argv[i + 1]) == "1"; + i++; + } + else if (arg == "-profile") // Enable profiling + { + Globals::Instance->profile = std::string(argv[i + 1]) == "1"; + i++; + } + else if (arg == + "-uer") // Split resources into their individual components (enabled by default) + // TODO: We may wish to make this a part of the config file... + { + Globals::Instance->useExternalResources = std::string(argv[i + 1]) == "1"; + i++; + } + else if (arg == "-tt") // Set texture type + { + Globals::Instance->texType = ZTexture::GetTextureTypeFromString(argv[i + 1]); + i++; + } + else if (arg == "-cfg") // Set cfg path (for overlays) + // TODO: Change the name of this to something else so it doesn't + // get confused with XML config files. + { + Globals::Instance->cfgPath = argv[i + 1]; + i++; + } + else if (arg == "-rconf") // Read Config File + { + Globals::Instance->ReadConfigFile(argv[i + 1]); + i++; + } + else if (arg == "-eh") // Enable Error Handler + { +#if !defined(_MSC_VER) && !defined(__CYGWIN__) + signal(SIGSEGV, ErrorHandler); + signal(SIGABRT, ErrorHandler); +#else + fprintf(stderr, + "Warning: Tried to set error handler, but this build lacks support for one.\n"); +#endif + } + else if (arg == "-v") // Verbose + { + Globals::Instance->verbosity = static_cast(strtol(argv[++i], NULL, 16)); + } + else if (arg == "-wu" || arg == "--warn-unaccounted") // Warn unaccounted + { + Globals::Instance->warnUnaccounted = true; + } + } + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) + printf("ZAPD: Zelda Asset Processor For Decomp: %s\n", gBuildHash); + + if (fileMode == ZFileMode::Extract || fileMode == ZFileMode::BuildSourceFile) + { + bool parseSuccessful = Parse(Globals::Instance->inputPath, Globals::Instance->baseRomPath, + Globals::Instance->outputPath, fileMode); + + if (!parseSuccessful) + return 1; + } + else if (fileMode == ZFileMode::BuildTexture) + { + TextureType texType = Globals::Instance->texType; + BuildAssetTexture(Globals::Instance->inputPath, texType, Globals::Instance->outputPath); + } + else if (fileMode == ZFileMode::BuildBackground) + { + BuildAssetBackground(Globals::Instance->inputPath, Globals::Instance->outputPath); + } + else if (fileMode == ZFileMode::BuildBlob) + { + BuildAssetBlob(Globals::Instance->inputPath, Globals::Instance->outputPath); + } + else if (fileMode == ZFileMode::BuildModelIntermediette) + { + BuildAssetModelIntermediette(Globals::Instance->outputPath); + } + else if (fileMode == ZFileMode::BuildAnimationIntermediette) + { + BuildAssetAnimationIntermediette(Globals::Instance->inputPath, + Globals::Instance->outputPath); + } + else if (fileMode == ZFileMode::BuildOverlay) + { + ZOverlay* overlay = + ZOverlay::FromBuild(Path::GetDirectoryName(Globals::Instance->inputPath), + Path::GetDirectoryName(Globals::Instance->cfgPath)); + + if (overlay) + File::WriteAllText(Globals::Instance->outputPath.string(), + overlay->GetSourceOutputCode("")); + } + + delete g; + return 0; +} + +bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath, + ZFileMode fileMode) +{ + XMLDocument doc; + XMLError eResult = doc.LoadFile(xmlFilePath.string().c_str()); + + if (eResult != tinyxml2::XML_SUCCESS) + { + fprintf(stderr, "Invalid xml file: '%s'\n", xmlFilePath.c_str()); + return false; + } + + XMLNode* root = doc.FirstChild(); + + if (root == nullptr) + { + fprintf(stderr, "Missing Root tag in xml file: '%s'\n", xmlFilePath.c_str()); + return false; + } + + for (XMLElement* child = root->FirstChildElement(); child != NULL; + child = child->NextSiblingElement()) + { + if (std::string(child->Name()) == "File") + { + ZFile* file = new ZFile(fileMode, child, basePath, outPath, "", xmlFilePath, false); + Globals::Instance->files.push_back(file); + } + else + { + throw std::runtime_error( + StringHelper::Sprintf("Parse: Fatal error in '%s'.\n\t Found a resource outside of " + "a File element: '%s'\n", + xmlFilePath.c_str(), child->Name())); + } + } + + for (ZFile* file : Globals::Instance->files) + { + if (fileMode == ZFileMode::BuildSourceFile) + file->BuildSourceFile(outPath); + else + file->ExtractResources(outPath); + } + + // All done, free files + for (ZFile* file : Globals::Instance->files) + delete file; + + Globals::Instance->files.clear(); + + return true; +} + +void BuildAssetTexture(const fs::path& pngFilePath, TextureType texType, const fs::path& outPath) +{ + std::string name = outPath.stem().string(); + + ZTexture tex(nullptr); + tex.FromPNG(pngFilePath, texType); + std::string cfgPath = StringHelper::Split(pngFilePath.string(), ".")[0] + ".cfg"; + + if (File::Exists(cfgPath)) + name = File::ReadAllText(cfgPath); + + std::string src = tex.GetBodySourceCode(); + + File::WriteAllText(outPath.string(), src); +} + +void BuildAssetBackground(const fs::path& imageFilePath, const fs::path& outPath) +{ + ZBackground background(nullptr); + background.ParseBinaryFile(imageFilePath.string(), false); + + File::WriteAllText(outPath.string(), background.GetBodySourceCode()); +} + +void BuildAssetBlob(const fs::path& blobFilePath, const fs::path& outPath) +{ + ZBlob* blob = ZBlob::FromFile(blobFilePath.string()); + std::string name = outPath.stem().string(); // filename without extension + + std::string src = blob->GetSourceOutputCode(name); + + File::WriteAllText(outPath.string(), src); + + delete blob; +} + +void BuildAssetModelIntermediette(const fs::path& outPath) +{ + XMLDocument doc; + + HLModelIntermediette* mdl = HLModelIntermediette::FromXML(doc.RootElement()); + std::string output = mdl->OutputCode(); + + File::WriteAllText(outPath.string(), output); + + delete mdl; +} + +void BuildAssetAnimationIntermediette(const fs::path& animPath, const fs::path& outPath) +{ + std::vector split = StringHelper::Split(outPath.string(), "/"); + ZFile* file = new ZFile("", split[split.size() - 2]); + HLAnimationIntermediette* anim = HLAnimationIntermediette::FromXML(animPath.string()); + ZAnimation* zAnim = anim->ToZAnimation(); + zAnim->SetName(Path::GetFileNameWithoutExtension(split[split.size() - 1])); + zAnim->parent = file; + + zAnim->GetSourceOutputCode(split[split.size() - 2]); + std::string output = ""; + + output += file->declarations[2]->text + "\n"; + output += file->declarations[1]->text + "\n"; + output += file->declarations[0]->text + "\n"; + + File::WriteAllText(outPath.string(), output); + + delete zAnim; + delete file; +} diff --git a/tools/ZAPD/ZAPD/OutputFormatter.cpp b/tools/ZAPD/ZAPD/OutputFormatter.cpp new file mode 100644 index 0000000000..65b45f3c3e --- /dev/null +++ b/tools/ZAPD/ZAPD/OutputFormatter.cpp @@ -0,0 +1,116 @@ +#include "OutputFormatter.h" + +void OutputFormatter::Flush() +{ + if (col > lineLimit) + { + str.append(1, '\n'); + str.append(currentIndent, ' '); + + uint32_t newCol = currentIndent + (wordP - word); + + for (uint32_t i = 0; i < wordNests; i++) + nestIndent[nest - i] -= col - newCol; + + col = newCol; + } + else + { + str.append(space, spaceP - space); + } + spaceP = space; + + str.append(word, wordP - word); + wordP = word; + wordNests = 0; +} + +int OutputFormatter::Write(const char* buf, int count) +{ + for (int i = 0; i < count; i++) + { + char c = buf[i]; + + if (c == ' ' || c == '\t' || c == '\n') + { + if (wordP - word != 0) + { + Flush(); + } + + if (c == '\n') + { + col = 0; + *spaceP++ = c; + } + else if (c == '\t') + { + int n = tabSize - (col % tabSize); + col += n; + for (int j = 0; j < n; j++) + *spaceP++ = ' '; + } + else + { + col++; + *spaceP++ = c; + } + + currentIndent = nestIndent[nest]; + } + else + { + col++; + + if (c == '(') + { + nest++; + nestIndent[nest] = col; + wordNests++; + } + else if (c == ')') + { + if (nest > 0) + nest--; + if (wordNests > 0) + wordNests--; + } + + *wordP++ = c; + } + } + + return count; +} + +int OutputFormatter::Write(const std::string& buf) +{ + return Write(buf.data(), buf.size()); +} + +OutputFormatter* OutputFormatter::Instance; + +int OutputFormatter::WriteStatic(const char* buf, int count) +{ + return Instance->Write(buf, count); +} + +int (*OutputFormatter::StaticWriter())(const char* buf, int count) +{ + Instance = this; + return &WriteStatic; +} + +OutputFormatter::OutputFormatter(uint32_t tabSize, uint32_t defaultIndent, uint32_t lineLimit) + : tabSize{tabSize}, defaultIndent{defaultIndent}, lineLimit{lineLimit}, col{0}, nest{0}, + nestIndent{defaultIndent}, currentIndent{defaultIndent}, + wordNests(0), wordP{word}, spaceP{space} +{ +} + +std::string OutputFormatter::GetOutput() +{ + Flush(); + + return std::move(str); +} diff --git a/tools/ZAPD/ZAPD/OutputFormatter.h b/tools/ZAPD/ZAPD/OutputFormatter.h new file mode 100644 index 0000000000..b887b42588 --- /dev/null +++ b/tools/ZAPD/ZAPD/OutputFormatter.h @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include + +class OutputFormatter +{ +private: + const uint32_t tabSize; + const uint32_t defaultIndent; + const uint32_t lineLimit; + + uint32_t col; + uint32_t nest; + uint32_t nestIndent[8]; + uint32_t currentIndent; + uint32_t wordNests; + + char word[128]; + char space[128]; + char* wordP; + char* spaceP; + + std::string str; + + void Flush(); + + static OutputFormatter* Instance; + static int WriteStatic(const char* buf, int count); + +public: + OutputFormatter(uint32_t tabSize = 4, uint32_t defaultIndent = 4, uint32_t lineLimit = 120); + + int (*StaticWriter())(const char* buf, int count); // Must be `int` due to libgfxd + + int Write(const char* buf, int count); + int Write(const std::string& buf); + + std::string GetOutput(); +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/Overlays/ZOverlay.cpp b/tools/ZAPD/ZAPD/Overlays/ZOverlay.cpp new file mode 100644 index 0000000000..a30d89ff5c --- /dev/null +++ b/tools/ZAPD/ZAPD/Overlays/ZOverlay.cpp @@ -0,0 +1,236 @@ +#include "ZOverlay.h" +#include "../Directory.h" +#include "../File.h" +#include "../Path.h" +#include "../StringHelper.h" + +using namespace ELFIO; + +ZOverlay::ZOverlay() +{ + name = ""; + entries = std::vector(); +} + +ZOverlay::ZOverlay(std::string nName) : ZOverlay() +{ + name = nName; +} + +ZOverlay::~ZOverlay() +{ + for (auto entry : entries) + if (entry) + delete entry; + entries.clear(); +} + +ZOverlay* ZOverlay::FromBuild(std::string buildPath, std::string cfgFolderPath) +{ + std::string cfgText = File::ReadAllText(cfgFolderPath + "/overlay.cfg"); + std::vector cfgLines = StringHelper::Split(cfgText, "\n"); + + ZOverlay* ovl = new ZOverlay(StringHelper::Strip(cfgLines[0], "\r")); + + std::vector relSections = {".rel.text", ".rel.data", ".rel.rodata"}; + std::vector sections = {".text", ".data", ".rodata"}; + + int32_t sectionOffs[5] = {0}; + std::vector textRelocs; + std::vector dataRelocs; + std::vector rodataRelocs; + + // get the elf files + std::vector readers; + for (size_t i = 1; i < cfgLines.size(); i++) + { + std::string elfPath = + buildPath + "/" + cfgLines[i].substr(0, cfgLines[i].size() - 2) + ".o"; + elfio* reader = new elfio(); + + if (!reader->load(elfPath)) + { + // not all files were compiled + for (auto r : readers) + delete r; + readers.clear(); + + delete ovl; + return nullptr; + } + + readers.push_back(reader); + } + + for (auto curReader : readers) + { + Elf_Half sec_num = curReader->sections.size(); + for (int32_t i = 0; i < sec_num; i++) + { + section* pSec = curReader->sections[i]; + + if (pSec->get_type() == SHT_REL && std::find(relSections.begin(), relSections.end(), + pSec->get_name()) != relSections.end()) + { + SectionType sectionType = GetSectionTypeFromStr(pSec->get_name()); + + if (sectionType == SectionType::ERROR) + fprintf(stderr, "WARNING: One of the section types returned ERROR\n"); + + relocation_section_accessor relocs(*curReader, pSec); + for (Elf_Xword j = 0; j < relocs.get_entries_num(); j++) + { + Elf64_Addr offset = 0; + Elf_Word symbol = 0; + Elf_Word type = 0; + { + Elf_Sxword addend = 0; + relocs.get_entry(j, offset, symbol, type, addend); + } + + std::string curSymName; + Elf_Half curSymShndx = SHN_UNDEF; + { + symbol_section_accessor symbols( + *curReader, curReader->sections[(Elf_Half)pSec->get_link()]); + Elf64_Addr value; + Elf_Xword size; + unsigned char bind; + unsigned char type; + unsigned char other; + symbols.get_symbol(symbol, curSymName, value, size, bind, type, curSymShndx, + other); + } + + // check symbols outside the elf but within the overlay + if (curSymShndx == SHN_UNDEF) + { + for (auto reader : readers) + { + if (curSymShndx != SHN_UNDEF) + break; + + if (reader == curReader) + continue; + + auto sectionData = reader->sections[(Elf_Half)pSec->get_link()]; + + if (sectionData == nullptr) + continue; + + symbol_section_accessor symbols(*reader, sectionData); + + for (Elf_Xword symIdx = 0; symIdx < symbols.get_symbols_num(); symIdx++) + { + Elf_Half shndx = SHN_UNDEF; + Elf64_Addr value; + std::string name; + Elf_Xword size; + unsigned char bind; + unsigned char type; + unsigned char other; + + symbols.get_symbol(symIdx, name, value, size, bind, type, shndx, + other); + + if (name == curSymName) + { + curSymShndx = shndx; + break; + } + } + } + } + + if (curSymShndx != SHN_UNDEF) + { + RelocationType typeConverted = (RelocationType)type; + offset += sectionOffs[sectionType]; + + RelocationEntry* reloc = + new RelocationEntry(sectionType, typeConverted, offset); + + // this is to keep the correct reloc entry order + if (sectionType == SectionType::Text) + textRelocs.push_back(reloc); + if (sectionType == SectionType::Data) + dataRelocs.push_back(reloc); + if (sectionType == SectionType::RoData) + rodataRelocs.push_back(reloc); + } + } + } + } + + // increase section offsets + for (int32_t i = 0; i < sec_num; i++) + { + section* pSec = curReader->sections[i]; + if (pSec->get_type() == SHT_PROGBITS && + std::find(sections.begin(), sections.end(), pSec->get_name()) != sections.end()) + { + SectionType sectionType = GetSectionTypeFromStr(pSec->get_name()); + sectionOffs[sectionType] += pSec->get_size(); + } + } + } + + for (auto reloc : textRelocs) + ovl->entries.push_back(reloc); + for (auto reloc : dataRelocs) + ovl->entries.push_back(reloc); + for (auto reloc : rodataRelocs) + ovl->entries.push_back(reloc); + + for (auto r : readers) + delete r; + readers.clear(); + + return ovl; +} + +std::string ZOverlay::GetSourceOutputCode(const std::string& prefix) +{ + std::string output = ""; + + output += ".section .ovl\n"; + + output += StringHelper::Sprintf(".word _%sSegmentTextSize\n", name.c_str()); + output += StringHelper::Sprintf(".word _%sSegmentDataSize\n", name.c_str()); + output += StringHelper::Sprintf(".word _%sSegmentRoDataSize\n", name.c_str()); + output += StringHelper::Sprintf(".word _%sSegmentBssSize\n", name.c_str()); + + output += StringHelper::Sprintf(".word %i\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + RelocationEntry* reloc = entries[i]; + output += StringHelper::Sprintf(".word 0x%08X\n", reloc->CalcRelocationWord()); + } + + size_t offset = (entries.size() * 4) + 20; + + while (offset % 16 != 12) + { + output += ".word 0\n"; + offset += 4; + } + + output += StringHelper::Sprintf(".word 0x%08X\n", offset + 4); + return output; +} + +SectionType ZOverlay::GetSectionTypeFromStr(std::string sectionName) +{ + if (sectionName == ".rel.text" || sectionName == ".text") + return SectionType::Text; + else if (sectionName == ".rel.data" || sectionName == ".data") + return SectionType::Data; + else if (sectionName == ".rel.rodata" || sectionName == ".rodata" || + sectionName == ".rodata.str1.4" || sectionName == ".rodata.cst4") + return SectionType::RoData; + else if (sectionName == ".rel.bss" || sectionName == ".bss") + return SectionType::Bss; + + return SectionType::ERROR; +} diff --git a/tools/ZAPD/ZAPD/Overlays/ZOverlay.h b/tools/ZAPD/ZAPD/Overlays/ZOverlay.h new file mode 100644 index 0000000000..08e573de14 --- /dev/null +++ b/tools/ZAPD/ZAPD/Overlays/ZOverlay.h @@ -0,0 +1,67 @@ +#pragma once + +#include +#include "../ZResource.h" +#include "tinyxml2.h" + +enum SectionType +{ + Text = 1, + Data = 2, + RoData = 3, + Bss = 4, + ERROR = 255 +}; + +enum RelocationType +{ + R_MIPS_32 = 2, + R_MIPS_26 = 4, + R_MIPS_HI16 = 5, + R_MIPS_LO16 = 6, +}; + +class RelocationEntry +{ +public: + SectionType sectionType; + RelocationType relocationType; + int32_t offset; + + RelocationEntry(SectionType nSecType, RelocationType nRelType, int32_t nOffset) + { + sectionType = nSecType; + relocationType = nRelType; + offset = nOffset; + } + + uint32_t CalcRelocationWord() + { + uint32_t relocationWord = 0; + + relocationWord |= sectionType << 30; + relocationWord |= relocationType << 24; + relocationWord |= offset; + + return relocationWord; + } +}; + +class ZOverlay +{ +public: + std::string name; + + ZOverlay(std::string nName); + ~ZOverlay(); + static ZOverlay* FromBuild(std::string buildPath, std::string cfgFolderPath); + std::string GetSourceOutputCode(const std::string& prefix); + +private: + std::vector entries; + + ZOverlay(); + + static SectionType GetSectionTypeFromStr(std::string sectionName); + // static std::string GetOverlayNameFromElf(ELFIO::elfio& reader); +}; diff --git a/tools/ZAPD/ZAPD/Path.h b/tools/ZAPD/ZAPD/Path.h new file mode 100644 index 0000000000..68cfaea4bc --- /dev/null +++ b/tools/ZAPD/ZAPD/Path.h @@ -0,0 +1,53 @@ +#pragma once + +#include +#include +#include "StringHelper.h" + +#if __has_include() +#include +namespace fs = std::filesystem; +#else +#include +namespace fs = std::experimental::filesystem; +#endif + +class Path +{ +public: + static std::string GetFileName(const std::string& input) + { + std::vector split = StringHelper::Split(input, "/"); + return split[split.size() - 1]; + }; + + static std::string GetFileNameWithoutExtension(const std::string& input) + { + std::vector split = StringHelper::Split(input, "/"); + return split[split.size() - 1].substr(0, split[split.size() - 1].find_last_of(".")); + }; + + static std::string GetFileNameExtension(const std::string& input) + { + return input.substr(input.find_last_of("."), input.length()); + }; + + static std::string GetPath(const std::string& input) + { + std::vector split = StringHelper::Split(input, "/"); + std::string output = ""; + + for (std::string str : split) + { + if (str.find_last_of(".") == std::string::npos) + output += str + "/"; + } + + return output; + }; + + static std::string GetDirectoryName(const fs::path& path) + { + return path.parent_path().u8string(); + }; +}; diff --git a/tools/ZAPD/ZAPD/StringHelper.h b/tools/ZAPD/ZAPD/StringHelper.h new file mode 100644 index 0000000000..b07a99f0e4 --- /dev/null +++ b/tools/ZAPD/ZAPD/StringHelper.h @@ -0,0 +1,108 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +class StringHelper +{ +public: + static std::vector Split(std::string s, const std::string& delimiter) + { + std::vector result; + + size_t pos = 0; + std::string token; + + while ((pos = s.find(delimiter)) != std::string::npos) + { + token = s.substr(0, pos); + result.push_back(token); + s.erase(0, pos + delimiter.length()); + } + + if (s.length() != 0) + result.push_back(s); + + return result; + } + + static std::string Strip(std::string s, const std::string& delimiter) + { + size_t pos = 0; + std::string token; + + while ((pos = s.find(delimiter)) != std::string::npos) + { + token = s.substr(0, pos); + s.erase(pos, pos + delimiter.length()); + } + + return s; + } + + static std::string Replace(std::string str, const std::string& from, const std::string& to) + { + size_t start_pos = str.find(from); + + if (start_pos == std::string::npos) + return str; + + str.replace(start_pos, from.length(), to); + return str; + } + + static bool StartsWith(const std::string& s, const std::string& input) + { + return s.rfind(input, 0) == 0; + } + + static bool Contains(const std::string& s, const std::string& input) + { + return s.find(input) != std::string::npos; + } + + static bool EndsWith(const std::string& s, const std::string& input) + { + size_t inputLen = strlen(input.c_str()); + return s.rfind(input) == (s.size() - inputLen); + } + + static std::string Sprintf(const char* format, ...) + { + char buffer[32768]; + // char buffer[2048]; + std::string output = ""; + va_list va; + + va_start(va, format); + vsprintf(buffer, format, va); + va_end(va); + + output = buffer; + return output; + } + + static std::string Implode(std::vector& elements, const char* const separator) + { + return std::accumulate(std::begin(elements), std::end(elements), std::string(), + [separator](std::string& ss, std::string& s) { + return ss.empty() ? s : ss + separator + s; + }); + } + + static int64_t StrToL(const std::string& str, int32_t base = 10) + { + return std::strtoull(str.c_str(), nullptr, base); + } + + static std::string BoolStr(bool b) { return b ? "true" : "false"; } + + static bool HasOnlyDigits(const std::string &str) + { + return std::all_of(str.begin(), str.end(), ::isdigit); + } +}; diff --git a/tools/ZAPD/ZAPD/Vec3s.h b/tools/ZAPD/ZAPD/Vec3s.h new file mode 100644 index 0000000000..23e4673b84 --- /dev/null +++ b/tools/ZAPD/ZAPD/Vec3s.h @@ -0,0 +1,21 @@ +#pragma once + +#include + +struct Vec3s +{ + int16_t x, y, z; + + Vec3s() + { + x = 0; + y = 0; + z = 0; + }; + Vec3s(int16_t nX, int16_t nY, int16_t nZ) + { + x = nX; + y = nY; + z = nZ; + }; +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/ZAPD.vcxproj b/tools/ZAPD/ZAPD/ZAPD.vcxproj new file mode 100644 index 0000000000..59aaf11473 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZAPD.vcxproj @@ -0,0 +1,316 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36} + ZAPD + 10.0 + ZAPD + + + + Application + true + v142 + MultiByte + + + Application + false + v142 + true + MultiByte + + + Application + true + v142 + MultiByte + + + Application + false + v142 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)lib\tinyxml2;$(SolutionDir)lib\libgfxd;$(SolutionDir)lib\elfio;$(SolutionDir)lib\assimp\include;$(SolutionDir)lib\stb;$(ProjectDir);$(IncludePath) + $(SolutionDir)lib\libgfxd;$(SolutionDir)lib\assimp-built;$(LibraryPath) + + + $(IncludePath) + + + + Level3 + Disabled + true + true + stdcpp17 + + + true + + + + + Level3 + Disabled + true + true + stdcpp17 + _CRT_SECURE_NO_WARNINGS;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;USE_ASSIMP;%(PreprocessorDefinitions) + EnableFastChecks + stdc11 + + + true + assimp-vc142-mt.lib;%(AdditionalDependencies) + + + cd .. +python3 ZAPD/genbuildinfo.py + + + + + Level3 + MaxSpeed + true + true + true + true + + + true + true + + + + + Level3 + MaxSpeed + true + true + true + true + stdcpplatest + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + Document + + + + + \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/ZAPD.vcxproj.filters b/tools/ZAPD/ZAPD/ZAPD.vcxproj.filters new file mode 100644 index 0000000000..0feff6f205 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZAPD.vcxproj.filters @@ -0,0 +1,553 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {02148456-5068-4613-8478-f10addc58e70} + + + {bcab3136-95ba-4839-833c-43d78ad6e335} + + + {dc06ed84-f6fe-4277-80f3-d62bd5cdbb98} + + + {6049c045-bc38-4221-b29e-ca6d4d8af4aa} + + + {490e3a08-047b-48d3-ab53-3a860a3b92aa} + + + {26c06845-8e8e-4b79-ad18-07c4f9c0f801} + + + {d45c420d-2378-47ac-92c5-80db9475c195} + + + {03cc56a2-e0e8-4167-80a0-98fb900a959a} + + + {73db0879-6df8-4f6a-8cc2-a1f836e9e796} + + + {9464ff21-96af-4b7d-a57b-f62bd9b7389a} + + + {e9865c34-fd69-413c-8cce-3f51331c3503} + + + {0f9980bb-ae46-4891-a39e-275bf255f010} + + + {11dbd8e6-d97a-42a5-b40c-e1350389544d} + + + {be9a5be0-ec6a-4200-8e39-bb58c7da7aa8} + + + {7ee79d97-c6a8-4e82-93ef-37981f4d7838} + + + {85600275-99fe-491d-8189-bcc3dc1a8903} + + + + + Source Files + + + Source Files\Z64\ZRoom + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Libraries + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\HighLevel + + + Source Files\HighLevel + + + Source Files\HighLevel + + + Source Files\Z64 + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files\Z64 + + + Source Files + + + Source Files\Z64 + + + Source Files\Libraries\libgfxd + + + Source Files\Libraries\libgfxd + + + Source Files\Libraries\libgfxd + + + Source Files\Libraries\libgfxd + + + Source Files\Libraries\libgfxd + + + Source Files\Libraries\libgfxd + + + Source Files\Libraries\libgfxd + + + Source Files\Z64 + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64\ZRoom\Commands + + + Source Files\Z64 + + + Source Files\Z64 + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files\Z64\ZRoom + + + Header Files\Z64\ZRoom + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files\Libraries\elfio + + + Header Files + + + Header Files + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom + + + Header Files\Z64\ZRoom + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files + + + Header Files\Libraries + + + Header Files\Libraries + + + Header Files\Libraries + + + Header Files\Libraries + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\HighLevel + + + Header Files\HighLevel + + + Header Files\HighLevel + + + Header Files\HighLevel + + + Header Files\Z64 + + + Header Files\HighLevel + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files + + + Header Files\Z64 + + + Header Files\Z64 + + + Header Files + + + Header Files\Z64 + + + Header Files + + + Header Files\Z64 + + + Header Files\Libraries\libgfxd + + + Header Files\Libraries\libgfxd + + + Header Files\Libraries\libgfxd + + + Header Files\Z64 + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64\ZRoom\Commands + + + Header Files\Z64 + + + Header Files\Z64 + + + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/ZAnimation.cpp b/tools/ZAPD/ZAPD/ZAnimation.cpp new file mode 100644 index 0000000000..5f9f93472b --- /dev/null +++ b/tools/ZAPD/ZAPD/ZAnimation.cpp @@ -0,0 +1,474 @@ +#include "ZAnimation.h" +#include +#include "BitConverter.h" +#include "File.h" +#include "Globals.h" +#include "HighLevel/HLAnimationIntermediette.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Animation, ZNormalAnimation); +REGISTER_ZFILENODE(PlayerAnimation, ZLinkAnimation); +REGISTER_ZFILENODE(CurveAnimation, ZCurveAnimation); + +ZAnimation::ZAnimation(ZFile* nParent) : ZResource(nParent) +{ + frameCount = 0; +} + +void ZAnimation::ParseRawData() +{ + const uint8_t* data = rawData.data(); + + // Read the header + frameCount = BitConverter::ToInt16BE(data, rawDataIndex + 0); +} + +void ZAnimation::Save(const fs::path& outFolder) +{ + if (Globals::Instance->testMode) + { + HLAnimationIntermediette* anim = HLAnimationIntermediette::FromZAnimation(this); + std::string xml = anim->OutputXML(); + File::WriteAllText(outFolder / (name + ".anmi"), xml); + + delete anim; + } +} + +std::string ZAnimation::GetSourceOutputCode(const std::string& prefix) +{ + return ""; +} + +ZResourceType ZAnimation::GetResourceType() const +{ + return ZResourceType::Animation; +} + +ZNormalAnimation::ZNormalAnimation(ZFile* nParent) : ZAnimation(nParent) +{ + rotationValues = std::vector(); + rotationIndices = std::vector(); + limit = 0; +} + +std::string ZNormalAnimation::GetSourceOutputCode(const std::string& prefix) +{ + if (parent != nullptr) + { + std::string defaultPrefix = name.c_str(); + defaultPrefix.replace(0, 1, "s"); // replace g prefix with s for local variables + + std::string headerStr = StringHelper::Sprintf("\n\t{ %i },\n", frameCount); + headerStr += StringHelper::Sprintf("\t%sFrameData,\n", defaultPrefix.c_str()); + headerStr += StringHelper::Sprintf("\t%sJointIndices,\n", defaultPrefix.c_str()); + headerStr += StringHelper::Sprintf("\t%i\n", limit); + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), StringHelper::Sprintf("%s", name.c_str()), + headerStr); + + std::string indicesStr = ""; + std::string valuesStr = " "; + const uint8_t lineLength = 14; + const uint8_t offset = 0; + + for (size_t i = 0; i < rotationValues.size(); i++) + { + valuesStr += StringHelper::Sprintf("0x%04X, ", rotationValues[i]); + + if ((i - offset + 1) % lineLength == 0) + valuesStr += "\n "; + } + + for (size_t i = 0; i < rotationIndices.size(); i++) + { + indicesStr += + StringHelper::Sprintf(" { 0x%04X, 0x%04X, 0x%04X },", rotationIndices[i].x, + rotationIndices[i].y, rotationIndices[i].z); + + if (i != (rotationIndices.size() - 1)) + indicesStr += "\n"; + } + + parent->AddDeclarationArray(rotationValuesSeg, DeclarationAlignment::Align16, + rotationValues.size() * 2, "static s16", + StringHelper::Sprintf("%sFrameData", defaultPrefix.c_str()), + rotationValues.size(), valuesStr); + + parent->AddDeclarationArray(rotationIndicesSeg, DeclarationAlignment::Align16, + rotationIndices.size() * 6, "static JointIndex", + StringHelper::Sprintf("%sJointIndices", defaultPrefix.c_str()), + rotationIndices.size(), indicesStr); + } + + return ""; +} + +size_t ZNormalAnimation::GetRawDataSize() const +{ + return 16; +} + +std::string ZNormalAnimation::GetSourceTypeName() const +{ + return "AnimationHeader"; +} + +void ZNormalAnimation::ParseRawData() +{ + ZAnimation::ParseRawData(); + + const uint8_t* data = rawData.data(); + + rotationValuesSeg = BitConverter::ToInt32BE(data, rawDataIndex + 4) & 0x00FFFFFF; + rotationIndicesSeg = BitConverter::ToInt32BE(data, rawDataIndex + 8) & 0x00FFFFFF; + limit = BitConverter::ToInt16BE(data, rawDataIndex + 12); + + uint32_t currentPtr = rotationValuesSeg; + + // Read the Rotation Values + for (uint32_t i = 0; i < ((rotationIndicesSeg - rotationValuesSeg) / 2); i++) + { + rotationValues.push_back(BitConverter::ToInt16BE(data, currentPtr)); + currentPtr += 2; + } + + currentPtr = rotationIndicesSeg; + + // Read the Rotation Indices + for (uint32_t i = 0; i < ((rawDataIndex - rotationIndicesSeg) / 6); i++) + { + rotationIndices.push_back(RotationIndex(BitConverter::ToInt16BE(data, currentPtr), + BitConverter::ToInt16BE(data, currentPtr + 2), + BitConverter::ToInt16BE(data, currentPtr + 4))); + currentPtr += 6; + } +} + +ZLinkAnimation::ZLinkAnimation(ZFile* nParent) : ZAnimation(nParent) +{ + segmentAddress = 0; +} + +std::string ZLinkAnimation::GetSourceOutputCode(const std::string& prefix) +{ + if (parent != nullptr) + { + std::string segSymbol = + segmentAddress == 0 ? + "NULL" : + parent->GetDeclarationName( + segmentAddress, + StringHelper::Sprintf("%sSeg%06X", name.c_str(), segmentAddress)); + std::string headerStr = + StringHelper::Sprintf("\n\t{ %i },\n\t0x%08X\n", frameCount, segmentAddress); + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), StringHelper::Sprintf("%s", name.c_str()), + headerStr); + } + + return ""; +} + +size_t ZLinkAnimation::GetRawDataSize() const +{ + return 8; +} + +std::string ZLinkAnimation::GetSourceTypeName() const +{ + return "LinkAnimationHeader"; +} + +void ZLinkAnimation::ParseRawData() +{ + ZAnimation::ParseRawData(); + + const uint8_t* data = rawData.data(); + segmentAddress = (BitConverter::ToInt32BE(data, rawDataIndex + 4)); +} + +/* ZCurveAnimation */ + +TransformData::TransformData(ZFile* parent, const std::vector& rawData, + uint32_t fileOffset) + : parent(parent) +{ + unk_00 = BitConverter::ToUInt16BE(rawData, fileOffset + 0); + unk_02 = BitConverter::ToUInt16BE(rawData, fileOffset + 2); + unk_04 = BitConverter::ToInt16BE(rawData, fileOffset + 4); + unk_06 = BitConverter::ToInt16BE(rawData, fileOffset + 6); + unk_08 = BitConverter::ToFloatBE(rawData, fileOffset + 8); +} + +TransformData::TransformData(ZFile* parent, const std::vector& rawData, + uint32_t fileOffset, size_t index) + : TransformData(parent, rawData, fileOffset + index * GetRawDataSize()) +{ +} + +std::string TransformData::GetBody(const std::string& prefix) const +{ + return StringHelper::Sprintf("0x%04X, 0x%04X, %i, %i, %ff", unk_00, unk_02, unk_04, unk_06, + unk_08); +} + +size_t TransformData::GetRawDataSize() const +{ + return 0x0C; +} + +std::string TransformData::GetSourceTypeName() +{ + return "TransformData"; +} + +ZCurveAnimation::ZCurveAnimation(ZFile* nParent) : ZAnimation(nParent) +{ + RegisterOptionalAttribute("SkelOffset"); +} + +void ZCurveAnimation::ParseXML(tinyxml2::XMLElement* reader) +{ + ZAnimation::ParseXML(reader); + + std::string skelOffsetXml = registeredAttributes.at("SkelOffset").value; + if (skelOffsetXml == "") + { + throw std::runtime_error( + StringHelper::Sprintf("ZCurveAnimation::ParseXML: Fatal error in '%s'.\n" + "\t Missing 'SkelOffset' attribute in ZCurveAnimation.\n" + "\t You need to provide the offset of the curve skeleton.", + name.c_str())); + } + skelOffset = StringHelper::StrToL(skelOffsetXml, 0); +} + +void ZCurveAnimation::ParseRawData() +{ + ZAnimation::ParseRawData(); + + refIndex = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0); + transformData = BitConverter::ToUInt32BE(rawData, rawDataIndex + 4); + copyValues = BitConverter::ToUInt32BE(rawData, rawDataIndex + 8); + unk_0C = BitConverter::ToInt16BE(rawData, rawDataIndex + 12); + unk_10 = BitConverter::ToInt16BE(rawData, rawDataIndex + 14); + + limbCount = + BitConverter::ToUInt8BE(rawData, Seg2Filespace(skelOffset, parent->baseAddress) + 4); + + size_t transformDataSize = 0; + size_t copyValuesSize = 0; + if (refIndex != 0) + { + uint32_t refIndexOffset = Seg2Filespace(refIndex, parent->baseAddress); + for (size_t i = 0; i < 3 * 3 * limbCount; i++) + { + uint8_t ref = BitConverter::ToUInt8BE(rawData, refIndexOffset + i); + if (ref == 0) + copyValuesSize++; + else + transformDataSize += ref; + + refIndexArr.emplace_back(ref); + } + } + + if (transformData != 0) + { + uint32_t transformDataOffset = Seg2Filespace(transformData, parent->baseAddress); + + for (size_t i = 0; i < transformDataSize; i++) + transformDataArr.emplace_back(parent, rawData, transformDataOffset, i); + } + + if (copyValues != 0) + { + uint32_t copyValuesOffset = Seg2Filespace(copyValues, parent->baseAddress); + + for (size_t i = 0; i < copyValuesSize; i++) + copyValuesArr.emplace_back(BitConverter::ToInt16BE(rawData, copyValuesOffset + i * 2)); + } +} + +void ZCurveAnimation::ExtractFromXML(tinyxml2::XMLElement* reader, + const std::vector& nRawData, uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align16, GetRawDataSize(), + GetSourceTypeName(), name, ""); +} + +void ZCurveAnimation::DeclareReferences(const std::string& prefix) +{ + if (refIndex != 0) + { + uint32_t refIndexOffset = Seg2Filespace(refIndex, parent->baseAddress); + std::string refIndexStr = + StringHelper::Sprintf("%sCurveAnime_%s_%06X", prefix.c_str(), "Ref", refIndexOffset); + + std::string entryStr = " "; + uint16_t arrayItemCnt = refIndexArr.size(); + + size_t i = 0; + for (auto& child : refIndexArr) + { + entryStr += StringHelper::Sprintf("0x%02X, %s", child, (i++ % 8 == 7) ? "\n " : ""); + } + + Declaration* decl = parent->GetDeclaration(refIndexOffset); + if (decl == nullptr) + { + parent->AddDeclarationArray(refIndexOffset, DeclarationAlignment::None, + arrayItemCnt * 1, "u8", refIndexStr, arrayItemCnt, + entryStr); + } + else + { + decl->text = entryStr; + } + } + + if (transformData != 0) + { + uint32_t transformDataOffset = Seg2Filespace(transformData, parent->baseAddress); + std::string transformDataStr = StringHelper::Sprintf( + "%sCurveAnime_%s_%06X", prefix.c_str(), + transformDataArr.at(0).GetSourceTypeName().c_str(), transformDataOffset); + + std::string entryStr = ""; + uint16_t arrayItemCnt = transformDataArr.size(); + + size_t i = 0; + for (auto& child : transformDataArr) + { + entryStr += StringHelper::Sprintf(" { %s },%s", child.GetBody(prefix).c_str(), + (++i < arrayItemCnt) ? "\n" : ""); + } + + Declaration* decl = parent->GetDeclaration(transformDataOffset); + if (decl == nullptr) + { + parent->AddDeclarationArray(transformDataOffset, DeclarationAlignment::None, + arrayItemCnt * transformDataArr.at(0).GetRawDataSize(), + transformDataArr.at(0).GetSourceTypeName(), + transformDataStr, arrayItemCnt, entryStr); + } + else + { + decl->text = entryStr; + } + } + + if (copyValues != 0) + { + uint32_t copyValuesOffset = Seg2Filespace(copyValues, parent->baseAddress); + std::string copyValuesStr = + StringHelper::Sprintf("%sCurveAnime_%s_%06X", prefix.c_str(), "Copy", copyValuesOffset); + + std::string entryStr = " "; + uint16_t arrayItemCnt = copyValuesArr.size(); + + size_t i = 0; + for (auto& child : copyValuesArr) + { + entryStr += StringHelper::Sprintf("% 6i, %s", child, (i++ % 8 == 7) ? "\n " : ""); + } + + Declaration* decl = parent->GetDeclaration(copyValuesOffset); + if (decl == nullptr) + { + parent->AddDeclarationArray(copyValuesOffset, DeclarationAlignment::None, + arrayItemCnt * 2, "s16", copyValuesStr, arrayItemCnt, + entryStr); + } + else + { + decl->text = entryStr; + } + } +} + +size_t ZCurveAnimation::GetRawDataSize() const +{ + return 0x10; +} + +std::string ZCurveAnimation::GetSourceOutputCode(const std::string& prefix) +{ + std::string bodyStr = ""; + uint32_t address = Seg2Filespace(rawDataIndex, parent->baseAddress); + + std::string refIndexStr = "NULL"; + if (refIndex != 0) + { + uint32_t refIndexOffset = Seg2Filespace(refIndex, parent->baseAddress); + Declaration* decl = parent->GetDeclaration(refIndexOffset); + if (decl == nullptr) + { + refIndexStr = StringHelper::Sprintf("%sCurveAnime_%s_%06X", prefix.c_str(), "Ref", + refIndexOffset); + } + else + { + refIndexStr = decl->varName; + } + } + + std::string transformDataStr = "NULL"; + if (transformData != 0) + { + uint32_t transformDataOffset = Seg2Filespace(transformData, parent->baseAddress); + Declaration* decl = parent->GetDeclaration(transformDataOffset); + if (decl == nullptr) + { + transformDataStr = StringHelper::Sprintf( + "%sCurveAnime_%s_%06X", prefix.c_str(), + transformDataArr.at(0).GetSourceTypeName().c_str(), transformDataOffset); + } + else + { + transformDataStr = decl->varName; + } + } + + std::string copyValuesStr = "NULL"; + if (copyValues != 0) + { + uint32_t copyValuesOffset = Seg2Filespace(copyValues, parent->baseAddress); + Declaration* decl = parent->GetDeclaration(copyValuesOffset); + if (decl == nullptr) + { + copyValuesStr = StringHelper::Sprintf("%sCurveAnime_%s_%06X", prefix.c_str(), "Copy", + copyValuesOffset); + } + else + { + copyValuesStr = decl->varName; + } + } + + bodyStr = + StringHelper::Sprintf("\n %s,\n %s,\n %s,\n %i, %i\n", refIndexStr.c_str(), + transformDataStr.c_str(), copyValuesStr.c_str(), unk_0C, unk_10); + + Declaration* decl = parent->GetDeclaration(address); + if (decl == nullptr) + { + parent->AddDeclaration(address, DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), name, bodyStr); + } + else + { + decl->text = bodyStr; + } + + return ""; +} + +std::string ZCurveAnimation::GetSourceTypeName() const +{ + return "TransformUpdateIndex"; +} diff --git a/tools/ZAPD/ZAPD/ZAnimation.h b/tools/ZAPD/ZAPD/ZAnimation.h new file mode 100644 index 0000000000..2d23dddf4b --- /dev/null +++ b/tools/ZAPD/ZAPD/ZAnimation.h @@ -0,0 +1,138 @@ +#pragma once + +#include +#include +#include +#include "Vec3s.h" +#include "ZResource.h" +#include "ZSkeleton.h" +#include "tinyxml2.h" + +struct RotationIndex +{ + // uint16_t transX, transY, transZ; + uint16_t x, y, z; + + RotationIndex(uint16_t nX, uint16_t nY, uint16_t nZ) + { + x = nX; + y = nY; + z = nZ; + }; +}; + +class ZAnimation : public ZResource +{ +public: + int16_t frameCount; + + ZAnimation(ZFile* nParent); + + std::string GetSourceOutputCode(const std::string& prefix) override; + ZResourceType GetResourceType() const override; + +protected: + void ParseRawData() override; + void Save(const fs::path& outFolder) override; +}; + +class ZNormalAnimation : public ZAnimation +{ +public: + std::vector rotationValues; + std::vector rotationIndices; + uint32_t rotationValuesSeg; + uint32_t rotationIndicesSeg; + int16_t limit; + + ZNormalAnimation(ZFile* nParent); + + std::string GetSourceOutputCode(const std::string& prefix) override; + size_t GetRawDataSize() const override; + std::string GetSourceTypeName() const override; + +protected: + virtual void ParseRawData() override; +}; + +class ZLinkAnimation : public ZAnimation +{ +public: + segptr_t segmentAddress; + + ZLinkAnimation(ZFile* nParent); + + std::string GetSourceOutputCode(const std::string& prefix) override; + size_t GetRawDataSize() const override; + std::string GetSourceTypeName() const override; + +protected: + virtual void ParseRawData() override; +}; + +class TransformData +{ +protected: + ZFile* parent; + + ///* 0x0000 */ u16 unk_00; // appears to be flags + uint16_t unk_00; + ///* 0x0002 */ s16 unk_02; + int16_t unk_02; + ///* 0x0004 */ s16 unk_04; + int16_t unk_04; + ///* 0x0006 */ s16 unk_06; + int16_t unk_06; + ///* 0x0008 */ f32 unk_08; + float unk_08; + +public: + TransformData() = default; + TransformData(ZFile* parent, const std::vector& rawData, uint32_t fileOffset); + TransformData(ZFile* parent, const std::vector& rawData, uint32_t fileOffset, + size_t index); + + [[nodiscard]] std::string GetBody(const std::string& prefix) const; + + size_t GetRawDataSize() const; + std::string GetSourceTypeName(); +}; + +class ZCurveAnimation : public ZAnimation +{ +protected: + segptr_t skelOffset = 0; + + ///* 0x0000 */ u8* refIndex; + segptr_t refIndex = 0; + ///* 0x0004 */ TransformData* transformData; + segptr_t transformData = 0; + ///* 0x0008 */ s16* copyValues; + segptr_t copyValues = 0; + ///* 0x000C */ s16 unk_0C; + int16_t unk_0C; + ///* 0x000E */ s16 unk_10; + int16_t unk_10; + + uint8_t limbCount = 0; + + std::vector refIndexArr; + std::vector transformDataArr; + std::vector copyValuesArr; + +public: + ZCurveAnimation(); + ZCurveAnimation(ZFile* nParent); + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + + void DeclareReferences(const std::string& prefix) override; + size_t GetRawDataSize() const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + + std::string GetSourceTypeName() const override; +}; +// TransformUpdateIndex diff --git a/tools/ZAPD/ZAPD/ZArray.cpp b/tools/ZAPD/ZAPD/ZArray.cpp new file mode 100644 index 0000000000..3194eac2d7 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZArray.cpp @@ -0,0 +1,86 @@ +#include "ZArray.h" +#include +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Array, ZArray); + +ZArray::ZArray(ZFile* nParent) : ZResource(nParent) +{ + canHaveInner = true; + RegisterRequiredAttribute("Count"); +} + +ZArray::~ZArray() +{ + for (auto res : resList) + delete res; +} + +void ZArray::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + arrayCnt = StringHelper::StrToL(registeredAttributes.at("Count").value, 0); + // TODO: do a better check. + assert(arrayCnt > 0); + + tinyxml2::XMLElement* child = reader->FirstChildElement(); + if (child == nullptr) + throw std::runtime_error( + StringHelper::Sprintf("Error! Array needs at least one sub-element.\n")); + + childName = child->Name(); + + auto nodeMap = ZFile::GetNodeMap(); + size_t childIndex = rawDataIndex; + for (size_t i = 0; i < arrayCnt; i++) + { + ZResource* res = nodeMap->at(childName)(parent); + if (!res->DoesSupportArray()) + { + throw std::runtime_error(StringHelper::Sprintf( + "Error! Resource %s does not support being wrapped in an array!\n", + childName.c_str())); + } + res->parent = parent; + res->SetInnerNode(true); + res->ExtractFromXML(child, rawData, childIndex); + + childIndex += res->GetRawDataSize(); + resList.push_back(res); + } +} + +std::string ZArray::GetSourceOutputCode(const std::string& prefix) +{ + std::string output = ""; + + for (size_t i = 0; i < arrayCnt; i++) + { + output += resList.at(i)->GetBodySourceCode(); + + if (i < arrayCnt - 1) + output += ",\n"; + } + + if (parent != nullptr) + parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(), + resList.at(0)->GetSourceTypeName(), name, arrayCnt, output); + + return ""; +} + +size_t ZArray::GetRawDataSize() const +{ + size_t size = 0; + for (auto res : resList) + size += res->GetRawDataSize(); + return size; +} + +ZResourceType ZArray::GetResourceType() const +{ + return ZResourceType::Array; +} diff --git a/tools/ZAPD/ZAPD/ZArray.h b/tools/ZAPD/ZAPD/ZArray.h new file mode 100644 index 0000000000..f43dc1242e --- /dev/null +++ b/tools/ZAPD/ZAPD/ZArray.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include +#include +#include "ZResource.h" +#include "tinyxml2.h" + +class ZArray : public ZResource +{ +public: + ZArray(ZFile* nParent); + ~ZArray(); + + void ParseXML(tinyxml2::XMLElement* reader) override; + + std::string GetSourceOutputCode(const std::string& prefix) override; + size_t GetRawDataSize() const override; + + ZResourceType GetResourceType() const override; + +protected: + size_t arrayCnt; + std::string childName; + std::vector resList; +}; diff --git a/tools/ZAPD/ZAPD/ZBackground.cpp b/tools/ZAPD/ZAPD/ZBackground.cpp new file mode 100644 index 0000000000..94388bf28c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZBackground.cpp @@ -0,0 +1,209 @@ +#include "ZBackground.h" +#include "BitConverter.h" +#include "File.h" +#include "Globals.h" +#include "Path.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Background, ZBackground); + +#define JPEG_MARKER 0xFFD8FFE0 +#define MARKER_DQT 0xFFDB + +ZBackground::ZBackground(ZFile* nParent) : ZResource(nParent) +{ +} + +ZBackground::ZBackground(const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent) + : ZResource(nParent) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + rawDataIndex = nRawDataIndex; + name = GetDefaultName(prefix.c_str(), rawDataIndex); + outName = name; + + ParseRawData(); +} + +void ZBackground::ParseRawData() +{ + ZResource::ParseRawData(); + + size_t i = 0; + while (true) + { + uint8_t val = rawData.at(rawDataIndex + i); + data.push_back(val); + + if (BitConverter::ToUInt16BE(rawData, rawDataIndex + i) == 0xFFD9) + { + data.push_back(rawData.at(rawDataIndex + i + 1)); + break; + } + + i++; + } +} + +void ZBackground::ParseBinaryFile(const std::string& inFolder, bool appendOutName) +{ + fs::path filepath(inFolder); + + if (appendOutName) + filepath = filepath / (outName + "." + GetExternalExtension()); + + data = File::ReadAllBytes(filepath.string()); + + // Add padding. + data.insert(data.end(), GetRawDataSize() - data.size(), 0x00); + CheckValidJpeg(filepath.generic_string()); +} + +void ZBackground::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + DeclareVar("", ""); +} + +void ZBackground::CheckValidJpeg(const std::string& filepath) +{ + std::string filename = outName; + if (filepath != "") + { + filename = filepath; + } + + uint32_t jpegMarker = BitConverter::ToUInt32BE(data, 0); + if (jpegMarker != JPEG_MARKER) + { + fprintf(stderr, + "ZBackground::CheckValidJpeg: Warning.\n" + "\t Missing jpeg marker at the beginning of file: '%s'.\n" + "\t The game will skip this jpeg.\n", + filename.c_str()); + } + if (data.at(6) != 'J' || data.at(7) != 'F' || data.at(8) != 'I' || data.at(9) != 'F' || + data.at(10) != '\0') + { + std::string jfifIdentifier(data.begin() + 6, data.begin() + 6 + 5); + fprintf(stderr, + "ZBackground::CheckValidJpeg: Warning.\n" + "\t Missing 'JFIF' identifier. File: '%s'.\n" + "\t This image may be corrupted or not be a jpeg iamge.\n" + "\t The identifier found was '%s'.\n", + filename.c_str(), jfifIdentifier.c_str()); + } + uint8_t majorVersion = data.at(11); + uint8_t minorVersion = data.at(12); + if (majorVersion != 0x01 || minorVersion != 0x01) + { + fprintf(stderr, + "ZBackground::CheckValidJpeg: Warning.\n" + "\t Wrong JFIF version '%i.%02i'. File: '%s'.\n" + "\t The expected version is '1.01'. The game may not be able to decode this image " + "properly.\n", + majorVersion, minorVersion, filename.c_str()); + } + if (BitConverter::ToUInt16BE(data, 20) != MARKER_DQT) + { + // This may happen when creating a custom image with Exif, XMP, thumbnail, progressive, etc. + // enabled. + fprintf(stderr, + "ZBackground::CheckValidJpeg: Warning.\n" + "\t There seems to be extra data before the image data in file: '%s'.\n" + "\t The game may not be able to decode this image properly.\n", + filename.c_str()); + } + if (data.size() > GetRawDataSize()) + { + fprintf(stderr, + "ZBackground::CheckValidJpeg: Warning.\n" + "\t The image is bigger than the screen buffer. File: '%s'.\n" + "\t Image size: %zu bytes.\n" + "\t Screen buffer size: %zu bytes.\n", + filename.c_str(), data.size(), GetRawDataSize()); + } +} + +size_t ZBackground::GetRawDataSize() const +{ + // Jpgs use the whole sceen buffer, which is a u16 matrix. + return Globals::Instance->cfg.bgScreenHeight * Globals::Instance->cfg.bgScreenWidth * 2; +} + +void ZBackground::DeclareVar(const std::string& prefix, const std::string& bodyStr) const +{ + std::string auxName = name; + + if (name == "") + auxName = GetDefaultName(prefix, rawDataIndex); + + parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::Align8, GetRawDataSize(), + GetSourceTypeName(), auxName, "SCREEN_WIDTH * SCREEN_HEIGHT / 4", + bodyStr); +} + +bool ZBackground::IsExternalResource() const +{ + return true; +} + +std::string ZBackground::GetExternalExtension() const +{ + return "jpg"; +} + +void ZBackground::Save(const fs::path& outFolder) +{ + fs::path filepath = outFolder / (outName + "." + GetExternalExtension()); + File::WriteAllBytes(filepath.string(), data); +} + +std::string ZBackground::GetBodySourceCode() +{ + std::string bodyStr = " "; + + for (size_t i = 0; i < data.size() / 8; ++i) + { + bodyStr += StringHelper::Sprintf("0x%016llX, ", BitConverter::ToUInt64BE(data, i * 8)); + + if (i % 8 == 7) + bodyStr += "\n "; + } + + bodyStr += "\n"; + + return bodyStr; +} + +std::string ZBackground::GetSourceOutputCode(const std::string& prefix) +{ + std::string bodyStr = GetBodySourceCode(); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + + if (decl == nullptr) + DeclareVar(prefix, bodyStr); + else + decl->text = bodyStr; + + return ""; +} + +std::string ZBackground::GetDefaultName(const std::string& prefix, uint32_t address) +{ + return StringHelper::Sprintf("%sBackground_%06X", prefix.c_str(), address); +} + +std::string ZBackground::GetSourceTypeName() const +{ + return "u64"; +} + +ZResourceType ZBackground::GetResourceType() const +{ + return ZResourceType::Background; +} diff --git a/tools/ZAPD/ZAPD/ZBackground.h b/tools/ZAPD/ZAPD/ZBackground.h new file mode 100644 index 0000000000..3df5c794b7 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZBackground.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include +#include "ZResource.h" + +class ZBackground : public ZResource +{ +protected: + std::vector data; + +public: + ZBackground(ZFile* nParent); + ZBackground(const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent); + void ParseRawData() override; + void ParseBinaryFile(const std::string& inFolder, bool appendOutName); + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) override; + + void CheckValidJpeg(const std::string& filepath); + + size_t GetRawDataSize() const override; + + void DeclareVar(const std::string& prefix, const std::string& bodyStr) const; + + bool IsExternalResource() const override; + std::string GetExternalExtension() const override; + void Save(const fs::path& outFolder) override; + std::string GetBodySourceCode(); + std::string GetSourceOutputCode(const std::string& prefix) override; + static std::string GetDefaultName(const std::string& prefix, uint32_t address); + + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZBlob.cpp b/tools/ZAPD/ZAPD/ZBlob.cpp new file mode 100644 index 0000000000..e377bcf8c9 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZBlob.cpp @@ -0,0 +1,107 @@ +#include "ZBlob.h" +#include "BitConverter.h" +#include "File.h" +#include "Path.h" +#include "StringHelper.h" +#include "ZFile.h" + +using namespace tinyxml2; + +REGISTER_ZFILENODE(Blob, ZBlob); + +ZBlob::ZBlob(ZFile* nParent) : ZResource(nParent) +{ + RegisterRequiredAttribute("Size"); +} + +// Build Source File Mode +ZBlob* ZBlob::BuildFromXML(XMLElement* reader, const std::string& inFolder, bool readFile) +{ + ZBlob* blob = new ZBlob(nullptr); + + blob->ParseXML(reader); + + if (readFile) + blob->blobData = File::ReadAllBytes(inFolder + "/" + blob->name + ".bin"); + + return blob; +} + +ZBlob* ZBlob::FromFile(const std::string& filePath) +{ + ZBlob* blob = new ZBlob(nullptr); + blob->name = StringHelper::Split(Path::GetFileNameWithoutExtension(filePath), ".")[0]; + blob->blobData = File::ReadAllBytes(filePath); + + return blob; +} + +void ZBlob::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + blobSize = StringHelper::StrToL(registeredAttributes.at("Size").value, 16); +} + +void ZBlob::ParseRawData() +{ + blobData.assign(rawData.data() + rawDataIndex, rawData.data() + rawDataIndex + blobSize); +} + +std::string ZBlob::GetSourceOutputCode(const std::string& prefix) +{ + sourceOutput = ""; + + for (size_t i = 0; i < blobData.size(); i += 1) + { + if (i % 16 == 0) + sourceOutput += " "; + + sourceOutput += StringHelper::Sprintf("0x%02X, ", blobData[i]); + + if (i % 16 == 15) + sourceOutput += "\n"; + } + + // Ensure there's always a trailing line feed to prevent dumb warnings. + // Please don't remove this line, unless you somehow made a way to prevent + // that warning when building the OoT repo. + sourceOutput += "\n"; + + return sourceOutput; +} + +std::string ZBlob::GetSourceOutputHeader(const std::string& prefix) +{ + return StringHelper::Sprintf("extern u8 %s[];\n", name.c_str()); +} + +void ZBlob::Save(const fs::path& outFolder) +{ + File::WriteAllBytes(outFolder / (name + ".bin"), blobData); +} + +bool ZBlob::IsExternalResource() const +{ + return true; +} + +std::string ZBlob::GetExternalExtension() const +{ + return "bin"; +} + +std::string ZBlob::GetSourceTypeName() const +{ + return "u8"; +} + +ZResourceType ZBlob::GetResourceType() const +{ + return ZResourceType::Blob; +} + +size_t ZBlob::GetRawDataSize() const +{ + return blobSize; +} diff --git a/tools/ZAPD/ZAPD/ZBlob.h b/tools/ZAPD/ZAPD/ZBlob.h new file mode 100644 index 0000000000..2f8d315729 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZBlob.h @@ -0,0 +1,31 @@ +#pragma once + +#include "ZResource.h" +#include "tinyxml2.h" + +class ZBlob : public ZResource +{ +public: + ZBlob(ZFile* nParent); + + static ZBlob* BuildFromXML(tinyxml2::XMLElement* reader, const std::string& inFolder, + bool readFile); + static ZBlob* FromFile(const std::string& filePath); + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + std::string GetSourceOutputCode(const std::string& prefix) override; + std::string GetSourceOutputHeader(const std::string& prefix) override; + void Save(const fs::path& outFolder) override; + + bool IsExternalResource() const override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + std::string GetExternalExtension() const override; + + size_t GetRawDataSize() const override; + +protected: + std::vector blobData; + size_t blobSize = 0; +}; diff --git a/tools/ZAPD/ZAPD/ZCollision.cpp b/tools/ZAPD/ZAPD/ZCollision.cpp new file mode 100644 index 0000000000..34d7ee12d0 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZCollision.cpp @@ -0,0 +1,330 @@ +#include "ZCollision.h" +#include +#include +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" + +REGISTER_ZFILENODE(Collision, ZCollisionHeader); + +ZCollisionHeader::ZCollisionHeader(ZFile* nParent) : ZResource(nParent) +{ +} + +ZCollisionHeader::~ZCollisionHeader() +{ + for (WaterBoxHeader* waterBox : waterBoxes) + delete waterBox; + + delete camData; +} + +void ZCollisionHeader::ParseRawData() +{ + const uint8_t* data = rawData.data(); + + absMinX = BitConverter::ToInt16BE(data, rawDataIndex + 0); + absMinY = BitConverter::ToInt16BE(data, rawDataIndex + 2); + absMinZ = BitConverter::ToInt16BE(data, rawDataIndex + 4); + + absMaxX = BitConverter::ToInt16BE(data, rawDataIndex + 6); + absMaxY = BitConverter::ToInt16BE(data, rawDataIndex + 8); + absMaxZ = BitConverter::ToInt16BE(data, rawDataIndex + 10); + + numVerts = BitConverter::ToUInt16BE(data, rawDataIndex + 12); + vtxAddress = BitConverter::ToInt32BE(data, rawDataIndex + 16); + + numPolygons = BitConverter::ToUInt16BE(data, rawDataIndex + 20); + polyAddress = BitConverter::ToInt32BE(data, rawDataIndex + 24); + polyTypeDefAddress = BitConverter::ToInt32BE(data, rawDataIndex + 28); + camDataAddress = BitConverter::ToInt32BE(data, rawDataIndex + 32); + + numWaterBoxes = BitConverter::ToUInt16BE(data, rawDataIndex + 36); + waterBoxAddress = BitConverter::ToInt32BE(data, rawDataIndex + 40); + + vtxSegmentOffset = Seg2Filespace(vtxAddress, parent->baseAddress); + polySegmentOffset = Seg2Filespace(polyAddress, parent->baseAddress); + polyTypeDefSegmentOffset = Seg2Filespace(polyTypeDefAddress, parent->baseAddress); + camDataSegmentOffset = Seg2Filespace(camDataAddress, parent->baseAddress); + waterBoxSegmentOffset = Seg2Filespace(waterBoxAddress, parent->baseAddress); + + vertices.reserve(numVerts); + polygons.reserve(numPolygons); + + for (uint16_t i = 0; i < numVerts; i++) + vertices.push_back(VertexEntry(rawData, vtxSegmentOffset + (i * 6))); + + for (uint16_t i = 0; i < numPolygons; i++) + polygons.push_back(PolygonEntry(rawData, polySegmentOffset + (i * 16))); + + uint16_t highestPolyType = 0; + + for (PolygonEntry poly : polygons) + { + if (poly.type > highestPolyType) + highestPolyType = poly.type; + } + + for (uint16_t i = 0; i < highestPolyType + 1; i++) + polygonTypes.push_back(BitConverter::ToUInt64BE(data, polyTypeDefSegmentOffset + (i * 8))); + + if (camDataAddress != 0) + camData = new CameraDataList(parent, name, rawData, camDataSegmentOffset, + polyTypeDefSegmentOffset, polygonTypes.size()); + + for (uint16_t i = 0; i < numWaterBoxes; i++) + waterBoxes.push_back(new WaterBoxHeader( + rawData, + waterBoxSegmentOffset + (i * (Globals::Instance->game == ZGame::OOT_SW97 ? 12 : 16)))); + + std::string declaration = ""; + + if (waterBoxes.size() > 0) + { + for (size_t i = 0; i < waterBoxes.size(); i++) + { + declaration += StringHelper::Sprintf("\t{ %i, %i, %i, %i, %i, 0x%08X },", + waterBoxes[i]->xMin, waterBoxes[i]->ySurface, + waterBoxes[i]->zMin, waterBoxes[i]->xLength, + waterBoxes[i]->zLength, waterBoxes[i]->properties); + if (i + 1 < waterBoxes.size()) + declaration += "\n"; + } + } + + if (waterBoxAddress != 0) + parent->AddDeclarationArray( + waterBoxSegmentOffset, DeclarationAlignment::None, 16 * waterBoxes.size(), "WaterBox", + StringHelper::Sprintf("%s_waterBoxes_%06X", name.c_str(), waterBoxSegmentOffset), 0, + declaration); + + if (polygons.size() > 0) + { + declaration = ""; + + for (size_t i = 0; i < polygons.size(); i++) + { + declaration += StringHelper::Sprintf( + "\t{ 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X },", + polygons[i].type, polygons[i].vtxA, polygons[i].vtxB, polygons[i].vtxC, + polygons[i].a, polygons[i].b, polygons[i].c, polygons[i].d); + if (i + 1 < polygons.size()) + declaration += "\n"; + } + + if (polyAddress != 0) + { + parent->AddDeclarationArray( + polySegmentOffset, DeclarationAlignment::None, polygons.size() * 16, + "CollisionPoly", + StringHelper::Sprintf("%s_polygons_%08X", name.c_str(), polySegmentOffset), 0, + declaration); + } + } + + declaration = ""; + for (size_t i = 0; i < polygonTypes.size(); i++) + { + declaration += StringHelper::Sprintf("\t{ 0x%08lX, 0x%08lX },", polygonTypes[i] >> 32, + polygonTypes[i] & 0xFFFFFFFF); + + if (i < polygonTypes.size() - 1) + declaration += "\n"; + } + + if (polyTypeDefAddress != 0) + parent->AddDeclarationArray( + polyTypeDefSegmentOffset, DeclarationAlignment::None, polygonTypes.size() * 8, + "SurfaceType", + StringHelper::Sprintf("%s_surfaceType_%08X", name.c_str(), polyTypeDefSegmentOffset), 0, + declaration); + + declaration = ""; + + if (vertices.size() > 0) + { + declaration = ""; + + for (size_t i = 0; i < vertices.size(); i++) + { + declaration += StringHelper::Sprintf("\t{ %6i, %6i, %6i },", vertices[i].x, + vertices[i].y, vertices[i].z); + + if (i < vertices.size() - 1) + declaration += "\n"; + } + + if (vtxAddress != 0) + parent->AddDeclarationArray( + vtxSegmentOffset, DeclarationAlignment::None, vertices.size() * 6, "Vec3s", + StringHelper::Sprintf("%s_vtx_%08X", name.c_str(), vtxSegmentOffset), 0, + declaration); + + declaration = ""; + } + + declaration = ""; + char waterBoxStr[2048]; + + if (waterBoxAddress != 0) + sprintf(waterBoxStr, "%s_waterBoxes_%06X", name.c_str(), waterBoxSegmentOffset); + else + sprintf(waterBoxStr, "NULL"); + + declaration += "\n"; + + declaration += StringHelper::Sprintf(" { %i, %i, %i },\n { %i, %i, %i },\n", absMinX, + absMinY, absMinZ, absMaxX, absMaxY, absMaxZ); + + declaration += StringHelper::Sprintf( + " %i,\n %s_vtx_%08X,\n %i,\n %s_polygons_%08X,\n %s_surfaceType_%08X,\n " + "%s_camDataList_%08X,\n %i,\n %s\n", + numVerts, name.c_str(), vtxSegmentOffset, numPolygons, name.c_str(), polySegmentOffset, + name.c_str(), polyTypeDefSegmentOffset, name.c_str(), camDataSegmentOffset, numWaterBoxes, + waterBoxStr); + + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, DeclarationPadding::Pad16, + GetRawDataSize(), "CollisionHeader", + StringHelper::Sprintf("%s", name.c_str(), rawDataIndex), declaration); +} + +ZResourceType ZCollisionHeader::GetResourceType() const +{ + return ZResourceType::CollisionHeader; +} + +size_t ZCollisionHeader::GetRawDataSize() const +{ + return 44; +} + +PolygonEntry::PolygonEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + type = BitConverter::ToUInt16BE(data, rawDataIndex + 0); + vtxA = BitConverter::ToUInt16BE(data, rawDataIndex + 2); + vtxB = BitConverter::ToUInt16BE(data, rawDataIndex + 4); + vtxC = BitConverter::ToUInt16BE(data, rawDataIndex + 6); + a = BitConverter::ToUInt16BE(data, rawDataIndex + 8); + b = BitConverter::ToUInt16BE(data, rawDataIndex + 10); + c = BitConverter::ToUInt16BE(data, rawDataIndex + 12); + d = BitConverter::ToUInt16BE(data, rawDataIndex + 14); +} + +VertexEntry::VertexEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + x = BitConverter::ToInt16BE(data, rawDataIndex + 0); + y = BitConverter::ToInt16BE(data, rawDataIndex + 2); + z = BitConverter::ToInt16BE(data, rawDataIndex + 4); +} + +WaterBoxHeader::WaterBoxHeader(const std::vector& rawData, uint32_t rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + xMin = BitConverter::ToInt16BE(data, rawDataIndex + 0); + ySurface = BitConverter::ToInt16BE(data, rawDataIndex + 2); + zMin = BitConverter::ToInt16BE(data, rawDataIndex + 4); + xLength = BitConverter::ToInt16BE(data, rawDataIndex + 6); + zLength = BitConverter::ToInt16BE(data, rawDataIndex + 8); + + if (Globals::Instance->game == ZGame::OOT_SW97) + properties = BitConverter::ToInt16BE(data, rawDataIndex + 10); + else + properties = BitConverter::ToInt32BE(data, rawDataIndex + 12); +} + +CameraDataList::CameraDataList(ZFile* parent, const std::string& prefix, + const std::vector& rawData, uint32_t rawDataIndex, + uint32_t polyTypeDefSegmentOffset, uint32_t polygonTypesCnt) +{ + std::string declaration = ""; + + // Parse CameraDataEntries + int32_t numElements = (polyTypeDefSegmentOffset - rawDataIndex) / 8; + uint32_t cameraPosDataSeg = rawDataIndex; + for (int32_t i = 0; i < numElements; i++) + { + CameraDataEntry* entry = new CameraDataEntry(); + + entry->cameraSType = + BitConverter::ToInt16BE(rawData, rawDataIndex + (entries.size() * 8) + 0); + entry->numData = BitConverter::ToInt16BE(rawData, rawDataIndex + (entries.size() * 8) + 2); + entry->cameraPosDataSeg = + BitConverter::ToInt32BE(rawData, rawDataIndex + (entries.size() * 8) + 4); + + if (entry->cameraPosDataSeg != 0 && GETSEGNUM(entry->cameraPosDataSeg) != 2) + { + cameraPosDataSeg = rawDataIndex + (entries.size() * 8); + break; + } + + if (entry->cameraPosDataSeg != 0 && cameraPosDataSeg > (entry->cameraPosDataSeg & 0xFFFFFF)) + cameraPosDataSeg = (entry->cameraPosDataSeg & 0xFFFFFF); + + entries.push_back(entry); + } + + // Setting cameraPosDataAddr to rawDataIndex give a pos list length of 0 + uint32_t cameraPosDataOffset = cameraPosDataSeg & 0xFFFFFF; + for (size_t i = 0; i < entries.size(); i++) + { + char camSegLine[2048]; + + if (entries[i]->cameraPosDataSeg != 0) + { + int32_t index = + ((entries[i]->cameraPosDataSeg & 0x00FFFFFF) - cameraPosDataOffset) / 0x6; + sprintf(camSegLine, "&%s_camPosData_%08X[%i]", prefix.c_str(), cameraPosDataOffset, + index); + } + else + sprintf(camSegLine, "NULL"); + + declaration += + StringHelper::Sprintf(" { 0x%04X, %i, %s },", entries[i]->cameraSType, + entries[i]->numData, camSegLine, rawDataIndex + (i * 8)); + + if (i < entries.size() - 1) + declaration += "\n"; + } + + parent->AddDeclarationArray( + rawDataIndex, DeclarationAlignment::None, entries.size() * 8, "CamData", + StringHelper::Sprintf("%s_camDataList_%08X", prefix.c_str(), rawDataIndex), entries.size(), + declaration); + + uint32_t numDataTotal = (rawDataIndex - cameraPosDataOffset) / 0x6; + + if (numDataTotal > 0) + { + declaration = ""; + for (uint32_t i = 0; i < numDataTotal; i++) + { + CameraPositionData* data = + new CameraPositionData(rawData, cameraPosDataOffset + (i * 6)); + cameraPositionData.push_back(data); + + declaration += StringHelper::Sprintf("\t{ %6i, %6i, %6i },", data->x, data->y, data->z); + if (i + 1 < numDataTotal) + declaration += "\n"; + } + + int32_t cameraPosDataIndex = GETSEGOFFSET(cameraPosDataSeg); + uint32_t entrySize = numDataTotal * 0x6; + parent->AddDeclarationArray( + cameraPosDataIndex, DeclarationAlignment::None, entrySize, "Vec3s", + StringHelper::Sprintf("%s_camPosData_%08X", prefix.c_str(), cameraPosDataIndex), + numDataTotal, declaration); + } +} + +CameraPositionData::CameraPositionData(const std::vector& rawData, uint32_t rawDataIndex) +{ + x = BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + y = BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + z = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); +} diff --git a/tools/ZAPD/ZAPD/ZCollision.h b/tools/ZAPD/ZAPD/ZCollision.h new file mode 100644 index 0000000000..8b53f25035 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZCollision.h @@ -0,0 +1,98 @@ +#pragma once + +#include "ZFile.h" +#include "ZResource.h" +#include "ZRoom/ZRoom.h" + +class PolygonEntry +{ +public: + uint16_t type; + uint16_t vtxA, vtxB, vtxC; + uint16_t a, b, c, d; + + PolygonEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class VertexEntry +{ +public: + int16_t x, y, z; + + VertexEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class WaterBoxHeader +{ +public: + int16_t xMin; + int16_t ySurface; + int16_t zMin; + int16_t xLength; + int16_t zLength; + int16_t pad; + int32_t properties; + + WaterBoxHeader(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CameraPositionData +{ +public: + int16_t x, y, z; + + CameraPositionData(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CameraDataEntry +{ +public: + int16_t cameraSType; + int16_t numData; + int32_t cameraPosDataSeg; +}; + +class CameraDataList +{ +public: + std::vector entries; + std::vector cameraPositionData; + + CameraDataList(ZFile* parent, const std::string& prefix, const std::vector& rawData, + uint32_t rawDataIndex, uint32_t polyTypeDefSegmentOffset, + uint32_t polygonTypesCnt); +}; + +class ZCollisionHeader : public ZResource +{ +public: + int16_t absMinX, absMinY, absMinZ; + int16_t absMaxX, absMaxY, absMaxZ; + uint16_t numVerts; + segptr_t vtxAddress; + uint16_t numPolygons; + segptr_t polyAddress; + segptr_t polyTypeDefAddress; + segptr_t camDataAddress; + + int32_t numWaterBoxes; + segptr_t waterBoxAddress; + + uint32_t vtxSegmentOffset, polySegmentOffset, polyTypeDefSegmentOffset, camDataSegmentOffset, + waterBoxSegmentOffset; + + std::vector vertices; + std::vector polygons; + std::vector polygonTypes; + std::vector waterBoxes; + CameraDataList* camData; + + ZCollisionHeader(ZFile* nParent); + ~ZCollisionHeader(); + + void ParseRawData() override; + + ZResourceType GetResourceType() const override; + + size_t GetRawDataSize() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZCutscene.cpp b/tools/ZAPD/ZAPD/ZCutscene.cpp new file mode 100644 index 0000000000..48e6a46762 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZCutscene.cpp @@ -0,0 +1,1263 @@ +#include "ZCutscene.h" +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZResource.h" + +REGISTER_ZFILENODE(Cutscene, ZCutscene); + +ZCutscene::ZCutscene(ZFile* nParent) : ZCutsceneBase(nParent) +{ +} + +ZCutscene::~ZCutscene() +{ + for (CutsceneCommand* cmd : commands) + delete cmd; +} +CutsceneCommandSetCameraPos::~CutsceneCommandSetCameraPos() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandSpecialAction::~CutsceneCommandSpecialAction() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandFadeBGM::~CutsceneCommandFadeBGM() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandPlayBGM::~CutsceneCommandPlayBGM() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandStopBGM::~CutsceneCommandStopBGM() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandEnvLighting::~CutsceneCommandEnvLighting() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandUnknown9::~CutsceneCommandUnknown9() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandUnknown::~CutsceneCommandUnknown() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandDayTime::~CutsceneCommandDayTime() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandTextbox::~CutsceneCommandTextbox() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandActorAction::~CutsceneCommandActorAction() +{ + for (auto e : entries) + delete e; +} + +CutsceneCommandSceneTransFX::~CutsceneCommandSceneTransFX() +{ +} + +std::string ZCutscene::GetBodySourceCode() +{ + std::string output = ""; + size_t size = 0; + uint32_t curPtr = 0; + + output += StringHelper::Sprintf(" CS_BEGIN_CUTSCENE(%i, %i),\n", commands.size(), endFrame); + + for (size_t i = 0; i < commands.size(); i++) + { + CutsceneCommand* cmd = commands[i]; + output += " " + cmd->GenerateSourceCode(curPtr); + curPtr += cmd->GetCommandSize(); + size += cmd->GetCommandSize(); + } + + output += StringHelper::Sprintf(" CS_END(),\n", commands.size(), endFrame); + + return output; +} + +std::string ZCutscene::GetSourceOutputCode(const std::string& prefix) +{ + std::string bodyStr = GetBodySourceCode(); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + + if (decl == nullptr) + DeclareVar(prefix, bodyStr); + else + decl->text = bodyStr; + + return ""; +} + +void ZCutscene::DeclareVar(const std::string& prefix, const std::string& bodyStr) const +{ + std::string auxName = name; + + if (auxName == "") + auxName = StringHelper::Sprintf("%sCutsceneData0x%06X", prefix.c_str(), rawDataIndex); + + parent->AddDeclarationArray(getSegmentOffset(), DeclarationAlignment::Align4, + DeclarationPadding::Pad16, GetRawDataSize(), "s32", auxName, 0, + bodyStr); +} + +size_t ZCutscene::GetRawDataSize() const +{ + size_t size = 0; + + // Beginning + size += 8; + + for (size_t i = 0; i < commands.size(); i++) + { + CutsceneCommand* cmd = commands[i]; + size += cmd->GetCommandSize(); + size += 4; + } + + // End + size += 8; + + return size; +} + +void ZCutscene::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + DeclareVar(parent->GetName(), ""); +} + +void ZCutscene::ParseRawData() +{ + numCommands = BitConverter::ToInt32BE(rawData, rawDataIndex + 0); + commands = std::vector(); + + endFrame = BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + uint32_t currentPtr = rawDataIndex + 8; + + for (int32_t i = 0; i < numCommands; i++) + { + int32_t id = BitConverter::ToInt32BE(rawData, currentPtr); + + if (id == -1) + break; + + CutsceneCommands cmdID = (CutsceneCommands)GetCommandFromID(id); + currentPtr += 4; + + int32_t numEntries = 1; + + for (int32_t j = 0; j < numEntries; j++) + { + CutsceneCommand* cmd = nullptr; + + switch (cmdID) + { + case CutsceneCommands::Cmd00: + break; + case CutsceneCommands::SetCameraPos: + cmd = new CutsceneCommandSetCameraPos(rawData, currentPtr); + break; + case CutsceneCommands::SetCameraFocus: + cmd = new CutsceneCommandSetCameraPos(rawData, currentPtr); + break; + case CutsceneCommands::SpecialAction: + cmd = new CutsceneCommandSpecialAction(rawData, currentPtr); + break; + case CutsceneCommands::SetLighting: + cmd = new CutsceneCommandEnvLighting(rawData, currentPtr); + break; + case CutsceneCommands::SetCameraPosLink: + cmd = new CutsceneCommandSetCameraPos(rawData, currentPtr); + break; + case CutsceneCommands::SetCameraFocusLink: + cmd = new CutsceneCommandSetCameraPos(rawData, currentPtr); + break; + case CutsceneCommands::Cmd07: + break; + case CutsceneCommands::Cmd08: + break; + case CutsceneCommands::Cmd09: + cmd = new CutsceneCommandUnknown9(rawData, currentPtr); + break; + case CutsceneCommands::Textbox: + cmd = new CutsceneCommandTextbox(rawData, currentPtr); + break; + case CutsceneCommands::Unknown: + cmd = new CutsceneCommandUnknown(rawData, currentPtr); + break; + case CutsceneCommands::SetActorAction0: + case CutsceneCommands::SetActorAction1: + case CutsceneCommands::SetActorAction2: + case CutsceneCommands::SetActorAction3: + case CutsceneCommands::SetActorAction4: + case CutsceneCommands::SetActorAction5: + case CutsceneCommands::SetActorAction6: + case CutsceneCommands::SetActorAction7: + case CutsceneCommands::SetActorAction8: + case CutsceneCommands::SetActorAction9: + case CutsceneCommands::SetActorAction10: + cmd = new CutsceneCommandActorAction(rawData, currentPtr); + break; + case CutsceneCommands::SetSceneTransFX: + cmd = new CutsceneCommandSceneTransFX(rawData, currentPtr); + break; + case CutsceneCommands::Nop: + cmd = new CutsceneCommandNop(rawData, currentPtr); + break; + case CutsceneCommands::PlayBGM: + cmd = new CutsceneCommandPlayBGM(rawData, currentPtr); + break; + case CutsceneCommands::StopBGM: + cmd = new CutsceneCommandStopBGM(rawData, currentPtr); + break; + case CutsceneCommands::FadeBGM: + cmd = new CutsceneCommandFadeBGM(rawData, currentPtr); + break; + case CutsceneCommands::SetTime: + cmd = new CutsceneCommandDayTime(rawData, currentPtr); + break; + case CutsceneCommands::Terminator: + cmd = new CutsceneCommandTerminator(rawData, currentPtr); + break; + case CutsceneCommands::End: + cmd = new CutsceneCommandEnd(rawData, currentPtr); + break; + case CutsceneCommands::Error: + fprintf(stderr, "Cutscene command error %d %s %d\n", (int32_t)cmdID, __FILE__, + __LINE__); + break; + } + + cmd->commandIndex = i; + cmd->commandID = (uint32_t)id; + currentPtr += (uint32_t)cmd->GetCommandSize(); + + commands.push_back(cmd); + } + } +} + +CutsceneCommands ZCutscene::GetCommandFromID(int32_t id) +{ + switch (id) + { + case 0x0003: + return CutsceneCommands::SpecialAction; + case 0x0004: + return CutsceneCommands::SetLighting; + case 0x0056: + return CutsceneCommands::PlayBGM; + case 0x0057: + return CutsceneCommands::StopBGM; + case 0x007C: + return CutsceneCommands::FadeBGM; + case 0x0009: + return CutsceneCommands::Cmd09; + case 0x0013: + return CutsceneCommands::Textbox; + case 0x008C: + return CutsceneCommands::SetTime; + case 0x0001: + return CutsceneCommands::SetCameraPos; + case 0x0002: + return CutsceneCommands::SetCameraFocus; + case 0x0005: + return CutsceneCommands::SetCameraPosLink; + case 0x0006: + return CutsceneCommands::SetCameraFocusLink; + case 0x0007: + return CutsceneCommands::Cmd07; + case 0x0008: + return CutsceneCommands::Cmd08; + case 0x03E8: + return CutsceneCommands::Terminator; + case 0xFFFF: + return CutsceneCommands::End; + case 0x002D: + return CutsceneCommands::SetSceneTransFX; + case 10: + return CutsceneCommands::SetActorAction0; + case 15: + case 17: + case 18: + case 23: + case 34: + case 39: + case 46: + case 76: + case 85: + case 93: + case 105: + case 107: + case 110: + case 119: + case 123: + case 138: + case 139: + case 144: + return CutsceneCommands::SetActorAction1; + case 14: + case 16: + case 24: + case 35: + case 40: + case 48: + case 64: + case 68: + case 70: + case 78: + case 80: + case 94: + case 116: + case 118: + case 120: + case 125: + case 131: + case 141: + return CutsceneCommands::SetActorAction2; + case 25: + case 36: + case 41: + case 50: + case 67: + case 69: + case 72: + case 81: + case 106: + case 117: + case 121: + case 126: + case 132: + return CutsceneCommands::SetActorAction3; + case 29: + case 37: + case 42: + case 51: + case 53: + case 63: + case 65: + case 66: + case 75: + case 82: + case 108: + case 127: + case 133: + return CutsceneCommands::SetActorAction4; + case 30: + case 38: + case 43: + case 47: + case 54: + case 79: + case 83: + case 128: + case 135: + return CutsceneCommands::SetActorAction5; + case 44: + case 55: + case 77: + case 84: + case 90: + case 129: + case 136: + return CutsceneCommands::SetActorAction6; + case 31: + case 52: + case 57: + case 58: + case 88: + case 115: + case 130: + case 137: + return CutsceneCommands::SetActorAction7; + case 49: + case 60: + case 89: + case 111: + case 114: + case 134: + case 142: + return CutsceneCommands::SetActorAction8; + case 62: + return CutsceneCommands::SetActorAction9; + case 143: + return CutsceneCommands::SetActorAction10; + case 0x0B: + case 0x0D: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x20: + case 0x21: + case 0x3B: + case 0x3D: + case 0x47: + case 0x49: + case 0x6D: + case 0x15: + case 0x16: + case 0x70: + case 0x71: + case 0x4A: + return CutsceneCommands::Unknown; + } + + fprintf(stderr, "WARNING: Could not identify cutscene command ID 0x%04X\n", id); + + return CutsceneCommands::Error; +} + +ZResourceType ZCutscene::GetResourceType() const +{ + return ZResourceType::Cutscene; +} + +CutsceneCommand::CutsceneCommand(const std::vector& rawData, uint32_t rawDataIndex) +{ +} + +CutsceneCommand::~CutsceneCommand() +{ +} + +std::string CutsceneCommand::GetCName() +{ + return "SCmdCutsceneData"; +} + +std::string CutsceneCommand::GenerateSourceCode(uint32_t baseAddress) +{ + return StringHelper::Sprintf("%s CutsceneData%04XCmd%02X = { 0x%02X,", GetCName().c_str(), + baseAddress, commandIndex, commandID); +} + +size_t CutsceneCommand::GetCommandSize() +{ + return 4; +} + +CutsceneCameraPoint::CutsceneCameraPoint(const std::vector& rawData, uint32_t rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + continueFlag = data[rawDataIndex + 0]; + cameraRoll = data[rawDataIndex + 1]; + nextPointFrame = BitConverter::ToInt16BE(data, rawDataIndex + 2); + viewAngle = BitConverter::ToInt32BE(data, rawDataIndex + 4); + + posX = BitConverter::ToInt16BE(data, rawDataIndex + 8); + posY = BitConverter::ToInt16BE(data, rawDataIndex + 10); + posZ = BitConverter::ToInt16BE(data, rawDataIndex + 12); + + unused = BitConverter::ToInt16BE(data, rawDataIndex + 14); +} + +CutsceneCommandSetCameraPos::CutsceneCommandSetCameraPos(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + base = BitConverter::ToUInt16BE(data, rawDataIndex + 0); + startFrame = BitConverter::ToUInt16BE(data, rawDataIndex + 2); + endFrame = BitConverter::ToUInt16BE(data, rawDataIndex + 4); + unused = BitConverter::ToUInt16BE(data, rawDataIndex + 6); + + entries = std::vector(); + + bool shouldContinue = true; + + uint32_t currentPtr = rawDataIndex + 8; + + while (shouldContinue) + { + CutsceneCameraPoint* camPoint = new CutsceneCameraPoint(rawData, currentPtr); + entries.push_back(camPoint); + + if (camPoint->continueFlag == -1) + shouldContinue = false; + + currentPtr += 16; + } +} + +// TODO +std::string CutsceneCommandSetCameraPos::GetCName() +{ + return ""; +} + +std::string CutsceneCommandSetCameraPos::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + std::string listStr = ""; + std::string posStr = ""; + + if (commandID == (int32_t)CutsceneCommands::SetCameraFocus) + { + listStr = "CS_CAM_FOCUS_POINT_LIST"; + posStr = "CS_CAM_FOCUS_POINT"; + } + else if (commandID == (int32_t)CutsceneCommands::SetCameraFocusLink) + { + listStr = "CS_CAM_FOCUS_POINT_PLAYER_LIST"; + posStr = "CS_CAM_FOCUS_POINT_PLAYER"; + } + else if (commandID == (int32_t)CutsceneCommands::SetCameraPosLink) + { + listStr = "CS_CAM_POS_PLAYER_LIST"; + posStr = "CS_CAM_POS_PLAYER"; + } + else + { + listStr = "CS_CAM_POS_LIST"; + posStr = "CS_CAM_POS"; + } + + result += StringHelper::Sprintf("%s(%i, %i),\n", listStr.c_str(), startFrame, endFrame); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf(" %s(%i, %i, %i, 0x%06X, %i, %i, %i, %i),\n", + posStr.c_str(), entries[i]->continueFlag, + entries[i]->cameraRoll, entries[i]->nextPointFrame, + *(uint32_t*)&entries[i]->viewAngle, entries[i]->posX, + entries[i]->posY, entries[i]->posZ, entries[i]->unused); + } + + return result; +} + +size_t CutsceneCommandSetCameraPos::GetCommandSize() +{ + return 8 + (entries.size() * 16); +} + +MusicFadeEntry::MusicFadeEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + base = BitConverter::ToUInt16BE(rawData, rawDataIndex + 0); + startFrame = BitConverter::ToUInt16BE(rawData, rawDataIndex + 2); + endFrame = BitConverter::ToUInt16BE(rawData, rawDataIndex + 4); + unknown0 = BitConverter::ToUInt16BE(rawData, rawDataIndex + 6); + unknown1 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 8); + unknown2 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 12); + unknown3 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 16); + unknown4 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 20); + unknown5 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 24); + unknown6 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 28); + unknown7 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 32); + unknown8 = BitConverter::ToUInt32BE(rawData, + rawDataIndex + 36); // Macro hardcodes it as zero + unknown9 = BitConverter::ToUInt32BE(rawData, + rawDataIndex + 40); // Macro hardcodes it as zero + unknown10 = BitConverter::ToUInt32BE(rawData, + rawDataIndex + 44); // Macro hardcodes it as zero +} + +CutsceneCommandFadeBGM::CutsceneCommandFadeBGM(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + uint32_t numEntries = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0); + + rawDataIndex += 4; + + for (uint32_t i = 0; i < numEntries; i++) + { + entries.push_back(new MusicFadeEntry(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandFadeBGM::GetCName() +{ + return "CsCmdMusicFade"; +} + +std::string CutsceneCommandFadeBGM::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_FADE_BGM_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + " CS_FADE_BGM(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),\n", entries[i]->base, + entries[i]->startFrame, entries[i]->endFrame, entries[i]->unknown0, + entries[i]->unknown1, entries[i]->unknown2, entries[i]->unknown3, entries[i]->unknown4, + entries[i]->unknown5, entries[i]->unknown6, entries[i]->unknown7); + } + + return result; +} + +size_t CutsceneCommandFadeBGM::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 0x30 * entries.size(); +} + +MusicChangeEntry::MusicChangeEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + sequence = BitConverter::ToUInt16BE(rawData, rawDataIndex + 0); + startFrame = BitConverter::ToUInt16BE(rawData, rawDataIndex + 2); + endFrame = BitConverter::ToUInt16BE(rawData, rawDataIndex + 4); + unknown0 = BitConverter::ToUInt16BE(rawData, rawDataIndex + 6); + unknown1 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 8); + unknown2 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 12); + unknown3 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 16); + unknown4 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 20); + unknown5 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 24); + unknown6 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 28); + unknown7 = BitConverter::ToUInt32BE(rawData, rawDataIndex + 32); +} + +CutsceneCommandPlayBGM::CutsceneCommandPlayBGM(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + uint32_t numEntries = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0); + + rawDataIndex += 4; + + for (uint32_t i = 0; i < numEntries; i++) + { + entries.push_back(new MusicChangeEntry(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandPlayBGM::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_PLAY_BGM_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + " CS_PLAY_BGM(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),\n", + entries[i]->sequence, entries[i]->startFrame, entries[i]->endFrame, + entries[i]->unknown0, entries[i]->unknown1, entries[i]->unknown2, entries[i]->unknown3, + entries[i]->unknown4, entries[i]->unknown5, entries[i]->unknown6, entries[i]->unknown7); + } + + return result; +} + +std::string CutsceneCommandPlayBGM::GetCName() +{ + return "CsCmdMusicChange"; +} + +size_t CutsceneCommandPlayBGM::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 0x30; +} + +CutsceneCommandStopBGM::CutsceneCommandStopBGM(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + uint32_t numEntries = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0); + + rawDataIndex += 4; + + for (uint32_t i = 0; i < numEntries; i++) + { + entries.push_back(new MusicChangeEntry(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandStopBGM::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_STOP_BGM_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + "\t\tCS_STOP_BGM(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),\n", entries[i]->sequence, + entries[i]->startFrame, entries[i]->endFrame, entries[i]->unknown0, + entries[i]->unknown1, entries[i]->unknown2, entries[i]->unknown3, entries[i]->unknown4, + entries[i]->unknown5, entries[i]->unknown6, entries[i]->unknown7); + } + + return result; +} + +std::string CutsceneCommandStopBGM::GetCName() +{ + return "CsCmdMusicChange"; +} + +size_t CutsceneCommandStopBGM::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 0x30; +} + +EnvLightingEntry::EnvLightingEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + setting = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + unused0 = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + unused1 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 8); + unused2 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 12); + unused3 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 16); + unused4 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 20); + unused5 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 24); + unused6 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 28); + unused7 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 32); +} + +CutsceneCommandEnvLighting::CutsceneCommandEnvLighting(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex + 0); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new EnvLightingEntry(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandEnvLighting::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_LIGHTING_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + "\t\tCS_LIGHTING(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),\n", entries[i]->setting, + entries[i]->startFrame, entries[i]->endFrame, entries[i]->unused0, entries[i]->unused1, + entries[i]->unused2, entries[i]->unused3, entries[i]->unused4, entries[i]->unused5, + entries[i]->unused6, entries[i]->unused7); + } + + return result; +} + +std::string CutsceneCommandEnvLighting::GetCName() +{ + return "CsCmdEnvLighting"; +} + +size_t CutsceneCommandEnvLighting::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (0x30 * entries.size()); +} + +Unknown9Entry::Unknown9Entry(const std::vector& rawData, uint32_t rawDataIndex) +{ + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + unk2 = rawData[rawDataIndex + 6]; + unk3 = rawData[rawDataIndex + 7]; + unk4 = rawData[rawDataIndex + 8]; + unused0 = rawData[rawDataIndex + 10]; + unused1 = rawData[rawDataIndex + 11]; + ; +} + +CutsceneCommandUnknown9::CutsceneCommandUnknown9(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new Unknown9Entry(rawData, rawDataIndex)); + rawDataIndex += 0x0C; + } +} + +std::string CutsceneCommandUnknown9::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_CMD_09_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf("\t\tCS_CMD_09(%i, %i, %i, %i, %i, %i, %i, %i),\n", + entries[i]->base, entries[i]->startFrame, + entries[i]->endFrame, entries[i]->unk2, entries[i]->unk3, + entries[i]->unk4, entries[i]->unused0, entries[i]->unused1); + } + + return result; +} + +std::string CutsceneCommandUnknown9::GetCName() +{ + return "CsCmdUnknown9"; +} + +size_t CutsceneCommandUnknown9::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (entries.size() * 12); +} + +UnkEntry::UnkEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + unused0 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 0); + unused1 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + unused2 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 8); + unused3 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 12); + unused4 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 16); + unused5 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 20); + unused6 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 24); + unused7 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 28); + unused8 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 32); + unused9 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 36); + unused10 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 40); + unused11 = (uint32_t)BitConverter::ToInt32BE(rawData, rawDataIndex + 44); +} + +CutsceneCommandUnknown::CutsceneCommandUnknown(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new UnkEntry(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandUnknown::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_UNK_DATA_LIST(0x%02X, %i),\n", commandID, entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + " CS_UNK_DATA(%i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),\n", + entries[i]->unused0, entries[i]->unused1, entries[i]->unused2, entries[i]->unused3, + entries[i]->unused4, entries[i]->unused5, entries[i]->unused6, entries[i]->unused7, + entries[i]->unused8, entries[i]->unused9, entries[i]->unused10, entries[i]->unused11); + } + + return result; +} + +std::string CutsceneCommandUnknown::GetCName() +{ + return "CsCmdUnknown1A"; +} + +size_t CutsceneCommandUnknown::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (entries.size() * 0x30); +} + +DayTimeEntry::DayTimeEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + hour = rawData[rawDataIndex + 6]; + minute = rawData[rawDataIndex + 7]; + unused = rawData[rawDataIndex + 8]; +} + +CutsceneCommandDayTime::CutsceneCommandDayTime(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new DayTimeEntry(rawData, rawDataIndex)); + rawDataIndex += 12; + } +} + +std::string CutsceneCommandDayTime::GetCName() +{ + return "CsCmdDayTime"; +} + +std::string CutsceneCommandDayTime::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_TIME_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + " CS_TIME(%i, %i, %i, %i, %i, %i),\n", entries[i]->base, entries[i]->startFrame, + entries[i]->endFrame, entries[i]->hour, entries[i]->minute, entries[i]->unused); + } + + return result; +} + +size_t CutsceneCommandDayTime::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (entries.size() * 12); +} + +TextboxEntry::TextboxEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + type = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + textID1 = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 8); + textID2 = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 10); +} + +CutsceneCommandTextbox::CutsceneCommandTextbox(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new TextboxEntry(rawData, rawDataIndex)); + rawDataIndex += 12; + } +} + +std::string CutsceneCommandTextbox::GetCName() +{ + return "CsCmdTextbox"; +} + +std::string CutsceneCommandTextbox::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_TEXT_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + if (entries[i]->base == 0xFFFF) + { + result += StringHelper::Sprintf(" CS_TEXT_NONE(%i, %i),\n", + entries[i]->startFrame, entries[i]->endFrame); + } + else + { + result += StringHelper::Sprintf( + " CS_TEXT_DISPLAY_TEXTBOX(%i, %i, %i, %i, %i, %i),\n", entries[i]->base, + entries[i]->startFrame, entries[i]->endFrame, entries[i]->type, entries[i]->textID1, + entries[i]->textID2); + } + } + + return result; +} + +size_t CutsceneCommandTextbox::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (entries.size() * 12); +} + +ActorAction::ActorAction(const std::vector& rawData, uint32_t rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + action = (uint16_t)BitConverter::ToInt16BE(data, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(data, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(data, rawDataIndex + 4); + rotX = (uint16_t)BitConverter::ToInt16BE(data, rawDataIndex + 6); + rotY = (uint16_t)BitConverter::ToInt16BE(data, rawDataIndex + 8); + rotZ = (uint16_t)BitConverter::ToInt16BE(data, rawDataIndex + 10); + startPosX = BitConverter::ToInt32BE(data, rawDataIndex + 12); + startPosY = BitConverter::ToInt32BE(data, rawDataIndex + 16); + startPosZ = BitConverter::ToInt32BE(data, rawDataIndex + 20); + endPosX = BitConverter::ToInt32BE(data, rawDataIndex + 24); + endPosY = BitConverter::ToInt32BE(data, rawDataIndex + 28); + endPosZ = BitConverter::ToInt32BE(data, rawDataIndex + 32); + normalX = BitConverter::ToInt32BE(data, rawDataIndex + 36); + normalY = BitConverter::ToInt32BE(data, rawDataIndex + 40); + normalZ = BitConverter::ToInt32BE(data, rawDataIndex + 44); +} + +CutsceneCommandActorAction::CutsceneCommandActorAction(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new ActorAction(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandActorAction::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + std::string subCommand = ""; + + if (commandID == 10) + { + result += StringHelper::Sprintf("CS_PLAYER_ACTION_LIST(%i),\n", entries.size()); + subCommand = "CS_PLAYER_ACTION"; + } + else + { + result += StringHelper::Sprintf("CS_NPC_ACTION_LIST(%i, %i),\n", commandID, entries.size()); + subCommand = "CS_NPC_ACTION"; + } + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + " CS_NPC_ACTION(0x%04X, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, %i, %i, %i, %i, %i, " + "%i, %i),\n", + entries[i]->action, entries[i]->startFrame, entries[i]->endFrame, entries[i]->rotX, + entries[i]->rotY, entries[i]->rotZ, entries[i]->startPosX, entries[i]->startPosY, + entries[i]->startPosZ, entries[i]->endPosX, entries[i]->endPosY, entries[i]->endPosZ, + *(int32_t*)&entries[i]->normalX, *(int32_t*)&entries[i]->normalY, + *(int32_t*)&entries[i]->normalZ); + } + + return result; +} + +std::string CutsceneCommandActorAction::GetCName() +{ + return "CsCmdBase"; +} + +size_t CutsceneCommandActorAction::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (entries.size() * 0x30); +} + +CutsceneCommandTerminator::CutsceneCommandTerminator(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + rawDataIndex += 4; + + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + unknown = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 6); // endFrame duplicate +} + +std::string CutsceneCommandTerminator::GetCName() +{ + return "CsCmdBase"; +} + +std::string CutsceneCommandTerminator::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_TERMINATOR(0x%04X, %i, %i),\n", base, startFrame, endFrame); + + return result; +} + +size_t CutsceneCommandTerminator::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 8; +} + +CutsceneCommandEnd::CutsceneCommandEnd(const std::vector& rawData, uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); +} + +std::string CutsceneCommandEnd::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_END(),\n"); + + return result; +} + +std::string CutsceneCommandEnd::GetCName() +{ + return "CsCmdBase"; +} + +size_t CutsceneCommandEnd::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 6; +} + +SpecialActionEntry::SpecialActionEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + const uint8_t* data = rawData.data(); + + base = BitConverter::ToUInt16BE(data, rawDataIndex + 0); + startFrame = BitConverter::ToUInt16BE(data, rawDataIndex + 2); + endFrame = BitConverter::ToUInt16BE(data, rawDataIndex + 4); + unused0 = BitConverter::ToUInt16BE(data, rawDataIndex + 6); + unused1 = BitConverter::ToUInt32BE(data, rawDataIndex + 8); + unused2 = BitConverter::ToUInt32BE(data, rawDataIndex + 12); + unused3 = BitConverter::ToUInt32BE(data, rawDataIndex + 16); + unused4 = BitConverter::ToUInt32BE(data, rawDataIndex + 20); + unused5 = BitConverter::ToUInt32BE(data, rawDataIndex + 24); + unused6 = BitConverter::ToUInt32BE(data, rawDataIndex + 28); + unused7 = BitConverter::ToUInt32BE(data, rawDataIndex + 32); + unused8 = BitConverter::ToUInt32BE(data, rawDataIndex + 36); + unused9 = BitConverter::ToUInt32BE(data, rawDataIndex + 40); + unused10 = BitConverter::ToUInt32BE(data, rawDataIndex + 44); +} + +CutsceneCommandSpecialAction::CutsceneCommandSpecialAction(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + int32_t numEntries = BitConverter::ToInt32BE(rawData, rawDataIndex + 0); + + rawDataIndex += 4; + + for (int32_t i = 0; i < numEntries; i++) + { + entries.push_back(new SpecialActionEntry(rawData, rawDataIndex)); + rawDataIndex += 0x30; + } +} + +std::string CutsceneCommandSpecialAction::GenerateSourceCode(uint32_t baseAddress) +{ + std::string result = ""; + + result += StringHelper::Sprintf("CS_MISC_LIST(%i),\n", entries.size()); + + for (size_t i = 0; i < entries.size(); i++) + { + result += StringHelper::Sprintf( + "\t\tCS_MISC(0x%04X, %i, %i, 0x%04X, 0x%04X, 0x%04X, %i, %i, %i, %i, %i, %i, %i, " + "%i),\n", + entries[i]->base, entries[i]->startFrame, entries[i]->endFrame, entries[i]->unused0, + entries[i]->unused1, entries[i]->unused2, entries[i]->unused3, entries[i]->unused4, + entries[i]->unused5, entries[i]->unused6, entries[i]->unused7, entries[i]->unused8, + entries[i]->unused9, entries[i]->unused10); + } + + return result; +} + +std::string CutsceneCommandSpecialAction::GetCName() +{ + return "CsCmdBase"; +} + +size_t CutsceneCommandSpecialAction::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + (0x30 * entries.size()); +} + +CutsceneCommandNop::CutsceneCommandNop(const std::vector& rawData, uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); +} + +std::string CutsceneCommandNop::GetCName() +{ + return "CsCmdBase"; +} + +size_t CutsceneCommandNop::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 6; +} + +CutsceneCommandSceneTransFX::CutsceneCommandSceneTransFX(const std::vector& rawData, + uint32_t rawDataIndex) + : CutsceneCommand(rawData, rawDataIndex) +{ + rawDataIndex += 4; + + base = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + startFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + endFrame = (uint16_t)BitConverter::ToInt16BE(rawData, rawDataIndex + 4); +} + +std::string CutsceneCommandSceneTransFX::GenerateSourceCode(uint32_t baseAddress) +{ + return StringHelper::Sprintf("CS_SCENE_TRANS_FX(%i, %i, %i),\n", base, startFrame, endFrame); +} + +std::string CutsceneCommandSceneTransFX::GetCName() +{ + return "CsCmdBase"; +} + +size_t CutsceneCommandSceneTransFX::GetCommandSize() +{ + return CutsceneCommand::GetCommandSize() + 8; +} + +ZCutsceneBase::ZCutsceneBase(ZFile* nParent) : ZResource(nParent) +{ +} diff --git a/tools/ZAPD/ZAPD/ZCutscene.h b/tools/ZAPD/ZAPD/ZCutscene.h new file mode 100644 index 0000000000..4899c82f89 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZCutscene.h @@ -0,0 +1,444 @@ +#pragma once + +#include +#include +#include +#include "ZFile.h" +#include "ZResource.h" +#include "tinyxml2.h" + +enum class CutsceneCommands +{ + Cmd00 = 0x0000, + SetCameraPos = 0x0001, + SetCameraFocus = 0x0002, + SpecialAction = 0x0003, + SetLighting = 0x0004, + SetCameraPosLink = 0x0005, + SetCameraFocusLink = 0x0006, + Cmd07 = 0x0007, + Cmd08 = 0x0008, + Cmd09 = 0x0009, + Unknown = 0x001A, + Textbox = 0x0013, + SetActorAction0 = 0x000A, + SetActorAction1 = 0x000F, + SetActorAction2 = 0x000E, + SetActorAction3 = 0x0019, + SetActorAction4 = 0x001D, + SetActorAction5 = 0x001E, + SetActorAction6 = 0x002C, + SetActorAction7 = 0x001F, + SetActorAction8 = 0x0031, + SetActorAction9 = 0x003E, + SetActorAction10 = 0x008F, + SetSceneTransFX = 0x002D, + Nop = 0x000B, + PlayBGM = 0x0056, + StopBGM = 0x0057, + FadeBGM = 0x007C, + SetTime = 0x008C, + Terminator = 0x03E8, + End = 0xFFFF, + Error = 0xFEAF, +}; + +class CutsceneCameraPoint +{ +public: + int8_t continueFlag; + int8_t cameraRoll; + int16_t nextPointFrame; + uint32_t viewAngle; + int16_t posX, posY, posZ; + int16_t unused; + + CutsceneCameraPoint(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommand +{ +public: + uint32_t commandID; + uint32_t commandIndex; + virtual ~CutsceneCommand(); + CutsceneCommand(const std::vector& rawData, uint32_t rawDataIndex); + virtual std::string GetCName(); + virtual std::string GenerateSourceCode(uint32_t baseAddress); + virtual size_t GetCommandSize(); +}; + +class CutsceneCommandSetCameraPos : public CutsceneCommand +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unused; + + std::vector entries; + ~CutsceneCommandSetCameraPos(); + CutsceneCommandSetCameraPos(const std::vector& rawData, uint32_t rawDataIndex); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class SpecialActionEntry +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unused0; + uint32_t unused1; + uint32_t unused2; + uint32_t unused3; + uint32_t unused4; + uint32_t unused5; + uint32_t unused6; + uint32_t unused7; + uint32_t unused8; + uint32_t unused9; + uint32_t unused10; + + SpecialActionEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandSpecialAction : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandSpecialAction(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandSpecialAction(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class MusicFadeEntry +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unknown0; + uint32_t unknown1; + uint32_t unknown2; + uint32_t unknown3; + uint32_t unknown4; + uint32_t unknown5; + uint32_t unknown6; + uint32_t unknown7; + uint32_t unknown8; + uint32_t unknown9; + uint32_t unknown10; + + MusicFadeEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandFadeBGM : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandFadeBGM(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandFadeBGM(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class MusicChangeEntry +{ +public: + uint16_t sequence; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unknown0; + uint32_t unknown1; + uint32_t unknown2; + uint32_t unknown3; + uint32_t unknown4; + uint32_t unknown5; + uint32_t unknown6; + uint32_t unknown7; + + MusicChangeEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandPlayBGM : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandPlayBGM(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandPlayBGM(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class CutsceneCommandStopBGM : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandStopBGM(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandStopBGM(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class EnvLightingEntry +{ +public: + uint16_t setting; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unused0; + uint32_t unused1; + uint32_t unused2; + uint32_t unused3; + uint32_t unused4; + uint32_t unused5; + uint32_t unused6; + uint32_t unused7; + + EnvLightingEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandEnvLighting : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandEnvLighting(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandEnvLighting(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class CutsceneCommandSceneTransFX : public CutsceneCommand +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + ~CutsceneCommandSceneTransFX(); + CutsceneCommandSceneTransFX(const std::vector& rawData, uint32_t rawDataIndex); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class Unknown9Entry +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unk2; + uint16_t unk3; + uint16_t unk4; + uint8_t unused0; + uint8_t unused1; + + Unknown9Entry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandUnknown9 : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandUnknown9(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandUnknown9(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class UnkEntry +{ +public: + uint32_t unused0; + uint32_t unused1; + uint32_t unused2; + uint32_t unused3; + uint32_t unused4; + uint32_t unused5; + uint32_t unused6; + uint32_t unused7; + uint32_t unused8; + uint32_t unused9; + uint32_t unused10; + uint32_t unused11; + + UnkEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandUnknown : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandUnknown(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandUnknown(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class DayTimeEntry +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint8_t hour; + uint8_t minute; + uint8_t unused; + + DayTimeEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandDayTime : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandDayTime(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandDayTime(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class TextboxEntry +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint16_t type; + uint16_t textID1; + uint16_t textID2; + + TextboxEntry(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandTextbox : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandTextbox(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandTextbox(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class ActorAction +{ +public: + uint16_t action; + uint16_t startFrame; + uint16_t endFrame; + int16_t rotX, rotY, rotZ; + int32_t startPosX, startPosY, startPosZ; + int32_t endPosX, endPosY, endPosZ; + int32_t normalX, normalY, normalZ; + + ActorAction(const std::vector& rawData, uint32_t rawDataIndex); +}; + +class CutsceneCommandActorAction : public CutsceneCommand +{ +public: + std::vector entries; + + CutsceneCommandActorAction(const std::vector& rawData, uint32_t rawDataIndex); + ~CutsceneCommandActorAction(); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class CutsceneCommandTerminator : public CutsceneCommand +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + uint16_t unknown; + + CutsceneCommandTerminator(const std::vector& rawData, uint32_t rawDataIndex); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class CutsceneCommandEnd : public CutsceneCommand +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + + CutsceneCommandEnd(const std::vector& rawData, uint32_t rawDataIndex); + std::string GetCName(); + std::string GenerateSourceCode(uint32_t baseAddress); + size_t GetCommandSize(); +}; + +class CutsceneCommandNop : public CutsceneCommand +{ +public: + uint16_t base; + uint16_t startFrame; + uint16_t endFrame; + + CutsceneCommandNop(const std::vector& rawData, uint32_t rawDataIndex); + std::string GetCName(); + size_t GetCommandSize(); +}; + +class ZCutsceneBase : public ZResource +{ +public: + ZCutsceneBase(ZFile* nParent); + virtual std::string GetBodySourceCode() = 0; + virtual void DeclareVar(const std::string& prefix, const std::string& bodyStr) const = 0; + virtual uint32_t getSegmentOffset() const = 0; +}; + +class ZCutscene : public ZCutsceneBase +{ +public: + ZCutscene(ZFile* nParent); + ~ZCutscene(); + + void ParseRawData() override; + + std::string GetBodySourceCode() override; + void DeclareVar(const std::string& prefix, const std::string& bodyStr) const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + size_t GetRawDataSize() const override; + CutsceneCommands GetCommandFromID(int32_t id); + uint32_t getSegmentOffset() const override { return rawDataIndex; } + + ZResourceType GetResourceType() const override; + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + +protected: + int32_t numCommands; + int32_t endFrame; + std::vector commands; +}; diff --git a/tools/ZAPD/ZAPD/ZCutsceneMM.cpp b/tools/ZAPD/ZAPD/ZCutsceneMM.cpp new file mode 100644 index 0000000000..bb6724060c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZCutsceneMM.cpp @@ -0,0 +1,92 @@ +#include "ZCutsceneMM.h" +#include "BitConverter.h" +#include "StringHelper.h" + +ZCutsceneMM::ZCutsceneMM(ZFile* nParent) : ZCutsceneBase(nParent) +{ +} + +ZCutsceneMM::~ZCutsceneMM() +{ + for (CutsceneCommand* cmd : commands) + delete cmd; +} + +std::string ZCutsceneMM::GetBodySourceCode() +{ + std::string output = ""; + + output += StringHelper::Sprintf(" CS_BEGIN_CUTSCENE(%i, %i),", numCommands, endFrame); + + for (size_t i = 0; i < data.size(); i++) + { + if ((i % 4) == 0) + output += "\n "; + output += StringHelper::Sprintf("0x%08X,", data[i]); + } + + return output; +} + +std::string ZCutsceneMM::GetSourceOutputCode(const std::string& prefix) +{ + std::string bodyStr = GetBodySourceCode(); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + + if (decl == nullptr) + DeclareVar(prefix, bodyStr); + else + decl->text = bodyStr; + + return ""; +} + +void ZCutsceneMM::DeclareVar(const std::string& prefix, const std::string& bodyStr) const +{ + std::string auxName = name; + + if (auxName == "") + auxName = StringHelper::Sprintf("%sCutsceneData0x%06X", prefix.c_str(), rawDataIndex); + + parent->AddDeclarationArray(getSegmentOffset(), DeclarationAlignment::Align4, GetRawDataSize(), + "s32", auxName, 0, bodyStr); +} + +size_t ZCutsceneMM::GetRawDataSize() const +{ + return 8 + data.size() * 4; +} + +void ZCutsceneMM::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + DeclareVar(parent->GetName(), ""); +} + +void ZCutsceneMM::ParseRawData() +{ + segmentOffset = rawDataIndex; + + numCommands = BitConverter::ToInt32BE(rawData, rawDataIndex + 0); + commands = std::vector(); + + endFrame = BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + uint32_t currentPtr = rawDataIndex + 8; + uint32_t lastData = 0; + + // TODO currently cutscenes aren't being parsed, so just consume words until we see an end + // marker. + do + { + lastData = BitConverter::ToInt32BE(rawData, currentPtr); + data.push_back(lastData); + currentPtr += 4; + } while (lastData != 0xFFFFFFFF); +} + +ZResourceType ZCutsceneMM::GetResourceType() const +{ + return ZResourceType::Cutscene; +} diff --git a/tools/ZAPD/ZAPD/ZCutsceneMM.h b/tools/ZAPD/ZAPD/ZCutsceneMM.h new file mode 100644 index 0000000000..c0438ed726 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZCutsceneMM.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include +#include +#include "ZCutscene.h" +#include "ZFile.h" +#include "tinyxml2.h" + +class ZCutsceneMM : public ZCutsceneBase +{ +public: + uint32_t segmentOffset; + + ZCutsceneMM(ZFile* nParent); + virtual ~ZCutsceneMM(); + + std::string GetBodySourceCode() override; + void DeclareVar(const std::string& prefix, const std::string& bodyStr) const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + size_t GetRawDataSize() const override; + uint32_t getSegmentOffset() const override { return segmentOffset; } + + void ParseRawData() override; + ZResourceType GetResourceType() const override; + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + +protected: + int32_t numCommands; + int32_t endFrame; + std::vector commands; + + std::vector data; +}; diff --git a/tools/ZAPD/ZAPD/ZDisplayList.cpp b/tools/ZAPD/ZAPD/ZDisplayList.cpp new file mode 100644 index 0000000000..de041f121c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZDisplayList.cpp @@ -0,0 +1,2196 @@ +#include "ZDisplayList.h" +#include +#include +#include +#include +#include +#include "BitConverter.h" +#include "Globals.h" +#include "HighLevel/HLModelIntermediette.h" +#include "OutputFormatter.h" +#include "StringHelper.h" +#include "gfxd.h" + +using namespace tinyxml2; + +REGISTER_ZFILENODE(DList, ZDisplayList); + +ZDisplayList::ZDisplayList(ZFile* nParent) : ZResource(nParent) +{ + defines = ""; + sceneSegName = ""; + lastTexWidth = 0; + lastTexHeight = 0; + lastTexAddr = 0; + lastTexFmt = F3DZEXTexFormats::G_IM_FMT_RGBA; + lastTexSiz = F3DZEXTexSizes::G_IM_SIZ_16b; + lastTexSizTest = F3DZEXTexSizes::G_IM_SIZ_16b; + lastTexLoaded = false; + lastTexIsPalette = false; + name = ""; + scene = nullptr; + dListType = Globals::Instance->game == ZGame::OOT_SW97 ? DListType::F3DEX : DListType::F3DZEX; +} + +ZDisplayList::~ZDisplayList() +{ + for (auto o : otherDLists) + { + delete o; + } +} + +// EXTRACT MODE +void ZDisplayList::ExtractFromXML(tinyxml2::XMLElement* reader, + const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + rawDataIndex = nRawDataIndex; + ParseXML(reader); + + fileData = nRawData; + int32_t rawDataSize = ZDisplayList::GetDListLength( + nRawData, rawDataIndex, + Globals::Instance->game == ZGame::OOT_SW97 ? DListType::F3DEX : DListType::F3DZEX); + dlistRawData.assign(nRawData.data() + rawDataIndex, + nRawData.data() + rawDataIndex + rawDataSize); + ParseRawData(); + + DeclareVar("", ""); +} + +ZDisplayList::ZDisplayList(std::vector nRawData, uint32_t nRawDataIndex, + int32_t rawDataSize, ZFile* nParent) + : ZDisplayList(nParent) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + fileData = nRawData; + rawDataIndex = nRawDataIndex; + name = StringHelper::Sprintf("DL_%06X", rawDataIndex); + dlistRawData.assign(nRawData.data() + rawDataIndex, + nRawData.data() + rawDataIndex + rawDataSize); + ParseRawData(); +} + +void ZDisplayList::ParseRawData() +{ + size_t numInstructions = dlistRawData.size() / 8; + + instructions.reserve(numInstructions); + + for (size_t i = 0; i < numInstructions; i++) + instructions.push_back(BitConverter::ToUInt64BE(dlistRawData, (i * 8))); +} + +Declaration* ZDisplayList::DeclareVar(const std::string& prefix, const std::string& bodyStr) +{ + return parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::Align8, GetRawDataSize(), + GetSourceTypeName(), name, 0, bodyStr, true); +} + +void ZDisplayList::ParseF3DZEX(F3DZEXOpcode opcode, uint64_t data, int32_t i, std::string prefix, + char* line) +{ + switch (opcode) + { + case F3DZEXOpcode::G_NOOP: + sprintf(line, "gsDPNoOpTag(0x%08lX),", data & 0xFFFFFFFF); + break; + case F3DZEXOpcode::G_DL: + Opcode_G_DL(data, prefix, line); + break; + case F3DZEXOpcode::G_MODIFYVTX: + Opcode_G_MODIFYVTX(data, line); + break; + case F3DZEXOpcode::G_CULLDL: + Opcode_G_CULLDL(data, line); + break; + case F3DZEXOpcode::G_TRI1: + Opcode_G_TRI1(data, line); + break; + case F3DZEXOpcode::G_TRI2: + Opcode_G_TRI2(data, line); + break; + case F3DZEXOpcode::G_QUAD: + { + int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2; + int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2; + int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2; + int32_t dd = ((data & 0x000000000000FFULL)) / 2; + sprintf(line, "gsSP1Quadrangle(%i, %i, %i, %i, 0),", aa, bb, cc, dd); + } + break; + case F3DZEXOpcode::G_VTX: + Opcode_G_VTX(data, line); + break; + case F3DZEXOpcode::G_SETTIMG: // HOTSPOT + Opcode_G_SETTIMG(data, prefix, line); + break; + case F3DZEXOpcode::G_GEOMETRYMODE: + { + int32_t cccccc = (data & 0x00FFFFFF00000000) >> 32; + int32_t ssssssss = (data & 0xFFFFFFFF); + std::string geoModeStr = "G_TEXTURE_ENABLE"; + + int32_t geoModeParam = ~cccccc; + + if (ssssssss != 0) + geoModeParam = ssssssss; + + if (geoModeParam & 0x00000001) + geoModeStr += " | G_ZBUFFER"; + + if (geoModeParam & 0x00000004) + geoModeStr += " | G_SHADE"; + + if (geoModeParam & 0x00000200) + geoModeStr += " | G_CULL_FRONT"; + + if (geoModeParam & 0x00000400) + geoModeStr += " | G_CULL_BACK"; + + if (geoModeParam & 0x00010000) + geoModeStr += " | G_FOG"; + + if (geoModeParam & 0x00020000) + geoModeStr += " | G_LIGHTING"; + + if (geoModeParam & 0x00040000) + geoModeStr += " | G_TEXTURE_GEN"; + + if (geoModeParam & 0x00080000) + geoModeStr += " | G_TEXTURE_GEN_LINEAR"; + + if (geoModeParam & 0x00200000) + geoModeStr += " | G_SHADING_SMOOTH"; + + if (geoModeParam & 0x00800000) + geoModeStr += " | G_CLIPPING"; + + if (ssssssss != 0) + { + if ((~cccccc & 0xFF000000) != 0) + sprintf(line, "gsSPSetGeometryMode(%s),", geoModeStr.c_str()); + else + sprintf(line, "gsSPLoadGeometryMode(%s),", geoModeStr.c_str()); + } + else + sprintf(line, "gsSPClearGeometryMode(%s),", geoModeStr.c_str()); + } + break; + case F3DZEXOpcode::G_SETPRIMCOLOR: + Opcode_G_SETPRIMCOLOR(data, line); + break; + case F3DZEXOpcode::G_SETOTHERMODE_L: + Opcode_G_SETOTHERMODE_L(data, line); + break; + case F3DZEXOpcode::G_SETOTHERMODE_H: + Opcode_G_SETOTHERMODE_H(data, line); + break; + case F3DZEXOpcode::G_SETTILE: + Opcode_G_SETTILE(data, line); + break; + case F3DZEXOpcode::G_SETTILESIZE: + Opcode_G_SETTILESIZE(data, prefix, line); + break; + case F3DZEXOpcode::G_LOADBLOCK: + Opcode_G_LOADBLOCK(data, line); + break; + case F3DZEXOpcode::G_TEXTURE: + Opcode_G_TEXTURE(data, line); + break; + case F3DZEXOpcode::G_RDPSETOTHERMODE: + { + int32_t hhhhhh = (data & 0x00FFFFFF00000000) >> 32; + int32_t llllllll = (data & 0x00000000FFFFFFFF); + + sprintf(line, "gsDPSetOtherMode(%i, %i),", hhhhhh, llllllll); + } + break; + case F3DZEXOpcode::G_POPMTX: + { + sprintf(line, "gsSPPopMatrix(%li),", data); + } + break; + case F3DZEXOpcode::G_LOADTLUT: + Opcode_G_LOADTLUT(data, prefix, line); + break; + case F3DZEXOpcode::G_SETENVCOLOR: + { + uint8_t r = (uint8_t)((data & 0xFF000000) >> 24); + uint8_t g = (uint8_t)((data & 0x00FF0000) >> 16); + uint8_t b = (uint8_t)((data & 0xFF00FF00) >> 8); + uint8_t a = (uint8_t)((data & 0x000000FF) >> 0); + + sprintf(line, "gsDPSetEnvColor(%i, %i, %i, %i),", r, g, b, a); + } + break; + case F3DZEXOpcode::G_SETCOMBINE: + { + Opcode_G_SETCOMBINE(data, line); + } + break; + case F3DZEXOpcode::G_RDPLOADSYNC: + sprintf(line, "gsDPLoadSync(),"); + break; + case F3DZEXOpcode::G_RDPPIPESYNC: + sprintf(line, "gsDPPipeSync(),"); + break; + case F3DZEXOpcode::G_RDPTILESYNC: + sprintf(line, "gsDPTileSync(),"); + break; + case F3DZEXOpcode::G_RDPFULLSYNC: + sprintf(line, "gsDPFullSync(),"); + break; + case F3DZEXOpcode::G_ENDDL: + Opcode_G_ENDDL(prefix, line); + break; + case F3DZEXOpcode::G_RDPHALF_1: + { + uint64_t data2 = instructions[i + 1]; + uint32_t h = (data & 0xFFFFFFFF); + F3DZEXOpcode opcode2 = (F3DZEXOpcode)(instructions[i + 1] >> 56); + + if (opcode2 == F3DZEXOpcode::G_BRANCH_Z) + { + uint32_t a = (data2 & 0x00FFF00000000000) >> 44; + uint32_t b = (data2 & 0x00000FFF00000000) >> 32; + uint32_t z = (data2 & 0x00000000FFFFFFFF) >> 0; + + // sprintf(line, "gsDPWord(%i, 0),", h); + sprintf(line, "gsSPBranchLessZraw(%sDlist0x%06X, 0x%02X, 0x%02X),", prefix.c_str(), + h & 0x00FFFFFF, (a / 5) | (b / 2), z); + + ZDisplayList* nList = + new ZDisplayList(fileData, h & 0x00FFFFFF, + GetDListLength(fileData, h & 0x00FFFFFF, dListType), parent); + nList->scene = scene; + otherDLists.push_back(nList); + + i++; + } + } + break; + case F3DZEXOpcode::G_MTX: + Opcode_G_MTX(data, line); + break; + default: + sprintf(line, "// Opcode 0x%02X unimplemented!", (uint32_t)opcode); + break; + } +} + +void ZDisplayList::ParseF3DEX(F3DEXOpcode opcode, uint64_t data, std::string prefix, char* line) +{ + switch (opcode) + { + case F3DEXOpcode::G_NOOP: + sprintf(line, "gsDPNoOpTag(0x%08lX),", data & 0xFFFFFFFF); + break; + case F3DEXOpcode::G_VTX: + Opcode_G_VTX(data, line); + break; + case F3DEXOpcode::G_DL: + Opcode_G_DL(data, prefix, line); + break; + case F3DEXOpcode::G_CULLDL: + Opcode_G_CULLDL(data, line); + break; + case F3DEXOpcode::G_MODIFYVTX: + Opcode_G_MODIFYVTX(data, line); + break; + case F3DEXOpcode::G_MTX: + Opcode_G_MTX(data, line); + break; + case F3DEXOpcode::G_TRI1: + Opcode_G_TRI1(data, line); + break; + case F3DEXOpcode::G_TRI2: + Opcode_G_TRI2(data, line); + break; + case F3DEXOpcode::G_ENDDL: + Opcode_G_ENDDL(prefix, line); + break; + case F3DEXOpcode::G_RDPLOADSYNC: + sprintf(line, "gsDPLoadSync(),"); + break; + case F3DEXOpcode::G_RDPPIPESYNC: + sprintf(line, "gsDPPipeSync(),"); + break; + case F3DEXOpcode::G_RDPTILESYNC: + sprintf(line, "gsDPTileSync(),"); + break; + case F3DEXOpcode::G_RDPFULLSYNC: + sprintf(line, "gsDPFullSync(),"); + break; + case F3DEXOpcode::G_TEXTURE: + Opcode_G_TEXTURE(data, line); + break; + case F3DEXOpcode::G_SETTIMG: + Opcode_G_SETTIMG(data, prefix, line); + break; + case F3DEXOpcode::G_SETTILE: + Opcode_G_SETTILE(data, line); + break; + case F3DEXOpcode::G_SETTILESIZE: + Opcode_G_SETTILESIZE(data, prefix, line); + break; + case F3DEXOpcode::G_LOADBLOCK: + Opcode_G_LOADBLOCK(data, line); + break; + case F3DEXOpcode::G_SETCOMBINE: + Opcode_G_SETCOMBINE(data, line); + break; + case F3DEXOpcode::G_SETPRIMCOLOR: + Opcode_G_SETPRIMCOLOR(data, line); + break; + case F3DEXOpcode::G_SETOTHERMODE_L: + Opcode_G_SETOTHERMODE_L(data, line); + break; + case F3DEXOpcode::G_SETOTHERMODE_H: + Opcode_G_SETOTHERMODE_H(data, line); + break; + case F3DEXOpcode::G_LOADTLUT: + Opcode_G_LOADTLUT(data, prefix, line); + break; + case F3DEXOpcode::G_CLEARGEOMETRYMODE: + case F3DEXOpcode::G_SETGEOMETRYMODE: + { + int32_t cccccc = (data & 0x00FFFFFF00000000) >> 32; + int32_t ssssssss = (data & 0xFFFFFFFF); + std::string geoModeStr = "G_TEXTURE_ENABLE"; + + int32_t geoModeParam = ~cccccc; + + if (ssssssss != 0) + geoModeParam = ssssssss; + + if (geoModeParam & 0x00000002) + geoModeStr += " | G_TEXTURE_ENABLE"; + + if (geoModeParam & 0x00000200) + geoModeStr += " | G_SHADING_SMOOTH"; + + if (geoModeParam & 0x00001000) + geoModeStr += " | G_CULL_FRONT"; + + if (geoModeParam & 0x00002000) + geoModeStr += " | G_CULL_BACK"; + + if (geoModeParam & 0x00000001) + geoModeStr += " | G_ZBUFFER"; + + if (geoModeParam & 0x00000004) + geoModeStr += " | G_SHADE"; + + if (geoModeParam & 0x00010000) + geoModeStr += " | G_FOG"; + + if (geoModeParam & 0x00020000) + geoModeStr += " | G_LIGHTING"; + + if (geoModeParam & 0x00040000) + geoModeStr += " | G_TEXTURE_GEN"; + + if (geoModeParam & 0x00080000) + geoModeStr += " | G_TEXTURE_GEN_LINEAR"; + + if (geoModeParam & 0x00800000) + geoModeStr += " | G_CLIPPING"; + + if (opcode == F3DEXOpcode::G_SETGEOMETRYMODE) + sprintf(line, "gsSPSetGeometryMode(%s),", geoModeStr.c_str()); + else + sprintf(line, "gsSPClearGeometryMode(%s),", geoModeStr.c_str()); + } + break; + default: + sprintf(line, "// Opcode 0x%02X unimplemented!", (uint32_t)opcode); + break; + } +} + +int32_t ZDisplayList::GetDListLength(std::vector rawData, uint32_t rawDataIndex, + DListType dListType) +{ + int32_t i = 0; + + uint8_t endDLOpcode; + + if (dListType == DListType::F3DZEX) + endDLOpcode = (uint8_t)F3DZEXOpcode::G_ENDDL; + else + endDLOpcode = (uint8_t)F3DEXOpcode::G_ENDDL; + + while (true) + { + uint8_t opcode = rawData.at(rawDataIndex + (i * 8)); + i++; + + if (opcode == endDLOpcode) + return i * 8; + } +} + +bool ZDisplayList::SequenceCheck(std::vector sequence, int32_t startIndex) +{ + bool success = true; + + for (size_t j = 0; j < sequence.size(); j++) + { + F3DZEXOpcode opcode = (F3DZEXOpcode)(instructions[startIndex + j] >> 56); + + if (sequence[j] != opcode) + { + success = false; + break; + } + } + + if (success) + return true; + + return false; +} + +int32_t ZDisplayList::OptimizationChecks(int32_t startIndex, std::string& output, + std::string prefix) +{ + int32_t result = -1; + + result = OptimizationCheck_LoadTextureBlock(startIndex, output, prefix); + + if (result != -1) + return result; + + return -1; +} + +int32_t ZDisplayList::OptimizationCheck_LoadTextureBlock(int32_t startIndex, std::string& output, + std::string prefix) +{ + if (scene == nullptr) + { + return -1; + } + + std::vector sequence = {F3DZEXOpcode::G_SETTIMG, F3DZEXOpcode::G_SETTILE, + F3DZEXOpcode::G_RDPLOADSYNC, F3DZEXOpcode::G_LOADBLOCK, + F3DZEXOpcode::G_RDPPIPESYNC, F3DZEXOpcode::G_SETTILE, + F3DZEXOpcode::G_SETTILESIZE}; + + bool seqRes = SequenceCheck(sequence, startIndex); + + if (seqRes) + { + // gsDPLoadTextureBlock(texAddr, fmt, siz, width, height, pal, cms, cmt, masks, maskt, + // shifts, shiftt) gsDPLoadMultiBlock(texAddr, tmem, rtile, fmt, siz, width, height, pal, + // cms, cmt, masks, maskt, shifts, shiftt) gsDPLoadTextureBlock_4b(texAddr, fmt, width, + // height, pal, cms, cmt, masks, maskt, shifts, shiftt) gsDPLoadMultiBlock_4b(texAddr, tmem, + // rtile, fmt, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) + + uint32_t texAddr, tmem, rtile, fmt, siz, sizB, width, height, width2, height2, pal, cms, + cmt, masks, maskt, shifts, shiftt; + std::string texStr = ""; + + // gsDPSetTextureImage + { + uint64_t data = instructions[startIndex + 0]; + + int32_t __ = (data & 0x00FF000000000000) >> 48; + // int32_t www = (data & 0x00000FFF00000000) >> 32; + + fmt = (__ & 0xE0) >> 5; + siz = (__ & 0x18) >> 3; + texAddr = Seg2Filespace(data, parent->baseAddress); + int32_t segmentNumber = GETSEGNUM(data); + + lastTexSeg = segmentNumber; + + ZFile* auxParent = parent; + if (parent->segment != segmentNumber && Globals::Instance->HasSegment(segmentNumber)) + auxParent = Globals::Instance->segmentRefFiles.at(segmentNumber); + + Declaration* decl = auxParent->GetDeclaration(texAddr); + if (Globals::Instance->HasSegment(segmentNumber) && decl != nullptr) + texStr = decl->varName; + else if (lastTexture != nullptr) + texStr = lastTexture->GetName(); + else + texStr = auxParent->GetDeclarationPtrName(data & 0xFFFFFFFF); + } + + // gsDPSetTile + { + uint64_t data = instructions[startIndex + 1]; + + tmem = + (data & 0b0000000000000000111111111111111100000000000000000000000000000000) >> 32; + + cmt = (data & 0b0000000000000000000000000000000000000000000011000000000000000000) >> 18; + maskt = + (data & 0b0000000000000000000000000000000000000000000000111100000000000000) >> 14; + shiftt = + (data & 0b0000000000000000000000000000000000000000000000000011110000000000) >> 10; + cms = (data & 0b0000000000000000000000000000000000000000000000000000001100000000) >> 8; + masks = + (data & 0b0000000000000000000000000000000000000000000000000000000011110000) >> 4; + shifts = (data & 0b0000000000000000000000000000000000000000000000000000000000001111); + + // sprintf(line, "gsDPSetTile(%s, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + // fmtTbl[fff].c_str(), sizTbl[ii].c_str(), nnnnnnnnn, mmmmmmmmm, ttt, pppp, cc, aaaa, + // ssss, dd, bbbb, uuuu); + } + + // gsDPLoadSync + + // gsDPLoadBlock + + // gsDPPipeSync + + // gsDPSetTile + { + uint64_t data = instructions[startIndex + 5]; + int32_t __ = (data & 0x00FF000000000000) >> 48; + pal = (data & 0b0000000000000000000000000000000000000000111100000000000000000000) >> 20; + // siz = (__ & 0x18) >> 3; + rtile = + (data & 0b0000000000000000000000000000000011111111000000000000000000000000) >> 24; + sizB = (__ & 0x18) >> 3; + } + + // gsDPSetTileSize + { + uint64_t data = instructions[startIndex + 6]; + int32_t uuu = (data & 0x0000000000FFF000) >> 12; + int32_t vvv = (data & 0x0000000000000FFF); + + int32_t shiftAmtW = 2; + int32_t shiftAmtH = 2; + + if (sizB == (int32_t)F3DZEXTexSizes::G_IM_SIZ_8b && + fmt == (int32_t)F3DZEXTexFormats::G_IM_FMT_IA) + shiftAmtW = 3; + + if (sizB == (int32_t)F3DZEXTexSizes::G_IM_SIZ_4b) + shiftAmtW = 3; + + if (sizB == (int32_t)F3DZEXTexSizes::G_IM_SIZ_4b && + fmt == (int32_t)F3DZEXTexFormats::G_IM_FMT_IA) + shiftAmtH = 3; + + width = (uuu >> shiftAmtW) + 1; + height = (vvv >> shiftAmtH) + 1; + + width2 = (uuu >> 2) + 1; + height2 = (vvv >> 2) + 1; + } + + std::string fmtTbl[] = {"G_IM_FMT_RGBA", "G_IM_FMT_YUV", "G_IM_FMT_CI", "G_IM_FMT_IA", + "G_IM_FMT_I"}; + std::string sizTbl[] = {"G_IM_SIZ_4b", "G_IM_SIZ_8b", "G_IM_SIZ_16b", "G_IM_SIZ_32b"}; + + // output += StringHelper::Sprintf("gsDPLoadTextureBlock(%s, %s, %s, %i, %i, %i, %i, %i, %i, + // %i, %i, %i),", texStr.c_str(), fmtTbl[fmt].c_str(), sizTbl[siz].c_str(), width, height, + // pal, cms, cmt, masks, maskt, shifts, shiftt); + + if (siz == 2 && sizB == 0) + { + if (tmem != 0) + output += StringHelper::Sprintf( + "gsDPLoadMultiBlock_4b(%s, %i, %i, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + texStr.c_str(), tmem, rtile, fmtTbl[fmt].c_str(), width2, height2, pal, cms, + cmt, masks, maskt, shifts, shiftt); + else + output += StringHelper::Sprintf( + "gsDPLoadTextureBlock_4b(%s, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + texStr.c_str(), fmtTbl[fmt].c_str(), width2, height2, pal, cms, cmt, masks, + maskt, shifts, shiftt); + } + else if (siz == 2 && sizB != 0) + { + if (tmem != 0) + output += StringHelper::Sprintf( + "gsDPLoadMultiBlock(%s, %i, %i, %s, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + texStr.c_str(), tmem, rtile, fmtTbl[fmt].c_str(), sizTbl[sizB].c_str(), width2, + height2, pal, cms, cmt, masks, maskt, shifts, shiftt); + else + output += StringHelper::Sprintf( + "gsDPLoadTextureBlock(%s, %s, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + texStr.c_str(), fmtTbl[fmt].c_str(), sizTbl[sizB].c_str(), width2, height2, pal, + cms, cmt, masks, maskt, shifts, shiftt); + } + else + { + if (siz != sizB) + { + lastTexAddr = texAddr; + lastTexFmt = (F3DZEXTexFormats)fmt; + lastTexWidth = width; + lastTexHeight = height; + lastTexSiz = (F3DZEXTexSizes)siz; + lastTexLoaded = true; + + TextureGenCheck(prefix); + + return -1; + } + + output += StringHelper::Sprintf( + "gsDPLoadMultiBlock(%s, %i, %i, %s, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + texStr.c_str(), tmem, rtile, fmtTbl[fmt].c_str(), sizTbl[siz].c_str(), width, + height, pal, cms, cmt, masks, maskt, shifts, shiftt); + } + + lastTexAddr = texAddr; + lastTexFmt = (F3DZEXTexFormats)fmt; + lastTexWidth = width; + lastTexHeight = height; + lastTexSiz = (F3DZEXTexSizes)siz; + lastTexLoaded = true; + + TextureGenCheck(prefix); + + return (int32_t)sequence.size(); + } + + return -1; +} + +void ZDisplayList::Opcode_G_DL(uint64_t data, std::string prefix, char* line) +{ + int32_t pp = (data & 0x00FF000000000000) >> 56; + int32_t segNum = GETSEGNUM(data); + + Declaration* dListDecl = nullptr; + + if (parent != nullptr) + dListDecl = parent->GetDeclaration(GETSEGOFFSET(data)); + + if (pp != 0) + { + if (!Globals::Instance->HasSegment(segNum)) + sprintf(line, "gsSPBranchList(0x%08lX),", data & 0xFFFFFFFF); + else if (dListDecl != nullptr) + sprintf(line, "gsSPBranchList(%s),", dListDecl->varName.c_str()); + else + sprintf(line, "gsSPBranchList(%sDlist0x%06lX),", prefix.c_str(), GETSEGOFFSET(data)); + } + else + { + if (!Globals::Instance->HasSegment(segNum)) + sprintf(line, "gsSPDisplayList(0x%08lX),", data & 0xFFFFFFFF); + else if (dListDecl != nullptr) + sprintf(line, "gsSPDisplayList(%s),", dListDecl->varName.c_str()); + else + sprintf(line, "gsSPDisplayList(%sDlist0x%06lX),", prefix.c_str(), GETSEGOFFSET(data)); + } + + // if (segNum == 8 || segNum == 9 || segNum == 10 || segNum == 11 || segNum == 12 || segNum == + // 13) // Used for runtime-generated display lists + if (!Globals::Instance->HasSegment(segNum)) + { + if (pp != 0) + sprintf(line, "gsSPBranchList(0x%08lX),", data & 0xFFFFFFFF); + else + sprintf(line, "gsSPDisplayList(0x%08lX),", data & 0xFFFFFFFF); + } + else + { + ZDisplayList* nList = + new ZDisplayList(fileData, GETSEGOFFSET(data), + GetDListLength(fileData, GETSEGOFFSET(data), dListType), parent); + + // if (scene != nullptr) + { + nList->scene = scene; + otherDLists.push_back(nList); + } + // else + //{ + // nList->SetName(StringHelper::Sprintf("%sDlist0x%06lX", prefix.c_str(), + // SEG2FILESPACE(data))); nList->GetSourceOutputCode(prefix); + //} + } +} + +void ZDisplayList::Opcode_G_MODIFYVTX(uint64_t data, char* line) +{ + int32_t ww = (data & 0x00FF000000000000ULL) >> 48; + int32_t nnnn = (data & 0x0000FFFF00000000ULL) >> 32; + int32_t vvvvvvvv = (data & 0x00000000FFFFFFFFULL); + + sprintf(line, "gsSPModifyVertex(%i, %i, %i),", nnnn / 2, ww, vvvvvvvv); +} + +void ZDisplayList::Opcode_G_CULLDL(uint64_t data, char* line) +{ + int32_t vvvv = (data & 0xFFFF00000000) >> 32; + int32_t wwww = (data & 0x0000FFFF); + + sprintf(line, "gsSPCullDisplayList(%i, %i),", vvvv / 2, wwww / 2); +} + +void ZDisplayList::Opcode_G_TRI1(uint64_t data, char* line) +{ + if (dListType == DListType::F3DZEX) + { + int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2; + int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2; + int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2; + sprintf(line, "gsSP1Triangle(%i, %i, %i, 0),", aa, bb, cc); + } + else + { + int32_t aa = ((data & 0x0000000000FF0000ULL) >> 16) / 2; + int32_t bb = ((data & 0x000000000000FF00ULL) >> 8) / 2; + int32_t cc = ((data & 0x00000000000000FFULL) >> 0) / 2; + sprintf(line, "gsSP1Triangle(%i, %i, %i, 0),", aa, bb, cc); + } +} + +void ZDisplayList::Opcode_G_TRI2(uint64_t data, char* line) +{ + int32_t aa = ((data & 0x00FF000000000000ULL) >> 48) / 2; + int32_t bb = ((data & 0x0000FF0000000000ULL) >> 40) / 2; + int32_t cc = ((data & 0x000000FF00000000ULL) >> 32) / 2; + int32_t dd = ((data & 0x00000000FF0000ULL) >> 16) / 2; + int32_t ee = ((data & 0x0000000000FF00ULL) >> 8) / 2; + int32_t ff = ((data & 0x000000000000FFULL) >> 0) / 2; + sprintf(line, "gsSP2Triangles(%i, %i, %i, 0, %i, %i, %i, 0),", aa, bb, cc, dd, ee, ff); +} + +void ZDisplayList::Opcode_G_MTX(uint64_t data, char* line) +{ + uint32_t pp = 0; + uint32_t mm = (data & 0x00000000FFFFFFFF); + bool push = false; + bool load = false; + bool projection = false; + + if (dListType == DListType::F3DEX) + pp = (data & 0x00FF000000000000) >> 48; + else + pp = (data & 0x000000FF00000000) >> 32; + + std::string matrixRef = ""; + + if (Globals::Instance->symbolMap.find(mm) != Globals::Instance->symbolMap.end()) + matrixRef = StringHelper::Sprintf("&%s", Globals::Instance->symbolMap[mm].c_str()); + else + matrixRef = StringHelper::Sprintf("0x%08X", mm); + + pp ^= 0x01; + + if (pp & 0x01) + push = true; + + if (pp & 0x02) + load = true; + + if (pp & 0x04) + projection = true; + + sprintf(line, "gsSPMatrix(%s, %s | %s | %s),", matrixRef.c_str(), + projection ? "G_MTX_PROJECTION" : "G_MTX_MODELVIEW", + push ? "G_MTX_PUSH" : "G_MTX_NOPUSH", load ? "G_MTX_LOAD" : "G_MTX_MUL"); +} + +void ZDisplayList::Opcode_G_VTX(uint64_t data, char* line) +{ + int32_t nn = (data & 0x000FF00000000000ULL) >> 44; + int32_t aa = (data & 0x000000FF00000000ULL) >> 32; + + uint32_t vtxAddr = Seg2Filespace(data, parent->baseAddress); + + if (dListType == DListType::F3DZEX) + sprintf(line, "gsSPVertex(@r, %i, %i),", nn, ((aa >> 1) - nn)); + else + { + uint32_t hi = data >> 32; + +#define _SHIFTR(v, s, w) (((uint32_t)v >> s) & ((0x01 << w) - 1)) + + nn = _SHIFTR(hi, 10, 6); + + sprintf(line, "gsSPVertex(@r, %i, %i),", nn, _SHIFTR(hi, 17, 7)); + } + + // Hack: Don't extract vertices from a unknown segment. + if (!Globals::Instance->HasSegment(GETSEGNUM(data))) + { + segptr_t segmented = data & 0xFFFFFFFF; + references.push_back(segmented); + parent->AddDeclaration(segmented, DeclarationAlignment::Align16, 16, "Vtx", + StringHelper::Sprintf("0x%08X", segmented), ""); + return; + } + references.push_back(vtxAddr); + + { + uint32_t currentPtr = Seg2Filespace(data, parent->baseAddress); + + // Check for vertex intersections from other display lists + // TODO: These two could probably be condenced to one... + if (parent->GetDeclarationRanged(vtxAddr + (nn * 16)) != nullptr) + { + // Declaration* decl = parent->GetDeclarationRanged(vtxAddr + (nn * 16)); + uint32_t addr = parent->GetDeclarationRangedAddress(vtxAddr + (nn * 16)); + int32_t diff = addr - vtxAddr; + if (diff > 0) + nn = diff / 16; + else + nn = 0; + } + + if (parent->GetDeclarationRanged(vtxAddr) != nullptr) + { + // Declaration* decl = parent->GetDeclarationRanged(vtxAddr); + uint32_t addr = parent->GetDeclarationRangedAddress(vtxAddr); + int32_t diff = addr - vtxAddr; + if (diff > 0) + nn = diff / 16; + else + nn = 0; + } + + if (nn > 0) + { + std::vector vtxList; + vtxList.reserve(nn); + + for (int32_t i = 0; i < nn; i++) + { + ZVtx vtx(parent); + vtx.SetRawData(fileData); + vtx.SetRawDataIndex(currentPtr); + vtx.ParseRawData(); + vtxList.push_back(vtx); + + currentPtr += 16; + } + + vertices[vtxAddr] = vtxList; + } + } +} + +void ZDisplayList::Opcode_G_TEXTURE(uint64_t data, char* line) +{ + int32_t ____ = (data & 0x0000FFFF00000000) >> 32; + int32_t ssss = (data & 0x00000000FFFF0000) >> 16; + int32_t tttt = (data & 0x000000000000FFFF); + int32_t lll = (____ & 0x3800) >> 11; + int32_t ddd = (____ & 0x700) >> 8; + int32_t nnnnnnn = 0; + + if (dListType == DListType::F3DEX) + nnnnnnn = (____ & 0xFF); + else + nnnnnnn = (____ & 0xFE) >> 1; + + sprintf(line, "gsSPTexture(%i, %i, %i, %i, %s),", ssss, tttt, lll, ddd, + nnnnnnn == 1 ? "G_ON" : "G_OFF"); +} + +void ZDisplayList::Opcode_G_SETTIMG(uint64_t data, std::string prefix, char* line) +{ + int32_t __ = (data & 0x00FF000000000000) >> 48; + int32_t www = (data & 0x00000FFF00000000) >> 32; + std::string fmtTbl[] = {"G_IM_FMT_RGBA", "G_IM_FMT_YUV", "G_IM_FMT_CI", "G_IM_FMT_IA", + "G_IM_FMT_I"}; + std::string sizTbl[] = {"G_IM_SIZ_4b", "G_IM_SIZ_8b", "G_IM_SIZ_16b", "G_IM_SIZ_32b"}; + + uint32_t fmt = (__ & 0xE0) >> 5; + uint32_t siz = (__ & 0x18) >> 3; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("TextureGenCheck G_SETTIMG\n"); + + TextureGenCheck(prefix); // HOTSPOT + + lastTexFmt = (F3DZEXTexFormats)fmt; + lastTexSiz = (F3DZEXTexSizes)siz; + lastTexSeg = data; + lastTexAddr = Seg2Filespace(data, parent->baseAddress); + + int32_t segmentNumber = GETSEGNUM(data); + + if (segmentNumber != 2) + { + char texStr[2048]; + int32_t texAddress = Seg2Filespace(data, parent->baseAddress); + Declaration* texDecl = nullptr; + + if (parent != nullptr) + { + if (Globals::Instance->HasSegment(segmentNumber)) + texDecl = parent->GetDeclaration(texAddress); + else + texDecl = parent->GetDeclaration(data); + } + + if (texDecl != nullptr) + sprintf(texStr, "%s", texDecl->varName.c_str()); + else if (data != 0 && Globals::Instance->HasSegment(segmentNumber)) + sprintf(texStr, "%sTex_%06X", prefix.c_str(), texAddress); + else + { + sprintf(texStr, "0x%08lX", data & 0xFFFFFFFF); + } + + sprintf(line, "gsDPSetTextureImage(%s, %s, %i, %s),", fmtTbl[fmt].c_str(), + sizTbl[siz].c_str(), www + 1, texStr); + } + else + { + sprintf(line, "gsDPSetTextureImage(%s, %s, %i, %sTex_%06lX),", fmtTbl[fmt].c_str(), + sizTbl[siz].c_str(), www + 1, scene->GetName().c_str(), GETSEGOFFSET(data)); + } +} + +void ZDisplayList::Opcode_G_SETTILE(uint64_t data, char* line) +{ + int32_t fff = (data & 0b0000000011100000000000000000000000000000000000000000000000000000) >> 53; + int32_t ii = (data & 0b0000000000011000000000000000000000000000000000000000000000000000) >> 51; + int32_t nnnnnnnnn = + (data & 0b0000000000000011111111100000000000000000000000000000000000000000) >> 41; + int32_t mmmmmmmmm = + (data & 0b0000000000000000000000011111111100000000000000000000000000000000) >> 32; + int32_t ttt = (data & 0b0000000000000000000000000000000000000111000000000000000000000000) >> 24; + int32_t pppp = + (data & 0b0000000000000000000000000000000000000000111100000000000000000000) >> 20; + int32_t cc = (data & 0b0000000000000000000000000000000000000000000011000000000000000000) >> 18; + int32_t aaaa = + (data & 0b0000000000000000000000000000000000000000000000111100000000000000) >> 14; + int32_t ssss = + (data & 0b0000000000000000000000000000000000000000000000000011110000000000) >> 10; + int32_t dd = (data & 0b0000000000000000000000000000000000000000000000000000001100000000) >> 8; + int32_t bbbb = (data & 0b0000000000000000000000000000000000000000000000000000000011110000) >> 4; + int32_t uuuu = (data & 0b0000000000000000000000000000000000000000000000000000000000001111); + + std::string fmtTbl[] = {"G_IM_FMT_RGBA", "G_IM_FMT_YUV", "G_IM_FMT_CI", "G_IM_FMT_IA", + "G_IM_FMT_I"}; + std::string sizTbl[] = {"G_IM_SIZ_4b", "G_IM_SIZ_8b", "G_IM_SIZ_16b", "G_IM_SIZ_32b"}; + + if (fff == (int32_t)F3DZEXTexFormats::G_IM_FMT_CI) + lastCISiz = (F3DZEXTexSizes)ii; + + lastTexSizTest = (F3DZEXTexSizes)ii; + + sprintf(line, "gsDPSetTile(%s, %s, %i, %i, %i, %i, %i, %i, %i, %i, %i, %i),", + fmtTbl[fff].c_str(), sizTbl[ii].c_str(), nnnnnnnnn, mmmmmmmmm, ttt, pppp, cc, aaaa, + ssss, dd, bbbb, uuuu); +} + +void ZDisplayList::Opcode_G_SETTILESIZE(uint64_t data, std::string prefix, char* line) +{ + int32_t sss = (data & 0x00FFF00000000000) >> 44; + int32_t ttt = (data & 0x00000FFF00000000) >> 32; + int32_t uuu = (data & 0x0000000000FFF000) >> 12; + int32_t vvv = (data & 0x0000000000000FFF); + int32_t i = (data & 0x000000000F000000) >> 24; + + int32_t shiftAmtW = 2; + int32_t shiftAmtH = 2; + + if (lastTexSizTest == F3DZEXTexSizes::G_IM_SIZ_8b && + lastTexFmt == F3DZEXTexFormats::G_IM_FMT_IA) + shiftAmtW = 3; + + // if (lastTexFmt == F3DZEXTexFormats::G_IM_FMT_I || lastTexFmt == + // F3DZEXTexFormats::G_IM_FMT_CI) + if (lastTexSizTest == F3DZEXTexSizes::G_IM_SIZ_4b) + shiftAmtW = 3; + + if (lastTexSizTest == F3DZEXTexSizes::G_IM_SIZ_4b && + lastTexFmt == F3DZEXTexFormats::G_IM_FMT_IA) + shiftAmtH = 3; + + lastTexWidth = (uuu >> shiftAmtW) + 1; + lastTexHeight = (vvv >> shiftAmtH) + 1; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("lastTexWidth: %i lastTexHeight: %i, lastTexSizTest: 0x%x, lastTexFmt: 0x%x\n", + lastTexWidth, lastTexHeight, (uint32_t)lastTexSizTest, (uint32_t)lastTexFmt); + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("TextureGenCheck G_SETTILESIZE\n"); + + TextureGenCheck(prefix); + + sprintf(line, "gsDPSetTileSize(%i, %i, %i, %i, %i),", i, sss, ttt, uuu, vvv); +} + +void ZDisplayList::Opcode_G_LOADBLOCK(uint64_t data, char* line) +{ + int32_t sss = (data & 0x00FFF00000000000) >> 48; + int32_t ttt = (data & 0x00000FFF00000000) >> 36; + int32_t i = (data & 0x000000000F000000) >> 24; + int32_t xxx = (data & 0x0000000000FFF000) >> 12; + int32_t ddd = (data & 0x0000000000000FFF); + + lastTexLoaded = true; + + sprintf(line, "gsDPLoadBlock(%i, %i, %i, %i, %i),", i, sss, ttt, xxx, ddd); +} + +void ZDisplayList::Opcode_G_SETCOMBINE(uint64_t data, char* line) +{ + int32_t a0 = (data & 0b000000011110000000000000000000000000000000000000000000000000000) >> 52; + int32_t c0 = (data & 0b000000000001111100000000000000000000000000000000000000000000000) >> 47; + int32_t aa0 = (data & 0b00000000000000011100000000000000000000000000000000000000000000) >> 44; + int32_t ac0 = (data & 0b00000000000000000011100000000000000000000000000000000000000000) >> 41; + int32_t a1 = (data & 0b000000000000000000000011110000000000000000000000000000000000000) >> 37; + int32_t c1 = (data & 0b000000000000000000000000001111100000000000000000000000000000000) >> 32; + int32_t b0 = (data & 0b000000000000000000000000000000011110000000000000000000000000000) >> 28; + int32_t b1 = (data & 0b000000000000000000000000000000000001111000000000000000000000000) >> 24; + int32_t aa1 = (data & 0b00000000000000000000000000000000000000111000000000000000000000) >> 21; + int32_t ac1 = (data & 0b00000000000000000000000000000000000000000111000000000000000000) >> 18; + int32_t d0 = (data & 0b000000000000000000000000000000000000000000000111000000000000000) >> 15; + int32_t ab0 = (data & 0b00000000000000000000000000000000000000000000000111000000000000) >> 12; + int32_t ad0 = (data & 0b00000000000000000000000000000000000000000000000000111000000000) >> 9; + int32_t d1 = (data & 0b000000000000000000000000000000000000000000000000000000111000000) >> 6; + int32_t ab1 = (data & 0b00000000000000000000000000000000000000000000000000000000111000) >> 3; + int32_t ad1 = (data & 0b00000000000000000000000000000000000000000000000000000000000111) >> 0; + + std::string modesA[] = {"COMBINED", "TEXEL0", "TEXEL1", "PRIMITIVE", "SHADE", "ENVIRONMENT", + "1", "NOISE", "0", "9", "10", "11", + "12", "13", "14", "0"}; + std::string modesB[] = {"COMBINED", "TEXEL0", "TEXEL1", "PRIMITIVE", "SHADE", "ENVIRONMENT", + "CENTER", "K4", "8", "9", "10", "11", + "12", "13", "14", "0"}; + std::string modesC[] = {"COMBINED", + "TEXEL0", + "TEXEL1", + "PRIMITIVE", + "SHADE", + "ENVIRONMENT", + "1", + "COMBINED_ALPHA", + "TEXEL0_ALPHA", + "TEXEL1_ALPHA", + "PRIMITIVE_ALPHA", + "SHADE_ALPHA", + "ENV_ALPHA", + "LOD_FRACTION", + "PRIM_LOD_FRAC", + "K5", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "0"}; + std::string modesD[] = {"COMBINED", "TEXEL0", "TEXEL1", "PRIMITIVE", + "SHADE", "ENVIRONMENT", "1", "0"}; + + std::string modes2[] = {"COMBINED", "TEXEL0", "TEXEL1", "PRIMITIVE", + "SHADE", "ENVIRONMENT", "1", "0"}; + std::string modes2C[] = {"LOD_FRACTION", "TEXEL0", "TEXEL1", "PRIMITIVE", + "SHADE", "ENVIRONMENT", "PRIM_LOD_FRAC", "0"}; + + sprintf(line, + "gsDPSetCombineLERP(%s, %s, %s, %s, %s, %s, %s, %s,\n %s, %s, " + "%s, %s, %s, %s, %s, %s),", + modesA[a0].c_str(), modesB[b0].c_str(), modesC[c0].c_str(), modesD[d0].c_str(), + modes2[aa0].c_str(), modes2[ab0].c_str(), modes2C[ac0].c_str(), modes2[ad0].c_str(), + modesA[a1].c_str(), modesB[b1].c_str(), modesC[c1].c_str(), modesD[d1].c_str(), + modes2[aa1].c_str(), modes2[ab1].c_str(), modes2C[ac1].c_str(), modes2[ad1].c_str()); +} + +void ZDisplayList::Opcode_G_SETPRIMCOLOR(uint64_t data, char* line) +{ + int32_t mm = (data & 0x0000FF0000000000) >> 40; + int32_t ff = (data & 0x000000FF00000000) >> 32; + int32_t rr = (data & 0x00000000FF000000) >> 24; + int32_t gg = (data & 0x0000000000FF0000) >> 16; + int32_t bb = (data & 0x000000000000FF00) >> 8; + int32_t aa = (data & 0x00000000000000FF) >> 0; + sprintf(line, "gsDPSetPrimColor(%i, %i, %i, %i, %i, %i),", mm, ff, rr, gg, bb, aa); +} + +void ZDisplayList::Opcode_F3DEX_G_SETOTHERMODE_L(uint64_t data, char* line) +{ + int32_t sft = (data & 0x0000FF0000000000) >> 40; + int32_t len = (data & 0x000000FF00000000) >> 32; + int32_t dat = (data & 0xFFFFFFFF); + + // TODO: Output the correct render modes in data + + sprintf(line, "gsSPSetOtherMode(0xE2, %i, %i, 0x%08X),", sft, len, dat); +} + +void ZDisplayList::Opcode_G_SETOTHERMODE_L(uint64_t data, char* line) +{ + int32_t dd = (data & 0xFFFFFFFF); + int32_t sft = 0; + int32_t len = 0; + + if (dListType == DListType::F3DEX) + { + sft = (data & 0x0000FF0000000000) >> 40; + len = (data & 0x000000FF00000000) >> 32; + } + else + { + int32_t ss = (data & 0x0000FF0000000000) >> 40; + len = ((data & 0x000000FF00000000) >> 32) + 1; + sft = 32 - (len)-ss; + } + + if (sft == G_MDSFT_RENDERMODE) + { + uint32_t mode1 = (dd & 0xCCCC0000) >> 0; + uint32_t mode2 = (dd & 0x3333FFFF); + + // TODO: Jesus Christ This is Messy + + uint32_t tblA[] = {G_RM_FOG_SHADE_A, + G_RM_FOG_PRIM_A, + G_RM_PASS, + G_RM_AA_ZB_OPA_SURF, + G_RM_AA_ZB_XLU_SURF, + G_RM_AA_ZB_OPA_DECAL, + G_RM_AA_ZB_XLU_DECAL, + G_RM_AA_ZB_OPA_INTER, + G_RM_AA_ZB_XLU_INTER, + G_RM_AA_ZB_XLU_LINE, + G_RM_AA_ZB_DEC_LINE, + G_RM_AA_ZB_TEX_EDGE, + G_RM_AA_ZB_TEX_INTER, + G_RM_AA_ZB_SUB_SURF, + G_RM_AA_ZB_PCL_SURF, + G_RM_AA_ZB_OPA_TERR, + G_RM_AA_ZB_TEX_TERR, + G_RM_AA_ZB_SUB_TERR, + G_RM_RA_ZB_OPA_SURF, + G_RM_RA_ZB_OPA_DECAL, + G_RM_RA_ZB_OPA_INTER, + G_RM_AA_OPA_SURF, + G_RM_AA_XLU_SURF, + G_RM_AA_XLU_LINE, + G_RM_AA_DEC_LINE, + G_RM_AA_TEX_EDGE, + G_RM_AA_SUB_SURF, + G_RM_AA_PCL_SURF, + G_RM_AA_OPA_TERR, + G_RM_AA_TEX_TERR, + G_RM_AA_SUB_TERR, + G_RM_RA_OPA_SURF, + G_RM_ZB_OPA_SURF, + G_RM_ZB_XLU_SURF, + G_RM_ZB_OPA_DECAL, + G_RM_ZB_XLU_DECAL, + G_RM_ZB_CLD_SURF, + G_RM_ZB_OVL_SURF, + G_RM_ZB_PCL_SURF, + G_RM_OPA_SURF, + G_RM_XLU_SURF, + G_RM_CLD_SURF, + G_RM_TEX_EDGE, + G_RM_PCL_SURF, + G_RM_ADD, + G_RM_NOOP, + G_RM_VISCVG, + G_RM_OPA_CI}; + + uint32_t tblB[] = {G_RM_AA_ZB_OPA_SURF2, + G_RM_AA_ZB_XLU_SURF2, + G_RM_AA_ZB_OPA_DECAL2, + G_RM_AA_ZB_XLU_DECAL2, + G_RM_AA_ZB_OPA_INTER2, + G_RM_AA_ZB_XLU_INTER2, + G_RM_AA_ZB_XLU_LINE2, + G_RM_AA_ZB_DEC_LINE2, + G_RM_AA_ZB_TEX_EDGE2, + G_RM_AA_ZB_TEX_INTER2, + G_RM_AA_ZB_SUB_SURF2, + G_RM_AA_ZB_PCL_SURF2, + G_RM_AA_ZB_OPA_TERR2, + G_RM_AA_ZB_TEX_TERR2, + G_RM_AA_ZB_SUB_TERR2, + G_RM_RA_ZB_OPA_SURF2, + G_RM_RA_ZB_OPA_DECAL2, + G_RM_RA_ZB_OPA_INTER2, + G_RM_AA_OPA_SURF2, + G_RM_AA_XLU_SURF2, + G_RM_AA_XLU_LINE2, + G_RM_AA_DEC_LINE2, + G_RM_AA_TEX_EDGE2, + G_RM_AA_SUB_SURF2, + G_RM_AA_PCL_SURF2, + G_RM_AA_OPA_TERR2, + G_RM_AA_TEX_TERR2, + G_RM_AA_SUB_TERR2, + G_RM_RA_OPA_SURF2, + G_RM_ZB_OPA_SURF2, + G_RM_ZB_XLU_SURF2, + G_RM_ZB_OPA_DECAL2, + G_RM_ZB_XLU_DECAL2, + G_RM_ZB_CLD_SURF2, + G_RM_ZB_OVL_SURF2, + G_RM_ZB_PCL_SURF2, + G_RM_OPA_SURF2, + G_RM_XLU_SURF2, + G_RM_CLD_SURF2, + G_RM_TEX_EDGE2, + G_RM_PCL_SURF2, + G_RM_ADD2, + G_RM_NOOP2, + G_RM_VISCVG2, + G_RM_OPA_CI2}; + + std::map str = { + {G_RM_FOG_SHADE_A, "G_RM_FOG_SHADE_A"}, + {G_RM_FOG_PRIM_A, "G_RM_FOG_PRIM_A"}, + {G_RM_PASS, "G_RM_PASS"}, + {G_RM_AA_ZB_OPA_SURF, "G_RM_AA_ZB_OPA_SURF"}, + {G_RM_AA_ZB_OPA_SURF2, "G_RM_AA_ZB_OPA_SURF2"}, + {G_RM_AA_ZB_XLU_SURF, "G_RM_AA_ZB_XLU_SURF"}, + {G_RM_AA_ZB_XLU_SURF2, "G_RM_AA_ZB_XLU_SURF2"}, + {G_RM_AA_ZB_OPA_DECAL, "G_RM_AA_ZB_OPA_DECAL"}, + {G_RM_AA_ZB_OPA_DECAL2, "G_RM_AA_ZB_OPA_DECAL2"}, + {G_RM_AA_ZB_XLU_DECAL, "G_RM_AA_ZB_XLU_DECAL"}, + {G_RM_AA_ZB_XLU_DECAL2, "G_RM_AA_ZB_XLU_DECAL2"}, + {G_RM_AA_ZB_OPA_INTER, "G_RM_AA_ZB_OPA_INTER"}, + {G_RM_AA_ZB_OPA_INTER2, "G_RM_AA_ZB_OPA_INTER2"}, + {G_RM_AA_ZB_XLU_INTER, "G_RM_AA_ZB_XLU_INTER"}, + {G_RM_AA_ZB_XLU_INTER2, "G_RM_AA_ZB_XLU_INTER2"}, + {G_RM_AA_ZB_XLU_LINE, "G_RM_AA_ZB_XLU_LINE"}, + {G_RM_AA_ZB_XLU_LINE2, "G_RM_AA_ZB_XLU_LINE2"}, + {G_RM_AA_ZB_DEC_LINE, "G_RM_AA_ZB_DEC_LINE"}, + {G_RM_AA_ZB_DEC_LINE2, "G_RM_AA_ZB_DEC_LINE2"}, + {G_RM_AA_ZB_TEX_EDGE, "G_RM_AA_ZB_TEX_EDGE"}, + {G_RM_AA_ZB_TEX_EDGE2, "G_RM_AA_ZB_TEX_EDGE2"}, + {G_RM_AA_ZB_TEX_INTER, "G_RM_AA_ZB_TEX_INTER"}, + {G_RM_AA_ZB_TEX_INTER2, "G_RM_AA_ZB_TEX_INTER2"}, + {G_RM_AA_ZB_SUB_SURF, "G_RM_AA_ZB_SUB_SURF"}, + {G_RM_AA_ZB_SUB_SURF2, "G_RM_AA_ZB_SUB_SURF2"}, + {G_RM_AA_ZB_PCL_SURF, "G_RM_AA_ZB_PCL_SURF"}, + {G_RM_AA_ZB_PCL_SURF2, "G_RM_AA_ZB_PCL_SURF2"}, + {G_RM_AA_ZB_OPA_TERR, "G_RM_AA_ZB_OPA_TERR"}, + {G_RM_AA_ZB_OPA_TERR2, "G_RM_AA_ZB_OPA_TERR2"}, + {G_RM_AA_ZB_TEX_TERR, "G_RM_AA_ZB_TEX_TERR"}, + {G_RM_AA_ZB_TEX_TERR2, "G_RM_AA_ZB_TEX_TERR2"}, + {G_RM_AA_ZB_SUB_TERR, "G_RM_AA_ZB_SUB_TERR"}, + {G_RM_AA_ZB_SUB_TERR2, "G_RM_AA_ZB_SUB_TERR2"}, + {G_RM_RA_ZB_OPA_SURF, "G_RM_RA_ZB_OPA_SURF"}, + {G_RM_RA_ZB_OPA_SURF2, "G_RM_RA_ZB_OPA_SURF2"}, + {G_RM_RA_ZB_OPA_DECAL, "G_RM_RA_ZB_OPA_DECAL"}, + {G_RM_RA_ZB_OPA_DECAL2, "G_RM_RA_ZB_OPA_DECAL2"}, + {G_RM_RA_ZB_OPA_INTER, "G_RM_RA_ZB_OPA_INTER"}, + {G_RM_RA_ZB_OPA_INTER2, "G_RM_RA_ZB_OPA_INTER2"}, + {G_RM_AA_OPA_SURF, "G_RM_AA_OPA_SURF"}, + {G_RM_AA_OPA_SURF2, "G_RM_AA_OPA_SURF2"}, + {G_RM_AA_XLU_SURF, "G_RM_AA_XLU_SURF"}, + {G_RM_AA_XLU_SURF2, "G_RM_AA_XLU_SURF2"}, + {G_RM_AA_XLU_LINE, "G_RM_AA_XLU_LINE"}, + {G_RM_AA_XLU_LINE2, "G_RM_AA_XLU_LINE2"}, + {G_RM_AA_DEC_LINE, "G_RM_AA_DEC_LINE"}, + {G_RM_AA_DEC_LINE2, "G_RM_AA_DEC_LINE2"}, + {G_RM_AA_TEX_EDGE, "G_RM_AA_TEX_EDGE"}, + {G_RM_AA_TEX_EDGE2, "G_RM_AA_TEX_EDGE2"}, + {G_RM_AA_SUB_SURF, "G_RM_AA_SUB_SURF"}, + {G_RM_AA_SUB_SURF2, "G_RM_AA_SUB_SURF2"}, + {G_RM_AA_PCL_SURF, "G_RM_AA_PCL_SURF"}, + {G_RM_AA_PCL_SURF2, "G_RM_AA_PCL_SURF2"}, + {G_RM_AA_OPA_TERR, "G_RM_AA_OPA_TERR"}, + {G_RM_AA_OPA_TERR2, "G_RM_AA_OPA_TERR2"}, + {G_RM_AA_TEX_TERR, "G_RM_AA_TEX_TERR"}, + {G_RM_AA_TEX_TERR2, "G_RM_AA_TEX_TERR2"}, + {G_RM_AA_TEX_TERR, "G_RM_AA_TEX_TERR"}, + {G_RM_AA_TEX_TERR2, "G_RM_AA_TEX_TERR2"}, + {G_RM_AA_SUB_TERR, "G_RM_AA_SUB_TERR"}, + {G_RM_AA_SUB_TERR2, "G_RM_AA_SUB_TERR2"}, + {G_RM_RA_OPA_SURF, "G_RM_RA_OPA_SURF"}, + {G_RM_RA_OPA_SURF2, "G_RM_RA_OPA_SURF2"}, + {G_RM_ZB_OPA_SURF, "G_RM_ZB_OPA_SURF"}, + {G_RM_ZB_OPA_SURF2, "G_RM_ZB_OPA_SURF2"}, + {G_RM_ZB_XLU_SURF, "G_RM_ZB_XLU_SURF"}, + {G_RM_ZB_XLU_SURF2, "G_RM_ZB_XLU_SURF2"}, + {G_RM_ZB_OPA_DECAL, "G_RM_ZB_OPA_DECAL"}, + {G_RM_ZB_OPA_DECAL2, "G_RM_ZB_OPA_DECAL2"}, + {G_RM_ZB_XLU_DECAL, "G_RM_ZB_XLU_DECAL"}, + {G_RM_ZB_XLU_DECAL2, "G_RM_ZB_XLU_DECAL2"}, + {G_RM_ZB_CLD_SURF, "G_RM_ZB_CLD_SURF"}, + {G_RM_ZB_CLD_SURF2, "G_RM_ZB_CLD_SURF2"}, + {G_RM_ZB_OVL_SURF, "G_RM_ZB_OVL_SURF"}, + {G_RM_ZB_OVL_SURF2, "G_RM_ZB_OVL_SURF2"}, + {G_RM_ZB_PCL_SURF, "G_RM_ZB_PCL_SURF"}, + {G_RM_ZB_PCL_SURF2, "G_RM_ZB_PCL_SURF2"}, + {G_RM_OPA_SURF, "G_RM_OPA_SURF"}, + {G_RM_OPA_SURF2, "G_RM_OPA_SURF2"}, + {G_RM_XLU_SURF, "G_RM_XLU_SURF"}, + {G_RM_XLU_SURF2, "G_RM_XLU_SURF2"}, + {G_RM_CLD_SURF, "G_RM_CLD_SURF"}, + {G_RM_CLD_SURF2, "G_RM_CLD_SURF2"}, + {G_RM_TEX_EDGE, "G_RM_TEX_EDGE"}, + {G_RM_TEX_EDGE2, "G_RM_TEX_EDGE2"}, + {G_RM_PCL_SURF, "G_RM_PCL_SURF"}, + {G_RM_PCL_SURF2, "G_RM_PCL_SURF2"}, + {G_RM_ADD, "G_RM_ADD"}, + {G_RM_ADD2, "G_RM_ADD2"}, + {G_RM_NOOP, "G_RM_NOOP"}, + {G_RM_NOOP2, "G_RM_NOOP2"}, + {G_RM_VISCVG, "G_RM_VISCVG"}, + {G_RM_VISCVG2, "G_RM_VISCVG2"}, + {G_RM_OPA_CI, "G_RM_OPA_CI"}, + {G_RM_OPA_CI2, "G_RM_OPA_CI2"}, + }; + + for (uint32_t k = 0; k < sizeof(tblA) / 4; k++) + { + if ((dd & tblA[k]) == tblA[k]) + { + if (tblA[k] > mode1) + mode1 = tblA[k]; + } + } + + for (uint32_t k = 0; k < sizeof(tblB) / 4; k++) + { + if ((dd & tblB[k]) == tblB[k]) + { + if (tblB[k] > mode2) + mode2 = tblB[k]; + } + } + + std::string mode1Str = str[mode1]; + std::string mode2Str = str[mode2]; + + if (mode1Str == "") + { + mode1Str = StringHelper::Sprintf("0x%08X", mode1); + } + + if (mode2Str == "") + { + int32_t remainingFlags = mode2; + + if (mode2 & AA_EN) + { + mode2Str += "AA_EN | "; + remainingFlags ^= AA_EN; + } + + if (mode2 & Z_CMP) + { + mode2Str += "Z_CMP | "; + remainingFlags ^= Z_CMP; + } + + if (mode2 & Z_UPD) + { + mode2Str += "Z_UPD | "; + remainingFlags ^= Z_UPD; + } + + if (mode2 & IM_RD) + { + mode2Str += "IM_RD | "; + remainingFlags ^= IM_RD; + } + + if (mode2 & CLR_ON_CVG) + { + mode2Str += "CLR_ON_CVG | "; + remainingFlags ^= CLR_ON_CVG; + } + + if (mode2 & CVG_DST_CLAMP) + { + mode2Str += "CVG_DST_CLAMP | "; + remainingFlags ^= CVG_DST_CLAMP; + } + + if (mode2 & CVG_DST_WRAP) + { + mode2Str += "CVG_DST_WRAP | "; + remainingFlags ^= CVG_DST_WRAP; + } + + if (mode2 & CVG_DST_FULL) + { + mode2Str += "CVG_DST_FULL | "; + remainingFlags ^= CVG_DST_FULL; + } + + if (mode2 & CVG_DST_SAVE) + { + mode2Str += "CVG_DST_SAVE | "; + remainingFlags ^= CVG_DST_SAVE; + } + + int32_t zMode = mode2 & 0xC00; + + if (zMode == ZMODE_INTER) + { + mode2Str += "ZMODE_INTER | "; + remainingFlags ^= ZMODE_INTER; + } + else if (zMode == ZMODE_XLU) + { + mode2Str += "ZMODE_XLU | "; + remainingFlags ^= ZMODE_XLU; + } + else if (zMode == ZMODE_DEC) + { + mode2Str += "ZMODE_DEC | "; + remainingFlags ^= ZMODE_DEC; + } + + if (mode2 & CVG_X_ALPHA) + { + mode2Str += "CVG_X_ALPHA | "; + remainingFlags ^= CVG_X_ALPHA; + } + + if (mode2 & ALPHA_CVG_SEL) + { + mode2Str += "ALPHA_CVG_SEL | "; + remainingFlags ^= ALPHA_CVG_SEL; + } + + if (mode2 & FORCE_BL) + { + mode2Str += "FORCE_BL | "; + remainingFlags ^= FORCE_BL; + } + + int32_t bp = (mode2 >> 28) & 0b11; + int32_t ba = (mode2 >> 24) & 0b11; + int32_t bm = (mode2 >> 20) & 0b11; + int32_t bb = (mode2 >> 16) & 0b11; + + mode2Str += StringHelper::Sprintf("GBL_c2(%i, %i, %i, %i)", bp, ba, bm, bb); + // mode2Str = StringHelper::Sprintf("0x%08X", mode2); + } + + sprintf(line, "gsDPSetRenderMode(%s, %s),", mode1Str.c_str(), mode2Str.c_str()); + } + else + { + sprintf(line, "gsSPSetOtherMode(0xE2, %i, %i, 0x%08X),", sft, len, dd); + } +} + +void ZDisplayList::Opcode_G_SETOTHERMODE_H(uint64_t data, char* line) +{ + int32_t ss = (data & 0x0000FF0000000000) >> 40; + int32_t nn = (data & 0x000000FF00000000) >> 32; + int32_t dd = (data & 0xFFFFFFFF); + + int32_t sft = 32 - (nn + 1) - ss; + + if (sft == 14) // G_MDSFT_TEXTLUT + { + std::string types[] = {"G_TT_NONE", "G_TT_NONE", "G_TT_RGBA16", "G_TT_IA16"}; + sprintf(line, "gsDPSetTextureLUT(%s),", types[dd >> 14].c_str()); + } + else + sprintf(line, "gsSPSetOtherMode(0xE3, %i, %i, 0x%08X),", sft, nn + 1, dd); +} + +void ZDisplayList::Opcode_G_LOADTLUT(uint64_t data, std::string prefix, char* line) +{ + int32_t t = (data & 0x0000000007000000) >> 24; + int32_t ccc = (data & 0x00000000003FF000) >> 14; + + lastTexWidth = sqrt(ccc + 1); + lastTexHeight = sqrt(ccc + 1); + + lastTexLoaded = true; + lastTexIsPalette = true; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("TextureGenCheck G_LOADTLUT (lastCISiz: %i)\n", (uint32_t)lastCISiz); + + TextureGenCheck(prefix); + + sprintf(line, "gsDPLoadTLUTCmd(%i, %i),", t, ccc); +} + +void ZDisplayList::Opcode_G_ENDDL(std::string prefix, char* line) +{ + sprintf(line, "gsSPEndDisplayList(),"); + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("TextureGenCheck G_ENDDL\n"); + + TextureGenCheck(prefix); +} + +std::string ZDisplayList::GetSourceOutputHeader(const std::string& prefix) +{ + return ""; +} + +static int32_t GfxdCallback_FormatSingleEntry(void) +{ + ZDisplayList* self = static_cast(gfxd_udata_get()); + gfxd_puts("\t"); + gfxd_macro_dflt(); + gfxd_puts(","); + + auto macroId = gfxd_macro_id(); + + switch (macroId) + { + case gfxd_SP1Triangle: + case gfxd_SP2Triangles: + if (self->lastTexture != nullptr && self->lastTexture->IsColorIndexed() && + !self->lastTexture->HasTlut()) + { + auto tex = self->lastTexture; + auto tlut = self->lastTlut; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + { + if (tlut != nullptr) + printf("CI texture '%s' (0x%X), TLUT: '%s' (0x%X)\n", tex->GetName().c_str(), + tex->GetRawDataIndex(), tlut->GetName().c_str(), + tlut->GetRawDataIndex()); + else + printf("CI texture '%s' (0x%X), TLUT: null\n", tex->GetName().c_str(), + tex->GetRawDataIndex()); + } + + if (tlut != nullptr && !tex->HasTlut()) + tex->SetTlut(tlut); + } + break; + } + + // dont print a new line after the last command + if (macroId != gfxd_SPEndDisplayList) + { + gfxd_puts("\n"); + } + + return 0; +} + +static int32_t GfxdCallback_Vtx(uint32_t seg, int32_t count) +{ + ZDisplayList* self = static_cast(gfxd_udata_get()); + uint32_t vtxOffset = Seg2Filespace(seg, self->parent->baseAddress); + std::string vtxName = ""; + + // Probably an external asset we are unable to track + if (!Globals::Instance->HasSegment(GETSEGNUM(seg))) + { + vtxName = StringHelper::Sprintf("0x%08X", seg); + } + else + { + self->references.push_back(vtxOffset); + + // Check for vertex intersections from other display lists + // TODO: These two could probably be condenced to one... + if (self->parent->GetDeclarationRanged(vtxOffset + (count * 16)) != nullptr) + { + // Declaration* decl = self->parent->GetDeclarationRanged(vtxOffset + (count * 16)); + uint32_t addr = self->parent->GetDeclarationRangedAddress(vtxOffset + (count * 16)); + int32_t diff = addr - vtxOffset; + + if (diff > 0) + count = diff / 16; + else + count = 0; + } + + if (self->parent->GetDeclarationRanged(vtxOffset) != nullptr) + { + // Declaration* decl = self->parent->GetDeclarationRanged(vtxOffset); + uint32_t addr = self->parent->GetDeclarationRangedAddress(vtxOffset); + int32_t diff = addr - vtxOffset; + + if (diff > 0) + count = diff / 16; + else + count = 0; + } + + if (count > 0) + { + std::vector vtxList; + vtxList.reserve(count); + + uint32_t currentPtr = vtxOffset; + for (int32_t i = 0; i < count; i++) + { + ZVtx vtx(self->parent); + vtx.SetRawData(self->fileData); + vtx.SetRawDataIndex(currentPtr); + vtx.ParseRawData(); + + vtxList.push_back(vtx); + currentPtr += 16; + } + self->vertices[vtxOffset] = vtxList; + } + + vtxName = "@r"; + } + + gfxd_puts(vtxName.c_str()); + + return 1; +} + +static int32_t GfxdCallback_Texture(segptr_t seg, int32_t fmt, int32_t siz, int32_t width, + int32_t height, int32_t pal) +{ + ZDisplayList* self = static_cast(gfxd_udata_get()); + uint32_t texOffset = Seg2Filespace(seg, self->parent->baseAddress); + int32_t texSegNum = GETSEGNUM(seg); + + self->lastTexWidth = width; + self->lastTexHeight = height; + self->lastTexAddr = texOffset; + self->lastTexSeg = seg; + self->lastTexFmt = static_cast(fmt); + self->lastTexSiz = static_cast(siz); + self->lastTexLoaded = true; + self->lastTexIsPalette = false; + + self->TextureGenCheck(self->curPrefix); + + std::string texName = ""; + + ZFile* auxParent = self->parent; + if (self->parent->segment != texSegNum && Globals::Instance->HasSegment(texSegNum)) + auxParent = Globals::Instance->segmentRefFiles.at(texSegNum); + + Declaration* decl = auxParent->GetDeclaration(texOffset); + if (Globals::Instance->HasSegment(texSegNum) && decl != nullptr) + texName = decl->varName; + else if (self->lastTexture != nullptr) + texName = self->lastTexture->GetName(); + else + texName = auxParent->GetDeclarationPtrName(seg); + + gfxd_puts(texName.c_str()); + + return 1; +} + +static int32_t GfxdCallback_Palette(uint32_t seg, int32_t idx, int32_t count) +{ + ZDisplayList* self = static_cast(gfxd_udata_get()); + uint32_t palOffset = Seg2Filespace(seg, self->parent->baseAddress); + int32_t palSegNum = GETSEGNUM(seg); + + self->lastTexWidth = sqrt(count); + self->lastTexHeight = sqrt(count); + self->lastTexAddr = palOffset; + self->lastTexSeg = seg; + self->lastTexSiz = F3DZEXTexSizes::G_IM_SIZ_16b; + self->lastTexFmt = F3DZEXTexFormats::G_IM_FMT_RGBA; + self->lastTexLoaded = true; + self->lastTexIsPalette = true; + + self->TextureGenCheck(self->curPrefix); + + std::string palName = ""; + + ZFile* auxParent = self->parent; + if (self->parent->segment != palSegNum && Globals::Instance->HasSegment(palSegNum)) + auxParent = Globals::Instance->segmentRefFiles.at(palSegNum); + + Declaration* decl = auxParent->GetDeclaration(palOffset); + if (Globals::Instance->HasSegment(palSegNum) && decl != nullptr) + palName = decl->varName; + else if (self->lastTlut != nullptr) + palName = self->lastTlut->GetName(); + else + palName = auxParent->GetDeclarationPtrName(seg); + + gfxd_puts(palName.c_str()); + + return 1; +} + +static int32_t GfxdCallback_DisplayList(uint32_t seg) +{ + ZDisplayList* self = static_cast(gfxd_udata_get()); + uint32_t dListOffset = GETSEGOFFSET(seg); + int32_t dListSegNum = GETSEGNUM(seg); + + if ((dListSegNum <= 6) && Globals::Instance->HasSegment(dListSegNum)) + { + ZDisplayList* newDList = new ZDisplayList( + self->fileData, dListOffset, + self->GetDListLength(self->fileData, dListOffset, self->dListType), self->parent); + newDList->scene = self->scene; + newDList->parent = self->parent; + self->otherDLists.push_back(newDList); + } + + ZFile* auxParent = self->parent; + if (self->parent->segment != dListSegNum && Globals::Instance->HasSegment(dListSegNum)) + auxParent = Globals::Instance->segmentRefFiles.at(dListSegNum); + + std::string dListName = auxParent->GetDeclarationPtrName(seg); + + gfxd_puts(dListName.c_str()); + + return 1; +} + +static int32_t GfxdCallback_Matrix(uint32_t seg) +{ + std::string mtxName = ""; + ZDisplayList* self = static_cast(gfxd_udata_get()); + + if (Globals::Instance->symbolMap.find(seg) != Globals::Instance->symbolMap.end()) + mtxName = StringHelper::Sprintf("&%s", Globals::Instance->symbolMap[seg].c_str()); + else if (Globals::Instance->HasSegment(GETSEGNUM(seg))) + { + Declaration* decl = + self->parent->GetDeclaration(Seg2Filespace(seg, self->parent->baseAddress)); + if (decl == nullptr) + { + ZMtx mtx(self->GetName(), self->fileData, Seg2Filespace(seg, self->parent->baseAddress), + self->parent); + + mtx.GetSourceOutputCode(self->GetName()); + self->mtxList.push_back(mtx); + mtxName = "&" + mtx.GetName(); + } + else + { + mtxName = "&" + decl->varName; + } + } + else + mtxName = StringHelper::Sprintf("0x%08X", seg); + + gfxd_puts(mtxName.c_str()); + + return 1; +} + +std::string ZDisplayList::GetSourceOutputCode(const std::string& prefix) +{ + std::string sourceOutput = ""; + + if (Globals::Instance->useLegacyZDList) + sourceOutput += ProcessLegacy(prefix); + else + sourceOutput += ProcessGfxDis(prefix); + + // Iterate through our vertex lists, connect intersecting lists. + if (vertices.size() > 0) + { + std::vector>> verticesSorted(vertices.begin(), + vertices.end()); + + for (size_t i = 0; i < verticesSorted.size() - 1; i++) + { + size_t vtxSize = vertices[verticesSorted[i].first].size() * 16; + + if ((verticesSorted[i].first + vtxSize) > verticesSorted[i + 1].first) + { + int32_t intersectAmt = + (verticesSorted[i].first + vtxSize) - verticesSorted[i + 1].first; + int32_t intersectIndex = intersectAmt / 16; + + for (size_t j = intersectIndex; j < verticesSorted[i + 1].second.size(); j++) + vertices[verticesSorted[i].first].push_back(verticesSorted[i + 1].second[j]); + + vertices.erase(verticesSorted[i + 1].first); + verticesSorted.erase(verticesSorted.begin() + i + 1); + + i--; + } + } + + if (scene == nullptr) // TODO: Bit of a hack but it works for now... + parent->defines += defines; + + // Generate Vertex Declarations + for (auto& item : vertices) + { + std::string declaration = ""; + + uint32_t curAddr = item.first; + + for (auto vtx : item.second) + { + if (curAddr != item.first) + declaration += "\n"; + + declaration += vtx.GetBodySourceCode(); + + curAddr += 16; + } + + vtxDeclarations[item.first] = declaration; + + if (parent != nullptr) + { + parent->AddDeclarationArray(item.first, DeclarationAlignment::None, + item.second.size() * 16, "static Vtx", + StringHelper::Sprintf("%sVtx_%06X", prefix.c_str(), + item.first, item.second.size()), + item.second.size(), declaration); + } + } + } + + if (scene != nullptr) + defines += scene->extDefines; + + if (parent != nullptr) + { + Declaration* decl = DeclareVar("", sourceOutput); + decl->references = references; + // return ""; + // return sourceOutput; + } + + // Iterate through our vertex lists, connect intersecting lists. + if (vertices.size() > 0) + { + std::vector>> verticesSorted(vertices.begin(), + vertices.end()); + + for (size_t i = 0; i < verticesSorted.size() - 1; i++) + { + // int32_t vtxSize = verticesSorted[i].second.size() * 16; + size_t vtxSize = vertices[verticesSorted[i].first].size() * 16; + + if ((verticesSorted[i].first + vtxSize) > verticesSorted[i + 1].first) + { + int32_t intersectAmt = + (verticesSorted[i].first + vtxSize) - verticesSorted[i + 1].first; + int32_t intersectIndex = intersectAmt / 16; + + for (size_t j = intersectIndex; j < verticesSorted[i + 1].second.size(); j++) + vertices[verticesSorted[i].first].push_back(verticesSorted[i + 1].second[j]); + + vertices.erase(verticesSorted[i + 1].first); + verticesSorted.erase(verticesSorted.begin() + i + 1); + + i--; + } + } + + if (scene == nullptr) // TODO: Bit of a hack but it works for now... + parent->defines += defines; + + // Generate Vertex Declarations + std::vector vtxKeys; + + for (auto& item : vertices) + vtxKeys.push_back(item.first); + + // for (pair> item : vertices) + for (size_t i = 0; i < vtxKeys.size(); i++) + { + auto& item = vertices[vtxKeys[i]]; + + std::string declaration = ""; + + int32_t curAddr = vtxKeys[i]; + + for (auto& vtx : item) + { + if (curAddr != vtxKeys[i]) + declaration += "\n"; + + declaration += + StringHelper::Sprintf(" VTX(%i, %i, %i, %i, %i, %i, %i, %i, %i),", vtx.x, + vtx.y, vtx.z, vtx.s, vtx.t, vtx.r, vtx.g, vtx.b, vtx.a); + + curAddr += 16; + } + + // Ensure there's always a trailing line feed to prevent dumb warnings. + // Please don't remove this line, unless you somehow made a way to prevent + // that warning when building the OoT repo. + declaration += "\n"; + + vtxDeclarations[vtxKeys[i]] = declaration; + + if (parent != nullptr) + { + std::string vtxName = + StringHelper::Sprintf("%sVtx_%06X", prefix.c_str(), vtxKeys[i]); + + auto filepath = Globals::Instance->outputPath / vtxName; + std::string incStr = StringHelper::Sprintf("%s.%s.inc", filepath.c_str(), "vtx"); + + parent->AddDeclarationArray(vtxKeys[i], DeclarationAlignment::None, + item.size() * 16, "static Vtx", vtxName, item.size(), + declaration); + + Declaration* vtxDecl = parent->AddDeclarationIncludeArray( + vtxKeys[i], incStr, item.size() * 16, "static Vtx", vtxName, item.size()); + vtxDecl->isExternal = true; + } + } + } + + if (parent != nullptr) + return ""; + + return sourceOutput; +} + +std::string ZDisplayList::ProcessLegacy(const std::string& prefix) +{ + char line[4096]; + std::string sourceOutput = ""; + + for (size_t i = 0; i < instructions.size(); i++) + { + uint8_t opcode = (uint8_t)(instructions[i] >> 56); + uint64_t data = instructions[i]; + sourceOutput += " "; + + auto start = std::chrono::steady_clock::now(); + + int32_t optimizationResult = OptimizationChecks(i, sourceOutput, prefix); + + if (optimizationResult != -1) + { + i += optimizationResult - 1; + line[0] = '\0'; + } + else + { + if (dListType == DListType::F3DZEX) + ParseF3DZEX((F3DZEXOpcode)opcode, data, i, prefix, line); + else + ParseF3DEX((F3DEXOpcode)opcode, data, prefix, line); + } + + auto end = std::chrono::steady_clock::now(); + auto diff = std::chrono::duration_cast(end - start).count(); + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG && diff > 5) + printf("F3DOP: 0x%02X, TIME: %lims\n", opcode, diff); + + sourceOutput += line; + + if (i < instructions.size() - 1) + sourceOutput += "\n"; + } + + return sourceOutput; +} + +std::string ZDisplayList::ProcessGfxDis(const std::string& prefix) +{ + std::string sourceOutput = ""; + + OutputFormatter outputformatter; + int32_t dListSize = instructions.size() * sizeof(instructions[0]); + + gfxd_input_buffer(instructions.data(), dListSize); + gfxd_endian(gfxd_endian_little, sizeof(uint64_t)); // tell gfxdis what format the data is + + gfxd_macro_fn(GfxdCallback_FormatSingleEntry); // format for each command entry + gfxd_vtx_callback(GfxdCallback_Vtx); // handle vertices + gfxd_timg_callback(GfxdCallback_Texture); // handle textures + gfxd_tlut_callback(GfxdCallback_Palette); // handle palettes + gfxd_dl_callback(GfxdCallback_DisplayList); // handle child display lists + gfxd_mtx_callback(GfxdCallback_Matrix); // handle matrices + gfxd_output_callback( + outputformatter.StaticWriter()); // convert tabs to 4 spaces and enforce 120 line limit + + gfxd_enable(gfxd_emit_dec_color); // use decimal for colors + + // set microcode. see gfxd.h for more options. + if (dListType == DListType::F3DZEX) + gfxd_target(gfxd_f3dex2); + else + gfxd_target(gfxd_f3dex); + + this->curPrefix = prefix; + gfxd_udata_set(this); + gfxd_execute(); // generate display list + sourceOutput += outputformatter.GetOutput(); // write formatted display list + + return sourceOutput; +} + +void ZDisplayList::TextureGenCheck(std::string prefix) +{ + if (TextureGenCheck(fileData, scene, parent, prefix, lastTexWidth, lastTexHeight, lastTexAddr, + lastTexSeg, lastTexFmt, lastTexSiz, lastTexLoaded, lastTexIsPalette, this)) + { + lastTexAddr = 0; + lastTexLoaded = false; + lastTexIsPalette = false; + } +} + +bool ZDisplayList::TextureGenCheck(std::vector fileData, ZRoom* scene, ZFile* parent, + std::string prefix, int32_t texWidth, int32_t texHeight, + uint32_t texAddr, uint32_t texSeg, F3DZEXTexFormats texFmt, + F3DZEXTexSizes texSiz, bool texLoaded, bool texIsPalette, + ZDisplayList* self) +{ + int32_t segmentNumber = GETSEGNUM(texSeg); + + if (!texIsPalette) + self->lastTexture = nullptr; + else + self->lastTlut = nullptr; + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("TextureGenCheck seg=%i width=%i height=%i ispal=%i addr=0x%06X\n", segmentNumber, + texWidth, texHeight, texIsPalette, texAddr); + + if ((texSeg != 0 || texAddr != 0) && texWidth > 0 && texHeight > 0 && texLoaded && + Globals::Instance->HasSegment(segmentNumber)) + { + if (segmentNumber != SEGMENT_SCENE) + { + if (texAddr < parent->GetRawData().size()) + { + ZTexture* tex = parent->GetTextureResource(texAddr); + if (tex != nullptr) + tex->isPalette = texIsPalette; + else + { + tex = new ZTexture(parent); + tex->FromBinary(fileData, texAddr, texWidth, texHeight, + TexFormatToTexType(texFmt, texSiz), texIsPalette); + parent->AddTextureResource(texAddr, tex); + } + + if (!texIsPalette) + self->lastTexture = tex; + else + self->lastTlut = tex; + + return true; + } + } + else if (scene != nullptr) + { + if (scene->parent->GetDeclaration(texAddr) == nullptr) + { + ZTexture* tex = scene->parent->GetTextureResource(texAddr); + if (tex != nullptr) + tex->isPalette = texIsPalette; + else + { + tex = new ZTexture(scene->parent); + tex->FromBinary(scene->GetRawData(), texAddr, texWidth, texHeight, + TexFormatToTexType(texFmt, texSiz), texIsPalette); + + scene->parent->AddTextureResource(texAddr, tex); + } + + if (!texIsPalette) + self->lastTexture = tex; + else + self->lastTlut = tex; + + auto filepath = Globals::Instance->outputPath / + Path::GetFileNameWithoutExtension(tex->GetName()); + auto filename = StringHelper::Sprintf("%s.%s.inc.c", filepath.c_str(), + tex->GetExternalExtension().c_str()); + scene->parent->AddDeclarationIncludeArray(texAddr, filename, tex->GetRawDataSize(), + tex->GetSourceTypeName(), tex->GetName(), + 0); + } + return true; + } + } + + return false; +} + +TextureType ZDisplayList::TexFormatToTexType(F3DZEXTexFormats fmt, F3DZEXTexSizes siz) +{ + if (fmt == F3DZEXTexFormats::G_IM_FMT_RGBA) + { + if (siz == F3DZEXTexSizes::G_IM_SIZ_16b) + return TextureType::RGBA16bpp; + else if (siz == F3DZEXTexSizes::G_IM_SIZ_32b) + return TextureType::RGBA32bpp; + } + else if (fmt == F3DZEXTexFormats::G_IM_FMT_CI) + { + if (Globals::Instance->useLegacyZDList) + return TextureType::Palette8bpp; + else + { + if (siz == F3DZEXTexSizes::G_IM_SIZ_4b) + return TextureType::Palette4bpp; + else if (siz == F3DZEXTexSizes::G_IM_SIZ_8b) + return TextureType::Palette8bpp; + } + } + else if (fmt == F3DZEXTexFormats::G_IM_FMT_IA) + { + if (siz == F3DZEXTexSizes::G_IM_SIZ_4b) + return TextureType::Grayscale4bpp; + else if (siz == F3DZEXTexSizes::G_IM_SIZ_8b) + return TextureType::GrayscaleAlpha8bpp; + else if (siz == F3DZEXTexSizes::G_IM_SIZ_16b) + return TextureType::GrayscaleAlpha16bpp; + } + else if (fmt == F3DZEXTexFormats::G_IM_FMT_I) + { + if (siz == F3DZEXTexSizes::G_IM_SIZ_4b) + return TextureType::Grayscale4bpp; + else if (siz == F3DZEXTexSizes::G_IM_SIZ_8b) + return TextureType::Grayscale8bpp; + else if (siz == F3DZEXTexSizes::G_IM_SIZ_16b) + return TextureType::Grayscale8bpp; + } + + return TextureType::RGBA16bpp; +} + +void ZDisplayList::GenerateHLIntermediette(HLFileIntermediette& hlFile) +{ + HLModelIntermediette* mdl = (HLModelIntermediette*)&hlFile; + HLModelIntermediette::FromZDisplayList(mdl, this); + mdl->blocks.push_back(new HLTerminator()); +} + +bool ZDisplayList::IsExternalResource() const +{ + return false; +} + +std::string ZDisplayList::GetExternalExtension() const +{ + return "dlist"; +} + +std::string ZDisplayList::GetSourceTypeName() const +{ + return "Gfx"; +} + +ZResourceType ZDisplayList::GetResourceType() const +{ + return ZResourceType::DisplayList; +} + +size_t ZDisplayList::GetRawDataSize() const +{ + return instructions.size() * 8; +} diff --git a/tools/ZAPD/ZAPD/ZDisplayList.h b/tools/ZAPD/ZAPD/ZDisplayList.h new file mode 100644 index 0000000000..091b4b27df --- /dev/null +++ b/tools/ZAPD/ZAPD/ZDisplayList.h @@ -0,0 +1,388 @@ +#pragma once + +#include "ZMtx.h" +#include "ZResource.h" +#include "ZRoom/ZRoom.h" +#include "ZTexture.h" +#include "ZVtx.h" +#include "tinyxml2.h" + +#include +#include +#include + +enum class F3DEXOpcode +{ + G_SPNOOP = 0x00, + G_MTX = 0x01, + G_MOVEMEM = 0x03, + G_VTX = 0x04, + G_DL = 0x06, + G_LOAD_UCODE = 0xAF, + G_BRANCH_Z = 0xB0, + G_TRI2 = 0xB1, + G_MODIFYVTX = 0xB2, + G_RDPHALF_2 = 0xB3, + G_RDPHALF_1 = 0xB4, + G_QUAD = 0xB5, + G_CLEARGEOMETRYMODE = 0xB6, + G_SETGEOMETRYMODE = 0xB7, + G_ENDDL = 0xB8, + G_SETOTHERMODE_L = 0xB9, + G_SETOTHERMODE_H = 0xBA, + G_TEXTURE = 0xBB, + G_MOVEWORD = 0xBC, + G_POPMTX = 0xBD, + G_CULLDL = 0xBE, + G_TRI1 = 0xBF, + G_NOOP = 0xC0, + G_TEXRECT = 0xE4, + G_TEXRECTFLIP = 0xE5, + G_RDPLOADSYNC = 0xE6, + G_RDPPIPESYNC = 0xE7, + G_RDPTILESYNC = 0xE8, + G_RDPFULLSYNC = 0xE9, + G_SETKEYGB = 0xEA, + G_SETKEYR = 0xEB, + G_SETCONVERT = 0xEC, + G_SETSCISSOR = 0xED, + G_SETPRIMDEPTH = 0xEE, + G_RDPSETOTHERMODE = 0xEF, + G_LOADTLUT = 0xF0, + G_SETTILESIZE = 0xF2, + G_LOADBLOCK = 0xF3, + G_LOADTILE = 0xF4, + G_SETTILE = 0xF5, + G_FILLRECT = 0xF6, + G_SETFILLCOLOR = 0xF7, + G_SETFOGCOLOR = 0xF8, + G_SETBLENDCOLOR = 0xF9, + G_SETPRIMCOLOR = 0xFA, + G_SETENVCOLOR = 0xFB, + G_SETCOMBINE = 0xFC, + G_SETTIMG = 0xFD, + G_SETZIMG = 0xFE, + G_SETCIMG = 0xFF +}; + +enum class F3DZEXOpcode +{ + G_NOOP = 0x00, + G_VTX = 0x01, + G_MODIFYVTX = 0x02, + G_CULLDL = 0x03, + G_BRANCH_Z = 0x04, + G_TRI1 = 0x05, + G_TRI2 = 0x06, + G_QUAD = 0x07, + G_SPECIAL_3 = 0xD3, + G_SPECIAL_2 = 0xD4, + G_SPECIAL_1 = 0xD5, + G_DMA_IO = 0xD6, + G_TEXTURE = 0xD7, + G_POPMTX = 0xD8, + G_GEOMETRYMODE = 0xD9, + G_MTX = 0xDA, + G_MOVEWORD = 0xDB, + G_MOVEMEM = 0xDC, + G_LOAD_UCODE = 0xDD, + G_DL = 0xDE, + G_ENDDL = 0xDF, + G_SPNOOP = 0xE0, + G_RDPHALF_1 = 0xE1, + G_SETOTHERMODE_L = 0xE2, + G_SETOTHERMODE_H = 0xE3, + G_TEXRECT = 0xE4, + G_TEXRECTFLIP = 0xE5, + G_RDPLOADSYNC = 0xE6, + G_RDPPIPESYNC = 0xE7, + G_RDPTILESYNC = 0xE8, + G_RDPFULLSYNC = 0xE9, + G_SETKEYGB = 0xEA, + G_SETKEYR = 0xEB, + G_SETCONVERT = 0xEC, + G_SETSCISSOR = 0xED, + G_SETPRIMDEPTH = 0xEE, + G_RDPSETOTHERMODE = 0xEF, + G_LOADTLUT = 0xF0, + G_RDPHALF_2 = 0xF1, + G_SETTILESIZE = 0xF2, + G_LOADBLOCK = 0xF3, + G_LOADTILE = 0xF4, + G_SETTILE = 0xF5, + G_FILLRECT = 0xF6, + G_SETFILLCOLOR = 0xF7, + G_SETFOGCOLOR = 0xF8, + G_SETBLENDCOLOR = 0xF9, + G_SETPRIMCOLOR = 0xFA, + G_SETENVCOLOR = 0xFB, + G_SETCOMBINE = 0xFC, + G_SETTIMG = 0xFD, + G_SETZIMG = 0xFE, + G_SETCIMG = 0xFF, +}; + +enum class F3DZEXTexFormats +{ + G_IM_FMT_RGBA, + G_IM_FMT_YUV, + G_IM_FMT_CI, + G_IM_FMT_IA, + G_IM_FMT_I +}; + +enum class F3DZEXTexSizes +{ + G_IM_SIZ_4b, + G_IM_SIZ_8b, + G_IM_SIZ_16b, + G_IM_SIZ_32b +}; + +enum class DListType +{ + F3DZEX, + F3DEX, +}; + +enum class OoTSegments +{ + DirectReference = 0, + TitleStatic = 1, + Scene = 2, + Room = 3, + GameplayKeep = 4, + FieldDungeonKeep = 5, + Object = 6, + LinkAnimation = 7, + IconItemStatic = 8, + IconItem24Static = 9, + Unknown10 = 10, + Unknown11 = 11, + Unknown12 = 12, + IconFieldDungeonStatic = 13, + IconItemLanguageStatic = 14, + ZBuffer = 15, + FrameBuffer = 16, +}; + +#define G_MDSFT_ALPHACOMPARE 0 +#define G_MDSFT_ZSRCSEL 2 +#define G_MDSFT_RENDERMODE 3 +#define G_MDSFT_BLENDER 16 + +#define G_RM_FOG_SHADE_A 0xC8000000 +#define G_RM_FOG_PRIM_A 0xC4000000 +#define G_RM_PASS 0x0C080000 +#define G_RM_AA_ZB_OPA_SURF 0x442078 +#define G_RM_AA_ZB_OPA_SURF2 0x112078 +#define G_RM_AA_ZB_XLU_SURF 0x4049D8 +#define G_RM_AA_ZB_XLU_SURF2 0x1049D8 +#define G_RM_AA_ZB_OPA_DECAL 0x442D58 +#define G_RM_AA_ZB_OPA_DECAL2 0x112D58 +#define G_RM_AA_ZB_XLU_DECAL 0x404DD8 +#define G_RM_AA_ZB_XLU_DECAL2 0x104DD8 +#define G_RM_AA_ZB_OPA_INTER 0x442478 +#define G_RM_AA_ZB_OPA_INTER2 0x112478 +#define G_RM_AA_ZB_XLU_INTER 0x4045D8 +#define G_RM_AA_ZB_XLU_INTER2 0x1045D8 +#define G_RM_AA_ZB_XLU_LINE 0x407858 +#define G_RM_AA_ZB_XLU_LINE2 0x107858 +#define G_RM_AA_ZB_DEC_LINE 0x407F58 +#define G_RM_AA_ZB_DEC_LINE2 0x107F58 +#define G_RM_AA_ZB_TEX_EDGE 0x443078 +#define G_RM_AA_ZB_TEX_EDGE2 0x113078 +#define G_RM_AA_ZB_TEX_INTER 0x443478 +#define G_RM_AA_ZB_TEX_INTER2 0x113478 +#define G_RM_AA_ZB_SUB_SURF 0x442878 +#define G_RM_AA_ZB_SUB_SURF2 0x112278 +#define G_RM_AA_ZB_PCL_SURF 0x40007B +#define G_RM_AA_ZB_PCL_SURF2 0x10007B +#define G_RM_AA_ZB_OPA_TERR 0x402078 +#define G_RM_AA_ZB_OPA_TERR2 0x102078 +#define G_RM_AA_ZB_TEX_TERR 0x403078 +#define G_RM_AA_ZB_TEX_TERR2 0x103078 +#define G_RM_AA_ZB_SUB_TERR 0x402278 +#define G_RM_AA_ZB_SUB_TERR2 0x102278 +#define G_RM_RA_ZB_OPA_SURF 0x442038 +#define G_RM_RA_ZB_OPA_SURF2 0x112038 +#define G_RM_RA_ZB_OPA_DECAL 0x442D18 +#define G_RM_RA_ZB_OPA_DECAL2 0x112D18 +#define G_RM_RA_ZB_OPA_INTER 0x442438 +#define G_RM_RA_ZB_OPA_INTER2 0x112438 +#define G_RM_AA_OPA_SURF 0x442048 +#define G_RM_AA_OPA_SURF2 0x112048 +#define G_RM_AA_XLU_SURF 0x4041C8 +#define G_RM_AA_XLU_SURF2 0x1041C8 +#define G_RM_AA_XLU_LINE 0x407048 +#define G_RM_AA_XLU_LINE2 0x107048 +#define G_RM_AA_DEC_LINE 0x407248 +#define G_RM_AA_DEC_LINE2 0x107248 +#define G_RM_AA_TEX_EDGE 0x443048 +#define G_RM_AA_TEX_EDGE2 0x113048 +#define G_RM_AA_SUB_SURF 0x442248 +#define G_RM_AA_SUB_SURF2 0x112248 +#define G_RM_AA_PCL_SURF 0x40004B +#define G_RM_AA_PCL_SURF2 0x10004B +#define G_RM_AA_OPA_TERR 0x402048 +#define G_RM_AA_OPA_TERR2 0x102048 +#define G_RM_AA_TEX_TERR 0x403048 +#define G_RM_AA_TEX_TERR2 0x103048 +#define G_RM_AA_SUB_TERR 0x402248 +#define G_RM_AA_SUB_TERR2 0x102248 +#define G_RM_RA_OPA_SURF 0x442008 +#define G_RM_RA_OPA_SURF2 0x112008 +#define G_RM_ZB_OPA_SURF 0x442230 +#define G_RM_ZB_OPA_SURF2 0x112230 +#define G_RM_ZB_XLU_SURF 0x404A50 +#define G_RM_ZB_XLU_SURF2 0x104A50 +#define G_RM_ZB_OPA_DECAL 0x442E10 +#define G_RM_ZB_OPA_DECAL2 0x112E10 +#define G_RM_ZB_XLU_DECAL 0x404E50 +#define G_RM_ZB_XLU_DECAL2 0x104E50 +#define G_RM_ZB_CLD_SURF 0x404B50 +#define G_RM_ZB_CLD_SURF2 0x104B50 +#define G_RM_ZB_OVL_SURF 0x404F50 +#define G_RM_ZB_OVL_SURF2 0x104F50 +#define G_RM_ZB_PCL_SURF 0x0C080233 +#define G_RM_ZB_PCL_SURF2 0x03020233 +#define G_RM_OPA_SURF 0x0C084000 +#define G_RM_OPA_SURF2 0x03024000 +#define G_RM_XLU_SURF 0x00404200 +#define G_RM_XLU_SURF2 0x00104240 +#define G_RM_CLD_SURF 0x00404340 +#define G_RM_CLD_SURF2 0x00104340 +#define G_RM_TEX_EDGE 0x0C087008 +#define G_RM_TEX_EDGE2 0x03027008 +#define G_RM_PCL_SURF 0x0C084203 +#define G_RM_PCL_SURF2 0x03024203 +#define G_RM_ADD 0x04484340 +#define G_RM_ADD2 0x01124340 +#define G_RM_NOOP 0x00000000 +#define G_RM_NOOP2 0x00000000 +#define G_RM_VISCVG 0x0C844040 +#define G_RM_VISCVG2 0x03214040 +#define G_RM_OPA_CI 0x0C080000 +#define G_RM_OPA_CI2 0x03020000 + +#define AA_EN 0x8 +#define Z_CMP 0x10 +#define Z_UPD 0x20 +#define IM_RD 0x40 +#define CLR_ON_CVG 0x80 +#define CVG_DST_CLAMP 0 +#define CVG_DST_WRAP 0x100 +#define CVG_DST_FULL 0x200 +#define CVG_DST_SAVE 0x300 +#define ZMODE_OPA 0 +#define ZMODE_INTER 0x400 +#define ZMODE_XLU 0x800 +#define ZMODE_DEC 0xc00 +#define CVG_X_ALPHA 0x1000 +#define ALPHA_CVG_SEL 0x2000 +#define FORCE_BL 0x4000 +#define TEX_EDGE 0x0000 + +class ZDisplayList : public ZResource +{ +protected: + static TextureType TexFormatToTexType(F3DZEXTexFormats fmt, F3DZEXTexSizes siz); + + void ParseF3DZEX(F3DZEXOpcode opcode, uint64_t data, int32_t i, std::string prefix, char* line); + void ParseF3DEX(F3DEXOpcode opcode, uint64_t data, std::string prefix, char* line); + + // Various Instruction Optimizations + bool SequenceCheck(std::vector sequence, int32_t startIndex); + int32_t OptimizationChecks(int32_t startIndex, std::string& output, std::string prefix); + int32_t OptimizationCheck_LoadTextureBlock(int32_t startIndex, std::string& output, + std::string prefix); + // int32_t OptimizationCheck_LoadMultiBlock(int32_t startIndex, std::string& output, std::string + // prefix); + + // F3DEX Specific Opcode Values + void Opcode_F3DEX_G_SETOTHERMODE_L(uint64_t data, char* line); + + // Shared Opcodes between F3DZEX and F3DEX + void Opcode_G_DL(uint64_t data, std::string prefix, char* line); + void Opcode_G_MODIFYVTX(uint64_t data, char* line); + void Opcode_G_CULLDL(uint64_t data, char* line); + void Opcode_G_TRI1(uint64_t data, char* line); + void Opcode_G_TRI2(uint64_t data, char* line); + void Opcode_G_MTX(uint64_t data, char* line); + void Opcode_G_VTX(uint64_t data, char* line); + void Opcode_G_TEXTURE(uint64_t data, char* line); + void Opcode_G_SETTIMG(uint64_t data, std::string prefix, char* line); + void Opcode_G_SETTILE(uint64_t data, char* line); + void Opcode_G_SETTILESIZE(uint64_t data, std::string prefix, char* line); + void Opcode_G_LOADBLOCK(uint64_t data, char* line); + void Opcode_G_SETCOMBINE(uint64_t data, char* line); + void Opcode_G_SETPRIMCOLOR(uint64_t data, char* line); + void Opcode_G_SETOTHERMODE_L(uint64_t data, char* line); + void Opcode_G_SETOTHERMODE_H(uint64_t data, char* line); + void Opcode_G_LOADTLUT(uint64_t data, std::string prefix, char* line); + void Opcode_G_ENDDL(std::string prefix, char* line); + +public: + std::string sceneSegName; + ZRoom* scene; + std::vector instructions; + std::string curPrefix; + + int32_t lastTexWidth, lastTexHeight, lastTexAddr, lastTexSeg; + F3DZEXTexFormats lastTexFmt; + F3DZEXTexSizes lastTexSiz, lastTexSizTest, lastCISiz; + bool lastTexLoaded; + bool lastTexIsPalette; + + DListType dListType; + + std::map> vertices; + std::map vtxDeclarations; + std::vector otherDLists; + + ZTexture* lastTexture = nullptr; + ZTexture* lastTlut = nullptr; + + std::vector references; + + std::string defines; // Hack for special cases where vertex arrays intersect... + std::vector fileData; + std::vector mtxList; + + ZDisplayList(ZFile* nParent); + ZDisplayList(std::vector nRawData, uint32_t rawDataIndex, int32_t rawDataSize, + ZFile* nParent); + ~ZDisplayList(); + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + + void ParseRawData() override; + + Declaration* DeclareVar(const std::string& prefix, const std::string& bodyStr); + + void TextureGenCheck(std::string prefix); + static bool TextureGenCheck(std::vector fileData, ZRoom* scene, ZFile* parent, + std::string prefix, int32_t texWidth, int32_t texHeight, + uint32_t texAddr, uint32_t texSeg, F3DZEXTexFormats texFmt, + F3DZEXTexSizes texSiz, bool texLoaded, bool texIsPalette, + ZDisplayList* self); + static int32_t GetDListLength(std::vector rawData, uint32_t rawDataIndex, + DListType dListType); + + size_t GetRawDataSize() const override; + std::string GetSourceOutputHeader(const std::string& prefix) override; + std::string GetSourceOutputCode(const std::string& prefix) override; + std::string ProcessLegacy(const std::string& prefix); + std::string ProcessGfxDis(const std::string& prefix); + + virtual void GenerateHLIntermediette(HLFileIntermediette& hlFile) override; + bool IsExternalResource() const override; + virtual std::string GetExternalExtension() const override; + std::string GetSourceTypeName() const override; + + ZResourceType GetResourceType() const override; + +protected: + std::vector dlistRawData; +}; diff --git a/tools/ZAPD/ZAPD/ZFile.cpp b/tools/ZAPD/ZAPD/ZFile.cpp new file mode 100644 index 0000000000..ed106153f5 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZFile.cpp @@ -0,0 +1,1248 @@ +#include "ZFile.h" +#include +#include +#include +#include "Directory.h" +#include "File.h" +#include "Globals.h" +#include "HighLevel/HLModelIntermediette.h" +#include "OutputFormatter.h" +#include "Path.h" +#include "ZAnimation.h" +#include "ZArray.h" +#include "ZBackground.h" +#include "ZBlob.h" +#include "ZCollision.h" +#include "ZCutscene.h" +#include "ZDisplayList.h" +#include "ZLimb.h" +#include "ZMtx.h" +#include "ZRoom/ZRoom.h" +#include "ZScalar.h" +#include "ZSkeleton.h" +#include "ZSymbol.h" +#include "ZTexture.h" +#include "ZVector.h" +#include "ZVtx.h" + +using namespace tinyxml2; + +ZFile::ZFile() +{ + resources = std::vector(); + basePath = ""; + outputPath = Directory::GetCurrentDirectory(); + declarations = std::map(); + defines = ""; + baseAddress = 0; + rangeStart = 0x000000000; + rangeEnd = 0xFFFFFFFF; +} + +ZFile::ZFile(const fs::path& nOutPath, std::string nName) : ZFile() +{ + outputPath = nOutPath; + name = nName; +} + +ZFile::ZFile(ZFileMode mode, tinyxml2::XMLElement* reader, const fs::path& nBasePath, + const fs::path& nOutPath, std::string filename, const fs::path& nXmlFilePath, + bool placeholderMode) + : ZFile() +{ + xmlFilePath = nXmlFilePath; + if (nBasePath == "") + basePath = Directory::GetCurrentDirectory(); + else + basePath = nBasePath; + + if (nOutPath == "") + outputPath = Directory::GetCurrentDirectory(); + else + outputPath = nOutPath; + + ParseXML(mode, reader, filename, placeholderMode); + DeclareResourceSubReferences(); +} + +ZFile::~ZFile() +{ + for (ZResource* res : resources) + { + delete res; + } + + for (auto d : declarations) + { + delete d.second; + } +} + +void ZFile::ParseXML(ZFileMode mode, XMLElement* reader, std::string filename, bool placeholderMode) +{ + if (filename == "") + name = reader->Attribute("Name"); + else + name = filename; + + // TODO: This should be a variable on the ZFile, but it is a large change in order to force all + // ZResource types to have a parent ZFile. + const char* gameStr = reader->Attribute("Game"); + if (reader->Attribute("Game") != nullptr) + { + if (std::string(gameStr) == "MM") + Globals::Instance->game = ZGame::MM_RETAIL; + else if (std::string(gameStr) == "SW97" || std::string(gameStr) == "OOTSW97") + Globals::Instance->game = ZGame::OOT_SW97; + else if (std::string(gameStr) == "OOT") + Globals::Instance->game = ZGame::OOT_RETAIL; + else + throw std::runtime_error( + StringHelper::Sprintf("Error: Game type %s not supported.", gameStr)); + } + + if (reader->Attribute("BaseAddress") != nullptr) + baseAddress = StringHelper::StrToL(reader->Attribute("BaseAddress"), 16); + + if (reader->Attribute("RangeStart") != nullptr) + rangeStart = StringHelper::StrToL(reader->Attribute("RangeStart"), 16); + + if (reader->Attribute("RangeEnd") != nullptr) + rangeEnd = StringHelper::StrToL(reader->Attribute("RangeEnd"), 16); + + // Commented until ZArray doesn't use a ZFile to parse it's contents anymore. + /* + if (reader->Attribute("Segment") == nullptr) + throw std::runtime_error(StringHelper::Sprintf( + "ZFile::ParseXML: Error in '%s'.\n" + "\t Missing 'Segment' attribute in File node. \n", + name.c_str())); + */ + + if (reader->Attribute("Segment") != nullptr) + { + segment = StringHelper::StrToL(reader->Attribute("Segment"), 10); + Globals::Instance->AddSegment(segment, this); + } + + std::string folderName = (basePath / Path::GetFileNameWithoutExtension(name)).string(); + + if (mode == ZFileMode::Extract) + { + if (!File::Exists((basePath / name).string())) + throw std::runtime_error( + StringHelper::Sprintf("Error! File %s does not exist.", (basePath / name).c_str())); + + rawData = File::ReadAllBytes((basePath / name).string()); + } + + std::unordered_set nameSet; + std::unordered_set outNameSet; + std::unordered_set offsetSet; + + auto nodeMap = *GetNodeMap(); + uint32_t rawDataIndex = 0; + + for (XMLElement* child = reader->FirstChildElement(); child != nullptr; + child = child->NextSiblingElement()) + { + const char* nameXml = child->Attribute("Name"); + const char* outNameXml = child->Attribute("OutName"); + const char* offsetXml = child->Attribute("Offset"); + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) + printf("%s: 0x%06X\n", nameXml, rawDataIndex); + + // Check for repeated attributes. + if (offsetXml != nullptr) + { + rawDataIndex = strtol(StringHelper::Split(offsetXml, "0x")[1].c_str(), NULL, 16); + + if (offsetSet.find(offsetXml) != offsetSet.end()) + { + throw std::runtime_error(StringHelper::Sprintf( + "ZFile::ParseXML: Error in '%s'.\n\t Repeated 'Offset' attribute: %s \n", + name.c_str(), offsetXml)); + } + offsetSet.insert(offsetXml); + } + if (outNameXml != nullptr) + { + if (outNameSet.find(outNameXml) != outNameSet.end()) + { + throw std::runtime_error(StringHelper::Sprintf( + "ZFile::ParseXML: Error in '%s'.\n\t Repeated 'OutName' attribute: %s \n", + name.c_str(), outNameXml)); + } + outNameSet.insert(outNameXml); + } + if (nameXml != nullptr) + { + if (nameSet.find(nameXml) != nameSet.end()) + { + throw std::runtime_error(StringHelper::Sprintf( + "ZFile::ParseXML: Error in '%s'.\n\t Repeated 'Name' attribute: %s \n", + name.c_str(), nameXml)); + } + nameSet.insert(nameXml); + } + + std::string nodeName = std::string(child->Name()); + + if (nodeMap.find(nodeName) != nodeMap.end()) + { + ZResource* nRes = nodeMap[nodeName](this); + + if (mode == ZFileMode::Extract) + nRes->ExtractFromXML(child, rawData, rawDataIndex); + + auto resType = nRes->GetResourceType(); + if (resType == ZResourceType::Texture) + AddTextureResource(rawDataIndex, static_cast(nRes)); + else + resources.push_back(nRes); + + rawDataIndex += nRes->GetRawDataSize(); + } + else if (std::string(child->Name()) == "File") + { + throw std::runtime_error(StringHelper::Sprintf( + "ZFile::ParseXML: Error in '%s'.\n\t Can't declare a File inside a File.\n", + name.c_str())); + } + else + { + throw std::runtime_error( + StringHelper::Sprintf("ZFile::ParseXML: Error in '%s'.\n\t Unknown element found " + "inside a File element: '%s'.\n", + name.c_str(), nodeName.c_str())); + } + } +} + +void ZFile::DeclareResourceSubReferences() +{ + for (size_t i = 0; i < resources.size(); i++) + { + resources.at(i)->DeclareReferences(name); + } +} + +void ZFile::BuildSourceFile(fs::path outputDir) +{ + std::string folderName = Path::GetFileNameWithoutExtension(outputPath.string()); + + if (!Directory::Exists(outputPath.string())) + Directory::CreateDirectory(outputPath.string()); + + GenerateSourceFiles(outputDir); +} + +std::string ZFile::GetVarName(uint32_t address) +{ + for (std::pair pair : declarations) + { + if (pair.first == address) + return pair.second->varName; + } + + return ""; +} + +std::string ZFile::GetName() const +{ + return name; +} + +const fs::path& ZFile::GetXmlFilePath() const +{ + return xmlFilePath; +} + +const std::vector& ZFile::GetRawData() const +{ + return rawData; +} + +void ZFile::ExtractResources(fs::path outputDir) +{ + std::string folderName = Path::GetFileNameWithoutExtension(outputPath.string()); + + if (!Directory::Exists(outputPath.string())) + Directory::CreateDirectory(outputPath.string()); + + if (!Directory::Exists(Globals::Instance->sourceOutputPath.string())) + Directory::CreateDirectory(Globals::Instance->sourceOutputPath.string()); + + for (ZResource* res : resources) + res->PreGenSourceFiles(); + + if (Globals::Instance->genSourceFile) + GenerateSourceFiles(outputDir); + + for (ZResource* res : resources) + { + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_INFO) + printf("Saving resource %s\n", res->GetName().c_str()); + + res->Save(outputPath); + } + + if (Globals::Instance->testMode) + GenerateHLIntermediette(); +} + +void ZFile::AddResource(ZResource* res) +{ + resources.push_back(res); +} + +ZResource* ZFile::FindResource(uint32_t rawDataIndex) +{ + for (ZResource* res : resources) + { + if (res->GetRawDataIndex() == rawDataIndex) + return res; + } + + return nullptr; +} + +std::vector ZFile::GetResourcesOfType(ZResourceType resType) +{ + std::vector resList; + + for (ZResource* res : resources) + { + if (res->GetResourceType() == resType) + resList.push_back(res); + } + + return resList; +} + +Declaration* ZFile::AddDeclaration(uint32_t address, DeclarationAlignment alignment, size_t size, + std::string varType, std::string varName, std::string body) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + Declaration* decl = new Declaration(alignment, size, varType, varName, false, body); + declarations[address] = decl; + return decl; +} + +Declaration* ZFile::AddDeclaration(uint32_t address, DeclarationAlignment alignment, + DeclarationPadding padding, size_t size, std::string varType, + std::string varName, std::string body) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + declarations[address] = + new Declaration(alignment, padding, size, varType, varName, false, body); + return declarations[address]; +} + +Declaration* ZFile::AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, + size_t size, std::string varType, std::string varName, + size_t arrayItemCnt, std::string body) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + declarations[address] = + new Declaration(alignment, size, varType, varName, true, arrayItemCnt, body); + return declarations[address]; +} + +Declaration* ZFile::AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, + size_t size, std::string varType, std::string varName, + std::string arrayItemCntStr, std::string body) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + declarations[address] = + new Declaration(alignment, size, varType, varName, true, arrayItemCntStr, body); + return declarations[address]; +} + +Declaration* ZFile::AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, + size_t size, std::string varType, std::string varName, + size_t arrayItemCnt, std::string body, bool isExternal) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + declarations[address] = + new Declaration(alignment, size, varType, varName, true, arrayItemCnt, body, isExternal); + return declarations[address]; +} + +Declaration* ZFile::AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, + DeclarationPadding padding, size_t size, + std::string varType, std::string varName, + size_t arrayItemCnt, std::string body) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + declarations[address] = + new Declaration(alignment, padding, size, varType, varName, true, arrayItemCnt, body); + return declarations[address]; +} + +Declaration* ZFile::AddDeclarationPlaceholder(uint32_t address) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + Declaration* decl; + + if (declarations.find(address) == declarations.end()) + { + decl = new Declaration(DeclarationAlignment::None, 0, "", "", false, ""); + decl->isPlaceholder = true; + declarations[address] = decl; + } + else + decl = declarations[address]; + + return decl; +} + +Declaration* ZFile::AddDeclarationPlaceholder(uint32_t address, std::string varName) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + Declaration* decl; + + if (declarations.find(address) == declarations.end()) + { + decl = new Declaration(DeclarationAlignment::None, 0, "", varName, false, ""); + decl->isPlaceholder = true; + declarations[address] = decl; + } + else + decl = declarations[address]; + + return decl; +} + +Declaration* ZFile::AddDeclarationInclude(uint32_t address, std::string includePath, size_t size, + std::string varType, std::string varName) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + if (declarations.find(address) == declarations.end()) + declarations[address] = new Declaration(includePath, size, varType, varName); + + return declarations[address]; +} + +Declaration* ZFile::AddDeclarationIncludeArray(uint32_t address, std::string includePath, + size_t size, std::string varType, + std::string varName, size_t arrayItemCnt) +{ + assert(GETSEGNUM(address) == 0); + AddDeclarationDebugChecks(address); + + if (StringHelper::StartsWith(includePath, "assets/extracted/")) + includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1]; + if (StringHelper::StartsWith(includePath, "assets/custom/")) + includePath = "assets/" + StringHelper::Split(includePath, "assets/custom/")[1]; + + auto declCheck = declarations.find(address); + + if (declCheck != declarations.end()) + { + declCheck->second->includePath = includePath; + declCheck->second->varType = varType; + declCheck->second->varName = varName; + declCheck->second->size = size; + declCheck->second->isArray = true; + declCheck->second->arrayItemCnt = arrayItemCnt; + + return declCheck->second; + } + else + { + Declaration* decl = new Declaration(includePath, size, varType, varName); + + decl->isArray = true; + decl->arrayItemCnt = arrayItemCnt; + + declarations[address] = decl; + return declarations[address]; + } +} + +void ZFile::AddDeclarationDebugChecks(uint32_t address) +{ + assert(GETSEGNUM(address) == 0); +#ifdef _DEBUG + if (address == 0x0000) + { + int32_t bp = 0; + } +#endif +} + +std::string ZFile::GetDeclarationName(uint32_t address) const +{ + return GetDeclarationName(address, + "ERROR_COULD_NOT_FIND_DECLARATION"); // Note: For now that default + // message is just for testing +} + +std::string ZFile::GetDeclarationName(uint32_t address, std::string defaultResult) const +{ + Declaration* decl = GetDeclaration(address); + if (decl != nullptr) + return decl->varName; + + return defaultResult; +} + +std::string ZFile::GetDeclarationPtrName(segptr_t segAddress) const +{ + if (segAddress == 0) + return "NULL"; + + Declaration* decl = GetDeclaration(Seg2Filespace(segAddress, baseAddress)); + + if (!Globals::Instance->HasSegment(GETSEGNUM(segAddress)) || decl == nullptr) + return StringHelper::Sprintf("0x%08X", segAddress); + + if (!decl->isArray) + return "&" + decl->varName; + + return decl->varName; +} + +Declaration* ZFile::GetDeclaration(uint32_t address) const +{ + if (declarations.find(address) != declarations.end()) + return declarations.at(address); + + return nullptr; +} + +Declaration* ZFile::GetDeclarationRanged(uint32_t address) const +{ + for (const auto decl : declarations) + { + if (address >= decl.first && address < decl.first + decl.second->size) + return decl.second; + } + + return nullptr; +} + +uint32_t ZFile::GetDeclarationRangedAddress(uint32_t address) const +{ + for (const auto decl : declarations) + { + if (address >= decl.first && address < decl.first + decl.second->size) + return decl.first; + } + + return 0xFFFFFFFF; +} + +bool ZFile::HasDeclaration(uint32_t address) +{ + return declarations.find(address) != declarations.end(); +} + +void ZFile::GenerateSourceFiles(fs::path outputDir) +{ + std::string sourceOutput = ""; + + sourceOutput += "#include \"ultra64.h\"\n"; + sourceOutput += "#include \"z64.h\"\n"; + sourceOutput += "#include \"macros.h\"\n"; + sourceOutput += GetHeaderInclude(); + + GeneratePlaceholderDeclarations(); + + // Generate Code + for (size_t i = 0; i < resources.size(); i++) + { + ZResource* res = resources.at(i); + std::string resSrc = res->GetSourceOutputCode(name); + + if (res->IsExternalResource()) + { + std::string path = Path::GetFileNameWithoutExtension(res->GetName()).c_str(); + + std::string assetOutDir = + (outputDir / Path::GetFileNameWithoutExtension(res->GetOutName())).string(); + std::string declType = res->GetSourceTypeName(); + + std::string incStr = StringHelper::Sprintf("%s.%s.inc", assetOutDir.c_str(), + res->GetExternalExtension().c_str()); + + if (res->GetResourceType() == ZResourceType::Texture) + { + ZTexture* tex = static_cast(res); + + if (!Globals::Instance->cfg.texturePool.empty()) + { + tex->CalcHash(); + + // TEXTURE POOL CHECK + if (Globals::Instance->cfg.texturePool.find(tex->hash) != + Globals::Instance->cfg.texturePool.end()) + { + incStr = Globals::Instance->cfg.texturePool[tex->hash].path.string() + "." + + res->GetExternalExtension() + ".inc"; + } + } + + incStr += ".c"; + } + else if (res->GetResourceType() == ZResourceType::Blob || + res->GetResourceType() == ZResourceType::Background) + { + incStr += ".c"; + } + + AddDeclarationIncludeArray(res->GetRawDataIndex(), incStr, res->GetRawDataSize(), + declType, res->GetName(), 0); + } + else + { + sourceOutput += resSrc; + } + + if (resSrc != "" && !res->IsExternalResource()) + sourceOutput += "\n"; + } + + sourceOutput += ProcessDeclarations(); + + std::string outPath = + (Globals::Instance->sourceOutputPath / (Path::GetFileNameWithoutExtension(name) + ".c")) + .string(); + + OutputFormatter formatter; + formatter.Write(sourceOutput); + + File::WriteAllText(outPath, formatter.GetOutput()); + + GenerateSourceHeaderFiles(); +} + +void ZFile::GenerateSourceHeaderFiles() +{ + OutputFormatter formatter; + + for (ZResource* res : resources) + { + std::string resSrc = res->GetSourceOutputHeader(""); + formatter.Write(resSrc); + + if (resSrc != "") + formatter.Write("\n"); + } + + formatter.Write(ProcessExterns()); + + fs::path headerFilename = + Globals::Instance->sourceOutputPath / (Path::GetFileNameWithoutExtension(name) + ".h"); + + File::WriteAllText(headerFilename.string(), formatter.GetOutput()); +} + +void ZFile::GenerateHLIntermediette() +{ + // This is kinda hacky but it gets the job done for now... + HLModelIntermediette* mdl = new HLModelIntermediette(); + + for (ZResource* res : resources) + { + if (res->GetResourceType() == ZResourceType::DisplayList || + res->GetResourceType() == ZResourceType::Skeleton) + res->GenerateHLIntermediette(*mdl); + } + + // std::string test = mdl->ToOBJFile(); + // std::string test2 = mdl->ToAssimpFile(); +} + +std::string ZFile::GetHeaderInclude() +{ + return StringHelper::Sprintf("#include \"%s\"\n\n", + (Path::GetFileNameWithoutExtension(name) + ".h").c_str()); +} + +void ZFile::GeneratePlaceholderDeclarations() +{ + // Generate placeholder declarations + for (ZResource* res : resources) + { + if (GetDeclaration(res->GetRawDataIndex()) == nullptr) + AddDeclarationPlaceholder(res->GetRawDataIndex(), res->GetName()); + } +} + +void ZFile::AddTextureResource(uint32_t offset, ZTexture* tex) +{ + for (auto res : resources) + assert(res->GetRawDataIndex() != offset); + + resources.push_back(tex); + texturesResources[offset] = tex; +} + +ZTexture* ZFile::GetTextureResource(uint32_t offset) const +{ + auto tex = texturesResources.find(offset); + if (tex != texturesResources.end()) + return tex->second; + + return nullptr; +} + +std::map* ZFile::GetNodeMap() +{ + static std::map nodeMap; + return &nodeMap; +} + +void ZFile::RegisterNode(std::string nodeName, ZResourceFactoryFunc* nodeFunc) +{ + std::map* nodeMap = GetNodeMap(); + (*nodeMap)[nodeName] = nodeFunc; +} + +std::string ZFile::ProcessDeclarations() +{ + std::string output = ""; + + if (declarations.size() == 0) + return output; + + defines += ProcessTextureIntersections(name); + + // Account for padding/alignment + uint32_t lastAddr = 0; + uint32_t lastSize = 0; + + // printf("RANGE START: 0x%06X - RANGE END: 0x%06X\n", rangeStart, rangeEnd); + + // Optimization: See if there are any arrays side by side that can be merged... + std::vector> declarationKeys(declarations.begin(), + declarations.end()); + + std::pair lastItem = declarationKeys.at(0); + + for (size_t i = 1; i < declarationKeys.size(); i++) + { + std::pair curItem = declarationKeys[i]; + + if (curItem.second->isArray && lastItem.second->isArray) + { + if (curItem.second->varType == lastItem.second->varType) + { + // TEST: For now just do Vtx declarations... + if (lastItem.second->varType == "static Vtx") + { + int32_t sizeDiff = curItem.first - (lastItem.first + lastItem.second->size); + + // Make sure there isn't an unaccounted inbetween these two + if (sizeDiff == 0) + { + lastItem.second->size += curItem.second->size; + lastItem.second->arrayItemCnt += curItem.second->arrayItemCnt; + lastItem.second->text += "\n" + curItem.second->text; + declarations.erase(curItem.first); + declarationKeys.erase(declarationKeys.begin() + i); + i--; + continue; + } + } + } + } + + lastItem = curItem; + } + + for (std::pair item : declarations) + ProcessDeclarationText(item.second); + + for (std::pair item : declarations) + { + while (item.second->size % 4 != 0) + item.second->size++; + + if (lastAddr != 0) + { + if (item.second->alignment == DeclarationAlignment::Align16) + { + // int32_t lastAddrSizeTest = declarations[lastAddr]->size; + int32_t curPtr = lastAddr + declarations[lastAddr]->size; + + while (curPtr % 4 != 0) + { + declarations[lastAddr]->size++; + // item.second->size++; + curPtr++; + } + + /*while (curPtr % 16 != 0) + { + char buffer[2048]; + + sprintf(buffer, "static u32 align%02X = 0;\n", curPtr); + item.second->text = buffer + item.second->text; + + declarations[lastAddr]->size += 4; + curPtr += 4; + }*/ + } + else if (item.second->alignment == DeclarationAlignment::Align8) + { + int32_t curPtr = lastAddr + declarations[lastAddr]->size; + + while (curPtr % 4 != 0) + { + declarations[lastAddr]->size++; + // item.second->size++; + curPtr++; + } + + while (curPtr % 8 != 0) + { + char buffer[2048]; + + sprintf(buffer, "static u32 align%02X = 0;\n", curPtr); + item.second->preText = buffer + item.second->preText; + + declarations[lastAddr]->size += 4; + // item.second->size += 4; + curPtr += 4; + } + } + } + + if (item.second->padding == DeclarationPadding::Pad16) + { + int32_t curPtr = item.first + item.second->size; + + while (curPtr % 4 != 0) + { + item.second->size++; + curPtr++; + } + + while (curPtr % 16 != 0) + { + item.second->postText += StringHelper::Sprintf("static u32 pad%02X = 0;\n", curPtr); + + item.second->size += 4; + curPtr += 4; + } + } + + lastAddr = item.first; + } + + // Handle unaccounted data + lastAddr = 0; + lastSize = 0; + std::vector declsAddresses; + for (const auto& item : declarations) + { + declsAddresses.push_back(item.first); + } + declsAddresses.push_back(rawData.size()); + + for (uint32_t currentAddress : declsAddresses) + { + if (currentAddress >= rangeEnd) + { + break; + } + + if (currentAddress < rangeStart) + { + lastAddr = currentAddress; + continue; + } + + if (currentAddress != lastAddr && declarations.find(lastAddr) != declarations.end()) + { + Declaration* lastDecl = declarations.at(lastAddr); + lastSize = lastDecl->size; + + if (lastAddr + lastSize > currentAddress) + { + Declaration* currentDecl = declarations.at(currentAddress); + + fprintf(stderr, + "WARNING: Intersection detected from 0x%06X:0x%06X (%s), conflicts with " + "0x%06X (%s)\n", + lastAddr, lastAddr + lastSize, lastDecl->varName.c_str(), currentAddress, + currentDecl->varName.c_str()); + } + } + + uint32_t unaccountedAddress = lastAddr + lastSize; + + if (unaccountedAddress != currentAddress && lastAddr >= rangeStart && + unaccountedAddress < rangeEnd) + { + int diff = currentAddress - unaccountedAddress; + bool nonZeroUnaccounted = false; + + std::string src = " "; + + for (int i = 0; i < diff; i++) + { + uint8_t val = rawData.at(unaccountedAddress + i); + src += StringHelper::Sprintf("0x%02X, ", val); + if (val != 0x00) + { + nonZeroUnaccounted = true; + } + + if ((i % 16 == 15) && (i != (diff - 1))) + src += "\n "; + } + + if (declarations.find(unaccountedAddress) == declarations.end()) + { + if (diff > 0) + { + std::string unaccountedPrefix = "unaccounted"; + + if (diff < 16 && !nonZeroUnaccounted) + unaccountedPrefix = "possiblePadding"; + + Declaration* decl = AddDeclarationArray( + unaccountedAddress, DeclarationAlignment::None, diff, "static u8", + StringHelper::Sprintf("%s_%06X", unaccountedPrefix.c_str(), + unaccountedAddress), + diff, src); + decl->isUnaccounted = true; + + if (Globals::Instance->warnUnaccounted) + { + if (nonZeroUnaccounted) + { + fprintf( + stderr, + "Warning in file: %s (%s)\n" + "\t A non-zero unaccounted block was found at address '0x%06X'.\n" + "\t Block size: '0x%X'.\n", + xmlFilePath.c_str(), name.c_str(), unaccountedAddress, diff); + } + else if (diff >= 16) + { + fprintf(stderr, + "Warning in file: %s (%s)\n" + "\t A big (size>=0x10) zero-only unaccounted block was found " + "at address '0x%06X'.\n" + "\t Block size: '0x%X'.\n", + xmlFilePath.c_str(), name.c_str(), unaccountedAddress, diff); + } + } + } + } + } + + lastAddr = currentAddress; + } + + // Go through include declarations + // First, handle the prototypes (static only for now) + int32_t protoCnt = 0; + for (std::pair item : declarations) + { + if (StringHelper::StartsWith(item.second->varType, "static ") && + !item.second->isUnaccounted) + { + if (item.second->isArray) + { + if (item.second->arrayItemCntStr != "") + { + output += StringHelper::Sprintf("%s %s[%s];\n", item.second->varType.c_str(), + item.second->varName.c_str(), + item.second->arrayItemCntStr.c_str()); + } + else if (item.second->arrayItemCnt == 0) + { + output += StringHelper::Sprintf("%s %s[];\n", item.second->varType.c_str(), + item.second->varName.c_str()); + } + else + { + output += StringHelper::Sprintf("%s %s[%i];\n", item.second->varType.c_str(), + item.second->varName.c_str(), + item.second->arrayItemCnt); + } + } + else + output += StringHelper::Sprintf("%s %s;\n", item.second->varType.c_str(), + item.second->varName.c_str()); + + protoCnt++; + } + } + + if (protoCnt > 0) + output += "\n"; + + // Next, output the actual declarations + for (std::pair item : declarations) + { + if (item.first < rangeStart || item.first >= rangeEnd) + { + continue; + } + + if (item.second->includePath != "") + { + if (item.second->isExternal) + { + // HACK + std::string extType = ""; + + if (item.second->varType == "Gfx") + extType = "dlist"; + else if (item.second->varType == "Vtx" || item.second->varType == "static Vtx") + extType = "vtx"; + + auto filepath = Globals::Instance->outputPath / item.second->varName; + File::WriteAllText( + StringHelper::Sprintf("%s.%s.inc", filepath.c_str(), extType.c_str()), + item.second->text); + } + + // Do not asm_process vertex arrays. They have no practical use being overridden. + // if (item.second->varType == "Vtx" || item.second->varType == "static Vtx") + if (item.second->varType != "u64" && item.second->varType != "static u64" && + item.second->varType != "u8" && item.second->varType != "static u8") + { + output += StringHelper::Sprintf( + "%s %s[] = {\n #include \"%s\"\n};\n\n", item.second->varType.c_str(), + item.second->varName.c_str(), + StringHelper::Replace(item.second->includePath, "assets/", "../assets/") + .c_str()); + } + else + { + if (item.second->arrayItemCntStr != "") + output += StringHelper::Sprintf( + "%s %s[%s] = {\n #include \"%s\"\n};\n\n", item.second->varType.c_str(), + item.second->varName.c_str(), item.second->arrayItemCntStr.c_str(), + item.second->includePath.c_str()); + else + output += StringHelper::Sprintf( + "%s %s[] = {\n #include \"%s\"\n};\n\n", item.second->varType.c_str(), + item.second->varName.c_str(), item.second->includePath.c_str()); + } + } + else if (item.second->varType != "") + { + if (item.second->preText != "") + output += item.second->preText + "\n"; + + { + if (item.second->isArray) + { + if (item.second->arrayItemCntStr != "") + { + output += StringHelper::Sprintf( + "%s %s[%s];\n", item.second->varType.c_str(), + item.second->varName.c_str(), item.second->arrayItemCntStr.c_str()); + } + else + { + if (item.second->arrayItemCnt == 0) + output += + StringHelper::Sprintf("%s %s[] = {\n", item.second->varType.c_str(), + item.second->varName.c_str()); + else + output += StringHelper::Sprintf( + "%s %s[%i] = {\n", item.second->varType.c_str(), + item.second->varName.c_str(), item.second->arrayItemCnt); + } + + output += item.second->text + "\n"; + } + else + { + output += StringHelper::Sprintf("%s %s = { ", item.second->varType.c_str(), + item.second->varName.c_str()); + output += item.second->text; + } + + if (output.back() == '\n') + output += "};"; + else + output += " };"; + } + + output += " " + item.second->rightText + "\n\n"; + + if (item.second->postText != "") + output += item.second->postText + "\n"; + } + } + + output += "\n"; + + return output; +} + +void ZFile::ProcessDeclarationText(Declaration* decl) +{ + size_t refIndex = 0; + + if (decl->references.size() > 0) + { + for (size_t i = 0; i < decl->text.size() - 1; i++) + { + char c = decl->text[i]; + char c2 = decl->text[i + 1]; + + if (c == '@' && c2 == 'r') + { + if (refIndex >= decl->references.size()) + break; + + Declaration* refDecl = GetDeclarationRanged(decl->references[refIndex]); + uint32_t refDeclAddr = GetDeclarationRangedAddress(decl->references[refIndex]); + + if (refDecl != nullptr) + { + if (refDecl->isArray) + { + if (refDecl->arrayItemCnt != 0) + { + int32_t itemSize = refDecl->size / refDecl->arrayItemCnt; + int32_t itemIndex = + (decl->references[refIndex] - refDeclAddr) / itemSize; + + decl->text.replace(i, 2, + StringHelper::Sprintf( + "&%s[%i]", refDecl->varName.c_str(), itemIndex)); + } + else + { + decl->text.replace(i, 2, + StringHelper::Sprintf("ERROR ARRAYITEMCNT = 0")); + } + } + else + { + decl->text.replace(i, 2, refDecl->varName); + } + } + else + decl->text.replace(i, 2, "ERROR"); + + refIndex++; + } + } + } +} + +std::string ZFile::ProcessExterns() +{ + std::string output = ""; + + for (std::pair item : declarations) + { + if (item.first < rangeStart || item.first >= rangeEnd) + { + continue; + } + + if (!StringHelper::StartsWith(item.second->varType, "static ") && + item.second->varType != "") // && item.second->includePath == "") + { + if (item.second->isArray) + { + if (item.second->arrayItemCnt == 0) + output += + StringHelper::Sprintf("extern %s %s[];\n", item.second->varType.c_str(), + item.second->varName.c_str()); + else + output += StringHelper::Sprintf( + "extern %s %s[%i];\n", item.second->varType.c_str(), + item.second->varName.c_str(), item.second->arrayItemCnt); + } + else + output += StringHelper::Sprintf("extern %s %s;\n", item.second->varType.c_str(), + item.second->varName.c_str()); + } + } + + output += "\n"; + + output += defines; + + return output; +} + +std::string ZFile::ProcessTextureIntersections(std::string prefix) +{ + if (texturesResources.empty()) + return ""; + + std::string defines = ""; + std::vector> texturesSorted(texturesResources.begin(), + texturesResources.end()); + + for (size_t i = 0; i < texturesSorted.size() - 1; i++) + { + uint32_t currentOffset = texturesSorted[i].first; + uint32_t nextOffset = texturesSorted[i + 1].first; + auto& currentTex = texturesResources.at(currentOffset); + int texSize = currentTex->GetRawDataSize(); + + if (currentTex->WasDeclaredInXml()) + { + // We believe the user is right. + continue; + } + + if ((currentOffset + texSize) > nextOffset) + { + uint32_t offsetDiff = nextOffset - currentOffset; + if (currentTex->isPalette) + { + // Shrink palette so it doesn't overlap + currentTex->SetDimensions(offsetDiff / currentTex->GetPixelMultiplyer(), 1); + declarations.at(currentOffset)->size = currentTex->GetRawDataSize(); + } + else + { + std::string texName = GetDeclarationPtrName(currentOffset); + std::string texNextName; + + Declaration* nextDecl = GetDeclaration(nextOffset); + if (nextDecl == nullptr) + texNextName = texturesResources.at(nextOffset)->GetName(); + else + texNextName = nextDecl->varName; + + defines += StringHelper::Sprintf("#define %s ((u32)%s + 0x%06X)\n", + texNextName.c_str(), texName.c_str(), offsetDiff); + + declarations.erase(nextOffset); + texturesResources.erase(nextOffset); + texturesSorted.erase(texturesSorted.begin() + i + 1); + + i--; + } + } + } + + return defines; +} diff --git a/tools/ZAPD/ZAPD/ZFile.h b/tools/ZAPD/ZAPD/ZFile.h new file mode 100644 index 0000000000..a3765a0a70 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZFile.h @@ -0,0 +1,119 @@ +#pragma once + +#include +#include +#include "Directory.h" +#include "ZResource.h" +#include "ZTexture.h" +#include "tinyxml2.h" + +enum class ZFileMode +{ + BuildTexture, + BuildOverlay, + BuildModelIntermediette, + BuildAnimationIntermediette, + BuildBlob, + BuildSourceFile, + BuildBackground, + Extract, + Invalid +}; + +enum class ZGame +{ + OOT_RETAIL, + OOT_SW97, + MM_RETAIL +}; + +class ZFile +{ +public: + std::map declarations; + std::string defines; + std::vector resources; + int32_t segment; + uint32_t baseAddress, rangeStart, rangeEnd; + + ZFile(const fs::path& nOutPath, std::string nName); + ZFile(ZFileMode mode, tinyxml2::XMLElement* reader, const fs::path& nBasePath, + const fs::path& nOutPath, std::string filename, const fs::path& nXmlFilePath, + bool placeholderMode); + ~ZFile(); + + std::string GetVarName(uint32_t address); + std::string GetName() const; + const fs::path& GetXmlFilePath() const; + const std::vector& GetRawData() const; + void ExtractResources(fs::path outputDir); + void BuildSourceFile(fs::path outputDir); + void AddResource(ZResource* res); + ZResource* FindResource(uint32_t rawDataIndex); + std::vector GetResourcesOfType(ZResourceType resType); + + Declaration* AddDeclaration(uint32_t address, DeclarationAlignment alignment, size_t size, + std::string varType, std::string varName, std::string body); + Declaration* AddDeclaration(uint32_t address, DeclarationAlignment alignment, + DeclarationPadding padding, size_t size, std::string varType, + std::string varName, std::string body); + Declaration* AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, size_t size, + std::string varType, std::string varName, size_t arrayItemCnt, + std::string body); + Declaration* AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, size_t size, + std::string varType, std::string varName, size_t arrayItemCnt, + std::string body, bool isExternal); + Declaration* AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, size_t size, + std::string varType, std::string varName, + std::string arrayItemCntStr, std::string body); + Declaration* AddDeclarationArray(uint32_t address, DeclarationAlignment alignment, + DeclarationPadding padding, size_t size, std::string varType, + std::string varName, size_t arrayItemCnt, std::string body); + Declaration* AddDeclarationPlaceholder(uint32_t address); + Declaration* AddDeclarationPlaceholder(uint32_t address, std::string varName); + Declaration* AddDeclarationInclude(uint32_t address, std::string includePath, size_t size, + std::string varType, std::string varName); + Declaration* AddDeclarationIncludeArray(uint32_t address, std::string includePath, size_t size, + std::string varType, std::string varName, + size_t arrayItemCnt); + std::string GetDeclarationName(uint32_t address) const; + std::string GetDeclarationName(uint32_t address, std::string defaultResult) const; + std::string GetDeclarationPtrName(segptr_t segAddress) const; + Declaration* GetDeclaration(uint32_t address) const; + Declaration* GetDeclarationRanged(uint32_t address) const; + uint32_t GetDeclarationRangedAddress(uint32_t address) const; + bool HasDeclaration(uint32_t address); + std::string GetHeaderInclude(); + void GeneratePlaceholderDeclarations(); + + void AddTextureResource(uint32_t offset, ZTexture* tex); + ZTexture* GetTextureResource(uint32_t offset) const; + + static std::map* GetNodeMap(); + static void RegisterNode(std::string nodeName, ZResourceFactoryFunc* nodeFunc); + +protected: + std::vector rawData; + std::string name; + fs::path basePath; + fs::path outputPath; + fs::path xmlFilePath; + // Keep track of every texture of this ZFile. + // The pointers declared here are "borrowed" (somebody else is the owner), + // so ZFile shouldn't delete/free those textures. + std::map texturesResources; + + ZFile(); + void ParseXML(ZFileMode mode, tinyxml2::XMLElement* reader, std::string filename, + bool placeholderMode); + void DeclareResourceSubReferences(); + void GenerateSourceFiles(fs::path outputDir); + void GenerateSourceHeaderFiles(); + void GenerateHLIntermediette(); + void AddDeclarationDebugChecks(uint32_t address); + std::string ProcessDeclarations(); + void ProcessDeclarationText(Declaration* decl); + std::string ProcessExterns(); + + std::string ProcessTextureIntersections(std::string prefix); +}; diff --git a/tools/ZAPD/ZAPD/ZLimb.cpp b/tools/ZAPD/ZAPD/ZLimb.cpp new file mode 100644 index 0000000000..ffb61e2762 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZLimb.cpp @@ -0,0 +1,688 @@ +#include "ZLimb.h" +#include +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" + +REGISTER_ZFILENODE(Limb, ZLimb); + +Struct_800A57C0::Struct_800A57C0(const std::vector& rawData, uint32_t fileOffset) +{ + unk_0 = BitConverter::ToUInt16BE(rawData, fileOffset + 0x00); + unk_2 = BitConverter::ToInt16BE(rawData, fileOffset + 0x02); + unk_4 = BitConverter::ToInt16BE(rawData, fileOffset + 0x04); + unk_6 = BitConverter::ToInt8BE(rawData, fileOffset + 0x06); + unk_7 = BitConverter::ToInt8BE(rawData, fileOffset + 0x07); + unk_8 = BitConverter::ToInt8BE(rawData, fileOffset + 0x08); + unk_9 = BitConverter::ToUInt8BE(rawData, fileOffset + 0x09); +} +Struct_800A57C0::Struct_800A57C0(const std::vector& rawData, uint32_t fileOffset, + size_t index) + : Struct_800A57C0(rawData, fileOffset + index * GetRawDataSize()) +{ +} + +std::string Struct_800A57C0::GetSourceOutputCode() const +{ + return StringHelper::Sprintf("0x%02X, %i, %i, %i, %i, %i, 0x%02X", unk_0, unk_2, unk_4, unk_6, + unk_7, unk_8, unk_9); +} + +size_t Struct_800A57C0::GetRawDataSize() +{ + return 0x0A; +} + +std::string Struct_800A57C0::GetSourceTypeName() +{ + return "Struct_800A57C0"; +} + +Struct_800A598C_2::Struct_800A598C_2(const std::vector& rawData, uint32_t fileOffset) +{ + unk_0 = BitConverter::ToUInt8BE(rawData, fileOffset + 0x00); + x = BitConverter::ToInt16BE(rawData, fileOffset + 0x02); + y = BitConverter::ToInt16BE(rawData, fileOffset + 0x04); + z = BitConverter::ToInt16BE(rawData, fileOffset + 0x06); + unk_8 = BitConverter::ToUInt8BE(rawData, fileOffset + 0x08); +} +Struct_800A598C_2::Struct_800A598C_2(const std::vector& rawData, uint32_t fileOffset, + size_t index) + : Struct_800A598C_2(rawData, fileOffset + index * GetRawDataSize()) +{ +} + +std::string Struct_800A598C_2::GetSourceOutputCode() const +{ + return StringHelper::Sprintf("0x%02X, %i, %i, %i, 0x%02X", unk_0, x, y, z, unk_8); +} + +size_t Struct_800A598C_2::GetRawDataSize() +{ + return 0x0A; +} + +std::string Struct_800A598C_2::GetSourceTypeName() +{ + return "Struct_800A598C_2"; +} + +Struct_800A598C::Struct_800A598C(ZFile* parent, const std::vector& rawData, + uint32_t fileOffset) + : parent(parent) +{ + unk_0 = BitConverter::ToUInt16BE(rawData, fileOffset + 0x00); + unk_2 = BitConverter::ToUInt16BE(rawData, fileOffset + 0x02); + unk_4 = BitConverter::ToUInt16BE(rawData, fileOffset + 0x04); + unk_8 = BitConverter::ToUInt32BE(rawData, fileOffset + 0x08); + unk_C = BitConverter::ToUInt32BE(rawData, fileOffset + 0x0C); + + if (unk_8 != 0) + { + uint32_t unk_8_Offset = Seg2Filespace(unk_8, parent->baseAddress); + for (size_t i = 0; i < unk_0; i++) + { + unk_8_arr.emplace_back(rawData, unk_8_Offset, i); + } + } + + if (unk_C != 0) + { + uint32_t unk_C_Offset = Seg2Filespace(unk_C, parent->baseAddress); + for (size_t i = 0; i < unk_2; i++) + { + unk_C_arr.emplace_back(rawData, unk_C_Offset, i); + } + } +} +Struct_800A598C::Struct_800A598C(ZFile* parent, const std::vector& rawData, + uint32_t fileOffset, size_t index) + : Struct_800A598C(parent, rawData, fileOffset + index * GetRawDataSize()) +{ +} + +void Struct_800A598C::PreGenSourceFiles(const std::string& prefix) +{ + std::string entryStr; + + if (unk_8 != 0) + { + uint32_t unk_8_Offset = Seg2Filespace(unk_8, parent->baseAddress); + std::string unk_8_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A57C0::GetSourceTypeName().c_str(), unk_8_Offset); + + size_t arrayItemCnt = unk_8_arr.size(); + entryStr = ""; + size_t i = 0; + + for (auto& child : unk_8_arr) + { + entryStr += StringHelper::Sprintf(" { %s },%s", child.GetSourceOutputCode().c_str(), + (++i < arrayItemCnt) ? "\n" : ""); + } + + Declaration* decl = parent->GetDeclaration(unk_8_Offset); + + if (decl == nullptr) + { + parent->AddDeclarationArray(unk_8_Offset, DeclarationAlignment::None, + arrayItemCnt * Struct_800A57C0::GetRawDataSize(), + Struct_800A57C0::GetSourceTypeName(), unk_8_Str, + arrayItemCnt, entryStr); + } + else + { + decl->text = entryStr; + } + } + + if (unk_C != 0) + { + uint32_t unk_C_Offset = Seg2Filespace(unk_C, parent->baseAddress); + std::string unk_C_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A598C_2::GetSourceTypeName().c_str(), unk_C_Offset); + + size_t arrayItemCnt = unk_C_arr.size(); + entryStr = ""; + size_t i = 0; + + for (auto& child : unk_C_arr) + { + entryStr += StringHelper::Sprintf(" { %s },%s", child.GetSourceOutputCode().c_str(), + (++i < arrayItemCnt) ? "\n" : ""); + } + + Declaration* decl = parent->GetDeclaration(unk_C_Offset); + if (decl == nullptr) + { + parent->AddDeclarationArray(unk_C_Offset, DeclarationAlignment::None, + arrayItemCnt * Struct_800A598C_2::GetRawDataSize(), + Struct_800A598C_2::GetSourceTypeName(), unk_C_Str, + arrayItemCnt, entryStr); + } + else + { + decl->text = entryStr; + } + } +} + +std::string Struct_800A598C::GetSourceOutputCode(const std::string& prefix) const +{ + std::string entryStr; + + std::string unk_8_Str = "NULL"; + + if (unk_8 != 0) + { + uint32_t unk_8_Offset = Seg2Filespace(unk_8, parent->baseAddress); + unk_8_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A57C0::GetSourceTypeName().c_str(), unk_8_Offset); + } + + std::string unk_C_Str = "NULL"; + + if (unk_C != 0) + { + uint32_t unk_C_Offset = Seg2Filespace(unk_C, parent->baseAddress); + unk_C_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A598C_2::GetSourceTypeName().c_str(), unk_C_Offset); + } + + entryStr = StringHelper::Sprintf("\n ARRAY_COUNTU(%s), ARRAY_COUNTU(%s),\n", + unk_8_Str.c_str(), unk_C_Str.c_str()); + entryStr += StringHelper::Sprintf(" %i, %s, %s\n ", unk_4, unk_8_Str.c_str(), + unk_C_Str.c_str()); + entryStr = StringHelper::Sprintf("\n ARRAY_COUNTU(%s), ARRAY_COUNTU(%s),\n", + unk_8_Str.c_str(), unk_C_Str.c_str()); + entryStr += StringHelper::Sprintf(" %i, %s, %s\n ", unk_4, unk_8_Str.c_str(), + unk_C_Str.c_str()); + + return entryStr; +} + +size_t Struct_800A598C::GetRawDataSize() +{ + return 0x10; +} + +std::string Struct_800A598C::GetSourceTypeName() +{ + return "Struct_800A598C"; +} + +Struct_800A5E28::Struct_800A5E28(ZFile* parent, const std::vector& nRawData, + uint32_t fileOffset) + : parent(parent), rawData(nRawData) +{ + unk_0 = BitConverter::ToUInt16BE(nRawData, fileOffset + 0x00); + unk_2 = BitConverter::ToUInt16BE(nRawData, fileOffset + 0x02); + unk_4 = BitConverter::ToUInt32BE(nRawData, fileOffset + 0x04); + unk_8 = BitConverter::ToUInt32BE(nRawData, fileOffset + 0x08); + + if (unk_4 != 0) + { + uint32_t unk_4_Offset = Seg2Filespace(unk_4, parent->baseAddress); + + for (size_t i = 0; i < unk_2; i++) + { + unk_4_arr.emplace_back(parent, nRawData, unk_4_Offset, i); + } + } +} + +Struct_800A5E28::~Struct_800A5E28() +{ + delete unk_8_dlist; +} + +void Struct_800A5E28::PreGenSourceFiles(const std::string& prefix) +{ + if (unk_4 != 0) + { + uint32_t unk_4_Offset = Seg2Filespace(unk_4, parent->baseAddress); + std::string unk_4_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A598C::GetSourceTypeName().c_str(), unk_4_Offset); + + std::string entryStr = ""; + uint16_t arrayItemCnt = unk_4_arr.size(); + + size_t i = 0; + + for (auto& child : unk_4_arr) + { + child.PreGenSourceFiles(prefix); + entryStr += + StringHelper::Sprintf(" { %s },%s", child.GetSourceOutputCode(prefix).c_str(), + (++i < arrayItemCnt) ? "\n" : ""); + } + + Declaration* decl = parent->GetDeclaration(unk_4_Offset); + + if (decl == nullptr) + { + parent->AddDeclarationArray(unk_4_Offset, DeclarationAlignment::None, + arrayItemCnt * Struct_800A598C::GetRawDataSize(), + Struct_800A598C::GetSourceTypeName(), unk_4_Str, + arrayItemCnt, entryStr); + } + else + { + decl->text = entryStr; + } + } + + if (unk_8 != 0) + { + uint32_t unk_8_Offset = Seg2Filespace(unk_8, parent->baseAddress); + + int32_t dlistLength = ZDisplayList::GetDListLength( + rawData, unk_8_Offset, + Globals::Instance->game == ZGame::OOT_SW97 ? DListType::F3DEX : DListType::F3DZEX); + unk_8_dlist = new ZDisplayList(rawData, unk_8_Offset, dlistLength, parent); + + std::string dListStr = + StringHelper::Sprintf("%sSkinLimbDL_%06X", prefix.c_str(), unk_8_Offset); + unk_8_dlist->SetName(dListStr); + unk_8_dlist->GetSourceOutputCode(prefix); + } +} + +std::string Struct_800A5E28::GetSourceOutputCode(const std::string& prefix) const +{ + std::string entryStr = ""; + + std::string unk_4_Str = "NULL"; + + if (unk_4 != 0) + { + uint32_t unk_4_Offset = Seg2Filespace(unk_4, parent->baseAddress); + Declaration* decl = parent->GetDeclaration(unk_4_Offset); + + if (decl == nullptr) + { + unk_4_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A598C::GetSourceTypeName().c_str(), unk_4_Offset); + } + else + { + unk_4_Str = decl->varName; + } + } + + std::string unk_8_Str = "NULL"; + if (unk_8 != 0) + { + uint32_t unk_8_Offset = Seg2Filespace(unk_8, parent->baseAddress); + Declaration* decl = parent->GetDeclaration(unk_8_Offset); + if (decl == nullptr) + { + // Something went wrong... + unk_8_Str = StringHelper::Sprintf("0x%08X", unk_8); + } + else + { + unk_8_Str = decl->varName; + } + } + + return StringHelper::Sprintf("\n %i, ARRAY_COUNTU(%s),\n %s, %s\n", unk_0, + unk_4_Str.c_str(), unk_4_Str.c_str(), unk_8_Str.c_str()); +} + +size_t Struct_800A5E28::GetRawDataSize() +{ + return 0x0C; +} + +std::string Struct_800A5E28::GetSourceTypeName() +{ + return "Struct_800A5E28"; +} + +ZLimb::ZLimb(ZFile* nParent) : ZResource(nParent) +{ + dListPtr = 0; + dList2Ptr = 0; + RegisterOptionalAttribute("LimbType"); + RegisterOptionalAttribute("Type"); +} + +ZLimb::ZLimb(ZLimbType limbType, const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent) + : ZLimb(nParent) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + rawDataIndex = nRawDataIndex; + parent = nParent; + type = limbType; + + name = StringHelper::Sprintf("%sLimb_%06X", prefix.c_str(), GetFileAddress()); + + ParseRawData(); +} + +void ZLimb::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + + parent->AddDeclaration(GetFileAddress(), DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), name, ""); +} + +void ZLimb::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + // Reading from a + std::string limbType = registeredAttributes.at("LimbType").value; + if (limbType == "") // Reading from a + limbType = registeredAttributes.at("Type").value; + + if (limbType == "") + { + fprintf(stderr, + "ZLimb::ParseXML: Warning in '%s'.\n" + "\t Missing 'LimbType' attribute in xml.\n" + "\t Defaulting to 'Standard'.\n", + name.c_str()); + type = ZLimbType::Standard; + } + else + { + if (limbType == "Standard") + { + type = ZLimbType::Standard; + } + else if (limbType == "LOD") + { + type = ZLimbType::LOD; + } + else if (limbType == "Skin") + { + type = ZLimbType::Skin; + } + else if (limbType == "Curve") + { + type = ZLimbType::Curve; + } + else + { + fprintf(stderr, + "ZLimb::ParseXML: Warning in '%s'.\n" + "\t Invalid LimbType found: '%s'.\n" + "\t Defaulting to 'Standard'.\n", + name.c_str(), limbType.c_str()); + type = ZLimbType::Standard; + } + } +} + +void ZLimb::ParseRawData() +{ + ZResource::ParseRawData(); + + if (type == ZLimbType::Curve) + { + childIndex = rawData.at(rawDataIndex + 0); + siblingIndex = rawData.at(rawDataIndex + 1); + + dListPtr = BitConverter::ToUInt32BE(rawData, rawDataIndex + 4); + dList2Ptr = BitConverter::ToUInt32BE(rawData, rawDataIndex + 8); + return; + } + + transX = BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + transY = BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + transZ = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + + childIndex = rawData.at(rawDataIndex + 6); + siblingIndex = rawData.at(rawDataIndex + 7); + + switch (type) + { + case ZLimbType::LOD: + dList2Ptr = BitConverter::ToUInt32BE(rawData, rawDataIndex + 12); + // Intended fallthrough + case ZLimbType::Standard: + dListPtr = BitConverter::ToUInt32BE(rawData, rawDataIndex + 8); + break; + + case ZLimbType::Skin: + skinSegmentType = + static_cast(BitConverter::ToInt32BE(rawData, rawDataIndex + 8)); + skinSegment = BitConverter::ToUInt32BE(rawData, rawDataIndex + 12); + if (skinSegmentType == ZLimbSkinType::SkinType_4 && skinSegment != 0) + { + uint32_t skinSegmentOffset = Seg2Filespace(skinSegment, parent->baseAddress); + segmentStruct = Struct_800A5E28(parent, rawData, skinSegmentOffset); + } + break; + default: + throw std::runtime_error("Invalid ZLimb type"); + break; + } +} + +size_t ZLimb::GetRawDataSize() const +{ + switch (type) + { + case ZLimbType::Standard: + case ZLimbType::Curve: + return 0x0C; + case ZLimbType::LOD: + case ZLimbType::Skin: + return 0x10; + } + + return 0x0C; +} + +std::string ZLimb::GetSourceOutputCode(const std::string& prefix) +{ + std::string limbPrefix = type == ZLimbType::Curve ? "Curve" : ""; + std::string dListStr = GetLimbDListSourceOutputCode(prefix, limbPrefix, dListPtr); + limbPrefix = type == ZLimbType::Curve ? "Curve" : "Far"; + std::string dListStr2 = GetLimbDListSourceOutputCode(prefix, limbPrefix, dList2Ptr); + + std::string entryStr = ""; + if (type != ZLimbType::Curve) + { + entryStr += StringHelper::Sprintf("\n { %i, %i, %i },", transX, transY, transZ); + } + + entryStr += StringHelper::Sprintf("\n 0x%02X, 0x%02X,\n", childIndex, siblingIndex); + + switch (type) + { + case ZLimbType::Standard: + entryStr += StringHelper::Sprintf(" %s\n", dListStr.c_str()); + break; + case ZLimbType::LOD: + case ZLimbType::Curve: + entryStr += StringHelper::Sprintf(" { %s, %s }\n", dListStr.c_str(), dListStr2.c_str()); + break; + case ZLimbType::Skin: + entryStr += GetSourceOutputCodeSkin(prefix); + break; + } + + Declaration* decl = parent->GetDeclaration(GetFileAddress()); + + if (decl == nullptr) + parent->AddDeclaration(GetFileAddress(), DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), name, entryStr); + else + decl->text = entryStr; + + return ""; +} + +std::string ZLimb::GetSourceTypeName() const +{ + return GetSourceTypeName(type); +} + +ZResourceType ZLimb::GetResourceType() const +{ + return ZResourceType::Limb; +} + +ZLimbType ZLimb::GetLimbType() +{ + return type; +} + +void ZLimb::SetLimbType(ZLimbType value) +{ + type = value; +} + +const char* ZLimb::GetSourceTypeName(ZLimbType limbType) +{ + switch (limbType) + { + case ZLimbType::Standard: + return "StandardLimb"; + case ZLimbType::LOD: + return "LodLimb"; + case ZLimbType::Skin: + return "SkinLimb"; + case ZLimbType::Curve: + return "SkelCurveLimb"; + default: + return "StandardLimb"; + } +} + +uint32_t ZLimb::GetFileAddress() +{ + return Seg2Filespace(rawDataIndex, parent->baseAddress); +} + +// Returns the ptrname of a dlist. Declares it if it has not been declared yet. +std::string ZLimb::GetLimbDListSourceOutputCode(const std::string& prefix, + const std::string& limbPrefix, segptr_t dListPtr) +{ + if (dListPtr == 0) + return "NULL"; + + uint32_t dListOffset = Seg2Filespace(dListPtr, parent->baseAddress); + + // Check if pointing past the object's size + if (dListOffset > parent->GetRawData().size()) + return StringHelper::Sprintf("0x%08X", dListPtr); + + // Check if it is already declared + Declaration* decl = parent->GetDeclaration(dListOffset); + if (decl != nullptr) + return decl->varName; + + // Check if it points to the middle of a DList + decl = parent->GetDeclarationRanged(dListOffset); + if (decl != nullptr) + { + // TODO: Figure out a way to not hardcode the "Gfx" type. + if (decl->varType == "Gfx") + { + uint32_t declAddress = parent->GetDeclarationRangedAddress(dListOffset); + if (dListOffset < declAddress + decl->size) + { + uint32_t index = (dListOffset - declAddress) / 8; + return StringHelper::Sprintf("&%s[%u]", decl->varName.c_str(), index); + } + } + } + + // Create the DList + std::string dListStr = + StringHelper::Sprintf("%s%sLimbDL_%06X", prefix.c_str(), limbPrefix.c_str(), dListOffset); + + int32_t dlistLength = ZDisplayList::GetDListLength( + rawData, dListOffset, + Globals::Instance->game == ZGame::OOT_SW97 ? DListType::F3DEX : DListType::F3DZEX); + auto dList = new ZDisplayList(rawData, dListOffset, dlistLength, parent); + dList->SetName(dListStr); + dList->GetSourceOutputCode(prefix); + return dListStr; +} + +std::string ZLimb::GetSourceOutputCodeSkin_Type_4(const std::string& prefix) +{ + assert(type == ZLimbType::Skin); + assert(skinSegmentType == ZLimbSkinType::SkinType_4); + + if (skinSegment == 0) + return "NULL"; + + uint32_t skinSegmentOffset = Seg2Filespace(skinSegment, parent->baseAddress); + + std::string struct_800A5E28_Str; + Declaration* decl = parent->GetDeclaration(skinSegmentOffset); + if (decl == nullptr) + { + struct_800A5E28_Str = + StringHelper::Sprintf("%sSkinLimb_%s_%06X", prefix.c_str(), + Struct_800A5E28::GetSourceTypeName().c_str(), skinSegmentOffset); + + segmentStruct.PreGenSourceFiles(prefix); + std::string entryStr = segmentStruct.GetSourceOutputCode(prefix); + + parent->AddDeclaration(skinSegmentOffset, DeclarationAlignment::None, + Struct_800A5E28::GetRawDataSize(), + Struct_800A5E28::GetSourceTypeName(), struct_800A5E28_Str, entryStr); + } + else + { + struct_800A5E28_Str = decl->varName; + } + + return struct_800A5E28_Str; +} + +std::string ZLimb::GetSourceOutputCodeSkin(const std::string& prefix) +{ + assert(type == ZLimbType::Skin); + + std::string skinSegmentStr = "NULL"; + + if (skinSegment != 0) + { + switch (skinSegmentType) + { + case ZLimbSkinType::SkinType_4: + skinSegmentStr = "&" + GetSourceOutputCodeSkin_Type_4(prefix); + break; + case ZLimbSkinType::SkinType_DList: + skinSegmentStr = GetLimbDListSourceOutputCode(prefix, "Skin", skinSegment); + break; + default: + fprintf(stderr, + "ZLimb::GetSourceOutputCodeSkinType: Error in '%s'.\n\t Unknown segment type " + "for SkinLimb: '%i'. \n\tPlease report this.\n", + name.c_str(), static_cast(skinSegmentType)); + break; + case ZLimbSkinType::SkinType_0: + case ZLimbSkinType::SkinType_5: + fprintf(stderr, + "ZLimb::GetSourceOutputCodeSkinType: Error in '%s'.\n\t Segment type for " + "SkinLimb not implemented: '%i'.\n", + name.c_str(), static_cast(skinSegmentType)); + skinSegmentStr = StringHelper::Sprintf("0x%08X", skinSegment); + break; + } + } + + std::string entryStr = + StringHelper::Sprintf(" 0x%02X, %s\n", skinSegmentType, skinSegmentStr.c_str()); + + return entryStr; +} diff --git a/tools/ZAPD/ZAPD/ZLimb.h b/tools/ZAPD/ZAPD/ZLimb.h new file mode 100644 index 0000000000..8172bef44c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZLimb.h @@ -0,0 +1,163 @@ +#pragma once + +#include +#include +#include +#include "ZDisplayList.h" +#include "ZFile.h" + +enum class ZLimbType +{ + Standard, + LOD, + Skin, + Curve, +}; + +// TODO: check if more types exists +enum class ZLimbSkinType +{ + SkinType_0, // Segment = 0 + SkinType_4 = 4, // Segment = segmented address // Struct_800A5E28 + SkinType_5 = 5, // Segment = 0 + SkinType_DList = 11, // Segment = DList address +}; + +class Struct_800A57C0 +{ +protected: + uint16_t unk_0; + int16_t unk_2; + int16_t unk_4; + int8_t unk_6; + int8_t unk_7; + int8_t unk_8; + uint8_t unk_9; + +public: + Struct_800A57C0(const std::vector& rawData, uint32_t fileOffset); + Struct_800A57C0(const std::vector& rawData, uint32_t fileOffset, size_t index); + + [[nodiscard]] std::string GetSourceOutputCode() const; + + static size_t GetRawDataSize(); + static std::string GetSourceTypeName(); +}; + +class Struct_800A598C_2 +{ +protected: + uint8_t unk_0; + int16_t x; + int16_t y; + int16_t z; + uint8_t unk_8; + +public: + Struct_800A598C_2(const std::vector& rawData, uint32_t fileOffset); + Struct_800A598C_2(const std::vector& rawData, uint32_t fileOffset, size_t index); + + [[nodiscard]] std::string GetSourceOutputCode() const; + + static size_t GetRawDataSize(); + static std::string GetSourceTypeName(); +}; + +class Struct_800A598C +{ +protected: + ZFile* parent; + + uint16_t unk_0; // Length of unk_8 + uint16_t unk_2; // Length of unk_C + uint16_t unk_4; // 0 or 1 // Used as an index for unk_C + segptr_t unk_8; // Struct_800A57C0* + segptr_t unk_C; // Struct_800A598C_2* + + std::vector unk_8_arr; + std::vector unk_C_arr; + +public: + Struct_800A598C(ZFile* parent, const std::vector& rawData, uint32_t fileOffset); + Struct_800A598C(ZFile* parent, const std::vector& rawData, uint32_t fileOffset, + size_t index); + + void PreGenSourceFiles(const std::string& prefix); + [[nodiscard]] std::string GetSourceOutputCode(const std::string& prefix) const; + + static size_t GetRawDataSize(); + static std::string GetSourceTypeName(); +}; + +class Struct_800A5E28 +{ +protected: + ZFile* parent; + std::vector rawData; + + uint16_t unk_0; // Vtx count + uint16_t unk_2; // Length of unk_4 + segptr_t unk_4; // Struct_800A598C* + segptr_t unk_8; // Gfx* + + std::vector unk_4_arr; + ZDisplayList* unk_8_dlist = nullptr; + +public: + Struct_800A5E28() = default; + Struct_800A5E28(ZFile* parent, const std::vector& rawData, uint32_t fileOffset); + Struct_800A5E28(ZFile* parent, const std::vector& rawData, uint32_t fileOffset, + size_t index); + ~Struct_800A5E28(); + + void PreGenSourceFiles(const std::string& prefix); + [[nodiscard]] std::string GetSourceOutputCode(const std::string& prefix) const; + + static size_t GetRawDataSize(); + static std::string GetSourceTypeName(); +}; + +class ZLimb : public ZResource +{ +protected: + ZLimbType type = ZLimbType::Standard; + + ZLimbSkinType skinSegmentType = ZLimbSkinType::SkinType_0; // Skin only + segptr_t skinSegment = 0; // Skin only + Struct_800A5E28 segmentStruct; // Skin only + segptr_t dList2Ptr; // LOD and Curve Only + + std::string GetLimbDListSourceOutputCode(const std::string& prefix, + const std::string& limbPrefix, segptr_t dListPtr); + + std::string GetSourceOutputCodeSkin(const std::string& prefix); + std::string GetSourceOutputCodeSkin_Type_4(const std::string& prefix); + +public: + segptr_t dListPtr = 0; + segptr_t farDListPtr = 0; // LOD only + int16_t transX, transY, transZ; + uint8_t childIndex, siblingIndex; + + ZLimb(ZFile* nParent); + ZLimb(ZLimbType limbType, const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent); + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + + size_t GetRawDataSize() const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + + ZLimbType GetLimbType(); + void SetLimbType(ZLimbType value); + static const char* GetSourceTypeName(ZLimbType limbType); + + uint32_t GetFileAddress(); + void SetFileAddress(uint32_t nAddress); +}; diff --git a/tools/ZAPD/ZAPD/ZMtx.cpp b/tools/ZAPD/ZAPD/ZMtx.cpp new file mode 100644 index 0000000000..7beadeef1b --- /dev/null +++ b/tools/ZAPD/ZAPD/ZMtx.cpp @@ -0,0 +1,97 @@ +#include "ZMtx.h" +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Mtx, ZMtx); + +ZMtx::ZMtx(ZFile* nParent) : ZResource(nParent) +{ +} + +ZMtx::ZMtx(const std::string& prefix, const std::vector& nRawData, uint32_t nRawDataIndex, + ZFile* nParent) + : ZResource(nParent) +{ + name = GetDefaultName(prefix.c_str(), rawDataIndex); + ExtractFromFile(nRawData, nRawDataIndex); + DeclareVar("", ""); +} + +void ZMtx::ParseRawData() +{ + ZResource::ParseRawData(); + + for (size_t i = 0; i < 4; ++i) + for (size_t j = 0; j < 4; ++j) + mtx[i][j] = BitConverter::ToInt32BE(rawData, rawDataIndex + (i * 4 + j) * 4); +} + +void ZMtx::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + DeclareVar("", ""); +} + +size_t ZMtx::GetRawDataSize() const +{ + return 64; +} + +void ZMtx::DeclareVar(const std::string& prefix, const std::string& bodyStr) const +{ + std::string auxName = name; + + if (name == "") + auxName = GetDefaultName(prefix, rawDataIndex); + + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align8, GetRawDataSize(), + GetSourceTypeName(), auxName, bodyStr); +} + +std::string ZMtx::GetBodySourceCode() +{ + std::string bodyStr = "\n"; + + for (const auto& row : mtx) + { + bodyStr += " "; + + for (int32_t val : row) + bodyStr += StringHelper::Sprintf("%-11i, ", val); + + bodyStr += "\n"; + } + + return bodyStr; +} + +std::string ZMtx::GetSourceOutputCode(const std::string& prefix) +{ + std::string bodyStr = GetBodySourceCode(); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + + if (decl == nullptr) + DeclareVar(prefix, bodyStr); + else + decl->text = bodyStr; + + return ""; +} + +std::string ZMtx::GetDefaultName(const std::string& prefix, uint32_t address) +{ + return StringHelper::Sprintf("%sMtx_%06X", prefix.c_str(), address); +} + +std::string ZMtx::GetSourceTypeName() const +{ + return "Mtx"; +} + +ZResourceType ZMtx::GetResourceType() const +{ + return ZResourceType::Mtx; +} diff --git a/tools/ZAPD/ZAPD/ZMtx.h b/tools/ZAPD/ZAPD/ZMtx.h new file mode 100644 index 0000000000..0771f29c43 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZMtx.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include "ZResource.h" + +class ZMtx : public ZResource +{ +public: + ZMtx(ZFile* nParent); + ZMtx(const std::string& prefix, const std::vector& nRawData, uint32_t nRawDataIndex, + ZFile* nParent); + + void ParseRawData() override; + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) override; + + size_t GetRawDataSize() const override; + + void DeclareVar(const std::string& prefix, const std::string& bodyStr) const; + + std::string GetBodySourceCode(); + std::string GetSourceOutputCode(const std::string& prefix) override; + static std::string GetDefaultName(const std::string& prefix, uint32_t address); + + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + +protected: + std::array, 4> mtx; +}; diff --git a/tools/ZAPD/ZAPD/ZPath.cpp b/tools/ZAPD/ZAPD/ZPath.cpp new file mode 100644 index 0000000000..39e06fb0bf --- /dev/null +++ b/tools/ZAPD/ZAPD/ZPath.cpp @@ -0,0 +1,214 @@ +#include "ZPath.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Path, ZPath); + +ZPath::ZPath(ZFile* nParent) : ZResource(nParent) +{ + numPaths = 1; + RegisterOptionalAttribute("NumPaths", "1"); +} + +void ZPath::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + + parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::Align4, pathways.size() * 8, + GetSourceTypeName(), name, pathways.size(), ""); +} + +void ZPath::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + numPaths = StringHelper::StrToL(registeredAttributes.at("NumPaths").value); + + if (numPaths < 1) + throw std::runtime_error( + StringHelper::Sprintf("ZPath::ParseXML: Fatal error in '%s'.\n" + "\t Invalid value for attribute 'NumPaths': '%i'\n", + name.c_str(), numPaths)); +} + +void ZPath::ParseRawData() +{ + ZResource::ParseRawData(); + + uint32_t currentPtr = rawDataIndex; + + for (size_t pathIndex = 0; pathIndex < numPaths; pathIndex++) + { + PathwayEntry path(parent); + path.SetRawDataIndex(currentPtr); + path.ParseRawData(); + + if (path.GetListAddress() == 0) + break; + + currentPtr += path.GetRawDataSize(); + pathways.push_back(path); + } +} + +void ZPath::DeclareReferences(const std::string& prefix) +{ + ZResource::DeclareReferences(prefix); + + for (auto& entry : pathways) + entry.DeclareReferences(prefix); +} + +std::string ZPath::GetBodySourceCode() const +{ + std::string declaration = ""; + + size_t index = 0; + for (const auto& entry : pathways) + { + declaration += StringHelper::Sprintf("\t{ %s },", entry.GetBodySourceCode().c_str()); + + if (index < pathways.size() - 1) + declaration += "\n"; + + index++; + } + + return declaration; +} + +std::string ZPath::GetSourceOutputCode(const std::string& prefix) +{ + std::string declaration = GetBodySourceCode(); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + if (decl == nullptr || decl->isPlaceholder) + parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::Align4, pathways.size() * 8, + GetSourceTypeName(), name, pathways.size(), declaration); + else + decl->text = declaration; + + return ""; +} + +std::string ZPath::GetSourceTypeName() const +{ + return "Path"; +} + +ZResourceType ZPath::GetResourceType() const +{ + return ZResourceType::Path; +} + +size_t ZPath::GetRawDataSize() const +{ + return pathways.size() * pathways.at(0).GetRawDataSize(); +} + +void ZPath::SetNumPaths(uint32_t nNumPaths) +{ + numPaths = nNumPaths; +} + +/* PathwayEntry */ + +PathwayEntry::PathwayEntry(ZFile* nParent) : ZResource(nParent) +{ +} + +void PathwayEntry::ParseRawData() +{ + ZResource::ParseRawData(); + auto parentRawData = parent->GetRawData(); + numPoints = parentRawData.at(rawDataIndex + 0); + unk1 = parentRawData.at(rawDataIndex + 1); + unk2 = BitConverter::ToInt16BE(parentRawData, rawDataIndex + 2); + listSegmentAddress = BitConverter::ToInt32BE(parentRawData, rawDataIndex + 4); + + uint32_t currentPtr = GETSEGOFFSET(listSegmentAddress); + + for (int32_t i = 0; i < numPoints; i++) + { + ZVector vec(parent); + vec.SetRawData(parentRawData); + vec.SetRawDataIndex(currentPtr); + vec.SetScalarType(ZScalarType::ZSCALAR_S16); + vec.SetDimensions(3); + vec.ParseRawData(); + + currentPtr += vec.GetRawDataSize(); + points.push_back(vec); + } +} + +void PathwayEntry::DeclareReferences(const std::string& prefix) +{ + ZResource::DeclareReferences(prefix); + if (points.empty()) + return; + + std::string declaration = ""; + + size_t index = 0; + for (const auto& point : points) + { + declaration += StringHelper::Sprintf("\t%s,", point.GetBodySourceCode().c_str()); + + if (index < points.size() - 1) + declaration += "\n"; + + index++; + } + + Declaration* decl = parent->GetDeclaration(GETSEGOFFSET(listSegmentAddress)); + if (decl == nullptr) + { + parent->AddDeclarationArray(GETSEGOFFSET(listSegmentAddress), DeclarationAlignment::Align4, + DeclarationPadding::Pad4, points.size() * 6, + points.at(0).GetSourceTypeName(), + StringHelper::Sprintf("%sPathwayList0x%06X", prefix.c_str(), + GETSEGOFFSET(listSegmentAddress)), + points.size(), declaration); + } + else + decl->text = declaration; +} + +std::string PathwayEntry::GetBodySourceCode() const +{ + std::string declaration = ""; + std::string listName = parent->GetDeclarationPtrName(listSegmentAddress); + + if (Globals::Instance->game == ZGame::MM_RETAIL) + declaration += + StringHelper::Sprintf("%i, %i, %i, %s", numPoints, unk1, unk2, listName.c_str()); + else + declaration += StringHelper::Sprintf("%i, %s", numPoints, listName.c_str()); + + return declaration; +} + +std::string PathwayEntry::GetSourceTypeName() const +{ + return "Path"; +} + +ZResourceType PathwayEntry::GetResourceType() const +{ + return ZResourceType::Path; +} + +size_t PathwayEntry::GetRawDataSize() const +{ + return 0x08; +} + +segptr_t PathwayEntry::GetListAddress() const +{ + return listSegmentAddress; +} diff --git a/tools/ZAPD/ZAPD/ZPath.h b/tools/ZAPD/ZAPD/ZPath.h new file mode 100644 index 0000000000..55fc17dc2a --- /dev/null +++ b/tools/ZAPD/ZAPD/ZPath.h @@ -0,0 +1,54 @@ +#pragma once + +#include "ZResource.h" +#include "ZVector.h" + +class PathwayEntry : public ZResource +{ +public: + PathwayEntry(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const; + + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + + size_t GetRawDataSize() const; + segptr_t GetListAddress() const; + +protected: + int32_t numPoints; + int8_t unk1; // (MM Only) + int16_t unk2; // (MM Only) + segptr_t listSegmentAddress; + std::vector points; +}; + +class ZPath : public ZResource +{ +public: + ZPath(ZFile* nParent); + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex); + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const; + std::string GetSourceOutputCode(const std::string& prefix) override; + + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + + size_t GetRawDataSize() const override; + void SetNumPaths(uint32_t nNumPaths); + +protected: + uint32_t numPaths; + std::vector pathways; +}; diff --git a/tools/ZAPD/ZAPD/ZResource.cpp b/tools/ZAPD/ZAPD/ZResource.cpp new file mode 100644 index 0000000000..55e142faa8 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZResource.cpp @@ -0,0 +1,259 @@ +#include "ZResource.h" + +#include +#include +#include "StringHelper.h" +#include "ZFile.h" + +ZResource::ZResource(ZFile* nParent) +{ + // assert(nParent != nullptr); + parent = nParent; + name = ""; + outName = ""; + sourceOutput = ""; + rawDataIndex = 0; + outputDeclaration = true; + + RegisterRequiredAttribute("Name"); + RegisterOptionalAttribute("OutName"); + RegisterOptionalAttribute("Offset"); + RegisterOptionalAttribute("Custom"); +} + +void ZResource::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + rawData = nRawData; + rawDataIndex = nRawDataIndex; + + if (reader != nullptr) + ParseXML(reader); + + ParseRawData(); + CalcHash(); +} + +void ZResource::ExtractFromFile(const std::vector& nRawData, uint32_t nRawDataIndex) +{ + rawData = nRawData; + rawDataIndex = nRawDataIndex; + + ParseRawData(); + CalcHash(); +} + +void ZResource::ParseXML(tinyxml2::XMLElement* reader) +{ + if (reader != nullptr) + { + // If it is an inner node, then 'Name' isn't required + if (isInner) + { + registeredAttributes.at("Name").isRequired = false; + } + + auto attrs = reader->FirstAttribute(); + while (attrs != nullptr) + { + std::string attrName = attrs->Name(); + bool attrDeclared = false; + + if (registeredAttributes.find(attrName) != registeredAttributes.end()) + { + registeredAttributes[attrName].value = attrs->Value(); + registeredAttributes[attrName].wasSet = true; + attrDeclared = true; + } + + if (!attrDeclared) + fprintf(stderr, + "ZResource::ParseXML: Warning while parsing '%s'.\n" + "\t Unexpected '%s' attribute in resource '%s'.\n", + parent->GetName().c_str(), attrName.c_str(), reader->Name()); + attrs = attrs->Next(); + } + + if (!canHaveInner && !reader->NoChildren()) + { + throw std::runtime_error( + StringHelper::Sprintf("ZResource::ParseXML: Fatal error in '%s'.\n" + "\t Resource '%s' with inner element/child detected.\n", + name.c_str(), reader->Name())); + } + + for (const auto& attr : registeredAttributes) + { + if (attr.second.isRequired && attr.second.value == "") + throw std::runtime_error(StringHelper::Sprintf( + "ZResource::ParseXML: Fatal error while parsing '%s'.\n" + "\t Missing required attribute '%s' in resource '%s'.\n" + "\t Aborting...", + parent->GetName().c_str(), attr.first.c_str(), reader->Name())); + } + + name = registeredAttributes.at("Name").value; + + static std::regex r("[a-zA-Z_]+[a-zA-Z0-9_]*", std::regex::icase | std::regex::optimize); + + if (!isInner || (isInner && name != "")) + { + if (!std::regex_match(name, r)) + { + throw std::domain_error( + StringHelper::Sprintf("ZResource::ParseXML: Fatal error in '%s'.\n" + "\t Resource with invalid 'Name' attribute.\n", + name.c_str())); + } + } + + outName = registeredAttributes.at("OutName").value; + if (outName == "") + outName = name; + + isCustomAsset = registeredAttributes["Custom"].wasSet; + + declaredInXml = true; + } +} + +void ZResource::Save(const fs::path& outFolder) +{ +} + +void ZResource::PreGenSourceFiles() +{ +} + +const std::string& ZResource::GetName() const +{ + return name; +} + +const std::string& ZResource::GetOutName() const +{ + return outName; +} + +void ZResource::SetOutName(const std::string& nName) +{ + outName = nName; +} + +void ZResource::SetName(const std::string& nName) +{ + name = nName; +} + +bool ZResource::IsExternalResource() const +{ + return false; +} + +bool ZResource::DoesSupportArray() const +{ + return false; +} + +std::string ZResource::GetExternalExtension() const +{ + return ""; +} + +const std::vector& ZResource::GetRawData() const +{ + return rawData; +} + +void ZResource::SetRawData(const std::vector& nData) +{ + rawData = nData; +} + +bool ZResource::WasDeclaredInXml() const +{ + return declaredInXml; +} + +uint32_t ZResource::GetRawDataIndex() const +{ + return rawDataIndex; +} + +void ZResource::SetRawDataIndex(uint32_t value) +{ + rawDataIndex = value; +} + +std::string ZResource::GetBodySourceCode() const +{ + return "ERROR"; +} + +std::string ZResource::GetSourceOutputCode(const std::string& prefix) +{ + return ""; +} + +std::string ZResource::GetSourceOutputHeader(const std::string& prefix) +{ + return ""; +} + +void ZResource::ParseRawData() +{ +} + +void ZResource::DeclareReferences(const std::string& prefix) +{ +} + +void ZResource::GenerateHLIntermediette(HLFileIntermediette& hlFile) +{ +} + +std::string ZResource::GetSourceTypeName() const +{ + return "u8"; +} + +ZResourceType ZResource::GetResourceType() const +{ + return ZResourceType::Error; +} + +void ZResource::CalcHash() +{ + hash = 0; +} + +void ZResource::SetInnerNode(bool inner) +{ + isInner = inner; +} + +void ZResource::RegisterRequiredAttribute(const std::string& attr) +{ + ResourceAttribute resAtrr; + resAtrr.key = attr; + resAtrr.isRequired = true; + registeredAttributes[attr] = resAtrr; +} + +void ZResource::RegisterOptionalAttribute(const std::string& attr, const std::string& defaultValue) +{ + ResourceAttribute resAtrr; + resAtrr.key = attr; + resAtrr.value = defaultValue; + registeredAttributes[attr] = resAtrr; +} + +uint32_t Seg2Filespace(segptr_t segmentedAddress, uint32_t parentBaseAddress) +{ + uint32_t currentPtr = GETSEGOFFSET(segmentedAddress); + + if (GETSEGNUM(segmentedAddress) == 0x80) // Is defined in code? + currentPtr -= GETSEGOFFSET(parentBaseAddress); + + return currentPtr; +} diff --git a/tools/ZAPD/ZAPD/ZResource.h b/tools/ZAPD/ZAPD/ZResource.h new file mode 100644 index 0000000000..24f1f561f1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZResource.h @@ -0,0 +1,153 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "Declaration.h" +#include "tinyxml2.h" + +#include "Directory.h" + +#define SEGMENT_SCENE 2 +#define SEGMENT_ROOM 3 +#define SEGMENT_KEEP 4 +#define SEGMENT_FIELDDANGEON_KEEP 5 +#define SEGMENT_OBJECT 6 +#define SEGMENT_LINKANIMETION 7 + +#define GETSEGOFFSET(x) (x & 0x00FFFFFF) +#define GETSEGNUM(x) ((x >> 24) & 0xFF) + +typedef uint32_t segptr_t; + +class ZFile; +class HLFileIntermediette; + +enum class ZResourceType +{ + Error, + Animation, + Array, + Background, + Blob, + CollisionHeader, + Cutscene, + DisplayList, + Limb, + Mtx, + Path, + Room, + RoomCommand, + Scalar, + Skeleton, + String, + Symbol, + Texture, + Vector, + Vertex, +}; + +class ResourceAttribute +{ +public: + std::string key = ""; + std::string value = ""; + bool isRequired = false; + bool wasSet = false; +}; + +class ZResource +{ +public: + ZFile* parent; + bool outputDeclaration = true; + uint32_t hash = 0; + + ZResource(ZFile* nParent); + virtual ~ZResource() = default; + + // Parsing from File + virtual void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex); + virtual void ExtractFromFile(const std::vector& nRawData, uint32_t nRawDataIndex); + + // Misc + virtual void ParseXML(tinyxml2::XMLElement* reader); + virtual void ParseRawData(); + virtual void DeclareReferences(const std::string& prefix); + virtual std::string GetBodySourceCode() const; + + virtual std::string GetSourceOutputCode(const std::string& prefix); + virtual std::string GetSourceOutputHeader(const std::string& prefix); + virtual void PreGenSourceFiles(); + virtual void GenerateHLIntermediette(HLFileIntermediette& hlFile); + virtual void CalcHash(); + virtual void Save(const fs::path& outFolder); + + // Properties + virtual bool IsExternalResource() const; + virtual bool DoesSupportArray() const; // Can this type be wrapped in an node? + virtual std::string GetSourceTypeName() const; + virtual ZResourceType GetResourceType() const = 0; + virtual std::string GetExternalExtension() const; + + // Getters/Setters + const std::string& GetName() const; + void SetName(const std::string& nName); + const std::string& GetOutName() const; + void SetOutName(const std::string& nName); + virtual uint32_t GetRawDataIndex() const; + virtual void SetRawDataIndex(uint32_t value); + virtual size_t GetRawDataSize() const = 0; + virtual const std::vector& GetRawData() const; + virtual void SetRawData(const std::vector& nData); + void SetInnerNode(bool inner); + bool WasDeclaredInXml() const; + +protected: + std::string name; + std::string outName; + std::vector rawData; + uint32_t rawDataIndex; + std::string sourceOutput; + bool isInner = false; // Is this resource an inner node of another resource? inside of + bool canHaveInner = false; // Can this type have an inner node? + bool isCustomAsset; // If set to true, create a reference for the asset in the file, but don't + // actually try to extract it from the file + bool declaredInXml = false; + + // Reading from this XMLs attributes should be performed in the overrided `ParseXML` method. + std::map registeredAttributes; + + // XML attributes registers. + // Registering XML attributes should be done in constructors. + + // The resource needs this attribute. If it is not provided, then the program will throw an + // exception. + void RegisterRequiredAttribute(const std::string& attr); + // Optional attribute. The resource has to do manual checks and manual warnings. It may or may + // not have a value. + void RegisterOptionalAttribute(const std::string& attr, const std::string& defaultValue = ""); +}; + +uint32_t Seg2Filespace(segptr_t segmentedAddress, uint32_t parentBaseAddress); + +typedef ZResource*(ZResourceFactoryFunc)(ZFile* nParent); + +#define REGISTER_ZFILENODE(nodeName, zResClass) \ + static ZResource* ZResourceFactory_##zResClass_##nodeName(ZFile* nParent) \ + { \ + return static_cast(new zResClass(nParent)); \ + } \ + \ + class ZRes_##nodeName \ + { \ + public: \ + ZRes_##nodeName() \ + { \ + ZFile::RegisterNode(#nodeName, &ZResourceFactory_##zResClass_##nodeName); \ + } \ + }; \ + static ZRes_##nodeName inst_ZRes_##nodeName diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.cpp new file mode 100644 index 0000000000..3f64af168f --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.cpp @@ -0,0 +1,20 @@ +#include "EndMarker.h" + +EndMarker::EndMarker(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +std::string EndMarker::GetBodySourceCode() const +{ + return "SCENE_CMD_END()"; +} + +std::string EndMarker::GetCommandCName() const +{ + return "SCmdEndMarker"; +} + +RoomCommand EndMarker::GetRoomCommand() const +{ + return RoomCommand::EndMarker; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.h b/tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.h new file mode 100644 index 0000000000..daa477c945 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/EndMarker.h @@ -0,0 +1,13 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class EndMarker : public ZRoomCommand +{ +public: + EndMarker(ZFile* nParent); + + std::string GetBodySourceCode() const override; + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp new file mode 100644 index 0000000000..18cfd1ef61 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.cpp @@ -0,0 +1,97 @@ +#include "SetActorCutsceneList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetActorCutsceneList::SetActorCutsceneList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetActorCutsceneList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + int numCutscenes = cmdArg1; + int32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numCutscenes; i++) + { + ActorCutsceneEntry entry(parent->GetRawData(), currentPtr); + cutscenes.push_back(entry); + + currentPtr += 16; + } +} + +void SetActorCutsceneList::DeclareReferences(const std::string& prefix) +{ + if (cutscenes.size() > 0) + { + std::string declaration = ""; + + for (size_t i = 0; i < cutscenes.size(); i++) + { + const auto& entry = cutscenes.at(i); + declaration += StringHelper::Sprintf(" { %s },", entry.GetBodySourceCode().c_str()); + + if (i + 1 < cutscenes.size()) + { + declaration += "\n"; + } + } + + std::string typeName = cutscenes.at(0).GetSourceTypeName(); + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::Align4, cutscenes.size() * 16, typeName, + StringHelper::Sprintf("%s%sList_%06X", prefix.c_str(), typeName.c_str(), segmentOffset), + 0, declaration); + } +} + +std::string SetActorCutsceneList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ACTOR_CUTSCENE_LIST(%i, %s)", cutscenes.size(), + listName.c_str()); +} + +size_t SetActorCutsceneList::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + (cutscenes.size() * 16); +} + +std::string SetActorCutsceneList::GetCommandCName() const +{ + return "SCmdCutsceneActorList"; +} + +RoomCommand SetActorCutsceneList::GetRoomCommand() const +{ + return RoomCommand::SetActorCutsceneList; +} + +ActorCutsceneEntry::ActorCutsceneEntry(const std::vector& rawData, uint32_t rawDataIndex) + : priority(BitConverter::ToInt16BE(rawData, rawDataIndex + 0)), + length(BitConverter::ToInt16BE(rawData, rawDataIndex + 2)), + unk4(BitConverter::ToInt16BE(rawData, rawDataIndex + 4)), + unk6(BitConverter::ToInt16BE(rawData, rawDataIndex + 6)), + additionalCutscene(BitConverter::ToInt16BE(rawData, rawDataIndex + 8)), + sound(rawData[rawDataIndex + 0xA]), unkB(rawData[rawDataIndex + 0xB]), + unkC(BitConverter::ToInt16BE(rawData, rawDataIndex + 0xC)), unkE(rawData[rawDataIndex + 0xE]), + letterboxSize(rawData[rawDataIndex + 0xF]) +{ +} + +std::string ActorCutsceneEntry::GetBodySourceCode() const +{ + return StringHelper::Sprintf("%i, %i, %i, %i, %i, %i, %i, %i, %i, %i", priority, length, unk4, + unk6, additionalCutscene, sound, unkB, unkC, unkE, letterboxSize); +} + +std::string ActorCutsceneEntry::GetSourceTypeName() const +{ + return "ActorCutscene"; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.h new file mode 100644 index 0000000000..d36dd4c2ff --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorCutsceneList.h @@ -0,0 +1,42 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class ActorCutsceneEntry +{ +protected: + int16_t priority; + int16_t length; + int16_t unk4; + int16_t unk6; + int16_t additionalCutscene; + uint8_t sound; + uint8_t unkB; + int16_t unkC; + uint8_t unkE; + uint8_t letterboxSize; + +public: + ActorCutsceneEntry(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + std::string GetSourceTypeName() const; +}; + +class SetActorCutsceneList : public ZRoomCommand +{ +public: + SetActorCutsceneList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + +private: + std::vector cutscenes; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.cpp new file mode 100644 index 0000000000..b93623b986 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.cpp @@ -0,0 +1,151 @@ +#include "SetActorList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZNames.h" +#include "ZRoom/ZRoom.h" + +SetActorList::SetActorList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetActorList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + numActors = cmdArg1; + + uint32_t currentPtr = segmentOffset; + + for (size_t i = 0; i < numActors; i++) + { + ActorSpawnEntry entry(parent->GetRawData(), currentPtr); + + currentPtr += entry.GetRawDataSize(); + actors.push_back(entry); + } +} + +void SetActorList::DeclareReferences(const std::string& prefix) +{ + if (!actors.empty()) + { + std::string declaration = ""; + + size_t index = 0; + for (const auto& entry : actors) + { + declaration += + StringHelper::Sprintf("\t{ %s }, // 0x%06X", entry.GetBodySourceCode().c_str(), + segmentOffset + (index * 16)); + + if (index < actors.size() - 1) + declaration += "\n"; + + index++; + } + + const auto& entry = actors.front(); + + DeclarationPadding padding = DeclarationPadding::Pad16; + if (Globals::Instance->game == ZGame::MM_RETAIL) + padding = DeclarationPadding::None; + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::Align4, padding, + actors.size() * entry.GetRawDataSize(), entry.GetSourceTypeName(), + StringHelper::Sprintf("%sActorList_%06X", prefix.c_str(), segmentOffset), + GetActorListArraySize(), declaration); + } +} + +std::string SetActorList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ACTOR_LIST(%i, %s)", numActors, listName.c_str()); +} + +size_t SetActorList::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + ((int32_t)actors.size() * 16); +} + +size_t SetActorList::GetActorListArraySize() const +{ + size_t actorCount = 0; + + // Doing an else-if here so we only do the loop when the game is SW97. + // Actor 0x22 is removed from SW97, so we need to ensure that we don't increment the actor count + // for it. + if (Globals::Instance->game == ZGame::OOT_SW97) + { + actorCount = 0; + + for (const auto& entry : actors) + if (entry.GetActorId() != 0x22) + actorCount++; + } + else + { + actorCount = actors.size(); + } + + return actorCount; +} + +std::string SetActorList::GetCommandCName() const +{ + return "SCmdActorList"; +} + +RoomCommand SetActorList::GetRoomCommand() const +{ + return RoomCommand::SetActorList; +} + +ActorSpawnEntry::ActorSpawnEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + actorNum = BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + posX = BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + posY = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + posZ = BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + rotX = BitConverter::ToInt16BE(rawData, rawDataIndex + 8); + rotY = BitConverter::ToInt16BE(rawData, rawDataIndex + 10); + rotZ = BitConverter::ToInt16BE(rawData, rawDataIndex + 12); + initVar = BitConverter::ToInt16BE(rawData, rawDataIndex + 14); +} + +std::string ActorSpawnEntry::GetBodySourceCode() const +{ + std::string body = "\n"; + + body += "\t\t" + ZNames::GetActorName(actorNum) + ",\n"; + body += StringHelper::Sprintf("\t\t{ %6i, %6i, %6i },\n", posX, posY, posZ); + if (Globals::Instance->game == ZGame::MM_RETAIL) + body += StringHelper::Sprintf("\t\t{ SPAWN_ROT_FLAGS(%i, 0x%04X), SPAWN_ROT_FLAGS(%i, " + "0x%04X), SPAWN_ROT_FLAGS(%i, 0x%04X)},\n", + (rotX >> 7) & 0b111111111, rotX & 0b1111111, + (rotY >> 7) & 0b111111111, rotY & 0b1111111, + (rotZ >> 7) & 0b111111111, rotZ & 0b1111111); + else + body += StringHelper::Sprintf("\t\t{ %6i, %6i, %6i },\n", rotX, rotY, rotZ); + body += StringHelper::Sprintf("\t\t0x%04X\n ", initVar); + + return body; +} + +std::string ActorSpawnEntry::GetSourceTypeName() const +{ + return "ActorEntry"; +} + +int32_t ActorSpawnEntry::GetRawDataSize() const +{ + return 16; +} + +uint16_t ActorSpawnEntry::GetActorId() const +{ + return actorNum; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.h new file mode 100644 index 0000000000..bb4091fe3e --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetActorList.h @@ -0,0 +1,47 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class ActorSpawnEntry +{ +public: + ActorSpawnEntry(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + + std::string GetSourceTypeName() const; + int32_t GetRawDataSize() const; + + uint16_t GetActorId() const; + +protected: + uint16_t actorNum; + int16_t posX; + int16_t posY; + int16_t posZ; + int16_t rotX; + int16_t rotY; + int16_t rotZ; + uint16_t initVar; +}; + +class SetActorList : public ZRoomCommand +{ +public: + SetActorList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +protected: + size_t GetActorListArraySize() const; + + uint8_t numActors; + std::vector actors; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp new file mode 100644 index 0000000000..c5f9387bd6 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.cpp @@ -0,0 +1,70 @@ +#include "SetAlternateHeaders.h" + +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" + +SetAlternateHeaders::SetAlternateHeaders(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetAlternateHeaders::DeclareReferences(const std::string& prefix) +{ + if (segmentOffset != 0) + parent->AddDeclarationPlaceholder(segmentOffset); +} + +void SetAlternateHeaders::ParseRawDataLate() +{ + int numHeaders = zRoom->GetDeclarationSizeFromNeighbor(segmentOffset) / 4; + + for (int32_t i = 0; i < numHeaders; i++) + { + int32_t address = BitConverter::ToInt32BE(parent->GetRawData(), segmentOffset + (i * 4)); + headers.push_back(address); + + if (address != 0) + zRoom->commandSets.push_back(CommandSet(address)); + } +} + +void SetAlternateHeaders::DeclareReferencesLate(const std::string& prefix) +{ + if (!headers.empty()) + { + std::string declaration = ""; + + for (size_t i = 0; i < headers.size(); i++) + { + if (headers.at(i) == 0) + declaration += StringHelper::Sprintf("\tNULL,"); + else + declaration += + StringHelper::Sprintf("\t%sSet%04X,", prefix.c_str(), GETSEGOFFSET(headers[i])); + + if (i + 1 < headers.size()) + declaration += "\n"; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, headers.size() * 4, "SCmdBase*", + StringHelper::Sprintf("%sAlternateHeaders0x%06X", prefix.c_str(), segmentOffset), 0, + declaration); + } +} + +std::string SetAlternateHeaders::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ALTERNATE_HEADER_LIST(%s)", listName.c_str()); +} + +std::string SetAlternateHeaders::GetCommandCName() const +{ + return "SCmdAltHeaders"; +} + +RoomCommand SetAlternateHeaders::GetRoomCommand() const +{ + return RoomCommand::SetAlternateHeaders; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.h new file mode 100644 index 0000000000..e6e7baf45c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAlternateHeaders.h @@ -0,0 +1,22 @@ +#pragma once + +#include "ZRoom/ZRoom.h" +#include "ZRoom/ZRoomCommand.h" + +class SetAlternateHeaders : public ZRoomCommand +{ +public: + SetAlternateHeaders(ZFile* nParent); + + void DeclareReferences(const std::string& prefix) override; + void ParseRawDataLate() override; + void DeclareReferencesLate(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + std::vector headers; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp new file mode 100644 index 0000000000..de0d05b068 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.cpp @@ -0,0 +1,412 @@ +#include "SetAnimatedMaterialList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetAnimatedMaterialList::SetAnimatedMaterialList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetAnimatedMaterialList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + int32_t currentPtr = segmentOffset; + bool keepGoing = true; + + do + { + AnimatedMaterial lastTexture(parent->GetRawData(), currentPtr); + keepGoing = (lastTexture.segment != 0) && (lastTexture.segment > -1); + currentPtr += 8; + textures.push_back(lastTexture); + } while (keepGoing); +} + +void SetAnimatedMaterialList::DeclareReferences(const std::string& prefix) +{ + std::string nameStr = + StringHelper::Sprintf("%sAnimatedMaterialList0x%06X", prefix.c_str(), segmentOffset); + + for (auto& texture : textures) + { + size_t declSize = 0; + std::string declTypeName = ""; + std::string declName = StringHelper::Sprintf("%sAnimatedMaterialParams0x%06X", + prefix.c_str(), texture.segmentOffset); + std::string declaration = ""; + size_t index = 0; + + switch (texture.type) + { + case 0: + case 1: + for (const auto& param : texture.params) + { + declaration += param->GenerateSourceCode(zRoom, texture.segmentOffset); + + if (index < texture.params.size() - 1) + declaration += "\n"; + + index++; + } + + declSize = texture.params.size() * 4; + declTypeName = "AnimatedMatTexScrollParams"; + + parent->AddDeclarationArray(texture.segmentOffset, DeclarationAlignment::Align4, + declSize, declTypeName, declName, texture.params.size(), + declaration); + break; + case 2: + case 3: + case 4: + declSize = texture.params.at(0)->GetParamsSize(); + declTypeName = "AnimatedMatColorParams"; + declaration = texture.params.at(0)->GenerateSourceCode(zRoom, texture.segmentOffset); + + parent->AddDeclaration(texture.segmentOffset, DeclarationAlignment::Align4, declSize, + declTypeName, declName, + StringHelper::Sprintf("\n\t%s\n", declaration.c_str())); + break; + case 5: + declSize = texture.params.at(0)->GetParamsSize(); + declTypeName = "AnimatedMatTexCycleParams"; + declaration = texture.params.at(0)->GenerateSourceCode(zRoom, texture.segmentOffset); + + parent->AddDeclaration(texture.segmentOffset, DeclarationAlignment::Align4, declSize, + declTypeName, declName, + StringHelper::Sprintf("\n\t%s\n", declaration.c_str())); + break; + case 6: + continue; + + default: + throw std::runtime_error( + StringHelper::Sprintf("Error in SetAnimatedMaterialList::DeclareReferences (%s)\n" + "\t Unknown texture.type: %i\n", + nameStr.c_str(), texture.type)); + } + } + + if (!textures.empty()) + { + std::string declaration = ""; + + for (size_t i = 0; i < textures.size(); i++) + { + std::string textureName = parent->GetDeclarationPtrName(textures.at(i).segmentAddress); + + declaration += StringHelper::Sprintf("\t{ %2i, %2i, %s },", textures.at(i).segment, + textures.at(i).type, textureName.c_str()); + + if (i + 1 < textures.size()) + declaration += "\n"; + } + + parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::Align4, + DeclarationPadding::Pad16, textures.size() * 8, + "AnimatedMaterial", nameStr, textures.size(), declaration); + } +} + +std::string SetAnimatedMaterialList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ANIMATED_MATERIAL_LIST(%s)", listName.c_str()); +} + +size_t SetAnimatedMaterialList::GetRawDataSize() const +{ + size_t paramsSize = 0; + for (const auto& texture : textures) + { + for (const auto& param : texture.params) + { + paramsSize += param->GetParamsSize(); + } + } + + return ZRoomCommand::GetRawDataSize() + paramsSize; +} + +std::string SetAnimatedMaterialList::GetCommandCName() const +{ + return "SCmdTextureAnimations"; +} + +RoomCommand SetAnimatedMaterialList::GetRoomCommand() const +{ + return RoomCommand::SetAnimatedMaterialList; +} + +AnimatedMaterial::AnimatedMaterial(const std::vector& rawData, uint32_t rawDataIndex) + : segment(rawData.at(rawDataIndex)), type(BitConverter::ToInt16BE(rawData, rawDataIndex + 2)) +{ + segmentAddress = BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + segmentOffset = GETSEGOFFSET(segmentAddress); + + switch (type) + { + case 0: + params.push_back(std::make_shared(rawData, segmentOffset)); + break; + case 1: + params.push_back(std::make_shared(rawData, segmentOffset)); + params.push_back(std::make_shared(rawData, segmentOffset + 4)); + break; + case 2: + case 3: + case 4: + params.push_back(std::make_shared(rawData, segmentOffset, type)); + break; + case 5: + params.push_back(std::make_shared(rawData, segmentOffset)); + break; + case 6: // Some terminator when there are no animated textures? + break; + } +} + +ScrollingTexture::ScrollingTexture(const std::vector& rawData, uint32_t rawDataIndex) + : xStep(rawData.at(rawDataIndex + 0)), yStep(rawData.at(rawDataIndex + 1)), + width(rawData.at(rawDataIndex + 2)), height(rawData.at(rawDataIndex + 3)) +{ +} + +std::string ScrollingTexture::GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) +{ + return StringHelper::Sprintf(" { %i, %i, 0x%02X, 0x%02X },", xStep, yStep, width, height); +} + +size_t ScrollingTexture::GetParamsSize() +{ + return 4; +} + +F3DPrimColor::F3DPrimColor(const std::vector& rawData, uint32_t rawDataIndex) + : r(rawData.at(rawDataIndex + 0)), g(rawData.at(rawDataIndex + 1)), + b(rawData.at(rawDataIndex + 2)), a(rawData.at(rawDataIndex + 3)), + lodFrac(rawData.at(rawDataIndex + 4)) +{ +} + +FlashingTextureEnvColor::FlashingTextureEnvColor(const std::vector& rawData, + uint32_t rawDataIndex) + : r(rawData.at(rawDataIndex + 0)), g(rawData.at(rawDataIndex + 1)), + b(rawData.at(rawDataIndex + 2)), a(rawData.at(rawDataIndex + 3)) +{ +} + +FlashingTexture::FlashingTexture(const std::vector& rawData, uint32_t rawDataIndex, + int32_t type) + : cycleLength(BitConverter::ToUInt16BE(rawData, rawDataIndex + 0)), + numKeyFrames(BitConverter::ToUInt16BE(rawData, rawDataIndex + 2)) +{ + uint16_t length = (type == 2) ? cycleLength : numKeyFrames; + + primColorSegmentAddr = BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + envColorSegmentAddr = BitConverter::ToInt32BE(rawData, rawDataIndex + 8); + keyFrameSegmentAddr = BitConverter::ToInt32BE(rawData, rawDataIndex + 12); + + primColorSegmentOffset = GETSEGOFFSET(primColorSegmentAddr); + envColorSegmentOffset = GETSEGOFFSET(envColorSegmentAddr); + keyFrameSegmentOffset = GETSEGOFFSET(keyFrameSegmentAddr); + + int32_t currentPtr = primColorSegmentOffset; + for (uint16_t i = 0; i < length; i++) + { + primColors.push_back(F3DPrimColor(rawData, currentPtr)); + currentPtr += 5; + } + + currentPtr = envColorSegmentOffset; + for (uint16_t i = 0; i < length; i++) + { + envColors.push_back(FlashingTextureEnvColor(rawData, currentPtr)); + currentPtr += 4; + } + + currentPtr = keyFrameSegmentOffset; + for (uint16_t i = 0; i < length; i++) + { + keyFrames.push_back(BitConverter::ToUInt16BE(rawData, currentPtr)); + currentPtr += 2; + } +} + +std::string FlashingTexture::GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) +{ + if (primColorSegmentOffset != 0) + { + std::string declaration = ""; + size_t index = 0; + + for (F3DPrimColor& color : primColors) + { + declaration += StringHelper::Sprintf(" { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X },", + color.r, color.g, color.b, color.a, color.lodFrac); + + if (index < primColors.size() - 1) + declaration += "\n"; + + index++; + } + + zRoom->parent->AddDeclarationArray( + primColorSegmentOffset, DeclarationAlignment::Align4, primColors.size() * 5, + "F3DPrimColor", + StringHelper::Sprintf("%sAnimatedMaterialPrimColor_%06X", zRoom->GetName().c_str(), + primColorSegmentOffset), + primColors.size(), declaration); + } + + if (envColorSegmentOffset != 0) + { + std::string declaration = ""; + size_t index = 0; + + for (FlashingTextureEnvColor& color : envColors) + { + declaration += StringHelper::Sprintf(" { 0x%02X, 0x%02X, 0x%02X, 0x%02X },", color.r, + color.g, color.b, color.a); + + if (index < envColors.size() - 1) + declaration += "\n"; + + index++; + } + + zRoom->parent->AddDeclarationArray( + envColorSegmentOffset, DeclarationAlignment::Align4, envColors.size() * 4, + "Color_RGBA8", + StringHelper::Sprintf("%sAnimatedMaterialEnvColors0x%06X", zRoom->GetName().c_str(), + envColorSegmentOffset), + envColors.size(), declaration); + } + + if (keyFrameSegmentOffset != 0) + { + std::string declaration = ""; + size_t index = 0; + + for (uint16_t keyFrame : keyFrames) + { + declaration += StringHelper::Sprintf(" 0x%02X,", keyFrame); + + if (index < keyFrames.size() - 1) + declaration += "\n"; + + index++; + } + + zRoom->parent->AddDeclarationArray( + keyFrameSegmentOffset, DeclarationAlignment::Align4, keyFrames.size() * 2, "u16", + StringHelper::Sprintf("%sAnimatedMaterialKeyFrames0x%06X", zRoom->GetName().c_str(), + keyFrameSegmentOffset), + keyFrames.size(), declaration); + } + + std::string primName = zRoom->parent->GetDeclarationPtrName(primColorSegmentAddr); + std::string envName = zRoom->parent->GetDeclarationPtrName(envColorSegmentAddr); + std::string keyName = zRoom->parent->GetDeclarationPtrName(keyFrameSegmentAddr); + + return StringHelper::Sprintf("%i, %i, %s, %s, %s", cycleLength, numKeyFrames, primName.c_str(), + envName.c_str(), keyName.c_str()); +} + +size_t FlashingTexture::GetParamsSize() +{ + return 16; +} + +AnimatedMatTexCycleParams::AnimatedMatTexCycleParams(const std::vector& rawData, + uint32_t rawDataIndex) + : cycleLength(BitConverter::ToUInt16BE(rawData, rawDataIndex + 0)) +{ + textureSegmentOffsetsSegmentAddress = BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + textureIndicesSegmentAddress = BitConverter::ToInt32BE(rawData, rawDataIndex + 8); + + textureSegmentOffsetsSegmentOffset = GETSEGOFFSET(textureSegmentOffsetsSegmentAddress); + textureIndicesSegmentOffset = GETSEGOFFSET(textureIndicesSegmentAddress); + + int32_t currentPtr = textureIndicesSegmentOffset; + int32_t maxIndex = 0; + + for (uint16_t i = 0; i < cycleLength; i++) + { + uint8_t newIndex = rawData.at(currentPtr); + textureIndices.push_back(newIndex); + currentPtr++; + if (newIndex > maxIndex) + maxIndex = newIndex; + } + + currentPtr = textureSegmentOffsetsSegmentOffset; + for (int32_t i = 0; i < maxIndex + 1; i++) + { + textureSegmentOffsets.push_back(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, currentPtr))); + currentPtr += 4; + } +} + +std::string AnimatedMatTexCycleParams::GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) +{ + if (textureSegmentOffsetsSegmentOffset != 0) + { + std::string declaration = ""; + size_t index = 0; + + for (uint32_t offset : textureSegmentOffsets) + { + declaration += + StringHelper::Sprintf(" %sTex_%06X,", zRoom->GetName().c_str(), offset); + + if (index < textureSegmentOffsets.size() - 1) + declaration += "\n"; + + index++; + } + + zRoom->parent->AddDeclarationArray( + textureSegmentOffsetsSegmentOffset, DeclarationAlignment::Align4, + textureSegmentOffsets.size() * 4, "u64*", + StringHelper::Sprintf("%sAnimatedMaterialTexSegOffsets0x%06X", zRoom->GetName().c_str(), + textureSegmentOffsetsSegmentOffset), + textureSegmentOffsets.size(), declaration); + } + + if (textureIndicesSegmentOffset != 0) + { + std::string declaration = ""; + size_t index = 0; + + for (uint8_t textureIndex : textureIndices) + { + declaration += StringHelper::Sprintf(" 0x%02X,", textureIndex); + + if (index < textureIndices.size() - 1) + declaration += "\n"; + + index++; + } + + zRoom->parent->AddDeclarationArray( + textureIndicesSegmentOffset, DeclarationAlignment::Align4, textureIndices.size(), "u8", + StringHelper::Sprintf("%sAnimatedMaterialTexIndices0x%06X", zRoom->GetName().c_str(), + textureIndicesSegmentOffset), + textureIndices.size(), declaration); + } + + std::string segmName = zRoom->parent->GetDeclarationPtrName(textureSegmentOffsetsSegmentAddress); + std::string indexesName = zRoom->parent->GetDeclarationPtrName(textureIndicesSegmentAddress); + + return StringHelper::Sprintf("%i, %s, %s", cycleLength, segmName.c_str(), indexesName.c_str()); +} + +size_t AnimatedMatTexCycleParams::GetParamsSize() +{ + return 12; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.h new file mode 100644 index 0000000000..3284d819ff --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetAnimatedMaterialList.h @@ -0,0 +1,119 @@ +#pragma once + +#include +#include "ZRoom/ZRoomCommand.h" + +// TODO move into header and add all types +class AnitmatedTextureParams +{ +public: + virtual std::string GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) = 0; + virtual size_t GetParamsSize() = 0; +}; + +class ScrollingTexture : public AnitmatedTextureParams +{ +public: + ScrollingTexture(const std::vector& rawData, uint32_t rawDataIndex); + std::string GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) override; + size_t GetParamsSize() override; + + int8_t xStep; + int8_t yStep; + uint8_t width; + uint8_t height; +}; + +class F3DPrimColor +{ +public: + F3DPrimColor(const std::vector& rawData, uint32_t rawDataIndex); + + uint8_t r; + uint8_t g; + uint8_t b; + uint8_t a; + uint8_t lodFrac; +}; + +class FlashingTextureEnvColor +{ +public: + FlashingTextureEnvColor(const std::vector& rawData, uint32_t rawDataIndex); + + uint8_t r; + uint8_t g; + uint8_t b; + uint8_t a; +}; + +class FlashingTexture : public AnitmatedTextureParams +{ +public: + FlashingTexture(const std::vector& rawData, uint32_t rawDataIndex, int32_t type); + std::string GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) override; + size_t GetParamsSize() override; + + uint16_t cycleLength; + uint16_t numKeyFrames; + + segptr_t primColorSegmentAddr; + segptr_t envColorSegmentAddr; + segptr_t keyFrameSegmentAddr; + + uint32_t primColorSegmentOffset; + uint32_t envColorSegmentOffset; + uint32_t keyFrameSegmentOffset; + + std::vector primColors; + std::vector envColors; + std::vector keyFrames; +}; + +class AnimatedMatTexCycleParams : public AnitmatedTextureParams +{ +public: + AnimatedMatTexCycleParams(const std::vector& rawData, uint32_t rawDataIndex); + std::string GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress) override; + size_t GetParamsSize() override; + + uint16_t cycleLength; + + segptr_t textureSegmentOffsetsSegmentAddress; + segptr_t textureIndicesSegmentAddress; + uint32_t textureSegmentOffsetsSegmentOffset; + uint32_t textureIndicesSegmentOffset; + + std::vector textureSegmentOffsets; + std::vector textureIndices; +}; + +class AnimatedMaterial +{ +public: + AnimatedMaterial(const std::vector& rawData, uint32_t rawDataIndex); + + int8_t segment; + int16_t type; + segptr_t segmentAddress; + uint32_t segmentOffset; + std::vector> params; +}; + +class SetAnimatedMaterialList : public ZRoomCommand +{ +public: + SetAnimatedMaterialList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + std::vector textures; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.cpp new file mode 100644 index 0000000000..fb41b88626 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.cpp @@ -0,0 +1,31 @@ +#include "SetCameraSettings.h" + +#include "BitConverter.h" +#include "StringHelper.h" + +SetCameraSettings::SetCameraSettings(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetCameraSettings::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + cameraMovement = cmdArg1; + mapHighlight = BitConverter::ToUInt32BE(parent->GetRawData(), rawDataIndex + 4); +} + +std::string SetCameraSettings::GetBodySourceCode() const +{ + return StringHelper::Sprintf("SCENE_CMD_MISC_SETTINGS(0x%02X, 0x%08X)", cameraMovement, + mapHighlight); +} + +std::string SetCameraSettings::GetCommandCName() const +{ + return "SCmdMiscSettings"; +} + +RoomCommand SetCameraSettings::GetRoomCommand() const +{ + return RoomCommand::SetCameraSettings; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.h new file mode 100644 index 0000000000..1a0eb11b8c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCameraSettings.h @@ -0,0 +1,20 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetCameraSettings : public ZRoomCommand +{ +public: + SetCameraSettings(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + uint8_t cameraMovement; + uint32_t mapHighlight; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp new file mode 100644 index 0000000000..1eb13f6ba2 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.cpp @@ -0,0 +1,42 @@ +#include "SetCollisionHeader.h" + +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetCollisionHeader::SetCollisionHeader(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetCollisionHeader::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + collisionHeader = new ZCollisionHeader(parent); + collisionHeader->SetRawData(parent->GetRawData()); + collisionHeader->SetRawDataIndex(segmentOffset); + collisionHeader->SetName( + StringHelper::Sprintf("%sCollisionHeader_%06X", parent->GetName().c_str(), segmentOffset)); + collisionHeader->ParseRawData(); +} + +SetCollisionHeader::~SetCollisionHeader() +{ + delete collisionHeader; +} + +std::string SetCollisionHeader::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_COL_HEADER(%s)", listName.c_str()); +} + +std::string SetCollisionHeader::GetCommandCName() const +{ + return "SCmdColHeader"; +} + +RoomCommand SetCollisionHeader::GetRoomCommand() const +{ + return RoomCommand::SetCollisionHeader; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.h new file mode 100644 index 0000000000..7ea15eff8a --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCollisionHeader.h @@ -0,0 +1,21 @@ +#pragma once + +#include "ZCollision.h" +#include "ZRoom/ZRoomCommand.h" + +class SetCollisionHeader : public ZRoomCommand +{ +public: + SetCollisionHeader(ZFile* nParent); + ~SetCollisionHeader(); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + ZCollisionHeader* collisionHeader; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.cpp new file mode 100644 index 0000000000..02e2e61784 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.cpp @@ -0,0 +1,162 @@ +#include "SetCsCamera.h" + +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetCsCamera::SetCsCamera(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetCsCamera::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + int numCameras = cmdArg1; + + uint32_t currentPtr = segmentOffset; + int32_t numPoints = 0; + + for (int32_t i = 0; i < numCameras; i++) + { + CsCameraEntry entry(parent->GetRawData(), currentPtr); + numPoints += entry.GetNumPoints(); + + currentPtr += entry.GetRawDataSize(); + cameras.push_back(entry); + } + + if (numPoints > 0) + { + uint32_t currentPtr = cameras.at(0).GetSegmentOffset(); + + for (int32_t i = 0; i < numPoints; i++) + { + ZVector vec(parent); + vec.SetRawData(parent->GetRawData()); + vec.SetRawDataIndex(currentPtr); + vec.SetScalarType(ZScalarType::ZSCALAR_S16); + vec.SetDimensions(3); + vec.ParseRawData(); + + currentPtr += vec.GetRawDataSize(); + points.push_back(vec); + } + } + + if (segmentOffset != 0) + parent->AddDeclarationPlaceholder(segmentOffset); +} + +void SetCsCamera::DeclareReferences(const std::string& prefix) +{ + if (points.size() > 0) + { + std::string declaration = ""; + size_t index = 0; + for (auto& point : points) + { + declaration += + StringHelper::Sprintf("\t%s, //0x%06X", point.GetBodySourceCode().c_str(), + cameras.at(0).segmentOffset + (index * 6)); + + if (index < points.size() - 1) + declaration += "\n"; + + index++; + } + + uint32_t segOffset = cameras.at(0).GetSegmentOffset(); + + parent->AddDeclarationArray( + segOffset, DeclarationAlignment::Align4, points.size() * points.at(0).GetRawDataSize(), + points.at(0).GetSourceTypeName().c_str(), + StringHelper::Sprintf("%sCsCameraPoints_%06X", prefix.c_str(), segOffset), + points.size(), declaration); + } + + if (!cameras.empty()) + { + std::string camPointsName = parent->GetDeclarationName(cameras.at(0).GetSegmentOffset()); + std::string declaration = ""; + + size_t index = 0; + size_t pointsIndex = 0; + for (const auto& entry : cameras) + { + declaration += + StringHelper::Sprintf("\t{ %i, %i, &%s[%i] },", entry.type, entry.numPoints, + camPointsName.c_str(), pointsIndex); + + if (index < cameras.size() - 1) + declaration += "\n"; + + index++; + pointsIndex += entry.GetNumPoints(); + } + + const auto& entry = cameras.front(); + std::string camTypename = entry.GetSourceTypeName(); + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::Align4, DeclarationPadding::Pad16, + cameras.size() * entry.GetRawDataSize(), camTypename, + StringHelper::Sprintf("%s%s_%06X", prefix.c_str(), camTypename.c_str(), segmentOffset), + cameras.size(), declaration); + } +} + +std::string SetCsCamera::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ACTOR_CUTSCENE_CAM_LIST(%i, %s)", cameras.size(), + listName.c_str()); +} + +size_t SetCsCamera::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + (cameras.size() * 8) + (points.size() * 6); +} + +std::string SetCsCamera::GetCommandCName() const +{ + return "SCmdCsCameraList"; +} + +RoomCommand SetCsCamera::GetRoomCommand() const +{ + return RoomCommand::SetCsCamera; +} + +CsCameraEntry::CsCameraEntry(const std::vector& rawData, uint32_t rawDataIndex) + : baseOffset(rawDataIndex), type(BitConverter::ToInt16BE(rawData, rawDataIndex + 0)), + numPoints(BitConverter::ToInt16BE(rawData, rawDataIndex + 2)) +{ + camAddress = BitConverter::ToInt32BE(rawData, rawDataIndex + 4); + segmentOffset = GETSEGOFFSET(camAddress); +} + +std::string CsCameraEntry::GetSourceTypeName() const +{ + return "CsCameraEntry"; +} + +int32_t CsCameraEntry::GetRawDataSize() const +{ + return 8; +} + +int16_t CsCameraEntry::GetNumPoints() const +{ + return numPoints; +} + +segptr_t CsCameraEntry::GetCamAddress() const +{ + return camAddress; +} + +uint32_t CsCameraEntry::GetSegmentOffset() const +{ + return segmentOffset; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.h new file mode 100644 index 0000000000..e62b073902 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCsCamera.h @@ -0,0 +1,42 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" +#include "ZVector.h" + +class CsCameraEntry +{ +public: + CsCameraEntry(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetSourceTypeName() const; + int32_t GetRawDataSize() const; + + int16_t GetNumPoints() const; + segptr_t GetCamAddress() const; + uint32_t GetSegmentOffset() const; + + int baseOffset; + int16_t type; + int16_t numPoints; + segptr_t camAddress; + uint32_t segmentOffset; +}; + +class SetCsCamera : public ZRoomCommand +{ +public: + SetCsCamera(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + std::vector cameras; + std::vector points; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.cpp new file mode 100644 index 0000000000..8007ac0ab9 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.cpp @@ -0,0 +1,115 @@ +#include "SetCutscenes.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetCutscenes::SetCutscenes(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetCutscenes::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + std::string output = ""; + + numCutscenes = cmdArg1; + if (Globals::Instance->game == ZGame::OOT_RETAIL || Globals::Instance->game == ZGame::OOT_SW97) + { + ZCutscene* cutscene = new ZCutscene(parent); + cutscene->ExtractFromFile(parent->GetRawData(), segmentOffset); + + auto decl = parent->GetDeclaration(segmentOffset); + if (decl == nullptr) + { + cutscene->DeclareVar(zRoom->GetName().c_str(), ""); + } + + cutscenes.push_back(cutscene); + } + else + { + int32_t currentPtr = segmentOffset; + std::string declaration = ""; + + for (uint8_t i = 0; i < numCutscenes; i++) + { + CutsceneEntry entry(parent->GetRawData(), currentPtr); + cutsceneEntries.push_back(entry); + currentPtr += 8; + + declaration += StringHelper::Sprintf( + " { %sCutsceneData0x%06X, 0x%04X, 0x%02X, 0x%02X },", zRoom->GetName().c_str(), + entry.segmentOffset, entry.exit, entry.entrance, entry.flag); + + if (i < numCutscenes - 1) + declaration += "\n"; + + ZCutsceneMM* cutscene = new ZCutsceneMM(parent); + cutscene->ExtractFromFile(parent->GetRawData(), entry.segmentOffset); + cutscenes.push_back(cutscene); + } + + parent->AddDeclarationArray(segmentOffset, DeclarationAlignment::Align4, + cutsceneEntries.size() * 8, "CutsceneEntry", + StringHelper::Sprintf("%sCutsceneEntryList_%06X", + zRoom->GetName().c_str(), segmentOffset), + cutsceneEntries.size(), declaration); + } + + for (ZCutsceneBase* cutscene : cutscenes) + { + if (cutscene->getSegmentOffset() != 0) + { + Declaration* decl = parent->GetDeclaration(cutscene->getSegmentOffset()); + if (decl == nullptr) + { + cutscene->GetSourceOutputCode(zRoom->GetName()); + } + else if (decl->text == "") + { + decl->text = cutscene->GetBodySourceCode(); + } + } + } +} + +SetCutscenes::~SetCutscenes() +{ + for (ZCutsceneBase* cutscene : cutscenes) + delete cutscene; +} + +std::string SetCutscenes::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + + if (Globals::Instance->game == ZGame::MM_RETAIL) + return StringHelper::Sprintf("SCENE_CMD_CUTSCENE_LIST(%i, %s)", numCutscenes, + listName.c_str()); + return StringHelper::Sprintf("SCENE_CMD_CUTSCENE_DATA(%s)", listName.c_str()); +} + +size_t SetCutscenes::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize(); +} + +std::string SetCutscenes::GetCommandCName() const +{ + return "SCmdCutsceneData"; +} + +RoomCommand SetCutscenes::GetRoomCommand() const +{ + return RoomCommand::SetCutscenes; +} + +CutsceneEntry::CutsceneEntry(const std::vector& rawData, uint32_t rawDataIndex) + : segmentOffset(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 0))), + exit(BitConverter::ToInt16BE(rawData, rawDataIndex + 4)), entrance(rawData[rawDataIndex + 6]), + flag(rawData[rawDataIndex + 7]) +{ +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.h new file mode 100644 index 0000000000..0d1def29a1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetCutscenes.h @@ -0,0 +1,36 @@ +#pragma once + +#include "ZCutscene.h" +#include "ZCutsceneMM.h" +#include "ZRoom/ZRoomCommand.h" + +class CutsceneEntry +{ +public: + CutsceneEntry(const std::vector& rawData, uint32_t rawDataIndex); + + uint32_t segmentOffset; + uint16_t exit; + uint8_t entrance; + uint8_t flag; +}; + +class SetCutscenes : public ZRoomCommand +{ +public: + SetCutscenes(ZFile* nParent); + ~SetCutscenes(); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + std::vector cutscenes; + std::vector cutsceneEntries; // (MM Only) + uint8_t numCutscenes; // (MM Only) +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.cpp new file mode 100644 index 0000000000..275dc632db --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.cpp @@ -0,0 +1,27 @@ +#include "SetEchoSettings.h" +#include "StringHelper.h" + +SetEchoSettings::SetEchoSettings(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetEchoSettings::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + echo = parent->GetRawData().at(rawDataIndex + 0x07); +} + +std::string SetEchoSettings::GetBodySourceCode() const +{ + return StringHelper::Sprintf("SCENE_CMD_ECHO_SETTINGS(%i)", echo); +} + +std::string SetEchoSettings::GetCommandCName() const +{ + return "SCmdEchoSettings"; +} + +RoomCommand SetEchoSettings::GetRoomCommand() const +{ + return RoomCommand::SetEchoSettings; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.h new file mode 100644 index 0000000000..59632631b4 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEchoSettings.h @@ -0,0 +1,19 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetEchoSettings : public ZRoomCommand +{ +public: + SetEchoSettings(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + uint8_t echo; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.cpp new file mode 100644 index 0000000000..4ba73a2e80 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.cpp @@ -0,0 +1,83 @@ +#include "SetEntranceList.h" +#include "BitConverter.h" +#include "SetStartPositionList.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetEntranceList::SetEntranceList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetEntranceList::DeclareReferences(const std::string& prefix) +{ + if (segmentOffset != 0) + parent->AddDeclarationPlaceholder(segmentOffset); +} + +void SetEntranceList::ParseRawDataLate() +{ + // Parse Entrances and Generate Declaration + int numEntrances = zRoom->GetDeclarationSizeFromNeighbor(segmentOffset) / 2; + uint32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numEntrances; i++) + { + EntranceEntry entry(parent->GetRawData(), currentPtr); + entrances.push_back(entry); + + currentPtr += 2; + } +} + +void SetEntranceList::DeclareReferencesLate(const std::string& prefix) +{ + if (!entrances.empty()) + { + std::string declaration = ""; + + size_t index = 0; + for (const auto& entry : entrances) + { + declaration += + StringHelper::Sprintf(" { %s }, //0x%06X", entry.GetBodySourceCode().c_str(), + segmentOffset + (index * 2)); + if (index + 1 < entrances.size()) + declaration += "\n"; + + index++; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, entrances.size() * 2, "EntranceEntry", + StringHelper::Sprintf("%sEntranceList0x%06X", zRoom->GetName().c_str(), segmentOffset), + entrances.size(), declaration); + } +} + +std::string SetEntranceList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ENTRANCE_LIST(%s)", listName.c_str()); +} + +std::string SetEntranceList::GetCommandCName() const +{ + return "SCmdEntranceList"; +} + +RoomCommand SetEntranceList::GetRoomCommand() const +{ + return RoomCommand::SetEntranceList; +} + +EntranceEntry::EntranceEntry(const std::vector& rawData, uint32_t rawDataIndex) +{ + startPositionIndex = rawData.at(rawDataIndex + 0); + roomToLoad = rawData.at(rawDataIndex + 1); +} + +std::string EntranceEntry::GetBodySourceCode() const +{ + return StringHelper::Sprintf("0x%02X, 0x%02X", startPositionIndex, roomToLoad); +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.h new file mode 100644 index 0000000000..5e76f9f6c9 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetEntranceList.h @@ -0,0 +1,33 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class EntranceEntry +{ +public: + EntranceEntry(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + +protected: + uint8_t startPositionIndex; + uint8_t roomToLoad; +}; + +class SetEntranceList : public ZRoomCommand +{ +public: + SetEntranceList(ZFile* nParent); + + void DeclareReferences(const std::string& prefix) override; + void ParseRawDataLate() override; + void DeclareReferencesLate(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + std::vector entrances; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.cpp new file mode 100644 index 0000000000..5bfd19a578 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.cpp @@ -0,0 +1,67 @@ +#include "SetExitList.h" + +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetExitList::SetExitList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetExitList::DeclareReferences(const std::string& prefix) +{ + if (segmentOffset != 0) + parent->AddDeclarationPlaceholder(segmentOffset); +} + +void SetExitList::ParseRawDataLate() +{ + // Parse Entrances and Generate Declaration + int numEntrances = zRoom->GetDeclarationSizeFromNeighbor(segmentOffset) / 2; + uint32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numEntrances; i++) + { + uint16_t exit = BitConverter::ToUInt16BE(parent->GetRawData(), currentPtr); + exits.push_back(exit); + + currentPtr += 2; + } +} + +void SetExitList::DeclareReferencesLate(const std::string& prefix) +{ + if (!exits.empty()) + { + std::string declaration = ""; + + for (size_t i = 0; i < exits.size(); i++) + { + declaration += StringHelper::Sprintf(" 0x%04X,", exits.at(i)); + if (i + 1 < exits.size()) + declaration += "\n"; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::Align4, exits.size() * 2, "u16", + StringHelper::Sprintf("%sExitList_%06X", zRoom->GetName().c_str(), segmentOffset), + exits.size(), declaration); + } +} + +std::string SetExitList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_EXIT_LIST(%s)", listName.c_str()); +} + +std::string SetExitList::GetCommandCName() const +{ + return "SCmdExitList"; +} + +RoomCommand SetExitList::GetRoomCommand() const +{ + return RoomCommand::SetExitList; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.h new file mode 100644 index 0000000000..8d220b1cd1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetExitList.h @@ -0,0 +1,21 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetExitList : public ZRoomCommand +{ +public: + SetExitList(ZFile* nParent); + + void DeclareReferences(const std::string& prefix) override; + void ParseRawDataLate() override; + void DeclareReferencesLate(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + std::vector exits; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.cpp new file mode 100644 index 0000000000..a12832c0a3 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.cpp @@ -0,0 +1,94 @@ +#include "SetLightList.h" +#include "BitConverter.h" +#include "StringHelper.h" + +SetLightList::SetLightList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetLightList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + std::string declarations = ""; + + numLights = cmdArg1; + int32_t currentPtr = segmentOffset; + for (int i = 0; i < this->numLights; i++) + { + LightInfo light(parent->GetRawData(), currentPtr); + + currentPtr += light.GetRawDataSize(); + lights.push_back(light); + } +} + +void SetLightList::DeclareReferences(const std::string& prefix) +{ + if (!lights.empty()) + { + std::string declarations = ""; + + for (size_t i = 0; i < lights.size(); i++) + { + declarations += + StringHelper::Sprintf("\t{ %s },", lights.at(i).GetBodySourceCode().c_str()); + + if (i < lights.size() - 1) + declarations += "\n"; + } + + const auto& light = lights.front(); + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, lights.size() * light.GetRawDataSize(), + light.GetSourceTypeName(), + StringHelper::Sprintf("%sLightInfo0x%06X", prefix.c_str(), segmentOffset), + lights.size(), declarations); + } +} + +std::string SetLightList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_LIGHT_LIST(%i, %s)", numLights, listName.c_str()); +} + +std::string SetLightList::GetCommandCName() const +{ + return "SCmdLightList"; +} + +RoomCommand SetLightList::GetRoomCommand() const +{ + return RoomCommand::SetLightList; +} + +LightInfo::LightInfo(const std::vector& rawData, uint32_t rawDataIndex) +{ + type = BitConverter::ToUInt8BE(rawData, rawDataIndex + 0); + x = BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + y = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + z = BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + r = BitConverter::ToUInt8BE(rawData, rawDataIndex + 8); + g = BitConverter::ToUInt8BE(rawData, rawDataIndex + 9); + b = BitConverter::ToUInt8BE(rawData, rawDataIndex + 10); + drawGlow = BitConverter::ToUInt8BE(rawData, rawDataIndex + 11); + radius = BitConverter::ToInt16BE(rawData, rawDataIndex + 12); +} + +std::string LightInfo::GetBodySourceCode() const +{ + return StringHelper::Sprintf( + "0x%02X, { %i, %i, %i, { 0x%02X, 0x%02X, 0x%02X }, 0x%02X, 0x%04X }", type, x, y, z, r, g, + b, drawGlow, radius); +} + +std::string LightInfo::GetSourceTypeName() const +{ + return "LightInfo"; +} + +size_t LightInfo::GetRawDataSize() const +{ + return 0x0E; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.h new file mode 100644 index 0000000000..389ffef0f9 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightList.h @@ -0,0 +1,43 @@ +#pragma once + +#include + +#include "ZFile.h" +#include "ZRoom/ZRoom.h" +#include "ZRoom/ZRoomCommand.h" + +class LightInfo +{ +public: + LightInfo(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + + std::string GetSourceTypeName() const; + size_t GetRawDataSize() const; + +protected: + uint8_t type; + int16_t x, y, z; + uint8_t r, g, b; + uint8_t drawGlow; + int16_t radius; +}; + +class SetLightList : public ZRoomCommand +{ +public: + SetLightList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + uint8_t numLights; + std::vector lights; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.cpp new file mode 100644 index 0000000000..e677738f5c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.cpp @@ -0,0 +1,103 @@ +#include "SetLightingSettings.h" +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetLightingSettings::SetLightingSettings(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetLightingSettings::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + uint8_t numLights = cmdArg1; + + for (int i = 0; i < numLights; i++) + settings.push_back(LightingSettings(parent->GetRawData(), segmentOffset + (i * 22))); +} + +void SetLightingSettings::DeclareReferences(const std::string& prefix) +{ + if (settings.size() > 0) + { + std::string declaration = ""; + + for (size_t i = 0; i < settings.size(); i++) + { + declaration += StringHelper::Sprintf("\t{ %s }, // 0x%06X", + settings.at(i).GetBodySourceCode().c_str(), + segmentOffset + (i * 22)); + if (i + 1 < settings.size()) + declaration += "\n"; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::Align4, + settings.size() * settings.front().GetRawDataSize(), "LightSettings", + StringHelper::Sprintf("%sLightSettings0x%06X", prefix.c_str(), segmentOffset), + settings.size(), declaration); + } +} + +std::string SetLightingSettings::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ENV_LIGHT_SETTINGS(%i, %s)", settings.size(), + listName.c_str()); +} + +std::string SetLightingSettings::GetCommandCName() const +{ + return "SCmdLightSettingList"; +} + +RoomCommand SetLightingSettings::GetRoomCommand() const +{ + return RoomCommand::SetLightingSettings; +} + +LightingSettings::LightingSettings(const std::vector& rawData, uint32_t rawDataIndex) +{ + ambientClrR = rawData.at(rawDataIndex + 0); + ambientClrG = rawData.at(rawDataIndex + 1); + ambientClrB = rawData.at(rawDataIndex + 2); + + diffuseClrA_R = rawData.at(rawDataIndex + 3); + diffuseClrA_G = rawData.at(rawDataIndex + 4); + diffuseClrA_B = rawData.at(rawDataIndex + 5); + + diffuseDirA_X = rawData.at(rawDataIndex + 6); + diffuseDirA_Y = rawData.at(rawDataIndex + 7); + diffuseDirA_Z = rawData.at(rawDataIndex + 8); + + diffuseClrB_R = rawData.at(rawDataIndex + 9); + diffuseClrB_G = rawData.at(rawDataIndex + 10); + diffuseClrB_B = rawData.at(rawDataIndex + 11); + + diffuseDirB_X = rawData.at(rawDataIndex + 12); + diffuseDirB_Y = rawData.at(rawDataIndex + 13); + diffuseDirB_Z = rawData.at(rawDataIndex + 14); + + fogClrR = rawData.at(rawDataIndex + 15); + fogClrG = rawData.at(rawDataIndex + 16); + fogClrB = rawData.at(rawDataIndex + 17); + + unk = BitConverter::ToInt16BE(rawData, rawDataIndex + 18); + drawDistance = BitConverter::ToInt16BE(rawData, rawDataIndex + 20); +} + +std::string LightingSettings::GetBodySourceCode() const +{ + return StringHelper::Sprintf( + "0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, " + "0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%04X, 0x%04X", + ambientClrR, ambientClrG, ambientClrB, diffuseClrA_R, diffuseClrA_G, diffuseClrA_B, + diffuseDirA_X, diffuseDirA_Y, diffuseDirA_Z, diffuseClrB_R, diffuseClrB_G, diffuseClrB_B, + diffuseDirB_X, diffuseDirB_Y, diffuseDirB_Z, fogClrR, fogClrG, fogClrB, unk, drawDistance); +} + +size_t LightingSettings::GetRawDataSize() const +{ + return 0x16; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.h new file mode 100644 index 0000000000..7717957fa3 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetLightingSettings.h @@ -0,0 +1,40 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class LightingSettings +{ +public: + LightingSettings(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + + size_t GetRawDataSize() const; + +protected: + uint8_t ambientClrR, ambientClrG, ambientClrB; + uint8_t diffuseClrA_R, diffuseClrA_G, diffuseClrA_B; + uint8_t diffuseDirA_X, diffuseDirA_Y, diffuseDirA_Z; + uint8_t diffuseClrB_R, diffuseClrB_G, diffuseClrB_B; + uint8_t diffuseDirB_X, diffuseDirB_Y, diffuseDirB_Z; + uint8_t fogClrR, fogClrG, fogClrB; + uint16_t unk; + uint16_t drawDistance; +}; + +class SetLightingSettings : public ZRoomCommand +{ +public: + SetLightingSettings(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + std::vector settings; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.cpp new file mode 100644 index 0000000000..2635e7ff3b --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.cpp @@ -0,0 +1,671 @@ +#include "SetMesh.h" +#include +#include +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZBackground.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +void GenDListDeclarations(ZRoom* zRoom, ZFile* parent, ZDisplayList* dList); + +SetMesh::SetMesh(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetMesh::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + auto& parentRawData = parent->GetRawData(); + meshHeaderType = parentRawData.at(segmentOffset); + + switch (meshHeaderType) + { + case 0: + polyType = std::make_shared(parent, parentRawData, segmentOffset, zRoom); + break; + + case 1: + polyType = std::make_shared(parent, parentRawData, segmentOffset, zRoom); + break; + + case 2: + polyType = std::make_shared(parent, parentRawData, segmentOffset, zRoom); + break; + + default: + throw std::runtime_error(StringHelper::Sprintf("Error in SetMesh::ParseRawData\n" + "\t Unknown meshHeaderType: %i\n", + meshHeaderType)); + } + + polyType->ParseRawData(); +} + +void SetMesh::DeclareReferences(const std::string& prefix) +{ + polyType->SetName(polyType->GetDefaultName(prefix)); + polyType->DeclareReferences(prefix); + polyType->DeclareAndGenerateOutputCode(prefix); +} + +void GenDListDeclarations(ZRoom* zRoom, ZFile* parent, ZDisplayList* dList) +{ + if (dList == nullptr) + { + return; + } + std::string srcVarName = + StringHelper::Sprintf("%s%s", zRoom->GetName().c_str(), dList->GetName().c_str()); + + dList->SetName(srcVarName); + dList->scene = zRoom->scene; + std::string sourceOutput = dList->GetSourceOutputCode(zRoom->GetName()); + + for (ZDisplayList* otherDList : dList->otherDLists) + GenDListDeclarations(zRoom, parent, otherDList); + + for (const auto& vtxEntry : dList->vtxDeclarations) + { + DeclarationAlignment alignment = DeclarationAlignment::Align4; + if (Globals::Instance->game == ZGame::MM_RETAIL) + alignment = DeclarationAlignment::None; + parent->AddDeclarationArray( + vtxEntry.first, alignment, dList->vertices[vtxEntry.first].size() * 16, "static Vtx", + StringHelper::Sprintf("%sVtx_%06X", zRoom->GetName().c_str(), vtxEntry.first), + dList->vertices[vtxEntry.first].size(), vtxEntry.second); + } +} + +std::string SetMesh::GenDListExterns(ZDisplayList* dList) +{ + std::string sourceOutput = ""; + + sourceOutput += StringHelper::Sprintf("extern Gfx %sDL_%06X[];\n", zRoom->GetName().c_str(), + dList->GetRawDataIndex()); + + for (ZDisplayList* otherDList : dList->otherDLists) + sourceOutput += GenDListExterns(otherDList); + + sourceOutput += dList->defines; + + return sourceOutput; +} + +std::string SetMesh::GetBodySourceCode() const +{ + std::string list = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_MESH(%s)", list.c_str()); +} + +size_t SetMesh::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize(); +} + +std::string SetMesh::GetCommandCName() const +{ + return "SCmdMesh"; +} + +RoomCommand SetMesh::GetRoomCommand() const +{ + return RoomCommand::SetMesh; +} + +PolygonDlist::PolygonDlist(const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent, ZRoom* nRoom) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + rawDataIndex = nRawDataIndex; + parent = nParent; + zRoom = nRoom; + + name = GetDefaultName(prefix.c_str(), rawDataIndex); +} + +void PolygonDlist::ParseRawData() +{ + switch (polyType) + { + case 2: + x = BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + y = BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + z = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + unk_06 = BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + + opa = BitConverter::ToUInt32BE(rawData, rawDataIndex + 8); + xlu = BitConverter::ToUInt32BE(rawData, rawDataIndex + 12); + break; + + default: + opa = BitConverter::ToUInt32BE(rawData, rawDataIndex); + xlu = BitConverter::ToUInt32BE(rawData, rawDataIndex + 4); + break; + } +} + +void PolygonDlist::DeclareReferences(const std::string& prefix) +{ + opaDList = MakeDlist(opa, prefix); + xluDList = MakeDlist(xlu, prefix); +} + +ZDisplayList* PolygonDlist::MakeDlist(segptr_t ptr, const std::string& prefix) +{ + if (ptr == 0) + { + return nullptr; + } + + uint32_t dlistAddress = Seg2Filespace(ptr, parent->baseAddress); + + int32_t dlistLength = ZDisplayList::GetDListLength( + rawData, dlistAddress, + Globals::Instance->game == ZGame::OOT_SW97 ? DListType::F3DEX : DListType::F3DZEX); + ZDisplayList* dlist = new ZDisplayList(rawData, dlistAddress, dlistLength, parent); + GenDListDeclarations(zRoom, parent, dlist); + + return dlist; +} + +size_t PolygonDlist::GetRawDataSize() const +{ + switch (polyType) + { + case 2: + return 0x10; + + default: + return 0x08; + } +} + +void PolygonDlist::SetPolyType(uint8_t nPolyType) +{ + polyType = nPolyType; +} + +void PolygonDlist::DeclareVar(const std::string& prefix, const std::string& bodyStr) +{ + std::string auxName = name; + if (name == "") + { + auxName = GetDefaultName(prefix, rawDataIndex); + } + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align4, GetRawDataSize(), + GetSourceTypeName(), auxName, bodyStr); +} + +std::string PolygonDlist::GetBodySourceCode(bool arrayElement) +{ + std::string bodyStr = ""; + std::string opaStr = parent->GetDeclarationPtrName(opa); + std::string xluStr = parent->GetDeclarationPtrName(xlu); + if (arrayElement) + { + bodyStr += " { "; + } + else + { + bodyStr += "\n "; + } + + if (polyType == 2) + { + bodyStr += StringHelper::Sprintf("{ %6i, %6i, %6i }, %6i, ", x, y, z, unk_06); + } + + bodyStr += StringHelper::Sprintf("%s, ", opaStr.c_str()); + bodyStr += StringHelper::Sprintf("%s", xluStr.c_str()); + + if (arrayElement) + { + bodyStr += " },"; + } + else + { + bodyStr += "\n"; + } + + return bodyStr; +} + +void PolygonDlist::DeclareAndGenerateOutputCode() +{ + std::string bodyStr = GetBodySourceCode(false); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + if (decl == nullptr) + { + DeclareVar("", bodyStr); + } + else + { + decl->text = bodyStr; + } +} + +std::string PolygonDlist::GetDefaultName(const std::string& prefix, uint32_t address) +{ + return StringHelper::Sprintf("%sPolyDlist_%06X", prefix.c_str(), address); +} + +std::string PolygonDlist::GetSourceTypeName() +{ + switch (polyType) + { + case 2: + return "PolygonDlist2"; + + default: + return "PolygonDlist"; + } +} + +std::string PolygonDlist::GetName() +{ + return name; +} + +BgImage::BgImage(bool nIsSubStruct, const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + rawDataIndex = nRawDataIndex; + parent = nParent; + isSubStruct = nIsSubStruct; + + name = GetDefaultName(prefix.c_str(), rawDataIndex); + + ParseRawData(); + sourceBackground = MakeBackground(source, prefix); +} + +void BgImage::ParseRawData() +{ + size_t pad = 0x00; + if (!isSubStruct) + { + pad = 0x04; + + unk_00 = BitConverter::ToUInt16BE(rawData, rawDataIndex + 0x00); + id = BitConverter::ToUInt8BE(rawData, rawDataIndex + 0x02); + } + source = BitConverter::ToUInt32BE(rawData, rawDataIndex + pad + 0x00); + unk_0C = BitConverter::ToUInt32BE(rawData, rawDataIndex + pad + 0x04); + tlut = BitConverter::ToUInt32BE(rawData, rawDataIndex + pad + 0x08); + width = BitConverter::ToUInt16BE(rawData, rawDataIndex + pad + 0x0C); + height = BitConverter::ToUInt16BE(rawData, rawDataIndex + pad + 0x0E); + fmt = BitConverter::ToUInt8BE(rawData, rawDataIndex + pad + 0x10); + siz = BitConverter::ToUInt8BE(rawData, rawDataIndex + pad + 0x11); + mode0 = BitConverter::ToUInt16BE(rawData, rawDataIndex + pad + 0x12); + tlutCount = BitConverter::ToUInt16BE(rawData, rawDataIndex + pad + 0x14); +} + +ZBackground* BgImage::MakeBackground(segptr_t ptr, const std::string& prefix) +{ + if (ptr == 0) + { + return nullptr; + } + + uint32_t backAddress = Seg2Filespace(ptr, parent->baseAddress); + + ZBackground* background = new ZBackground(prefix, rawData, backAddress, parent); + background->DeclareVar(prefix, ""); + parent->resources.push_back(background); + + return background; +} + +size_t BgImage::GetRawDataSize() +{ + return 0x1C; +} + +std::string BgImage::GetBodySourceCode(bool arrayElement) const +{ + std::string bodyStr = " "; + if (arrayElement) + { + bodyStr += "{ \n "; + } + + if (!isSubStruct) + { + bodyStr += StringHelper::Sprintf("0x%04X, ", unk_00); + bodyStr += StringHelper::Sprintf("%i, ", id); + bodyStr += "\n "; + if (arrayElement) + { + bodyStr += " "; + } + } + + std::string backgroundName = parent->GetDeclarationPtrName(source); + bodyStr += StringHelper::Sprintf("%s, ", backgroundName.c_str()); + bodyStr += "\n "; + if (arrayElement) + { + bodyStr += " "; + } + + bodyStr += StringHelper::Sprintf("0x%08X, ", unk_0C); + bodyStr += StringHelper::Sprintf("0x%08X, ", tlut); + bodyStr += "\n "; + if (arrayElement) + { + bodyStr += " "; + } + + bodyStr += StringHelper::Sprintf("%i, ", width); + bodyStr += StringHelper::Sprintf("%i, ", height); + bodyStr += "\n "; + if (arrayElement) + { + bodyStr += " "; + } + + bodyStr += StringHelper::Sprintf("%i, ", fmt); + bodyStr += StringHelper::Sprintf("%i, ", siz); + bodyStr += "\n "; + if (arrayElement) + { + bodyStr += " "; + } + + bodyStr += StringHelper::Sprintf("0x%04X, ", mode0); + bodyStr += StringHelper::Sprintf("0x%04X, ", tlutCount); + if (arrayElement) + { + bodyStr += " \n }, "; + } + else + { + bodyStr += "\n"; + } + + return bodyStr; +} + +std::string BgImage::GetDefaultName(const std::string& prefix, uint32_t address) +{ + return StringHelper::Sprintf("%sBgImage_%06X", prefix.c_str(), address); +} + +std::string BgImage::GetSourceTypeName() +{ + return "BgImage"; +} + +std::string BgImage::GetName() +{ + return name; +} + +/* PolygonType section */ + +PolygonTypeBase::PolygonTypeBase(ZFile* nParent, const std::vector& nRawData, + uint32_t nRawDataIndex, ZRoom* nRoom) + : rawData{nRawData}, rawDataIndex{nRawDataIndex}, parent{nParent}, zRoom{nRoom} +{ + type = BitConverter::ToUInt8BE(rawData, rawDataIndex); +} + +void PolygonTypeBase::DeclareVar(const std::string& prefix, const std::string& bodyStr) +{ + std::string auxName = name; + if (name == "") + auxName = GetDefaultName(prefix); + + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align4, GetRawDataSize(), + GetSourceTypeName(), auxName, bodyStr); +} + +void PolygonTypeBase::DeclareAndGenerateOutputCode(const std::string& prefix) +{ + std::string bodyStr = GetBodySourceCode(); + + Declaration* decl = parent->GetDeclaration(rawDataIndex); + if (decl == nullptr) + { + DeclareVar(prefix, bodyStr); + } + else + { + decl->text = bodyStr; + } +} + +std::string PolygonTypeBase::GetSourceTypeName() const +{ + switch (type) + { + case 2: + return "PolygonType2"; + + case 1: + return "PolygonType1"; + + default: + return "PolygonType0"; + } +} + +std::string PolygonTypeBase::GetName() const +{ + return name; +} + +void PolygonTypeBase::SetName(const std::string& newName) +{ + name = newName; +} + +std::string PolygonTypeBase::GetDefaultName(const std::string& prefix) const +{ + return StringHelper::Sprintf("%s%s_%06X", prefix.c_str(), GetSourceTypeName().c_str(), + rawDataIndex); +} + +PolygonType1::PolygonType1(ZFile* nParent, const std::vector& nRawData, + uint32_t nRawDataIndex, ZRoom* nRoom) + : PolygonTypeBase(nParent, nRawData, nRawDataIndex, nRoom) +{ +} + +void PolygonType1::ParseRawData() +{ + format = BitConverter::ToUInt8BE(rawData, rawDataIndex + 0x01); + dlist = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0x04); + + if (format == 2) + { + count = BitConverter::ToUInt8BE(rawData, rawDataIndex + 0x08); + list = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0x0C); + } + + if (dlist != 0) + { + PolygonDlist polyGfxList(zRoom->GetName(), rawData, + Seg2Filespace(dlist, parent->baseAddress), parent, zRoom); + polyGfxList.SetPolyType(type); + polyGfxList.ParseRawData(); + polyGfxList.DeclareReferences(zRoom->GetName()); + polyDLists.push_back(polyGfxList); + } +} + +void PolygonType1::DeclareReferences(const std::string& prefix) +{ + polyDLists.at(0).DeclareAndGenerateOutputCode(); + + uint32_t listAddress; + std::string bgImageArrayBody = ""; + switch (format) + { + case 1: + single = BgImage(true, prefix, rawData, rawDataIndex + 0x08, parent); + break; + + case 2: + if (list != 0) + { + listAddress = Seg2Filespace(list, parent->baseAddress); + for (size_t i = 0; i < count; ++i) + { + BgImage bg(false, prefix, rawData, listAddress + i * BgImage::GetRawDataSize(), + parent); + multiList.push_back(bg); + bgImageArrayBody += bg.GetBodySourceCode(true); + if (i + 1 < count) + { + bgImageArrayBody += "\n"; + } + } + + Declaration* decl = parent->GetDeclaration(listAddress); + if (decl == nullptr) + { + parent->AddDeclarationArray( + listAddress, DeclarationAlignment::Align4, count * BgImage::GetRawDataSize(), + BgImage::GetSourceTypeName(), multiList.at(0).GetName().c_str(), count, + bgImageArrayBody); + } + } + break; + + default: + throw std::runtime_error(StringHelper::Sprintf( + "Error in PolygonType1::PolygonType1\n\t Unknown format: %i\n", format)); + break; + } +} + +size_t PolygonType1::GetRawDataSize() const +{ + switch (format) + { + case 1: + return 0x20; + + case 2: + return 0x10; + } + return 0x20; +} + +std::string PolygonType1::GetBodySourceCode() const +{ + std::string bodyStr = "\n "; + + bodyStr += "{ "; + bodyStr += StringHelper::Sprintf("%i, %i, ", type, format); + + std::string dlistStr = parent->GetDeclarationPtrName(dlist); + bodyStr += StringHelper::Sprintf("%s, ", dlistStr.c_str()); + bodyStr += "}, \n"; + + std::string listStr = "NULL"; + // bodyStr += " { \n"; + switch (format) + { + case 1: + bodyStr += single.GetBodySourceCode(false); + break; + case 2: + listStr = parent->GetDeclarationPtrName(list); + bodyStr += StringHelper::Sprintf(" %i, %s, \n", count, listStr.c_str()); + break; + + default: + break; + } + // bodyStr += " } \n"; + + return bodyStr; +} + +std::string PolygonType1::GetSourceTypeName() const +{ + switch (format) + { + case 1: + return "MeshHeader1Single"; + + case 2: + return "MeshHeader1Multi"; + } + return "ERROR"; + // return "PolygonType1"; +} + +PolygonType2::PolygonType2(ZFile* nParent, const std::vector& nRawData, + uint32_t nRawDataIndex, ZRoom* nRoom) + : PolygonTypeBase(nParent, nRawData, nRawDataIndex, nRoom) +{ +} + +void PolygonType2::ParseRawData() +{ + num = BitConverter::ToUInt8BE(rawData, rawDataIndex + 0x01); + + start = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0x04); + end = BitConverter::ToUInt32BE(rawData, rawDataIndex + 0x08); + + uint32_t currentPtr = GETSEGOFFSET(start); + for (size_t i = 0; i < num; i++) + { + PolygonDlist entry(zRoom->GetName(), rawData, currentPtr, parent, zRoom); + entry.SetPolyType(type); + entry.ParseRawData(); + entry.DeclareReferences(zRoom->GetName()); + polyDLists.push_back(entry); + currentPtr += entry.GetRawDataSize(); + } +} + +void PolygonType2::DeclareReferences(const std::string& prefix) +{ + if (num > 0) + { + std::string declaration = ""; + + for (size_t i = 0; i < polyDLists.size(); i++) + { + declaration += polyDLists.at(i).GetBodySourceCode(true); + if (i + 1 < polyDLists.size()) + declaration += "\n"; + } + + std::string polyDlistType = polyDLists.at(0).GetSourceTypeName(); + std::string polyDListName = ""; + polyDListName = StringHelper::Sprintf("%s%s_%06X", prefix.c_str(), polyDlistType.c_str(), + GETSEGOFFSET(start)); + + parent->AddDeclarationArray(GETSEGOFFSET(start), DeclarationAlignment::Align4, + polyDLists.size() * polyDLists.at(0).GetRawDataSize(), + polyDlistType, polyDListName, polyDLists.size(), declaration); + } + + parent->AddDeclaration(GETSEGOFFSET(end), DeclarationAlignment::Align4, + DeclarationPadding::Pad16, 4, "static s32", "terminatorMaybe", + "0x01000000"); +} + +std::string PolygonType2::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(start); + + std::string body = StringHelper::Sprintf("\n %i, %i,\n", type, polyDLists.size()); + body += StringHelper::Sprintf(" %s,\n", listName.c_str()); + body += + StringHelper::Sprintf(" %s + ARRAY_COUNTU(%s)\n", listName.c_str(), listName.c_str()); + return body; +} + +size_t PolygonType2::GetRawDataSize() const +{ + return 0x0C; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.h new file mode 100644 index 0000000000..fb99dbdb30 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMesh.h @@ -0,0 +1,190 @@ +#pragma once + +#include +#include "ZBackground.h" +#include "ZDisplayList.h" +#include "ZRoom/ZRoomCommand.h" + +class PolygonDlist +{ +public: + PolygonDlist() = default; + PolygonDlist(const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent, ZRoom* nRoom); + + void ParseRawData(); + void DeclareReferences(const std::string& prefix); + + size_t GetRawDataSize() const; + void SetPolyType(uint8_t nPolyType); + + void DeclareVar(const std::string& prefix, const std::string& bodyStr); + + std::string GetBodySourceCode(bool arrayElement); + void DeclareAndGenerateOutputCode(); + + static std::string GetDefaultName(const std::string& prefix, uint32_t address); + std::string GetSourceTypeName(); + std::string GetName(); + +protected: + int16_t x, y, z; // polyType == 2 + int16_t unk_06; // polyType == 2 + + segptr_t opa = 0; // Gfx* + segptr_t xlu = 0; // Gfx* + + uint8_t polyType; + + ZDisplayList* opaDList = nullptr; // Gfx* + ZDisplayList* xluDList = nullptr; // Gfx* + + std::vector rawData; + uint32_t rawDataIndex; + ZFile* parent; + ZRoom* zRoom; + std::string name; + + ZDisplayList* MakeDlist(segptr_t ptr, const std::string& prefix); +}; + +class BgImage +{ +protected: + uint16_t unk_00; + uint8_t id; + segptr_t source; + uint32_t unk_0C; + uint32_t tlut; + uint16_t width; + uint16_t height; + uint8_t fmt; + uint8_t siz; + uint16_t mode0; + uint16_t tlutCount; + + ZBackground* sourceBackground; + + std::vector rawData; + uint32_t rawDataIndex; + ZFile* parent; + std::string name; + bool isSubStruct; + + void ParseRawData(); + ZBackground* MakeBackground(segptr_t ptr, const std::string& prefix); + +public: + BgImage() = default; + BgImage(bool nIsSubStruct, const std::string& prefix, const std::vector& nRawData, + uint32_t nRawDataIndex, ZFile* nParent); + + static size_t GetRawDataSize(); + + std::string GetBodySourceCode(bool arrayElement) const; + + static std::string GetDefaultName(const std::string& prefix, uint32_t address); + static std::string GetSourceTypeName(); + std::string GetName(); +}; + +class PolygonTypeBase +{ +public: + PolygonTypeBase(ZFile* nParent, const std::vector& nRawData, uint32_t nRawDataIndex, + ZRoom* nRoom); + + virtual void ParseRawData() = 0; + virtual void DeclareReferences(const std::string& prefix) = 0; + + virtual std::string GetBodySourceCode() const = 0; + void DeclareVar(const std::string& prefix, const std::string& bodyStr); + void DeclareAndGenerateOutputCode(const std::string& prefix); + + virtual std::string GetSourceTypeName() const; + + std::string GetName() const; + void SetName(const std::string& newName); + virtual size_t GetRawDataSize() const = 0; + + std::string GetDefaultName(const std::string& prefix) const; + +protected: + uint8_t type; + + std::vector polyDLists; + + std::vector rawData; + uint32_t rawDataIndex; + ZFile* parent; + ZRoom* zRoom; + std::string name; +}; + +class PolygonType1 : public PolygonTypeBase +{ +protected: + uint8_t format; + segptr_t dlist; + + // single + BgImage single; + + // multi + uint8_t count; + segptr_t list; // BgImage* + std::vector multiList; + +public: + PolygonType1(ZFile* nParent, const std::vector& nRawData, uint32_t nRawDataIndex, + ZRoom* nRoom); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + std::string GetSourceTypeName() const override; + + size_t GetRawDataSize() const override; +}; + +class PolygonType2 : public PolygonTypeBase +{ +public: + PolygonType2(ZFile* nParent, const std::vector& nRawData, uint32_t nRawDataIndex, + ZRoom* nRoom); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + size_t GetRawDataSize() const override; + +protected: + uint8_t num; + segptr_t start; + segptr_t end; +}; + +class SetMesh : public ZRoomCommand +{ +public: + SetMesh(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + uint8_t meshHeaderType; + std::shared_ptr polyType; + + std::string GenDListExterns(ZDisplayList* dList); +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.cpp new file mode 100644 index 0000000000..bd9c8a004a --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.cpp @@ -0,0 +1,85 @@ +#include "SetMinimapChests.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetMinimapChests::SetMinimapChests(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetMinimapChests::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + int numChests = cmdArg1; + + int32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numChests; i++) + { + MinimapChest chest(parent->GetRawData(), currentPtr); + chests.push_back(chest); + + currentPtr += 10; + } +} + +void SetMinimapChests::DeclareReferences(const std::string& prefix) +{ + std::string declaration = ""; + + size_t index = 0; + for (const auto& chest : chests) + { + declaration += StringHelper::Sprintf(" { %s },", chest.GetBodySourceCode().c_str()); + + if (index < chests.size() - 1) + declaration += "\n"; + + index++; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, chests.size() * 10, "MinimapChest", + StringHelper::Sprintf("%sMinimapChests0x%06X", prefix.c_str(), segmentOffset), + chests.size(), declaration); +} + +std::string SetMinimapChests::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_MINIMAP_COMPASS_ICON_INFO(0x%02X, %s)", chests.size(), + listName.c_str()); +} + +std::string SetMinimapChests::GetCommandCName() const +{ + return "SCmdMinimapChests"; +} + +RoomCommand SetMinimapChests::GetRoomCommand() const +{ + return RoomCommand::SetMinimapChests; +} + +size_t SetMinimapChests::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + (chests.size() * 10); +} + +MinimapChest::MinimapChest(const std::vector& rawData, uint32_t rawDataIndex) + : unk0(BitConverter::ToUInt16BE(rawData, rawDataIndex + 0)), + unk2(BitConverter::ToUInt16BE(rawData, rawDataIndex + 2)), + unk4(BitConverter::ToUInt16BE(rawData, rawDataIndex + 4)), + unk6(BitConverter::ToUInt16BE(rawData, rawDataIndex + 6)), + unk8(BitConverter::ToUInt16BE(rawData, rawDataIndex + 8)) +{ +} + +std::string MinimapChest::GetBodySourceCode() const +{ + return StringHelper::Sprintf("0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X", unk0, unk2, unk4, unk6, + unk8); +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.h new file mode 100644 index 0000000000..b18534d5ef --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapChests.h @@ -0,0 +1,36 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class MinimapChest +{ +public: + MinimapChest(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + +protected: + uint16_t unk0; + uint16_t unk2; + uint16_t unk4; + uint16_t unk6; + uint16_t unk8; +}; + +class SetMinimapChests : public ZRoomCommand +{ +public: + SetMinimapChests(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + std::vector chests; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.cpp new file mode 100644 index 0000000000..c94ef30d73 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.cpp @@ -0,0 +1,98 @@ +#include "SetMinimapList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetMinimapList::SetMinimapList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetMinimapList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + listSegmentAddr = BitConverter::ToInt32BE(parent->GetRawData(), segmentOffset); + listSegmentOffset = GETSEGOFFSET(listSegmentAddr); + unk4 = BitConverter::ToInt32BE(parent->GetRawData(), segmentOffset + 4); + + int32_t currentPtr = listSegmentOffset; + + for (int32_t i = 0; i < zRoom->roomCount; i++) + { + MinimapEntry entry(parent->GetRawData(), currentPtr); + minimaps.push_back(entry); + + currentPtr += 10; + } +} + +void SetMinimapList::DeclareReferences(const std::string& prefix) +{ + { + std::string declaration = ""; + + size_t index = 0; + for (const auto& entry : minimaps) + { + declaration += StringHelper::Sprintf(" { %s },", entry.GetBodySourceCode().c_str()); + + if (index < minimaps.size() - 1) + declaration += "\n"; + + index++; + } + + parent->AddDeclarationArray( + listSegmentOffset, DeclarationAlignment::Align4, minimaps.size() * 10, "MinimapEntry", + StringHelper::Sprintf("%sMinimapEntryList0x%06X", prefix.c_str(), listSegmentOffset), + minimaps.size(), declaration); + } + + { + std::string listName = parent->GetDeclarationPtrName(listSegmentAddr); + std::string declaration = StringHelper::Sprintf("\n\t%s, 0x%08X\n", listName.c_str(), unk4); + + parent->AddDeclaration( + segmentOffset, DeclarationAlignment::Align4, 8, "MinimapList", + StringHelper::Sprintf("%sMinimapList0x%06X", prefix.c_str(), segmentOffset), + declaration); + } +} + +std::string SetMinimapList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_MINIMAP_INFO(%s)", listName.c_str()); +} + +std::string SetMinimapList::GetCommandCName() const +{ + return "SCmdMinimapSettings"; +} + +RoomCommand SetMinimapList::GetRoomCommand() const +{ + return RoomCommand::SetMinimapList; +} + +size_t SetMinimapList::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + (minimaps.size() * 10); +} + +MinimapEntry::MinimapEntry(const std::vector& rawData, uint32_t rawDataIndex) + : unk0(BitConverter::ToUInt16BE(rawData, rawDataIndex + 0)), + unk2(BitConverter::ToUInt16BE(rawData, rawDataIndex + 2)), + unk4(BitConverter::ToUInt16BE(rawData, rawDataIndex + 4)), + unk6(BitConverter::ToUInt16BE(rawData, rawDataIndex + 6)), + unk8(BitConverter::ToUInt16BE(rawData, rawDataIndex + 8)) +{ +} + +std::string MinimapEntry::GetBodySourceCode() const +{ + return StringHelper::Sprintf("0x%04X, 0x%04X, 0x%04X, 0x%04X, 0x%04X", unk0, unk2, unk4, unk6, + unk8); +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.h new file mode 100644 index 0000000000..079e7b3a3c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetMinimapList.h @@ -0,0 +1,40 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class MinimapEntry +{ +public: + MinimapEntry(const std::vector& rawData, uint32_t rawDataIndex); + + std::string GetBodySourceCode() const; + +protected: + uint16_t unk0; + uint16_t unk2; + uint16_t unk4; + uint16_t unk6; + uint16_t unk8; +}; + +class SetMinimapList : public ZRoomCommand +{ +public: + SetMinimapList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + std::vector minimaps; + + segptr_t listSegmentAddr; + uint32_t listSegmentOffset; + uint32_t unk4; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.cpp new file mode 100644 index 0000000000..d3184b4e62 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.cpp @@ -0,0 +1,73 @@ +#include "SetObjectList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZNames.h" +#include "ZRoom/ZRoom.h" + +SetObjectList::SetObjectList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetObjectList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + uint8_t objectCnt = parent->GetRawData().at(rawDataIndex + 1); + uint32_t currentPtr = segmentOffset; + + for (uint8_t i = 0; i < objectCnt; i++) + { + uint16_t objectIndex = BitConverter::ToInt16BE(parent->GetRawData(), currentPtr); + objects.push_back(objectIndex); + currentPtr += 2; + } + + if (segmentOffset != 0) + parent->AddDeclarationPlaceholder(segmentOffset); +} + +void SetObjectList::DeclareReferences(const std::string& prefix) +{ + if (!objects.empty()) + { + std::string declaration = ""; + + for (size_t i = 0; i < objects.size(); i++) + { + uint16_t objectIndex = objects[i]; + declaration += + StringHelper::Sprintf(" %s,", ZNames::GetObjectName(objectIndex).c_str()); + + if (i < objects.size() - 1) + declaration += "\n"; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, objects.size() * 2, "s16", + StringHelper::Sprintf("%sObjectList_%06X", prefix.c_str(), segmentOffset), + objects.size(), declaration); + } +} + +std::string SetObjectList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_OBJECT_LIST(%i, %s)", objects.size(), listName.c_str()); +} + +size_t SetObjectList::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + (objects.size() * 2); +} + +std::string SetObjectList::GetCommandCName() const +{ + return "SCmdObjectList"; +} + +RoomCommand SetObjectList::GetRoomCommand() const +{ + return RoomCommand::SetObjectList; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.h new file mode 100644 index 0000000000..c952333fb7 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetObjectList.h @@ -0,0 +1,21 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetObjectList : public ZRoomCommand +{ +public: + SetObjectList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix); + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + +private: + std::vector objects; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.cpp new file mode 100644 index 0000000000..13ee7a7cab --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.cpp @@ -0,0 +1,58 @@ +#include "SetPathways.h" +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetPathways::SetPathways(ZFile* nParent) : ZRoomCommand(nParent), pathwayList(nParent) +{ +} + +void SetPathways::DeclareReferences(const std::string& prefix) +{ + if (segmentOffset != 0) + parent->AddDeclarationPlaceholder(segmentOffset); +} + +void SetPathways::ParseRawDataLate() +{ + if (Globals::Instance->game == ZGame::MM_RETAIL) + { + auto numPaths = zRoom->GetDeclarationSizeFromNeighbor(segmentOffset) / 8; + pathwayList.SetNumPaths(numPaths); + } + + pathwayList.SetRawDataIndex(segmentOffset); + pathwayList.ParseRawData(); +} + +void SetPathways::DeclareReferencesLate(const std::string& prefix) +{ + pathwayList.SetName(StringHelper::Sprintf("%sPathway_%06X", prefix.c_str(), segmentOffset)); + pathwayList.DeclareReferences(prefix); + pathwayList.GetSourceOutputCode(prefix); +} + +std::string SetPathways::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_PATH_LIST(%s)", listName.c_str()); +} + +size_t SetPathways::GetRawDataSize() const +{ + int32_t size = pathwayList.GetRawDataSize(); + + return ZRoomCommand::GetRawDataSize() + size; +} + +std::string SetPathways::GetCommandCName() const +{ + return "SCmdPathList"; +} + +RoomCommand SetPathways::GetRoomCommand() const +{ + return RoomCommand::SetPathways; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.h new file mode 100644 index 0000000000..30b765b564 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetPathways.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Vec3s.h" +#include "ZPath.h" +#include "ZResource.h" +#include "ZRoom/ZRoomCommand.h" + +class SetPathways : public ZRoomCommand +{ +public: + SetPathways(ZFile* nParent); + + void DeclareReferences(const std::string& prefix) override; + + void ParseRawDataLate() override; + void DeclareReferencesLate(const std::string& prefix) override; + + void DeclareVar(const std::string& prefix, const std::string& bodyStr); + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + ZPath pathwayList; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp new file mode 100644 index 0000000000..d667328b78 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp @@ -0,0 +1,49 @@ +#include "SetRoomBehavior.h" +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" + +SetRoomBehavior::SetRoomBehavior(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetRoomBehavior::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + gameplayFlags = cmdArg1; + gameplayFlags2 = BitConverter::ToInt32BE(parent->GetRawData(), rawDataIndex + 0x04); + + currRoomUnk2 = gameplayFlags2 & 0xFF; + + currRoomUnk5 = showInvisActors = (gameplayFlags2 >> 8) & 1; + + msgCtxUnk = (gameplayFlags2 >> 10) & 1; + + enablePosLights = (gameplayFlags2 >> 11) & 1; + kankyoContextUnkE2 = (gameplayFlags2 >> 12) & 1; +} + +std::string SetRoomBehavior::GetBodySourceCode() const +{ + if (Globals::Instance->game == ZGame::MM_RETAIL) + { + std::string enableLights = StringHelper::BoolStr(enablePosLights); + return StringHelper::Sprintf("SCENE_CMD_ROOM_BEHAVIOR(0x%02X, 0x%02X, %i, %i, %s, %i)", + gameplayFlags, currRoomUnk2, currRoomUnk5, msgCtxUnk, + enableLights.c_str(), kankyoContextUnkE2); + } + std::string showInvisible = StringHelper::BoolStr(showInvisActors); + std::string disableWarps = StringHelper::BoolStr(msgCtxUnk); + return StringHelper::Sprintf("SCENE_CMD_ROOM_BEHAVIOR(0x%02X, 0x%02X, %s, %s)", gameplayFlags, + currRoomUnk2, showInvisible.c_str(), disableWarps.c_str()); +} + +std::string SetRoomBehavior::GetCommandCName() const +{ + return "SCmdRoomBehavior"; +} + +RoomCommand SetRoomBehavior::GetRoomCommand() const +{ + return RoomCommand::SetRoomBehavior; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.h new file mode 100644 index 0000000000..7989ea37ab --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomBehavior.h @@ -0,0 +1,30 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetRoomBehavior : public ZRoomCommand +{ +public: + SetRoomBehavior(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +protected: + uint8_t gameplayFlags; + uint32_t gameplayFlags2; + + uint8_t currRoomUnk2; + + uint8_t showInvisActors; + uint8_t currRoomUnk5; + + uint8_t msgCtxUnk; + + uint8_t enablePosLights; + uint8_t kankyoContextUnkE2; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.cpp new file mode 100644 index 0000000000..8cac82e87f --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.cpp @@ -0,0 +1,88 @@ +#include "SetRoomList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZRoom.h" + +SetRoomList::SetRoomList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetRoomList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + int numRooms = cmdArg1; + + int32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numRooms; i++) + { + RoomEntry entry(parent->GetRawData(), currentPtr); + rooms.push_back(entry); + + currentPtr += 8; + } + + zRoom->roomCount = numRooms; +} + +void SetRoomList::DeclareReferences(const std::string& prefix) +{ + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, rooms.size() * 8, "RomFile", + StringHelper::Sprintf("%sRoomList0x%06X", prefix.c_str(), segmentOffset), 0, ""); +} + +std::string SetRoomList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_ROOM_LIST(%i, %s)", rooms.size(), listName.c_str()); +} + +std::string SetRoomList::GetCommandCName() const +{ + return "SCmdRoomList"; +} + +RoomCommand SetRoomList::GetRoomCommand() const +{ + return RoomCommand::SetRoomList; +} + +void SetRoomList::PreGenSourceFiles() +{ + std::string declaration = ""; + + for (ZFile* file : Globals::Instance->files) + { + for (ZResource* res : file->resources) + { + if (res->GetResourceType() == ZResourceType::Room && res != zRoom) + { + std::string roomName = res->GetName(); + declaration += + StringHelper::Sprintf("\t{ (u32)_%sSegmentRomStart, (u32)_%sSegmentRomEnd },\n", + roomName.c_str(), roomName.c_str()); + } + } + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, rooms.size() * 8, "RomFile", + StringHelper::Sprintf("%sRoomList0x%06X", zRoom->GetName().c_str(), segmentOffset), 0, + declaration); +} + +RoomEntry::RoomEntry(uint32_t nVAS, uint32_t nVAE) +{ + virtualAddressStart = nVAS; + virtualAddressEnd = nVAE; +} + +RoomEntry::RoomEntry(const std::vector& rawData, uint32_t rawDataIndex) + : RoomEntry(BitConverter::ToInt32BE(rawData, rawDataIndex + 0), + BitConverter::ToInt32BE(rawData, rawDataIndex + 4)) +{ +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.h new file mode 100644 index 0000000000..eaa2013f4d --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetRoomList.h @@ -0,0 +1,32 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class RoomEntry +{ +public: + RoomEntry(uint32_t nVAS, uint32_t nVAE); + RoomEntry(const std::vector& rawData, uint32_t rawDataIndex); + +protected: + int32_t virtualAddressStart; + int32_t virtualAddressEnd; +}; + +class SetRoomList : public ZRoomCommand +{ +public: + SetRoomList(ZFile* nParent); + + void ParseRawData() override; + virtual void DeclareReferences(const std::string& prefix); + + std::string GetBodySourceCode() const override; + void PreGenSourceFiles() override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + std::vector rooms; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.cpp new file mode 100644 index 0000000000..d8af2d11f1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.cpp @@ -0,0 +1,32 @@ +#include "SetSkyboxModifier.h" + +#include "StringHelper.h" + +SetSkyboxModifier::SetSkyboxModifier(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetSkyboxModifier::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + disableSky = parent->GetRawData().at(rawDataIndex + 0x04); + disableSunMoon = parent->GetRawData().at(rawDataIndex + 0x05); +} + +std::string SetSkyboxModifier::GetBodySourceCode() const +{ + std::string sky = StringHelper::BoolStr(disableSky); + std::string soonMoon = StringHelper::BoolStr(disableSunMoon); + return StringHelper::Sprintf("SCENE_CMD_SKYBOX_DISABLES(%s, %s)", sky.c_str(), + soonMoon.c_str()); +} + +std::string SetSkyboxModifier::GetCommandCName() const +{ + return "SCmdSkyboxDisables"; +} + +RoomCommand SetSkyboxModifier::GetRoomCommand() const +{ + return RoomCommand::SetSkyboxModifier; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.h new file mode 100644 index 0000000000..1b0e02231d --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxModifier.h @@ -0,0 +1,20 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetSkyboxModifier : public ZRoomCommand +{ +public: + SetSkyboxModifier(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + uint8_t disableSky; + uint8_t disableSunMoon; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.cpp new file mode 100644 index 0000000000..43c5c1e9cd --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.cpp @@ -0,0 +1,36 @@ +#include "SetSkyboxSettings.h" +#include "Globals.h" +#include "StringHelper.h" + +SetSkyboxSettings::SetSkyboxSettings(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetSkyboxSettings::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + unk1 = cmdArg1; + skyboxNumber = parent->GetRawData().at(rawDataIndex + 0x04); + cloudsType = parent->GetRawData().at(rawDataIndex + 0x05); + isIndoors = parent->GetRawData().at(rawDataIndex + 0x06); +} + +std::string SetSkyboxSettings::GetBodySourceCode() const +{ + std::string indoors = StringHelper::BoolStr(isIndoors); + if (Globals::Instance->game == ZGame::MM_RETAIL) + return StringHelper::Sprintf("SCENE_CMD_SKYBOX_SETTINGS(0x%02X, %i, %i, %s)", unk1, + skyboxNumber, cloudsType, indoors.c_str()); + return StringHelper::Sprintf("SCENE_CMD_SKYBOX_SETTINGS(%i, %i, %s)", skyboxNumber, cloudsType, + indoors.c_str()); +} + +std::string SetSkyboxSettings::GetCommandCName() const +{ + return "SCmdSkyboxSettings"; +} + +RoomCommand SetSkyboxSettings::GetRoomCommand() const +{ + return RoomCommand::SetSkyboxSettings; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.h new file mode 100644 index 0000000000..380addcf0f --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSkyboxSettings.h @@ -0,0 +1,22 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetSkyboxSettings : public ZRoomCommand +{ +public: + SetSkyboxSettings(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + uint8_t unk1; // (MM Only) + uint8_t skyboxNumber; + uint8_t cloudsType; + uint8_t isIndoors; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.cpp new file mode 100644 index 0000000000..9472468cec --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.cpp @@ -0,0 +1,30 @@ +#include "SetSoundSettings.h" +#include "StringHelper.h" + +SetSoundSettings::SetSoundSettings(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetSoundSettings::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + reverb = cmdArg1; + nightTimeSFX = parent->GetRawData().at(rawDataIndex + 0x06); + musicSequence = parent->GetRawData().at(rawDataIndex + 0x07); +} + +std::string SetSoundSettings::GetBodySourceCode() const +{ + return StringHelper::Sprintf("SCENE_CMD_SOUND_SETTINGS(%i, %i, %i)", reverb, nightTimeSFX, + musicSequence); +} + +std::string SetSoundSettings::GetCommandCName() const +{ + return "SCmdSoundSettings"; +} + +RoomCommand SetSoundSettings::GetRoomCommand() const +{ + return RoomCommand::SetSoundSettings; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.h new file mode 100644 index 0000000000..0e35af7d12 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSoundSettings.h @@ -0,0 +1,21 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetSoundSettings : public ZRoomCommand +{ +public: + SetSoundSettings(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + uint8_t reverb; + uint8_t nightTimeSFX; + uint8_t musicSequence; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.cpp new file mode 100644 index 0000000000..b202c4d9d3 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.cpp @@ -0,0 +1,30 @@ +#include "SetSpecialObjects.h" +#include "BitConverter.h" +#include "StringHelper.h" + +SetSpecialObjects::SetSpecialObjects(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetSpecialObjects::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + elfMessage = cmdArg1; + globalObject = BitConverter::ToUInt16BE(parent->GetRawData(), rawDataIndex + 0x06); +} + +std::string SetSpecialObjects::GetBodySourceCode() const +{ + return StringHelper::Sprintf("SCENE_CMD_SPECIAL_FILES(0x%02X, 0x%04X)", elfMessage, + globalObject); +} + +std::string SetSpecialObjects::GetCommandCName() const +{ + return "SCmdSpecialFiles"; +} + +RoomCommand SetSpecialObjects::GetRoomCommand() const +{ + return RoomCommand::SetSpecialObjects; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.h new file mode 100644 index 0000000000..959133d9e2 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetSpecialObjects.h @@ -0,0 +1,20 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetSpecialObjects : public ZRoomCommand +{ +public: + SetSpecialObjects(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + uint8_t elfMessage; + uint16_t globalObject; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.cpp new file mode 100644 index 0000000000..01bd1bf6e0 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.cpp @@ -0,0 +1,65 @@ +#include "SetStartPositionList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZNames.h" +#include "ZRoom/ZRoom.h" + +SetStartPositionList::SetStartPositionList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetStartPositionList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + uint8_t numActors = cmdArg1; + + uint32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numActors; i++) + { + actors.push_back(ActorSpawnEntry(parent->GetRawData(), currentPtr)); + currentPtr += 16; + } +} + +void SetStartPositionList::DeclareReferences(const std::string& prefix) +{ + if (!actors.empty()) + { + std::string declaration = ""; + + size_t index = 0; + for (const auto& entry : actors) + { + declaration += StringHelper::Sprintf(" { %s },", entry.GetBodySourceCode().c_str()); + if (index + 1 < actors.size()) + declaration += "\n"; + + index++; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::Align4, actors.size() * 16, "ActorEntry", + StringHelper::Sprintf("%sStartPositionList0x%06X", prefix.c_str(), segmentOffset), 0, + declaration); + } +} + +std::string SetStartPositionList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_SPAWN_LIST(%i, %s)", actors.size(), listName.c_str()); +} + +std::string SetStartPositionList::GetCommandCName() const +{ + return "SCmdSpawnList"; +} + +RoomCommand SetStartPositionList::GetRoomCommand() const +{ + return RoomCommand::SetStartPositionList; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.h new file mode 100644 index 0000000000..02cf7c65ad --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetStartPositionList.h @@ -0,0 +1,21 @@ +#pragma once + +#include "SetActorList.h" +#include "ZRoom/ZRoomCommand.h" + +class SetStartPositionList : public ZRoomCommand +{ +public: + SetStartPositionList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; + +private: + std::vector actors; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.cpp new file mode 100644 index 0000000000..708c421228 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.cpp @@ -0,0 +1,30 @@ +#include "SetTimeSettings.h" +#include "BitConverter.h" +#include "StringHelper.h" + +SetTimeSettings::SetTimeSettings(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetTimeSettings::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + hour = parent->GetRawData().at(rawDataIndex + 4); + min = parent->GetRawData().at(rawDataIndex + 5); + unk = parent->GetRawData().at(rawDataIndex + 6); +} + +std::string SetTimeSettings::GetBodySourceCode() const +{ + return StringHelper::Sprintf("SCENE_CMD_TIME_SETTINGS(%i, %i, %i)", hour, min, unk); +} + +std::string SetTimeSettings::GetCommandCName() const +{ + return "SCmdTimeSettings"; +} + +RoomCommand SetTimeSettings::GetRoomCommand() const +{ + return RoomCommand::SetTimeSettings; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.h new file mode 100644 index 0000000000..cafafc16e4 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTimeSettings.h @@ -0,0 +1,21 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetTimeSettings : public ZRoomCommand +{ +public: + SetTimeSettings(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + uint8_t hour; + uint8_t min; + uint8_t unk; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp new file mode 100644 index 0000000000..9d70e6d7b2 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.cpp @@ -0,0 +1,95 @@ +#include "SetTransitionActorList.h" + +#include "BitConverter.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" +#include "ZRoom/ZNames.h" +#include "ZRoom/ZRoom.h" + +SetTransitionActorList::SetTransitionActorList(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetTransitionActorList::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + int numActors = cmdArg1; + uint32_t currentPtr = segmentOffset; + + for (int32_t i = 0; i < numActors; i++) + { + TransitionActorEntry entry(parent->GetRawData(), currentPtr); + transitionActors.push_back(entry); + + currentPtr += 16; + } +} + +void SetTransitionActorList::DeclareReferences(const std::string& prefix) +{ + std::string declaration = ""; + + size_t index = 0; + for (const auto& entry : transitionActors) + { + declaration += StringHelper::Sprintf(" { %s },", entry.GetBodySourceCode().c_str()); + if (index + 1 < transitionActors.size()) + { + declaration += "\n"; + } + + index++; + } + + parent->AddDeclarationArray( + segmentOffset, DeclarationAlignment::None, transitionActors.size() * 16, + "TransitionActorEntry", + StringHelper::Sprintf("%sTransitionActorList_%06X", prefix.c_str(), segmentOffset), 0, + declaration); +} + +std::string SetTransitionActorList::GetBodySourceCode() const +{ + std::string listName = parent->GetDeclarationPtrName(cmdArg2); + return StringHelper::Sprintf("SCENE_CMD_TRANSITION_ACTOR_LIST(%i, %s)", transitionActors.size(), + listName.c_str()); +} + +size_t SetTransitionActorList::GetRawDataSize() const +{ + return ZRoomCommand::GetRawDataSize() + (transitionActors.size() * 16); +} + +std::string SetTransitionActorList::GetCommandCName() const +{ + return "SCmdTransiActorList"; +} + +RoomCommand SetTransitionActorList::GetRoomCommand() const +{ + return RoomCommand::SetTransitionActorList; +} + +TransitionActorEntry::TransitionActorEntry(const std::vector& rawData, int rawDataIndex) +{ + frontObjectRoom = rawData[rawDataIndex + 0]; + frontTransitionReaction = rawData[rawDataIndex + 1]; + backObjectRoom = rawData[rawDataIndex + 2]; + backTransitionReaction = rawData[rawDataIndex + 3]; + actorNum = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + posX = BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + posY = BitConverter::ToInt16BE(rawData, rawDataIndex + 8); + posZ = BitConverter::ToInt16BE(rawData, rawDataIndex + 10); + rotY = BitConverter::ToInt16BE(rawData, rawDataIndex + 12); + initVar = BitConverter::ToInt16BE(rawData, rawDataIndex + 14); +} + +std::string TransitionActorEntry::GetBodySourceCode() const +{ + std::string actorStr = ZNames::GetActorName(actorNum); + + return StringHelper::Sprintf("%i, %i, %i, %i, %s, %i, %i, %i, %i, 0x%04X", frontObjectRoom, + frontTransitionReaction, backObjectRoom, backTransitionReaction, + actorStr.c_str(), posX, posY, posZ, rotY, initVar); +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.h new file mode 100644 index 0000000000..dba7a80e8c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetTransitionActorList.h @@ -0,0 +1,39 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class TransitionActorEntry +{ +public: + TransitionActorEntry(const std::vector& rawData, int rawDataIndex); + + std::string GetBodySourceCode() const; + +protected: + uint8_t frontObjectRoom; + uint8_t frontTransitionReaction; + uint8_t backObjectRoom; + uint8_t backTransitionReaction; + uint16_t actorNum; + int16_t posX, posY, posZ; + int16_t rotY; + uint16_t initVar; +}; + +class SetTransitionActorList : public ZRoomCommand +{ +public: + SetTransitionActorList(ZFile* nParent); + + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + size_t GetRawDataSize() const override; + std::string GetCommandCName() const override; + +private: + std::vector transitionActors; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.cpp new file mode 100644 index 0000000000..3b50c811f1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.cpp @@ -0,0 +1,32 @@ +#include "SetWind.h" +#include "StringHelper.h" + +SetWind::SetWind(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +void SetWind::ParseRawData() +{ + ZRoomCommand::ParseRawData(); + auto& parentRawData = parent->GetRawData(); + windWest = parentRawData.at(rawDataIndex + 0x04); + windVertical = parentRawData.at(rawDataIndex + 0x05); + windSouth = parentRawData.at(rawDataIndex + 0x06); + clothFlappingStrength = parentRawData.at(rawDataIndex + 0x07); +} + +std::string SetWind::GetBodySourceCode() const +{ + return StringHelper::Sprintf("SCENE_CMD_WIND_SETTINGS(%i, %i, %i, %i)", windWest, windVertical, + windSouth, clothFlappingStrength); +} + +std::string SetWind::GetCommandCName() const +{ + return "SCmdWindSettings"; +} + +RoomCommand SetWind::GetRoomCommand() const +{ + return RoomCommand::SetWind; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.h new file mode 100644 index 0000000000..8e00b4fd8d --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWind.h @@ -0,0 +1,22 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetWind : public ZRoomCommand +{ +public: + SetWind(ZFile* nParent); + + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + + std::string GetCommandCName() const override; + RoomCommand GetRoomCommand() const override; + +private: + uint8_t windWest; + uint8_t windVertical; + uint8_t windSouth; + uint8_t clothFlappingStrength; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.cpp new file mode 100644 index 0000000000..4420c9d4fe --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.cpp @@ -0,0 +1,22 @@ +#include "SetWorldMapVisited.h" + +#include "StringHelper.h" + +SetWorldMapVisited::SetWorldMapVisited(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +std::string SetWorldMapVisited::GetBodySourceCode() const +{ + return "SCENE_CMD_MISC_SETTINGS()"; +} + +std::string SetWorldMapVisited::GetCommandCName() const +{ + return "SCmdWorldMapVisited"; +} + +RoomCommand SetWorldMapVisited::GetRoomCommand() const +{ + return RoomCommand::SetWorldMapVisited; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.h b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.h new file mode 100644 index 0000000000..a7ad93154d --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/SetWorldMapVisited.h @@ -0,0 +1,14 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class SetWorldMapVisited : public ZRoomCommand +{ +public: + SetWorldMapVisited(ZFile* nParent); + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.cpp new file mode 100644 index 0000000000..69db353a49 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.cpp @@ -0,0 +1,21 @@ +#include "Unused09.h" +#include "StringHelper.h" + +Unused09::Unused09(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +std::string Unused09::GetBodySourceCode() const +{ + return StringHelper::Sprintf("{ %s, 0x00, 0x00 }", GetCommandHex().c_str()); +} + +std::string Unused09::GetCommandCName() const +{ + return "SCmdBase"; +} + +RoomCommand Unused09::GetRoomCommand() const +{ + return RoomCommand::Unused09; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.h b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.h new file mode 100644 index 0000000000..a38985eeaa --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused09.h @@ -0,0 +1,14 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class Unused09 : public ZRoomCommand +{ +public: + Unused09(ZFile* nParent); + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.cpp new file mode 100644 index 0000000000..14ac6e410a --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.cpp @@ -0,0 +1,21 @@ +#include "Unused1D.h" +#include "StringHelper.h" + +Unused1D::Unused1D(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +std::string Unused1D::GetBodySourceCode() const +{ + return StringHelper::Sprintf("{ %s, 0x00, 0x00 }", GetCommandHex().c_str()); +} + +std::string Unused1D::GetCommandCName() const +{ + return "SCmdBase"; +} + +RoomCommand Unused1D::GetRoomCommand() const +{ + return RoomCommand::Unused1D; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.h b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.h new file mode 100644 index 0000000000..dea0f98ee5 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/Unused1D.h @@ -0,0 +1,14 @@ +#pragma once + +#include "ZRoom/ZRoomCommand.h" + +class Unused1D : public ZRoomCommand +{ +public: + Unused1D(ZFile* nParent); + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; + std::string GetCommandCName() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.cpp b/tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.cpp new file mode 100644 index 0000000000..3f35c13182 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.cpp @@ -0,0 +1,20 @@ +#include "ZRoomCommandUnk.h" +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZRoom/ZRoom.h" + +ZRoomCommandUnk::ZRoomCommandUnk(ZFile* nParent) : ZRoomCommand(nParent) +{ +} + +std::string ZRoomCommandUnk::GetBodySourceCode() const +{ + return StringHelper::Sprintf("{ %s, 0x%02X, 0x%06X } /* WARNING: " + "UNIMPLEMENTED ROOM COMMAND */", + GetCommandHex().c_str(), cmdArg1, cmdArg2); +} + +RoomCommand ZRoomCommandUnk::GetRoomCommand() const +{ + return RoomCommand::Error; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.h b/tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.h new file mode 100644 index 0000000000..e381fe5a52 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/Commands/ZRoomCommandUnk.h @@ -0,0 +1,12 @@ +#pragma once +#include "ZRoom/ZRoomCommand.h" + +class ZRoomCommandUnk : public ZRoomCommand +{ +public: + ZRoomCommandUnk(ZFile* nParent); + + std::string GetBodySourceCode() const override; + + RoomCommand GetRoomCommand() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/ZNames.h b/tools/ZAPD/ZAPD/ZRoom/ZNames.h new file mode 100644 index 0000000000..bee03869e0 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/ZNames.h @@ -0,0 +1,49 @@ +#pragma once + +#include + +#include "Globals.h" +#include "StringHelper.h" + +class ZNames +{ +public: + static std::string GetObjectName(size_t id) + { + if (id >= Globals::Instance->cfg.objectList.size()) + return StringHelper::Sprintf("0x%04X", id); + return Globals::Instance->cfg.objectList.at(id); + } + + static std::string GetActorName(int32_t id) + { + switch (Globals::Instance->game) + { + case ZGame::OOT_RETAIL: + case ZGame::OOT_SW97: + if (id < ZNames::GetNumActors()) + return Globals::Instance->cfg.actorList.at(id); + else + return StringHelper::Sprintf("0x%04X", id); + case ZGame::MM_RETAIL: + { + int32_t flags = id & 0xF000; + id &= 0xFFF; + std::string name = ""; + if (id < ZNames::GetNumActors()) + name = Globals::Instance->cfg.actorList.at(id); + else + name = StringHelper::Sprintf("0x%04X", id); + + if (flags == 0) + return name; + else + return StringHelper::Sprintf("%s | 0x%04X", name.c_str(), flags); + } + } + + return ""; + } + + static int32_t GetNumActors() { return Globals::Instance->cfg.actorList.size(); } +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/ZRoom.cpp b/tools/ZAPD/ZAPD/ZRoom/ZRoom.cpp new file mode 100644 index 0000000000..936b014475 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/ZRoom.cpp @@ -0,0 +1,473 @@ +#include "ZRoom.h" +#include +#include +#include +#include "../File.h" +#include "../Globals.h" +#include "../StringHelper.h" +#include "../ZBlob.h" +#include "Commands/EndMarker.h" +#include "Commands/SetActorCutsceneList.h" +#include "Commands/SetActorList.h" +#include "Commands/SetAlternateHeaders.h" +#include "Commands/SetAnimatedMaterialList.h" +#include "Commands/SetCameraSettings.h" +#include "Commands/SetCollisionHeader.h" +#include "Commands/SetCsCamera.h" +#include "Commands/SetCutscenes.h" +#include "Commands/SetEchoSettings.h" +#include "Commands/SetEntranceList.h" +#include "Commands/SetExitList.h" +#include "Commands/SetLightList.h" +#include "Commands/SetLightingSettings.h" +#include "Commands/SetMesh.h" +#include "Commands/SetMinimapChests.h" +#include "Commands/SetMinimapList.h" +#include "Commands/SetObjectList.h" +#include "Commands/SetPathways.h" +#include "Commands/SetRoomBehavior.h" +#include "Commands/SetRoomList.h" +#include "Commands/SetSkyboxModifier.h" +#include "Commands/SetSkyboxSettings.h" +#include "Commands/SetSoundSettings.h" +#include "Commands/SetSpecialObjects.h" +#include "Commands/SetStartPositionList.h" +#include "Commands/SetTimeSettings.h" +#include "Commands/SetTransitionActorList.h" +#include "Commands/SetWind.h" +#include "Commands/SetWorldMapVisited.h" +#include "Commands/Unused09.h" +#include "Commands/Unused1D.h" +#include "Commands/ZRoomCommandUnk.h" +#include "ZCutscene.h" +#include "ZFile.h" + +using namespace tinyxml2; + +REGISTER_ZFILENODE(Room, ZRoom); +REGISTER_ZFILENODE(Scene, ZRoom); + +ZRoom::ZRoom(ZFile* nParent) : ZResource(nParent) +{ + roomCount = -1; + canHaveInner = true; + RegisterOptionalAttribute("HackMode"); +} + +ZRoom::~ZRoom() +{ + for (ZRoomCommand* cmd : commands) + delete cmd; +} + +void ZRoom::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + + scene = Globals::Instance->lastScene; + + if (std::string(reader->Name()) == "Scene") + { + scene = this; + Globals::Instance->lastScene = this; + } + + uint32_t cmdCount = UINT32_MAX; + + if (name == "syotes_room_0") + { + SyotesRoomHack(); + cmdCount = 0; + } + + for (XMLElement* child = reader->FirstChildElement(); child != nullptr; + child = child->NextSiblingElement()) + { + std::string childName = + child->Attribute("Name") == NULL ? "" : std::string(child->Attribute("Name")); + std::string childComment = child->Attribute("Comment") == NULL ? + "" : + "// " + std::string(child->Attribute("Comment")) + "\n"; + + // TODO: Bunch of repeated code between all of these that needs to be combined. + if (std::string(child->Name()) == "DListHint") + { + std::string addressStr = child->Attribute("Offset"); + int32_t address = strtol(StringHelper::Split(addressStr, "0x")[1].c_str(), NULL, 16); + + ZDisplayList* dList = new ZDisplayList( + rawData, address, + ZDisplayList::GetDListLength(rawData, address, + Globals::Instance->game == ZGame::OOT_SW97 ? + DListType::F3DEX : + DListType::F3DZEX), + parent); + dList->SetInnerNode(true); + + dList->GetSourceOutputCode(name); + delete dList; + } + else if (std::string(child->Name()) == "CutsceneHint") + { + std::string addressStr = child->Attribute("Offset"); + int32_t address = strtol(StringHelper::Split(addressStr, "0x")[1].c_str(), NULL, 16); + + ZCutscene* cutscene = new ZCutscene(parent); + cutscene->SetInnerNode(true); + cutscene->ExtractFromXML(child, rawData, address); + + cutscene->GetSourceOutputCode(name); + + delete cutscene; + } + else if (std::string(child->Name()) == "AltHeaderHint") + { + std::string addressStr = child->Attribute("Offset"); + int32_t address = strtol(StringHelper::Split(addressStr, "0x")[1].c_str(), NULL, 16); + + uint32_t commandsCount = UINT32_MAX; + + if (child->FindAttribute("Count") != NULL) + { + std::string commandCountStr = child->Attribute("Count"); + commandsCount = strtol(commandCountStr.c_str(), NULL, 10); + } + + commandSets.push_back(CommandSet(address, commandsCount)); + } + else if (std::string(child->Name()) == "PathHint") + { + std::string addressStr = child->Attribute("Offset"); + int32_t address = strtol(StringHelper::Split(addressStr, "0x")[1].c_str(), NULL, 16); + + // TODO: add this to command set + ZPath* pathway = new ZPath(parent); + pathway->SetInnerNode(true); + pathway->SetRawDataIndex(address); + pathway->ParseRawData(); + pathway->DeclareReferences(name); + pathway->GetSourceOutputCode(name); + + delete pathway; + } + +#ifndef DEPRECATION_OFF + fprintf(stderr, + "ZRoom::ExtractFromXML: Deprecation warning in '%s'.\n" + "\t The resource '%s' is currently deprecated, and will be removed in a future " + "version.\n" + "\t Use the non-hint version instead.\n", + name.c_str(), child->Name()); +#endif + } + + commandSets.push_back(CommandSet(rawDataIndex, cmdCount)); + ProcessCommandSets(); +} + +void ZRoom::ParseCommands(std::vector& commandList, CommandSet commandSet) +{ + bool shouldContinue = true; + uint32_t currentIndex = 0; + uint32_t rawDataIndex = GETSEGOFFSET(commandSet.address); + + uint32_t commandsLeft = commandSet.commandCount; + + while (shouldContinue) + { + if (commandsLeft <= 0) + break; + + RoomCommand opcode = static_cast(rawData.at(rawDataIndex)); + + ZRoomCommand* cmd = nullptr; + + auto start = std::chrono::steady_clock::now(); + + switch (opcode) + { + case RoomCommand::SetStartPositionList: + cmd = new SetStartPositionList(parent); + break; // 0x00 + case RoomCommand::SetActorList: + cmd = new SetActorList(parent); + break; // 0x01 + case RoomCommand::SetCsCamera: + cmd = new SetCsCamera(parent); + break; // 0x02 (MM-ONLY) + case RoomCommand::SetCollisionHeader: + cmd = new SetCollisionHeader(parent); + break; // 0x03 + case RoomCommand::SetRoomList: + cmd = new SetRoomList(parent); + break; // 0x04 + case RoomCommand::SetWind: + cmd = new SetWind(parent); + break; // 0x05 + case RoomCommand::SetEntranceList: + cmd = new SetEntranceList(parent); + break; // 0x06 + case RoomCommand::SetSpecialObjects: + cmd = new SetSpecialObjects(parent); + break; // 0x07 + case RoomCommand::SetRoomBehavior: + cmd = new SetRoomBehavior(parent); + break; // 0x08 + case RoomCommand::Unused09: + cmd = new Unused09(parent); + break; // 0x09 + case RoomCommand::SetMesh: + cmd = new SetMesh(parent); + break; // 0x0A + case RoomCommand::SetObjectList: + cmd = new SetObjectList(parent); + break; // 0x0B + case RoomCommand::SetLightList: + cmd = new SetLightList(parent); + break; // 0x0C (MM-ONLY) + case RoomCommand::SetPathways: + cmd = new SetPathways(parent); + break; // 0x0D + case RoomCommand::SetTransitionActorList: + cmd = new SetTransitionActorList(parent); + break; // 0x0E + case RoomCommand::SetLightingSettings: + cmd = new SetLightingSettings(parent); + break; // 0x0F + case RoomCommand::SetTimeSettings: + cmd = new SetTimeSettings(parent); + break; // 0x10 + case RoomCommand::SetSkyboxSettings: + cmd = new SetSkyboxSettings(parent); + break; // 0x11 + case RoomCommand::SetSkyboxModifier: + cmd = new SetSkyboxModifier(parent); + break; // 0x12 + case RoomCommand::SetExitList: + cmd = new SetExitList(parent); + break; // 0x13 + case RoomCommand::EndMarker: + cmd = new EndMarker(parent); + break; // 0x14 + case RoomCommand::SetSoundSettings: + cmd = new SetSoundSettings(parent); + break; // 0x15 + case RoomCommand::SetEchoSettings: + cmd = new SetEchoSettings(parent); + break; // 0x16 + case RoomCommand::SetCutscenes: + cmd = new SetCutscenes(parent); + break; // 0x17 + case RoomCommand::SetAlternateHeaders: + cmd = new SetAlternateHeaders(parent); + break; // 0x18 + case RoomCommand::SetCameraSettings: + if (Globals::Instance->game == ZGame::MM_RETAIL) + cmd = new SetWorldMapVisited(parent); + else + cmd = new SetCameraSettings(parent); + break; // 0x19 + case RoomCommand::SetAnimatedMaterialList: + cmd = new SetAnimatedMaterialList(parent); + break; // 0x1A (MM-ONLY) + case RoomCommand::SetActorCutsceneList: + cmd = new SetActorCutsceneList(parent); + break; // 0x1B (MM-ONLY) + case RoomCommand::SetMinimapList: + cmd = new SetMinimapList(parent); + break; // 0x1C (MM-ONLY) + case RoomCommand::Unused1D: + cmd = new Unused1D(parent); + break; // 0x1D + case RoomCommand::SetMinimapChests: + cmd = new SetMinimapChests(parent); + break; // 0x1E (MM-ONLY) + default: + cmd = new ZRoomCommandUnk(parent); + } + + cmd->ExtractCommandFromRoom(this, rawDataIndex); + cmd->DeclareReferences(GetName()); + + if (Globals::Instance->profile) + { + auto end = std::chrono::steady_clock::now(); + auto diff = std::chrono::duration_cast(end - start).count(); + if (diff > 50) + printf("OP: %s, TIME: %lims\n", cmd->GetCommandCName().c_str(), diff); + } + + cmd->cmdIndex = currentIndex; + + commandList.push_back(cmd); + + if (opcode == RoomCommand::EndMarker) + shouldContinue = false; + + rawDataIndex += 8; + currentIndex++; + + commandsLeft--; + } +} + +void ZRoom::ProcessCommandSets() +{ + while (commandSets.size() > 0) + { + std::vector setCommands = std::vector(); + + int32_t commandSet = commandSets[0].address; + ParseCommands(setCommands, commandSets[0]); + commandSets.erase(commandSets.begin()); + + for (auto& cmd : setCommands) + { + cmd->ParseRawDataLate(); + cmd->DeclareReferencesLate(name); + } + + if (!setCommands.empty()) + { + std::string declaration = ""; + + for (size_t i = 0; i < setCommands.size(); i++) + { + ZRoomCommand* cmd = setCommands[i]; + cmd->commandSet = GETSEGOFFSET(commandSet); + declaration += StringHelper::Sprintf("\t%s,", cmd->GetBodySourceCode().c_str()); + + if (i + 1 < setCommands.size()) + declaration += "\n"; + } + + parent->AddDeclarationArray( + GETSEGOFFSET(commandSet), DeclarationAlignment::Align16, 8 * setCommands.size(), + "static SCmdBase", + StringHelper::Sprintf("%sSet%04X", name.c_str(), GETSEGOFFSET(commandSet)), + setCommands.size(), declaration); + + sourceOutput += "\n"; + + for (ZRoomCommand* cmd : setCommands) + commands.push_back(cmd); + } + } +} + +/* + * There is one room in Ocarina of Time that lacks a header. Room 120, "Syotes", dates back to very + * early in the game's development. Since this room is a special case, this hack adds back a header + * so that the room can be processed properly. + */ +void ZRoom::SyotesRoomHack() +{ + PolygonType2 poly(parent, parent->GetRawData(), 0, this); + + poly.ParseRawData(); + poly.DeclareReferences(GetName()); + parent->AddDeclaration(0, DeclarationAlignment::Align4, poly.GetRawDataSize(), + poly.GetSourceTypeName(), poly.GetDefaultName(GetName()), + poly.GetBodySourceCode()); +} + +ZRoomCommand* ZRoom::FindCommandOfType(RoomCommand cmdType) +{ + for (size_t i = 0; i < commands.size(); i++) + { + if (commands[i]->GetRoomCommand() == cmdType) + return commands[i]; + } + + return nullptr; +} + +size_t ZRoom::GetDeclarationSizeFromNeighbor(uint32_t declarationAddress) +{ + auto currentDecl = parent->declarations.find(declarationAddress); + if (currentDecl == parent->declarations.end()) + return 0; + + auto nextDecl = currentDecl; + std::advance(nextDecl, 1); + if (nextDecl == parent->declarations.end()) + return rawData.size() - currentDecl->first; + + return nextDecl->first - currentDecl->first; +} + +size_t ZRoom::GetCommandSizeFromNeighbor(ZRoomCommand* cmd) +{ + int32_t cmdIndex = -1; + + for (size_t i = 0; i < commands.size(); i++) + { + if (commands[i] == cmd) + { + cmdIndex = i; + break; + } + } + + if (cmdIndex != -1) + { + if (cmdIndex + 1 < (int32_t)commands.size()) + return commands[cmdIndex + 1]->cmdAddress - commands[cmdIndex]->cmdAddress; + else + return rawData.size() - commands[cmdIndex]->cmdAddress; + } + + return 0; +} + +std::string ZRoom::GetSourceOutputHeader(const std::string& prefix) +{ + return "\n" + extDefines + "\n\n"; +} + +std::string ZRoom::GetSourceOutputCode(const std::string& prefix) +{ + sourceOutput = ""; + + sourceOutput += "#include \"segment_symbols.h\"\n"; + sourceOutput += "#include \"command_macros_base.h\"\n"; + sourceOutput += "#include \"z64cutscene_commands.h\"\n"; + sourceOutput += "#include \"variables.h\"\n"; + + if (scene != nullptr) + sourceOutput += scene->parent->GetHeaderInclude(); + + ProcessCommandSets(); + + return sourceOutput; +} + +size_t ZRoom::GetRawDataSize() const +{ + size_t size = 0; + + for (ZRoomCommand* cmd : commands) + size += cmd->GetRawDataSize(); + + return size; +} + +ZResourceType ZRoom::GetResourceType() const +{ + return ZResourceType::Room; +} + +void ZRoom::PreGenSourceFiles() +{ + for (ZRoomCommand* cmd : commands) + cmd->PreGenSourceFiles(); +} + +/* CommandSet */ + +CommandSet::CommandSet(uint32_t nAddress, uint32_t nCommandCount) +{ + address = nAddress; + commandCount = nCommandCount; +} diff --git a/tools/ZAPD/ZAPD/ZRoom/ZRoom.h b/tools/ZAPD/ZAPD/ZRoom/ZRoom.h new file mode 100644 index 0000000000..43f12ed7f7 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/ZRoom.h @@ -0,0 +1,50 @@ +#pragma once + +#include +#include +#include + +#include "ZResource.h" +#include "ZRoomCommand.h" +#include "tinyxml2.h" + +struct CommandSet +{ + uint32_t address; + uint32_t commandCount; // Only used if explicitly specified in the XML + + CommandSet(uint32_t nAddress, uint32_t nCommandCount = UINT32_MAX); +}; + +class ZRoom : public ZResource +{ +protected: + std::vector commands; + + std::string GetSourceOutputHeader(const std::string& prefix) override; + std::string GetSourceOutputCode(const std::string& prefix) override; + void ProcessCommandSets(); + void SyotesRoomHack(); + +public: + ZRoom* scene; + std::vector commandSets; + int32_t roomCount; // Only valid for scenes + + std::string extDefines; + + ZRoom(ZFile* nParent); + virtual ~ZRoom(); + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) override; + + void ParseCommands(std::vector& commandList, CommandSet commandSet); + size_t GetDeclarationSizeFromNeighbor(uint32_t declarationAddress); + size_t GetCommandSizeFromNeighbor(ZRoomCommand* cmd); + ZRoomCommand* FindCommandOfType(RoomCommand cmdType); + + size_t GetRawDataSize() const override; + ZResourceType GetResourceType() const override; + void PreGenSourceFiles() override; +}; diff --git a/tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.cpp b/tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.cpp new file mode 100644 index 0000000000..6c45c32c65 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.cpp @@ -0,0 +1,56 @@ +#include "ZRoomCommand.h" + +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZRoom.h" + +ZRoomCommand::ZRoomCommand(ZFile* nParent) : ZResource(nParent) +{ +} + +void ZRoomCommand::ExtractCommandFromRoom(ZRoom* nZRoom, uint32_t nRawDataIndex) +{ + zRoom = nZRoom; + rawDataIndex = nRawDataIndex; + + ParseRawData(); +} + +void ZRoomCommand::ParseRawData() +{ + auto& parentRawData = parent->GetRawData(); + cmdID = static_cast(parentRawData.at(rawDataIndex)); + cmdAddress = rawDataIndex; + + cmdArg1 = parentRawData.at(rawDataIndex + 1); + cmdArg2 = BitConverter::ToUInt32BE(parentRawData, rawDataIndex + 4); + segmentOffset = GETSEGOFFSET(cmdArg2); +} + +void ZRoomCommand::ParseRawDataLate() +{ +} + +void ZRoomCommand::DeclareReferencesLate(const std::string& prefix) +{ +} + +std::string ZRoomCommand::GetCommandCName() const +{ + return "SCmdBase"; +} + +ZResourceType ZRoomCommand::GetResourceType() const +{ + return ZResourceType::RoomCommand; +} + +size_t ZRoomCommand::GetRawDataSize() const +{ + return 0x08; +} + +std::string ZRoomCommand::GetCommandHex() const +{ + return StringHelper::Sprintf("0x%02X", static_cast(cmdID)); +} diff --git a/tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.h b/tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.h new file mode 100644 index 0000000000..e428704fd0 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZRoom/ZRoomCommand.h @@ -0,0 +1,88 @@ +#pragma once + +#include "tinyxml2.h" + +#include +#include + +#include "ZFile.h" +#include "ZResource.h" + +class ZRoom; + +enum class RoomCommand : uint8_t +{ + SetStartPositionList = 0x00, + SetActorList = 0x01, + SetCsCamera = 0x02, + SetCollisionHeader = 0x03, + SetRoomList = 0x04, + SetWind = 0x05, + SetEntranceList = 0x06, + SetSpecialObjects = 0x07, + SetRoomBehavior = 0x08, + Unused09 = 0x09, + SetMesh = 0x0A, + SetObjectList = 0x0B, + SetLightList = 0x0C, + SetPathways = 0x0D, + SetTransitionActorList = 0x0E, + SetLightingSettings = 0x0F, + SetTimeSettings = 0x10, + SetSkyboxSettings = 0x11, + SetSkyboxModifier = 0x12, + SetExitList = 0x13, + EndMarker = 0x14, + SetSoundSettings = 0x15, + SetEchoSettings = 0x16, + SetCutscenes = 0x17, + SetAlternateHeaders = 0x18, + SetCameraSettings = 0x19, + + // MM Commands + SetWorldMapVisited = 0x19, + SetAnimatedMaterialList = 0x1A, + SetActorCutsceneList = 0x1B, + SetMinimapList = 0x1C, + Unused1D = 0x1D, + SetMinimapChests = 0x1E, + + Error = 0xFF +}; + +class ZRoomCommand : public ZResource +{ +public: + int32_t cmdAddress; + uint32_t cmdIndex; + uint32_t commandSet; + + ZRoomCommand(ZFile* nParent); + virtual ~ZRoomCommand() = default; + + virtual void ExtractCommandFromRoom(ZRoom* nZRoom, uint32_t nRawDataIndex); + + void ParseRawData() override; + + virtual void ParseRawDataLate(); + virtual void DeclareReferencesLate(const std::string& prefix); + + virtual std::string GetBodySourceCode() const = 0; + + ZResourceType GetResourceType() const override; + + // Getters/Setters + virtual RoomCommand GetRoomCommand() const = 0; + size_t GetRawDataSize() const override; + virtual std::string GetCommandCName() const; + + virtual std::string GetCommandHex() const; + +protected: + ZRoom* zRoom; + + RoomCommand cmdID; + uint8_t cmdArg1; + segptr_t cmdArg2; + uint32_t segmentOffset; +}; diff --git a/tools/ZAPD/ZAPD/ZScalar.cpp b/tools/ZAPD/ZAPD/ZScalar.cpp new file mode 100644 index 0000000000..797ac07a19 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZScalar.cpp @@ -0,0 +1,230 @@ +#include "ZScalar.h" +#include "BitConverter.h" +#include "File.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Scalar, ZScalar); + +ZScalar::ZScalar(ZFile* nParent) : ZResource(nParent) +{ + memset(&scalarData, 0, sizeof(ZScalarData)); + scalarType = ZScalarType::ZSCALAR_NONE; + RegisterRequiredAttribute("Type"); +} + +ZScalar::ZScalar(const ZScalarType scalarType, ZFile* nParent) : ZScalar(nParent) +{ + this->scalarType = scalarType; +} + +void ZScalar::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + scalarType = ZScalar::MapOutputTypeToScalarType(registeredAttributes.at("Type").value); +} + +ZScalarType ZScalar::MapOutputTypeToScalarType(const std::string& type) +{ + if (type == "s8") + { + return ZScalarType::ZSCALAR_S8; + } + else if (type == "u8") + { + return ZScalarType::ZSCALAR_U8; + } + else if (type == "s16") + { + return ZScalarType::ZSCALAR_S16; + } + else if (type == "u16") + { + return ZScalarType::ZSCALAR_U16; + } + else if (type == "s32") + { + return ZScalarType::ZSCALAR_S32; + } + else if (type == "u32") + { + return ZScalarType::ZSCALAR_U32; + } + else if (type == "s64") + { + return ZScalarType::ZSCALAR_S64; + } + else if (type == "u64") + { + return ZScalarType::ZSCALAR_U64; + } + else if (type == "f32") + { + return ZScalarType::ZSCALAR_F32; + } + else if (type == "f64") + { + return ZScalarType::ZSCALAR_F64; + } + + return ZScalarType::ZSCALAR_NONE; +} + +std::string ZScalar::MapScalarTypeToOutputType(const ZScalarType scalarType) +{ + switch (scalarType) + { + case ZScalarType::ZSCALAR_S8: + return "s8"; + case ZScalarType::ZSCALAR_U8: + return "u8"; + case ZScalarType::ZSCALAR_S16: + return "s16"; + case ZScalarType::ZSCALAR_U16: + return "u16"; + case ZScalarType::ZSCALAR_S32: + return "s32"; + case ZScalarType::ZSCALAR_U32: + return "u32"; + case ZScalarType::ZSCALAR_S64: + return "s64"; + case ZScalarType::ZSCALAR_U64: + return "u64"; + case ZScalarType::ZSCALAR_F32: + return "f32"; + case ZScalarType::ZSCALAR_F64: + return "f64"; + default: + return ""; + } +} + +size_t ZScalar::MapTypeToSize(const ZScalarType scalarType) +{ + switch (scalarType) + { + case ZScalarType::ZSCALAR_S8: + return sizeof(scalarData.s8); + case ZScalarType::ZSCALAR_U8: + return sizeof(scalarData.u8); + case ZScalarType::ZSCALAR_S16: + return sizeof(scalarData.s16); + case ZScalarType::ZSCALAR_U16: + return sizeof(scalarData.u16); + case ZScalarType::ZSCALAR_S32: + return sizeof(scalarData.s32); + case ZScalarType::ZSCALAR_U32: + return sizeof(scalarData.u32); + case ZScalarType::ZSCALAR_S64: + return sizeof(scalarData.s64); + case ZScalarType::ZSCALAR_U64: + return sizeof(scalarData.u64); + case ZScalarType::ZSCALAR_F32: + return sizeof(scalarData.f32); + case ZScalarType::ZSCALAR_F64: + return sizeof(scalarData.f64); + default: + return 0; + } +} + +size_t ZScalar::GetRawDataSize() const +{ + return ZScalar::MapTypeToSize(scalarType); +} + +void ZScalar::ParseRawData() +{ + switch (scalarType) + { + case ZScalarType::ZSCALAR_S8: + scalarData.s8 = BitConverter::ToInt8BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_U8: + scalarData.u8 = BitConverter::ToUInt8BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_S16: + scalarData.s16 = BitConverter::ToInt16BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_U16: + scalarData.u16 = BitConverter::ToUInt16BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_S32: + scalarData.s32 = BitConverter::ToInt32BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_U32: + scalarData.u32 = BitConverter::ToUInt32BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_S64: + scalarData.s64 = BitConverter::ToInt64BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_U64: + scalarData.u64 = BitConverter::ToUInt64BE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_F32: + scalarData.f32 = BitConverter::ToFloatBE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_F64: + scalarData.f64 = BitConverter::ToDoubleBE(rawData, rawDataIndex); + break; + case ZScalarType::ZSCALAR_NONE: + fprintf(stderr, "Warning in ZScalar: Invalid type. %d %s %d\n", (int32_t)scalarType, + __FILE__, __LINE__); + break; + } +} + +std::string ZScalar::GetSourceTypeName() const +{ + return ZScalar::MapScalarTypeToOutputType(scalarType); +} + +std::string ZScalar::GetBodySourceCode() const +{ + switch (scalarType) + { + case ZScalarType::ZSCALAR_S8: + return StringHelper::Sprintf("%hhd", scalarData.s8); + case ZScalarType::ZSCALAR_U8: + return StringHelper::Sprintf("%hhu", scalarData.u8); + case ZScalarType::ZSCALAR_S16: + return StringHelper::Sprintf("%hd", scalarData.s16); + case ZScalarType::ZSCALAR_U16: + return StringHelper::Sprintf("%hu", scalarData.u16); + case ZScalarType::ZSCALAR_S32: + return StringHelper::Sprintf("%d", scalarData.s32); + case ZScalarType::ZSCALAR_U32: + return StringHelper::Sprintf("%u", scalarData.u32); + case ZScalarType::ZSCALAR_S64: + return StringHelper::Sprintf("%lld", scalarData.s64); + case ZScalarType::ZSCALAR_U64: + return StringHelper::Sprintf("%llu", scalarData.u64); + case ZScalarType::ZSCALAR_F32: + return StringHelper::Sprintf("%f", scalarData.f32); + case ZScalarType::ZSCALAR_F64: + return StringHelper::Sprintf("%lf", scalarData.f64); + default: + return "SCALAR_ERROR"; + } +} + +std::string ZScalar::GetSourceOutputCode(const std::string& prefix) +{ + if (parent != nullptr) + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), GetName(), GetBodySourceCode()); + + return ""; +} + +ZResourceType ZScalar::GetResourceType() const +{ + return ZResourceType::Scalar; +} + +bool ZScalar::DoesSupportArray() const +{ + return true; +} diff --git a/tools/ZAPD/ZAPD/ZScalar.h b/tools/ZAPD/ZAPD/ZScalar.h new file mode 100644 index 0000000000..a46c3a16ca --- /dev/null +++ b/tools/ZAPD/ZAPD/ZScalar.h @@ -0,0 +1,64 @@ +#pragma once + +#include +#include +#include +#include "ZResource.h" +#include "tinyxml2.h" + +enum class ZScalarType +{ + ZSCALAR_NONE, + ZSCALAR_S8, + ZSCALAR_U8, + ZSCALAR_S16, + ZSCALAR_U16, + ZSCALAR_S32, + ZSCALAR_U32, + ZSCALAR_S64, + ZSCALAR_U64, + ZSCALAR_F32, + ZSCALAR_F64 +}; + +typedef union ZScalarData +{ + uint8_t u8; + int8_t s8; + uint16_t u16; + int16_t s16; + uint32_t u32; + int32_t s32; + uint64_t u64; + int64_t s64; + float f32; + double f64; +} ZScalarData; + +class ZScalar : public ZResource +{ + friend class ZVector; + +public: + ZScalar(ZFile* nParent); + ZScalar(const ZScalarType scalarType, ZFile* nParent); + + void ParseRawData() override; + void ParseXML(tinyxml2::XMLElement* reader) override; + std::string GetBodySourceCode() const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + + bool DoesSupportArray() const override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + + size_t GetRawDataSize() const override; + + static size_t MapTypeToSize(const ZScalarType scalarType); + static ZScalarType MapOutputTypeToScalarType(const std::string& type); + static std::string MapScalarTypeToOutputType(const ZScalarType scalarType); + +protected: + ZScalarData scalarData; + ZScalarType scalarType; +}; diff --git a/tools/ZAPD/ZAPD/ZSkeleton.cpp b/tools/ZAPD/ZAPD/ZSkeleton.cpp new file mode 100644 index 0000000000..dd5f8bd003 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZSkeleton.cpp @@ -0,0 +1,252 @@ +#include "ZSkeleton.h" +#include "BitConverter.h" +#include "HighLevel/HLModelIntermediette.h" +#include "StringHelper.h" + +REGISTER_ZFILENODE(Skeleton, ZSkeleton); + +ZSkeleton::ZSkeleton(ZFile* nParent) : ZResource(nParent) +{ + type = ZSkeletonType::Normal; + limbType = ZLimbType::Standard; + dListCount = 0; + + RegisterRequiredAttribute("Type"); + RegisterRequiredAttribute("LimbType"); +} + +ZSkeleton::ZSkeleton(ZSkeletonType nType, ZLimbType nLimbType, const std::string& prefix, + const std::vector& nRawData, uint32_t nRawDataIndex, ZFile* nParent) + : ZSkeleton(nParent) +{ + rawData.assign(nRawData.begin(), nRawData.end()); + rawDataIndex = nRawDataIndex; + parent = nParent; + + name = StringHelper::Sprintf("%sSkel_%06X", prefix.c_str(), rawDataIndex); + type = nType; + limbType = nLimbType; + + ParseRawData(); + + std::string defaultPrefix = name; + defaultPrefix.replace(0, 1, "s"); // replace g prefix with s for local variables + uint32_t ptr = Seg2Filespace(limbsArrayAddress, parent->baseAddress); + + for (size_t i = 0; i < limbCount; i++) + { + uint32_t ptr2 = Seg2Filespace(BitConverter::ToUInt32BE(rawData, ptr), parent->baseAddress); + + ZLimb* limb = new ZLimb(limbType, prefix, rawData, ptr2, parent); + limbs.push_back(limb); + + ptr += 4; + } +} + +ZSkeleton::~ZSkeleton() +{ + for (auto& limb : limbs) + delete limb; +} + +void ZSkeleton::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + std::string skelTypeXml = registeredAttributes.at("Type").value; + + if (skelTypeXml == "Flex") + type = ZSkeletonType::Flex; + else if (skelTypeXml == "Curve") + type = ZSkeletonType::Curve; + else if (skelTypeXml != "Normal") + { + fprintf(stderr, + "ZSkeleton::ParseXML: Warning in '%s'.\n" + "\t Invalid Type found: '%s'.\n" + "\t Defaulting to 'Normal'.\n", + name.c_str(), skelTypeXml.c_str()); + type = ZSkeletonType::Normal; + } + + std::string limbTypeXml = registeredAttributes.at("LimbType").value; + + if (limbTypeXml == "Standard") + limbType = ZLimbType::Standard; + else if (limbTypeXml == "LOD") + limbType = ZLimbType::LOD; + else if (limbTypeXml == "Skin") + limbType = ZLimbType::Skin; + else if (limbTypeXml == "Curve") + limbType = ZLimbType::Curve; + else + { + fprintf(stderr, + "ZSkeleton::ParseXML: Warning in '%s'.\n" + "\t Invalid LimbType found: '%s'.\n" + "\t Defaulting to 'Standard'.\n", + name.c_str(), limbTypeXml.c_str()); + limbType = ZLimbType::Standard; + } +} + +void ZSkeleton::ParseRawData() +{ + ZResource::ParseRawData(); + + limbsArrayAddress = BitConverter::ToUInt32BE(rawData, rawDataIndex); + limbCount = BitConverter::ToUInt8BE(rawData, rawDataIndex + 4); + dListCount = BitConverter::ToUInt8BE(rawData, rawDataIndex + 8); +} + +void ZSkeleton::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align16, GetRawDataSize(), + GetSourceTypeName(), name, ""); + + std::string defaultPrefix = name; + defaultPrefix.replace(0, 1, "s"); // replace g prefix with s for local variables + uint32_t ptr = Seg2Filespace(limbsArrayAddress, parent->baseAddress); + + for (size_t i = 0; i < limbCount; i++) + { + uint32_t ptr2 = Seg2Filespace(BitConverter::ToUInt32BE(rawData, ptr), parent->baseAddress); + + std::string limbName = StringHelper::Sprintf("%sLimb_%06X", defaultPrefix.c_str(), ptr2); + Declaration* decl = parent->GetDeclaration(ptr2); + if (decl != nullptr) + limbName = decl->varName; + + ZLimb* limb = new ZLimb(parent); + limb->SetLimbType(limbType); + limb->SetName(limbName); + limb->ExtractFromXML(nullptr, rawData, ptr2); + limbs.push_back(limb); + + ptr += 4; + } +} + +void ZSkeleton::GenerateHLIntermediette(HLFileIntermediette& hlFile) +{ + HLModelIntermediette* mdl = (HLModelIntermediette*)&hlFile; + HLModelIntermediette::FromZSkeleton(mdl, this); + mdl->blocks.push_back(new HLTerminator()); +} + +size_t ZSkeleton::GetRawDataSize() const +{ + switch (type) + { + case ZSkeletonType::Flex: + return 0xC; + case ZSkeletonType::Normal: + case ZSkeletonType::Curve: + default: + return 0x8; + } +} + +std::string ZSkeleton::GetSourceOutputCode(const std::string& prefix) +{ + if (parent == nullptr) + return ""; + + std::string defaultPrefix = name.c_str(); + defaultPrefix.replace(0, 1, "s"); // replace g prefix with s for local variables + + for (auto& limb : limbs) + limb->GetSourceOutputCode(defaultPrefix); + + uint32_t ptr = Seg2Filespace(limbsArrayAddress, parent->baseAddress); + if (!parent->HasDeclaration(ptr)) + { + // Table + std::string tblStr = ""; + std::string limbArrTypeStr = "static void*"; + if (limbType == ZLimbType::Curve) + { + limbArrTypeStr = + StringHelper::Sprintf("static %s*", ZLimb::GetSourceTypeName(limbType)); + } + + for (size_t i = 0; i < limbs.size(); i++) + { + ZLimb* limb = limbs.at(i); + + std::string decl = StringHelper::Sprintf( + " &%s,", parent->GetDeclarationName(limb->GetFileAddress()).c_str()); + if (i != (limbs.size() - 1)) + { + decl += "\n"; + } + + tblStr += decl; + } + + parent->AddDeclarationArray(ptr, DeclarationAlignment::None, 4 * limbCount, limbArrTypeStr, + StringHelper::Sprintf("%sLimbs", defaultPrefix.c_str()), + limbCount, tblStr); + } + + std::string headerStr; + switch (type) + { + case ZSkeletonType::Normal: + case ZSkeletonType::Curve: + headerStr = StringHelper::Sprintf("\n\t%sLimbs, %i\n", defaultPrefix.c_str(), limbCount); + break; + case ZSkeletonType::Flex: + headerStr = StringHelper::Sprintf("\n\t{ %sLimbs, %i }, %i\n", defaultPrefix.c_str(), + limbCount, dListCount); + break; + } + + Declaration* decl = parent->GetDeclaration(GetAddress()); + + if (decl == nullptr) + { + parent->AddDeclaration(GetAddress(), DeclarationAlignment::Align16, GetRawDataSize(), + GetSourceTypeName(), name, headerStr); + } + else + { + decl->text = headerStr; + } + + return ""; +} + +std::string ZSkeleton::GetSourceTypeName() const +{ + switch (type) + { + case ZSkeletonType::Normal: + return "SkeletonHeader"; + case ZSkeletonType::Flex: + return "FlexSkeletonHeader"; + case ZSkeletonType::Curve: + return "SkelCurveLimbList"; + } + + return "SkeletonHeader"; +} + +ZResourceType ZSkeleton::GetResourceType() const +{ + return ZResourceType::Skeleton; +} + +segptr_t ZSkeleton::GetAddress() +{ + return rawDataIndex; +} + +uint8_t ZSkeleton::GetLimbCount() +{ + return limbCount; +} diff --git a/tools/ZAPD/ZAPD/ZSkeleton.h b/tools/ZAPD/ZAPD/ZSkeleton.h new file mode 100644 index 0000000000..6841b828b1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZSkeleton.h @@ -0,0 +1,49 @@ +#pragma once + +#include +#include +#include +#include "ZDisplayList.h" +#include "ZFile.h" +#include "ZLimb.h" + +enum class ZSkeletonType +{ + Normal, + Flex, + Curve, +}; + +class ZSkeleton : public ZResource +{ +public: + ZSkeletonType type; + ZLimbType limbType; + std::vector limbs; + segptr_t limbsArrayAddress; + uint8_t limbCount; + uint8_t dListCount; // FLEX SKELETON ONLY + + ZSkeleton(ZFile* nParent); + ZSkeleton(ZSkeletonType nType, ZLimbType nLimbType, const std::string& prefix, + const std::vector& nRawData, uint32_t nRawDataIndex, ZFile* nParent); + ~ZSkeleton(); + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + std::string GetSourceOutputCode(const std::string& prefix) override; + void GenerateHLIntermediette(HLFileIntermediette& hlFile) override; + + size_t GetRawDataSize() const override; + + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + + segptr_t GetAddress(); + uint8_t GetLimbCount(); + +protected: +}; diff --git a/tools/ZAPD/ZAPD/ZString.cpp b/tools/ZAPD/ZAPD/ZString.cpp new file mode 100644 index 0000000000..24ef2d699c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZString.cpp @@ -0,0 +1,62 @@ +#include "ZString.h" + +#include "File.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(String, ZString); + +ZString::ZString(ZFile* nParent) : ZResource(nParent) +{ +} + +void ZString::ParseRawData() +{ + size_t size = 0; + uint8_t* rawDataArr = rawData.data(); + size_t rawDataSize = rawData.size(); + for (size_t i = rawDataIndex; i < rawDataSize; ++i) + { + ++size; + if (rawDataArr[i] == '\0') + { + break; + } + } + + auto dataStart = rawData.begin() + rawDataIndex; + strData.assign(dataStart, dataStart + size); +} + +std::string ZString::GetBodySourceCode() const +{ + return StringHelper::Sprintf("\t\"%s\"", strData.data()); +} + +std::string ZString::GetSourceOutputCode(const std::string& prefix) +{ + parent->AddDeclarationArray(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), name, 0, GetBodySourceCode()); + + return ""; +} + +std::string ZString::GetSourceOutputHeader(const std::string& prefix) +{ + return StringHelper::Sprintf("#define %s_macro \"%s\"", name.c_str(), rawData.data()); +} + +std::string ZString::GetSourceTypeName() const +{ + return "char"; +} + +ZResourceType ZString::GetResourceType() const +{ + return ZResourceType::String; +} + +size_t ZString::GetRawDataSize() const +{ + return strData.size(); +} diff --git a/tools/ZAPD/ZAPD/ZString.h b/tools/ZAPD/ZAPD/ZString.h new file mode 100644 index 0000000000..3c0c2905a1 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZString.h @@ -0,0 +1,23 @@ +#pragma once + +#include "ZResource.h" +#include "tinyxml2.h" + +class ZString : public ZResource +{ +public: + ZString(ZFile* nParent); + + void ParseRawData() override; + std::string GetBodySourceCode() const; + std::string GetSourceOutputCode(const std::string& prefix) override; + + std::string GetSourceOutputHeader(const std::string& prefix) override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + + size_t GetRawDataSize() const override; + +protected: + std::vector strData; +}; diff --git a/tools/ZAPD/ZAPD/ZSymbol.cpp b/tools/ZAPD/ZAPD/ZSymbol.cpp new file mode 100644 index 0000000000..3ba69db685 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZSymbol.cpp @@ -0,0 +1,96 @@ +#include "ZSymbol.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Symbol, ZSymbol); + +ZSymbol::ZSymbol(ZFile* nParent) : ZResource(nParent) +{ + RegisterOptionalAttribute("Type"); + RegisterOptionalAttribute("TypeSize"); + RegisterOptionalAttribute("Count"); +} + +void ZSymbol::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); +} + +void ZSymbol::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + std::string typeXml = registeredAttributes.at("Type").value; + + if (typeXml == "") + { + fprintf(stderr, + "ZSymbol::ParseXML: Warning in '%s'.\n" + "\t Missing 'Type' attribute in xml.\n" + "\t Defaulting to 'void*'.\n", + name.c_str()); + type = "void*"; + } + else + { + type = typeXml; + } + + std::string typeSizeXml = registeredAttributes.at("TypeSize").value; + if (typeSizeXml == "") + { + fprintf(stderr, + "ZSymbol::ParseXML: Warning in '%s'.\n" + "\t Missing 'TypeSize' attribute in xml.\n" + "\t Defaulting to '4'.\n", + name.c_str()); + typeSize = 4; // Size of a word. + } + else + { + typeSize = StringHelper::StrToL(typeSizeXml, 0); + } + + if (registeredAttributes.at("Count").wasSet) + { + isArray = true; + + std::string countXml = registeredAttributes.at("Count").value; + if (countXml != "") + count = StringHelper::StrToL(countXml, 0); + } +} + +size_t ZSymbol::GetRawDataSize() const +{ + if (isArray) + return count * typeSize; + + return typeSize; +} + +std::string ZSymbol::GetSourceOutputHeader(const std::string& prefix) +{ + if (isArray) + { + if (count == 0) + return StringHelper::Sprintf("extern %s %s%s[];\n", type.c_str(), prefix.c_str(), + name.c_str()); + else + return StringHelper::Sprintf("extern %s %s%s[%i];\n", type.c_str(), prefix.c_str(), + name.c_str(), count); + } + + return StringHelper::Sprintf("extern %s %s%s;\n", type.c_str(), prefix.c_str(), name.c_str()); +} + +std::string ZSymbol::GetSourceTypeName() const +{ + return type; +} + +ZResourceType ZSymbol::GetResourceType() const +{ + return ZResourceType::Symbol; +} diff --git a/tools/ZAPD/ZAPD/ZSymbol.h b/tools/ZAPD/ZAPD/ZSymbol.h new file mode 100644 index 0000000000..ad818fe1a6 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZSymbol.h @@ -0,0 +1,28 @@ +#pragma once + +#include "ZResource.h" +#include "tinyxml2.h" + +class ZSymbol : public ZResource +{ +protected: + std::string type; + size_t typeSize; + bool isArray = false; + uint32_t count = 0; + +public: + ZSymbol(ZFile* nParent); + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + const uint32_t nRawDataIndex) override; + + void ParseXML(tinyxml2::XMLElement* reader) override; + + size_t GetRawDataSize() const override; + + std::string GetSourceOutputHeader(const std::string& prefix) override; + + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; +}; diff --git a/tools/ZAPD/ZAPD/ZTexture.cpp b/tools/ZAPD/ZAPD/ZTexture.cpp new file mode 100644 index 0000000000..b47fd23bb4 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZTexture.cpp @@ -0,0 +1,885 @@ +#include "ZTexture.h" + +#include +#include "BitConverter.h" +#include "CRC32.h" +#include "Directory.h" +#include "File.h" +#include "Globals.h" +#include "Path.h" + +REGISTER_ZFILENODE(Texture, ZTexture); + +ZTexture::ZTexture(ZFile* nParent) : ZResource(nParent) +{ + width = 0; + height = 0; + + RegisterRequiredAttribute("Width"); + RegisterRequiredAttribute("Height"); + RegisterRequiredAttribute("Format"); + RegisterOptionalAttribute("TlutOffset"); +} + +void ZTexture::ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) +{ + ZResource::ExtractFromXML(reader, nRawData, nRawDataIndex); + + auto filepath = Globals::Instance->outputPath / fs::path(name).stem(); + + std::string incStr = + StringHelper::Sprintf("%s.%s.inc.c", filepath.c_str(), GetExternalExtension().c_str()); + + parent->AddDeclarationIncludeArray(rawDataIndex, incStr, GetRawDataSize(), GetSourceTypeName(), + name, 0); +} + +void ZTexture::FromBinary(const std::vector& nRawData, uint32_t nRawDataIndex, + int32_t nWidth, int32_t nHeight, TextureType nType, bool nIsPalette) +{ + width = nWidth; + height = nHeight; + format = nType; + rawDataIndex = nRawDataIndex; + isPalette = nIsPalette; + name = GetDefaultName(parent->GetName()); + outName = name; + + rawData.assign(nRawData.begin(), nRawData.end()); + + ParseRawData(); + CalcHash(); +} + +void ZTexture::FromPNG(const fs::path& pngFilePath, TextureType texType) +{ + format = texType; + name = StringHelper::Split(Path::GetFileNameWithoutExtension(pngFilePath), ".")[0]; + PrepareRawDataFromFile(pngFilePath); +} + +void ZTexture::FromHLTexture(HLTexture* hlTex) +{ + width = hlTex->width; + height = hlTex->height; + format = static_cast(hlTex->type); +} + +void ZTexture::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + std::string widthXml = registeredAttributes.at("Width").value; + std::string heightXml = registeredAttributes.at("Height").value; + + if (!StringHelper::HasOnlyDigits(widthXml)) + { + throw std::runtime_error(StringHelper::Sprintf( + "ZTexture::ParseXML: Error in %s\n" + "\t Value of 'Width' attribute has non-decimal digits: '%s'.\n", + name.c_str(), widthXml.c_str())); + } + if (!StringHelper::HasOnlyDigits(heightXml)) + { + throw std::runtime_error(StringHelper::Sprintf( + "ZTexture::ParseXML: Error in %s\n" + "\t Value of 'Height' attribute has non-decimal digits: '%s'.\n", + name.c_str(), heightXml.c_str())); + } + + width = StringHelper::StrToL(widthXml); + height = StringHelper::StrToL(heightXml); + + std::string formatStr = registeredAttributes.at("Format").value; + format = GetTextureTypeFromString(formatStr); + + if (format == TextureType::Error) + throw std::runtime_error("Format " + formatStr + " is not supported!"); + + const auto& tlutOffsetAttr = registeredAttributes.at("TlutOffset"); + if (tlutOffsetAttr.wasSet) + { + switch (format) + { + case TextureType::Palette4bpp: + case TextureType::Palette8bpp: + tlutOffset = StringHelper::StrToL(tlutOffsetAttr.value, 16); + break; + + default: + throw std::runtime_error(StringHelper::Sprintf( + "ZTexture::ParseXML: Error in %s\n" + "\t 'TlutOffset' declared in non color-indexed (ci4 or ci8) texture.\n", + name.c_str())); + break; + } + } +} + +void ZTexture::ParseRawData() +{ + switch (format) + { + case TextureType::RGBA16bpp: + PrepareBitmapRGBA16(); + break; + case TextureType::RGBA32bpp: + PrepareBitmapRGBA32(); + break; + case TextureType::Grayscale4bpp: + PrepareBitmapGrayscale4(); + break; + case TextureType::Grayscale8bpp: + PrepareBitmapGrayscale8(); + break; + case TextureType::GrayscaleAlpha4bpp: + PrepareBitmapGrayscaleAlpha4(); + break; + case TextureType::GrayscaleAlpha8bpp: + PrepareBitmapGrayscaleAlpha8(); + break; + case TextureType::GrayscaleAlpha16bpp: + PrepareBitmapGrayscaleAlpha16(); + break; + case TextureType::Palette4bpp: + PrepareBitmapPalette4(); + break; + case TextureType::Palette8bpp: + PrepareBitmapPalette8(); + break; + default: + throw std::runtime_error("Format is not supported!"); + } +} + +void ZTexture::PrepareBitmapRGBA16() +{ + textureData.InitEmptyRGBImage(width, height, true); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + int32_t pos = rawDataIndex + ((y * width) + x) * 2; + uint16_t data = parentRawData.at(pos + 1) | (parentRawData.at(pos) << 8); + uint8_t r = (data & 0xF800) >> 11; + uint8_t g = (data & 0x07C0) >> 6; + uint8_t b = (data & 0x003E) >> 1; + uint8_t alpha = data & 0x01; + + textureData.SetRGBPixel(y, x, r * 8, g * 8, b * 8, alpha * 255); + } + } +} + +void ZTexture::PrepareBitmapRGBA32() +{ + textureData.InitEmptyRGBImage(width, height, true); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + size_t pos = rawDataIndex + ((y * width) + x) * 4; + uint8_t r = parentRawData.at(pos + 0); + uint8_t g = parentRawData.at(pos + 1); + uint8_t b = parentRawData.at(pos + 2); + uint8_t alpha = parentRawData.at(pos + 3); + + textureData.SetRGBPixel(y, x, r, g, b, alpha); + } + } +} + +void ZTexture::PrepareBitmapGrayscale4() +{ + textureData.InitEmptyRGBImage(width, height, false); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x += 2) + { + for (uint8_t i = 0; i < 2; i++) + { + size_t pos = rawDataIndex + ((y * width) + x) / 2; + uint8_t grayscale = 0; + + if (i == 0) + grayscale = parentRawData.at(pos) & 0xF0; + else + grayscale = (parentRawData.at(pos) & 0x0F) << 4; + + textureData.SetGrayscalePixel(y, x + i, grayscale); + } + } + } +} + +void ZTexture::PrepareBitmapGrayscale8() +{ + textureData.InitEmptyRGBImage(width, height, false); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + size_t pos = rawDataIndex + ((y * width) + x) * 1; + + textureData.SetGrayscalePixel(y, x, parentRawData.at(pos)); + } + } +} + +void ZTexture::PrepareBitmapGrayscaleAlpha4() +{ + textureData.InitEmptyRGBImage(width, height, true); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x += 2) + { + for (uint16_t i = 0; i < 2; i++) + { + size_t pos = rawDataIndex + ((y * width) + x) / 2; + uint8_t data = 0; + + if (i == 0) + data = (parentRawData.at(pos) & 0xF0) >> 4; + else + data = parentRawData.at(pos) & 0x0F; + + uint8_t grayscale = ((data & 0x0E) >> 1) * 32; + uint8_t alpha = (data & 0x01) * 255; + + textureData.SetGrayscalePixel(y, x + i, grayscale, alpha); + } + } + } +} + +void ZTexture::PrepareBitmapGrayscaleAlpha8() +{ + textureData.InitEmptyRGBImage(width, height, true); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + size_t pos = rawDataIndex + ((y * width) + x) * 1; + uint8_t grayscale = parentRawData.at(pos) & 0xF0; + uint8_t alpha = (parentRawData.at(pos) & 0x0F) << 4; + + textureData.SetGrayscalePixel(y, x, grayscale, alpha); + } + } +} + +void ZTexture::PrepareBitmapGrayscaleAlpha16() +{ + textureData.InitEmptyRGBImage(width, height, true); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + size_t pos = rawDataIndex + ((y * width) + x) * 2; + uint8_t grayscale = parentRawData.at(pos + 0); + uint8_t alpha = parentRawData.at(pos + 1); + + textureData.SetGrayscalePixel(y, x, grayscale, alpha); + } + } +} + +void ZTexture::PrepareBitmapPalette4() +{ + textureData.InitEmptyPaletteImage(width, height); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x += 2) + { + for (uint16_t i = 0; i < 2; i++) + { + size_t pos = rawDataIndex + ((y * width) + x) / 2; + uint8_t paletteIndex = 0; + + if (i == 0) + paletteIndex = (parentRawData.at(pos) & 0xF0) >> 4; + else + paletteIndex = (parentRawData.at(pos) & 0x0F); + + textureData.SetIndexedPixel(y, x + i, paletteIndex, paletteIndex * 16); + } + } + } +} + +void ZTexture::PrepareBitmapPalette8() +{ + textureData.InitEmptyPaletteImage(width, height); + auto parentRawData = parent->GetRawData(); + for (size_t y = 0; y < height; y++) + { + for (size_t x = 0; x < width; x++) + { + size_t pos = rawDataIndex + ((y * width) + x) * 1; + uint8_t grayscale = parentRawData.at(pos); + + textureData.SetIndexedPixel(y, x, grayscale, grayscale); + } + } +} + +void ZTexture::DeclareReferences(const std::string& prefix) +{ + if (tlutOffset != static_cast(-1)) + { + tlut = parent->GetTextureResource(tlutOffset); + if (tlut == nullptr) + { + int32_t tlutDim = 16; + if (format == TextureType::Palette4bpp) + tlutDim = 4; + + auto filepath = Globals::Instance->outputPath / fs::path(name).stem(); + std::string incStr = StringHelper::Sprintf("%s.%s.inc.c", filepath.c_str(), + GetExternalExtension().c_str()); + + tlut = new ZTexture(parent); + tlut->FromBinary(rawData, tlutOffset, tlutDim, tlutDim, TextureType::RGBA16bpp, true); + parent->AddTextureResource(tlutOffset, tlut); + parent->AddDeclarationIncludeArray(tlutOffset, incStr, tlut->GetRawDataSize(), + tlut->GetSourceTypeName(), tlut->GetName(), 0); + } + else + { + tlut->isPalette = true; + } + SetTlut(tlut); + } +} + +void ZTexture::PrepareRawDataFromFile(const fs::path& pngFilePath) +{ + switch (format) + { + case TextureType::RGBA16bpp: + PrepareRawDataRGBA16(pngFilePath); + break; + case TextureType::RGBA32bpp: + PrepareRawDataRGBA32(pngFilePath); + break; + case TextureType::Grayscale4bpp: + PrepareRawDataGrayscale4(pngFilePath); + break; + case TextureType::Grayscale8bpp: + PrepareRawDataGrayscale8(pngFilePath); + break; + case TextureType::GrayscaleAlpha4bpp: + PrepareRawDataGrayscaleAlpha4(pngFilePath); + break; + case TextureType::GrayscaleAlpha8bpp: + PrepareRawDataGrayscaleAlpha8(pngFilePath); + break; + case TextureType::GrayscaleAlpha16bpp: + PrepareRawDataGrayscaleAlpha16(pngFilePath); + break; + case TextureType::Palette4bpp: + PrepareRawDataPalette4(pngFilePath); + break; + case TextureType::Palette8bpp: + PrepareRawDataPalette8(pngFilePath); + break; + default: + throw std::runtime_error("Format is not supported!"); + } +} + +void ZTexture::PrepareRawDataRGBA16(const fs::path& rgbaPath) +{ + textureData.ReadPng(rgbaPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x++) + { + size_t pos = ((y * width) + x) * 2; + RGBAPixel pixel = textureData.GetPixel(y, x); + + uint8_t r = pixel.r / 8; + uint8_t g = pixel.g / 8; + uint8_t b = pixel.b / 8; + + uint8_t alphaBit = pixel.a != 0; + + uint16_t data = (r << 11) + (g << 6) + (b << 1) + alphaBit; + + textureDataRaw[pos + 0] = (data & 0xFF00) >> 8; + textureDataRaw[pos + 1] = (data & 0x00FF); + } + } +} + +void ZTexture::PrepareRawDataRGBA32(const fs::path& rgbaPath) +{ + textureData.ReadPng(rgbaPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x++) + { + size_t pos = ((y * width) + x) * 4; + RGBAPixel pixel = textureData.GetPixel(y, x); + + textureDataRaw[pos + 0] = pixel.r; + textureDataRaw[pos + 1] = pixel.g; + textureDataRaw[pos + 2] = pixel.b; + textureDataRaw[pos + 3] = pixel.a; + } + } +} + +void ZTexture::PrepareRawDataGrayscale4(const fs::path& grayPath) +{ + textureData.ReadPng(grayPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x += 2) + { + size_t pos = ((y * width) + x) / 2; + uint8_t r1 = textureData.GetPixel(y, x).r; + uint8_t r2 = textureData.GetPixel(y, x + 1).r; + + textureDataRaw[pos] = (uint8_t)(((r1 / 16) << 4) + (r2 / 16)); + } + } +} + +void ZTexture::PrepareRawDataGrayscale8(const fs::path& grayPath) +{ + textureData.ReadPng(grayPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x++) + { + size_t pos = (y * width) + x; + RGBAPixel pixel = textureData.GetPixel(y, x); + textureDataRaw[pos] = pixel.r; + } + } +} + +void ZTexture::PrepareRawDataGrayscaleAlpha4(const fs::path& grayAlphaPath) +{ + textureData.ReadPng(grayAlphaPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x += 2) + { + size_t pos = ((y * width) + x) / 2; + uint8_t data = 0; + + for (uint16_t i = 0; i < 2; i++) + { + RGBAPixel pixel = textureData.GetPixel(y, x + i); + uint8_t cR = pixel.r; + uint8_t alphaBit = pixel.a != 0; + + if (i == 0) + data |= (((cR / 32) << 1) + alphaBit) << 4; + else + data |= ((cR / 32) << 1) + alphaBit; + } + + textureDataRaw[pos] = data; + } + } +} + +void ZTexture::PrepareRawDataGrayscaleAlpha8(const fs::path& grayAlphaPath) +{ + textureData.ReadPng(grayAlphaPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x++) + { + size_t pos = ((y * width) + x) * 1; + RGBAPixel pixel = textureData.GetPixel(y, x); + + uint8_t r = pixel.r; + uint8_t a = pixel.a; + + textureDataRaw[pos] = ((r / 16) << 4) + (a / 16); + } + } +} + +void ZTexture::PrepareRawDataGrayscaleAlpha16(const fs::path& grayAlphaPath) +{ + textureData.ReadPng(grayAlphaPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x++) + { + size_t pos = ((y * width) + x) * 2; + RGBAPixel pixel = textureData.GetPixel(y, x); + + uint8_t cR = pixel.r; + uint8_t aR = pixel.a; + + textureDataRaw[pos + 0] = cR; + textureDataRaw[pos + 1] = aR; + } + } +} + +void ZTexture::PrepareRawDataPalette4(const fs::path& palPath) +{ + textureData.ReadPng(palPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x += 2) + { + size_t pos = ((y * width) + x) / 2; + + uint8_t cR1 = textureData.GetIndexedPixel(y, x); + uint8_t cR2 = textureData.GetIndexedPixel(y, x + 1); + + textureDataRaw[pos] = (cR1 << 4) | (cR2); + } + } +} + +void ZTexture::PrepareRawDataPalette8(const fs::path& palPath) +{ + textureData.ReadPng(palPath); + + width = textureData.GetWidth(); + height = textureData.GetHeight(); + + textureDataRaw.clear(); + textureDataRaw.resize(GetRawDataSize()); + for (uint16_t y = 0; y < height; y++) + { + for (uint16_t x = 0; x < width; x++) + { + size_t pos = ((y * width) + x); + uint8_t cR = textureData.GetIndexedPixel(y, x); + + textureDataRaw[pos] = cR; + } + } +} + +float ZTexture::GetPixelMultiplyer() const +{ + switch (format) + { + case TextureType::Grayscale4bpp: + case TextureType::GrayscaleAlpha4bpp: + case TextureType::Palette4bpp: + return 0.5f; + case TextureType::Grayscale8bpp: + case TextureType::GrayscaleAlpha8bpp: + case TextureType::Palette8bpp: + return 1; + case TextureType::GrayscaleAlpha16bpp: + case TextureType::RGBA16bpp: + return 2; + case TextureType::RGBA32bpp: + return 4; + default: + return -1; + } +} + +size_t ZTexture::GetRawDataSize() const +{ + return (width * height * GetPixelMultiplyer()); +} + +std::string ZTexture::GetIMFmtFromType() +{ + switch (format) + { + case TextureType::RGBA32bpp: + case TextureType::RGBA16bpp: + return "G_IM_FMT_RGBA"; + case TextureType::Grayscale4bpp: + case TextureType::Grayscale8bpp: + return "G_IM_FMT_I"; + case TextureType::Palette4bpp: + case TextureType::Palette8bpp: + return "G_IM_FMT_CI"; + case TextureType::GrayscaleAlpha4bpp: + case TextureType::GrayscaleAlpha8bpp: + case TextureType::GrayscaleAlpha16bpp: + return "G_IM_FMT_IA"; + default: + return "ERROR"; + } +} + +std::string ZTexture::GetIMSizFromType() +{ + switch (format) + { + case TextureType::Grayscale4bpp: + case TextureType::Palette4bpp: + case TextureType::GrayscaleAlpha4bpp: + return "G_IM_SIZ_4b"; + case TextureType::Palette8bpp: + case TextureType::Grayscale8bpp: + return "G_IM_SIZ_8b"; + case TextureType::GrayscaleAlpha16bpp: + case TextureType::RGBA16bpp: + return "G_IM_SIZ_16b"; + case TextureType::RGBA32bpp: + return "G_IM_SIZ_32b"; + default: + return "ERROR"; + } +} + +std::string ZTexture::GetDefaultName(const std::string& prefix) +{ + const char* suffix = "Tex"; + if (isPalette) + suffix = "TLUT"; + return StringHelper::Sprintf("%s%s_%06X", prefix.c_str(), suffix, rawDataIndex); +} + +uint32_t ZTexture::GetWidth() const +{ + return width; +} + +uint32_t ZTexture::GetHeight() const +{ + return height; +} + +void ZTexture::SetDimensions(uint32_t nWidth, uint32_t nHeight) +{ + width = nWidth; + height = nHeight; + ParseRawData(); +} + +TextureType ZTexture::GetTextureType() const +{ + return format; +} + +void ZTexture::Save(const fs::path& outFolder) +{ + // Optionally generate text file containing CRC information. This is going to be a one time + // process for generating the Texture Pool XML. + if (Globals::Instance->outputCrc) + { + File::WriteAllText(Globals::Instance->outputPath / (outName + ".txt"), + StringHelper::Sprintf("%08lX", hash)); + } + + auto outPath = GetPoolOutPath(outFolder); + + if (!Directory::Exists(outPath)) + Directory::CreateDirectory(outPath); + + auto outFileName = outPath / (outName + "." + GetExternalExtension() + ".png"); + +#ifdef TEXTURE_DEBUG + printf("Saving PNG: %s\n", outFileName.c_str()); + printf("\t Var name: %s\n", name.c_str()); + if (tlut != nullptr) + printf("\t TLUT name: %s\n", tlut->name.c_str()); +#endif + + textureData.WritePng(outFileName); + +#ifdef TEXTURE_DEBUG + printf("\n"); +#endif +} + +std::string ZTexture::GetBodySourceCode() const +{ + std::string sourceOutput = ""; + + for (size_t i = 0; i < textureDataRaw.size(); i += 8) + { + if (i % 32 == 0) + sourceOutput += " "; + + sourceOutput += + StringHelper::Sprintf("0x%016llX, ", BitConverter::ToUInt64BE(textureDataRaw, i)); + + if (i % 32 == 24) + sourceOutput += StringHelper::Sprintf(" // 0x%06X \n", rawDataIndex + ((i / 32) * 32)); + } + + // Ensure there's always a trailing line feed to prevent dumb warnings. + // Please don't remove this line, unless you somehow made a way to prevent + // that warning when building the OoT repo. + sourceOutput += "\n"; + + return sourceOutput; +} + +bool ZTexture::IsExternalResource() const +{ + return true; +} + +ZResourceType ZTexture::GetResourceType() const +{ + return ZResourceType::Texture; +} + +std::string ZTexture::GetSourceTypeName() const +{ + return "u64"; +} + +void ZTexture::CalcHash() +{ + auto parentRawData = parent->GetRawData(); + hash = CRC32B(parentRawData.data() + rawDataIndex, GetRawDataSize()); +} + +std::string ZTexture::GetExternalExtension() const +{ + switch (format) + { + case TextureType::RGBA32bpp: + return "rgba32"; + case TextureType::RGBA16bpp: + return "rgb5a1"; + case TextureType::Grayscale4bpp: + return "i4"; + case TextureType::Grayscale8bpp: + return "i8"; + case TextureType::GrayscaleAlpha4bpp: + return "ia4"; + case TextureType::GrayscaleAlpha8bpp: + return "ia8"; + case TextureType::GrayscaleAlpha16bpp: + return "ia16"; + case TextureType::Palette4bpp: + return "ci4"; + case TextureType::Palette8bpp: + return "ci8"; + default: + return "ERROR"; + } +} + +fs::path ZTexture::GetPoolOutPath(const fs::path& defaultValue) +{ + if (Globals::Instance->cfg.texturePool.find(hash) != Globals::Instance->cfg.texturePool.end()) + return Path::GetDirectoryName(Globals::Instance->cfg.texturePool[hash].path.string()); + + return defaultValue; +} + +TextureType ZTexture::GetTextureTypeFromString(std::string str) +{ + TextureType texType = TextureType::Error; + + if (str == "rgba32") + texType = TextureType::RGBA32bpp; + else if (str == "rgb5a1") + texType = TextureType::RGBA16bpp; + else if (str == "i4") + texType = TextureType::Grayscale4bpp; + else if (str == "i8") + texType = TextureType::Grayscale8bpp; + else if (str == "ia4") + texType = TextureType::GrayscaleAlpha4bpp; + else if (str == "ia8") + texType = TextureType::GrayscaleAlpha8bpp; + else if (str == "ia16") + texType = TextureType::GrayscaleAlpha16bpp; + else if (str == "ci4") + texType = TextureType::Palette4bpp; + else if (str == "ci8") + texType = TextureType::Palette8bpp; + else + fprintf(stderr, "Encountered Unknown Texture format %s \n", str.c_str()); + return texType; +} + +bool ZTexture::IsColorIndexed() const +{ + switch (format) + { + case TextureType::Palette4bpp: + case TextureType::Palette8bpp: + return true; + + default: + return false; + } +} + +void ZTexture::SetTlut(ZTexture* nTlut) +{ + assert(IsColorIndexed()); + assert(nTlut->isPalette); + tlut = nTlut; + + textureData.SetPalette(tlut->textureData); +} + +bool ZTexture::HasTlut() const +{ + return tlut != nullptr; +} diff --git a/tools/ZAPD/ZAPD/ZTexture.h b/tools/ZAPD/ZAPD/ZTexture.h new file mode 100644 index 0000000000..c17ed0b5bb --- /dev/null +++ b/tools/ZAPD/ZAPD/ZTexture.h @@ -0,0 +1,95 @@ +#pragma once + +#include + +#include "HighLevel/HLTexture.h" +#include "ImageBackend.h" +#include "ZResource.h" +#include "tinyxml2.h" + +enum class TextureType +{ + Error, + RGBA32bpp, + RGBA16bpp, + Palette4bpp, + Palette8bpp, + Grayscale4bpp, + Grayscale8bpp, + GrayscaleAlpha4bpp, + GrayscaleAlpha8bpp, + GrayscaleAlpha16bpp, +}; + +class ZTexture : public ZResource +{ +protected: + TextureType format = TextureType::Error; + uint32_t width, height; + + ImageBackend textureData; + std::vector textureDataRaw; // When reading from a PNG file. + uint32_t tlutOffset = static_cast(-1); + ZTexture* tlut = nullptr; + + void PrepareBitmapRGBA16(); + void PrepareBitmapRGBA32(); + void PrepareBitmapGrayscale8(); + void PrepareBitmapGrayscaleAlpha8(); + void PrepareBitmapGrayscale4(); + void PrepareBitmapGrayscaleAlpha4(); + void PrepareBitmapGrayscaleAlpha16(); + void PrepareBitmapPalette4(); + void PrepareBitmapPalette8(); + + void PrepareRawDataFromFile(const fs::path& inFolder); + void PrepareRawDataRGBA16(const fs::path& rgbaPath); + void PrepareRawDataRGBA32(const fs::path& rgbaPath); + void PrepareRawDataGrayscale4(const fs::path& grayPath); + void PrepareRawDataGrayscale8(const fs::path& grayPath); + void PrepareRawDataGrayscaleAlpha4(const fs::path& grayAlphaPath); + void PrepareRawDataGrayscaleAlpha8(const fs::path& grayAlphaPath); + void PrepareRawDataGrayscaleAlpha16(const fs::path& grayAlphaPath); + void PrepareRawDataPalette4(const fs::path& palPath); + void PrepareRawDataPalette8(const fs::path& palPath); + +public: + ZTexture(ZFile* nParent); + + bool isPalette = false; + + void ExtractFromXML(tinyxml2::XMLElement* reader, const std::vector& nRawData, + uint32_t nRawDataIndex) override; + void FromBinary(const std::vector& nRawData, uint32_t nRawDataIndex, int32_t nWidth, + int32_t nHeight, TextureType nType, bool nIsPalette); + void FromPNG(const fs::path& pngFilePath, TextureType texType); + void FromHLTexture(HLTexture* hlTex); + + static TextureType GetTextureTypeFromString(std::string str); + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + void DeclareReferences(const std::string& prefix) override; + std::string GetBodySourceCode() const; + void CalcHash() override; + void Save(const fs::path& outFolder) override; + + bool IsExternalResource() const override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + std::string GetExternalExtension() const override; + + size_t GetRawDataSize() const override; + std::string GetIMFmtFromType(); + std::string GetIMSizFromType(); + std::string GetDefaultName(const std::string& prefix); + uint32_t GetWidth() const; + uint32_t GetHeight() const; + void SetDimensions(uint32_t nWidth, uint32_t nHeight); + float GetPixelMultiplyer() const; + TextureType GetTextureType() const; + fs::path GetPoolOutPath(const fs::path& defaultValue); + bool IsColorIndexed() const; + void SetTlut(ZTexture* nTlut); + bool HasTlut() const; +}; diff --git a/tools/ZAPD/ZAPD/ZVector.cpp b/tools/ZAPD/ZAPD/ZVector.cpp new file mode 100644 index 0000000000..35845800eb --- /dev/null +++ b/tools/ZAPD/ZAPD/ZVector.cpp @@ -0,0 +1,117 @@ +#include "ZVector.h" +#include +#include "BitConverter.h" +#include "File.h" +#include "Globals.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Vector, ZVector); + +ZVector::ZVector(ZFile* nParent) : ZResource(nParent) +{ + scalarType = ZScalarType::ZSCALAR_NONE; + dimensions = 0; + RegisterRequiredAttribute("Type"); + RegisterRequiredAttribute("Dimensions"); +} + +void ZVector::ParseXML(tinyxml2::XMLElement* reader) +{ + ZResource::ParseXML(reader); + + this->scalarType = ZScalar::MapOutputTypeToScalarType(registeredAttributes.at("Type").value); + + this->dimensions = StringHelper::StrToL(registeredAttributes.at("Dimensions").value, 16); +} + +void ZVector::ParseRawData() +{ + int32_t currentRawDataIndex = rawDataIndex; + // TODO: this shouldn't be necessary. + scalars.clear(); + + for (uint32_t i = 0; i < dimensions; i++) + { + ZScalar scalar(scalarType, parent); + scalar.rawDataIndex = currentRawDataIndex; + scalar.rawData = rawData; + scalar.ParseRawData(); + currentRawDataIndex += scalar.GetRawDataSize(); + + scalars.push_back(scalar); + } + + // Ensure the scalars vector has the same number of elements as the vector dimension. + assert(scalars.size() == dimensions); +} + +size_t ZVector::GetRawDataSize() const +{ + size_t size = 0; + + for (size_t i = 0; i < this->scalars.size(); i++) + size += this->scalars[i].GetRawDataSize(); + + return size; +} + +bool ZVector::DoesSupportArray() const +{ + return true; +} + +std::string ZVector::GetSourceTypeName() const +{ + if (dimensions == 3 && scalarType == ZScalarType::ZSCALAR_F32) + return "Vec3f"; + else if (dimensions == 3 && scalarType == ZScalarType::ZSCALAR_S16) + return "Vec3s"; + else if (dimensions == 3 && scalarType == ZScalarType::ZSCALAR_S32) + return "Vec3i"; + else + { + std::string output = StringHelper::Sprintf( + "Encountered unsupported vector type: %d dimensions, %s type", dimensions, + ZScalar::MapScalarTypeToOutputType(scalarType).c_str()); + + if (Globals::Instance->verbosity >= VerbosityLevel::VERBOSITY_DEBUG) + printf("%s\n", output.c_str()); + + throw std::runtime_error(output); + } +} + +std::string ZVector::GetBodySourceCode() const +{ + std::string body = ""; + + for (size_t i = 0; i < this->scalars.size(); i++) + body += StringHelper::Sprintf("%6s, ", scalars[i].GetBodySourceCode().c_str()); + + return "{ " + body + "}"; +} + +std::string ZVector::GetSourceOutputCode(const std::string& prefix) +{ + if (parent != nullptr) + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::None, GetRawDataSize(), + GetSourceTypeName(), GetName(), GetBodySourceCode()); + + return ""; +} + +ZResourceType ZVector::GetResourceType() const +{ + return ZResourceType::Vector; +} + +void ZVector::SetScalarType(ZScalarType type) +{ + scalarType = type; +} + +void ZVector::SetDimensions(uint32_t dim) +{ + dimensions = dim; +} diff --git a/tools/ZAPD/ZAPD/ZVector.h b/tools/ZAPD/ZAPD/ZVector.h new file mode 100644 index 0000000000..d700d43963 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZVector.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include +#include "ZResource.h" +#include "ZScalar.h" +#include "tinyxml2.h" + +class ZVector : public ZResource +{ +public: + ZVector(ZFile* nParent); + + void ParseXML(tinyxml2::XMLElement* reader) override; + void ParseRawData() override; + + std::string GetBodySourceCode() const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + + bool DoesSupportArray() const override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + size_t GetRawDataSize() const override; + + void SetScalarType(ZScalarType type); + void SetDimensions(uint32_t dim); + +protected: + std::vector scalars; + ZScalarType scalarType; + uint32_t dimensions; +}; diff --git a/tools/ZAPD/ZAPD/ZVtx.cpp b/tools/ZAPD/ZAPD/ZVtx.cpp new file mode 100644 index 0000000000..d56f4faf5c --- /dev/null +++ b/tools/ZAPD/ZAPD/ZVtx.cpp @@ -0,0 +1,85 @@ +#include "ZVtx.h" +#include "BitConverter.h" +#include "StringHelper.h" +#include "ZFile.h" + +REGISTER_ZFILENODE(Vtx, ZVtx); + +ZVtx::ZVtx(ZFile* nParent) : ZResource(nParent) +{ + x = 0; + y = 0; + z = 0; + flag = 0; + s = 0; + t = 0; + r = 0; + g = 0; + b = 0; + a = 0; +} + +void ZVtx::ParseRawData() +{ + x = BitConverter::ToInt16BE(rawData, rawDataIndex + 0); + y = BitConverter::ToInt16BE(rawData, rawDataIndex + 2); + z = BitConverter::ToInt16BE(rawData, rawDataIndex + 4); + flag = BitConverter::ToInt16BE(rawData, rawDataIndex + 6); + s = BitConverter::ToInt16BE(rawData, rawDataIndex + 8); + t = BitConverter::ToInt16BE(rawData, rawDataIndex + 10); + r = rawData[rawDataIndex + 12]; + g = rawData[rawDataIndex + 13]; + b = rawData[rawDataIndex + 14]; + a = rawData[rawDataIndex + 15]; +} + +std::string ZVtx::GetBodySourceCode() const +{ + return StringHelper::Sprintf("VTX(%i, %i, %i, %i, %i, %i, %i, %i, %i)", x, y, z, s, t, r, g, b, + a); +} + +std::string ZVtx::GetSourceOutputCode(const std::string& prefix) +{ + std::string output = GetBodySourceCode(); + + if (parent != nullptr) + { + Declaration* decl = + parent->AddDeclaration(rawDataIndex, DeclarationAlignment::Align16, GetRawDataSize(), + GetSourceTypeName(), name, output); + decl->isExternal = true; + } + + return ""; +} + +size_t ZVtx::GetRawDataSize() const +{ + return 16; +} + +bool ZVtx::DoesSupportArray() const +{ + return true; +} + +ZResourceType ZVtx::GetResourceType() const +{ + return ZResourceType::Vertex; +} + +bool ZVtx::IsExternalResource() const +{ + return true; +} + +std::string ZVtx::GetSourceTypeName() const +{ + return "Vtx"; +} + +std::string ZVtx::GetExternalExtension() const +{ + return "vtx"; +} diff --git a/tools/ZAPD/ZAPD/ZVtx.h b/tools/ZAPD/ZAPD/ZVtx.h new file mode 100644 index 0000000000..feed307665 --- /dev/null +++ b/tools/ZAPD/ZAPD/ZVtx.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include +#include "ZResource.h" +#include "ZScalar.h" +#include "tinyxml2.h" + +class ZVtx : public ZResource +{ +public: + int16_t x, y, z; + uint16_t flag; + int16_t s, t; + uint8_t r, g, b, a; + + ZVtx(ZFile* nParent); + + void ParseRawData() override; + std::string GetBodySourceCode() const override; + std::string GetSourceOutputCode(const std::string& prefix) override; + + bool IsExternalResource() const override; + bool DoesSupportArray() const override; + std::string GetSourceTypeName() const override; + ZResourceType GetResourceType() const override; + std::string GetExternalExtension() const override; + + size_t GetRawDataSize() const override; + +protected: +}; \ No newline at end of file diff --git a/tools/ZAPD/ZAPD/genbuildinfo.py b/tools/ZAPD/ZAPD/genbuildinfo.py new file mode 100644 index 0000000000..fedd3ed575 --- /dev/null +++ b/tools/ZAPD/ZAPD/genbuildinfo.py @@ -0,0 +1,18 @@ +#!/usr/bin/python3 + +import argparse +from datetime import datetime +import getpass +import subprocess + +parser = argparse.ArgumentParser() +parser.add_argument("--devel", action="store_true") +args = parser.parse_args() + +with open("ZAPD/BuildInfo.h", "w+") as buildFile: + label = subprocess.check_output(["git", "describe", "--always"]).strip().decode("utf-8") + now = datetime.now() + if args.devel: + label += " ~ Development version" + buildFile.write("const char gBuildHash[] = \"" + label + "\";\n") + #buildFile.write("const char gBuildDate[] = \"" + now.strftime("%Y-%m-%d %H:%M:%S") + "\";\n") diff --git a/tools/ZAPD/copycheck.py b/tools/ZAPD/copycheck.py new file mode 100755 index 0000000000..d13f9843d4 --- /dev/null +++ b/tools/ZAPD/copycheck.py @@ -0,0 +1,7 @@ +import os +from shutil import copyfile + +if (os.environ.get('ZAPD_COPYDIR') != None): + print("Copying ZAPD.out to repo...") + #print(os.environ.get('ZAPD_COPYDIR')) + copyfile("ZAPD.out", os.environ.get('ZAPD_COPYDIR') + "/ZAPD.out") diff --git a/tools/ZAPD/docs/zapd_extraction_xml_reference.md b/tools/ZAPD/docs/zapd_extraction_xml_reference.md new file mode 100644 index 0000000000..8767512961 --- /dev/null +++ b/tools/ZAPD/docs/zapd_extraction_xml_reference.md @@ -0,0 +1,482 @@ +# ZAPD extraction XML reference + +This document aims to be a small reference of how to create a compatible xml file for ZAPD. + +## Table of contents + +- [ZAPD extraction XML reference](#zapd-extraction-xml-reference) + - [Table of contents](#table-of-contents) + - [Basic XML](#basic-xml) + - [Resources types](#resources-types) + - [File](#file) + - [Texture](#texture) + - [Background](#background) + - [Blob](#blob) + - [DList](#dlist) + - [Scene and Room](#scene-and-room) + - [Animation](#animation) + - [PlayerAnimation](#playeranimation) + - [CurveAnimation](#curveanimation) + - [Skeleton](#skeleton) + - [Limb](#limb) + - [Symbol](#symbol) + - [Collision](#collision) + - [Scalar](#scalar) + - [Vector](#vector) + - [Vtx](#vtx) + - [Mtx](#mtx) + - [Cutscene](#cutscene) + - [Array](#array) + - [Path](#path) + +## Basic XML + +An example of an object xml: + +```xml + + + + + + + + + + + + + + + + + + + +``` + +Every xml must have a `` tag. It must have at least one `` child. + +## Resources types + +The following is a list of the resources/tags supported by ZAPD, and the attributes needed by each one. + +For most resources inside a `` tag **you should also set an `Offset` attribute**. This is the offset (within the file) of the resource you are exporting. The `Offset` attribute is expected to be in hexadecimal, for example `Offset="0x41F0"`. + +It's worth noting that every tag expects a `Name="gNameOfTheAsset"`. This is will be the name of the extracted variable in the output C code. Every asset must be prefixed with `g` and the suffix should represent the type of the variable. + +------------------------- + +### File + +- Example of this tag: + +```xml + +``` + +- Attributes: + + - `Name`: Required. The name of the file in `baserom/` which will be extracted. + - `Segment`: Required. This is the segment number of the current file. Expects a decimal number, usually 6 if it is an object, or 128 for overlays (It's kinda a whacky hack to get around of the `0x80` addresses). + - `BaseAddress`: Optional. RAM address of the file. Expects a hex number (with `0x` prefix). Default value: `0`. + - `RangeStart`: Optional. File offset where the extraction will begin. Hex. Default value: `0x000000000`. + - `RangeEnd`: Optional. File offset where the extraction will end. Hex. Default value: `0xFFFFFFFF`. + - `Game`: Optional. Valid values: `OOT`, `MM`, `SW97` and `OOTSW97`. Default value: `OOT`. + +------------------------- + +### Texture + +Textures are extracted as `.png` files. + +- Example: + +```xml + +``` + +Will be defined as: + +```c +u64 gCraterSmokeConeTex[] = { +#include "assets/objects/object_spot17_obj/crater_smoke_cone.ia8.inc.c" +}; +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Tex`, unless it is a palette, in that case it is suffixed by `TLUT`. + - `OutName`: Required. The filename of the extracted `.png` file. + - `Format`: Required. The format of the image. Valid values: `rgba32`, `rgb5a1`, `i4`, `i8`, `ia4`, `ia8`, `ia16`, `ci4` and `ci8`. + - `Width`: Required. Width in pixels of the image. + - `Height`: Required. Height in pixels of the image. + - `TlutOffset`: Optional. Specifies the tlut's offset used by this texture. This attribute is only valid if `Format` is either `ci4` or `ci8`, otherwise an exception would be thrown. + +The following is a list of the texture formats the Nintendo 64 supports, with their gfxdis names and ZAPD format names. + +| Format name | Typing in `gsDPLoadTextureBlock` | "Format" in xml | +| ----------------------------------------------- | -------------------------------- | --------------- | +| 4-bit intensity (I) | `G_IM_FMT_I, G_IM_SIZ_4b` | `i4` | +| 4-bit intensity with alpha (I/A) (3/1) | `G_IM_FMT_IA, G_IM_SIZ_4b` | `ia4` | +| 4-bit color index (CI) | `G_IM_FMT_CI, G_IM_SIZ_4b` | `ci4` | +| 8-bit I | `G_IM_FMT_I, G_IM_SIZ_8b` | `i8` | +| 8-bit IA (4/4) | `G_IM_FMT_IA, G_IM_SIZ_8b` | `ia8` | +| 8-bit CI | `G_IM_FMT_CI, G_IM_SIZ_8b` | `ci8` | +| 16-bit red, green, blue, alpha (RGBA) (5/5/5/1) | `G_IM_FMT_RGBA, G_IM_SIZ_16b` | `rgb5a1` | +| 16-bit IA (8/8) | `G_IM_FMT_IA, G_IM_SIZ_16b` | `ia16` | +| 16-bit YUV (Luminance, Blue-Y, Red-Y) | `G_IM_FMT_YUV, G_IM_SIZ_16b` | (not used) | +| 32-bit RGBA (8/8/8/8) | `G_IM_FMT_RGBA, G_IM_SIZ_32b` | `rgba8` | + +If you want to know more about this formats, you can check [`gsDPLoadTextureBlock`](http://n64devkit.square7.ch/n64man/gdp/gDPLoadTextureBlock.htm) for most formats, or [`gDPLoadTextureBlock_4b`](http://n64devkit.square7.ch/n64man/gdp/gDPLoadTextureBlock_4b.htm) for the 4-bit formats. + +------------------------- + +### Background + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Background`. + - `OutName`: Required. The filename of the extracted `.jpg` file. + +※ Explicit use of this tag isn't often necesary because it would probably be extracted automatically by another extracted element. You can use this to name them if you don't like the autogenerated name. + +------------------------- + +### Blob + +Blob are binary data that will be extracted as `.bin` files. + +- Example: + +```xml + +``` + +Will be defined as: + +```c + +u8 gFireTempleBlob_00CCC0[] = { +#include "assets/objects/object_hidan_objects/gFireTempleBlob_00CCC0.bin.inc.c" +}; +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Blob`. + - `Size`: Required. Amount of bytes to extract. Hex. + +※ We usually use blobs when we can't figure out the content's type of chunk of data. + +------------------------- + +### DList + +A.k.a. Display list, or Gfx. + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `DL`. + +------------------------- + +### Scene and Room + +TODO. I'm hoping somebody else will do this. + +------------------------- + +### Animation + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Anim`. + +------------------------- + +### PlayerAnimation + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Anim`. + +------------------------- + +### CurveAnimation + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Anim`. + - `SkelOffset`: Required. Offset of the `CurveSkeleton` (I.e. a [`Skeleton`](#skeleton) resource with `Type="Curve"`) related to this animation. + +------------------------- + +### Skeleton + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Skel`. + - `Type`: Required. Valid values: `Normal`, `Flex` and `Curve`. + - `LimbType`: Required. Valid values: `Standard`, `LOD`, `Skin` and `Curve`. + +※ There are no restrictions in the `Type` and `LimbType` attributes besides the valid values, so any skeleton type can be combined with any limb type. + +------------------------- + +### Limb + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Limb`. + - `LimbType`: Required. Valid values: `Standard`, `LOD`, `Skin` and `Curve`. + +------------------------- + +### Symbol + +A special element that allows declaring a variable without actually extracting it from the current file. Useful when a resource references an element from another file. The symbol will be declared as `extern`. + +- Example: + +```xml + +``` + +Will be declared as: + +```c +extern u8 gJsjutanShadowTex[2048]; +``` + +- Attributes: + + - `Type`: The type of the declared variable. If missing, it will default to `void*`. + - `TypeSize`: The size in bytes of the type. If missing, it will default to `4` (the size of a word and a pointer). Integer or hex value. + - `Count`: Optional. If it is present, the variable will be declared as an array instead of a plain variable. The value of this attribute specifies the length of the array. If `Count` is present but it has no value (`Count=""`), then the length of the array will not be specified either in the declared variable. Integer or hex value. + +------------------------- + +### Collision + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Col`. + +------------------------- + +### Scalar + +Allows the extraction of a single number. + +- Example: + +```xml + +``` + +Will be extracted as: + +```c +u64 pad34F8 = { 0 }; +``` + +- Attributes: + + - `Name`: Required. Suxffixed by ~~`TBD`~~. + - `Type`: Required. Valid values: `s8`, `u8`, `s16`, `u16`, `s32`, `u32`, `s64`, `u64`, `f32` and `f64`. + +※ Can be wrapped in an [`Array`](#array) tag. + +------------------------- + +### Vector + +Extracts a vector. + +Current supported types are `Vec3s`, `Vec3i` or `Vec3f`. + +- Example: + +```xml + + + +``` + +Will be extracted as: + +```c +Vec3s D_04002040[24] = { + { -37, 2346, 93 }, + { 0, 11995, 0 }, + { -16385, -305, -16333 }, + { 0, 51, 12 }, + { 3761, 2263, -384 }, + { 0, 0, 3786 }, + { 1594, 1384, -18344 }, + { -2288, -2428, -1562 }, + { 0, 0, 3219 }, + { -2148, -5, -16840 }, + { 15365, -1708, 15611 }, + { 1761, 8365, 17711 }, + { 0, 0, 18859 }, + { 0, 0, 0 }, + { -9392, -9579, 28686 }, + { 0, 0, -7093 }, + { -2748, 685, -14092 }, + { 213, 6553, -32212 }, + { 0, 0, -1877 }, + { 3267, 3309, -16090 }, + { -18101, 25946, -2670 }, + { -104, 0, 0 }, + { 0, 0, 0 }, + { 0, 0, 0 } +}; +``` + +- Attributes: + + - `Name`: Required. Suxffixed by ~~`TBD`~~. + - `Type`: Required. Specifies the vector's type (`Vec3s`, `Vec3i` and `Vec3f`). Valid values: `s16`, `s32` and `f32`. + - `Dimensions`: Required. The amount of dimensions of the vector. Valid values: `3`. + +※ Can be wrapped in an [`Array`](#array) tag. + +------------------------- + +### Vtx + +- Example: + +```xml + + + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Vtx`. + +※ Can be wrapped in an [`Array`](#array) tag. + +------------------------- + +### Mtx + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Mtx`. + +※ Explicit use of this tag isn't often necesary because it would probably be extracted automatically by another extracted element. + +------------------------- + +### Cutscene + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Cs`. + +※ Explicit use of this tag isn't often necesary because it would probably be extracted automatically by another extracted element. + +------------------------- + +### Array + +The `Array` element is special, because it needs an inner element to work. It will declare an array of its inner element. + +Currently, only [`Scalar`](#scalar), [`Vector`](#vector) and [`Vtx`](#vtx) support being wrapped in an array. + +- Example: + +```xml + + + +``` + +- Attributes: + + - `Name`: Required. How the variable will be named. By our convention it should be prefixed by `g`. The sufix is mandated by the element contained. + - `Count`: Required. Amount of elements. Integer. + +------------------------- + +------------------------- + +### Path + +- Example: + +```xml + +``` + +- Attributes: + + - `Name`: Required. Suxffixed by `Path`. + - `NumPaths`: Optional. The amount of paths contained in the array. It must be a positive integer. + +------------------------- diff --git a/tools/ZAPD/lib/assimp-built/assimp-vc142-mt.dll b/tools/ZAPD/lib/assimp-built/assimp-vc142-mt.dll new file mode 100644 index 0000000000000000000000000000000000000000..bf7a2f862fea102a0bac9f16308b20a8950da62b GIT binary patch literal 5542400 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%0A$3wWs~ zz8mUCpCnEZ4JIU;)NSGgM*WHK3Lw_1RK?fmihn8fcZi_s% z|C4=Oos2>VM)1m?qs<^92L)}ZGkTKkTC|IxPuzbWe_HF8;fJ%*aDM~-Vk*bwa4N+? zsoDTXBTLb{YRugX$u-SD7B?b9V3rK^7{7xxWKlZOuqNZPwH$A%6xtPXE0LS};8sq( zSyQVfHkl#3l9H=mvALC1`0BTA2Dc)TtcLsf8FM=$b8ZdwE97S%DUEDE|IE9W?Ncqg zr>;h}koir}q*no0C+UfqJpuM5m=yRZ)3+fha>k^9HWLkMh+#QYw_(n+&y_j<6=bcD zn>=z->a6Q;{3@F3dpeuTZ+Q-4p%(P``eRU*682nKCmU#=HzB#X02Jr0S#VNS9| zyq)A4@0z@usFw@Vcb05Ch$xdQOAIrQ{i?FIH)+~OFckO z!As3(aHp$Thw)iO*9ONEg}c@Nlv12;7X9M}k`T*D(q7GSJU>`PpI<7~3B`Z(Fc1Lo z7t@ZSP3i<))p5G2CN*8EvWia8U1(z$4$@U|kFm6@mKI)JZPE#4NGG zhR6$yE6x=7!+}Zq;@q!Jvp3H`w|&uVR||y?nYK#IJ5IE%&)U^P5J*FJT4Z>Ri4@=_KG;g$t;1Ai!9=PFh@@cp zw#;6GCK`l}_TcqcTozJc+7`5yG;!z;KaD{qTM^jVweVsZ0NEGhek&Vq+P7c~c{5px z6ddw6@hLb^b0lFN@3U^G*>B)M^Dr_s?aFa5$r$esevgABsFHwz zT?L}Q4h)EwlKbHMhp0(b_z0C5JL77&%mEf;I@3aP1X6KmRlTPIrdmA?+R zl3>RdfebvnLZ|I+<6_zGhT(fimh%q)Ga&;o3y##h)(SubcaCZZ6<%yh@u)HeVj;eWi4Dc%GJQodNzMyY{ z=2MQ!p;_mq^vbO2_(WcdsHj6hasYNa?HWA`_i#)qv3$mPGx9 zGV{G1pyQ&MOge^*5x^ubaT>4o;f}Rd+7<`l4#r5ZM`-^k+;z>vHAGc^kdTiQp5QKp zgcM4}sIG)VFR`be>+Bj5;@*eD3G_0}8;HW21Xm67=PK9&6oxOT2qafDlTVO`Jp(@l zuu^oQLxaS7!}u9G)AbAXWMvg*x#D*L zkE{h*rOD(kk}xH7Es7(-_gswV1)a6evtdsEhJjcO#u|U)tLCe|*!yQRf7&lF@O9MS z%*vW`aBO{(uc6T206UhZuD9^n4+qH2D&Hqrva+-09O{d;bp#r+8xYzEh6VAaoUZ?E z?mWa7>o_B}t~)Srjjv&Vzab0X@I43LbGz=KJt2&m)C;Hc&{p)Im%9iP-aR%04`|Bm z)zOaV`{@GLN>G9|IjI4GKc9OdLl?|)tvpmdEX*q5Nco|n`MrS)nzKrleVemU?K zeW{%S>jd=%4s)Cl&-SiI2>mK5oa1ZZh*bCEcHOZX&q#GFz>c|A+Wo#(f4(sN`NUqI zC+W|g^ymKkEcC>_JG+TfjBHl{o-N~R9J))1$alJ3L+jk3mo$nq$-+{Dsfkq#q z9yOs{x>S4DF+HWK9_=dVU8ZVX(|ZofF;MKZuoSPcozC~@?`3B4){V6HF_BvC7=^o@ zFm>h$f;>PF#zej+rpnF6Nw_+=r+`M+hx;q?Pjc0-M+R(SxfEH(_Yxto6jE7Yx15xH zuB-loeUkkZp_6i4^&2G_Ztir2{Tk0J&5f;&kJtQq9mDwDl?q%~wIVtT}{x0SwKX zY=Y1D0qUqB*zuAt^M8^hk8&-{16hO@dT`GbWc#i?glykbdWI#>cQt-{oUhYEA5iXA zhXJ>Q@z?elFTqgls()^uWE%{B+6N4{+n8(QzM|S8Qy$}XEj$jVUf2VJ#5PXHEy0z3 zUlVANn>OaQ*yF1WiD^>{|E@){X$;0Chs1UD5FZ%BS&WgA$Z9%lM(7 zT!&*q=i`_ZX)cYpx0L3Lbk!dY-Xd&%A1X`wcD7=Gr?ZjfFLG81*6#WQ0jOa@(Wb_H zLIK`ZZa(f_^@Ob9h!y-{80Vi6IG5$92jQmE_4IBEZts=HrpucpK@O<^b$ESpmn@K404AY@;0dJku|A(CY6J6%(M9y9z5KE7$|AgJn=S`m!XhSrtx*aTn= z+THvK54jFCS*N8E`YC@Z0l<7n1Jg-h{tdu%cQ`xG`FnQb8rjJ-J5G^=_{(;Sr`T<{cGw8EMpX;H zoVrPw*s^ND^|?a~^A%=< zCr1cn-~tD(TO7l9)5_CM`xmG$vemM`^8h27hVBqpQt^HRFE|v~XL`U{U5w7#9&qM8 z$1hV(y_bWkj7C?L>QoMM@-So1T!`AQ-AUbpWA4K zg8+29!H3@X%8`WAjn8Wt#mabsm>|?k_VseEk1L+!cyO}e$w5uwTVgtnf}pFte1%gy zA#JCQH?+94@;Y?$JS-X(mIK`@#V^MRiq}8kP^%Q9!v%Uu=0GvqVeA9JA|3NXG+73# zujVP2vIoG|O)7ZIH_5I;;Wvgn8_Fm(1j{)A2|dnap)!P9 zgBiG)t#7k{Wt2-`7gI8TkCav)tTq+_!mz`01-5eLM{|kcJ36D*VA>4xHr($=aE#kf zsuf;iS!#p2CtYec_mfkaH0aPOZU9D~W8XTd4HJWR91CQ|a3~X50_6dEimbd5qGW=Z zHSjuEBjN>gSR@R%`Gl%Z6P?47<(M;d&PeS4))LCA)%&NAQ@M93o>Ky-v*u9%WvxVC z;*T`o1B73TnSm4DGJ$sl&zd2}_qZF+JzjK*@m)=3IWz4=XU4OVdWNKm+Yl`c={y>D zH#2ED{3lcc$9N4CV>lbQvA^pasp?-sY0?c;=my@E)C)?}gOHmJZA=yKKR~l`Pz6ES zmI*`}dZ0}Cs<|_UuJa6}RXb*I7D3P`r7y*RTjR_i;~zH*8PA=O$~njwI%VqFir$6Ji?O95ajZzMIE ziCn47mR+TnX1uvV{b2+<4~6!DK-Mf6m(?QL}{)KYvTq$Sux?WsN8 zL?vk{nZ^J6UHhD2W*Dmb`}fJ=oPG9l?X}lyuf2BXeFBJQUQFEMoUnu1Ko_2sJ4mjC zeMip9q90{etj=Xwotr4_M0QTb&RA`MZ_8k7JrShI7=&%zf{gL5>YqJ`)C^-1tPO_R z=cYIb`@;xyMpDwR{1tvCyoM>1-=+CnBL{|=^5nePZRH>^$xn<%K63CXz#9KD84;l# z9npk}3Or~Nk)$paM z)Tt3Ka0O;6S)+N{9l0xBM%IO@hHq*^2RWQDJ(UD=mP)X6h`10E>A%{8r%f=$kSvW z9d#frh~fT3T0+^YGit4>!vJBMll*r=7_=d zK6XRP6LDP1K8zlcaR7e~>#BE^I8ay^(qUc5;*Qc~xLnJUrQ_MK&09+W0GFxcxRCVZ z6!wHdZD^QNt;W_kmqE_N6y1YQVtW9KMpRHrOYTIQq2%i>I3q!9N5Fuv{T%BNz0(U2 zgzN`(q*xvxk%-iH92bBneX)~Hq-r`BZj<)8?5K<7mPxtfbJMLEcK4TX@jxyFGQYJ9 zdnyeHuGcxG@K@Nj!Mz$2otmQP(&AgKp8gRV9I!*J#_s(#?%umsGcK1l7~#@bYge*3 zO(ZN{rid%|G}EGMDr$KDc@ir$60V;5>1Zf5%SoeD^3MZ7G~754REymxjY08Y>E*Cjn5__^1gvLIa!gTm!Y^+)i4+=a-77~ON3N!{@=_*tn5$blcI#Yp zi@UJ19})O$R%5};vCPX{tI#!wPB@-K5zE}#28nV8+Qp^H*zZIFy3^*IkCDqWPKIKf za`xzvHuQ1UdO}?9cS-mYIck*pwa`#sn|d6W1BfO!?V=k_Bf7jpy$)+OD&)&UYA0^3 z!4$lFGHt7P|E7mNj`WtUVYPY?(jmw)2FTAZ=?@gFw|Sv1u|u71wdoJH*`_>^ zZQiIWaoLqjK_y|`HgcOX`Zmp`zt~8H@RX1k_s|D%>@Mt0?j}N2jpc1<-iu^nwyDbz zsAN92()SfQVVVhcCA<-d7rP(kHCR~djWr6FWcJOIaAedI8>jRSZywB)y`z8>YEapT z`@m9Ovl$KIHpDOC`GI+Jt;RA(wGp-sco1fu$eT=v-dkHUqB{r$iD<`2+w;%6M*N_cXLThz@;wkUD(i$1-rdD;$aMXUD)OBr@`n1fJ+RzejXk2)d+u__zXK_KsM>yR;b!?Z>$?%k0zXPdg>X>w$r zMEvY^5Q`E5#7+Xwy66tuuKMy9__w)#8<;>L=euG-)BS2N9e=UB_G5XiRu`trYCP$$ zvKm*bF)2K^H~4!|O|4jKj#VGvY;fw)@1Kr)GGWmd7Ss#iM@xEBr^#9jM6_ ze6M7Cb7_k*xub*l=CF+^9;bY>A4QqCNkntAtDr2%JX) zMTsSUKmx>;KjbofUvbz8;?6XixPr3cvTB%GrYm>oT6jy1YbmIjjtd#l3Y2SF8Pd#_ z%Gw!|F@iEgXf?OF5WWfd>yft+d22LtsZk$&E6g$VXw5Ba)Ub=iop1IpLRp8hHgj8B zah5KyT|FfQ%#n?eE38JfErI2>F88--q2&hVQl0k$S6M3<`7(|X=cMyXvF2kxrDXIW?BwyMXUBk*M)ZN+8u?0o`^K^wqS0SI9DBTP4c z-|ss^7{KR}$13Hd7hNSc-J(DkN^L@JP=y+GH)4s*4_8!56J=;*jrsw{Rr0DaU9sS5 zd;(EYp(XXAzW5N@YHICR`|Wn^XT`65L1(p3imd&E6x7bBw7KwyAdtL~Jh z3Ym~iY6sMj=DzqKiwNW&*wI^^h_1kJRcgPd;+;KiiA2WjY7#0&*ITJC9=mU#Y$ulK z?L@keY4eMqA>J_>gJC3k)m2ri>8(yK^Rf-faahN?q?ygf~AHxb=m;33okT++-k&f9H zp!o6%bX+a?j%yVLQAqVztA9r%=8_d!ZmL)F7@Rkh{JfiMHPIWq0bZArOAD%QFz`Gc z|H|-hD%bEQkh~y*!r&BgcjwYIuyk?Ae|mpey4|t7kNm^s`%40s@2RqUVWr-xzJ7{x zDWkNOZy$8cUHy~0`d4@LSA%M++^<$409r7AJpPs8-&9c=8q|1Qe7TOhEw#S zP7(EX93qd`xp#;j>#oC+P91%|1??5^!vu<19Vpc+yG|YXHIcdnxEBNFeUA{S_mv+j zE}fauVuKoU6t2>C^v)j-r_rWs$#4Q4+dR^4voL;}kK+7w+&1rMZxiRKcX3FNi4>MI z+q}{BYL}+HTvu`0e3~?vX!g$6amRUDXKfzV-sYDesaBiiR-0w6|8{Ab*-4w{*==4H zzs;36V-|Ou4?G-(?RVI$w%Sav+AMdy+@+~UCv7$u);Pbx5$QPdS=3pZe?^;vYB{6* zv)!*cDv!5Xtwy{ALU$?x?RRNHtQ@c~T=r~XQI#96(W#f&jr!v^`VK;u#2x4hiz6DX zaa8WK)SOhS(Pwe$8B_Eku}l;X*4tvl%zrJ@1tqEV5{SfFKO)&`d+6B&{)&E zOt7&WO9O5rwM>eGGCvkt4LtN^Tu>gw>7Tfx`sg8&{etku6*nO1f4RtC5Y6#29?1ZecKiFmKwf}1Bdpe;`y~+fPWtUxK z1&9@!TV)ry$11YLE;2i|$Xu(4X&1TDD)NL~1U8I=_kz@JZ8vdRF3$SlmMgC$JsfjJJ5=Gkg0wd*RSR~#AOBVaEnLMhO z&5}f5J!gO64qBVNaoTkin328|MKz1!y2 zP@AWB7jC^9+`8=#xwQ|rx+q~g`%$jCq2nO}G}x6kpweAZX#-q$cNn>sK!O*Wyh!i{ zCHPAq!LMUbWk~R?tpm}^!N-Q9T6_Uk6S2IpVtT8i0WNEK%X<&Jb9wKIgeqi!2e~8N zKEucXiKP8_)NWOX93TLvkpS#z)&zjK(@p>)#KjP9C&5zx^ia7&0Q;LUx>_{ueROC9 z?pX?36z=^Ag)NMmHZGj9L*v`^E?FxL>feUOw;O~pi69-JulJ#3A^8~S_yJgu`0Z&z8{inVxmH5Osi{D)HCMsBR!2DKB1cL5ly zB1^JsQ0IJ1_SM=EmyWq#)Rpq1B*Fyac2Pl?f&kok5b7@O*wTG=OH<;v^zKKUwDjUa z-I8dB7aZNL9kydbD0S?4);QAQ*Y5AE_7Rb_!(XP&)(*q9(;P$yt@>DS4VUR)pf3aI z+wsWK4jWWA)D}-W>`>XwQdtLZZ~m|oAUu1Y03k{{Ji^ir*T8^4mLJv*g$8s-S1j#N z-uI&h_Bdw6k3h1$;uF;GuXqg!hsy4*IX#yDCe;_) zDm&2PkMGeG$8jeWAaBk}a`oG9hpF~spYRXNRXz5^ zP``cTN1@^5ph8ZmL`Ra-Kf{(^f$=ShEk7(w&Z2ZeQlF2cl_?;io6pol^u%^HViVE6 z$g7E{g*u_sXU?{;<-zT7iD>IqTL*|?$lDf(4xkNRD_TK(`gE-QQoHtZ;@AE_XSLrN zS^L%5Ae{dVljU&Vd)l?{*cP|%gFCDJ=*ZeHE=KL`L_b{nE4*cnbYNEe+CRlvYpor{ zK<4#-ML_09nD%UwVEd8{rH;32KOuhY6`j?7d1UPyevBgey6-m8e{-u41Wny)v2x-N z{obgp6QUno*)*xF1JVEBy-t8o^G^Xn6w$v%)Lbq#G5iT>KL#C$L)vde@kpWw;(t=4 zxaUx#ki#baiJx~){KwKd7)qUuo9kpY|A9-c!Zg1cNHyPv*Iy#P09<;Xbk?_|Zm{IH7j^!K16=f;$yQI%u8XbT6-=Q%!HCmqv=vp}($yEqqBhp_pxVe2Ki|Sw z2cLm({Zl&BUogn7|9q?d=eAi}%dG#3sQLrC{*rM0cS`;6JDc_GPCbIYb_=sJwo3|} z5iA>KsnzRjbtLXsu?=1J{&XoRd#^EvPGgjXmz z+3u(gV6R@*rc4VK+mZwp&m3yQV&}I43;JY^YVYsWZAIFF>G%43Z5#2RmHh~%ZaiH> ztVE>|IOxbyrsx@&s!r2A2I8S3R*x@#NB8(zJEPU(#Hb#hsC#_i5WB|%rN{KOgTGZ6 z!Y}?7)nhr|`Ljlr$yV30)pY4aDES<_MNa13io@8hRYpWUEftq|2}Ckg-GYxC%r9Bi zVC=q2I=6^rJT;h9^{PJnZ9#ehFW?KM4hi>r3N#~o{~s<^VT*U`ui>6A6x_i1R0}u2 zW)R5Q)NN9`x?6Z}_?pbc$j`GpscGzPZ?!F`7zyG>pJ-x3-j8-F~I3 zblXg^!M*w$besFEY1~sww|$+mXn>vdZ6lU3R_K}b7%J=0CF|s5DEaSfCx~znq2#ml zqZ5yV^kZ6hn58h0Wz%|`2fIhY26v{$8(*fX*n$otq91%#a8eufAnmbRDBbuAp)rIt zkFsWH!xnF*<;~wO{HoU%%GI1rq0HZ&5%z5Vn>*kZ2@#VmM7la!jG*k{^a9 zR1EHpU_#v4&#OAKdpLegx?1-OItIX-r)j{atNXu@l#!X5#`O6d^AJiM9{zqSz6-r0 z1^N-z2z%!xZ81VGf^56a0wqv4WixmUBk?212fV%T1R3k}9Ek#9g&43x zl%%M&CMpPwgF|VZJ6(e@1$86t_>B;z`Oua+@dXJw6&vPbE{mEW&Kz+p>tjvQIknK> zv*6v8?XkSOU~$6uQY!~?)Cgs9Dy`2zsPRnTQb2T-0@_T)djjt|BF4Wr>y_?VZxK-) z?V_JH>9SagI)}Gahf@1=BjVw`2xevs2!bEeE_HNnt|Z4debrZLJvdVa6)>+hmfST`@~qfXY5Ax7wYOAY6~sH z0PV}{gMjul)g(A3FWXd4lHXA3XGsFEZR&_!7Jbp@D|M+?MkP;GPHiUT>f92x3a z;do_j2);A5jW|T-VxZrw>0e?u9oL%58h3`_YuWxr|7^n-nG~2ALwF_b|AXW$#aH_dcT~SfniSj>uT3#&KBk@V#44O+s;0^_>T&|0xeL1v$@IGf&<5GMLVGj^&6 z5pZrriOeX@bx8}qpo9J$IOk%eN4Ib#^5``X+XfKDZX-NK5bgFc$|;TG*+$^1^n?|q z(kjQO4{GE)6I7D)pnZ%wPjnA<&W=CEi1yE*B^6^tR8{yBzY4Bnjb*cXgr&{B))+yC z!j;pr9O267ST46AaysL|GNPT|8Ryw-r_*sBBfYT4`A5BY>n&W6-&$1<_!)^io4 z?v0pUcV+FZNucllz-gLHuiW|NN#kj#P}12r5j7>noRQ`l&^q9NC$Z7EY6nDhhIV^z zCzfBA%QA6tqa6%_#vR6ub67a7le^~@uaR>>T6y8*-o}8fpw{Y)I?(XoEzV|{=gEK5 zzC?e;Mcdv`Aq2B`)kL;p;^+z7_<`id1pt`3A~|Xj+ib+z)Mq>D5%Nu+H?eW_z*7(p zbZ;TBh381tvo3RYxQxc02DKq>8NJ^ikr>;3P{JN!*YB|zUMqWIL=Rr?0Jbxlw5KONEoeNHyH)Nn~J$X^s9EsiZmJ(LcN90g?L{4WLe|8 zBCcbY;G{@^{3bf4hSRhmJ{L(aJu2KS1YflY+d<+o;2sGMw_T0eKoV%vuu>8&+()JU zyWTbu#JKk?m?cI6$LuFCKxxrE8~(llyrGGDGyxa42{mZq;Y^W>YSfQ!poy6FAA8Sg zf17;Nx9DvrkH2h>=HxN$9*uUR>abm{J)^x-yi-jGxYFp z`bp1zF`a#I3?mjRO?z4{W7EL(8sf}I3+j5dC)?h4PoUD~abfs~f_SmOvmMRPwkzx< z6~?Tj8g>1ePGIRl<$$Gslt44w2nFKGTsUdOwDXP)(8t$Cbliz60ST`dH2rS6hDIt( zl31VRm%8EaI1+PJUL3V`vy9uhUV<*dv2U<|QhV@?*-V`dLG+-|L79sm1a7X~wRzv! zT_b6EY!B;Ay|vY?NzHT6TEcb=@w2sPX;iqeP23PcM{&hqZTT^pj$RB- zi1Wi(thZMm>>CzfWKY3cgRlU!mob@nzg}5$lyOA*Iymd7v984f~4VO&ggo9cvLSsTi^t$oaqjpeDKdI(q zU3-mMRg2o;j~Ll>q22Vu@-brFWLkI-Lp8s;o$Dr|jt-cz4mr322EnI;Td9bWge4Qz zrM`BT2C&uG0oSOiRrY{mu<%;c9d@)m)(HqdA`3FA_V16k2*um0ZRA0B)<@y>M0-J| zqQ+)Gx?SY%>c1eSyZ^Q;oF*08d9C@WQ6IeCNq1{*lkWO24A(Df@f(=HW12YIZsMrO zKF`L!0l*Wx7Oz0Hgm4g6zK)BpfnOsQ-)hON7vGMJ?Tar{pOw2^EGjrMVa2KIOeUH2 zZ3RFL-R#{adpWgGEGb2*>c7rjPD^=VXKne>Tuq^ian`b4^{bV|^zL!iVlo(scly#W zOk@X(mw@I~`4<;d?<=VOzM%T+f@%c7-Ns=~M98|P*Re4hE}>Ua0h5CMo#4cZs}02) zf$uBRW%?V{=GWsOSECy6noT}cBqwfEhu$jW(=q!QR5oZ|UbcU+WAXN9Z;j7*|VMh;(p+dl`sH>Q96=BPQ0r76%H;)QKx?D8#gogcgL9aKCxbKH@j1i)r^kQ1w80ASvt0T8aE!{Dz& zjzRA<@?hgr3%A>Sk#pddP3sb3TF}BZvIa zuDC;9IOUIqJOw#kgbuSw{kK234an(#6XTEGYxiv1inyacb9pDDKO9ZS=$Bff|IRVH zeZnWwJ;9#v^uJh0HCft_(NC}^d{cjG-CfL&k)!_v-qmp?`~kl`daI5O6F!wWF!r6G z-Pnu@LIQ_V@QY-sapr%R?!Yqj{_?mGI0Jz~^Kwx3H4FRi;4iK2a9Du;5xJpbQP)r?U8CYsO z2o&oMEJIAxxDd!f=*74YaG;qe2tcN2hrkR#V7d)~V~(~UaFetl5SVU5pg|)@qq>kE zBO&ksJhJ0J;NHnL1gttbK%ksC0D+Hj+mS$^glfohf~#=|^Xv8mHNHv^Fxo2$*IDq_ z6JM^G|1y<^x|^?wWGh|$qvBLL-mdg^sWe6aSf;kW+zDJ?og{GemoW6RC1QvOa5{Do z;xyD|1Gi6P@24|xIS6J9+FpvvIk-Du4|LD|u6!)z@)FAB7ez@0;IzHfa%R?2fxJH{ zg?%kFVZXUnZ?jYYsJ|zb|7`cJ6?;Y+wv5hu78kHbf%-c!e!OEW=^A2#Fj%zYrqc2kJs1A9fV5uia-6lN%|K-vZhQ&q87aj$H608C$sjLrhh)tYPzRhVEtLNtLU~k| z*69J)sC)k#XTUXT?~C?;V}$Z|Zi*Oig!Ud)yWg%oo3%%E7Cr_xtdEwD5d(f?r$+sl z0bhkf;iG9buu&z8B+m_o5d%nV&OscVo4X zpT!~&)x>POi3QSx)#u;fLQC=!GwmNu&=5|1Bc2xGL8FmcNDkkvLwuL4YS%(66F`Jl zHur(#2(?!>`E}UvVkjP$e$tU@Ji)jTVh?R3$ zt5=@4CnpAz@3}Dom+I-hOCdD2`iJ^j6yd-!Ru6kBar*~sUUFh|l{aawwp|TDmCaX# zMKA_1+)Lh@CAZdTd%Q*z7{efQ(=y6 zVICCalefC*-3AJ?uF5S#l!vHD;0-^cm z)#j({0msz+?6nbe?r!LFwm)oS?Inj<13o-{?PZ99dY(aj~Ko9p;h(@lAQ3Gb|=d*sCLR!$_N1Nf&;A0Wp` zkvSad`*Cc>C+Dgj0MF&YO487FbwP7*I@)q?-m7EXW`U~0^AWf0q&~y$hmyY|+6EIh zZx}%* z?s_mnc|DClQx|`W5nND#?;#h$7zL{ERCQ4qo@gh*r^QTIFkfB*^*XIq(g+yjQ~ZOD z1Q+a-WDbP;#iPSAD?QZ#_fGzDXKr zI{aC2Qjm=+@{e6&K3`DcDP3YQUICt$m}f(PA6cS`e>64XdP4Twb@mFK zVG~L)&xZUmWT(djAbDBSDL^aB7bIf;eG!Bay=PCcpXX2t%|F_+Zw!}dVOLP5&+n80 zGKt$xsU1(VjPW$g%H2uVx|0iv0F@jKB1%Rb1U5Lm=Qa}qXu94;8wZEqqSHD)@AO+?ff zKbLxUkBzK={m-X2gBjkAc*ALi2VKK-LMI^Kn=v>IBYo zoWQxY<8jklod|Mk9XAa^x7d($ZUT;*@*bdVsvJy>KD&{2g4@903aWP(RPQRNh7!M@ z%mIT*hJmo@-6YO_l)!%}lRzF}Vi!NoJRCFzd!F)`cpU6j;~tO03wNuvkJ@Y?hTJ|} zYBB$(G1x)0-PqQ)={pMafv{a@qXBI^*WKdsU8D_*Mq3^D=~1f#Up|HoKm3OC24Agl^0MP~3)7GkaZ*-g6q!MH*dS(`M%#+-KM&l-Auq#b@lHRtHPj zhcMtuwLs9IUVp>}!mdb;(x4Vy9s`81(Um}uFi18Kp6q6|aqv;LAp;nv2M|jA_z(+e zckp8*5U#<#Q5@Vn0S!mh(E$ium;*rYgXIbk$a`paeU(CCU|a_vjM05)P@|=THui*p zQ1fsnK)CO+7$Ai0t^~qN+FflRJeF($VL#4KTR@m@1L30-3kV#h77Xw)34ZH zjE2FD*xMHvQ0$;&Eaqnx-eE5XYrURp_wWMgp(T+U)+Fd9V40sA)cvSFj`_JmrA>*} zun#WguscBZl7~8hY&IGIWc`;$5I~VQ5d$w??f_U2heu^=@@# zO{^~o&X+{l3@jG>?#5^qOm-S&Gw5)3cSbA=j+C?;r8mbvBz;T0vWvBl?@8&L1^@J) zNEY1Rnx5{FpxUhlUm9k?1|X!SJ!)(I5fK5v2f^&>)h$??5Q$5Pz3tX@1eB1-ZI1uz zaoB^<6rvRTUBX@>S@F~;T|7V=gpJ?S#g9#ZF5a!9E*{dlc)P|DN?nJn0?V!cjS`2)uK29ZcsxWv_t&Oj1y3Y_N&SNd?t=!nR0+n-fV0;pV2pop(CI$&Euex#@LyeihHF@w^1jke8f5VOg=jEYDiZ@rCKT=aX z$DO@s?`$E}oAVzk9=NS3M)UZ3H#Lt|Y94J~T=AW0=BfZQ=MA}kI(_OW=?uI3(|sL* z!h2pWxYvS8$My!IJ&`eOl?&QNH5Ue;|{tV-g*Vm9*t z7OgndA+RW=`k6o#JU(6wmu?UipWG847CCo!3X3Dqn!uucy&U()>!n;8ibeBK>iUBg zL@r{6D2RNpCN4zoE!Gf;T6l4wGLiWJmCr$p1S(!Ei{rX9DbYydu9x$qGla_3xc)q;-)528 zG(w`iXnv=_z7_3oaaQgD|BO{(UqZB*_-!8G{Y5gSxBeM9rnBJqJHKh3#gi}6JlV%< zb?jbgp3De*@oPTFYp6mycFvkrc$P0^Z^H0whs!JTI)%%Ep)pJ9Pq5~_ zcd;2+4Pn-Nm2?6S*~*VmOKJ>fzN5f+6k3j|B+ioh>3j{1>p;H+8p4{BI%my0!`L@W zI@u9No(gpei@9j+e`U?P=7nJqX3e9e6M)4=evE=eF&w|+z@it&DFE%9H8*)QEXIO3 z2rPs(w~A#rE(@yJYp<6f(#ejn_|Ki4!s2$c_P?{{4?-3+qBtt-Jkk|Fq=p%yAaX7= z;5ZQZ#n2FmswfVIyvux8FGZl+0u_rj@9dm4Keoq)%PG>`j&PY{b_$oP&|VB&{se1Y zb7y?G93@==ToyA!6kPtgJT6?mDEf17S;>5W%W11DxLB;YUhKzl@n!xGHeC8hcRRvm zVs)o*8H)Cz*3O?`%}<*aRKi>}l-ff&0f@}w$0&&O#RgFvOxaSXArh`64wgL2Jb=b= zAkKm%!kS7~t@f6<+=b)0EowtPOCXr2%zzT)?FS$sxzbhz#(s|kUQ zfKCo}3h2+>0%-r`u`Kz&owDSociUshk@oDdJo;Y&s6Cc;{cr}_Ah@1@(XIkIY=UDp zeRRdNd@COYeJS?l33x8ZzB&U!`<2!s7Q-mXiuoUg2Tur*Av%j;KOHgb|6oV)ACEAA zZN|9_V7s0>ipPUNdO~-JIXHyK;8tw>It0hrA+Z8sJet1k59{6Wa7?`$!H!VxGKyLu z_Y%9_C8&3`)Vl=rzWRst&eiq)Bi!Ffy52@z?=HJu7zL-}@+-tV*@b%d|6#qS#rC%! z>ec2l*jH%CA6X!{G!lE@?J;?GsTcEU>>Rg$B@GXVQw&4ZI5de1t|GE6QKruJD(@XY z4h%Ln82@!T$2R2HfgE+n(Lb^d#Q#PPnC5i+?*-a4M+@8U?GLQ{-p0-2USj_RH>s?g zRm1V6_E;r51anp1Vjbdk|0@huC&d&DrcM>LM@{AY5_CE=1 z&3*k>U7=&4->EAlnV|K2UI+sJ|`ap8+Y`zVU4%%53MrC z4na?F!IFr}H5_-YgI9>YR%38A_fNKqF_Es5ITEb9r%YeHI%_UlO+K#~-D9xs$p-!v z;~&C~PAxupVp&L{>$h$Yk4+A7`wU?9JuE4Kd zCg;h#LHUz8!@X;4iqo`fw#*w%qlobve?X_@VT&zruwyNU*|j_zSCjN8O+mfzA&H`(eo#l7|1RW+A-2aNhfOFq z&eMc)CwlgKgz|j7_PVQ|pVb)GUFOFDs)_mhvc{r%M?I*?{3wBKymB z_HQ20+269WKNyw$1)Y74oqZ*;>-b>Sd4G5siszTyQ22up?2Y@mQ>@D;PyIXE!oAu? zsKgmK0S3gYQm}@_U|%`-HvpgrbeXrP6~X5!KaCd)!XYc0SC;3|zl_0@xKxn~cM`N; zQXbP*DFCNx&uniC4LR8wLg4AvE}w#rW>Gp?Nypzz{KfJw%EI5Q>Z0tb{OmmrXHm`` zT#%7dUF53Dci}7i5#f{AS)WpPw8RqpE2<{iHmw=NWs{Qv5Oz=R2m;YvZ z2fXdgt)G-HSD$&!O}uNXNA-w|62{EL21ypE2P;F@ZbT5kbDv>{c?CEl^YHR^z+^mN zl6Uz!b;wKvVDjWPI%dCvk$cULJ;Bi_o*=GI4c?yS3rQWa- zsTNI+?b2Y~IMwb@AOjt!n?#UZej-4i8X+xsC@1ig|DVi*kLI>+*Fn zwsdYW+hfBey}`-o)a~ikJ#G=>Lo_Ci510I1wbL5kh4QR#KwWYM$ET#Ha({846nGK3 z2qemIs$X-6heLrGK48XBfZvyCclRbVcoU#dWJ6(+FLbR9g)G8u=+lpTv1|tobb5ywM8cjzv2iS*OEwW@MI{WPQeqp~lI}P>?

UxKbRmLs%#V?p1*eI$iCfy4{wKc1MtqT?Q)QCH=;w z?W`wHT_Mdg4LK-qq^Mz%#QknTY6FO11aoyk+=&cX-;<_}x{S`rEXV88SIFFcM+yOo z31SI`P!7fbQpxC$y>cgpGY>EuAA2} z&F1`#RRf3*9!3SbYMUaW6jTa+=AJnK0Mkpnp}}vU6yV#SW}iaf3+o$yeyAtr zY@27mR(9yzB?sZBvI!TW0&CE%9%|uW(F}TUZDN!VBL-|S0-v{PSs;j`gGmUllb_-V zCH(_`AuizZTOsbF0r#XsjodoN9k-zG(hE;+tz*v3cvA^}2z6=*f35R7F=PJ0v)m#{ zsh->|j=686^B8D~G2k#yjXhT!=>8_JdBC#;A*LIQHBFc$2uQ=w&BOG^s0lI5jmDNH z&gTHR5&TMnS6OlWhI)=R)_m4gjXxPGj|H2dp`J7Gp-SL`3#&J%6%&8M*Ub{+`C`E5 zF!fCGL0D}GG8_qjTmR+=05tU<0AoPtnBGS2j!E}OJD%JRrYum2Hf?!I1>pWz^3)(XKSq+3fQ5hQuOVdiHcRtan+!?PnZWm}mp{#h~!ok9k! zW=Ojb=iA%08m)6loXQPdxEw(t0#{^OqQbCDV$F8WV>SsR^p<)xVE`8)`41A*<$McX zj=o--jiT4)B`g(v<%MYB|fE{aN}qj`2m0hCOccHs>rKmxUe1TTQd z&HAjBi1=6|j7RNB)7699z=?+(=q z4&SjYF@iB5s1cZ$@{8iNF<$DU?`nG+BP4BRTJtePG4nhu{4{miD4aJVeGV~;Q(l5+tPa#-q<99rX@n_7ENKQEoiZGhJP*4g&VpGf z2)J30k~`VD`#z`}+xm z5v&a-eI&-D?dn|d4d(gzkgryaz)1ysJ$b2^E^5_fu<^}DLd}O(c1Kk96Lt0jORVgt zS=pbov+uOrWp(ZQa0CFAZL+f`AiFhRhS}AJ^HgSv5AYvEi~Pw2<|R%XS@JnzR#@ph15>3=Bgxc$dz=T?X)rihmA-T_nsD}9)4|bLM^)}7~gK^K+ z?!Dp2+6!?+0U0Jd!O5UF{BV_?yanMR7sM19r;D5&E;12CY?%oHChRHTdHSAqA^qoP z58CIWO+|4L!Fo5l5V(h>1guX8+?H~f;V9UHbpN-A_UxE_GCq1t2(V!!_Y6q!n#1y9 zaowA{amw*w2|pEv8OPj2DZIrn-&Q$ylj#r3^O#3^OvtzcHo~c?B!S|DH}}oS-Odjs zZEQYk3PNYVeg&~&O)Jvtr}Uxq5bF)XOoMVmaBV)qJK#+p`QUJ9`CHTv|2f#^3DTM{ z1!VnLBlpwtTd|SmH77e=ff*^i{8xF*?w&wKQi2aTJm$I09#S-ry{`V#U_*pMzRNIj zM>@-o+=B&~0CQDWmzkG>X*2@vl%CB;viCa<{(=L7V&>`2`hq=^KyE#`zxiME1lFVR zqtURxnz&c2O-rD(+MEEvYT>sojGBqJyLUi1 zphb;Ye8uXtsPB#HCH);7mEWDpf$wDDA$N#vs}k1R;8jjsUzS!-bwYEp&S~Pdiiqtsr#e+v1VhvGOw<7kjt#(fsLlb4 z#B_xmAWtL5N7hlS)Jf8rQsfwq9GJd)BF^o~xu7z&PBJ}S0r(if*ZCb;%aC;`Q`jec z(pf|B9-Vu!&dn?ZRgV+4Xx)fxJxg7WtRC}6Z}94j@t)8esScBks)5b@o6{loIH7~L zs4f);uyN(6tY9^58>kF}yaDZY_&;)tss(p*H%dk0c3$JSDfvUp@ij=BkA7D8F#F}> zy`(6v8t(4EhUhUjs~7wdbiar7dOlo@iNOFTt%&%^=IYDlL2`t|>ah*P$@K4RKB41` zKKfUF+t9QTDlW&8=gS%AEWaYE$@kghx#1?|bsIc-z2?>2@4FhU;U^PjpzU16y}ZE_ zjKDgOu(8{lagLsfw4g_$nzhyHNwO4^60qTw@;dvRo1EpBOS|rnyC;Qev|3-T2Wq`u zfmRK(fCFW%_{owMvC9?RVwT;a!)lRDHKWxVGY}3Qi_gdAE{z(dG&ss?(1L6WoOQjh zIAfSMT5WlQ1Hx?~raQY}jqcI+_2}3Z%w>(90XvK}za+X=VZ|qSazC9?IOt7pXlR=c z0!*&Q?Azco3mQNR^9&Hi*MN(Z&vwg&UlCV{gH!eJ!Vqfp~h4sxw>w}1r%7@lbXS-TDOQ? zv0PQ&K~bfE1ki9gUU9#!uTrRd)8SrQ<$j%?K*QwID)e1aS9#4*%)1(VT@qG%fq;h3 z9L-b;4w70s=p!5{#@S~KIgJ(NQN}yWFiXZ814>Fg=5J#0hod`W0>UNDSNUc6;U3gA z-ZKC+)RVZ~lZZp)?|RK$P|qkuAet*CpR!7C59;xt9wYHX$pt;@2Z|m?_$t5S*Rl9I z7GFQWZAM;PasavdxuGy81>N<)E*Z0X&^z9oVrTg|ZgZ{6e8-2263);aHH}ik%tJq+ z3$As{*@RiF?ui((?s`{M&jfE`9gHPjz!F>%CILvr+`q`V&{=+-=pRojNP3o+NMLE~)1Wt5Z0% zAcH&02#spFm5E0DgBmoMQdI2~L@A9;tb?o1we&rN7{xT_&WZ36|WP}8Y4 zhujsEs>dN^fZC;#COMu z*&&uaZACKYZoFZJ$cPzE@U}@n?pf=}sD-VMb&a|FveA&n?>U}EJ=`_5S(ZVTTJ}%T zrAKB7(cEw^>I$VkxQG%Rh-f3^d1k-f&OR$5yHnk#v)`z*JJrL;ZtFv0Mk$1xNt_{ePa315O^!EXkm1;j7dQGT^yPR3$_ zU-K7)Smi#iImqwA{;?CxqEUvvyNOg6RhWrJ5b9eGbOO}fmEviGfk0H(aw9@@9iC3s z_^CH{ziSm|%)bb`;oHl50|U_VNR01o^+mHFfUgl^e2O=iWtchPdsxijY3hXb3LDgK z{W&as4~wNBV@4EG=VRMgseMJiwE1$%Gg2ItwQ!MOK=)$o9fPLC3+RsfVp1^3rb{To zg)T0mOO{%2E4ef_r$hIW-&-D4YMM?49PTATSq@QZoK9Yj{@!cws!QwB?qn)@3wKET9V2Q2>*vL@brq|e-m zS@)Vvw6;OUyc%21+7PvhrYFciKlUZ|i)9T`

BrSk{MgrCXM@bd}6EG?}@4DnWSc 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

oets!#4w3yC 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

85U)r)qilhY9%9b6J>zmUxcg2j|=XUfby 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¦m3Ajm%)=tj6z(fS>bwkt3qXT>9P!(G< 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 z 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
-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
-gxf{W_&-&*dgfkGndc=}o;ojJVC+ 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

s^Bp{1tp(V_|K!psaN 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%0A$qwJ^CnvB*BmomDG;NAMshGWmH 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≻dhhlRTp-`3NE_pNf7#RX1$L0w{q^!C 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℞kE9!i!FBSA<)Lje+V0~} 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

I0aoHzePdGSCP;Y*is?;aJR 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

c3uV?digIC<9$MHJ9=Akt1 z;?3EBiY!Y0CVYU9=C;_!)|oL?$DOq#yu;hDVm2mHz7x~Wrp#Rr@!3v8!(#Fv`6BMr z*zjzd?9Mk(DZ31JT!@W!vKltRqWlS)UoNeNO_4)vk__S4jw;QNo;-m+meTf6L53_X ztsr#8njQ^B@Mpq9NsdHpfp~*crIjOz{j>+-AEAmvh@mVCCO__q9hpBlHnipj6y$f_ zD`ETJ=^r!`Zm(O?I0r&Ym5yx^A{=k`50VOcL$oO4xTQYBW${S=E!ln-3R!TjSuV}D z)SHTEXTuEe>SvLxU)$WN2$sc-v65VAQ4X3)FZVIw90U$VnUvixo9Zv+p3H8KO^>!F z3R&s#L9iQ9!1?X1a4VvSw6(+>bAlc@dh=ZmQ#~^)yG#gpgHsJVA7<>dI4`%K|8G-S z8;F4gbw&O*3b5g}A7^z}u;Hs63+#tufw=YB?_41902sh#!*nM$l$m2g!N=4Kdc8l+ zIu0RF6I`~sU#G!Cp#l+Ydw?xDOp^pjSX(&+djLwXD?~Acx{?iW4Z4zzim9V3ITq)y zUCE(}sjDlwt73|BB}Xf!p04D9iphxCL@`ApAWbp#b0zmvOn17H;}uh^E4ia$8t6*y zshHwj$#*KIp|0eixR!VZ=Hx?&5;Pxz@>~irxmHkUQrt=4oI^RGs?fIqDwO;P?Yi;v zmNyb`cXk?soIn9=hrp9S+aYl$Ys2DBnw3B7B3N0}WIGhZ`kGF`!sN9e7XfxwE6KeQ zhgAc_wDw+Mhnz_VxSnzjl|He$CzxS z!-`?|5}c=Q#>LfM=KxN~e;;rew7cv5l*EzVh>1Ui7+^j_M_UrF&?KEEJ$DBdA5?J) zfL2AfMB9eYCwuWZa3z7GOEcQ&IX#>Y7sQwFlaYx8YIW#BoKuX-^nME67IIW2!1e$$=9|6?NDSu zpUC|VF)A;C1IA;Mk}i=boSRC*Ri}n%Nw^;zJ_Ag61G%+sSAMm*kWkOHF$*=oJF^)x z=vFa<&Rh?TRqAoXiQs$CB7QPKbY&g&AMlI01XBio*PPII0XS*dOoBEIS^C1|VYKu5 zR5Z{H$c}T@Tj|_&>UuL3B8YRt_NE~G8L<$#WJ5U*@)Il9+-1ZM9_WnIuj6L8cq}RI zdQL`LDbGaeRy`1`XCZ?K2s_ zD&>`7p@-hCy-2-{7&r2cAZB?66x|V>dgFeeH=ZS%${i6w?|$a&98|LwFVOisOu2}` zK+txoH-wmY*m5Cph~yn|m~DEqjp_Yk!4@jiL2f`V+yaS zN4KRFwB0Q%u0czQn{}8NDovlz;L;dDX=gGT^13q13G_Ph)ozhA)F;^3r!mwPw(^5*1>e?owfU+(H|KijHm6lzhM?EX(2ZSRStaPU^B12Y^$t**0AZA5D zlp7bvzhhF1DEA~}qKJJPNAe+#)fZs!DL67qoE2Ck>nvZ`y%bktq|=t}_oFLCa*J4a zoH3xQ-&6-Q&xrBjmmgE69vm`4=qlZ?B(5L9EiA%^n$-mGOl%^yV`XfL_-1kEQ$%7h?utc&cwJ$%P)P1?@lAlWK1&Tj*&)tO@P$#MPjA6<#Z4V0g?bo5Pti!3#EIp5h#_PFeP>a8_ECPpyf&WNBoj9CEalqVOFN)|k(8hD^@>1!4At zkJ$UiQOrfOWo=VJbZ_n#Z&p}CDzN{YSV3COGP$=kNyR80C}!d2nP zP?buXYsm?7{>&1$DcCk0aSSDVSdncZ`Ewc^oOy?)^tlJJtw3vZDI-eQBX^T>@Rs1j z4~T68u_6%LBxr16$8fmLvg#0aoqNsZF|T-Xgxy|o71U0UExAxk7PFpF)tQ2Rpvk=v zgd}xFXkaE>LYWA15BvNa-Usfwrt(?jSFAO15So+^>q5$X0lFi?mJkq4JALt%T)1nN z0;~~szX9FN9){IRC43HO%8g$UB&M!mfBA%N2Ev}?G9Kayoui^k!6y8x&1(5ua`268 z{(jUcw7y^{2AdoyFg{6p-S%ph_~#YU2P%Y4B~cS(`U|i}(oIDUegLn1!pvAHFA{HM zIG6m0gi3GYPuvlR-Ifwc!7J)tFY3pX&=KbCY1P>TUF$l@*DTFx{wVmIqX z%#(ruvj(Gengc&T1E$31?D=TYC%eHDS&-TlB7j-c9?njtQkEN-ul*>e8&Ve&{>B_- ze+QiUD+{GCh=J*VbibpJZz?z&IYZk*?LD|Pi~rb>eniG!{v+8cZZ4t#(QbSmel z-J+0An)`7g$utG$)BvWk0{i`dCk1LT8j3k99tp>SVIEO9DzufQl*2KyuVN!*5 zt{u8y1gQ}kT1tnEx~Yq8bb|erZeF48)b_N-RH_2GAM@1>RV1G{2EFZ7K7plf5);KmL`5Q7N=W>>?}e)age#;z@~ue<_8m ziTe9b!R8;+Q_a%t&~!la%*wd^fwt0+p`=65|VMw<=@9)wP?v2^NF zsl%}rh(hY;7&Y+6ooZyRS(NBcvhMWu4|`B?C#`+U;1NX9zX~jNj8;I|T>{T9mIga+ z=78MO44034HILqRr`EBRvH)X~v}|+=YN`6nS4&^if*jT$4Z_|WfEFWRWT#bfpPX-k zF-s^ZhT68PkX?nnOEV2k>u@~sL*zf+_zK}l(>D|*nzA_xkCZ{ zeCm_(?xtCQk~30{yJ&nt-lGIbT5$vZw7RoXdO|Wn>WHUKbdd_>-WjDe?Md-4A3~_xz_me(YRbH+3eiX| zME8RW$FVX!58C$QaB*B9tG>)~Jcvzwj3fBTZ>e5*CO^fFLvBen=HAF7+HX7gZ;tEA zEfhQ*RNDg&Khhq)froMXa!X8-<&eu>3?0>clnSas`m)ShXik}k>2#vO5rq?FmSU;% z5F~Ik;MB=TqwE|N-mkVJCZ~b#91`6Gn#Z;Ye6 z5D&6|5$_EPxUCWdYeYt6<1Y|=a2ZQtZCfOl#QWyNsBDL=AC!?G_m=V;`07o(ItyPw zx63WCO$FU}_RmLJY9^O371*hnK42#`q1#^oljSUIvOsohcdSGu{lCyDh?Q4j^-Ygl z7fW=!;HuJ@#F(U)L>X0OW9fOEOYuL@p$1Y+X3BA}9sU#{#OC}Z$Jxu29mE~^#jo9k z5Jw#4LJUJZ@^>>C9DN<3*_gs~5DS=QGY@${K$RUu0G zQ|!|e5r-v9h09L<+yEhW-b_M12||vvzuhT)fQ%e71(=tm&SQYjqr;6N2e6FEfd&5^ zTks*j`2@wBI7oW-IdVxT_ImO+)Xo<>l!VLJp-l5-chNa(L?S4%oyhkf5=6r22|M?^ zhTe6;%Ydv<2SW&~vGz>IpI(`I z0AE1z{A!i(wr#XkJSl{wTSXYm?*V2c840INurX;p%d znU=1WvGW{q2j>ZQ+$LUrPZnQ3!l!tID{UqFj9j>4QB%bF(vr^|dFf?Zq`((?*J4_7 zc>SC{OX&URZKQ%o<_lGa9=*O=)uX&5NIcIE3ZETv37w^5jIrQQ#|o-YtQgs($$l&< z)}|zxybF~UL=a#~;U>r~Zrhq}K7`biWQ~TKR>3p_nTucAdt9{j{n_SPK$i0Mavk|g z5Brax=2Rh*M#?>k7HVP-7?pBM@PpU9`T$?NW~C!S+BrI6JDfp5aP@T~%gSfE!E7UY z{E~8%7R_mdR^=xn1Y1Hz%7RLJ!mKDqAFCU8=eWb3gRPJC z?+LL>HOuoB;)9GMbN<`u^ou)kO9~0Io4&EwM@X?gq`yB# zBd~q&_8R<+j}7=R6&djx?ZIJ*O~wEIbZ6Ybo?)<-kBTCqmi${U?r!6VcYb?CR@PEg z+(!yC9zJ|g!;qd7$Ou45V_u|c>fHyZ$WkKRi?r$#7qatcQ=qYmS%I>w)DDo-9 zvw2l#5H3K=pMO0-76;!p-T80wCe*>FD&-cSxqMMg%Wo^?_CBmFzp>0-lN>Nu_2;g@ z9o^Qh91?5niP&7g3-B!Om0sG7CvZK{FNR!rV1K9aQ`Qp8sQ=Ql{V1Y@^MJE$P!HVL z*A>4}Tyx%16su`VCFt0!I|whcI~DR>&{k!nX)o!ByBej~k{L+3j6Rj_;C;f+CG_*p z4h;>c>s{$$Rd-~~TH&*ZXT27Z&w>O}#J=XRTaa20zhFngp5uvJIh+Jw?Ivoj+n&$9 z-9t~^@S5GXj!4@D%Sn>Oc|#3}H< zJ&~P=h|N99facw?hj%NT+TRwAaq3oE`i(nqjKqW<)GeDkk5lG9mr!YW${Aj|WVcqj zntuKPDVwSECTa&S%{h4^mFC}xH<#!#Qg`H`mo(l4KPCJ*aYRg&>aEm0KWQozudVaG zwtoR$)7Wtw>FiW)f*lFN^xRy?*6!xi1UrJ(QvE7BJYbwkB!|5~L zNKyn549QLo_B13V^t#H;uXpk0^BxxoMuZj7Z=4aFKZlTIxe;#u{;=TYd~a#a`;BU8 zA2-v9$p@*lmz(d=HK^{$WiM*n{2-f4npccxQm2F%j}a~8P5JL5LX3a^$WM%8s7^0& zyC8nEm-s{w$F!#T(&j`*VU%qVVJofL!aIS1QZMR6!vzi@bUPjD$E7s<0<$0 zc(5(ejFZPryCi%?#J;-+fWuwxqf$`M@0?%UL6E|Rp&rf4qhF1ukhSLTOKC@Lo(Twa zBP-`0B{W1{X9|AC{F2UoobZ1~ZiU(=)i)!^WwMRUku$7H>s?YCmh)|}BMfmmwV{~m zQg}|Ji%1d<_ezhFzNM~FS;EWWyJJJ$4V)+o|H>vPJNzp!QN!dFnswft-xxxUw@UxLl_=4Yx1^+=f z0O5nT7v57MyLnoc!+Djy|+cc$3l}Be%rlUtnQ_? zrLOTQI51_E%(xi>Sx-b`r$2zkcH)aVtd@Bb$qYvmVUs)!l~C6YbnMQ%es~05u--3p zE=vi@UI-0w^Tr)u_r6A!hNB%0{#gof*96b-J9+|@MX9YFNpue|$*&a8y7vBoC~Wq0 zMr42}`o3E9?5lc$yy)y@q*MoL9iW)XiydY=Pz-h6d!MZD zVR$3E5CxvnY8|8&c%osgzbvI%DbvyD$!Z&eP?{w-ENaf;=}t$d%f3}65A!_EdUXY$ zDE97T{Op?{R){27SRp2PV_2uEyD9F-PJ9lr*Rv~5LJl79W-n%4fZymmTg~m^V%F;~ zUVB*h;JpDI6SYeRoZGjd8koR!Tx7qL@)Dr<5ZvxaN{@blwvkP`kIL4kX>@z&61J{k<9fRx}gIK}SS756;saMD+wS|A+xy#A_qyvI!c#rKF za@tcfj?3;?X#Me;VO(^>?%e6?c6tg|0ag4pR}Xh#OS#vhyw@2hO=w@5?KzuP`jM z_WY^Zv*awZk_=)7sAkDHr6a6O1HzCh#^7EWB-u!}DS{IrDOs%k36iU@Rl0#)I=;ys zItJ=S(s7%%*6!_HYiGlUP3}h=HxncCLn@ijA~jb(M4-gt29S7iYCvvzUTeR6BpQCw zicrPR@Z}nQ_EBRfoHH*Fn$?rNTV|=E=5H?IfQo>q1FU!)n(tk@`ovQMRC_sjDI&O+ z!kt>hUi>F^NZpYqP7(=w6)WB;JV(x1DM7V2;>nuAYOh?2`cVoCVY|!!QJCy z+21Cd;;{9~=&nKK7Wgr8MwD9)h>s)m0kwqLKYjvp%;4IZTIg%uyLQsn5X}jM_Hoyb zy_^Sw2xd&0zBs@CqjxYHb&>L)HN)%qeN~xsuwU>IPYROuXbSDXqPO?~mb6 zl*Ya@?xM)s_w-reDUtgg4oqN9a66+m1j$U2@}J7Ybb}LlFGEPs-l<_UhN8W%+nQ{z zl)D+_)k*AC{OO&<3OF6kn572^4Gypc>wL3Kxp(@Sqp~kkEtTR|iqA=N;kTf+LhTWg ztP7i|Vs~`nkl%+O|BI;t@<|z*fcyiP2qBst)_$pgd`PmroEb3zU<7~5=a65{?s#0- zisFoe_k_cj@O^BePAXx4TcT-McaHkx_+U3Z%z0O~kM|es+sqyvOUh;4K{g7%JB+(| z_j2=vT!4smOxz{q!hX@XNO{S;Xn!7GFdENsinQ^#nHh*8Oe1(D6#HgtUoS1Lr0$6+ z++lR{yWG<>UH9VgF?dnkOTGXFI!f>#Fbe(GkMdnd&Yv74z*b)zbv(NgX% zqM~h)eTXjzU&Sm$wU&f517;`7CQYNG#(ydFy&1)(j6 z$NW8&K|W6Dk?@b zDHT%gKT%$#`X;qcyQgp+eR0k_j$b0{aV@%YW)=Rl7dmIw((f1WLp}Zr31atRY*6S7 z3UP?-jPFD-3wcsan4M@%`c6t!_Y=lw8IA9QXpmXy z;4?2tN8>!Ot5jdgb_(mjgt(0SDSb3`@0O7_#=A%V8IJwLvIAqtLJrISx27S>*q_NH z13USK51(Lh{z{wQmhrXrDdarKNXWwW?=k#kb7vYTcU?a_j>F}a;un*WitHOpQxLR) z+u@eMCRv7U)Nw};$D3qKqHfcJdnO7#>gNZZiRZ*!?U0qmMkb>a)m~-(8h_b=Uv|9Lx#2Z6R89ct%+C?+RwKt(-7^5 zi4Z{{G!gEWag$E&Y$~SAeQH&5?-JH_3wG}Y;1|{EPVVHuUg9sc?db4^weLlfIIiT5 zENoA6>|syjy8c~*l#2Qb2oc`WiqG;Z-j)|PqD)N} zUc8+s{x7X~ykGHlym&knKZ}37jTxd9zs|3?XiN$fCp*DZgrjiOm_AzZukO;fJ&aS& zq~a^|#f=m=O>2w_d-bhD^627ac?q4M-PIq~pQ zb{R+JNs=k|d<4u*oJQQI$Cj^FeB55aV`>^7Q$Utvb%7`S3 zK8$S(q(Q*)*nqT)DFhHC;_lQV){sGrl1BOh;DmP*I~fvk6&ZPq6O@po9b3xdCN-)g8@W8+1zF5UNP`OZB{}6PJa;SC;0XLc8cfj_ z46LFKA?|52F@TlZ=}_8vp}%xHt*Wdz0cR~ekHfo{GEB~8ov@2fdqa(D2F-iWjLkmH zcoe_1q#3W#LYPEgag1KNNEka?r|&^lwi2`jtsPiV`-E2*oZ4HX{N5r3iNISZU1E1H z2&o-tDpGaCt-aCJ?+xgPl=l(X;d=}FRF)tJQ5^}BPLO)^`+q7(bIJk)>Er<+NSI!p z!bn$c+u*NBFedrJ81lW0L7^N^VXM=R&?nGOe| zX8ER5boSgQ+Kf1leLs|DM4DsCv*Mi$=W$K?8_0{vkZ?#w7(Wm6QmEE$R`=9QoQ07Q zyo;kQ(4cvAiv_`mxWZzj@aeD>f$2^+jw@+u<4HlTE#)h+$d8gqbCpPW{>RAZVuXPUH<|$7cKK}^J58{Jw%NhsteET;z zSm%FdX)G>*NW$FAgx4z@Q5U#N$ypl9%A&ZzQ2bAgJ+L7Xi9Nm$N@A3Wb5$P?X^G|R z+DGg%bK_wr{#4H-h?~w#nA6=)!TX3^Nexje7DOmG_js5^;utduAdn8Lss+9v0!kK! zKmrpsYyr&JwOBP0jKGBJu$q-N09rMItd8xz7vqB~X@e*af*K()=_gpaB8)J%7u@-RgC0`#!{~#xWu9D2snk$y=8sd`^-`11b@o#(`|AKd1h6MrN zFEPaC-k3v=EeU@?_%}^bCTD^{$|Ko|+ha)%WMsWtzHU$ z=|xDz2L%*9BMP^+hC;&nt7wA(Z8-2ZZyQ)`e3QfK$oApfW7_$eM4HsC6 zvu3e0F}uS?)cHtX7~FKG2YEjkW#nC^zxFv#5=!|e;}CrMx}r+-QANg z_TWm#3K9c08+%S@z+-Rwz~zai8zALg09AEmO@^y?Wqll9OgTH=!w1&uLc_u)c)b9z zEDBT!RN<5E3k)Tzy#mW60a4_&RjE>RvzO{}d_n7SxB1vpIq2HiV}QBLIe$Ld%bsv> z9;fX1hhUF^ehFaDm@ed>og59}qWtGh5o>RnqTXdH&b44Ko}X)RK9WMMy%nu>J~APw zDEM}&;w#)?<1$UAZS+`vob~|gNPXxc`*~F<$SPJ2bcasDw182nTFdC2f8BabuVV`}Y^?tE_Sf_} z_WtNB56tc)afnBqN5koU0E&Z{DB>W#veNWPaS+`KR7k|V_3X8Q#BQIZFU$(8Vg)3^ zQo*6UU5=+o0z0frN_DEUSSW9?HrF9&oPEI| z1&8H>XzyoSiZ>4u?xTb;B&IwQro8t2Bpdr^$!XkZo0vHNHR>LU(@jhyVU)I?$9Xi} zzy0reB_WONh!ehvo#dnUdFg#8dC)=fO2qom;}(t{eSjY5g0K*&3nRic{a8V!6&U&X zc~$j@krPmnW|jGz0GxfLj>Up~*&6%iaQ0<1!9KYG`_?0y3uW2>`(kjuXba(hmPx7! z4lZ1*a`2VLIH;Y60TIETF|dXAa3%&QW#7HJP#L+IP?>^Cjxof< z_B}Nwj!FjyM{AYP!ISGzi{PNY(#oW?O&qlYV5tZ2Ab#SlB90^q|DiGvnIe0Bg%8Zl?`;J!Ul z-c>xK-;rfD^3YolI=9{EiF~|QR~%51@+2%=l_}9Y-6$QuJn$&Cr6{ltUp$e$x`Vy2 z(nL(6@*3Z=LWJ(+CuqCMUgU}VBZ^8C&@4y=+3sHmZc}CbCRr>C`{iqob4fII_YPA* zibFi8c}#e4uD7+P@O=5==sU+eFn*k9JCwU09XN$UF1QR@2n!pFNOCt|Q7_g6hT1z9 z^cOyb5*hvkxad)k90~)|kSK|+w9_04#~wVz9SYdK>SqmU3;PSL5l2grJ`1t7)Dk*a zDi-5B9@w20;{5i{m=koUv8{3p2@`p-DE<&<4tttIkg;lftYYa0`I?WL5Ss4aDz$$j zt>c2S2djOHuWc_oXT?K#X2qgC_AJ^=bd40jvlYa#<$Fj1XbWDAq#nDCk7Nqlg^1TR zV0{Y4BbJ@W;QNUGn8WuGW7(N;B0TW@zp2Gv^eg_ZD85uH{()NjA6oGle#M^=#m8&K zbJgOnYsK&ND?U~fH)_RG)#3xlG3BR<*cMD}Fp(-_;*x@~-aE zir3pkSD)7!v&FCYPEq_tt$2l6{0uG1s4-9b6)zCQXK2M=Msan{g7?{h1RQiik4|Yq zL-#>L$w7u~*$(NNhQj+wd$Pcfjl4z32!j>svAbXg(4x4QBR#fV?S0F!*o8S|<0m_| z@(`R9s3k{ZDbIpG36Uvh8>L6M7vHf!p?!<3Sodzm*l$G#%31h=i^xx>Ttz}q$(#_k zV4=FY<4bS^qgP6WBegS(6C1>T;LuKXcQ}gsAT?b(&}+xe#(~|a0pHXb+9TyGB3{Z& zu?Un;?W5Q6cI>7L*k7Q@FyEh2r15>u;dbmr5QOsp`vdlNSX1_)bUXMrct0Rl%B@pWAk7jv-0JFNf-9Kc+m7^8 z)DnK!55Z@2#R4S1Q>c`ehd-^#72F9FD%0gLUe^L#7c!it!e{z4^npjeu?zPSV)9HR zMvHrvgl#3qL>sQX#J!)$BCrrUE(?*(BVESdn9{hk!hg)mp;8nVZBJr< z;=V8&Z3Qhd;06-MIIA)#imPP@gzH-si7B;Td#uh`h9GPCXnw@ORMyUW4&pOPz_nRM zF19$29Z8~a4#FI*9)uVg&GX+wx^O@lH==ap@&BkY0Tj{h6p^V3txrSilTdD*s z;K{idct(bwe}~vv6Zau56eO)1ZN@wgusr#cOe8H^SOnDUd` zjdYe8Cj!iWcpVa|4)vjAdY^wWvbw2!^4mLu&y_~@`zRi`u1b)bvuz7CNCdCXBswHR zf8HYqC*c||jj%&cc)cJzMHitC}XaxPSrk4+E9&Z)aOe3t}%yr(~5Nn1ugEeoy;l&!@4X|cWI{wSV ze^8J`3j-0wjPO{UFsf)?61L1b-B0LNFVKv=D;FAt^dUdG#Gt z@k0g(#sBLoK15kGg5FmV<#ik`zzXrnbQMvyVEKWEeuy%W8YB><3(+A&d9S}9{NqZr zPKBzQ^@J^g@QoVb@r@9^f4Kc#~Cor?5l54MFZoY=eICUoipJ@b#RUMuDJ)Jrnd-qfRb*wa_;jR zuA^ZA!!`6dZMfc>q7B#k7*n14o)T->bcX8$_z-=)&ZoYgB+~n;`c_Tk%J84bsxs8T z$j3u zk8pcE;kyLkHX7lc6$}Lk+sK@4efy&efB_RtL%ZvpkZ>4 zU&tJ{H#7%^#C>XUkH)Ev3N~vPmRznyMw@Fo79xub_&W)IVE?m_kN`pYMV$A<^5PLJL@=x{2Bt&WnluL5N0T79!yY0lP*eE13H(Ptg@5hl z7L0*At6DM!7=d~IGzb^_j z1`K6-V_+igF7;ntyw$(8#=t#xKOt}i2MEEBEAgDho=xWSA_>7%NQw?k3ba+g#ao5a zuYSRYCQl5e_f<4`{(g=o8EGn-{B=k}W57xc5@^zv=n$H`rV{>!pW&;-Z%HgtPdHu> zj?f5?Y=m%~%}aO(&tL+=W|eThj_@agbSx=2-Vm}TL1b?q8YXvGWWEkW`rXTa^aGK!-YtO0`L9|6 zk&yUn1Ch0$*cu6zU_XkAoAf;fgm!LTOyi|qVu#s z5SeyIYeD1(+#8`2g5g&Jgy3DLCIsDK>I)&b0g|EvkujR#|F4?`h*($qK;(9E8EYV7 z8^=}hrU|M_PQ=0o5B*jYp;nR?o+qNzt%69JO8C`9;G=4iRKktwCHxDJ2fAMIfJ*oZ z{CgcrW76879ATAZvS{FI*XD}wMmjqqC_+!`N6H@Vdqa$8<=81gE|keyzC zD1xPvIfg8wb;a}elM)W<*AY!u9m}eW4MF75WBkUMN7D bTi^a91! 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