diff --git a/OTRExporter/OTRExporter/OTRExporter.vcxproj b/OTRExporter/OTRExporter/OTRExporter.vcxproj
index 96531304b..4ed7d72e1 100644
--- a/OTRExporter/OTRExporter/OTRExporter.vcxproj
+++ b/OTRExporter/OTRExporter/OTRExporter.vcxproj
@@ -63,6 +63,12 @@
+
+
+ {02d10590-9542-3f55-aaf8-6055677e2a2a}
+ false
+
+
16.0
Win32Proj
@@ -118,19 +124,31 @@
true
$(SolutionDir)otrlib;$(SolutionDir)\ZAPD\ZAPD\;$(SolutionDir)\ZAPD\lib\tinyxml2;$(SolutionDir)\ZAPD\lib\libgfxd;$(SolutionDir)\ZAPD\lib\elfio;$(SolutionDir)\ZAPD\lib\assimp\include;$(SolutionDir)\ZAPD\lib\stb;$(ProjectDir);$(IncludePath)
+ MinimumRecommendedRules.ruleset
+
+
false
+ MinimumRecommendedRules.ruleset
+
+
true
$(ProjectDir)..\..\ZAPDTR\ZAPD;$(ProjectDir)..\..\ZAPDTR\lib\tinyxml2;$(ProjectDir)..\..\ZAPDTR\lib\libgfxd;$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)..\..\libultraship\libultraship;$(ProjectDir)..\..\libultraship\libultraship\lib\spdlog\include;$(ProjectDir)..\..\libultraship\libultraship\Lib\Fast3D\U64;$(IncludePath)
$(ProjectDir)..\..\libultraship\libultraship;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
false
$(ProjectDir)..\..\ZAPDTR\ZAPD;$(ProjectDir)..\..\ZAPDTR\lib\tinyxml2;$(ProjectDir)..\..\ZAPDTR\lib\libgfxd;$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)..\..\libultraship\libultraship;$(ProjectDir)..\..\libultraship\libultraship\lib\spdlog\include;$(ProjectDir)..\..\libultraship\libultraship\Lib\Fast3D\U64;$(IncludePath)
$(ProjectDir)..\..\libultraship\libultraship;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
diff --git a/OTRExporter/extract_assets.py b/OTRExporter/extract_assets.py
index 0843e21fb..2922bbf06 100755
--- a/OTRExporter/extract_assets.py
+++ b/OTRExporter/extract_assets.py
@@ -64,6 +64,7 @@ def main():
parser.add_argument("-s", "--single", help="asset path relative to assets/, e.g. objects/gameplay_keep")
parser.add_argument("-f", "--force", help="Force the extraction of every xml instead of checking the touched ones.", action="store_true")
parser.add_argument("-u", "--unaccounted", help="Enables ZAPD unaccounted detector warning system.", action="store_true")
+ parser.add_argument("-v", "--version", help="Sets game version.")
args = parser.parse_args()
global mainAbort
@@ -73,6 +74,13 @@ def main():
extractedAssetsTracker = manager.dict()
+ xmlVer = "GC_NMQ_D"
+
+ if (args.version == "gc_pal_nmpq"):
+ xmlVer = "GC_NMQ_PAL_F"
+ elif (args.version == "dbg_mq"):
+ xmlVer = "GC_MQ_D"
+
asset_path = args.single
if asset_path is not None:
fullPath = os.path.join("..\\soh\\assets", "xml", asset_path + ".xml")
@@ -90,7 +98,7 @@ def main():
extract_staff_text_path = None
xmlFiles = []
- for currentPath, _, files in os.walk(os.path.join("..\\soh\\assets\\", "xml\\GC_NMQ_PAL_F")):
+ for currentPath, _, files in os.walk(os.path.join("..\\soh\\assets\\xml\\", xmlVer)):
for file in files:
fullPath = os.path.join(currentPath, file)
if file.endswith(".xml"):
diff --git a/OTRExporter/extract_baserom_gc.py b/OTRExporter/extract_baserom_gc.py
index 841c92560..0bc324f81 100644
--- a/OTRExporter/extract_baserom_gc.py
+++ b/OTRExporter/extract_baserom_gc.py
@@ -1017,12 +1017,6 @@ FILE_NAMES = [
'vr_FCVR_pal_static',
'elf_message_field',
'elf_message_ydan',
- #'syotes_scene',
- #'syotes_room_0',
- #'syotes2_scene',
- #'syotes2_room_0',
- #'depth_test_scene',
- #'depth_test_room_0',
'ydan_scene',
'ydan_room_0',
'ydan_room_1',
@@ -1512,8 +1506,6 @@ FILE_NAMES = [
'ganontikasonogo_scene',
'ganontikasonogo_room_0',
'ganontikasonogo_room_1',
- #'test01_scene',
- #'test01_room_0',
'bump_texture_static',
'anime_model_1_static',
'anime_model_2_static',
diff --git a/OTRExporter/version b/OTRExporter/version
new file mode 100644
index 000000000..fedd7e51b
--- /dev/null
+++ b/OTRExporter/version
@@ -0,0 +1 @@
+UNKNOWN
\ No newline at end of file
diff --git a/OTRGui/assets/extractor/Config.xml b/OTRGui/assets/extractor/Config_GC_MQ_D.xml
similarity index 83%
rename from OTRGui/assets/extractor/Config.xml
rename to OTRGui/assets/extractor/Config_GC_MQ_D.xml
index 6e86fa8d8..51e536292 100644
--- a/OTRGui/assets/extractor/Config.xml
+++ b/OTRGui/assets/extractor/Config_GC_MQ_D.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/OTRGui/assets/extractor/Config_GC_NMQ_D.xml b/OTRGui/assets/extractor/Config_GC_NMQ_D.xml
new file mode 100644
index 000000000..7cc11ac18
--- /dev/null
+++ b/OTRGui/assets/extractor/Config_GC_NMQ_D.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml b/OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml
new file mode 100644
index 000000000..b98acfb00
--- /dev/null
+++ b/OTRGui/assets/extractor/Config_GC_NMQ_PAL_F.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/OTRGui/assets/extractor/filelists/gamecube_pal.txt b/OTRGui/assets/extractor/filelists/gamecube_pal.txt
new file mode 100644
index 000000000..c9746c1da
--- /dev/null
+++ b/OTRGui/assets/extractor/filelists/gamecube_pal.txt
@@ -0,0 +1,1510 @@
+makerom
+boot
+dmadata
+Audiobank
+Audioseq
+Audiotable
+link_animetion
+icon_item_static
+icon_item_24_static
+icon_item_field_static
+icon_item_dungeon_static
+icon_item_gameover_static
+icon_item_nes_static
+icon_item_ger_static
+icon_item_fra_static
+item_name_static
+map_name_static
+do_action_static
+message_static
+message_texture_static
+nes_font_static
+nes_message_data_static
+ger_message_data_static
+fra_message_data_static
+staff_message_data_static
+map_grand_static
+map_48x85_static
+map_i_static
+code
+ovl_title
+ovl_select
+ovl_opening
+ovl_file_choose
+ovl_kaleido_scope
+ovl_player_actor
+ovl_map_mark_data
+ovl_En_Test
+ovl_Arms_Hook
+ovl_Arrow_Fire
+ovl_Arrow_Ice
+ovl_Arrow_Light
+ovl_Bg_Bdan_Objects
+ovl_Bg_Bdan_Switch
+ovl_Bg_Bom_Guard
+ovl_Bg_Bombwall
+ovl_Bg_Bowl_Wall
+ovl_Bg_Breakwall
+ovl_Bg_Ddan_Jd
+ovl_Bg_Ddan_Kd
+ovl_Bg_Dodoago
+ovl_Bg_Dy_Yoseizo
+ovl_Bg_Ganon_Otyuka
+ovl_Bg_Gate_Shutter
+ovl_Bg_Gjyo_Bridge
+ovl_Bg_Gnd_Darkmeiro
+ovl_Bg_Gnd_Firemeiro
+ovl_Bg_Gnd_Iceblock
+ovl_Bg_Gnd_Nisekabe
+ovl_Bg_Gnd_Soulmeiro
+ovl_Bg_Haka
+ovl_Bg_Haka_Gate
+ovl_Bg_Haka_Huta
+ovl_Bg_Haka_Megane
+ovl_Bg_Haka_MeganeBG
+ovl_Bg_Haka_Sgami
+ovl_Bg_Haka_Ship
+ovl_Bg_Haka_Trap
+ovl_Bg_Haka_Tubo
+ovl_Bg_Haka_Water
+ovl_Bg_Haka_Zou
+ovl_Bg_Heavy_Block
+ovl_Bg_Hidan_Curtain
+ovl_Bg_Hidan_Dalm
+ovl_Bg_Hidan_Firewall
+ovl_Bg_Hidan_Fslift
+ovl_Bg_Hidan_Fwbig
+ovl_Bg_Hidan_Hamstep
+ovl_Bg_Hidan_Hrock
+ovl_Bg_Hidan_Kousi
+ovl_Bg_Hidan_Kowarerukabe
+ovl_Bg_Hidan_Rock
+ovl_Bg_Hidan_Rsekizou
+ovl_Bg_Hidan_Sekizou
+ovl_Bg_Hidan_Sima
+ovl_Bg_Hidan_Syoku
+ovl_Bg_Ice_Objects
+ovl_Bg_Ice_Shelter
+ovl_Bg_Ice_Shutter
+ovl_Bg_Ice_Turara
+ovl_Bg_Ingate
+ovl_Bg_Jya_1flift
+ovl_Bg_Jya_Amishutter
+ovl_Bg_Jya_Bigmirror
+ovl_Bg_Jya_Block
+ovl_Bg_Jya_Bombchuiwa
+ovl_Bg_Jya_Bombiwa
+ovl_Bg_Jya_Cobra
+ovl_Bg_Jya_Goroiwa
+ovl_Bg_Jya_Haheniron
+ovl_Bg_Jya_Ironobj
+ovl_Bg_Jya_Kanaami
+ovl_Bg_Jya_Lift
+ovl_Bg_Jya_Megami
+ovl_Bg_Jya_Zurerukabe
+ovl_Bg_Menkuri_Eye
+ovl_Bg_Menkuri_Kaiten
+ovl_Bg_Menkuri_Nisekabe
+ovl_Bg_Mizu_Bwall
+ovl_Bg_Mizu_Movebg
+ovl_Bg_Mizu_Shutter
+ovl_Bg_Mizu_Uzu
+ovl_Bg_Mizu_Water
+ovl_Bg_Mjin
+ovl_Bg_Mori_Bigst
+ovl_Bg_Mori_Elevator
+ovl_Bg_Mori_Hashigo
+ovl_Bg_Mori_Hashira4
+ovl_Bg_Mori_Hineri
+ovl_Bg_Mori_Idomizu
+ovl_Bg_Mori_Kaitenkabe
+ovl_Bg_Mori_Rakkatenjo
+ovl_Bg_Po_Event
+ovl_Bg_Po_Syokudai
+ovl_Bg_Pushbox
+ovl_Bg_Relay_Objects
+ovl_Bg_Spot00_Break
+ovl_Bg_Spot00_Hanebasi
+ovl_Bg_Spot01_Fusya
+ovl_Bg_Spot01_Idohashira
+ovl_Bg_Spot01_Idomizu
+ovl_Bg_Spot01_Idosoko
+ovl_Bg_Spot01_Objects2
+ovl_Bg_Spot02_Objects
+ovl_Bg_Spot03_Taki
+ovl_Bg_Spot05_Soko
+ovl_Bg_Spot06_Objects
+ovl_Bg_Spot07_Taki
+ovl_Bg_Spot08_Bakudankabe
+ovl_Bg_Spot08_Iceblock
+ovl_Bg_Spot09_Obj
+ovl_Bg_Spot11_Bakudankabe
+ovl_Bg_Spot11_Oasis
+ovl_Bg_Spot12_Gate
+ovl_Bg_Spot12_Saku
+ovl_Bg_Spot15_Rrbox
+ovl_Bg_Spot15_Saku
+ovl_Bg_Spot16_Bombstone
+ovl_Bg_Spot16_Doughnut
+ovl_Bg_Spot17_Bakudankabe
+ovl_Bg_Spot17_Funen
+ovl_Bg_Spot18_Basket
+ovl_Bg_Spot18_Futa
+ovl_Bg_Spot18_Obj
+ovl_Bg_Spot18_Shutter
+ovl_Bg_Sst_Floor
+ovl_Bg_Toki_Hikari
+ovl_Bg_Toki_Swd
+ovl_Bg_Treemouth
+ovl_Bg_Umajump
+ovl_Bg_Vb_Sima
+ovl_Bg_Ydan_Hasi
+ovl_Bg_Ydan_Maruta
+ovl_Bg_Ydan_Sp
+ovl_Bg_Zg
+ovl_Boss_Dodongo
+ovl_Boss_Fd
+ovl_Boss_Fd2
+ovl_Boss_Ganon
+ovl_Boss_Ganon2
+ovl_Boss_Ganondrof
+ovl_Boss_Goma
+ovl_Boss_Mo
+ovl_Boss_Sst
+ovl_Boss_Tw
+ovl_Boss_Va
+ovl_Demo_6K
+ovl_Demo_Du
+ovl_Demo_Ec
+ovl_Demo_Effect
+ovl_Demo_Ext
+ovl_Demo_Geff
+ovl_Demo_Gj
+ovl_Demo_Go
+ovl_Demo_Gt
+ovl_Demo_Ik
+ovl_Demo_Im
+ovl_Demo_Kankyo
+ovl_Demo_Kekkai
+ovl_Demo_Sa
+ovl_Demo_Shd
+ovl_Demo_Tre_Lgt
+ovl_Door_Ana
+ovl_Door_Gerudo
+ovl_Door_Killer
+ovl_Door_Shutter
+ovl_Door_Toki
+ovl_Door_Warp1
+ovl_Efc_Erupc
+ovl_Eff_Dust
+ovl_Effect_Ss_Blast
+ovl_Effect_Ss_Bomb
+ovl_Effect_Ss_Bomb2
+ovl_Effect_Ss_Bubble
+ovl_Effect_Ss_D_Fire
+ovl_Effect_Ss_Dead_Db
+ovl_Effect_Ss_Dead_Dd
+ovl_Effect_Ss_Dead_Ds
+ovl_Effect_Ss_Dead_Sound
+ovl_Effect_Ss_Dt_Bubble
+ovl_Effect_Ss_Dust
+ovl_Effect_Ss_En_Fire
+ovl_Effect_Ss_En_Ice
+ovl_Effect_Ss_Extra
+ovl_Effect_Ss_Fcircle
+ovl_Effect_Ss_Fhg_Flash
+ovl_Effect_Ss_Fire_Tail
+ovl_Effect_Ss_G_Fire
+ovl_Effect_Ss_G_Magma
+ovl_Effect_Ss_G_Magma2
+ovl_Effect_Ss_G_Ripple
+ovl_Effect_Ss_G_Spk
+ovl_Effect_Ss_G_Splash
+ovl_Effect_Ss_Hahen
+ovl_Effect_Ss_HitMark
+ovl_Effect_Ss_Ice_Piece
+ovl_Effect_Ss_Ice_Smoke
+ovl_Effect_Ss_K_Fire
+ovl_Effect_Ss_Kakera
+ovl_Effect_Ss_KiraKira
+ovl_Effect_Ss_Lightning
+ovl_Effect_Ss_Sibuki
+ovl_Effect_Ss_Sibuki2
+ovl_Effect_Ss_Solder_Srch_Ball
+ovl_Effect_Ss_Stick
+ovl_Effect_Ss_Stone1
+ovl_Elf_Msg
+ovl_Elf_Msg2
+ovl_En_Am
+ovl_En_Ani
+ovl_En_Anubice
+ovl_En_Anubice_Fire
+ovl_En_Anubice_Tag
+ovl_En_Arow_Trap
+ovl_En_Arrow
+ovl_En_Attack_Niw
+ovl_En_Ba
+ovl_En_Bb
+ovl_En_Bdfire
+ovl_En_Bigokuta
+ovl_En_Bili
+ovl_En_Bird
+ovl_En_Blkobj
+ovl_En_Bom
+ovl_En_Bom_Bowl_Man
+ovl_En_Bom_Bowl_Pit
+ovl_En_Bom_Chu
+ovl_En_Bombf
+ovl_En_Boom
+ovl_En_Box
+ovl_En_Brob
+ovl_En_Bubble
+ovl_En_Butte
+ovl_En_Bw
+ovl_En_Bx
+ovl_En_Changer
+ovl_En_Clear_Tag
+ovl_En_Cow
+ovl_En_Crow
+ovl_En_Cs
+ovl_En_Daiku
+ovl_En_Daiku_Kakariko
+ovl_En_Dekubaba
+ovl_En_Dekunuts
+ovl_En_Dh
+ovl_En_Dha
+ovl_En_Diving_Game
+ovl_En_Dns
+ovl_En_Dnt_Demo
+ovl_En_Dnt_Jiji
+ovl_En_Dnt_Nomal
+ovl_En_Dodojr
+ovl_En_Dodongo
+ovl_En_Dog
+ovl_En_Door
+ovl_En_Ds
+ovl_En_Du
+ovl_En_Dy_Extra
+ovl_En_Eg
+ovl_En_Eiyer
+ovl_En_Elf
+ovl_En_Encount1
+ovl_En_Encount2
+ovl_En_Ex_Item
+ovl_En_Ex_Ruppy
+ovl_En_Fd
+ovl_En_Fd_Fire
+ovl_En_Fhg_Fire
+ovl_En_Fire_Rock
+ovl_En_Firefly
+ovl_En_Fish
+ovl_En_Floormas
+ovl_En_Fr
+ovl_En_Fu
+ovl_En_Fw
+ovl_En_Fz
+ovl_En_G_Switch
+ovl_En_Ganon_Mant
+ovl_En_Ganon_Organ
+ovl_En_Gb
+ovl_En_Ge1
+ovl_En_Ge2
+ovl_En_Ge3
+ovl_En_GeldB
+ovl_En_GirlA
+ovl_En_Gm
+ovl_En_Go
+ovl_En_Go2
+ovl_En_Goma
+ovl_En_Goroiwa
+ovl_En_Gs
+ovl_En_Guest
+ovl_En_Hata
+ovl_En_Heishi1
+ovl_En_Heishi2
+ovl_En_Heishi3
+ovl_En_Heishi4
+ovl_En_Hintnuts
+ovl_En_Holl
+ovl_En_Honotrap
+ovl_En_Horse
+ovl_En_Horse_Game_Check
+ovl_En_Horse_Ganon
+ovl_En_Horse_Link_Child
+ovl_En_Horse_Normal
+ovl_En_Horse_Zelda
+ovl_En_Hs
+ovl_En_Hs2
+ovl_En_Hy
+ovl_En_Ice_Hono
+ovl_En_Ik
+ovl_En_In
+ovl_En_Insect
+ovl_En_Ishi
+ovl_En_It
+ovl_En_Jj
+ovl_En_Js
+ovl_En_Jsjutan
+ovl_En_Kakasi
+ovl_En_Kakasi2
+ovl_En_Kakasi3
+ovl_En_Kanban
+ovl_En_Karebaba
+ovl_En_Ko
+ovl_En_Kusa
+ovl_En_Kz
+ovl_En_Light
+ovl_En_Lightbox
+ovl_En_M_Fire1
+ovl_En_M_Thunder
+ovl_En_Ma1
+ovl_En_Ma2
+ovl_En_Ma3
+ovl_En_Mag
+ovl_En_Mb
+ovl_En_Md
+ovl_En_Mk
+ovl_En_Mm
+ovl_En_Mm2
+ovl_En_Ms
+ovl_En_Mu
+ovl_En_Nb
+ovl_En_Niw
+ovl_En_Niw_Girl
+ovl_En_Niw_Lady
+ovl_En_Nutsball
+ovl_En_Nwc
+ovl_En_Ny
+ovl_En_OE2
+ovl_En_Okarina_Effect
+ovl_En_Okarina_Tag
+ovl_En_Okuta
+ovl_En_Ossan
+ovl_En_Owl
+ovl_En_Part
+ovl_En_Peehat
+ovl_En_Po_Desert
+ovl_En_Po_Field
+ovl_En_Po_Relay
+ovl_En_Po_Sisters
+ovl_En_Poh
+ovl_En_Pu_box
+ovl_En_Rd
+ovl_En_Reeba
+ovl_En_River_Sound
+ovl_En_Rl
+ovl_En_Rr
+ovl_En_Ru1
+ovl_En_Ru2
+ovl_En_Sa
+ovl_En_Sb
+ovl_En_Scene_Change
+ovl_En_Sda
+ovl_En_Shopnuts
+ovl_En_Si
+ovl_En_Siofuki
+ovl_En_Skb
+ovl_En_Skj
+ovl_En_Skjneedle
+ovl_En_Ssh
+ovl_En_St
+ovl_En_Sth
+ovl_En_Stream
+ovl_En_Sw
+ovl_En_Syateki_Itm
+ovl_En_Syateki_Man
+ovl_En_Syateki_Niw
+ovl_En_Ta
+ovl_En_Takara_Man
+ovl_En_Tana
+ovl_En_Tg
+ovl_En_Tite
+ovl_En_Tk
+ovl_En_Torch
+ovl_En_Torch2
+ovl_En_Toryo
+ovl_En_Tp
+ovl_En_Tr
+ovl_En_Trap
+ovl_En_Tubo_Trap
+ovl_En_Vali
+ovl_En_Vase
+ovl_En_Vb_Ball
+ovl_En_Viewer
+ovl_En_Vm
+ovl_En_Wall_Tubo
+ovl_En_Wallmas
+ovl_En_Weather_Tag
+ovl_En_Weiyer
+ovl_En_Wf
+ovl_En_Wonder_Item
+ovl_En_Wonder_Talk
+ovl_En_Wonder_Talk2
+ovl_En_Wood02
+ovl_En_Xc
+ovl_En_Yabusame_Mark
+ovl_En_Yukabyun
+ovl_En_Zf
+ovl_En_Zl1
+ovl_En_Zl2
+ovl_En_Zl3
+ovl_En_Zl4
+ovl_En_Zo
+ovl_En_fHG
+ovl_End_Title
+ovl_Fishing
+ovl_Item_B_Heart
+ovl_Item_Etcetera
+ovl_Item_Inbox
+ovl_Item_Ocarina
+ovl_Item_Shield
+ovl_Magic_Dark
+ovl_Magic_Fire
+ovl_Magic_Wind
+ovl_Mir_Ray
+ovl_Obj_Bean
+ovl_Obj_Blockstop
+ovl_Obj_Bombiwa
+ovl_Obj_Comb
+ovl_Obj_Dekujr
+ovl_Obj_Elevator
+ovl_Obj_Hamishi
+ovl_Obj_Hana
+ovl_Obj_Hsblock
+ovl_Obj_Ice_Poly
+ovl_Obj_Kibako
+ovl_Obj_Kibako2
+ovl_Obj_Lift
+ovl_Obj_Lightswitch
+ovl_Obj_Makekinsuta
+ovl_Obj_Makeoshihiki
+ovl_Obj_Mure
+ovl_Obj_Mure2
+ovl_Obj_Mure3
+ovl_Obj_Oshihiki
+ovl_Obj_Roomtimer
+ovl_Obj_Switch
+ovl_Obj_Syokudai
+ovl_Obj_Timeblock
+ovl_Obj_Tsubo
+ovl_Obj_Warp2block
+ovl_Object_Kankyo
+ovl_Oceff_Spot
+ovl_Oceff_Storm
+ovl_Oceff_Wipe
+ovl_Oceff_Wipe2
+ovl_Oceff_Wipe3
+ovl_Oceff_Wipe4
+ovl_Shot_Sun
+gameplay_keep
+gameplay_field_keep
+gameplay_dangeon_keep
+gameplay_object_exchange_static
+object_link_boy
+object_link_child
+object_box
+object_human
+object_okuta
+object_poh
+object_wallmaster
+object_dy_obj
+object_firefly
+object_dodongo
+object_fire
+object_niw
+object_tite
+object_reeba
+object_peehat
+object_kingdodongo
+object_horse
+object_zf
+object_goma
+object_zl1
+object_gol
+object_bubble
+object_dodojr
+object_torch2
+object_bl
+object_tp
+object_oA1
+object_st
+object_bw
+object_ei
+object_horse_normal
+object_oB1
+object_o_anime
+object_spot04_objects
+object_ddan_objects
+object_hidan_objects
+object_horse_ganon
+object_oA2
+object_spot00_objects
+object_mb
+object_bombf
+object_sk2
+object_oE1
+object_oE_anime
+object_oE2
+object_ydan_objects
+object_gnd
+object_am
+object_dekubaba
+object_oA3
+object_oA4
+object_oA5
+object_oA6
+object_oA7
+object_jj
+object_oA8
+object_oA9
+object_oB2
+object_oB3
+object_oB4
+object_horse_zelda
+object_opening_demo1
+object_warp1
+object_b_heart
+object_dekunuts
+object_oE3
+object_oE4
+object_menkuri_objects
+object_oE5
+object_oE6
+object_oE7
+object_oE8
+object_oE9
+object_oE10
+object_oE11
+object_oE12
+object_vali
+object_oA10
+object_oA11
+object_mizu_objects
+object_fhg
+object_ossan
+object_mori_hineri1
+object_Bb
+object_toki_objects
+object_yukabyun
+object_zl2
+object_mjin
+object_mjin_flash
+object_mjin_dark
+object_mjin_flame
+object_mjin_ice
+object_mjin_soul
+object_mjin_wind
+object_mjin_oka
+object_haka_objects
+object_spot06_objects
+object_ice_objects
+object_relay_objects
+object_mori_hineri1a
+object_mori_hineri2
+object_mori_hineri2a
+object_mori_objects
+object_mori_tex
+object_spot08_obj
+object_warp2
+object_hata
+object_bird
+object_wood02
+object_lightbox
+object_pu_box
+object_trap
+object_vase
+object_im
+object_ta
+object_tk
+object_xc
+object_vm
+object_bv
+object_hakach_objects
+object_efc_crystal_light
+object_efc_fire_ball
+object_efc_flash
+object_efc_lgt_shower
+object_efc_star_field
+object_god_lgt
+object_light_ring
+object_triforce_spot
+object_medal
+object_bdan_objects
+object_sd
+object_rd
+object_po_sisters
+object_heavy_object
+object_gndd
+object_fd
+object_du
+object_fw
+object_horse_link_child
+object_spot02_objects
+object_haka
+object_ru1
+object_syokudai
+object_fd2
+object_dh
+object_rl
+object_efc_tw
+object_demo_tre_lgt
+object_gi_key
+object_mir_ray
+object_brob
+object_gi_jewel
+object_spot09_obj
+object_spot18_obj
+object_bdoor
+object_spot17_obj
+object_shop_dungen
+object_nb
+object_mo
+object_sb
+object_gi_melody
+object_gi_heart
+object_gi_compass
+object_gi_bosskey
+object_gi_medal
+object_gi_nuts
+object_sa
+object_gi_hearts
+object_gi_arrowcase
+object_gi_bombpouch
+object_in
+object_tr
+object_spot16_obj
+object_oE1s
+object_oE4s
+object_os_anime
+object_gi_bottle
+object_gi_stick
+object_gi_map
+object_oF1d_map
+object_ru2
+object_gi_shield_1
+object_dekujr
+object_gi_magicpot
+object_gi_bomb_1
+object_oF1s
+object_ma2
+object_gi_purse
+object_hni
+object_tw
+object_rr
+object_bxa
+object_anubice
+object_gi_gerudo
+object_gi_arrow
+object_gi_bomb_2
+object_gi_egg
+object_gi_scale
+object_gi_shield_2
+object_gi_hookshot
+object_gi_ocarina
+object_gi_milk
+object_ma1
+object_ganon
+object_sst
+object_ny
+object_fr
+object_gi_pachinko
+object_gi_boomerang
+object_gi_bow
+object_gi_glasses
+object_gi_liquid
+object_ani
+object_demo_6k
+object_gi_shield_3
+object_gi_letter
+object_spot15_obj
+object_jya_obj
+object_gi_clothes
+object_gi_bean
+object_gi_fish
+object_gi_saw
+object_gi_hammer
+object_gi_grass
+object_gi_longsword
+object_spot01_objects
+object_md
+object_km1
+object_kw1
+object_zo
+object_kz
+object_umajump
+object_masterkokiri
+object_masterkokirihead
+object_mastergolon
+object_masterzoora
+object_aob
+object_ik
+object_ahg
+object_cne
+object_gi_niwatori
+object_skj
+object_gi_bottle_letter
+object_bji
+object_bba
+object_gi_ocarina_0
+object_ds
+object_ane
+object_boj
+object_spot03_object
+object_spot07_object
+object_fz
+object_bob
+object_ge1
+object_yabusame_point
+object_gi_boots_2
+object_gi_seed
+object_gnd_magic
+object_d_elevator
+object_d_hsblock
+object_d_lift
+object_mamenoki
+object_goroiwa
+object_toryo
+object_daiku
+object_nwc
+object_blkobj
+object_gm
+object_ms
+object_hs
+object_ingate
+object_lightswitch
+object_kusa
+object_tsubo
+object_gi_gloves
+object_gi_coin
+object_kanban
+object_gjyo_objects
+object_owl
+object_mk
+object_fu
+object_gi_ki_tan_mask
+object_gi_redead_mask
+object_gi_skj_mask
+object_gi_rabit_mask
+object_gi_truth_mask
+object_ganon_objects
+object_siofuki
+object_stream
+object_mm
+object_fa
+object_os
+object_gi_eye_lotion
+object_gi_powder
+object_gi_mushroom
+object_gi_ticketstone
+object_gi_brokensword
+object_js
+object_cs
+object_gi_prescription
+object_gi_bracelet
+object_gi_soldout
+object_gi_frog
+object_mag
+object_door_gerudo
+object_gt
+object_efc_erupc
+object_zl2_anime1
+object_zl2_anime2
+object_gi_golonmask
+object_gi_zoramask
+object_gi_gerudomask
+object_ganon2
+object_ka
+object_ts
+object_zg
+object_gi_hoverboots
+object_gi_m_arrow
+object_ds2
+object_ec
+object_fish
+object_gi_sutaru
+object_gi_goddess
+object_ssh
+object_bigokuta
+object_bg
+object_spot05_objects
+object_spot12_obj
+object_bombiwa
+object_hintnuts
+object_rs
+object_spot00_break
+object_gla
+object_shopnuts
+object_geldb
+object_gr
+object_dog
+object_jya_iron
+object_jya_door
+object_spot01_objects2
+object_spot11_obj
+object_kibako2
+object_dns
+object_dnk
+object_gi_fire
+object_gi_insect
+object_gi_butterfly
+object_gi_ghost
+object_gi_soul
+object_bowl
+object_po_field
+object_demo_kekkai
+object_efc_doughnut
+object_gi_dekupouch
+object_ganon_anime1
+object_ganon_anime2
+object_ganon_anime3
+object_gi_rupy
+object_spot01_matoya
+object_spot01_matoyab
+object_po_composer
+object_mu
+object_wf
+object_skb
+object_gj
+object_geff
+object_haka_door
+object_gs
+object_ps
+object_bwall
+object_crow
+object_cow
+object_cob
+object_gi_sword_1
+object_door_killer
+object_ouke_haka
+object_timeblock
+object_zl4
+g_pn_01
+g_pn_02
+g_pn_03
+g_pn_04
+g_pn_05
+g_pn_06
+g_pn_07
+g_pn_08
+g_pn_09
+g_pn_10
+g_pn_11
+g_pn_12
+g_pn_13
+g_pn_14
+g_pn_15
+g_pn_16
+g_pn_17
+g_pn_18
+g_pn_19
+g_pn_20
+g_pn_21
+g_pn_22
+g_pn_23
+g_pn_24
+g_pn_25
+g_pn_26
+g_pn_27
+g_pn_28
+g_pn_29
+g_pn_30
+g_pn_31
+g_pn_32
+g_pn_33
+g_pn_34
+g_pn_35
+g_pn_36
+g_pn_37
+g_pn_38
+g_pn_39
+g_pn_40
+g_pn_41
+g_pn_42
+g_pn_43
+g_pn_44
+g_pn_45
+g_pn_46
+g_pn_47
+g_pn_48
+g_pn_49
+g_pn_50
+g_pn_51
+g_pn_52
+g_pn_53
+g_pn_54
+g_pn_55
+g_pn_56
+g_pn_57
+z_select_static
+nintendo_rogo_static
+title_static
+parameter_static
+vr_fine0_static
+vr_fine0_pal_static
+vr_fine1_static
+vr_fine1_pal_static
+vr_fine2_static
+vr_fine2_pal_static
+vr_fine3_static
+vr_fine3_pal_static
+vr_cloud0_static
+vr_cloud0_pal_static
+vr_cloud1_static
+vr_cloud1_pal_static
+vr_cloud2_static
+vr_cloud2_pal_static
+vr_cloud3_static
+vr_cloud3_pal_static
+vr_holy0_static
+vr_holy0_pal_static
+vr_holy1_static
+vr_holy1_pal_static
+vr_MDVR_static
+vr_MDVR_pal_static
+vr_MNVR_static
+vr_MNVR_pal_static
+vr_RUVR_static
+vr_RUVR_pal_static
+vr_LHVR_static
+vr_LHVR_pal_static
+vr_KHVR_static
+vr_KHVR_pal_static
+vr_K3VR_static
+vr_K3VR_pal_static
+vr_K4VR_static
+vr_K4VR_pal_static
+vr_K5VR_static
+vr_K5VR_pal_static
+vr_SP1a_static
+vr_SP1a_pal_static
+vr_MLVR_static
+vr_MLVR_pal_static
+vr_KKRVR_static
+vr_KKRVR_pal_static
+vr_KR3VR_static
+vr_KR3VR_pal_static
+vr_IPVR_static
+vr_IPVR_pal_static
+vr_KSVR_static
+vr_KSVR_pal_static
+vr_GLVR_static
+vr_GLVR_pal_static
+vr_ZRVR_static
+vr_ZRVR_pal_static
+vr_DGVR_static
+vr_DGVR_pal_static
+vr_ALVR_static
+vr_ALVR_pal_static
+vr_NSVR_static
+vr_NSVR_pal_static
+vr_LBVR_static
+vr_LBVR_pal_static
+vr_TTVR_static
+vr_TTVR_pal_static
+vr_FCVR_static
+vr_FCVR_pal_static
+elf_message_field
+elf_message_ydan
+ydan_scene
+ydan_room_0
+ydan_room_1
+ydan_room_2
+ydan_room_3
+ydan_room_4
+ydan_room_5
+ydan_room_6
+ydan_room_7
+ydan_room_8
+ydan_room_9
+ydan_room_10
+ydan_room_11
+ddan_scene
+ddan_room_0
+ddan_room_1
+ddan_room_2
+ddan_room_3
+ddan_room_4
+ddan_room_5
+ddan_room_6
+ddan_room_7
+ddan_room_8
+ddan_room_9
+ddan_room_10
+ddan_room_11
+ddan_room_12
+ddan_room_13
+ddan_room_14
+ddan_room_15
+ddan_room_16
+bdan_scene
+bdan_room_0
+bdan_room_1
+bdan_room_2
+bdan_room_3
+bdan_room_4
+bdan_room_5
+bdan_room_6
+bdan_room_7
+bdan_room_8
+bdan_room_9
+bdan_room_10
+bdan_room_11
+bdan_room_12
+bdan_room_13
+bdan_room_14
+bdan_room_15
+Bmori1_scene
+Bmori1_room_0
+Bmori1_room_1
+Bmori1_room_2
+Bmori1_room_3
+Bmori1_room_4
+Bmori1_room_5
+Bmori1_room_6
+Bmori1_room_7
+Bmori1_room_8
+Bmori1_room_9
+Bmori1_room_10
+Bmori1_room_11
+Bmori1_room_12
+Bmori1_room_13
+Bmori1_room_14
+Bmori1_room_15
+Bmori1_room_16
+Bmori1_room_17
+Bmori1_room_18
+Bmori1_room_19
+Bmori1_room_20
+Bmori1_room_21
+Bmori1_room_22
+HIDAN_scene
+HIDAN_room_0
+HIDAN_room_1
+HIDAN_room_2
+HIDAN_room_3
+HIDAN_room_4
+HIDAN_room_5
+HIDAN_room_6
+HIDAN_room_7
+HIDAN_room_8
+HIDAN_room_9
+HIDAN_room_10
+HIDAN_room_11
+HIDAN_room_12
+HIDAN_room_13
+HIDAN_room_14
+HIDAN_room_15
+HIDAN_room_16
+HIDAN_room_17
+HIDAN_room_18
+HIDAN_room_19
+HIDAN_room_20
+HIDAN_room_21
+HIDAN_room_22
+HIDAN_room_23
+HIDAN_room_24
+HIDAN_room_25
+HIDAN_room_26
+MIZUsin_scene
+MIZUsin_room_0
+MIZUsin_room_1
+MIZUsin_room_2
+MIZUsin_room_3
+MIZUsin_room_4
+MIZUsin_room_5
+MIZUsin_room_6
+MIZUsin_room_7
+MIZUsin_room_8
+MIZUsin_room_9
+MIZUsin_room_10
+MIZUsin_room_11
+MIZUsin_room_12
+MIZUsin_room_13
+MIZUsin_room_14
+MIZUsin_room_15
+MIZUsin_room_16
+MIZUsin_room_17
+MIZUsin_room_18
+MIZUsin_room_19
+MIZUsin_room_20
+MIZUsin_room_21
+MIZUsin_room_22
+jyasinzou_scene
+jyasinzou_room_0
+jyasinzou_room_1
+jyasinzou_room_2
+jyasinzou_room_3
+jyasinzou_room_4
+jyasinzou_room_5
+jyasinzou_room_6
+jyasinzou_room_7
+jyasinzou_room_8
+jyasinzou_room_9
+jyasinzou_room_10
+jyasinzou_room_11
+jyasinzou_room_12
+jyasinzou_room_13
+jyasinzou_room_14
+jyasinzou_room_15
+jyasinzou_room_16
+jyasinzou_room_17
+jyasinzou_room_18
+jyasinzou_room_19
+jyasinzou_room_20
+jyasinzou_room_21
+jyasinzou_room_22
+jyasinzou_room_23
+jyasinzou_room_24
+jyasinzou_room_25
+jyasinzou_room_26
+jyasinzou_room_27
+jyasinzou_room_28
+HAKAdan_scene
+HAKAdan_room_0
+HAKAdan_room_1
+HAKAdan_room_2
+HAKAdan_room_3
+HAKAdan_room_4
+HAKAdan_room_5
+HAKAdan_room_6
+HAKAdan_room_7
+HAKAdan_room_8
+HAKAdan_room_9
+HAKAdan_room_10
+HAKAdan_room_11
+HAKAdan_room_12
+HAKAdan_room_13
+HAKAdan_room_14
+HAKAdan_room_15
+HAKAdan_room_16
+HAKAdan_room_17
+HAKAdan_room_18
+HAKAdan_room_19
+HAKAdan_room_20
+HAKAdan_room_21
+HAKAdan_room_22
+HAKAdanCH_scene
+HAKAdanCH_room_0
+HAKAdanCH_room_1
+HAKAdanCH_room_2
+HAKAdanCH_room_3
+HAKAdanCH_room_4
+HAKAdanCH_room_5
+HAKAdanCH_room_6
+ice_doukutu_scene
+ice_doukutu_room_0
+ice_doukutu_room_1
+ice_doukutu_room_2
+ice_doukutu_room_3
+ice_doukutu_room_4
+ice_doukutu_room_5
+ice_doukutu_room_6
+ice_doukutu_room_7
+ice_doukutu_room_8
+ice_doukutu_room_9
+ice_doukutu_room_10
+ice_doukutu_room_11
+men_scene
+men_room_0
+men_room_1
+men_room_2
+men_room_3
+men_room_4
+men_room_5
+men_room_6
+men_room_7
+men_room_8
+men_room_9
+men_room_10
+ganontika_scene
+ganontika_room_0
+ganontika_room_1
+ganontika_room_2
+ganontika_room_3
+ganontika_room_4
+ganontika_room_5
+ganontika_room_6
+ganontika_room_7
+ganontika_room_8
+ganontika_room_9
+ganontika_room_10
+ganontika_room_11
+ganontika_room_12
+ganontika_room_13
+ganontika_room_14
+ganontika_room_15
+ganontika_room_16
+ganontika_room_17
+ganontika_room_18
+ganontika_room_19
+spot00_scene
+spot00_room_0
+spot01_scene
+spot01_room_0
+spot02_scene
+spot02_room_0
+spot02_room_1
+spot03_scene
+spot03_room_0
+spot03_room_1
+spot04_scene
+spot04_room_0
+spot04_room_1
+spot04_room_2
+spot05_scene
+spot05_room_0
+spot06_scene
+spot06_room_0
+spot07_scene
+spot07_room_0
+spot07_room_1
+spot08_scene
+spot08_room_0
+spot09_scene
+spot09_room_0
+spot10_scene
+spot10_room_0
+spot10_room_1
+spot10_room_2
+spot10_room_3
+spot10_room_4
+spot10_room_5
+spot10_room_6
+spot10_room_7
+spot10_room_8
+spot10_room_9
+spot11_scene
+spot11_room_0
+spot12_scene
+spot12_room_0
+spot12_room_1
+spot13_scene
+spot13_room_0
+spot13_room_1
+spot15_scene
+spot15_room_0
+spot16_scene
+spot16_room_0
+spot17_scene
+spot17_room_0
+spot17_room_1
+spot18_scene
+spot18_room_0
+spot18_room_1
+spot18_room_2
+spot18_room_3
+market_day_scene
+market_day_room_0
+market_night_scene
+market_night_room_0
+kenjyanoma_scene
+kenjyanoma_room_0
+tokinoma_scene
+tokinoma_room_0
+tokinoma_room_1
+link_home_scene
+link_home_room_0
+kokiri_shop_scene
+kokiri_shop_room_0
+kokiri_home_scene
+kokiri_home_room_0
+kakusiana_scene
+kakusiana_room_0
+kakusiana_room_1
+kakusiana_room_2
+kakusiana_room_3
+kakusiana_room_4
+kakusiana_room_5
+kakusiana_room_6
+kakusiana_room_7
+kakusiana_room_8
+kakusiana_room_9
+kakusiana_room_10
+kakusiana_room_11
+kakusiana_room_12
+kakusiana_room_13
+entra_scene
+entra_room_0
+moribossroom_scene
+moribossroom_room_0
+moribossroom_room_1
+syatekijyou_scene
+syatekijyou_room_0
+shop1_scene
+shop1_room_0
+hairal_niwa_scene
+hairal_niwa_room_0
+ganon_tou_scene
+ganon_tou_room_0
+market_alley_scene
+market_alley_room_0
+spot20_scene
+spot20_room_0
+market_ruins_scene
+market_ruins_room_0
+entra_n_scene
+entra_n_room_0
+enrui_scene
+enrui_room_0
+market_alley_n_scene
+market_alley_n_room_0
+hiral_demo_scene
+hiral_demo_room_0
+kokiri_home3_scene
+kokiri_home3_room_0
+malon_stable_scene
+malon_stable_room_0
+kakariko_scene
+kakariko_room_0
+bdan_boss_scene
+bdan_boss_room_0
+bdan_boss_room_1
+FIRE_bs_scene
+FIRE_bs_room_0
+FIRE_bs_room_1
+hut_scene
+hut_room_0
+daiyousei_izumi_scene
+daiyousei_izumi_room_0
+hakaana_scene
+hakaana_room_0
+yousei_izumi_tate_scene
+yousei_izumi_tate_room_0
+yousei_izumi_yoko_scene
+yousei_izumi_yoko_room_0
+golon_scene
+golon_room_0
+zoora_scene
+zoora_room_0
+drag_scene
+drag_room_0
+alley_shop_scene
+alley_shop_room_0
+night_shop_scene
+night_shop_room_0
+impa_scene
+impa_room_0
+labo_scene
+labo_room_0
+tent_scene
+tent_room_0
+nakaniwa_scene
+nakaniwa_room_0
+ddan_boss_scene
+ddan_boss_room_0
+ddan_boss_room_1
+ydan_boss_scene
+ydan_boss_room_0
+ydan_boss_room_1
+HAKAdan_bs_scene
+HAKAdan_bs_room_0
+HAKAdan_bs_room_1
+MIZUsin_bs_scene
+MIZUsin_bs_room_0
+MIZUsin_bs_room_1
+ganon_scene
+ganon_room_0
+ganon_room_1
+ganon_room_2
+ganon_room_3
+ganon_room_4
+ganon_room_5
+ganon_room_6
+ganon_room_7
+ganon_room_8
+ganon_room_9
+ganon_boss_scene
+ganon_boss_room_0
+jyasinboss_scene
+jyasinboss_room_0
+jyasinboss_room_1
+jyasinboss_room_2
+jyasinboss_room_3
+kokiri_home4_scene
+kokiri_home4_room_0
+kokiri_home5_scene
+kokiri_home5_room_0
+ganon_final_scene
+ganon_final_room_0
+kakariko3_scene
+kakariko3_room_0
+hakasitarelay_scene
+hakasitarelay_room_0
+hakasitarelay_room_1
+hakasitarelay_room_2
+hakasitarelay_room_3
+hakasitarelay_room_4
+hakasitarelay_room_5
+hakasitarelay_room_6
+shrine_scene
+shrine_room_0
+turibori_scene
+turibori_room_0
+shrine_n_scene
+shrine_n_room_0
+shrine_r_scene
+shrine_r_room_0
+hakaana2_scene
+hakaana2_room_0
+gerudoway_scene
+gerudoway_room_0
+gerudoway_room_1
+gerudoway_room_2
+gerudoway_room_3
+gerudoway_room_4
+gerudoway_room_5
+hairal_niwa_n_scene
+hairal_niwa_n_room_0
+bowling_scene
+bowling_room_0
+hakaana_ouke_scene
+hakaana_ouke_room_0
+hakaana_ouke_room_1
+hakaana_ouke_room_2
+hylia_labo_scene
+hylia_labo_room_0
+souko_scene
+souko_room_0
+souko_room_1
+souko_room_2
+miharigoya_scene
+miharigoya_room_0
+mahouya_scene
+mahouya_room_0
+takaraya_scene
+takaraya_room_0
+takaraya_room_1
+takaraya_room_2
+takaraya_room_3
+takaraya_room_4
+takaraya_room_5
+takaraya_room_6
+ganon_sonogo_scene
+ganon_sonogo_room_0
+ganon_sonogo_room_1
+ganon_sonogo_room_2
+ganon_sonogo_room_3
+ganon_sonogo_room_4
+ganon_demo_scene
+ganon_demo_room_0
+face_shop_scene
+face_shop_room_0
+kinsuta_scene
+kinsuta_room_0
+ganontikasonogo_scene
+ganontikasonogo_room_0
+ganontikasonogo_room_1
+bump_texture_static
+anime_model_1_static
+anime_model_2_static
+anime_model_3_static
+anime_model_4_static
+anime_model_5_static
+anime_model_6_static
+anime_texture_1_static
+anime_texture_2_static
+anime_texture_3_static
+anime_texture_4_static
+anime_texture_5_static
+anime_texture_6_static
+softsprite_matrix_static
\ No newline at end of file
diff --git a/OTRGui/src/game/game.cpp b/OTRGui/src/game/game.cpp
index 3fc6438a8..53e7373a8 100644
--- a/OTRGui/src/game/game.cpp
+++ b/OTRGui/src/game/game.cpp
@@ -75,7 +75,7 @@ void ExtractRom() {
const WriteResult result = ExtractBaserom(patched_rom);
if (result.error == NULLSTR) {
if (MoonUtils::exists("oot.otr")) MoonUtils::rm("oot.otr");
- startWorker();
+ startWorker(version);
extracting = true;
}
}
diff --git a/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp b/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp
index 86be26f6c..bd2fc42ea 100644
--- a/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp
+++ b/OTRGui/src/impl/baserom_extractor/baserom_extractor.cpp
@@ -83,37 +83,37 @@ RomVersion GetVersion(FILE* rom) {
break;
case OOT_NTSC_JP_GC:
version.version = "JP GameCube (MQ Disk)";
- version.listPath = "gamecube_mq.txt";
+ version.listPath = "gamecube.txt";
version.offset = OOT_OFF_JP_GC;
break;
case OOT_NTSC_JP_GC_CE:
version.version = "GameCube (Collectors Edition Disk)";
- version.listPath = "gamecube_mq.txt";
+ version.listPath = "gamecube.txt";
version.offset = OOT_OFF_JP_GC_CE;
break;
case OOT_NTSC_JP_MQ:
version.version = "JP Master Quest";
- version.listPath = "gamecube_mq.txt";
+ version.listPath = "gamecube.txt";
version.offset = OOT_OFF_JP_MQ;
break;
case OOT_NTSC_US_MQ:
version.version = "NTSC Master Quest";
- version.listPath = "gamecube_mq.txt";
+ version.listPath = "gamecube.txt";
version.offset = OOT_OFF_JP_MQ;
break;
case OOT_NTSC_US_GC:
version.version = "NTSC GameCube";
- version.listPath = "gamecube_mq.txt";
+ version.listPath = "gamecube.txt";
version.offset = OOT_OFF_US_MQ;
break;
case OOT_PAL_GC:
version.version = "PAL GameCube";
- version.listPath = "gamecube_mq.txt";
+ version.listPath = "gamecube_pal.txt";
version.offset = OOT_OFF_PAL_GC;
break;
case OOT_PAL_MQ:
version.version = "PAL Master Quest";
- version.listPath = "pal_mq.txt";
+ version.listPath = "gamecube_pal.txt";
version.offset = OOT_OFF_PAL_MQ;
break;
case OOT_PAL_GC_DBG1:
@@ -179,6 +179,8 @@ WriteResult ExtractBaserom(const char* romPath) {
const std::vector lines = MoonUtils::split(read(MoonUtils::join("assets/extractor/filelists", version.listPath)), '\n');
+ std::vector decompressedData(1);
+
for (int i = 0; i < lines.size(); i++) {
FILE* outFile = fopen(MoonUtils::join("tmp/baserom", lines[i]).c_str(), "wb");
const int romOffset = version.offset + (DMA_ENTRY_SIZE * i);
@@ -196,10 +198,13 @@ WriteResult ExtractBaserom(const char* romPath) {
auto outData = new uint8_t[size];
memcpy(outData, romData + physStart, size);
+
if (compressed) {
- std::vector compressedData = yaz0_encode(outData, size);
- outData = compressedData.data();
- size = compressedData.size();
+ int decSize = virtEnd - virtStart;
+ decompressedData = std::vector(decSize);
+ yaz0_decode(outData, decompressedData.data(), decSize);
+ outData = decompressedData.data();
+ size = decSize;
}
fwrite(outData, sizeof(char), size, outFile);
diff --git a/OTRGui/src/impl/extractor/extractor.cpp b/OTRGui/src/impl/extractor/extractor.cpp
index ec435a9e4..35369cab5 100644
--- a/OTRGui/src/impl/extractor/extractor.cpp
+++ b/OTRGui/src/impl/extractor/extractor.cpp
@@ -5,6 +5,7 @@
#include "utils/mutils.h"
#include "ctpl/ctpl_stl.h"
#include
+#include
#ifdef _WIN32
#define PLATFORM Platforms::WINDOWS
@@ -22,6 +23,18 @@ bool isWindows() {
return (PLATFORM == Platforms::WINDOWS);
}
+std::string GetXMLVersion(RomVersion version)
+{
+ switch (version.crc)
+ {
+ case OOT_PAL_GC_DBG1: return "GC_NMQ_D";
+ case OOT_PAL_GC_DBG2: return "GC_MQ_D";
+ case OOT_PAL_GC: return "GC_NMQ_PAL_F";
+ }
+
+ return "ERROR";
+}
+
void BuildOTR(const std::string output) {
Util::copy("tmp/baserom/Audiobank", "Extract/Audiobank");
Util::copy("tmp/baserom/Audioseq", "Extract/Audioseq");
@@ -44,9 +57,9 @@ void BuildOTR(const std::string output) {
MoonUtils::copy("oot.otr", outputPath);
}
-void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPath) {
+void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPath, RomVersion version) {
std::string execStr = Util::format("assets/extractor/%s", isWindows() ? "ZAPD.exe" : "ZAPD.out");
- std::string args = Util::format(" e -eh -i %s -b tmp/baserom/ -o %s -osf %s -gsf 1 -rconf assets/extractor/Config.xml -se OTR %s", xmlPath.c_str(), outPath.c_str(), outSrcPath.c_str(), xmlPath.find("overlays") != std::string::npos ? "--static" : "");
+ std::string args = Util::format(" e -eh -i %s -b tmp/baserom/ -o %s -osf %s -gsf 1 -rconf assets/extractor/Config_%s.xml -se OTR %s", xmlPath.c_str(), outPath.c_str(), outSrcPath.c_str(), GetXMLVersion(version).c_str(), xmlPath.find("overlays") != std::string::npos ? "--static" : "");
ProcessResult result = NativeFS->LaunchProcess(execStr + args);
if (result.exitCode != 0) {
@@ -55,17 +68,20 @@ void ExtractFile(std::string xmlPath, std::string outPath, std::string outSrcPat
}
}
-void ExtractFunc(std::string fullPath) {
+void ExtractFunc(std::string fullPath, RomVersion version) {
std::vector path = Util::split(fullPath, Util::pathSeparator());
std::string outPath = Util::join(Util::join("assets/extractor/xmls/output", path[4]), Util::basename(fullPath));
Util::mkdir(outPath);
- ExtractFile(fullPath, outPath, outPath);
+ ExtractFile(fullPath, outPath, outPath, version);
setCurrentStep("Extracting: " + Util::basename(fullPath));
extractedResources++;
}
-void startWorker() {
- std::string path = "assets/extractor/xmls";
+void startWorker(RomVersion version) {
+ std::string path = "assets/extractor/xmls/";
+
+ path += GetXMLVersion(version);
+
std::vector files;
Util::dirscan(path, files);
std::vector xmlFiles;
@@ -78,10 +94,10 @@ void startWorker() {
for (auto& file : xmlFiles) {
if(single_thread) {
- ExtractFunc(file);
+ ExtractFunc(file, version);
} else {
- pool.push([file](int) {
- ExtractFunc(file);
+ pool.push([file, version](int) {
+ ExtractFunc(file, version);
});
}
}
diff --git a/OTRGui/src/impl/extractor/extractor.h b/OTRGui/src/impl/extractor/extractor.h
index 98dea147a..de48d7574 100644
--- a/OTRGui/src/impl/extractor/extractor.h
+++ b/OTRGui/src/impl/extractor/extractor.h
@@ -5,5 +5,7 @@ enum Platforms {
WINDOWS, LINUX
};
-void startWorker();
+struct RomVersion;
+
+void startWorker(RomVersion version);
void updateWorker(const std::string& output);
\ No newline at end of file
diff --git a/OTRGui/src/utils/mutils.cpp b/OTRGui/src/utils/mutils.cpp
index 770df8423..2a649452e 100644
--- a/OTRGui/src/utils/mutils.cpp
+++ b/OTRGui/src/utils/mutils.cpp
@@ -72,7 +72,11 @@ namespace MoonUtils {
vector result;
stringstream ss (s);
string item;
- while (getline(ss, item, delim)) {
+ while (getline(ss, item, delim))
+ {
+ if (item.at(item.size() - 1) == '\r')
+ item = item.substr(0, item.size() - 1);
+
result.push_back (item);
}
return result;
diff --git a/ZAPDTR/ZAPD/ZAPD.vcxproj b/ZAPDTR/ZAPD/ZAPD.vcxproj
index 95e89d8ff..e8aba5c2d 100644
--- a/ZAPDTR/ZAPD/ZAPD.vcxproj
+++ b/ZAPDTR/ZAPD/ZAPD.vcxproj
@@ -74,15 +74,29 @@
$(OutDir);$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\..\OTRExporter\packages\libpng-v142.1.6.37.2\build\native\lib\x64\v142\Debug\;$(ProjectDir)..\..\libultraship\libultraship\;$(LibraryPath)
$(ProjectDir)..\ZAPDUtils;$(ProjectDir)..\lib\tinyxml2;$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\lib\elfio;$(ProjectDir)..\lib\stb;$(ProjectDir);$(IncludePath)
+ MinimumRecommendedRules.ruleset
+
+
$(ProjectDir)..\ZAPDUtils;$(ProjectDir)..\lib\tinyxml2;$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\lib\elfio;$(ProjectDir)..\lib\stb;$(ProjectDir);$(IncludePath)
$(OutDir);$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\..\OTRExporter\packages\libpng-v142.1.6.37.2\build\native\lib\x64\v142\Debug\;$(ProjectDir)..\..\libultraship\libultraship\;$(LibraryPath)
false
+ MinimumRecommendedRules.ruleset
+
+
$(SolutionDir)ZAPD\lib\tinyxml2;$(SolutionDir)ZAPD\lib\libgfxd;$(SolutionDir)ZAPD\lib\elfio;$(SolutionDir)ZAPD\lib\stb;$(ProjectDir);$(IncludePath)
$(SolutionDir)ZAPD\lib\libgfxd;$(SolutionDir)x64\Debug;$(SolutionDir)packages\libpng.1.6.28.1\build\native\lib\x64\v140\dynamic\Debug;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
+
+
+ MinimumRecommendedRules.ruleset
+
+
@@ -334,6 +348,12 @@
+
+
+ {02d10590-9542-3f55-aaf8-6055677e2a2a}
+ false
+
+
diff --git a/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj b/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj
index dd49779dc..b74fe75f9 100644
--- a/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj
+++ b/ZAPDTR/ZAPDUtils/ZAPDUtils.vcxproj
@@ -72,15 +72,27 @@
true
+ MinimumRecommendedRules.ruleset
+
+
false
+ MinimumRecommendedRules.ruleset
+
+
true
+ MinimumRecommendedRules.ruleset
+
+
false
+ MinimumRecommendedRules.ruleset
+
+
@@ -174,6 +186,12 @@
+
+
+ {02d10590-9542-3f55-aaf8-6055677e2a2a}
+ false
+
+
diff --git a/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp b/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp
index 3f7bd7f9b..5739774ee 100644
--- a/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp
+++ b/libultraship/libultraship/Lib/Fast3D/gfx_pc.cpp
@@ -2381,12 +2381,14 @@ static void gfx_run_dl(Gfx* cmd) {
cmd++;
uint64_t hash = ((uint64_t)cmd->words.w0 << 32) + (uint64_t)cmd->words.w1;
ResourceMgr_GetNameByCRC(hash, fileName);
+
+
+#if _DEBUG && 0
char* tex = ResourceMgr_LoadTexByCRC(hash);
-
-
-#if _DEBUG
- //ResourceMgr_GetNameByCRC(hash, fileName);
- //printf("G_SETTIMG_OTR: %s, %08X\n", fileName, hash);
+ ResourceMgr_GetNameByCRC(hash, fileName);
+ printf("G_SETTIMG_OTR: %s, %08X\n", fileName, hash);
+#else
+ char* tex = NULL;
#endif
if (addr != NULL)
diff --git a/libultraship/libultraship/libultraship.vcxproj b/libultraship/libultraship/libultraship.vcxproj
index 8443b6b11..625c5142c 100644
--- a/libultraship/libultraship/libultraship.vcxproj
+++ b/libultraship/libultraship/libultraship.vcxproj
@@ -101,31 +101,49 @@
true
$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\libjpeg\include;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath)
$(ProjectDir)Lib\SDL\lib\x86;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
true
$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\libjpeg\include;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath)
$(ProjectDir)Lib\SDL\lib\x86;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
false
$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath)
$(ProjectDir)Lib\SDL\lib\x86;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
true
$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath)
$(ProjectDir)Lib\SDL\lib\x64;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
true
$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath)
$(ProjectDir)Lib\SDL\lib\x64;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
false
$(ProjectDir)..\..\ZAPDTR\ZAPDUtils;$(ProjectDir)Lib\Fast3D\U64;$(ProjectDir)Lib\spdlog\include;$(ProjectDir)Lib\SDL;$(ProjectDir)Lib\GLEW;$(IncludePath)
$(ProjectDir)Lib\SDL\lib\x64;$(LibraryPath)
+ MinimumRecommendedRules.ruleset
+
+
@@ -416,6 +434,12 @@
+
+
+ {02d10590-9542-3f55-aaf8-6055677e2a2a}
+ false
+
+
diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Elf_Msg.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Elf_Msg.xml
deleted file mode 100644
index 846aaeb07..000000000
--- a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Elf_Msg.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Elf_Msg2.xml b/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Elf_Msg2.xml
deleted file mode 100644
index 25c088d61..000000000
--- a/soh/assets/xml/GC_NMQ_PAL_F/overlays/ovl_Elf_Msg2.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa2.xml b/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa2.xml
deleted file mode 100644
index 4cc41acec..000000000
--- a/soh/assets/xml/GC_NMQ_PAL_F/scenes/indoors/hairal_niwa2.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml
index c709b7ff9..395a6b7bd 100644
--- a/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml
+++ b/soh/assets/xml/GC_NMQ_PAL_F/text/staff_message_data_static.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file