diff --git a/assets/xml/code/fbdemo_circle.xml b/assets/xml/code/fbdemo_circle.xml index 1aa2de764a..530506369c 100644 --- a/assets/xml/code/fbdemo_circle.xml +++ b/assets/xml/code/fbdemo_circle.xml @@ -1,13 +1,13 @@ - - - - - - + + + + + + - + diff --git a/assets/xml/code/fbdemo_triforce.xml b/assets/xml/code/fbdemo_triforce.xml index a20e07075f..613f7995d2 100644 --- a/assets/xml/code/fbdemo_triforce.xml +++ b/assets/xml/code/fbdemo_triforce.xml @@ -1,7 +1,7 @@ - - - + + + diff --git a/assets/xml/code/fbdemo_wipe1.xml b/assets/xml/code/fbdemo_wipe1.xml index f459c9f8ec..74f129776b 100644 --- a/assets/xml/code/fbdemo_wipe1.xml +++ b/assets/xml/code/fbdemo_wipe1.xml @@ -1,10 +1,10 @@ - - + + - + - + diff --git a/assets/xml/overlays/ovl_Arrow_Fire.xml b/assets/xml/overlays/ovl_Arrow_Fire.xml index 621df71cea..061e11f84b 100644 --- a/assets/xml/overlays/ovl_Arrow_Fire.xml +++ b/assets/xml/overlays/ovl_Arrow_Fire.xml @@ -1,11 +1,11 @@ - - - - + + + + - - + + diff --git a/assets/xml/overlays/ovl_Arrow_Ice.xml b/assets/xml/overlays/ovl_Arrow_Ice.xml index e216ff02a7..d2a0df3be8 100644 --- a/assets/xml/overlays/ovl_Arrow_Ice.xml +++ b/assets/xml/overlays/ovl_Arrow_Ice.xml @@ -1,11 +1,11 @@ - - - - + + + + - - + + diff --git a/assets/xml/overlays/ovl_Arrow_Light.xml b/assets/xml/overlays/ovl_Arrow_Light.xml index e9827c2c95..1f449dd7b9 100644 --- a/assets/xml/overlays/ovl_Arrow_Light.xml +++ b/assets/xml/overlays/ovl_Arrow_Light.xml @@ -1,11 +1,11 @@ - - - - + + + + - - + + diff --git a/assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml b/assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml index 6b9a9a7441..7b294e65b2 100644 --- a/assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml +++ b/assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml @@ -1,29 +1,29 @@ - - + + - + - - + + - + - + - + - + - - + + - + - + diff --git a/assets/xml/overlays/ovl_Bg_Jya_Cobra.xml b/assets/xml/overlays/ovl_Bg_Jya_Cobra.xml index 874bb1ec67..52f65678c5 100644 --- a/assets/xml/overlays/ovl_Bg_Jya_Cobra.xml +++ b/assets/xml/overlays/ovl_Bg_Jya_Cobra.xml @@ -1,10 +1,10 @@ - - + + - + diff --git a/assets/xml/overlays/ovl_Boss_Dodongo.xml b/assets/xml/overlays/ovl_Boss_Dodongo.xml index f2ee5b7b8c..78d2f8e5b3 100644 --- a/assets/xml/overlays/ovl_Boss_Dodongo.xml +++ b/assets/xml/overlays/ovl_Boss_Dodongo.xml @@ -1,6 +1,6 @@ - - - + + + diff --git a/assets/xml/overlays/ovl_Boss_Ganon.xml b/assets/xml/overlays/ovl_Boss_Ganon.xml index cdb87e9c16..83a19c9b59 100644 --- a/assets/xml/overlays/ovl_Boss_Ganon.xml +++ b/assets/xml/overlays/ovl_Boss_Ganon.xml @@ -1,53 +1,53 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/overlays/ovl_Boss_Ganon2.xml b/assets/xml/overlays/ovl_Boss_Ganon2.xml index 3d5bfdfba0..4b1879a17b 100644 --- a/assets/xml/overlays/ovl_Boss_Ganon2.xml +++ b/assets/xml/overlays/ovl_Boss_Ganon2.xml @@ -1,29 +1,29 @@ - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/assets/xml/overlays/ovl_Boss_Sst.xml b/assets/xml/overlays/ovl_Boss_Sst.xml index e65a58ccd1..35584224de 100644 --- a/assets/xml/overlays/ovl_Boss_Sst.xml +++ b/assets/xml/overlays/ovl_Boss_Sst.xml @@ -1,8 +1,8 @@ - - - - - + + + + + diff --git a/assets/xml/overlays/ovl_Demo_Shd.xml b/assets/xml/overlays/ovl_Demo_Shd.xml index 2ac9a9b484..967f383ec3 100644 --- a/assets/xml/overlays/ovl_Demo_Shd.xml +++ b/assets/xml/overlays/ovl_Demo_Shd.xml @@ -1,8 +1,8 @@ - + - - - + + + diff --git a/assets/xml/overlays/ovl_Effect_Ss_Fhg_Flash.xml b/assets/xml/overlays/ovl_Effect_Ss_Fhg_Flash.xml index d2de328dad..b8c0613ee4 100644 --- a/assets/xml/overlays/ovl_Effect_Ss_Fhg_Flash.xml +++ b/assets/xml/overlays/ovl_Effect_Ss_Fhg_Flash.xml @@ -1,9 +1,9 @@ - - + + - - + + diff --git a/assets/xml/overlays/ovl_Elf_Msg.xml b/assets/xml/overlays/ovl_Elf_Msg.xml index 82cd468a3e..61e28d31b7 100644 --- a/assets/xml/overlays/ovl_Elf_Msg.xml +++ b/assets/xml/overlays/ovl_Elf_Msg.xml @@ -1,16 +1,16 @@ - + - + - + - + - + - + diff --git a/assets/xml/overlays/ovl_Elf_Msg2.xml b/assets/xml/overlays/ovl_Elf_Msg2.xml index fb2199424e..a0ea055e26 100644 --- a/assets/xml/overlays/ovl_Elf_Msg2.xml +++ b/assets/xml/overlays/ovl_Elf_Msg2.xml @@ -1,11 +1,11 @@ - + - + - + - + diff --git a/assets/xml/overlays/ovl_En_Bili.xml b/assets/xml/overlays/ovl_En_Bili.xml index 35c3fa301e..ed2fda6cac 100644 --- a/assets/xml/overlays/ovl_En_Bili.xml +++ b/assets/xml/overlays/ovl_En_Bili.xml @@ -1,7 +1,7 @@ - - - + + + diff --git a/assets/xml/overlays/ovl_En_Clear_Tag.xml b/assets/xml/overlays/ovl_En_Clear_Tag.xml index cd67b1f486..05c9c29865 100644 --- a/assets/xml/overlays/ovl_En_Clear_Tag.xml +++ b/assets/xml/overlays/ovl_En_Clear_Tag.xml @@ -1,14 +1,14 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/assets/xml/overlays/ovl_En_Ganon_Mant.xml b/assets/xml/overlays/ovl_En_Ganon_Mant.xml index 900ec46ac8..a9242f1781 100644 --- a/assets/xml/overlays/ovl_En_Ganon_Mant.xml +++ b/assets/xml/overlays/ovl_En_Ganon_Mant.xml @@ -1,21 +1,21 @@ - - + + - + - + - + - + - + - + diff --git a/assets/xml/overlays/ovl_En_Ganon_Organ.xml b/assets/xml/overlays/ovl_En_Ganon_Organ.xml index 7d4f8bc785..05257fb6f6 100644 --- a/assets/xml/overlays/ovl_En_Ganon_Organ.xml +++ b/assets/xml/overlays/ovl_En_Ganon_Organ.xml @@ -1,19 +1,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + diff --git a/assets/xml/overlays/ovl_En_Holl.xml b/assets/xml/overlays/ovl_En_Holl.xml index 6fa7d36433..b219524d8a 100644 --- a/assets/xml/overlays/ovl_En_Holl.xml +++ b/assets/xml/overlays/ovl_En_Holl.xml @@ -1,8 +1,8 @@ - - + + - + diff --git a/assets/xml/overlays/ovl_En_Jsjutan.xml b/assets/xml/overlays/ovl_En_Jsjutan.xml index 44229419cd..b3b012b1f5 100644 --- a/assets/xml/overlays/ovl_En_Jsjutan.xml +++ b/assets/xml/overlays/ovl_En_Jsjutan.xml @@ -1,38 +1,38 @@ - + - + - + - + - + - + - + - + - + - + - + diff --git a/assets/xml/overlays/ovl_En_Kanban.xml b/assets/xml/overlays/ovl_En_Kanban.xml index 546de14d0c..d8f50f425a 100644 --- a/assets/xml/overlays/ovl_En_Kanban.xml +++ b/assets/xml/overlays/ovl_En_Kanban.xml @@ -1,8 +1,8 @@ - - + + - + diff --git a/assets/xml/overlays/ovl_En_Sda.xml b/assets/xml/overlays/ovl_En_Sda.xml index c4293e92bd..5652ce7e68 100644 --- a/assets/xml/overlays/ovl_En_Sda.xml +++ b/assets/xml/overlays/ovl_En_Sda.xml @@ -1,9 +1,9 @@ - - + + - - + + diff --git a/assets/xml/overlays/ovl_En_Ssh.xml b/assets/xml/overlays/ovl_En_Ssh.xml index 5467eed62d..23e2aa81cf 100644 --- a/assets/xml/overlays/ovl_En_Ssh.xml +++ b/assets/xml/overlays/ovl_En_Ssh.xml @@ -1,8 +1,8 @@ - - + + - + diff --git a/assets/xml/overlays/ovl_En_St.xml b/assets/xml/overlays/ovl_En_St.xml index 0252a1387a..bfa7505913 100644 --- a/assets/xml/overlays/ovl_En_St.xml +++ b/assets/xml/overlays/ovl_En_St.xml @@ -1,8 +1,8 @@ - - + + - + diff --git a/assets/xml/overlays/ovl_En_Sth.xml b/assets/xml/overlays/ovl_En_Sth.xml index ccc45fb1c9..46a30a7185 100644 --- a/assets/xml/overlays/ovl_En_Sth.xml +++ b/assets/xml/overlays/ovl_En_Sth.xml @@ -1,15 +1,15 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/assets/xml/overlays/ovl_End_Title.xml b/assets/xml/overlays/ovl_End_Title.xml index 841d45f6dd..53d085681d 100644 --- a/assets/xml/overlays/ovl_End_Title.xml +++ b/assets/xml/overlays/ovl_End_Title.xml @@ -1,17 +1,17 @@ - - - - - - - + + + + + + + - + - + - + diff --git a/assets/xml/overlays/ovl_File_Choose.xml b/assets/xml/overlays/ovl_File_Choose.xml deleted file mode 100644 index 8bebff602a..0000000000 --- a/assets/xml/overlays/ovl_File_Choose.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/xml/overlays/ovl_Magic_Dark.xml b/assets/xml/overlays/ovl_Magic_Dark.xml index 874150ab35..5c8b75c1fb 100644 --- a/assets/xml/overlays/ovl_Magic_Dark.xml +++ b/assets/xml/overlays/ovl_Magic_Dark.xml @@ -1,13 +1,13 @@ - - + + - + - - + + diff --git a/assets/xml/overlays/ovl_Magic_Fire.xml b/assets/xml/overlays/ovl_Magic_Fire.xml index 696bdc0dc2..81de7a989f 100644 --- a/assets/xml/overlays/ovl_Magic_Fire.xml +++ b/assets/xml/overlays/ovl_Magic_Fire.xml @@ -1,10 +1,10 @@ - - - + + + - - + + diff --git a/assets/xml/overlays/ovl_Magic_Wind.xml b/assets/xml/overlays/ovl_Magic_Wind.xml index 8fc20ce1ba..7da59209b8 100644 --- a/assets/xml/overlays/ovl_Magic_Wind.xml +++ b/assets/xml/overlays/ovl_Magic_Wind.xml @@ -1,15 +1,15 @@ - - - - - - - + + + + + + + - - - + + + diff --git a/assets/xml/overlays/ovl_Oceff_Spot.xml b/assets/xml/overlays/ovl_Oceff_Spot.xml index 9a53952f03..6c81549060 100644 --- a/assets/xml/overlays/ovl_Oceff_Spot.xml +++ b/assets/xml/overlays/ovl_Oceff_Spot.xml @@ -1,10 +1,10 @@ - - - + + + - - + + diff --git a/assets/xml/overlays/ovl_Oceff_Storm.xml b/assets/xml/overlays/ovl_Oceff_Storm.xml index 5893b6f8e8..d8217a6157 100644 --- a/assets/xml/overlays/ovl_Oceff_Storm.xml +++ b/assets/xml/overlays/ovl_Oceff_Storm.xml @@ -1,12 +1,12 @@ - - - - + + + + - - + + diff --git a/assets/xml/overlays/ovl_Oceff_Wipe.xml b/assets/xml/overlays/ovl_Oceff_Wipe.xml index 52e29f1bc3..64b3f1332e 100644 --- a/assets/xml/overlays/ovl_Oceff_Wipe.xml +++ b/assets/xml/overlays/ovl_Oceff_Wipe.xml @@ -1,10 +1,10 @@ - - - + + + - - + + diff --git a/assets/xml/overlays/ovl_Oceff_Wipe2.xml b/assets/xml/overlays/ovl_Oceff_Wipe2.xml index b42c72a66f..0166d1909f 100644 --- a/assets/xml/overlays/ovl_Oceff_Wipe2.xml +++ b/assets/xml/overlays/ovl_Oceff_Wipe2.xml @@ -1,11 +1,11 @@ - - - - + + + + - - + + diff --git a/assets/xml/overlays/ovl_Oceff_Wipe3.xml b/assets/xml/overlays/ovl_Oceff_Wipe3.xml index 11f2788669..d797d1675f 100644 --- a/assets/xml/overlays/ovl_Oceff_Wipe3.xml +++ b/assets/xml/overlays/ovl_Oceff_Wipe3.xml @@ -1,10 +1,10 @@ - - - + + + - - + + diff --git a/assets/xml/overlays/ovl_Oceff_Wipe4.xml b/assets/xml/overlays/ovl_Oceff_Wipe4.xml index b2be9073a4..086491fa3a 100644 --- a/assets/xml/overlays/ovl_Oceff_Wipe4.xml +++ b/assets/xml/overlays/ovl_Oceff_Wipe4.xml @@ -1,12 +1,12 @@ - - - + + + - - - + + + diff --git a/assets/xml/overlays/ovl_file_choose.xml b/assets/xml/overlays/ovl_file_choose.xml new file mode 100644 index 0000000000..aa9dcbb84b --- /dev/null +++ b/assets/xml/overlays/ovl_file_choose.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/baseroms/gc-eu-mq-dbg/config.yml b/baseroms/gc-eu-mq-dbg/config.yml index dd6123e33a..6971ae3925 100644 --- a/baseroms/gc-eu-mq-dbg/config.yml +++ b/baseroms/gc-eu-mq-dbg/config.yml @@ -6,3 +6,634 @@ variables: sFraMessageEntryTable: 0x80151658 sStaffMessageEntryTable: 0x80153768 sNesMessageEntryTablePtr: 0x801538F0 +assets: +- xml_path: assets/xml/code/fbdemo_circle.xml + start_offset: 0x10ED48 + end_offset: 0x10FF68 +- xml_path: assets/xml/code/fbdemo_triforce.xml + start_offset: 0x10E1D0 + end_offset: 0x10E2A0 +- xml_path: assets/xml/code/fbdemo_wipe1.xml + start_offset: 0x10E2A0 + end_offset: 0x10EC30 +- xml_path: assets/xml/misc/link_animetion.xml +- xml_path: assets/xml/misc/z_select_static.xml +- xml_path: assets/xml/objects/gameplay_dangeon_keep.xml +- xml_path: assets/xml/objects/gameplay_field_keep.xml +- xml_path: assets/xml/objects/gameplay_keep.xml +- xml_path: assets/xml/objects/object_ahg.xml +- xml_path: assets/xml/objects/object_am.xml +- xml_path: assets/xml/objects/object_ane.xml +- xml_path: assets/xml/objects/object_ani.xml +- xml_path: assets/xml/objects/object_anubice.xml +- xml_path: assets/xml/objects/object_aob.xml +- xml_path: assets/xml/objects/object_b_heart.xml +- xml_path: assets/xml/objects/object_Bb.xml +- xml_path: assets/xml/objects/object_bba.xml +- xml_path: assets/xml/objects/object_bdan_objects.xml +- xml_path: assets/xml/objects/object_bdoor.xml +- xml_path: assets/xml/objects/object_bg.xml +- xml_path: assets/xml/objects/object_bigokuta.xml +- xml_path: assets/xml/objects/object_bird.xml +- xml_path: assets/xml/objects/object_bji.xml +- xml_path: assets/xml/objects/object_bl.xml +- xml_path: assets/xml/objects/object_blkobj.xml +- xml_path: assets/xml/objects/object_bob.xml +- xml_path: assets/xml/objects/object_boj.xml +- xml_path: assets/xml/objects/object_bombf.xml +- xml_path: assets/xml/objects/object_bombiwa.xml +- xml_path: assets/xml/objects/object_bowl.xml +- xml_path: assets/xml/objects/object_box.xml +- xml_path: assets/xml/objects/object_brob.xml +- xml_path: assets/xml/objects/object_bubble.xml +- xml_path: assets/xml/objects/object_bv.xml +- xml_path: assets/xml/objects/object_bw.xml +- xml_path: assets/xml/objects/object_bwall.xml +- xml_path: assets/xml/objects/object_bxa.xml +- xml_path: assets/xml/objects/object_cne.xml +- xml_path: assets/xml/objects/object_cob.xml +- xml_path: assets/xml/objects/object_cow.xml +- xml_path: assets/xml/objects/object_crow.xml +- xml_path: assets/xml/objects/object_cs.xml +- xml_path: assets/xml/objects/object_d_elevator.xml +- xml_path: assets/xml/objects/object_d_hsblock.xml +- xml_path: assets/xml/objects/object_d_lift.xml +- xml_path: assets/xml/objects/object_daiku.xml +- xml_path: assets/xml/objects/object_ddan_objects.xml +- xml_path: assets/xml/objects/object_dekubaba.xml +- xml_path: assets/xml/objects/object_dekujr.xml +- xml_path: assets/xml/objects/object_dekunuts.xml +- xml_path: assets/xml/objects/object_demo_6k.xml +- xml_path: assets/xml/objects/object_demo_kekkai.xml +- xml_path: assets/xml/objects/object_demo_tre_lgt.xml +- xml_path: assets/xml/objects/object_dh.xml +- xml_path: assets/xml/objects/object_dnk.xml +- xml_path: assets/xml/objects/object_dns.xml +- xml_path: assets/xml/objects/object_dodojr.xml +- xml_path: assets/xml/objects/object_dodongo.xml +- xml_path: assets/xml/objects/object_dog.xml +- xml_path: assets/xml/objects/object_door_gerudo.xml +- xml_path: assets/xml/objects/object_door_killer.xml +- xml_path: assets/xml/objects/object_ds.xml +- xml_path: assets/xml/objects/object_ds2.xml +- xml_path: assets/xml/objects/object_du.xml +- xml_path: assets/xml/objects/object_dy_obj.xml +- xml_path: assets/xml/objects/object_ec.xml +- xml_path: assets/xml/objects/object_efc_crystal_light.xml +- xml_path: assets/xml/objects/object_efc_doughnut.xml +- xml_path: assets/xml/objects/object_efc_erupc.xml +- xml_path: assets/xml/objects/object_efc_fire_ball.xml +- xml_path: assets/xml/objects/object_efc_flash.xml +- xml_path: assets/xml/objects/object_efc_lgt_shower.xml +- xml_path: assets/xml/objects/object_efc_star_field.xml +- xml_path: assets/xml/objects/object_efc_tw.xml +- xml_path: assets/xml/objects/object_ei.xml +- xml_path: assets/xml/objects/object_fa.xml +- xml_path: assets/xml/objects/object_fd.xml +- xml_path: assets/xml/objects/object_fd2.xml +- xml_path: assets/xml/objects/object_fhg.xml +- xml_path: assets/xml/objects/object_fire.xml +- xml_path: assets/xml/objects/object_firefly.xml +- xml_path: assets/xml/objects/object_fish.xml +- xml_path: assets/xml/objects/object_fr.xml +- xml_path: assets/xml/objects/object_fu.xml +- xml_path: assets/xml/objects/object_fw.xml +- xml_path: assets/xml/objects/object_fz.xml +- xml_path: assets/xml/objects/object_ganon.xml +- xml_path: assets/xml/objects/object_ganon2.xml +- xml_path: assets/xml/objects/object_ganon_anime1.xml +- xml_path: assets/xml/objects/object_ganon_anime2.xml +- xml_path: assets/xml/objects/object_ganon_anime3.xml +- xml_path: assets/xml/objects/object_ganon_objects.xml +- xml_path: assets/xml/objects/object_ge1.xml +- xml_path: assets/xml/objects/object_geff.xml +- xml_path: assets/xml/objects/object_geldb.xml +- xml_path: assets/xml/objects/object_gi_arrow.xml +- xml_path: assets/xml/objects/object_gi_arrowcase.xml +- xml_path: assets/xml/objects/object_gi_bean.xml +- xml_path: assets/xml/objects/object_gi_bomb_1.xml +- xml_path: assets/xml/objects/object_gi_bomb_2.xml +- xml_path: assets/xml/objects/object_gi_bombpouch.xml +- xml_path: assets/xml/objects/object_gi_boomerang.xml +- xml_path: assets/xml/objects/object_gi_boots_2.xml +- xml_path: assets/xml/objects/object_gi_bosskey.xml +- xml_path: assets/xml/objects/object_gi_bottle.xml +- xml_path: assets/xml/objects/object_gi_bottle_letter.xml +- xml_path: assets/xml/objects/object_gi_bow.xml +- xml_path: assets/xml/objects/object_gi_bracelet.xml +- xml_path: assets/xml/objects/object_gi_brokensword.xml +- xml_path: assets/xml/objects/object_gi_butterfly.xml +- xml_path: assets/xml/objects/object_gi_clothes.xml +- xml_path: assets/xml/objects/object_gi_coin.xml +- xml_path: assets/xml/objects/object_gi_compass.xml +- xml_path: assets/xml/objects/object_gi_dekupouch.xml +- xml_path: assets/xml/objects/object_gi_egg.xml +- xml_path: assets/xml/objects/object_gi_eye_lotion.xml +- xml_path: assets/xml/objects/object_gi_fire.xml +- xml_path: assets/xml/objects/object_gi_fish.xml +- xml_path: assets/xml/objects/object_gi_frog.xml +- xml_path: assets/xml/objects/object_gi_gerudo.xml +- xml_path: assets/xml/objects/object_gi_gerudomask.xml +- xml_path: assets/xml/objects/object_gi_ghost.xml +- xml_path: assets/xml/objects/object_gi_glasses.xml +- xml_path: assets/xml/objects/object_gi_gloves.xml +- xml_path: assets/xml/objects/object_gi_goddess.xml +- xml_path: assets/xml/objects/object_gi_golonmask.xml +- xml_path: assets/xml/objects/object_gi_grass.xml +- xml_path: assets/xml/objects/object_gi_hammer.xml +- xml_path: assets/xml/objects/object_gi_heart.xml +- xml_path: assets/xml/objects/object_gi_hearts.xml +- xml_path: assets/xml/objects/object_gi_hookshot.xml +- xml_path: assets/xml/objects/object_gi_hoverboots.xml +- xml_path: assets/xml/objects/object_gi_insect.xml +- xml_path: assets/xml/objects/object_gi_jewel.xml +- xml_path: assets/xml/objects/object_gi_key.xml +- xml_path: assets/xml/objects/object_gi_ki_tan_mask.xml +- xml_path: assets/xml/objects/object_gi_letter.xml +- xml_path: assets/xml/objects/object_gi_liquid.xml +- xml_path: assets/xml/objects/object_gi_longsword.xml +- xml_path: assets/xml/objects/object_gi_m_arrow.xml +- xml_path: assets/xml/objects/object_gi_magicpot.xml +- xml_path: assets/xml/objects/object_gi_map.xml +- xml_path: assets/xml/objects/object_gi_medal.xml +- xml_path: assets/xml/objects/object_gi_melody.xml +- xml_path: assets/xml/objects/object_gi_milk.xml +- xml_path: assets/xml/objects/object_gi_mushroom.xml +- xml_path: assets/xml/objects/object_gi_niwatori.xml +- xml_path: assets/xml/objects/object_gi_nuts.xml +- xml_path: assets/xml/objects/object_gi_ocarina.xml +- xml_path: assets/xml/objects/object_gi_ocarina_0.xml +- xml_path: assets/xml/objects/object_gi_pachinko.xml +- xml_path: assets/xml/objects/object_gi_powder.xml +- xml_path: assets/xml/objects/object_gi_prescription.xml +- xml_path: assets/xml/objects/object_gi_purse.xml +- xml_path: assets/xml/objects/object_gi_rabit_mask.xml +- xml_path: assets/xml/objects/object_gi_redead_mask.xml +- xml_path: assets/xml/objects/object_gi_rupy.xml +- xml_path: assets/xml/objects/object_gi_saw.xml +- xml_path: assets/xml/objects/object_gi_scale.xml +- xml_path: assets/xml/objects/object_gi_seed.xml +- xml_path: assets/xml/objects/object_gi_shield_1.xml +- xml_path: assets/xml/objects/object_gi_shield_2.xml +- xml_path: assets/xml/objects/object_gi_shield_3.xml +- xml_path: assets/xml/objects/object_gi_skj_mask.xml +- xml_path: assets/xml/objects/object_gi_soldout.xml +- xml_path: assets/xml/objects/object_gi_soul.xml +- xml_path: assets/xml/objects/object_gi_stick.xml +- xml_path: assets/xml/objects/object_gi_sutaru.xml +- xml_path: assets/xml/objects/object_gi_sword_1.xml +- xml_path: assets/xml/objects/object_gi_ticketstone.xml +- xml_path: assets/xml/objects/object_gi_truth_mask.xml +- xml_path: assets/xml/objects/object_gi_zoramask.xml +- xml_path: assets/xml/objects/object_gj.xml +- xml_path: assets/xml/objects/object_gjyo_objects.xml +- xml_path: assets/xml/objects/object_gla.xml +- xml_path: assets/xml/objects/object_gm.xml +- xml_path: assets/xml/objects/object_gnd.xml +- xml_path: assets/xml/objects/object_gnd_magic.xml +- xml_path: assets/xml/objects/object_gndd.xml +- xml_path: assets/xml/objects/object_god_lgt.xml +- xml_path: assets/xml/objects/object_gol.xml +- xml_path: assets/xml/objects/object_goma.xml +- xml_path: assets/xml/objects/object_goroiwa.xml +- xml_path: assets/xml/objects/object_gr.xml +- xml_path: assets/xml/objects/object_gs.xml +- xml_path: assets/xml/objects/object_gt.xml +- xml_path: assets/xml/objects/object_haka.xml +- xml_path: assets/xml/objects/object_haka_door.xml +- xml_path: assets/xml/objects/object_haka_objects.xml +- xml_path: assets/xml/objects/object_hakach_objects.xml +- xml_path: assets/xml/objects/object_hata.xml +- xml_path: assets/xml/objects/object_heavy_object.xml +- xml_path: assets/xml/objects/object_hidan_objects.xml +- xml_path: assets/xml/objects/object_hintnuts.xml +- xml_path: assets/xml/objects/object_hni.xml +- xml_path: assets/xml/objects/object_horse.xml +- xml_path: assets/xml/objects/object_horse_ganon.xml +- xml_path: assets/xml/objects/object_horse_link_child.xml +- xml_path: assets/xml/objects/object_horse_normal.xml +- xml_path: assets/xml/objects/object_horse_zelda.xml +- xml_path: assets/xml/objects/object_hs.xml +- xml_path: assets/xml/objects/object_human.xml +- xml_path: assets/xml/objects/object_ice_objects.xml +- xml_path: assets/xml/objects/object_ik.xml +- xml_path: assets/xml/objects/object_im.xml +- xml_path: assets/xml/objects/object_in.xml +- xml_path: assets/xml/objects/object_ingate.xml +- xml_path: assets/xml/objects/object_jj.xml +- xml_path: assets/xml/objects/object_js.xml +- xml_path: assets/xml/objects/object_jya_door.xml +- xml_path: assets/xml/objects/object_jya_iron.xml +- xml_path: assets/xml/objects/object_jya_obj.xml +- xml_path: assets/xml/objects/object_ka.xml +- xml_path: assets/xml/objects/object_kanban.xml +- xml_path: assets/xml/objects/object_kibako2.xml +- xml_path: assets/xml/objects/object_kingdodongo.xml +- xml_path: assets/xml/objects/object_km1.xml +- xml_path: assets/xml/objects/object_kusa.xml +- xml_path: assets/xml/objects/object_kw1.xml +- xml_path: assets/xml/objects/object_kz.xml +- xml_path: assets/xml/objects/object_light_ring.xml +- xml_path: assets/xml/objects/object_lightbox.xml +- xml_path: assets/xml/objects/object_lightswitch.xml +- xml_path: assets/xml/objects/object_link_boy.xml +- xml_path: assets/xml/objects/object_link_child.xml +- xml_path: assets/xml/objects/object_ma1.xml +- xml_path: assets/xml/objects/object_ma2.xml +- xml_path: assets/xml/objects/object_mag.xml +- xml_path: assets/xml/objects/object_mamenoki.xml +- xml_path: assets/xml/objects/object_mastergolon.xml +- xml_path: assets/xml/objects/object_masterkokiri.xml +- xml_path: assets/xml/objects/object_masterkokirihead.xml +- xml_path: assets/xml/objects/object_masterzoora.xml +- xml_path: assets/xml/objects/object_mb.xml +- xml_path: assets/xml/objects/object_md.xml +- xml_path: assets/xml/objects/object_medal.xml +- xml_path: assets/xml/objects/object_menkuri_objects.xml +- xml_path: assets/xml/objects/object_mir_ray.xml +- xml_path: assets/xml/objects/object_mizu_objects.xml +- xml_path: assets/xml/objects/object_mjin.xml +- xml_path: assets/xml/objects/object_mjin_dark.xml +- xml_path: assets/xml/objects/object_mjin_flame.xml +- xml_path: assets/xml/objects/object_mjin_flash.xml +- xml_path: assets/xml/objects/object_mjin_ice.xml +- xml_path: assets/xml/objects/object_mjin_oka.xml +- xml_path: assets/xml/objects/object_mjin_soul.xml +- xml_path: assets/xml/objects/object_mjin_wind.xml +- xml_path: assets/xml/objects/object_mk.xml +- xml_path: assets/xml/objects/object_mm.xml +- xml_path: assets/xml/objects/object_mo.xml +- xml_path: assets/xml/objects/object_mori_hineri1.xml +- xml_path: assets/xml/objects/object_mori_hineri1a.xml +- xml_path: assets/xml/objects/object_mori_hineri2.xml +- xml_path: assets/xml/objects/object_mori_hineri2a.xml +- xml_path: assets/xml/objects/object_mori_objects.xml +- xml_path: assets/xml/objects/object_mori_tex.xml +- xml_path: assets/xml/objects/object_ms.xml +- xml_path: assets/xml/objects/object_mu.xml +- xml_path: assets/xml/objects/object_nb.xml +- xml_path: assets/xml/objects/object_niw.xml +- xml_path: assets/xml/objects/object_nwc.xml +- xml_path: assets/xml/objects/object_ny.xml +- xml_path: assets/xml/objects/object_o_anime.xml +- xml_path: assets/xml/objects/object_oA1.xml +- xml_path: assets/xml/objects/object_oA2.xml +- xml_path: assets/xml/objects/object_oA3.xml +- xml_path: assets/xml/objects/object_oA4.xml +- xml_path: assets/xml/objects/object_oA5.xml +- xml_path: assets/xml/objects/object_oA6.xml +- xml_path: assets/xml/objects/object_oA7.xml +- xml_path: assets/xml/objects/object_oA8.xml +- xml_path: assets/xml/objects/object_oA9.xml +- xml_path: assets/xml/objects/object_oA10.xml +- xml_path: assets/xml/objects/object_oA11.xml +- xml_path: assets/xml/objects/object_oB1.xml +- xml_path: assets/xml/objects/object_oB2.xml +- xml_path: assets/xml/objects/object_oB3.xml +- xml_path: assets/xml/objects/object_oB4.xml +- xml_path: assets/xml/objects/object_oE1.xml +- xml_path: assets/xml/objects/object_oE1s.xml +- xml_path: assets/xml/objects/object_oE2.xml +- xml_path: assets/xml/objects/object_oE3.xml +- xml_path: assets/xml/objects/object_oE4.xml +- xml_path: assets/xml/objects/object_oE4s.xml +- xml_path: assets/xml/objects/object_oE5.xml +- xml_path: assets/xml/objects/object_oE6.xml +- xml_path: assets/xml/objects/object_oE7.xml +- xml_path: assets/xml/objects/object_oE8.xml +- xml_path: assets/xml/objects/object_oE9.xml +- xml_path: assets/xml/objects/object_oE10.xml +- xml_path: assets/xml/objects/object_oE11.xml +- xml_path: assets/xml/objects/object_oE12.xml +- xml_path: assets/xml/objects/object_oE_anime.xml +- xml_path: assets/xml/objects/object_oF1d_map.xml +- xml_path: assets/xml/objects/object_oF1s.xml +- xml_path: assets/xml/objects/object_okuta.xml +- xml_path: assets/xml/objects/object_opening_demo1.xml +- xml_path: assets/xml/objects/object_os.xml +- xml_path: assets/xml/objects/object_os_anime.xml +- xml_path: assets/xml/objects/object_ossan.xml +- xml_path: assets/xml/objects/object_ouke_haka.xml +- xml_path: assets/xml/objects/object_owl.xml +- xml_path: assets/xml/objects/object_peehat.xml +- xml_path: assets/xml/objects/object_po_composer.xml +- xml_path: assets/xml/objects/object_po_field.xml +- xml_path: assets/xml/objects/object_po_sisters.xml +- xml_path: assets/xml/objects/object_poh.xml +- xml_path: assets/xml/objects/object_ps.xml +- xml_path: assets/xml/objects/object_pu_box.xml +- xml_path: assets/xml/objects/object_rd.xml +- xml_path: assets/xml/objects/object_reeba.xml +- xml_path: assets/xml/objects/object_relay_objects.xml +- xml_path: assets/xml/objects/object_rl.xml +- xml_path: assets/xml/objects/object_rr.xml +- xml_path: assets/xml/objects/object_rs.xml +- xml_path: assets/xml/objects/object_ru1.xml +- xml_path: assets/xml/objects/object_ru2.xml +- xml_path: assets/xml/objects/object_sa.xml +- xml_path: assets/xml/objects/object_sb.xml +- xml_path: assets/xml/objects/object_sd.xml +- xml_path: assets/xml/objects/object_shop_dungen.xml +- xml_path: assets/xml/objects/object_shopnuts.xml +- xml_path: assets/xml/objects/object_siofuki.xml +- xml_path: assets/xml/objects/object_sk2.xml +- xml_path: assets/xml/objects/object_skb.xml +- xml_path: assets/xml/objects/object_skj.xml +- xml_path: assets/xml/objects/object_spot00_break.xml +- xml_path: assets/xml/objects/object_spot00_objects.xml +- xml_path: assets/xml/objects/object_spot01_matoya.xml +- xml_path: assets/xml/objects/object_spot01_matoyab.xml +- xml_path: assets/xml/objects/object_spot01_objects.xml +- xml_path: assets/xml/objects/object_spot01_objects2.xml +- xml_path: assets/xml/objects/object_spot02_objects.xml +- xml_path: assets/xml/objects/object_spot03_object.xml +- xml_path: assets/xml/objects/object_spot04_objects.xml +- xml_path: assets/xml/objects/object_spot05_objects.xml +- xml_path: assets/xml/objects/object_spot06_objects.xml +- xml_path: assets/xml/objects/object_spot07_object.xml +- xml_path: assets/xml/objects/object_spot08_obj.xml +- xml_path: assets/xml/objects/object_spot09_obj.xml +- xml_path: assets/xml/objects/object_spot11_obj.xml +- xml_path: assets/xml/objects/object_spot12_obj.xml +- xml_path: assets/xml/objects/object_spot15_obj.xml +- xml_path: assets/xml/objects/object_spot16_obj.xml +- xml_path: assets/xml/objects/object_spot17_obj.xml +- xml_path: assets/xml/objects/object_spot18_obj.xml +- xml_path: assets/xml/objects/object_ssh.xml +- xml_path: assets/xml/objects/object_sst.xml +- xml_path: assets/xml/objects/object_st.xml +- xml_path: assets/xml/objects/object_stream.xml +- xml_path: assets/xml/objects/object_syokudai.xml +- xml_path: assets/xml/objects/object_ta.xml +- xml_path: assets/xml/objects/object_timeblock.xml +- xml_path: assets/xml/objects/object_tite.xml +- xml_path: assets/xml/objects/object_tk.xml +- xml_path: assets/xml/objects/object_toki_objects.xml +- xml_path: assets/xml/objects/object_torch2.xml +- xml_path: assets/xml/objects/object_toryo.xml +- xml_path: assets/xml/objects/object_tp.xml +- xml_path: assets/xml/objects/object_tr.xml +- xml_path: assets/xml/objects/object_trap.xml +- xml_path: assets/xml/objects/object_triforce_spot.xml +- xml_path: assets/xml/objects/object_ts.xml +- xml_path: assets/xml/objects/object_tsubo.xml +- xml_path: assets/xml/objects/object_tw.xml +- xml_path: assets/xml/objects/object_umajump.xml +- xml_path: assets/xml/objects/object_vali.xml +- xml_path: assets/xml/objects/object_vase.xml +- xml_path: assets/xml/objects/object_vm.xml +- xml_path: assets/xml/objects/object_wallmaster.xml +- xml_path: assets/xml/objects/object_warp1.xml +- xml_path: assets/xml/objects/object_warp2.xml +- xml_path: assets/xml/objects/object_wf.xml +- xml_path: assets/xml/objects/object_wood02.xml +- xml_path: assets/xml/objects/object_xc.xml +- xml_path: assets/xml/objects/object_yabusame_point.xml +- xml_path: assets/xml/objects/object_ydan_objects.xml +- xml_path: assets/xml/objects/object_yukabyun.xml +- xml_path: assets/xml/objects/object_zf.xml +- xml_path: assets/xml/objects/object_zg.xml +- xml_path: assets/xml/objects/object_zl1.xml +- xml_path: assets/xml/objects/object_zl2.xml +- xml_path: assets/xml/objects/object_zl2_anime1.xml +- xml_path: assets/xml/objects/object_zl2_anime2.xml +- xml_path: assets/xml/objects/object_zl4.xml +- xml_path: assets/xml/objects/object_zo.xml +- xml_path: assets/xml/overlays/ovl_Arrow_Fire.xml + start_offset: 0x9D0 + end_offset: 0x1DF0 +- xml_path: assets/xml/overlays/ovl_Arrow_Ice.xml + start_offset: 0x9F0 + end_offset: 0x1E10 +- xml_path: assets/xml/overlays/ovl_Arrow_Light.xml + start_offset: 0xA00 + end_offset: 0x1E20 +- xml_path: assets/xml/overlays/ovl_Bg_Ganon_Otyuka.xml + start_offset: 0x11C0 + end_offset: 0x259C +- xml_path: assets/xml/overlays/ovl_Bg_Jya_Cobra.xml + start_offset: 0x1980 + end_offset: 0x19F8 +- xml_path: assets/xml/overlays/ovl_Boss_Dodongo.xml + start_offset: 0x6238 + end_offset: 0x9238 +- xml_path: assets/xml/overlays/ovl_Boss_Ganon.xml + start_offset: 0xE6B8 + end_offset: 0x211D8 +- xml_path: assets/xml/overlays/ovl_Boss_Ganon2.xml + start_offset: 0xA2C8 + end_offset: 0x10778 +- xml_path: assets/xml/overlays/ovl_Boss_Sst.xml + start_offset: 0xA3C0 + end_offset: 0xAD70 +- xml_path: assets/xml/overlays/ovl_Demo_Shd.xml + start_offset: 0x450 + end_offset: 0x23D0 +- xml_path: assets/xml/overlays/ovl_Effect_Ss_Fhg_Flash.xml + start_offset: 0xA60 + end_offset: 0xF18 +- xml_path: assets/xml/overlays/ovl_Elf_Msg.xml + start_offset: 0x758 + end_offset: 0x9D8 +- xml_path: assets/xml/overlays/ovl_Elf_Msg2.xml + start_offset: 0x538 + end_offset: 0x638 +- xml_path: assets/xml/overlays/ovl_En_Bili.xml + start_offset: 0x1E50 + end_offset: 0x1E70 +- xml_path: assets/xml/overlays/ovl_En_Clear_Tag.xml + start_offset: 0x26F0 + end_offset: 0x89F0 +- xml_path: assets/xml/overlays/ovl_En_Ganon_Mant.xml + start_offset: 0x1218 + end_offset: 0x4118 +- xml_path: assets/xml/overlays/ovl_En_Ganon_Organ.xml + start_offset: 0x3E8 + end_offset: 0x6F70 +- xml_path: assets/xml/overlays/ovl_En_Holl.xml + start_offset: 0xE78 + end_offset: 0xEE0 +- xml_path: assets/xml/overlays/ovl_En_Jsjutan.xml + start_offset: 0x12F8 + end_offset: 0x4C90 +- xml_path: assets/xml/overlays/ovl_En_Kanban.xml + start_offset: 0x2F80 + end_offset: 0x3040 +- xml_path: assets/xml/overlays/ovl_En_Sda.xml + start_offset: 0x1578 + end_offset: 0x1608 +- xml_path: assets/xml/overlays/ovl_En_Ssh.xml + start_offset: 0x2150 + end_offset: 0x21E0 +- xml_path: assets/xml/overlays/ovl_En_St.xml + start_offset: 0x26B0 + end_offset: 0x2740 +- xml_path: assets/xml/overlays/ovl_En_Sth.xml + start_offset: 0xEF0 + end_offset: 0x3EC4 +- xml_path: assets/xml/overlays/ovl_End_Title.xml + start_offset: 0x780 + end_offset: 0x4128 +- xml_path: assets/xml/overlays/ovl_file_choose.xml + start_offset: 0xDE70 + end_offset: 0xE6B0 +- xml_path: assets/xml/overlays/ovl_Magic_Dark.xml + start_offset: 0xD10 + end_offset: 0x1740 +- xml_path: assets/xml/overlays/ovl_Magic_Fire.xml + start_offset: 0xB90 + end_offset: 0x21E0 +- xml_path: assets/xml/overlays/ovl_Magic_Wind.xml + start_offset: 0x780 + end_offset: 0x1C98 +- xml_path: assets/xml/overlays/ovl_Oceff_Spot.xml + start_offset: 0x7F0 + end_offset: 0xEC8 +- xml_path: assets/xml/overlays/ovl_Oceff_Storm.xml + start_offset: 0x7B0 + end_offset: 0x1B40 +- xml_path: assets/xml/overlays/ovl_Oceff_Wipe.xml + start_offset: 0x550 + end_offset: 0xD10 +- xml_path: assets/xml/overlays/ovl_Oceff_Wipe2.xml + start_offset: 0x480 + end_offset: 0x16E8 +- xml_path: assets/xml/overlays/ovl_Oceff_Wipe3.xml + start_offset: 0x480 + end_offset: 0x16C8 +- xml_path: assets/xml/overlays/ovl_Oceff_Wipe4.xml + start_offset: 0x460 + end_offset: 0xF48 +- xml_path: assets/xml/scenes/dungeons/bdan.xml +- xml_path: assets/xml/scenes/dungeons/bdan_boss.xml +- xml_path: assets/xml/scenes/dungeons/Bmori1.xml +- xml_path: assets/xml/scenes/dungeons/ddan.xml +- xml_path: assets/xml/scenes/dungeons/ddan_boss.xml +- xml_path: assets/xml/scenes/dungeons/FIRE_bs.xml +- xml_path: assets/xml/scenes/dungeons/ganon.xml +- xml_path: assets/xml/scenes/dungeons/ganon_boss.xml +- xml_path: assets/xml/scenes/dungeons/ganon_demo.xml +- xml_path: assets/xml/scenes/dungeons/ganon_final.xml +- xml_path: assets/xml/scenes/dungeons/ganon_sonogo.xml +- xml_path: assets/xml/scenes/dungeons/ganontika.xml +- xml_path: assets/xml/scenes/dungeons/ganontikasonogo.xml +- xml_path: assets/xml/scenes/dungeons/gerudoway.xml +- xml_path: assets/xml/scenes/dungeons/HAKAdan.xml +- xml_path: assets/xml/scenes/dungeons/HAKAdan_bs.xml +- xml_path: assets/xml/scenes/dungeons/HAKAdanCH.xml +- xml_path: assets/xml/scenes/dungeons/HIDAN.xml +- xml_path: assets/xml/scenes/dungeons/ice_doukutu.xml +- xml_path: assets/xml/scenes/dungeons/jyasinboss.xml +- xml_path: assets/xml/scenes/dungeons/jyasinzou.xml +- xml_path: assets/xml/scenes/dungeons/men.xml +- xml_path: assets/xml/scenes/dungeons/MIZUsin.xml +- xml_path: assets/xml/scenes/dungeons/MIZUsin_bs.xml +- xml_path: assets/xml/scenes/dungeons/moribossroom.xml +- xml_path: assets/xml/scenes/dungeons/ydan.xml +- xml_path: assets/xml/scenes/dungeons/ydan_boss.xml +- xml_path: assets/xml/scenes/indoors/bowling.xml +- xml_path: assets/xml/scenes/indoors/daiyousei_izumi.xml +- xml_path: assets/xml/scenes/indoors/hairal_niwa.xml +- xml_path: assets/xml/scenes/indoors/hairal_niwa2.xml +- xml_path: assets/xml/scenes/indoors/hairal_niwa_n.xml +- xml_path: assets/xml/scenes/indoors/hakasitarelay.xml +- xml_path: assets/xml/scenes/indoors/hut.xml +- xml_path: assets/xml/scenes/indoors/hylia_labo.xml +- xml_path: assets/xml/scenes/indoors/impa.xml +- xml_path: assets/xml/scenes/indoors/kakariko.xml +- xml_path: assets/xml/scenes/indoors/kenjyanoma.xml +- xml_path: assets/xml/scenes/indoors/kokiri_home.xml +- xml_path: assets/xml/scenes/indoors/kokiri_home3.xml +- xml_path: assets/xml/scenes/indoors/kokiri_home4.xml +- xml_path: assets/xml/scenes/indoors/kokiri_home5.xml +- xml_path: assets/xml/scenes/indoors/labo.xml +- xml_path: assets/xml/scenes/indoors/link_home.xml +- xml_path: assets/xml/scenes/indoors/mahouya.xml +- xml_path: assets/xml/scenes/indoors/malon_stable.xml +- xml_path: assets/xml/scenes/indoors/miharigoya.xml +- xml_path: assets/xml/scenes/indoors/nakaniwa.xml +- xml_path: assets/xml/scenes/indoors/souko.xml +- xml_path: assets/xml/scenes/indoors/syatekijyou.xml +- xml_path: assets/xml/scenes/indoors/takaraya.xml +- xml_path: assets/xml/scenes/indoors/tent.xml +- xml_path: assets/xml/scenes/indoors/tokinoma.xml +- xml_path: assets/xml/scenes/indoors/yousei_izumi_tate.xml +- xml_path: assets/xml/scenes/indoors/yousei_izumi_yoko.xml +- xml_path: assets/xml/scenes/misc/enrui.xml +- xml_path: assets/xml/scenes/misc/entra.xml +- xml_path: assets/xml/scenes/misc/entra_n.xml +- xml_path: assets/xml/scenes/misc/hakaana.xml +- xml_path: assets/xml/scenes/misc/hakaana2.xml +- xml_path: assets/xml/scenes/misc/hakaana_ouke.xml +- xml_path: assets/xml/scenes/misc/hiral_demo.xml +- xml_path: assets/xml/scenes/misc/kakariko3.xml +- xml_path: assets/xml/scenes/misc/kakusiana.xml +- xml_path: assets/xml/scenes/misc/kinsuta.xml +- xml_path: assets/xml/scenes/misc/market_alley.xml +- xml_path: assets/xml/scenes/misc/market_alley_n.xml +- xml_path: assets/xml/scenes/misc/market_day.xml +- xml_path: assets/xml/scenes/misc/market_night.xml +- xml_path: assets/xml/scenes/misc/market_ruins.xml +- xml_path: assets/xml/scenes/misc/shrine.xml +- xml_path: assets/xml/scenes/misc/shrine_n.xml +- xml_path: assets/xml/scenes/misc/shrine_r.xml +- xml_path: assets/xml/scenes/misc/turibori.xml +- xml_path: assets/xml/scenes/overworld/ganon_tou.xml +- xml_path: assets/xml/scenes/overworld/spot00.xml +- xml_path: assets/xml/scenes/overworld/spot01.xml +- xml_path: assets/xml/scenes/overworld/spot02.xml +- xml_path: assets/xml/scenes/overworld/spot03.xml +- xml_path: assets/xml/scenes/overworld/spot04.xml +- xml_path: assets/xml/scenes/overworld/spot05.xml +- xml_path: assets/xml/scenes/overworld/spot06.xml +- xml_path: assets/xml/scenes/overworld/spot07.xml +- xml_path: assets/xml/scenes/overworld/spot08.xml +- xml_path: assets/xml/scenes/overworld/spot09.xml +- xml_path: assets/xml/scenes/overworld/spot10.xml +- xml_path: assets/xml/scenes/overworld/spot11.xml +- xml_path: assets/xml/scenes/overworld/spot12.xml +- xml_path: assets/xml/scenes/overworld/spot13.xml +- xml_path: assets/xml/scenes/overworld/spot15.xml +- xml_path: assets/xml/scenes/overworld/spot16.xml +- xml_path: assets/xml/scenes/overworld/spot17.xml +- xml_path: assets/xml/scenes/overworld/spot18.xml +- xml_path: assets/xml/scenes/overworld/spot20.xml +- xml_path: assets/xml/scenes/shops/alley_shop.xml +- xml_path: assets/xml/scenes/shops/drag.xml +- xml_path: assets/xml/scenes/shops/face_shop.xml +- xml_path: assets/xml/scenes/shops/golon.xml +- xml_path: assets/xml/scenes/shops/kokiri_shop.xml +- xml_path: assets/xml/scenes/shops/night_shop.xml +- xml_path: assets/xml/scenes/shops/shop1.xml +- xml_path: assets/xml/scenes/shops/zoora.xml +- xml_path: assets/xml/scenes/test_levels/besitu.xml +- xml_path: assets/xml/scenes/test_levels/depth_test.xml +- xml_path: assets/xml/scenes/test_levels/sasatest.xml +- xml_path: assets/xml/scenes/test_levels/sutaru.xml +- xml_path: assets/xml/scenes/test_levels/syotes.xml +- xml_path: assets/xml/scenes/test_levels/syotes2.xml +- xml_path: assets/xml/scenes/test_levels/test01.xml +- xml_path: assets/xml/scenes/test_levels/testroom.xml +- xml_path: assets/xml/textures/backgrounds.xml +- xml_path: assets/xml/textures/do_action_static.xml +- xml_path: assets/xml/textures/icon_item_24_static.xml +- xml_path: assets/xml/textures/icon_item_dungeon_static.xml +- xml_path: assets/xml/textures/icon_item_field_static.xml +- xml_path: assets/xml/textures/icon_item_fra_static.xml +- xml_path: assets/xml/textures/icon_item_gameover_static.xml +- xml_path: assets/xml/textures/icon_item_ger_static.xml +- xml_path: assets/xml/textures/icon_item_nes_static.xml +- xml_path: assets/xml/textures/icon_item_static.xml +- xml_path: assets/xml/textures/item_name_static.xml +- xml_path: assets/xml/textures/map_48x85_static.xml +- xml_path: assets/xml/textures/map_grand_static.xml +- xml_path: assets/xml/textures/map_i_static.xml +- xml_path: assets/xml/textures/map_name_static.xml +- xml_path: assets/xml/textures/message_static.xml +- xml_path: assets/xml/textures/message_texture_static.xml +- xml_path: assets/xml/textures/nes_font_static.xml +- xml_path: assets/xml/textures/nintendo_rogo_static.xml +- xml_path: assets/xml/textures/parameter_static.xml +- xml_path: assets/xml/textures/place_title_cards.xml +- xml_path: assets/xml/textures/skyboxes.xml +- xml_path: assets/xml/textures/title_static.xml diff --git a/extract_assets.py b/extract_assets.py index dc5ba9df3b..8c92bc9118 100755 --- a/extract_assets.py +++ b/extract_assets.py @@ -8,6 +8,8 @@ import time import multiprocessing from pathlib import Path +from tools import version_config + EXTRACTED_ASSETS_FILENAME = ".extracted-assets.json" @@ -17,7 +19,9 @@ def SignalHandler(sig, frame): mainAbort.set() # Don't exit immediately to update the extracted assets file. -def ExtractFile(xmlPath, outputPath, outputSourcePath): +def ExtractFile(assetConfig, outputPath, outputSourcePath): + xmlPath = assetConfig.xml_path + version = globalVersionConfig.version if globalAbort.is_set(): # Don't extract if another file wasn't extracted properly. return @@ -31,7 +35,22 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath): # TODO: Extract assets from the correct version instead of the Debug ROM execStr = f"{zapdPath} e -eh -i {xmlPath} -b extracted/gc-eu-mq-dbg/baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} --cs-float both {ZAPDArgs}" - if "overlays" in xmlPath: + if "/code/" in xmlPath: + assert assetConfig.start_offset is not None + assert assetConfig.end_offset is not None + + execStr += f" --start-offset 0x{assetConfig.start_offset:X}" + execStr += f" --end-offset 0x{assetConfig.end_offset:X}" + elif "/overlays/" in xmlPath: + assert assetConfig.start_offset is not None + assert assetConfig.end_offset is not None + + overlayName = os.path.splitext(os.path.basename(xmlPath))[0] + baseAddress = globalVersionConfig.dmadata_segments[overlayName].vram + assetConfig.start_offset + + execStr += f" --base-address 0x{baseAddress:X}" + execStr += f" --start-offset 0x{assetConfig.start_offset:X}" + execStr += f" --end-offset 0x{assetConfig.end_offset:X}" execStr += " --static" if globalUnaccounted: @@ -46,11 +65,13 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath): print("Aborting...", file=os.sys.stderr) print("\n") -def ExtractFunc(fullPath): +def ExtractFunc(assetConfig): + fullPath = assetConfig.xml_path *pathList, xmlName = fullPath.split(os.sep) objectName = os.path.splitext(xmlName)[0] - outPath = os.path.join("extracted", globalVersion, "assets", *pathList[2:], objectName) + version = globalVersionConfig.version + outPath = os.path.join("extracted", version, "assets", *pathList[2:], objectName) outSourcePath = outPath if fullPath in globalExtractedAssetsTracker: @@ -62,7 +83,7 @@ def ExtractFunc(fullPath): currentTimeStamp = int(time.time()) - ExtractFile(fullPath, outPath, outSourcePath) + ExtractFile(assetConfig, outPath, outSourcePath) if not globalAbort.is_set(): # Only update timestamp on succesful extractions @@ -70,13 +91,13 @@ def ExtractFunc(fullPath): globalExtractedAssetsTracker[fullPath] = globalManager.dict() globalExtractedAssetsTracker[fullPath]["timestamp"] = currentTimeStamp -def initializeWorker(version, abort, unaccounted: bool, extractedAssetsTracker: dict, manager): - global globalVersion +def initializeWorker(versionConfig, abort, unaccounted: bool, extractedAssetsTracker: dict, manager): + global globalVersionConfig global globalAbort global globalUnaccounted global globalExtractedAssetsTracker global globalManager - globalVersion = version + globalVersionConfig = versionConfig globalAbort = abort globalUnaccounted = unaccounted globalExtractedAssetsTracker = extractedAssetsTracker @@ -106,6 +127,9 @@ def main(): parser.add_argument("-Z", help="Pass the argument on to ZAPD, e.g. `-ZWunaccounted` to warn about unaccounted blocks in XMLs. Each argument should be passed separately, *without* the leading dash.", metavar="ZAPD_ARG", action="append") args = parser.parse_args() + version = args.oot_version + versionConfig = version_config.load_version_config(args.oot_version) + global ZAPDArgs ZAPDArgs = processZAPDArgs(args.Z) if args.Z else "" @@ -114,7 +138,6 @@ def main(): manager = multiprocessing.Manager() signal.signal(signal.SIGINT, SignalHandler) - version = args.oot_version extracted_assets_filename = os.path.join("extracted", version, EXTRACTED_ASSETS_FILENAME) extractedAssetsTracker = manager.dict() if os.path.exists(extracted_assets_filename) and not args.force: @@ -128,19 +151,21 @@ def main(): print(f"Error. File {fullPath} does not exist.", file=os.sys.stderr) exit(1) - initializeWorker(version, mainAbort, args.unaccounted, extractedAssetsTracker, manager) + assetConfig = None + for asset in versionConfig.assets: + if asset.xml_path == fullPath: + assetConfig = asset + break + else: + print(f"Error. Asset {fullPath} not found in config.", file=os.sys.stderr) + exit(1) + + initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager) # Always extract if -s is used. if fullPath in extractedAssetsTracker: del extractedAssetsTracker[fullPath] - ExtractFunc(fullPath) + ExtractFunc(assetConfig) else: - xmlFiles = [] - for currentPath, _, files in os.walk(os.path.join("assets", "xml")): - for file in files: - fullPath = os.path.join(currentPath, file) - if file.endswith(".xml"): - xmlFiles.append(fullPath) - class CannotMultiprocessError(Exception): pass @@ -153,15 +178,15 @@ def main(): mp_context = multiprocessing.get_context("fork") except ValueError as e: raise CannotMultiprocessError() from e - with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(version, mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p: - p.map(ExtractFunc, xmlFiles) + with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p: + p.map(ExtractFunc, versionConfig.assets) except (multiprocessing.ProcessError, TypeError, CannotMultiprocessError): print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr) print("Disabling mutliprocessing.", file=os.sys.stderr) - initializeWorker(version, mainAbort, args.unaccounted, extractedAssetsTracker, manager) - for singlePath in xmlFiles: - ExtractFunc(singlePath) + initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager) + for assetConfig in versionConfig.assets: + ExtractFunc(assetConfig) with open(extracted_assets_filename, 'w', encoding='utf-8') as f: serializableDict = dict() diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c index ccc64727df..186878b0e8 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.c @@ -1,7 +1,7 @@ #include "file_select.h" #include "terminal.h" #include "assets/textures/title_static/title_static.h" -#include "assets/overlays/ovl_File_Choose/ovl_file_choose.h" +#include "assets/overlays/ovl_file_choose/ovl_file_choose.h" static s16 D_808124C0[] = { 0x0002, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0002, 0x0000, 0x0001, diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c index 2fa7cd78f3..d6bc09c282 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c @@ -1,6 +1,6 @@ #include "file_select.h" -#include "assets/overlays/ovl_File_Choose/ovl_file_choose.c" +#include "assets/overlays/ovl_file_choose/ovl_file_choose.c" s16 D_808123F0[] = { 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, diff --git a/tools/version_config.py b/tools/version_config.py index f41bdfc515..c7f0e6053d 100644 --- a/tools/version_config.py +++ b/tools/version_config.py @@ -18,12 +18,16 @@ PROJECT_ROOT = Path(__file__).parent.parent @dataclasses.dataclass class VersionConfig: + # Version name + version: str # ROM offset to start of DMA table dmadata_start: int # DMA segment information, in ROM order dmadata_segments: OrderedDict[str, SegmentInfo] # Addresses of important variables needed for asset extraction variables: Dict[str, int] + # Assets to extract + assets: list[AssetConfig] @dataclasses.dataclass @@ -32,6 +36,13 @@ class SegmentInfo: vram: int | None +@dataclasses.dataclass +class AssetConfig: + xml_path: Path + start_offset: int | None + end_offset: int | None + + def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]: segments = OrderedDict() with open(PROJECT_ROOT / f"baseroms/{version}/segments.csv", "r") as f: @@ -46,8 +57,18 @@ def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]: def load_version_config(version: str) -> VersionConfig: with open(PROJECT_ROOT / f"baseroms/{version}/config.yml", "r") as f: config = yaml.load(f, Loader=yaml.Loader) + + assets = [] + for asset in config["assets"]: + xml_path = asset["xml_path"] + start_offset = asset.get("start_offset", None) + end_offset = asset.get("end_offset", None) + assets.append(AssetConfig(xml_path, start_offset, end_offset)) + return VersionConfig( + version=version, dmadata_start=config["dmadata_start"], dmadata_segments=load_dmadata_segments(version), variables=config["variables"], + assets=assets, )