1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 06:54:33 +00:00

Updated Texture Asset Handling (#478)

* Auto stash before rebase of "upstream/master"

* A large number of scenes have been decompiled.

* Fixed makefile

* Decompiled around 40 scenes.

* Removed old file

* Finished matching remaining scenes.

* Removed old commented out spec lines

* Decompiled a few object files.

* Reorganized xmls a bit. Updated pu_box overlay to use proper symbol.

* Updated texture and object file decomp

* Fixed newline issue with ZAPD

* Moved scenes/ into the assets/ folder

* Fixed a few compile errors

* Auto stash before rebase of "upstream/master"

* A large number of scenes have been decompiled.

* Fixed makefile

* Decompiled around 40 scenes.

* Removed old file

* Finished matching remaining scenes.

* Removed old commented out spec lines

* Decompiled a few object files.

* Reorganized xmls a bit. Updated pu_box overlay to use proper symbol.

* Updated texture and object file decomp

* Moved scenes/ into the assets/ folder

* Fixed a few compile errors

* Fixed merge issues.

* Fixed makefile merge error

* Fixed additional merge error

* Fixed several more merge issues

* Commented out gameplay_keep and sk2 extraction, since currently unused.

* Reenabled gameplay_keep extraction since it's used in the spec

* Fixed build error

* Removed test struct

* Fixed makefile error that would happen on fresh builds

* Fixed merge issue

* Removed relative paths

* Multithreading on extraction, spec uses numbers, few changes to XMLs

* Removed redundant code from the extract_assets script

* object_sk2 and object_spot09_obj OK

* object_spot11_obj OK

* object_spot17_obj OK

* Test: One of the gameplay_keep dlists given a proper symbol

* Updated asset symbol names based on new naming scheme

* XMLs use "Offset" instead of "Address" now

* Fixed merge issues, updated ovl_Magic_Dark xml and gfx file

* Updated to use latest build of ZAPD

* Updated ZAPD again

* Updated ZAP to remove assimp dependency

* Jenkins Test: Added .gitkeep file

* Updated ZAP once more

* Updated png file name to comply with new naming scheme.

* Fixed bad include

Co-authored-by: Jack Walker <7463599+Jack-Walker@users.noreply.github.com>
This commit is contained in:
Nicholas Estelami 2020-12-26 06:39:52 -05:00 committed by GitHub
parent 8fa6cb6ff9
commit b95643b397
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
182 changed files with 2249 additions and 1472 deletions

View file

@ -1,140 +1,42 @@
#!/usr/bin/python3
import os
from shutil import copyfile
from multiprocessing import Pool
from multiprocessing import cpu_count
def ExtractFile(xmlPath, outputPath):
execStr = "tools/ZAP2/ZAP2.out e -i %s -b baserom/ -o %s -gsf 1 -sm tools/ZAP2/SymbolMap_OoTMqDbg.txt" % (xmlPath, outputPath)
def Extract(xmlPath, outputPath):
ExtractFile(xmlPath, outputPath, 1, 0)
def ExtractScene(xmlPath, outputPath):
ExtractFile(xmlPath, outputPath, 1, 1)
def ExtractFile(xmlPath, outputPath, genSrcFile, incFilePrefix):
execStr = "tools/ZAP2/ZAP2.out e -eh -i %s -b baserom/ -o %s -gsf %i -ifp %i -sm tools/ZAP2/SymbolMap_OoTMqDbg.txt" % (xmlPath, outputPath, genSrcFile, incFilePrefix)
print(execStr)
os.system(execStr)
# Copy generated C file to parent folder...
#fileName = os.path.basename(xmlPath)
#dirPath = os.path.dirname(xmlPath)
#copyfile(outputPath + "/" + fileName.replace(".xml", ".c"), outputPath + "/../" + fileName.replace(".xml", ".c"))
def ExtractFunc(fullPath):
outPath = ("assets/" + fullPath.split("assets/xml/")[1]).split(".xml")[0]
if (fullPath.startswith("assets/xml/scenes/")):
ExtractScene(fullPath, outPath)
else:
Extract(fullPath, outPath)
xmlFiles = []
for currentPath, folders, files in os.walk("assets"):
for file in files:
fullPath = os.path.join(currentPath, file)
if file.endswith(".xml") and currentPath.startswith("assets/xml"):
outPath = ("assets/" + fullPath.split("assets/xml/")[1]).split(".xml")[0]
xmlFiles.append(fullPath)
numCores = cpu_count()
print("Extracting assets with " + str(numCores) + " CPU cores.")
p = Pool(numCores)
p.map(ExtractFunc, xmlFiles)
# Textures
ExtractFile("assets/textures/xml/icon_item_24_static.xml", "assets/textures/icon_item_24_static")
ExtractFile("assets/textures/xml/icon_item_dungeon_static.xml", "assets/textures/icon_item_dungeon_static")
ExtractFile("assets/textures/xml/icon_item_field_static.xml", "assets/textures/icon_item_field_static")
ExtractFile("assets/textures/xml/icon_item_gameover_static.xml", "assets/textures/icon_item_gameover_static")
ExtractFile("assets/textures/xml/icon_item_nes_static.xml", "assets/textures/icon_item_nes_static")
ExtractFile("assets/textures/xml/icon_item_static.xml", "assets/textures/icon_item_static")
# Scenes and Rooms
ExtractFile("scenes/xml/test_levels/test01.xml", "scenes/test_levels/test01")
ExtractFile("scenes/xml/test_levels/testroom.xml", "scenes/test_levels/testroom")
ExtractFile("scenes/xml/test_levels/sutaru.xml", "scenes/test_levels/sutaru")
ExtractFile("scenes/xml/test_levels/syotes.xml", "scenes/test_levels/syotes")
ExtractFile("scenes/xml/test_levels/syotes2.xml", "scenes/test_levels/syotes2")
ExtractFile("scenes/xml/test_levels/besitu.xml", "scenes/test_levels/besitu")
ExtractFile("scenes/xml/test_levels/sasatest.xml", "scenes/test_levels/sasatest")
ExtractFile("scenes/xml/test_levels/depth_test.xml", "scenes/test_levels/depth_test")
ExtractFile("scenes/xml/misc/kinsuta.xml", "scenes/misc/kinsuta")
ExtractFile("scenes/xml/misc/kakusiana.xml", "scenes/misc/kakusiana")
ExtractFile("scenes/xml/misc/hakaana.xml", "scenes/misc/hakaana")
ExtractFile("scenes/xml/misc/hakaana2.xml", "scenes/misc/hakaana2")
ExtractFile("scenes/xml/misc/hakaana_ouke.xml", "scenes/misc/hakaana_ouke")
ExtractFile("scenes/xml/misc/hiral_demo.xml", "scenes/misc/hiral_demo")
ExtractFile("scenes/xml/misc/market_day.xml", "scenes/misc/market_day")
ExtractFile("scenes/xml/misc/market_night.xml", "scenes/misc/market_night")
ExtractFile("scenes/xml/misc/market_ruins.xml", "scenes/misc/market_ruins")
ExtractFile("scenes/xml/misc/market_alley.xml", "scenes/misc/market_alley")
ExtractFile("scenes/xml/misc/market_alley_n.xml", "scenes/misc/market_alley_n")
ExtractFile("scenes/xml/misc/kakariko3.xml", "scenes/misc/kakariko3")
ExtractFile("scenes/xml/misc/turibori.xml", "scenes/misc/turibori")
ExtractFile("scenes/xml/misc/shrine.xml", "scenes/misc/shrine")
ExtractFile("scenes/xml/misc/shrine_n.xml", "scenes/misc/shrine_n")
ExtractFile("scenes/xml/misc/shrine_r.xml", "scenes/misc/shrine_r")
ExtractFile("scenes/xml/misc/entra_n.xml", "scenes/misc/entra_n")
ExtractFile("scenes/xml/misc/enrui.xml", "scenes/misc/enrui")
ExtractFile("scenes/xml/overworld/spot00.xml", "scenes/overworld/spot00")
ExtractFile("scenes/xml/overworld/spot01.xml", "scenes/overworld/spot01")
ExtractFile("scenes/xml/overworld/spot02.xml", "scenes/overworld/spot02")
ExtractFile("scenes/xml/overworld/spot03.xml", "scenes/overworld/spot03")
ExtractFile("scenes/xml/overworld/spot04.xml", "scenes/overworld/spot04")
ExtractFile("scenes/xml/overworld/spot05.xml", "scenes/overworld/spot05")
ExtractFile("scenes/xml/overworld/spot06.xml", "scenes/overworld/spot06")
ExtractFile("scenes/xml/overworld/spot07.xml", "scenes/overworld/spot07")
ExtractFile("scenes/xml/overworld/spot08.xml", "scenes/overworld/spot08")
ExtractFile("scenes/xml/overworld/spot09.xml", "scenes/overworld/spot09")
ExtractFile("scenes/xml/overworld/spot10.xml", "scenes/overworld/spot10")
ExtractFile("scenes/xml/overworld/spot11.xml", "scenes/overworld/spot11")
ExtractFile("scenes/xml/overworld/spot12.xml", "scenes/overworld/spot12")
ExtractFile("scenes/xml/overworld/spot13.xml", "scenes/overworld/spot13")
ExtractFile("scenes/xml/overworld/spot15.xml", "scenes/overworld/spot15")
ExtractFile("scenes/xml/overworld/spot16.xml", "scenes/overworld/spot16")
ExtractFile("scenes/xml/overworld/spot17.xml", "scenes/overworld/spot17")
ExtractFile("scenes/xml/overworld/spot18.xml", "scenes/overworld/spot18")
ExtractFile("scenes/xml/overworld/spot20.xml", "scenes/overworld/spot20")
ExtractFile("scenes/xml/overworld/souko.xml", "scenes/overworld/souko")
ExtractFile("scenes/xml/overworld/entra.xml", "scenes/overworld/entra")
ExtractFile("scenes/xml/indoors/takaraya.xml", "scenes/indoors/takaraya")
ExtractFile("scenes/xml/indoors/tokinoma.xml", "scenes/indoors/tokinoma")
ExtractFile("scenes/xml/indoors/kenjyanoma.xml", "scenes/indoors/kenjyanoma")
ExtractFile("scenes/xml/indoors/hylia_labo.xml", "scenes/indoors/hylia_labo")
ExtractFile("scenes/xml/indoors/miharigoya.xml", "scenes/indoors/miharigoya")
ExtractFile("scenes/xml/indoors/mahouya.xml", "scenes/indoors/mahouya")
ExtractFile("scenes/xml/indoors/syatekijyou.xml", "scenes/indoors/syatekijyou")
ExtractFile("scenes/xml/indoors/hairal_niwa.xml", "scenes/indoors/hairal_niwa")
ExtractFile("scenes/xml/indoors/hairal_niwa2.xml", "scenes/indoors/hairal_niwa2")
ExtractFile("scenes/xml/indoors/hairal_niwa_n.xml", "scenes/indoors/hairal_niwa_n")
ExtractFile("scenes/xml/indoors/labo.xml", "scenes/indoors/labo")
ExtractFile("scenes/xml/indoors/tent.xml", "scenes/indoors/tent")
ExtractFile("scenes/xml/indoors/impa.xml", "scenes/indoors/impa")
ExtractFile("scenes/xml/indoors/bowling.xml", "scenes/indoors/bowling")
ExtractFile("scenes/xml/indoors/hakasitarelay.xml", "scenes/indoors/hakasitarelay")
ExtractFile("scenes/xml/indoors/nakaniwa.xml", "scenes/indoors/nakaniwa")
ExtractFile("scenes/xml/indoors/daiyousei_izumi.xml", "scenes/indoors/daiyousei_izumi")
ExtractFile("scenes/xml/indoors/yousei_izumi_tate.xml", "scenes/indoors/yousei_izumi_tate")
ExtractFile("scenes/xml/indoors/yousei_izumi_yoko.xml", "scenes/indoors/yousei_izumi_yoko")
ExtractFile("scenes/xml/indoors/malon_stable.xml", "scenes/indoors/malon_stable")
ExtractFile("scenes/xml/indoors/kakariko.xml", "scenes/indoors/kakariko")
ExtractFile("scenes/xml/indoors/hut.xml", "scenes/indoors/hut")
ExtractFile("scenes/xml/indoors/kokiri_home.xml", "scenes/indoors/kokiri_home")
ExtractFile("scenes/xml/indoors/kokiri_home3.xml", "scenes/indoors/kokiri_home3")
ExtractFile("scenes/xml/indoors/kokiri_home4.xml", "scenes/indoors/kokiri_home4")
ExtractFile("scenes/xml/indoors/kokiri_home5.xml", "scenes/indoors/kokiri_home5")
ExtractFile("scenes/xml/indoors/link_home.xml", "scenes/indoors/link_home")
ExtractFile("scenes/xml/shops/golon.xml", "scenes/shops/golon")
ExtractFile("scenes/xml/shops/zoora.xml", "scenes/shops/zoora")
ExtractFile("scenes/xml/shops/drag.xml", "scenes/shops/drag")
ExtractFile("scenes/xml/shops/alley_shop.xml", "scenes/shops/alley_shop")
ExtractFile("scenes/xml/shops/night_shop.xml", "scenes/shops/night_shop")
ExtractFile("scenes/xml/shops/face_shop.xml", "scenes/shops/face_shop")
ExtractFile("scenes/xml/shops/kokiri_shop.xml", "scenes/shops/kokiri_shop")
ExtractFile("scenes/xml/shops/shop1.xml", "scenes/shops/shop1")
ExtractFile("scenes/xml/dungeons/ydan.xml", "scenes/dungeons/ydan")
ExtractFile("scenes/xml/dungeons/ydan_boss.xml", "scenes/dungeons/ydan_boss")
ExtractFile("scenes/xml/dungeons/ddan.xml", "scenes/dungeons/ddan")
ExtractFile("scenes/xml/dungeons/ddan_boss.xml", "scenes/dungeons/ddan_boss")
ExtractFile("scenes/xml/dungeons/bdan.xml", "scenes/dungeons/bdan")
ExtractFile("scenes/xml/dungeons/bdan_boss.xml", "scenes/dungeons/bdan_boss")
ExtractFile("scenes/xml/dungeons/Bmori1.xml", "scenes/dungeons/Bmori1")
ExtractFile("scenes/xml/dungeons/FIRE_bs.xml", "scenes/dungeons/FIRE_bs")
ExtractFile("scenes/xml/dungeons/moribossroom.xml", "scenes/dungeons/moribossroom")
ExtractFile("scenes/xml/dungeons/HIDAN.xml", "scenes/dungeons/HIDAN")
ExtractFile("scenes/xml/dungeons/MIZUsin.xml", "scenes/dungeons/MIZUsin")
ExtractFile("scenes/xml/dungeons/MIZUsin_bs.xml", "scenes/dungeons/MIZUsin_bs")
ExtractFile("scenes/xml/dungeons/jyasinzou.xml", "scenes/dungeons/jyasinzou")
ExtractFile("scenes/xml/dungeons/HAKAdan.xml", "scenes/dungeons/HAKAdan")
ExtractFile("scenes/xml/dungeons/HAKAdan_bs.xml", "scenes/dungeons/HAKAdan_bs")
ExtractFile("scenes/xml/dungeons/HAKAdanCH.xml", "scenes/dungeons/HAKAdanCH")
ExtractFile("scenes/xml/dungeons/ice_doukutu.xml", "scenes/dungeons/ice_doukutu")
ExtractFile("scenes/xml/dungeons/jyasinboss.xml", "scenes/dungeons/jyasinboss")
ExtractFile("scenes/xml/dungeons/men.xml", "scenes/dungeons/men")
ExtractFile("scenes/xml/dungeons/gerudoway.xml", "scenes/dungeons/gerudoway")
ExtractFile("scenes/xml/dungeons/ganontika.xml", "scenes/dungeons/ganontika")
ExtractFile("scenes/xml/dungeons/ganontikasonogo.xml", "scenes/dungeons/ganontikasonogo")
ExtractFile("scenes/xml/dungeons/ganon.xml", "scenes/dungeons/ganon")
ExtractFile("scenes/xml/dungeons/ganon_boss.xml", "scenes/dungeons/ganon_boss")
ExtractFile("scenes/xml/dungeons/ganon_demo.xml", "scenes/dungeons/ganon_demo")
ExtractFile("scenes/xml/dungeons/ganon_final.xml", "scenes/dungeons/ganon_final")
ExtractFile("scenes/xml/dungeons/ganon_sonogo.xml", "scenes/dungeons/ganon_sonogo")
ExtractFile("scenes/xml/dungeons/ganon_tou.xml", "scenes/dungeons/ganon_tou")
#os.system("make resources")