diff --git a/Makefile b/Makefile index ee3150e8d7..e3f6dda420 100644 --- a/Makefile +++ b/Makefile @@ -160,7 +160,6 @@ SCHC := $(PYTHON) tools/buildtools/schc.py SCHC_FLAGS := # Audio tools -AUDIO_EXTRACT := $(PYTHON) tools/audio_extraction.py SAMPLECONV := tools/audio/sampleconv/sampleconv SBC := tools/audio/sbc SFC := tools/audio/sfc @@ -474,6 +473,7 @@ clean: assetclean: $(RM) -r $(EXTRACTED_DIR)/assets $(RM) -r $(EXTRACTED_DIR)/text + $(RM) -r $(EXTRACTED_DIR)/.extracted-assets.json $(RM) -r $(BUILD_DIR)/assets distclean: assetclean clean @@ -489,18 +489,14 @@ venv: setup: $(MAKE) -C tools - $(PYTHON) tools/buildtools/decompress_baserom.py -v $(VERSION) - $(PYTHON) tools/buildtools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 $(EXTRACTED_DIR)/baserom --dmadata-start `cat $(BASEROM_DIR)/dmadata_start.txt` --dmadata-names $(BASEROM_DIR)/dmadata_names.txt - $(PYTHON) tools/buildtools/extract_yars.py $(EXTRACTED_DIR)/baserom -v $(VERSION) - -# TODO this is a temporary rule for testing audio, to be removed -setup-audio: - $(AUDIO_EXTRACT) -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml + $(PYTHON) tools/decompress_baserom.py -v $(VERSION) + $(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 $(EXTRACTED_DIR)/baserom -v $(VERSION) + $(PYTHON) tools/extract_yars.py $(EXTRACTED_DIR)/baserom -v $(VERSION) assets: $(PYTHON) tools/extract_assets.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/assets -j$(N_THREADS) -Z Wno-hardcoded-pointer -v $(VERSION) - $(PYTHON) tools/text/msgdis.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/text -v $(VERSION) - $(AUDIO_EXTRACT) -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml + $(PYTHON) tools/extract_text.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/text -v $(VERSION) + $(PYTHON) tools/extract_audio.py -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml ## Assembly generation disasm: diff --git a/baseroms/n64-us/config.yml b/baseroms/n64-us/config.yml new file mode 100644 index 0000000000..0423060b45 --- /dev/null +++ b/baseroms/n64-us/config.yml @@ -0,0 +1,18 @@ +dmadata_start: 0x1A500 +variables: + sMessageTableNES: 0x801C6B98 + sMessageTableCredits: 0x801CFB08 + gSoundFontTable: 0x801E1180 + gSequenceFontTable: 0x801E1420 + gSequenceTable: 0x801E1630 + gSampleBankTable: 0x801E1E40 +archives: + - map_i_static + - map_grand_static + - item_name_static + - map_name_static + - icon_item_static_yar + - icon_item_24_static_yar + - schedule_dma_static_yar +incbins: +assets: diff --git a/baseroms/n64-us/dmadata_names.txt b/baseroms/n64-us/dmadata_names.txt deleted file mode 100644 index fe58146644..0000000000 --- a/baseroms/n64-us/dmadata_names.txt +++ /dev/null @@ -1,1552 +0,0 @@ -makerom -boot -dmadata -Audiobank -Audioseq -Audiotable -kanji -link_animetion -icon_item_static_syms -icon_item_24_static_syms -icon_item_field_static -icon_item_dungeon_static -icon_item_gameover_static -icon_item_jpn_static -icon_item_vtx_static -map_i_static -map_grand_static -item_name_static -map_name_static -icon_item_static_yar -icon_item_24_static_yar -schedule_dma_static_syms -schedule_dma_static_yar -schedule_static -story_static -do_action_static -message_static -message_texture_static -nes_font_static -message_data_static -staff_message_data_static -code -ovl_title -ovl_select -ovl_opening -ovl_file_choose -ovl_daytelop -ovl_kaleido_scope -ovl_player_actor -ovl_En_Test -ovl_En_GirlA -ovl_En_Part -ovl_En_Light -ovl_En_Door -ovl_En_Box -ovl_En_Pametfrog -ovl_En_Okuta -ovl_En_Bom -ovl_En_Wallmas -ovl_En_Dodongo -ovl_En_Firefly -ovl_En_Horse -ovl_En_Arrow -ovl_En_Elf -ovl_En_Niw -ovl_En_Tite -ovl_En_Peehat -ovl_En_Holl -ovl_En_Dinofos -ovl_En_Hata -ovl_En_Zl1 -ovl_En_Viewer -ovl_En_Bubble -ovl_Door_Shutter -ovl_En_Boom -ovl_En_Torch2 -ovl_En_Minifrog -ovl_En_St -ovl_Obj_Wturn -ovl_En_River_Sound -ovl_En_Ossan -ovl_En_Famos -ovl_En_Bombf -ovl_En_Am -ovl_En_Dekubaba -ovl_En_M_Fire1 -ovl_En_M_Thunder -ovl_Bg_Breakwall -ovl_Door_Warp1 -ovl_Obj_Syokudai -ovl_Item_B_Heart -ovl_En_Dekunuts -ovl_En_Bbfall -ovl_Arms_Hook -ovl_En_Bb -ovl_Bg_Keikoku_Spr -ovl_En_Wood02 -ovl_En_Death -ovl_En_Minideath -ovl_En_Vm -ovl_Demo_Effect -ovl_Demo_Kankyo -ovl_En_Floormas -ovl_En_Rd -ovl_Bg_F40_Flift -ovl_Obj_Mure -ovl_En_Sw -ovl_Object_Kankyo -ovl_En_Horse_Link_Child -ovl_Door_Ana -ovl_En_Encount1 -ovl_Demo_Tre_Lgt -ovl_En_Encount2 -ovl_En_Fire_Rock -ovl_Bg_Ctower_Rot -ovl_Mir_Ray -ovl_En_Sb -ovl_En_Bigslime -ovl_En_Karebaba -ovl_En_In -ovl_En_Bom_Chu -ovl_En_Horse_Game_Check -ovl_En_Rr -ovl_En_Fr -ovl_En_Fishing -ovl_Obj_Oshihiki -ovl_Eff_Dust -ovl_Bg_Umajump -ovl_En_Insect -ovl_En_Butte -ovl_En_Fish -ovl_Item_Etcetera -ovl_Arrow_Fire -ovl_Arrow_Ice -ovl_Arrow_Light -ovl_Obj_Kibako -ovl_Obj_Tsubo -ovl_En_Ik -ovl_Demo_Shd -ovl_En_Dns -ovl_Elf_Msg -ovl_En_Honotrap -ovl_En_Tubo_Trap -ovl_Obj_Ice_Poly -ovl_En_Fz -ovl_En_Kusa -ovl_Obj_Bean -ovl_Obj_Bombiwa -ovl_Obj_Switch -ovl_Obj_Lift -ovl_Obj_Hsblock -ovl_En_Okarina_Tag -ovl_En_Goroiwa -ovl_En_Daiku -ovl_En_Nwc -ovl_Item_Inbox -ovl_En_Ge1 -ovl_Obj_Blockstop -ovl_En_Sda -ovl_En_Clear_Tag -ovl_En_Gm -ovl_En_Ms -ovl_En_Hs -ovl_Bg_Ingate -ovl_En_Kanban -ovl_En_Attack_Niw -ovl_En_Mk -ovl_En_Owl -ovl_En_Ishi -ovl_Obj_Hana -ovl_Obj_Lightswitch -ovl_Obj_Mure2 -ovl_En_Fu -ovl_En_Stream -ovl_En_Mm -ovl_En_Weather_Tag -ovl_En_Ani -ovl_En_Js -ovl_En_Okarina_Effect -ovl_En_Mag -ovl_Elf_Msg2 -ovl_Bg_F40_Swlift -ovl_En_Kakasi -ovl_Obj_Makeoshihiki -ovl_Oceff_Spot -ovl_En_Torch -ovl_Shot_Sun -ovl_Obj_Roomtimer -ovl_En_Ssh -ovl_Oceff_Wipe -ovl_Effect_Ss_Dust -ovl_Effect_Ss_Kirakira -ovl_Effect_Ss_Bomb2 -ovl_Effect_Ss_Blast -ovl_Effect_Ss_G_Spk -ovl_Effect_Ss_D_Fire -ovl_Effect_Ss_Bubble -ovl_Effect_Ss_G_Ripple -ovl_Effect_Ss_G_Splash -ovl_Effect_Ss_G_Fire -ovl_Effect_Ss_Lightning -ovl_Effect_Ss_Dt_Bubble -ovl_Effect_Ss_Hahen -ovl_Effect_Ss_Stick -ovl_Effect_Ss_Sibuki -ovl_Effect_Ss_Stone1 -ovl_Effect_Ss_Hitmark -ovl_Effect_Ss_Fhg_Flash -ovl_Effect_Ss_K_Fire -ovl_Effect_Ss_Solder_Srch_Ball -ovl_Effect_Ss_Kakera -ovl_Effect_Ss_Ice_Piece -ovl_Effect_Ss_En_Ice -ovl_Effect_Ss_Fire_Tail -ovl_Effect_Ss_En_Fire -ovl_Effect_Ss_Extra -ovl_Effect_Ss_Dead_Db -ovl_Effect_Ss_Dead_Dd -ovl_Effect_Ss_Dead_Ds -ovl_Oceff_Storm -ovl_Obj_Demo -ovl_En_Minislime -ovl_En_Nutsball -ovl_Oceff_Wipe2 -ovl_Oceff_Wipe3 -ovl_En_Dg -ovl_En_Si -ovl_Obj_Comb -ovl_Obj_Kibako2 -ovl_En_Hs2 -ovl_Obj_Mure3 -ovl_En_Tg -ovl_En_Wf -ovl_En_Skb -ovl_En_Gs -ovl_Obj_Sound -ovl_En_Crow -ovl_En_Cow -ovl_Oceff_Wipe4 -ovl_En_Zo -ovl_Effect_Ss_Ice_Smoke -ovl_Obj_Makekinsuta -ovl_En_Ge3 -ovl_Obj_Hamishi -ovl_En_Zl4 -ovl_En_Mm2 -ovl_Door_Spiral -ovl_Obj_Pzlblock -ovl_Obj_Toge -ovl_Obj_Armos -ovl_Obj_Boyo -ovl_En_Grasshopper -ovl_Obj_Grass -ovl_Obj_Grass_Carry -ovl_Obj_Grass_Unit -ovl_Bg_Fire_Wall -ovl_En_Bu -ovl_En_Encount3 -ovl_En_Jso -ovl_Obj_Chikuwa -ovl_En_Knight -ovl_En_Warp_tag -ovl_En_Aob_01 -ovl_En_Boj_01 -ovl_En_Boj_02 -ovl_En_Boj_03 -ovl_En_Encount4 -ovl_En_Bom_Bowl_Man -ovl_En_Syateki_Man -ovl_Bg_Icicle -ovl_En_Syateki_Crow -ovl_En_Boj_04 -ovl_En_Cne_01 -ovl_En_Bba_01 -ovl_En_Bji_01 -ovl_Bg_Spdweb -ovl_En_Mt_tag -ovl_Boss_01 -ovl_Boss_02 -ovl_Boss_03 -ovl_Boss_04 -ovl_Boss_05 -ovl_Boss_06 -ovl_Boss_07 -ovl_Bg_Dy_Yoseizo -ovl_En_Boj_05 -ovl_En_Sob1 -ovl_En_Go -ovl_En_Raf -ovl_Obj_Funen -ovl_Obj_Raillift -ovl_Bg_Numa_Hana -ovl_Obj_Flowerpot -ovl_Obj_Spinyroll -ovl_Dm_Hina -ovl_En_Syateki_Wf -ovl_Obj_Skateblock -ovl_Effect_En_Ice_Block -ovl_Obj_Iceblock -ovl_En_Bigpamet -ovl_Bg_Dblue_Movebg -ovl_En_Syateki_Dekunuts -ovl_Elf_Msg3 -ovl_En_Fg -ovl_Dm_Ravine -ovl_Dm_Sa -ovl_En_Slime -ovl_En_Pr -ovl_Obj_Toudai -ovl_Obj_Entotu -ovl_Obj_Bell -ovl_En_Syateki_Okuta -ovl_Obj_Shutter -ovl_Dm_Zl -ovl_En_Ru -ovl_En_Elfgrp -ovl_Dm_Tsg -ovl_En_Baguo -ovl_Obj_Vspinyroll -ovl_Obj_Smork -ovl_En_Test2 -ovl_En_Test3 -ovl_En_Test4 -ovl_En_Bat -ovl_En_Sekihi -ovl_En_Wiz -ovl_En_Wiz_Brock -ovl_En_Wiz_Fire -ovl_Eff_Change -ovl_Dm_Statue -ovl_Obj_Fireshield -ovl_Bg_Ladder -ovl_En_Mkk -ovl_Demo_Getitem -ovl_En_Dnb -ovl_En_Dnh -ovl_En_Dnk -ovl_En_Dnq -ovl_Bg_Keikoku_Saku -ovl_Obj_Hugebombiwa -ovl_En_Firefly2 -ovl_En_Rat -ovl_En_Water_Effect -ovl_En_Kusa2 -ovl_Bg_Spout_Fire -ovl_En_Dy_Extra -ovl_En_Bal -ovl_En_Ginko_Man -ovl_En_Warp_Uzu -ovl_Obj_Driftice -ovl_En_Look_Nuts -ovl_En_Mushi2 -ovl_En_Fall -ovl_En_Mm3 -ovl_Bg_Crace_Movebg -ovl_En_Dno -ovl_En_Pr2 -ovl_En_Prz -ovl_En_Jso2 -ovl_Obj_Etcetera -ovl_En_Egol -ovl_Obj_Mine -ovl_Obj_Purify -ovl_En_Tru -ovl_En_Trt -ovl_En_Test5 -ovl_En_Test6 -ovl_En_Az -ovl_En_Estone -ovl_Bg_Hakugin_Post -ovl_Dm_Opstage -ovl_Dm_Stk -ovl_Dm_Char00 -ovl_Dm_Char01 -ovl_Dm_Char02 -ovl_Dm_Char03 -ovl_Dm_Char04 -ovl_Dm_Char05 -ovl_Dm_Char06 -ovl_Dm_Char07 -ovl_Dm_Char08 -ovl_Dm_Char09 -ovl_Obj_Tokeidai -ovl_En_Mnk -ovl_En_Egblock -ovl_En_Guard_Nuts -ovl_Bg_Hakugin_Bombwall -ovl_Obj_Tokei_Tobira -ovl_Bg_Hakugin_Elvpole -ovl_En_Ma4 -ovl_En_Twig -ovl_En_Po_Fusen -ovl_En_Door_Etc -ovl_En_Bigokuta -ovl_Bg_Icefloe -ovl_fbdemo_triforce -ovl_fbdemo_wipe1 -ovl_fbdemo_wipe3 -ovl_fbdemo_wipe4 -ovl_fbdemo_wipe5 -ovl_Effect_Ss_Sbn -ovl_Obj_Ocarinalift -ovl_En_Time_Tag -ovl_Bg_Open_Shutter -ovl_Bg_Open_Spot -ovl_Bg_Fu_Kaiten -ovl_Obj_Aqua -ovl_En_Elforg -ovl_En_Elfbub -ovl_En_Fu_Mato -ovl_En_Fu_Kago -ovl_En_Osn -ovl_Bg_Ctower_Gear -ovl_En_Trt2 -ovl_Obj_Tokei_Step -ovl_Bg_Lotus -ovl_En_Kame -ovl_Obj_Takaraya_Wall -ovl_Bg_Fu_Mizu -ovl_En_Sellnuts -ovl_Bg_Dkjail_Ivy -ovl_Obj_Visiblock -ovl_En_Takaraya -ovl_En_Tsn -ovl_En_Ds2n -ovl_En_Fsn -ovl_En_Shn -ovl_En_Stop_heishi -ovl_Obj_Bigicicle -ovl_En_Lift_Nuts -ovl_En_Tk -ovl_Bg_Market_Step -ovl_Obj_Lupygamelift -ovl_En_Test7 -ovl_Obj_Lightblock -ovl_Mir_Ray2 -ovl_En_Wdhand -ovl_En_Gamelupy -ovl_Bg_Danpei_Movebg -ovl_En_Snowwd -ovl_En_Pm -ovl_En_Gakufu -ovl_Elf_Msg4 -ovl_Elf_Msg5 -ovl_En_Col_Man -ovl_En_Talk_Gibud -ovl_En_Giant -ovl_Obj_Snowball -ovl_Boss_Hakugin -ovl_En_Gb2 -ovl_En_Onpuman -ovl_Bg_Tobira01 -ovl_En_Tag_Obj -ovl_Obj_Dhouse -ovl_Obj_Hakaisi -ovl_Bg_Hakugin_Switch -ovl_En_Snowman -ovl_TG_Sw -ovl_En_Po_Sisters -ovl_En_Pp -ovl_En_Hakurock -ovl_En_Hanabi -ovl_Obj_Dowsing -ovl_Obj_Wind -ovl_En_Racedog -ovl_En_Kendo_Js -ovl_Bg_Botihasira -ovl_En_Fish2 -ovl_En_Pst -ovl_En_Poh -ovl_Obj_Spidertent -ovl_En_Zoraegg -ovl_En_Kbt -ovl_En_Gg -ovl_En_Maruta -ovl_Obj_Snowball2 -ovl_En_Gg2 -ovl_Obj_Ghaka -ovl_En_Dnp -ovl_En_Dai -ovl_Bg_Goron_Oyu -ovl_En_Kgy -ovl_En_Invadepoh -ovl_En_Gk -ovl_En_An -ovl_En_Bee -ovl_En_Ot -ovl_En_Dragon -ovl_Obj_Dora -ovl_En_Bigpo -ovl_Obj_Kendo_Kanban -ovl_Obj_Hariko -ovl_En_Sth -ovl_Bg_Sinkai_Kabe -ovl_Bg_Haka_Curtain -ovl_Bg_Kin2_Bombwall -ovl_Bg_Kin2_Fence -ovl_Bg_Kin2_Picture -ovl_Bg_Kin2_Shelf -ovl_En_Rail_Skb -ovl_En_Jg -ovl_En_Tru_Mt -ovl_Obj_Um -ovl_En_Neo_Reeba -ovl_Bg_Mbar_Chair -ovl_Bg_Ikana_Block -ovl_Bg_Ikana_Mirror -ovl_Bg_Ikana_Rotaryroom -ovl_Bg_Dblue_Balance -ovl_Bg_Dblue_Waterfall -ovl_En_Kaizoku -ovl_En_Ge2 -ovl_En_Ma_Yts -ovl_En_Ma_Yto -ovl_Obj_Tokei_Turret -ovl_Bg_Dblue_Elevator -ovl_Obj_Warpstone -ovl_En_Zog -ovl_Obj_Rotlift -ovl_Obj_Jg_Gakki -ovl_Bg_Inibs_Movebg -ovl_En_Zot -ovl_Obj_Tree -ovl_Obj_Y2lift -ovl_Obj_Y2shutter -ovl_Obj_Boat -ovl_Obj_Taru -ovl_Obj_Hunsui -ovl_En_Jc_Mato -ovl_Mir_Ray3 -ovl_En_Zob -ovl_Elf_Msg6 -ovl_Obj_Nozoki -ovl_En_Toto -ovl_En_Railgibud -ovl_En_Baba -ovl_En_Suttari -ovl_En_Zod -ovl_En_Kujiya -ovl_En_Geg -ovl_Obj_Kinoko -ovl_Obj_Yasi -ovl_En_Tanron1 -ovl_En_Tanron2 -ovl_En_Tanron3 -ovl_Obj_Chan -ovl_En_Zos -ovl_En_S_Goro -ovl_En_Nb -ovl_En_Ja -ovl_Bg_F40_Block -ovl_Bg_F40_Switch -ovl_En_Po_Composer -ovl_En_Guruguru -ovl_Oceff_Wipe5 -ovl_En_Stone_heishi -ovl_Oceff_Wipe6 -ovl_En_Scopenuts -ovl_En_Scopecrow -ovl_Oceff_Wipe7 -ovl_Eff_Kamejima_Wave -ovl_En_Hg -ovl_En_Hgo -ovl_En_Zov -ovl_En_Ah -ovl_Obj_Hgdoor -ovl_Bg_Ikana_Bombwall -ovl_Bg_Ikana_Ray -ovl_Bg_Ikana_Shutter -ovl_Bg_Haka_Bombwall -ovl_Bg_Haka_Tomb -ovl_En_Sc_Ruppe -ovl_Bg_Iknv_Doukutu -ovl_Bg_Iknv_Obj -ovl_En_Pamera -ovl_Obj_HsStump -ovl_En_Hidden_Nuts -ovl_En_Zow -ovl_En_Talk -ovl_En_Al -ovl_En_Tab -ovl_En_Nimotsu -ovl_En_Hit_Tag -ovl_En_Ruppecrow -ovl_En_Tanron4 -ovl_En_Tanron5 -ovl_En_Tanron6 -ovl_En_Daiku2 -ovl_En_Muto -ovl_En_Baisen -ovl_En_Heishi -ovl_En_Demo_heishi -ovl_En_Dt -ovl_En_Cha -ovl_Obj_Dinner -ovl_Eff_Lastday -ovl_Bg_Ikana_Dharma -ovl_En_Akindonuts -ovl_Eff_Stk -ovl_En_Ig -ovl_En_Rg -ovl_En_Osk -ovl_En_Sth2 -ovl_En_Yb -ovl_En_Rz -ovl_En_Scopecoin -ovl_En_Bjt -ovl_En_Bomjima -ovl_En_Bomjimb -ovl_En_Bombers -ovl_En_Bombers2 -ovl_En_Bombal -ovl_Obj_Moon_Stone -ovl_Obj_Mu_Pict -ovl_Bg_Ikninside -ovl_Eff_Zoraband -ovl_Obj_Kepn_Koya -ovl_Obj_Usiyane -ovl_En_Nnh -ovl_Obj_Kzsaku -ovl_Obj_Milk_Bin -ovl_En_Kitan -ovl_Bg_Astr_Bombwall -ovl_Bg_Iknin_Susceil -ovl_En_Bsb -ovl_En_Recepgirl -ovl_En_Thiefbird -ovl_En_Jgame_Tsn -ovl_Obj_Jgame_Light -ovl_Obj_Yado -ovl_Demo_Syoten -ovl_Demo_Moonend -ovl_Bg_Lbfshot -ovl_Bg_Last_Bwall -ovl_En_And -ovl_En_Invadepoh_Demo -ovl_Obj_Danpeilift -ovl_En_Fall2 -ovl_Dm_Al -ovl_Dm_An -ovl_Dm_Ah -ovl_Dm_Nb -ovl_En_Drs -ovl_En_Ending_Hero -ovl_Dm_Bal -ovl_En_Paper -ovl_En_Hint_Skb -ovl_Dm_Tag -ovl_En_Bh -ovl_En_Ending_Hero2 -ovl_En_Ending_Hero3 -ovl_En_Ending_Hero4 -ovl_En_Ending_Hero5 -ovl_En_Ending_Hero6 -ovl_Dm_Gm -ovl_Obj_Swprize -ovl_En_Invisible_Ruppe -ovl_Obj_Ending -ovl_En_Rsn -gameplay_keep -gameplay_field_keep -gameplay_dangeon_keep -gameplay_object_exchange_static -object_link_boy -object_link_child -object_link_goron -object_link_zora -object_link_nuts -object_mask_ki_tan -object_mask_rabit -object_mask_skj -object_mask_truth -object_mask_gibudo -object_mask_json -object_mask_kerfay -object_mask_bigelf -object_mask_kyojin -object_mask_romerny -object_mask_posthat -object_mask_zacho -object_mask_stone -object_mask_bree -object_mask_gero -object_mask_yofukasi -object_mask_meoto -object_mask_dancer -object_mask_bakuretu -object_mask_bu_san -object_mask_goron -object_mask_zora -object_mask_nuts -object_mask_boy -object_box -object_okuta -object_wallmaster -object_dy_obj -object_firefly -object_dodongo -object_niw -object_tite -object_ph -object_dinofos -object_zl1 -object_bubble -object_test3 -object_famos -object_st -object_thiefbird -object_bombf -object_am -object_dekubaba -object_warp1 -object_b_heart -object_dekunuts -object_bb -object_death -object_hata -object_wood02 -object_trap -object_vm -object_efc_star_field -object_rd -object_yukimura_obj -object_horse_link_child -object_syokudai -object_efc_tw -object_gi_key -object_mir_ray -object_ctower_rot -object_bdoor -object_sb -object_gi_melody -object_gi_heart -object_gi_compass -object_gi_bosskey -object_gi_nuts -object_gi_hearts -object_gi_arrowcase -object_gi_bombpouch -object_in -object_os_anime -object_gi_bottle -object_gi_stick -object_gi_map -object_oF1d_map -object_ru2 -object_gi_magicpot -object_gi_bomb_1 -object_ma2 -object_gi_purse -object_rr -object_gi_arrow -object_gi_bomb_2 -object_gi_shield_2 -object_gi_hookshot -object_gi_ocarina -object_gi_milk -object_ma1 -object_ny -object_fr -object_gi_bow -object_gi_glasses -object_gi_liquid -object_ani -object_gi_shield_3 -object_gi_bean -object_gi_fish -object_gi_longsword -object_zo -object_umajump -object_mastergolon -object_masterzoora -object_aob -object_ik -object_ahg -object_cne -object_bji -object_bba -object_an1 -object_boj -object_fz -object_bob -object_ge1 -object_yabusame_point -object_d_hsblock -object_d_lift -object_mamenoki -object_goroiwa -object_toryo -object_daiku -object_nwc -object_gm -object_ms -object_hs -object_lightswitch -object_kusa -object_tsubo -object_kanban -object_owl -object_mk -object_fu -object_gi_ki_tan_mask -object_gi_mask18 -object_gi_rabit_mask -object_gi_truth_mask -object_stream -object_mm -object_js -object_cs -object_gi_soldout -object_mag -object_gi_golonmask -object_gi_zoramask -object_ka -object_zg -object_gi_m_arrow -object_ds2 -object_fish -object_gi_sutaru -object_ssh -object_bigslime -object_bg -object_bombiwa -object_hintnuts -object_rsn -object_gla -object_geldb -object_dog -object_kibako2 -object_dns -object_dnk -object_gi_insect -object_gi_ghost -object_gi_soul -object_f40_obj -object_gi_rupy -object_po_composer -object_mu -object_wf -object_skb -object_gs -object_ps -object_omoya_obj -object_crow -object_cow -object_gi_sword_1 -object_zl4 -object_grasshopper -object_boyo -object_fwall -object_jso -object_knight -object_icicle -object_spdweb -object_boss01 -object_boss02 -object_boss03 -object_boss04 -object_boss05 -object_boss07 -object_raf -object_funen -object_raillift -object_numa_obj -object_flowerpot -object_spinyroll -object_ice_block -object_keikoku_demo -object_slime -object_pr -object_f52_obj -object_f53_obj -object_kibako -object_sek -object_gmo -object_bat -object_sekihil -object_sekihig -object_sekihin -object_sekihiz -object_wiz -object_ladder -object_mkk -object_keikoku_obj -object_sichitai_obj -object_dekucity_ana_obj -object_rat -object_water_effect -object_dblue_object -object_bal -object_warp_uzu -object_driftice -object_fall -object_hanareyama_obj -object_crace_object -object_dno -object_obj_tokeidai -object_eg -object_tru -object_trt -object_hakugin_obj -object_horse_game_check -object_stk -object_mnk -object_gi_bottle_red -object_tokei_tobira -object_az -object_twig -object_dekucity_obj -object_po_fusen -object_racetsubo -object_ha -object_bigokuta -object_open_obj -object_fu_kaiten -object_fu_mato -object_mtoride -object_osn -object_tokei_step -object_lotus -object_tl -object_dkjail_obj -object_visiblock -object_tsn -object_ds2n -object_fsn -object_shn -object_bigicicle -object_gi_bottle_15 -object_tk -object_market_obj -object_gi_reserve00 -object_gi_reserve01 -object_lightblock -object_takaraya_objects -object_wdhand -object_sdn -object_snowwd -object_giant -object_comb -object_hana -object_boss_hakugin -object_meganeana_obj -object_gi_nutsmask -object_stk2 -object_spot11_obj -object_danpei_object -object_dhouse -object_hakaisi -object_po -object_snowman -object_po_sisters -object_pp -object_goronswitch -object_delf -object_botihasira -object_gi_bigbomb -object_pst -object_bsmask -object_spidertent -object_zoraegg -object_kbt -object_gg -object_maruta -object_ghaka -object_oyu -object_dnq -object_dai -object_kgy -object_fb -object_taisou -object_gk -object_haka_obj -object_dnt -object_yukiyama -object_icefloe -object_gi_gold_dust -object_gi_bottle_16 -object_gi_bottle_22 -object_bee -object_ot -object_utubo -object_dora -object_gi_loach -object_gi_seahorse -object_bigpo -object_hariko -object_dnj -object_sinkai_kabe -object_kin2_obj -object_ishi -object_hakugin_demo -object_jg -object_gi_sword_2 -object_gi_sword_3 -object_gi_sword_4 -object_um -object_rb -object_mbar_obj -object_ikana_obj -object_kz -object_tokei_turret -object_zog -object_rotlift -object_posthouse_obj -object_gi_mask09 -object_gi_mask14 -object_gi_mask15 -object_inibs_object -object_tree -object_kaizoku_obj -object_gi_reserve_b_00 -object_gi_reserve_c_00 -object_zob -object_milkbar -object_dmask -object_gi_reserve_c_01 -object_zod -object_kumo30 -object_obj_yasi -object_tanron1 -object_tanron2 -object_tanron3 -object_gi_magicmushroom -object_obj_chan -object_gi_mask10 -object_zos -object_an2 -object_an3 -object_f40_switch -object_lodmoon -object_tro -object_gi_mask12 -object_gi_mask23 -object_gi_bottle_21 -object_gi_camera -object_kamejima -object_nb -object_harfgibud -object_zov -object_ah -object_hgdoor -object_dor01 -object_dor02 -object_dor03 -object_dor04 -object_last_obj -object_redead_obj -object_ikninside_obj -object_iknv_obj -object_pamera -object_hsstump -object_zm -object_al -object_tab -object_secom_obj -object_dt -object_gi_mask03 -object_cha -object_obj_dinner -object_gi_reserve_b_01 -object_lastday -object_bai -object_ikn_demo -object_gi_fieldmap -object_big_fwall -object_hunsui -object_uch -object_tanron4 -object_tanron5 -object_in2 -object_yb -object_rz -object_bjt -object_taru -object_moonston -object_gi_schedule -object_gi_stonemask -object_zoraband -object_kepn_koya -object_obj_usiyane -object_gi_mask05 -object_gi_mask11 -object_gi_mask20 -object_nnh -object_kzsaku -object_obj_milk_bin -object_random_obj -object_kujiya -object_kitan -object_gi_mask06 -object_gi_mask16 -object_astr_obj -object_bsb -object_fall2 -object_sth -object_gi_mssa -object_smtower -object_gi_mask21 -object_yado_obj -object_syoten -object_moonend -object_ob -object_gi_bottle_04 -object_and -object_obj_danpeilift -object_drs -object_msmo -object_an4 -object_wdor01 -object_wdor02 -object_wdor03 -object_wdor04 -object_wdor05 -object_stk3 -object_kinsta1_obj -object_kinsta2_obj -object_bh -object_gi_mask17 -object_gi_mask22 -object_lbfshot -object_fusen -object_ending_obj -object_gi_mask13 -scene_texture_01 -scene_texture_02 -scene_texture_03 -scene_texture_04 -scene_texture_05 -scene_texture_06 -scene_texture_07 -scene_texture_08 -nintendo_rogo_static -title_static -memerrmsg -locerrmsg -parameter_static -week_static -daytelop_static -ger_daytelop_static -fra_daytelop_static -esp_daytelop_static -d2_fine_static -d2_cloud_static -d2_fine_pal_static -elf_message_field -elf_message_ydan -Z2_20SICHITAI2 -Z2_20SICHITAI2_room_00 -Z2_20SICHITAI2_room_01 -Z2_20SICHITAI2_room_02 -Z2_WITCH_SHOP -Z2_WITCH_SHOP_room_00 -Z2_LAST_BS -Z2_LAST_BS_room_00 -Z2_HAKASHITA -Z2_HAKASHITA_room_00 -Z2_HAKASHITA_room_01 -Z2_HAKASHITA_room_02 -Z2_HAKASHITA_room_03 -Z2_HAKASHITA_room_04 -Z2_AYASHIISHOP -Z2_AYASHIISHOP_room_00 -Z2_AYASHIISHOP_room_01 -Z2_OMOYA -Z2_OMOYA_room_00 -Z2_OMOYA_room_01 -Z2_OMOYA_room_02 -Z2_BOWLING -Z2_BOWLING_room_00 -Z2_SONCHONOIE -Z2_SONCHONOIE_room_00 -Z2_SONCHONOIE_room_01 -Z2_SONCHONOIE_room_02 -Z2_SONCHONOIE_room_03 -Z2_IKANA -Z2_IKANA_room_00 -Z2_IKANA_room_01 -Z2_IKANA_room_02 -Z2_IKANA_room_03 -Z2_IKANA_room_04 -Z2_KAIZOKU -Z2_KAIZOKU_room_00 -Z2_MILK_BAR -Z2_MILK_BAR_room_00 -Z2_INISIE_N -Z2_INISIE_N_room_00 -Z2_INISIE_N_room_01 -Z2_INISIE_N_room_02 -Z2_INISIE_N_room_03 -Z2_INISIE_N_room_04 -Z2_INISIE_N_room_05 -Z2_INISIE_N_room_06 -Z2_INISIE_N_room_07 -Z2_INISIE_N_room_08 -Z2_INISIE_N_room_09 -Z2_INISIE_N_room_10 -Z2_INISIE_N_room_11 -Z2_TAKARAYA -Z2_TAKARAYA_room_00 -Z2_INISIE_R -Z2_INISIE_R_room_00 -Z2_INISIE_R_room_01 -Z2_INISIE_R_room_02 -Z2_INISIE_R_room_03 -Z2_INISIE_R_room_04 -Z2_INISIE_R_room_05 -Z2_INISIE_R_room_06 -Z2_INISIE_R_room_07 -Z2_INISIE_R_room_08 -Z2_INISIE_R_room_09 -Z2_INISIE_R_room_10 -Z2_INISIE_R_room_11 -Z2_OKUJOU -Z2_OKUJOU_room_00 -Z2_OPENINGDAN -Z2_OPENINGDAN_room_00 -Z2_OPENINGDAN_room_01 -Z2_MITURIN -Z2_MITURIN_room_00 -Z2_MITURIN_room_01 -Z2_MITURIN_room_02 -Z2_MITURIN_room_03 -Z2_MITURIN_room_04 -Z2_MITURIN_room_05 -Z2_MITURIN_room_06 -Z2_MITURIN_room_07 -Z2_MITURIN_room_08 -Z2_MITURIN_room_09 -Z2_MITURIN_room_10 -Z2_MITURIN_room_11 -Z2_MITURIN_room_12 -Z2_13HUBUKINOMITI -Z2_13HUBUKINOMITI_room_00 -Z2_CASTLE -Z2_CASTLE_room_00 -Z2_CASTLE_room_01 -Z2_CASTLE_room_02 -Z2_CASTLE_room_03 -Z2_CASTLE_room_04 -Z2_CASTLE_room_05 -Z2_CASTLE_room_06 -Z2_CASTLE_room_07 -Z2_CASTLE_room_08 -Z2_CASTLE_room_09 -Z2_DEKUTES -Z2_DEKUTES_room_00 -Z2_MITURIN_BS -Z2_MITURIN_BS_room_00 -Z2_SYATEKI_MIZU -Z2_SYATEKI_MIZU_room_00 -Z2_HAKUGIN -Z2_HAKUGIN_room_00 -Z2_HAKUGIN_room_01 -Z2_HAKUGIN_room_02 -Z2_HAKUGIN_room_03 -Z2_HAKUGIN_room_04 -Z2_HAKUGIN_room_05 -Z2_HAKUGIN_room_06 -Z2_HAKUGIN_room_07 -Z2_HAKUGIN_room_08 -Z2_HAKUGIN_room_09 -Z2_HAKUGIN_room_10 -Z2_HAKUGIN_room_11 -Z2_HAKUGIN_room_12 -Z2_HAKUGIN_room_13 -Z2_ROMANYMAE -Z2_ROMANYMAE_room_00 -Z2_PIRATE -Z2_PIRATE_room_00 -Z2_PIRATE_room_01 -Z2_PIRATE_room_02 -Z2_PIRATE_room_03 -Z2_PIRATE_room_04 -Z2_PIRATE_room_05 -Z2_PIRATE_room_06 -Z2_PIRATE_room_07 -Z2_PIRATE_room_08 -Z2_PIRATE_room_09 -Z2_PIRATE_room_10 -Z2_PIRATE_room_11 -Z2_PIRATE_room_12 -Z2_PIRATE_room_13 -Z2_PIRATE_room_14 -Z2_SYATEKI_MORI -Z2_SYATEKI_MORI_room_00 -Z2_SINKAI -Z2_SINKAI_room_00 -Z2_YOUSEI_IZUMI -Z2_YOUSEI_IZUMI_room_00 -Z2_YOUSEI_IZUMI_room_01 -Z2_YOUSEI_IZUMI_room_02 -Z2_YOUSEI_IZUMI_room_03 -Z2_YOUSEI_IZUMI_room_04 -Z2_KINSTA1 -Z2_KINSTA1_room_00 -Z2_KINSTA1_room_01 -Z2_KINSTA1_room_02 -Z2_KINSTA1_room_03 -Z2_KINSTA1_room_04 -Z2_KINSTA1_room_05 -Z2_KINDAN2 -Z2_KINDAN2_room_00 -Z2_KINDAN2_room_01 -Z2_KINDAN2_room_02 -Z2_KINDAN2_room_03 -Z2_KINDAN2_room_04 -Z2_KINDAN2_room_05 -Z2_TENMON_DAI -Z2_TENMON_DAI_room_00 -Z2_TENMON_DAI_room_01 -Z2_LAST_DEKU -Z2_LAST_DEKU_room_00 -Z2_LAST_DEKU_room_01 -Z2_22DEKUCITY -Z2_22DEKUCITY_room_00 -Z2_22DEKUCITY_room_01 -Z2_22DEKUCITY_room_02 -Z2_KAJIYA -Z2_KAJIYA_room_00 -Z2_00KEIKOKU -Z2_00KEIKOKU_room_00 -Z2_POSTHOUSE -Z2_POSTHOUSE_room_00 -Z2_LABO -Z2_LABO_room_00 -Z2_DANPEI2TEST -Z2_DANPEI2TEST_room_00 -Z2_DANPEI2TEST_room_01 -Z2_16GORON_HOUSE -Z2_16GORON_HOUSE_room_00 -Z2_16GORON_HOUSE_room_01 -Z2_33ZORACITY -Z2_33ZORACITY_room_00 -Z2_8ITEMSHOP -Z2_8ITEMSHOP_room_00 -Z2_F01 -Z2_F01_room_00 -Z2_INISIE_BS -Z2_INISIE_BS_room_00 -Z2_30GYOSON -Z2_30GYOSON_room_00 -Z2_31MISAKI -Z2_31MISAKI_room_00 -Z2_TAKARAKUJI -Z2_TAKARAKUJI_room_00 -Z2_TORIDE -Z2_TORIDE_room_00 -Z2_FISHERMAN -Z2_FISHERMAN_room_00 -Z2_GORONSHOP -Z2_GORONSHOP_room_00 -Z2_DEKU_KING -Z2_DEKU_KING_room_00 -Z2_LAST_GORON -Z2_LAST_GORON_room_00 -Z2_LAST_GORON_room_01 -Z2_24KEMONOMITI -Z2_24KEMONOMITI_room_00 -Z2_F01_B -Z2_F01_B_room_00 -Z2_F01C -Z2_F01C_room_00 -Z2_BOTI -Z2_BOTI_room_00 -Z2_BOTI_room_01 -Z2_HAKUGIN_BS -Z2_HAKUGIN_BS_room_00 -Z2_20SICHITAI -Z2_20SICHITAI_room_00 -Z2_20SICHITAI_room_01 -Z2_20SICHITAI_room_02 -Z2_21MITURINMAE -Z2_21MITURINMAE_room_00 -Z2_LAST_ZORA -Z2_LAST_ZORA_room_00 -Z2_11GORONNOSATO2 -Z2_11GORONNOSATO2_room_00 -Z2_11GORONNOSATO2_room_01 -Z2_SEA -Z2_SEA_room_00 -Z2_SEA_room_01 -Z2_SEA_room_02 -Z2_SEA_room_03 -Z2_SEA_room_04 -Z2_SEA_room_05 -Z2_SEA_room_06 -Z2_SEA_room_07 -Z2_SEA_room_08 -Z2_SEA_room_09 -Z2_SEA_room_10 -Z2_SEA_room_11 -Z2_SEA_room_12 -Z2_SEA_room_13 -Z2_SEA_room_14 -Z2_SEA_room_15 -Z2_35TAKI -Z2_35TAKI_room_00 -Z2_REDEAD -Z2_REDEAD_room_00 -Z2_REDEAD_room_01 -Z2_REDEAD_room_02 -Z2_REDEAD_room_03 -Z2_REDEAD_room_04 -Z2_REDEAD_room_05 -Z2_REDEAD_room_06 -Z2_REDEAD_room_07 -Z2_REDEAD_room_08 -Z2_REDEAD_room_09 -Z2_REDEAD_room_10 -Z2_REDEAD_room_11 -Z2_REDEAD_room_12 -Z2_REDEAD_room_13 -Z2_BANDROOM -Z2_BANDROOM_room_00 -Z2_BANDROOM_room_01 -Z2_BANDROOM_room_02 -Z2_BANDROOM_room_03 -Z2_BANDROOM_room_04 -Z2_11GORONNOSATO -Z2_11GORONNOSATO_room_00 -Z2_11GORONNOSATO_room_01 -Z2_GORON_HAKA -Z2_GORON_HAKA_room_00 -Z2_SECOM -Z2_SECOM_room_00 -Z2_SECOM_room_01 -Z2_10YUKIYAMANOMURA -Z2_10YUKIYAMANOMURA_room_00 -Z2_TOUGITES -Z2_TOUGITES_room_00 -Z2_DANPEI -Z2_DANPEI_room_00 -Z2_DANPEI_room_01 -Z2_DANPEI_room_02 -Z2_DANPEI_room_03 -Z2_DANPEI_room_04 -Z2_DANPEI_room_05 -Z2_DANPEI_room_06 -Z2_DANPEI_room_07 -Z2_DANPEI_room_08 -Z2_IKANAMAE -Z2_IKANAMAE_room_00 -Z2_DOUJOU -Z2_DOUJOU_room_00 -Z2_MUSICHOUSE -Z2_MUSICHOUSE_room_00 -Z2_IKNINSIDE -Z2_IKNINSIDE_room_00 -Z2_IKNINSIDE_room_01 -Z2_MAP_SHOP -Z2_MAP_SHOP_room_00 -Z2_F40 -Z2_F40_room_00 -Z2_F41 -Z2_F41_room_00 -Z2_10YUKIYAMANOMURA2 -Z2_10YUKIYAMANOMURA2_room_00 -Z2_10YUKIYAMANOMURA2_room_01 -Z2_14YUKIDAMANOMITI -Z2_14YUKIDAMANOMITI_room_00 -Z2_12HAKUGINMAE -Z2_12HAKUGINMAE_room_00 -Z2_17SETUGEN -Z2_17SETUGEN_room_00 -Z2_17SETUGEN2 -Z2_17SETUGEN2_room_00 -Z2_SEA_BS -Z2_SEA_BS_room_00 -Z2_RANDOM -Z2_RANDOM_room_00 -Z2_RANDOM_room_01 -Z2_RANDOM_room_02 -Z2_RANDOM_room_03 -Z2_RANDOM_room_04 -Z2_RANDOM_room_05 -Z2_YADOYA -Z2_YADOYA_room_00 -Z2_YADOYA_room_01 -Z2_YADOYA_room_02 -Z2_YADOYA_room_03 -Z2_YADOYA_room_04 -Z2_KONPEKI_ENT -Z2_KONPEKI_ENT_room_00 -Z2_INSIDETOWER -Z2_INSIDETOWER_room_00 -Z2_INSIDETOWER_room_01 -Z2_26SARUNOMORI -Z2_26SARUNOMORI_room_00 -Z2_26SARUNOMORI_room_01 -Z2_26SARUNOMORI_room_02 -Z2_26SARUNOMORI_room_03 -Z2_26SARUNOMORI_room_04 -Z2_26SARUNOMORI_room_05 -Z2_26SARUNOMORI_room_06 -Z2_26SARUNOMORI_room_07 -Z2_26SARUNOMORI_room_08 -Z2_LOST_WOODS -Z2_LOST_WOODS_room_00 -Z2_LOST_WOODS_room_01 -Z2_LOST_WOODS_room_02 -Z2_LAST_LINK -Z2_LAST_LINK_room_00 -Z2_LAST_LINK_room_01 -Z2_LAST_LINK_room_02 -Z2_LAST_LINK_room_03 -Z2_LAST_LINK_room_04 -Z2_LAST_LINK_room_05 -Z2_LAST_LINK_room_06 -Z2_LAST_LINK_room_07 -Z2_SOUGEN -Z2_SOUGEN_room_00 -Z2_BOMYA -Z2_BOMYA_room_00 -Z2_KYOJINNOMA -Z2_KYOJINNOMA_room_00 -Z2_KOEPONARACE -Z2_KOEPONARACE_room_00 -Z2_GORONRACE -Z2_GORONRACE_room_00 -Z2_TOWN -Z2_TOWN_room_00 -Z2_ICHIBA -Z2_ICHIBA_room_00 -Z2_BACKTOWN -Z2_BACKTOWN_room_00 -Z2_CLOCKTOWER -Z2_CLOCKTOWER_room_00 -Z2_ALLEY -Z2_ALLEY_room_00 -SPOT00 -SPOT00_room_00 -KAKUSIANA -KAKUSIANA_room_00 -KAKUSIANA_room_01 -KAKUSIANA_room_02 -KAKUSIANA_room_03 -KAKUSIANA_room_04 -KAKUSIANA_room_05 -KAKUSIANA_room_06 -KAKUSIANA_room_07 -KAKUSIANA_room_08 -KAKUSIANA_room_09 -KAKUSIANA_room_10 -KAKUSIANA_room_11 -KAKUSIANA_room_12 -KAKUSIANA_room_13 -KAKUSIANA_room_14 -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 diff --git a/baseroms/n64-us/dmadata_start.txt b/baseroms/n64-us/dmadata_start.txt deleted file mode 100644 index ab6cc1902e..0000000000 --- a/baseroms/n64-us/dmadata_start.txt +++ /dev/null @@ -1 +0,0 @@ -0x1A500 diff --git a/baseroms/n64-us/segments.csv b/baseroms/n64-us/segments.csv new file mode 100644 index 0000000000..ab3eddc49b --- /dev/null +++ b/baseroms/n64-us/segments.csv @@ -0,0 +1,1553 @@ +Name,VRAM start +makerom,8007F000 +boot,80080060 +dmadata, +Audiobank, +Audioseq, +Audiotable, +kanji, +link_animetion, +icon_item_static_syms, +icon_item_24_static_syms, +icon_item_field_static, +icon_item_dungeon_static, +icon_item_gameover_static, +icon_item_jpn_static, +icon_item_vtx_static, +map_i_static, +map_grand_static, +item_name_static, +map_name_static, +icon_item_static_yar, +icon_item_24_static_yar, +schedule_dma_static_syms, +schedule_dma_static_yar, +schedule_static, +story_static, +do_action_static, +message_static, +message_texture_static, +nes_font_static, +message_data_static, +staff_message_data_static, +code,800A5AC0 +ovl_title,80800000 +ovl_select,80800910 +ovl_opening,80803DF0 +ovl_file_choose,80804010 +ovl_daytelop,80814EB0 +ovl_kaleido_scope,808160A0 +ovl_player_actor,8082DA90 +ovl_En_Test,80862B70 +ovl_En_GirlA,80863870 +ovl_En_Part,80865370 +ovl_En_Light,80865990 +ovl_En_Door,80866800 +ovl_En_Box,80867BD0 +ovl_En_Pametfrog,80869D90 +ovl_En_Okuta,8086DE20 +ovl_En_Bom,80870DB0 +ovl_En_Wallmas,80874810 +ovl_En_Dodongo,80876670 +ovl_En_Firefly,808796F0 +ovl_En_Horse,8087B730 +ovl_En_Arrow,8088A240 +ovl_En_Elf,8088C510 +ovl_En_Niw,80891060 +ovl_En_Tite,808937F0 +ovl_En_Peehat,80896F30 +ovl_En_Holl,80899960 +ovl_En_Dinofos,8089A6E0 +ovl_En_Hata,8089E8E0 +ovl_En_Zl1,8089ED90 +ovl_En_Viewer,8089EE20 +ovl_En_Bubble,8089F4E0 +ovl_Door_Shutter,808A08F0 +ovl_En_Boom,808A24D0 +ovl_En_Torch2,808A31B0 +ovl_En_Minifrog,808A3670 +ovl_En_St,808A5050 +ovl_Obj_Wturn,808A7930 +ovl_En_River_Sound,808A7E30 +ovl_En_Ossan,808A80A0 +ovl_En_Famos,808AC920 +ovl_En_Bombf,808AE8C0 +ovl_En_Am,808AFCD0 +ovl_En_Dekubaba,808B1330 +ovl_En_M_Fire1,808B5230 +ovl_En_M_Thunder,808B53C0 +ovl_Bg_Breakwall,808B7360 +ovl_Door_Warp1,808B8490 +ovl_Obj_Syokudai,808BC010 +ovl_Item_B_Heart,808BCDF0 +ovl_En_Dekunuts,808BD1E0 +ovl_En_Bbfall,808BF220 +ovl_Arms_Hook,808C1030 +ovl_En_Bb,808C1D40 +ovl_Bg_Keikoku_Spr,808C3A50 +ovl_En_Wood02,808C3C00 +ovl_En_Death,808C4F80 +ovl_En_Minideath,808CA0B0 +ovl_En_Vm,808CC260 +ovl_Demo_Effect,808CD740 +ovl_Demo_Kankyo,808CE450 +ovl_En_Floormas,808D0680 +ovl_En_Rd,808D3E20 +ovl_Bg_F40_Flift,808D7550 +ovl_Obj_Mure,808D78D0 +ovl_En_Sw,808D8940 +ovl_Object_Kankyo,808DBE80 +ovl_En_Horse_Link_Child,808DE5C0 +ovl_Door_Ana,808E01A0 +ovl_En_Encount1,808E0830 +ovl_Demo_Tre_Lgt,808E0E40 +ovl_En_Encount2,808E1560 +ovl_En_Fire_Rock,808E1FE0 +ovl_Bg_Ctower_Rot,808E2070 +ovl_Mir_Ray,808E2600 +ovl_En_Sb,808E3EF0 +ovl_En_Bigslime,808E4FC0 +ovl_En_Karebaba,808F1200 +ovl_En_In,808F30B0 +ovl_En_Bom_Chu,808F74B0 +ovl_En_Horse_Game_Check,808F8AA0 +ovl_En_Rr,808F9E00 +ovl_En_Fr,808FC550 +ovl_En_Fishing,808FC6C0 +ovl_Obj_Oshihiki,80917290 +ovl_Eff_Dust,80918B40 +ovl_Bg_Umajump,80919F30 +ovl_En_Insect,8091A8A0 +ovl_En_Butte,8091C0A0 +ovl_En_Fish,8091D630 +ovl_Item_Etcetera,8091FEF0 +ovl_Arrow_Fire,80920340 +ovl_Arrow_Ice,80922430 +ovl_Arrow_Light,80924300 +ovl_Obj_Kibako,809261B0 +ovl_Obj_Tsubo,809275C0 +ovl_En_Ik,80929910 +ovl_Demo_Shd,8092C530 +ovl_En_Dns,8092C5C0 +ovl_Elf_Msg,8092DF90 +ovl_En_Honotrap,8092E510 +ovl_En_Tubo_Trap,809307E0 +ovl_Obj_Ice_Poly,80931560 +ovl_En_Fz,80932490 +ovl_En_Kusa,809349E0 +ovl_Obj_Bean,80936CF0 +ovl_Obj_Bombiwa,809393B0 +ovl_Obj_Switch,8093ABD0 +ovl_Obj_Lift,8093D3C0 +ovl_Obj_Hsblock,8093DEA0 +ovl_En_Okarina_Tag,8093E420 +ovl_En_Goroiwa,8093E8A0 +ovl_En_Daiku,809434B0 +ovl_En_Nwc,809441E0 +ovl_Item_Inbox,809454F0 +ovl_En_Ge1,80945650 +ovl_Obj_Blockstop,809466A0 +ovl_En_Sda,809468D0 +ovl_En_Clear_Tag,80947F60 +ovl_En_Gm,8094DEE0 +ovl_En_Ms,80952620 +ovl_En_Hs,80952C50 +ovl_Bg_Ingate,80953A90 +ovl_En_Kanban,80954960 +ovl_En_Attack_Niw,809580C0 +ovl_En_Mk,809592E0 +ovl_En_Owl,8095A510 +ovl_En_Ishi,8095D6E0 +ovl_Obj_Hana,8095FB10 +ovl_Obj_Lightswitch,8095FBF0 +ovl_Obj_Mure2,80960CF0 +ovl_En_Fu,809616E0 +ovl_En_Stream,80965650 +ovl_En_Mm,80965BB0 +ovl_En_Weather_Tag,80966410 +ovl_En_Ani,809679D0 +ovl_En_Js,809687B0 +ovl_En_Okarina_Effect,8096B0A0 +ovl_En_Mag,8096B310 +ovl_Elf_Msg2,8096EC40 +ovl_Bg_F40_Swlift,8096F160 +ovl_En_Kakasi,8096F5E0 +ovl_Obj_Makeoshihiki,80972350 +ovl_Oceff_Spot,80972680 +ovl_En_Torch,80973550 +ovl_Shot_Sun,80973640 +ovl_Obj_Roomtimer,80973C50 +ovl_En_Ssh,80973EF0 +ovl_Oceff_Wipe,809764B0 +ovl_Effect_Ss_Dust,80977210 +ovl_Effect_Ss_Kirakira,80977A00 +ovl_Effect_Ss_Bomb2,80978070 +ovl_Effect_Ss_Blast,809788D0 +ovl_Effect_Ss_G_Spk,80978C30 +ovl_Effect_Ss_D_Fire,809791B0 +ovl_Effect_Ss_Bubble,809795C0 +ovl_Effect_Ss_G_Ripple,80979B30 +ovl_Effect_Ss_G_Splash,8097A050 +ovl_Effect_Ss_G_Fire,8097A470 +ovl_Effect_Ss_Lightning,8097A680 +ovl_Effect_Ss_Dt_Bubble,8097AD60 +ovl_Effect_Ss_Hahen,8097B270 +ovl_Effect_Ss_Stick,8097B810 +ovl_Effect_Ss_Sibuki,8097BAD0 +ovl_Effect_Ss_Stone1,8097C130 +ovl_Effect_Ss_Hitmark,8097C490 +ovl_Effect_Ss_Fhg_Flash,8097C990 +ovl_Effect_Ss_K_Fire,8097D410 +ovl_Effect_Ss_Solder_Srch_Ball,8097D850 +ovl_Effect_Ss_Kakera,8097DCA0 +ovl_Effect_Ss_Ice_Piece,8097ECD0 +ovl_Effect_Ss_En_Ice,8097F0D0 +ovl_Effect_Ss_Fire_Tail,8097F880 +ovl_Effect_Ss_En_Fire,8097FF60 +ovl_Effect_Ss_Extra,809805D0 +ovl_Effect_Ss_Dead_Db,80980940 +ovl_Effect_Ss_Dead_Dd,80980D50 +ovl_Effect_Ss_Dead_Ds,809812E0 +ovl_Oceff_Storm,80981760 +ovl_Obj_Demo,80983520 +ovl_En_Minislime,809838F0 +ovl_En_Nutsball,80985C40 +ovl_Oceff_Wipe2,80986270 +ovl_Oceff_Wipe3,809879E0 +ovl_En_Dg,80989140 +ovl_En_Si,8098CA20 +ovl_Obj_Comb,8098CE40 +ovl_Obj_Kibako2,8098E5C0 +ovl_En_Hs2,8098EF60 +ovl_Obj_Mure3,8098F040 +ovl_En_Tg,8098F800 +ovl_En_Wf,80990310 +ovl_En_Skb,809947B0 +ovl_En_Gs,80997A90 +ovl_Obj_Sound,8099A920 +ovl_En_Crow,8099AB30 +ovl_En_Cow,8099C290 +ovl_Oceff_Wipe4,8099D780 +ovl_En_Zo,8099E790 +ovl_Effect_Ss_Ice_Smoke,8099F730 +ovl_Obj_Makekinsuta,8099FA40 +ovl_En_Ge3,8099FEB0 +ovl_Obj_Hamishi,809A0F20 +ovl_En_Zl4,809A1BB0 +ovl_En_Mm2,809A2030 +ovl_Door_Spiral,809A2B60 +ovl_Obj_Pzlblock,809A33E0 +ovl_Obj_Toge,809A41C0 +ovl_Obj_Armos,809A4E00 +ovl_Obj_Boyo,809A5D10 +ovl_En_Grasshopper,809A6280 +ovl_Obj_Grass,809A9110 +ovl_Obj_Grass_Carry,809AAE60 +ovl_Obj_Grass_Unit,809ABDE0 +ovl_Bg_Fire_Wall,809AC4B0 +ovl_En_Bu,809ACD90 +ovl_En_Encount3,809ACF40 +ovl_En_Jso,809AD8E0 +ovl_Obj_Chikuwa,809B1550 +ovl_En_Knight,809B20F0 +ovl_En_Warp_tag,809C0760 +ovl_En_Aob_01,809C10B0 +ovl_En_Boj_01,809C3D80 +ovl_En_Boj_02,809C3E10 +ovl_En_Boj_03,809C3EA0 +ovl_En_Encount4,809C3F30 +ovl_En_Bom_Bowl_Man,809C4790 +ovl_En_Syateki_Man,809C64C0 +ovl_Bg_Icicle,809C9A60 +ovl_En_Syateki_Crow,809CA3F0 +ovl_En_Boj_04,809CB200 +ovl_En_Cne_01,809CB290 +ovl_En_Bba_01,809CC060 +ovl_En_Bji_01,809CCDE0 +ovl_Bg_Spdweb,809CDEC0 +ovl_En_Mt_tag,809CF350 +ovl_Boss_01,809D0530 +ovl_Boss_02,809DA1D0 +ovl_Boss_03,809E2760 +ovl_Boss_04,809EC040 +ovl_Boss_05,809EE4E0 +ovl_Boss_06,809F2120 +ovl_Boss_07,809F4980 +ovl_Bg_Dy_Yoseizo,80A0A8A0 +ovl_En_Boj_05,80A0C780 +ovl_En_Sob1,80A0C810 +ovl_En_Go,80A10FD0 +ovl_En_Raf,80A16D40 +ovl_Obj_Funen,80A19740 +ovl_Obj_Raillift,80A19910 +ovl_Bg_Numa_Hana,80A1A500 +ovl_Obj_Flowerpot,80A1B3D0 +ovl_Obj_Spinyroll,80A1DA50 +ovl_Dm_Hina,80A1F410 +ovl_En_Syateki_Wf,80A1FE50 +ovl_Obj_Skateblock,80A21150 +ovl_Effect_En_Ice_Block,80A22D40 +ovl_Obj_Iceblock,80A23090 +ovl_En_Bigpamet,80A27520 +ovl_Bg_Dblue_Movebg,80A29A80 +ovl_En_Syateki_Dekunuts,80A2BC00 +ovl_Elf_Msg3,80A2CD10 +ovl_En_Fg,80A2D280 +ovl_Dm_Ravine,80A2E7A0 +ovl_Dm_Sa,80A2E960 +ovl_En_Slime,80A2EDA0 +ovl_En_Pr,80A32210 +ovl_Obj_Toudai,80A33B00 +ovl_Obj_Entotu,80A34700 +ovl_Obj_Bell,80A35510 +ovl_En_Syateki_Okuta,80A35FF0 +ovl_Obj_Shutter,80A37ED0 +ovl_Dm_Zl,80A38190 +ovl_En_Ru,80A389A0 +ovl_En_Elfgrp,80A396B0 +ovl_Dm_Tsg,80A3AC60 +ovl_En_Baguo,80A3B080 +ovl_Obj_Vspinyroll,80A3C4E0 +ovl_Obj_Smork,80A3D680 +ovl_En_Test2,80A3E390 +ovl_En_Test3,80A3E7E0 +ovl_En_Test4,80A41D70 +ovl_En_Bat,80A434E0 +ovl_En_Sekihi,80A44C80 +ovl_En_Wiz,80A45360 +ovl_En_Wiz_Brock,80A48FE0 +ovl_En_Wiz_Fire,80A496A0 +ovl_Eff_Change,80A4C490 +ovl_Dm_Statue,80A4C9B0 +ovl_Obj_Fireshield,80A4CA90 +ovl_Bg_Ladder,80A4D9F0 +ovl_En_Mkk,80A4DED0 +ovl_Demo_Getitem,80A4FA40 +ovl_En_Dnb,80A4FDD0 +ovl_En_Dnh,80A50D40 +ovl_En_Dnk,80A514F0 +ovl_En_Dnq,80A52530 +ovl_Bg_Keikoku_Saku,80A537D0 +ovl_Obj_Hugebombiwa,80A53BE0 +ovl_En_Firefly2,80A560C0 +ovl_En_Rat,80A56150 +ovl_En_Water_Effect,80A587A0 +ovl_En_Kusa2,80A5B160 +ovl_Bg_Spout_Fire,80A60B20 +ovl_En_Dy_Extra,80A612B0 +ovl_En_Bal,80A61810 +ovl_En_Ginko_Man,80A644A0 +ovl_En_Warp_Uzu,80A66180 +ovl_Obj_Driftice,80A66570 +ovl_En_Look_Nuts,80A678B0 +ovl_En_Mushi2,80A687A0 +ovl_En_Fall,80A6BF90 +ovl_En_Mm3,80A6F0A0 +ovl_Bg_Crace_Movebg,80A706F0 +ovl_En_Dno,80A711D0 +ovl_En_Pr2,80A73FA0 +ovl_En_Prz,80A75DC0 +ovl_En_Jso2,80A773C0 +ovl_Obj_Etcetera,80A7BC70 +ovl_En_Egol,80A7C990 +ovl_Obj_Mine,80A811D0 +ovl_Obj_Purify,80A84CD0 +ovl_En_Tru,80A85620 +ovl_En_Trt,80A8B770 +ovl_En_Test5,80A903B0 +ovl_En_Test6,80A90730 +ovl_En_Az,80A94A30 +ovl_En_Estone,80A99EA0 +ovl_Bg_Hakugin_Post,80A9ACD0 +ovl_Dm_Opstage,80A9F950 +ovl_Dm_Stk,80A9FDB0 +ovl_Dm_Char00,80AA5580 +ovl_Dm_Char01,80AA81E0 +ovl_Dm_Char02,80AAAE30 +ovl_Dm_Char03,80AAB4A0 +ovl_Dm_Char04,80AABC40 +ovl_Dm_Char05,80AAC5A0 +ovl_Dm_Char06,80AAE680 +ovl_Dm_Char07,80AAE9C0 +ovl_Dm_Char08,80AAF050 +ovl_Dm_Char09,80AB1E10 +ovl_Obj_Tokeidai,80AB2790 +ovl_En_Mnk,80AB4D10 +ovl_En_Egblock,80ABA7A0 +ovl_En_Guard_Nuts,80ABB0E0 +ovl_Bg_Hakugin_Bombwall,80ABBFC0 +ovl_Obj_Tokei_Tobira,80ABD1D0 +ovl_Bg_Hakugin_Elvpole,80ABD830 +ovl_En_Ma4,80ABDCA0 +ovl_En_Twig,80AC0830 +ovl_En_Po_Fusen,80AC1270 +ovl_En_Door_Etc,80AC1ED0 +ovl_En_Bigokuta,80AC26F0 +ovl_Bg_Icefloe,80AC48F0 +ovl_fbdemo_triforce,80AC5070 +ovl_fbdemo_wipe1,80AC57B0 +ovl_fbdemo_wipe3,80AC6740 +ovl_fbdemo_wipe4,80AC8430 +ovl_fbdemo_wipe5,80AC86F0 +ovl_Effect_Ss_Sbn,80AC8B50 +ovl_Obj_Ocarinalift,80AC94C0 +ovl_En_Time_Tag,80AC9EA0 +ovl_Bg_Open_Shutter,80ACAB10 +ovl_Bg_Open_Spot,80ACB1E0 +ovl_Bg_Fu_Kaiten,80ACB400 +ovl_Obj_Aqua,80ACB6A0 +ovl_En_Elforg,80ACC470 +ovl_En_Elfbub,80ACDCD0 +ovl_En_Fu_Mato,80ACE330 +ovl_En_Fu_Kago,80ACF780 +ovl_En_Osn,80AD0830 +ovl_Bg_Ctower_Gear,80AD2B70 +ovl_En_Trt2,80AD3380 +ovl_Obj_Tokei_Step,80AD5BB0 +ovl_Bg_Lotus,80AD6760 +ovl_En_Kame,80AD6DD0 +ovl_Obj_Takaraya_Wall,80AD9240 +ovl_Bg_Fu_Mizu,80ADAAF0 +ovl_En_Sellnuts,80ADADD0 +ovl_Bg_Dkjail_Ivy,80ADE230 +ovl_Obj_Visiblock,80ADEA70 +ovl_En_Takaraya,80ADEB90 +ovl_En_Tsn,80ADFCA0 +ovl_En_Ds2n,80AE1650 +ovl_En_Fsn,80AE1B70 +ovl_En_Shn,80AE6130 +ovl_En_Stop_heishi,80AE73A0 +ovl_Obj_Bigicicle,80AE8B70 +ovl_En_Lift_Nuts,80AE9A20 +ovl_En_Tk,80AEC460 +ovl_Bg_Market_Step,80AF0060 +ovl_Obj_Lupygamelift,80AF0170 +ovl_En_Test7,80AF0820 +ovl_Obj_Lightblock,80AF3910 +ovl_Mir_Ray2,80AF3F70 +ovl_En_Wdhand,80AF43F0 +ovl_En_Gamelupy,80AF6760 +ovl_Bg_Danpei_Movebg,80AF6DE0 +ovl_En_Snowwd,80AF7640 +ovl_En_Pm,80AF7B40 +ovl_En_Gakufu,80AFC960 +ovl_Elf_Msg4,80AFD380 +ovl_Elf_Msg5,80AFD990 +ovl_En_Col_Man,80AFDC40 +ovl_En_Talk_Gibud,80AFE8A0 +ovl_En_Giant,80B01990 +ovl_Obj_Snowball,80B02CD0 +ovl_Boss_Hakugin,80B05290 +ovl_En_Gb2,80B0F5E0 +ovl_En_Onpuman,80B11E60 +ovl_Bg_Tobira01,80B12430 +ovl_En_Tag_Obj,80B12870 +ovl_Obj_Dhouse,80B12980 +ovl_Obj_Hakaisi,80B14180 +ovl_Bg_Hakugin_Switch,80B15790 +ovl_En_Snowman,80B16B00 +ovl_TG_Sw,80B19F60 +ovl_En_Po_Sisters,80B1A3B0 +ovl_En_Pp,80B1DEB0 +ovl_En_Hakurock,80B21B00 +ovl_En_Hanabi,80B22C00 +ovl_Obj_Dowsing,80B23D50 +ovl_Obj_Wind,80B23ED0 +ovl_En_Racedog,80B24630 +ovl_En_Kendo_Js,80B262A0 +ovl_Bg_Botihasira,80B28080 +ovl_En_Fish2,80B28370 +ovl_En_Pst,80B2B830 +ovl_En_Poh,80B2C6F0 +ovl_Obj_Spidertent,80B2FB10 +ovl_En_Zoraegg,80B31590 +ovl_En_Kbt,80B33D30 +ovl_En_Gg,80B34F70 +ovl_En_Maruta,80B37080 +ovl_Obj_Snowball2,80B38E20 +ovl_En_Gg2,80B3AC50 +ovl_Obj_Ghaka,80B3C260 +ovl_En_Dnp,80B3CA20 +ovl_En_Dai,80B3DFF0 +ovl_Bg_Goron_Oyu,80B40080 +ovl_En_Kgy,80B40800 +ovl_En_Invadepoh,80B439B0 +ovl_En_Gk,80B50410 +ovl_En_An,80B53840 +ovl_En_Bee,80B5A720 +ovl_En_Ot,80B5B2E0 +ovl_En_Dragon,80B5E890 +ovl_Obj_Dora,80B60AD0 +ovl_En_Bigpo,80B615E0 +ovl_Obj_Kendo_Kanban,80B654C0 +ovl_Obj_Hariko,80B66A20 +ovl_En_Sth,80B66D30 +ovl_Bg_Sinkai_Kabe,80B6D660 +ovl_Bg_Haka_Curtain,80B6DBE0 +ovl_Bg_Kin2_Bombwall,80B6E020 +ovl_Bg_Kin2_Fence,80B6E820 +ovl_Bg_Kin2_Picture,80B6EFA0 +ovl_Bg_Kin2_Shelf,80B6FB30 +ovl_En_Rail_Skb,80B708C0 +ovl_En_Jg,80B73A90 +ovl_En_Tru_Mt,80B76030 +ovl_Obj_Um,80B77770 +ovl_En_Neo_Reeba,80B7C890 +ovl_Bg_Mbar_Chair,80B7E930 +ovl_Bg_Ikana_Block,80B7EA60 +ovl_Bg_Ikana_Mirror,80B7F730 +ovl_Bg_Ikana_Rotaryroom,80B802E0 +ovl_Bg_Dblue_Balance,80B823B0 +ovl_Bg_Dblue_Waterfall,80B83C80 +ovl_En_Kaizoku,80B85590 +ovl_En_Ge2,80B8B2D0 +ovl_En_Ma_Yts,80B8D030 +ovl_En_Ma_Yto,80B8E520 +ovl_Obj_Tokei_Turret,80B91CC0 +ovl_Bg_Dblue_Elevator,80B91F20 +ovl_Obj_Warpstone,80B92B10 +ovl_En_Zog,80B93310 +ovl_Obj_Rotlift,80B95E20 +ovl_Obj_Jg_Gakki,80B961E0 +ovl_Bg_Inibs_Movebg,80B96410 +ovl_En_Zot,80B965D0 +ovl_Obj_Tree,80B9A0B0 +ovl_Obj_Y2lift,80B9A650 +ovl_Obj_Y2shutter,80B9A980 +ovl_Obj_Boat,80B9AF50 +ovl_Obj_Taru,80B9B6E0 +ovl_Obj_Hunsui,80B9C450 +ovl_En_Jc_Mato,80B9DEE0 +ovl_Mir_Ray3,80B9E2C0 +ovl_En_Zob,80B9F570 +ovl_Elf_Msg6,80BA15A0 +ovl_Obj_Nozoki,80BA2420 +ovl_En_Toto,80BA36C0 +ovl_En_Railgibud,80BA5400 +ovl_En_Baba,80BA8820 +ovl_En_Suttari,80BAA6D0 +ovl_En_Zod,80BAEF70 +ovl_En_Kujiya,80BB08E0 +ovl_En_Geg,80BB16D0 +ovl_Obj_Kinoko,80BB4700 +ovl_Obj_Yasi,80BB4AF0 +ovl_En_Tanron1,80BB4E00 +ovl_En_Tanron2,80BB67D0 +ovl_En_Tanron3,80BB85A0 +ovl_Obj_Chan,80BB98E0 +ovl_En_Zos,80BBACA0 +ovl_En_S_Goro,80BBCA80 +ovl_En_Nb,80BBFDB0 +ovl_En_Ja,80BC1900 +ovl_Bg_F40_Block,80BC3980 +ovl_Bg_F40_Switch,80BC47B0 +ovl_En_Po_Composer,80BC4F30 +ovl_En_Guruguru,80BC6BF0 +ovl_Oceff_Wipe5,80BC7AD0 +ovl_En_Stone_heishi,80BC9270 +ovl_Oceff_Wipe6,80BCA5A0 +ovl_En_Scopenuts,80BCABF0 +ovl_En_Scopecrow,80BCD000 +ovl_Oceff_Wipe7,80BCDCB0 +ovl_Eff_Kamejima_Wave,80BCEB20 +ovl_En_Hg,80BCF1D0 +ovl_En_Hgo,80BD02B0 +ovl_En_Zov,80BD11E0 +ovl_En_Ah,80BD2A30 +ovl_Obj_Hgdoor,80BD4090 +ovl_Bg_Ikana_Bombwall,80BD4720 +ovl_Bg_Ikana_Ray,80BD53C0 +ovl_Bg_Ikana_Shutter,80BD5690 +ovl_Bg_Haka_Bombwall,80BD5E00 +ovl_Bg_Haka_Tomb,80BD6580 +ovl_En_Sc_Ruppe,80BD6910 +ovl_Bg_Iknv_Doukutu,80BD6F10 +ovl_Bg_Iknv_Obj,80BD7AB0 +ovl_En_Pamera,80BD82B0 +ovl_Obj_HsStump,80BDAA30 +ovl_En_Hidden_Nuts,80BDB040 +ovl_En_Zow,80BDC270 +ovl_En_Talk,80BDDFE0 +ovl_En_Al,80BDE1A0 +ovl_En_Tab,80BE04E0 +ovl_En_Nimotsu,80BE1C80 +ovl_En_Hit_Tag,80BE2030 +ovl_En_Ruppecrow,80BE2260 +ovl_En_Tanron4,80BE3B80 +ovl_En_Tanron5,80BE4930 +ovl_En_Tanron6,80BE6040 +ovl_En_Daiku2,80BE61D0 +ovl_En_Muto,80BE7B00 +ovl_En_Baisen,80BE84F0 +ovl_En_Heishi,80BE8F20 +ovl_En_Demo_heishi,80BE9510 +ovl_En_Dt,80BE9B20 +ovl_En_Cha,80BEB520 +ovl_Obj_Dinner,80BEB940 +ovl_Eff_Lastday,80BEBAC0 +ovl_Bg_Ikana_Dharma,80BEC240 +ovl_En_Akindonuts,80BECBE0 +ovl_Eff_Stk,80BF0D90 +ovl_En_Ig,80BF1150 +ovl_En_Rg,80BF3920 +ovl_En_Osk,80BF5C20 +ovl_En_Sth2,80BF74E0 +ovl_En_Yb,80BFA100 +ovl_En_Rz,80BFB480 +ovl_En_Scopecoin,80BFCFA0 +ovl_En_Bjt,80BFD2E0 +ovl_En_Bomjima,80BFE170 +ovl_En_Bomjimb,80C00EA0 +ovl_En_Bombers,80C03530 +ovl_En_Bombers2,80C04930 +ovl_En_Bombal,80C05A70 +ovl_Obj_Moon_Stone,80C06510 +ovl_Obj_Mu_Pict,80C06AA0 +ovl_Bg_Ikninside,80C07110 +ovl_Eff_Zoraband,80C07740 +ovl_Obj_Kepn_Koya,80C07B20 +ovl_Obj_Usiyane,80C07C80 +ovl_En_Nnh,80C08760 +ovl_Obj_Kzsaku,80C08A80 +ovl_Obj_Milk_Bin,80C08E40 +ovl_En_Kitan,80C090D0 +ovl_Bg_Astr_Bombwall,80C09ED0 +ovl_Bg_Iknin_Susceil,80C0A740 +ovl_En_Bsb,80C0B290 +ovl_En_Recepgirl,80C0FFD0 +ovl_En_Thiefbird,80C10770 +ovl_En_Jgame_Tsn,80C13930 +ovl_Obj_Jgame_Light,80C152F0 +ovl_Obj_Yado,80C161E0 +ovl_Demo_Syoten,80C16480 +ovl_Demo_Moonend,80C17A10 +ovl_Bg_Lbfshot,80C18120 +ovl_Bg_Last_Bwall,80C18240 +ovl_En_And,80C18B90 +ovl_En_Invadepoh_Demo,80C192A0 +ovl_Obj_Danpeilift,80C1ADC0 +ovl_En_Fall2,80C1B640 +ovl_Dm_Al,80C1BD90 +ovl_Dm_An,80C1C410 +ovl_Dm_Ah,80C1D410 +ovl_Dm_Nb,80C1DED0 +ovl_En_Drs,80C1E290 +ovl_En_Ending_Hero,80C1E690 +ovl_Dm_Bal,80C1E9E0 +ovl_En_Paper,80C1F3D0 +ovl_En_Hint_Skb,80C1FCF0 +ovl_Dm_Tag,80C22350 +ovl_En_Bh,80C22D40 +ovl_En_Ending_Hero2,80C23230 +ovl_En_Ending_Hero3,80C23460 +ovl_En_Ending_Hero4,80C23690 +ovl_En_Ending_Hero5,80C238C0 +ovl_En_Ending_Hero6,80C23C90 +ovl_Dm_Gm,80C24360 +ovl_Obj_Swprize,80C25360 +ovl_En_Invisible_Ruppe,80C258A0 +ovl_Obj_Ending,80C25BC0 +ovl_En_Rsn,80C25D40 +gameplay_keep, +gameplay_field_keep, +gameplay_dangeon_keep, +gameplay_object_exchange_static, +object_link_boy, +object_link_child, +object_link_goron, +object_link_zora, +object_link_nuts, +object_mask_ki_tan, +object_mask_rabit, +object_mask_skj, +object_mask_truth, +object_mask_gibudo, +object_mask_json, +object_mask_kerfay, +object_mask_bigelf, +object_mask_kyojin, +object_mask_romerny, +object_mask_posthat, +object_mask_zacho, +object_mask_stone, +object_mask_bree, +object_mask_gero, +object_mask_yofukasi, +object_mask_meoto, +object_mask_dancer, +object_mask_bakuretu, +object_mask_bu_san, +object_mask_goron, +object_mask_zora, +object_mask_nuts, +object_mask_boy, +object_box, +object_okuta, +object_wallmaster, +object_dy_obj, +object_firefly, +object_dodongo, +object_niw, +object_tite, +object_ph, +object_dinofos, +object_zl1, +object_bubble, +object_test3, +object_famos, +object_st, +object_thiefbird, +object_bombf, +object_am, +object_dekubaba, +object_warp1, +object_b_heart, +object_dekunuts, +object_bb, +object_death, +object_hata, +object_wood02, +object_trap, +object_vm, +object_efc_star_field, +object_rd, +object_yukimura_obj, +object_horse_link_child, +object_syokudai, +object_efc_tw, +object_gi_key, +object_mir_ray, +object_ctower_rot, +object_bdoor, +object_sb, +object_gi_melody, +object_gi_heart, +object_gi_compass, +object_gi_bosskey, +object_gi_nuts, +object_gi_hearts, +object_gi_arrowcase, +object_gi_bombpouch, +object_in, +object_os_anime, +object_gi_bottle, +object_gi_stick, +object_gi_map, +object_oF1d_map, +object_ru2, +object_gi_magicpot, +object_gi_bomb_1, +object_ma2, +object_gi_purse, +object_rr, +object_gi_arrow, +object_gi_bomb_2, +object_gi_shield_2, +object_gi_hookshot, +object_gi_ocarina, +object_gi_milk, +object_ma1, +object_ny, +object_fr, +object_gi_bow, +object_gi_glasses, +object_gi_liquid, +object_ani, +object_gi_shield_3, +object_gi_bean, +object_gi_fish, +object_gi_longsword, +object_zo, +object_umajump, +object_mastergolon, +object_masterzoora, +object_aob, +object_ik, +object_ahg, +object_cne, +object_bji, +object_bba, +object_an1, +object_boj, +object_fz, +object_bob, +object_ge1, +object_yabusame_point, +object_d_hsblock, +object_d_lift, +object_mamenoki, +object_goroiwa, +object_toryo, +object_daiku, +object_nwc, +object_gm, +object_ms, +object_hs, +object_lightswitch, +object_kusa, +object_tsubo, +object_kanban, +object_owl, +object_mk, +object_fu, +object_gi_ki_tan_mask, +object_gi_mask18, +object_gi_rabit_mask, +object_gi_truth_mask, +object_stream, +object_mm, +object_js, +object_cs, +object_gi_soldout, +object_mag, +object_gi_golonmask, +object_gi_zoramask, +object_ka, +object_zg, +object_gi_m_arrow, +object_ds2, +object_fish, +object_gi_sutaru, +object_ssh, +object_bigslime, +object_bg, +object_bombiwa, +object_hintnuts, +object_rsn, +object_gla, +object_geldb, +object_dog, +object_kibako2, +object_dns, +object_dnk, +object_gi_insect, +object_gi_ghost, +object_gi_soul, +object_f40_obj, +object_gi_rupy, +object_po_composer, +object_mu, +object_wf, +object_skb, +object_gs, +object_ps, +object_omoya_obj, +object_crow, +object_cow, +object_gi_sword_1, +object_zl4, +object_grasshopper, +object_boyo, +object_fwall, +object_jso, +object_knight, +object_icicle, +object_spdweb, +object_boss01, +object_boss02, +object_boss03, +object_boss04, +object_boss05, +object_boss07, +object_raf, +object_funen, +object_raillift, +object_numa_obj, +object_flowerpot, +object_spinyroll, +object_ice_block, +object_keikoku_demo, +object_slime, +object_pr, +object_f52_obj, +object_f53_obj, +object_kibako, +object_sek, +object_gmo, +object_bat, +object_sekihil, +object_sekihig, +object_sekihin, +object_sekihiz, +object_wiz, +object_ladder, +object_mkk, +object_keikoku_obj, +object_sichitai_obj, +object_dekucity_ana_obj, +object_rat, +object_water_effect, +object_dblue_object, +object_bal, +object_warp_uzu, +object_driftice, +object_fall, +object_hanareyama_obj, +object_crace_object, +object_dno, +object_obj_tokeidai, +object_eg, +object_tru, +object_trt, +object_hakugin_obj, +object_horse_game_check, +object_stk, +object_mnk, +object_gi_bottle_red, +object_tokei_tobira, +object_az, +object_twig, +object_dekucity_obj, +object_po_fusen, +object_racetsubo, +object_ha, +object_bigokuta, +object_open_obj, +object_fu_kaiten, +object_fu_mato, +object_mtoride, +object_osn, +object_tokei_step, +object_lotus, +object_tl, +object_dkjail_obj, +object_visiblock, +object_tsn, +object_ds2n, +object_fsn, +object_shn, +object_bigicicle, +object_gi_bottle_15, +object_tk, +object_market_obj, +object_gi_reserve00, +object_gi_reserve01, +object_lightblock, +object_takaraya_objects, +object_wdhand, +object_sdn, +object_snowwd, +object_giant, +object_comb, +object_hana, +object_boss_hakugin, +object_meganeana_obj, +object_gi_nutsmask, +object_stk2, +object_spot11_obj, +object_danpei_object, +object_dhouse, +object_hakaisi, +object_po, +object_snowman, +object_po_sisters, +object_pp, +object_goronswitch, +object_delf, +object_botihasira, +object_gi_bigbomb, +object_pst, +object_bsmask, +object_spidertent, +object_zoraegg, +object_kbt, +object_gg, +object_maruta, +object_ghaka, +object_oyu, +object_dnq, +object_dai, +object_kgy, +object_fb, +object_taisou, +object_gk, +object_haka_obj, +object_dnt, +object_yukiyama, +object_icefloe, +object_gi_gold_dust, +object_gi_bottle_16, +object_gi_bottle_22, +object_bee, +object_ot, +object_utubo, +object_dora, +object_gi_loach, +object_gi_seahorse, +object_bigpo, +object_hariko, +object_dnj, +object_sinkai_kabe, +object_kin2_obj, +object_ishi, +object_hakugin_demo, +object_jg, +object_gi_sword_2, +object_gi_sword_3, +object_gi_sword_4, +object_um, +object_rb, +object_mbar_obj, +object_ikana_obj, +object_kz, +object_tokei_turret, +object_zog, +object_rotlift, +object_posthouse_obj, +object_gi_mask09, +object_gi_mask14, +object_gi_mask15, +object_inibs_object, +object_tree, +object_kaizoku_obj, +object_gi_reserve_b_00, +object_gi_reserve_c_00, +object_zob, +object_milkbar, +object_dmask, +object_gi_reserve_c_01, +object_zod, +object_kumo30, +object_obj_yasi, +object_tanron1, +object_tanron2, +object_tanron3, +object_gi_magicmushroom, +object_obj_chan, +object_gi_mask10, +object_zos, +object_an2, +object_an3, +object_f40_switch, +object_lodmoon, +object_tro, +object_gi_mask12, +object_gi_mask23, +object_gi_bottle_21, +object_gi_camera, +object_kamejima, +object_nb, +object_harfgibud, +object_zov, +object_ah, +object_hgdoor, +object_dor01, +object_dor02, +object_dor03, +object_dor04, +object_last_obj, +object_redead_obj, +object_ikninside_obj, +object_iknv_obj, +object_pamera, +object_hsstump, +object_zm, +object_al, +object_tab, +object_secom_obj, +object_dt, +object_gi_mask03, +object_cha, +object_obj_dinner, +object_gi_reserve_b_01, +object_lastday, +object_bai, +object_ikn_demo, +object_gi_fieldmap, +object_big_fwall, +object_hunsui, +object_uch, +object_tanron4, +object_tanron5, +object_in2, +object_yb, +object_rz, +object_bjt, +object_taru, +object_moonston, +object_gi_schedule, +object_gi_stonemask, +object_zoraband, +object_kepn_koya, +object_obj_usiyane, +object_gi_mask05, +object_gi_mask11, +object_gi_mask20, +object_nnh, +object_kzsaku, +object_obj_milk_bin, +object_random_obj, +object_kujiya, +object_kitan, +object_gi_mask06, +object_gi_mask16, +object_astr_obj, +object_bsb, +object_fall2, +object_sth, +object_gi_mssa, +object_smtower, +object_gi_mask21, +object_yado_obj, +object_syoten, +object_moonend, +object_ob, +object_gi_bottle_04, +object_and, +object_obj_danpeilift, +object_drs, +object_msmo, +object_an4, +object_wdor01, +object_wdor02, +object_wdor03, +object_wdor04, +object_wdor05, +object_stk3, +object_kinsta1_obj, +object_kinsta2_obj, +object_bh, +object_gi_mask17, +object_gi_mask22, +object_lbfshot, +object_fusen, +object_ending_obj, +object_gi_mask13, +scene_texture_01, +scene_texture_02, +scene_texture_03, +scene_texture_04, +scene_texture_05, +scene_texture_06, +scene_texture_07, +scene_texture_08, +nintendo_rogo_static, +title_static, +memerrmsg, +locerrmsg, +parameter_static, +week_static, +daytelop_static, +ger_daytelop_static, +fra_daytelop_static, +esp_daytelop_static, +d2_fine_static, +d2_cloud_static, +d2_fine_pal_static, +elf_message_field, +elf_message_ydan, +Z2_20SICHITAI2, +Z2_20SICHITAI2_room_00, +Z2_20SICHITAI2_room_01, +Z2_20SICHITAI2_room_02, +Z2_WITCH_SHOP, +Z2_WITCH_SHOP_room_00, +Z2_LAST_BS, +Z2_LAST_BS_room_00, +Z2_HAKASHITA, +Z2_HAKASHITA_room_00, +Z2_HAKASHITA_room_01, +Z2_HAKASHITA_room_02, +Z2_HAKASHITA_room_03, +Z2_HAKASHITA_room_04, +Z2_AYASHIISHOP, +Z2_AYASHIISHOP_room_00, +Z2_AYASHIISHOP_room_01, +Z2_OMOYA, +Z2_OMOYA_room_00, +Z2_OMOYA_room_01, +Z2_OMOYA_room_02, +Z2_BOWLING, +Z2_BOWLING_room_00, +Z2_SONCHONOIE, +Z2_SONCHONOIE_room_00, +Z2_SONCHONOIE_room_01, +Z2_SONCHONOIE_room_02, +Z2_SONCHONOIE_room_03, +Z2_IKANA, +Z2_IKANA_room_00, +Z2_IKANA_room_01, +Z2_IKANA_room_02, +Z2_IKANA_room_03, +Z2_IKANA_room_04, +Z2_KAIZOKU, +Z2_KAIZOKU_room_00, +Z2_MILK_BAR, +Z2_MILK_BAR_room_00, +Z2_INISIE_N, +Z2_INISIE_N_room_00, +Z2_INISIE_N_room_01, +Z2_INISIE_N_room_02, +Z2_INISIE_N_room_03, +Z2_INISIE_N_room_04, +Z2_INISIE_N_room_05, +Z2_INISIE_N_room_06, +Z2_INISIE_N_room_07, +Z2_INISIE_N_room_08, +Z2_INISIE_N_room_09, +Z2_INISIE_N_room_10, +Z2_INISIE_N_room_11, +Z2_TAKARAYA, +Z2_TAKARAYA_room_00, +Z2_INISIE_R, +Z2_INISIE_R_room_00, +Z2_INISIE_R_room_01, +Z2_INISIE_R_room_02, +Z2_INISIE_R_room_03, +Z2_INISIE_R_room_04, +Z2_INISIE_R_room_05, +Z2_INISIE_R_room_06, +Z2_INISIE_R_room_07, +Z2_INISIE_R_room_08, +Z2_INISIE_R_room_09, +Z2_INISIE_R_room_10, +Z2_INISIE_R_room_11, +Z2_OKUJOU, +Z2_OKUJOU_room_00, +Z2_OPENINGDAN, +Z2_OPENINGDAN_room_00, +Z2_OPENINGDAN_room_01, +Z2_MITURIN, +Z2_MITURIN_room_00, +Z2_MITURIN_room_01, +Z2_MITURIN_room_02, +Z2_MITURIN_room_03, +Z2_MITURIN_room_04, +Z2_MITURIN_room_05, +Z2_MITURIN_room_06, +Z2_MITURIN_room_07, +Z2_MITURIN_room_08, +Z2_MITURIN_room_09, +Z2_MITURIN_room_10, +Z2_MITURIN_room_11, +Z2_MITURIN_room_12, +Z2_13HUBUKINOMITI, +Z2_13HUBUKINOMITI_room_00, +Z2_CASTLE, +Z2_CASTLE_room_00, +Z2_CASTLE_room_01, +Z2_CASTLE_room_02, +Z2_CASTLE_room_03, +Z2_CASTLE_room_04, +Z2_CASTLE_room_05, +Z2_CASTLE_room_06, +Z2_CASTLE_room_07, +Z2_CASTLE_room_08, +Z2_CASTLE_room_09, +Z2_DEKUTES, +Z2_DEKUTES_room_00, +Z2_MITURIN_BS, +Z2_MITURIN_BS_room_00, +Z2_SYATEKI_MIZU, +Z2_SYATEKI_MIZU_room_00, +Z2_HAKUGIN, +Z2_HAKUGIN_room_00, +Z2_HAKUGIN_room_01, +Z2_HAKUGIN_room_02, +Z2_HAKUGIN_room_03, +Z2_HAKUGIN_room_04, +Z2_HAKUGIN_room_05, +Z2_HAKUGIN_room_06, +Z2_HAKUGIN_room_07, +Z2_HAKUGIN_room_08, +Z2_HAKUGIN_room_09, +Z2_HAKUGIN_room_10, +Z2_HAKUGIN_room_11, +Z2_HAKUGIN_room_12, +Z2_HAKUGIN_room_13, +Z2_ROMANYMAE, +Z2_ROMANYMAE_room_00, +Z2_PIRATE, +Z2_PIRATE_room_00, +Z2_PIRATE_room_01, +Z2_PIRATE_room_02, +Z2_PIRATE_room_03, +Z2_PIRATE_room_04, +Z2_PIRATE_room_05, +Z2_PIRATE_room_06, +Z2_PIRATE_room_07, +Z2_PIRATE_room_08, +Z2_PIRATE_room_09, +Z2_PIRATE_room_10, +Z2_PIRATE_room_11, +Z2_PIRATE_room_12, +Z2_PIRATE_room_13, +Z2_PIRATE_room_14, +Z2_SYATEKI_MORI, +Z2_SYATEKI_MORI_room_00, +Z2_SINKAI, +Z2_SINKAI_room_00, +Z2_YOUSEI_IZUMI, +Z2_YOUSEI_IZUMI_room_00, +Z2_YOUSEI_IZUMI_room_01, +Z2_YOUSEI_IZUMI_room_02, +Z2_YOUSEI_IZUMI_room_03, +Z2_YOUSEI_IZUMI_room_04, +Z2_KINSTA1, +Z2_KINSTA1_room_00, +Z2_KINSTA1_room_01, +Z2_KINSTA1_room_02, +Z2_KINSTA1_room_03, +Z2_KINSTA1_room_04, +Z2_KINSTA1_room_05, +Z2_KINDAN2, +Z2_KINDAN2_room_00, +Z2_KINDAN2_room_01, +Z2_KINDAN2_room_02, +Z2_KINDAN2_room_03, +Z2_KINDAN2_room_04, +Z2_KINDAN2_room_05, +Z2_TENMON_DAI, +Z2_TENMON_DAI_room_00, +Z2_TENMON_DAI_room_01, +Z2_LAST_DEKU, +Z2_LAST_DEKU_room_00, +Z2_LAST_DEKU_room_01, +Z2_22DEKUCITY, +Z2_22DEKUCITY_room_00, +Z2_22DEKUCITY_room_01, +Z2_22DEKUCITY_room_02, +Z2_KAJIYA, +Z2_KAJIYA_room_00, +Z2_00KEIKOKU, +Z2_00KEIKOKU_room_00, +Z2_POSTHOUSE, +Z2_POSTHOUSE_room_00, +Z2_LABO, +Z2_LABO_room_00, +Z2_DANPEI2TEST, +Z2_DANPEI2TEST_room_00, +Z2_DANPEI2TEST_room_01, +Z2_16GORON_HOUSE, +Z2_16GORON_HOUSE_room_00, +Z2_16GORON_HOUSE_room_01, +Z2_33ZORACITY, +Z2_33ZORACITY_room_00, +Z2_8ITEMSHOP, +Z2_8ITEMSHOP_room_00, +Z2_F01, +Z2_F01_room_00, +Z2_INISIE_BS, +Z2_INISIE_BS_room_00, +Z2_30GYOSON, +Z2_30GYOSON_room_00, +Z2_31MISAKI, +Z2_31MISAKI_room_00, +Z2_TAKARAKUJI, +Z2_TAKARAKUJI_room_00, +Z2_TORIDE, +Z2_TORIDE_room_00, +Z2_FISHERMAN, +Z2_FISHERMAN_room_00, +Z2_GORONSHOP, +Z2_GORONSHOP_room_00, +Z2_DEKU_KING, +Z2_DEKU_KING_room_00, +Z2_LAST_GORON, +Z2_LAST_GORON_room_00, +Z2_LAST_GORON_room_01, +Z2_24KEMONOMITI, +Z2_24KEMONOMITI_room_00, +Z2_F01_B, +Z2_F01_B_room_00, +Z2_F01C, +Z2_F01C_room_00, +Z2_BOTI, +Z2_BOTI_room_00, +Z2_BOTI_room_01, +Z2_HAKUGIN_BS, +Z2_HAKUGIN_BS_room_00, +Z2_20SICHITAI, +Z2_20SICHITAI_room_00, +Z2_20SICHITAI_room_01, +Z2_20SICHITAI_room_02, +Z2_21MITURINMAE, +Z2_21MITURINMAE_room_00, +Z2_LAST_ZORA, +Z2_LAST_ZORA_room_00, +Z2_11GORONNOSATO2, +Z2_11GORONNOSATO2_room_00, +Z2_11GORONNOSATO2_room_01, +Z2_SEA, +Z2_SEA_room_00, +Z2_SEA_room_01, +Z2_SEA_room_02, +Z2_SEA_room_03, +Z2_SEA_room_04, +Z2_SEA_room_05, +Z2_SEA_room_06, +Z2_SEA_room_07, +Z2_SEA_room_08, +Z2_SEA_room_09, +Z2_SEA_room_10, +Z2_SEA_room_11, +Z2_SEA_room_12, +Z2_SEA_room_13, +Z2_SEA_room_14, +Z2_SEA_room_15, +Z2_35TAKI, +Z2_35TAKI_room_00, +Z2_REDEAD, +Z2_REDEAD_room_00, +Z2_REDEAD_room_01, +Z2_REDEAD_room_02, +Z2_REDEAD_room_03, +Z2_REDEAD_room_04, +Z2_REDEAD_room_05, +Z2_REDEAD_room_06, +Z2_REDEAD_room_07, +Z2_REDEAD_room_08, +Z2_REDEAD_room_09, +Z2_REDEAD_room_10, +Z2_REDEAD_room_11, +Z2_REDEAD_room_12, +Z2_REDEAD_room_13, +Z2_BANDROOM, +Z2_BANDROOM_room_00, +Z2_BANDROOM_room_01, +Z2_BANDROOM_room_02, +Z2_BANDROOM_room_03, +Z2_BANDROOM_room_04, +Z2_11GORONNOSATO, +Z2_11GORONNOSATO_room_00, +Z2_11GORONNOSATO_room_01, +Z2_GORON_HAKA, +Z2_GORON_HAKA_room_00, +Z2_SECOM, +Z2_SECOM_room_00, +Z2_SECOM_room_01, +Z2_10YUKIYAMANOMURA, +Z2_10YUKIYAMANOMURA_room_00, +Z2_TOUGITES, +Z2_TOUGITES_room_00, +Z2_DANPEI, +Z2_DANPEI_room_00, +Z2_DANPEI_room_01, +Z2_DANPEI_room_02, +Z2_DANPEI_room_03, +Z2_DANPEI_room_04, +Z2_DANPEI_room_05, +Z2_DANPEI_room_06, +Z2_DANPEI_room_07, +Z2_DANPEI_room_08, +Z2_IKANAMAE, +Z2_IKANAMAE_room_00, +Z2_DOUJOU, +Z2_DOUJOU_room_00, +Z2_MUSICHOUSE, +Z2_MUSICHOUSE_room_00, +Z2_IKNINSIDE, +Z2_IKNINSIDE_room_00, +Z2_IKNINSIDE_room_01, +Z2_MAP_SHOP, +Z2_MAP_SHOP_room_00, +Z2_F40, +Z2_F40_room_00, +Z2_F41, +Z2_F41_room_00, +Z2_10YUKIYAMANOMURA2, +Z2_10YUKIYAMANOMURA2_room_00, +Z2_10YUKIYAMANOMURA2_room_01, +Z2_14YUKIDAMANOMITI, +Z2_14YUKIDAMANOMITI_room_00, +Z2_12HAKUGINMAE, +Z2_12HAKUGINMAE_room_00, +Z2_17SETUGEN, +Z2_17SETUGEN_room_00, +Z2_17SETUGEN2, +Z2_17SETUGEN2_room_00, +Z2_SEA_BS, +Z2_SEA_BS_room_00, +Z2_RANDOM, +Z2_RANDOM_room_00, +Z2_RANDOM_room_01, +Z2_RANDOM_room_02, +Z2_RANDOM_room_03, +Z2_RANDOM_room_04, +Z2_RANDOM_room_05, +Z2_YADOYA, +Z2_YADOYA_room_00, +Z2_YADOYA_room_01, +Z2_YADOYA_room_02, +Z2_YADOYA_room_03, +Z2_YADOYA_room_04, +Z2_KONPEKI_ENT, +Z2_KONPEKI_ENT_room_00, +Z2_INSIDETOWER, +Z2_INSIDETOWER_room_00, +Z2_INSIDETOWER_room_01, +Z2_26SARUNOMORI, +Z2_26SARUNOMORI_room_00, +Z2_26SARUNOMORI_room_01, +Z2_26SARUNOMORI_room_02, +Z2_26SARUNOMORI_room_03, +Z2_26SARUNOMORI_room_04, +Z2_26SARUNOMORI_room_05, +Z2_26SARUNOMORI_room_06, +Z2_26SARUNOMORI_room_07, +Z2_26SARUNOMORI_room_08, +Z2_LOST_WOODS, +Z2_LOST_WOODS_room_00, +Z2_LOST_WOODS_room_01, +Z2_LOST_WOODS_room_02, +Z2_LAST_LINK, +Z2_LAST_LINK_room_00, +Z2_LAST_LINK_room_01, +Z2_LAST_LINK_room_02, +Z2_LAST_LINK_room_03, +Z2_LAST_LINK_room_04, +Z2_LAST_LINK_room_05, +Z2_LAST_LINK_room_06, +Z2_LAST_LINK_room_07, +Z2_SOUGEN, +Z2_SOUGEN_room_00, +Z2_BOMYA, +Z2_BOMYA_room_00, +Z2_KYOJINNOMA, +Z2_KYOJINNOMA_room_00, +Z2_KOEPONARACE, +Z2_KOEPONARACE_room_00, +Z2_GORONRACE, +Z2_GORONRACE_room_00, +Z2_TOWN, +Z2_TOWN_room_00, +Z2_ICHIBA, +Z2_ICHIBA_room_00, +Z2_BACKTOWN, +Z2_BACKTOWN_room_00, +Z2_CLOCKTOWER, +Z2_CLOCKTOWER_room_00, +Z2_ALLEY, +Z2_ALLEY_room_00, +SPOT00, +SPOT00_room_00, +KAKUSIANA, +KAKUSIANA_room_00, +KAKUSIANA_room_01, +KAKUSIANA_room_02, +KAKUSIANA_room_03, +KAKUSIANA_room_04, +KAKUSIANA_room_05, +KAKUSIANA_room_06, +KAKUSIANA_room_07, +KAKUSIANA_room_08, +KAKUSIANA_room_09, +KAKUSIANA_room_10, +KAKUSIANA_room_11, +KAKUSIANA_room_12, +KAKUSIANA_room_13, +KAKUSIANA_room_14, +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, diff --git a/requirements.txt b/requirements.txt index 1c05c047c4..f5f97b3d57 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,7 @@ colorama>=0.4.3 crunch64>=0.3.1,<1.0.0 ipl3checksum>=1.2.0,<2.0.0 +pyyaml>=6.0.1,<7.0.0 # disasm rabbitizer>=1.3.0,<2.0.0 diff --git a/tools/buildtools/decompress_baserom.py b/tools/decompress_baserom.py similarity index 97% rename from tools/buildtools/decompress_baserom.py rename to tools/decompress_baserom.py index 34d017e76b..ee91d08ebb 100755 --- a/tools/buildtools/decompress_baserom.py +++ b/tools/decompress_baserom.py @@ -16,7 +16,8 @@ import crunch64 import ipl3checksum import zlib -import dmadata +from buildtools import dmadata +from version import version_config def decompress_zlib(data: bytes) -> bytes: @@ -174,7 +175,9 @@ def main(): uncompressed_path = baserom_dir / "baserom-decompressed.z64" - dmadata_start = int((baserom_dir / "dmadata_start.txt").read_text(), 16) + config = version_config.load_version_config(version) + + dmadata_start = config.dmadata_start correct_str_hash = (baserom_dir / "checksum.md5").read_text().split()[0] if check_existing_rom(uncompressed_path, correct_str_hash): diff --git a/tools/audio_extraction.py b/tools/extract_audio.py similarity index 94% rename from tools/audio_extraction.py rename to tools/extract_audio.py index 9479ed1571..0b6b3339a8 100644 --- a/tools/audio_extraction.py +++ b/tools/extract_audio.py @@ -7,6 +7,8 @@ import argparse +from version import version_config + from audio.extraction.audio_extract import extract_audio_for_version, GameVersionInfo from audio.extraction.disassemble_sequence import MMLVersion, SequenceTableSpec, SqSection @@ -20,12 +22,13 @@ if __name__ == '__main__': version = args.version - # TODO move these to config yaml - soundfont_table_code_offset, seq_font_table_code_offset, seq_table_code_offset, sample_bank_table_code_offset = { - "n64-jp-1.0" : (0xC97130-0xB5F000, 0xC973C0-0xB5F000, 0xC975D0-0xB5F000, 0xC97DE0-0xB5F000), - "n64-us" : (0xC776C0-0xB3C000, 0xC77960-0xB3C000, 0xC77B70-0xB3C000, 0xC78380-0xB3C000), - "n64-eu-1.1-dbg" : (0xE0F7E0-0xC95000, 0xE0FA80-0xC95000, 0xE0FC90-0xC95000, 0xE104A0-0xC95000), - }[version] + config = version_config.load_version_config(version) + + code_vram = config.dmadata_segments["code"].vram + soundfont_table_code_offset = config.variables["gSoundFontTable"] - code_vram + seq_font_table_code_offset = config.variables["gSequenceFontTable"] - code_vram + seq_table_code_offset = config.variables["gSequenceTable"] - code_vram + sample_bank_table_code_offset = config.variables["gSampleBankTable"] - code_vram # List any sequences that are "handwritten", we don't extract these by # default as we want these checked in for documentation. diff --git a/tools/buildtools/extract_baserom.py b/tools/extract_baserom.py similarity index 78% rename from tools/buildtools/extract_baserom.py rename to tools/extract_baserom.py index 57062a05f6..3e009e9763 100755 --- a/tools/buildtools/extract_baserom.py +++ b/tools/extract_baserom.py @@ -9,7 +9,9 @@ import argparse from pathlib import Path import sys -import dmadata +from buildtools import dmadata +from version import version_config + def main(): @@ -25,26 +27,28 @@ def main(): help="Output directory for segments", ) parser.add_argument( - "--dmadata-start", - type=lambda s: int(s, 16), - required=True, - help=( - "The dmadata location in the rom, as a hexadecimal offset (e.g. 0x12f70)" - ), + "-v", + "--version", + help="version to process", + default="n64-us", ) parser.add_argument( - "--dmadata-names", - type=Path, - required=True, - help="Path to file containing segment names", + "--dmadata-start", + type=lambda s: int(s, 16), + help=( + "Override dmadata location for non-matching ROMs, as a hexadecimal offset (e.g. 0x12F70)" + ), ) args = parser.parse_args() rom_data = memoryview(args.rom.read_bytes()) - dma_names = args.dmadata_names.read_text().splitlines() - dma_entries = dmadata.read_dmadata(rom_data, args.dmadata_start) + config = version_config.load_version_config(args.version) + dmadata_start = args.dmadata_start or config.dmadata_start + dma_names = config.dmadata_segments.keys() + + dma_entries = dmadata.read_dmadata(rom_data, dmadata_start) if len(dma_names) != len(dma_entries): print( f"Error: expected {len(dma_names)} DMA entries but found {len(dma_entries)} in ROM", diff --git a/tools/extract_text.py b/tools/extract_text.py new file mode 100644 index 0000000000..d2d5ea247e --- /dev/null +++ b/tools/extract_text.py @@ -0,0 +1,38 @@ +import argparse +from pathlib import Path + +from version import version_config +from text import msgdis + +def main(): + parser = argparse.ArgumentParser(description="Extract text from the baserom into .h files") + parser.add_argument( + "baserom_segments_dir", + type=Path, + help="Directory of uncompressed ROM segments", + ) + parser.add_argument( + "output_dir", + type=Path, + help="Output directory to place files in", + ) + parser.add_argument( + "-v", + "--version", + help="version to process", + default="n64-us", + ) + args = parser.parse_args() + + baserom_segments_dir : Path = args.baserom_segments_dir + version : str = args.version + output_dir : Path = args.output_dir + + config = version_config.load_version_config(version) + + version_info = msgdis.GameVersionInfo(config.dmadata_segments["code"].vram, config.variables) + + msgdis.extract(version_info, baserom_segments_dir, output_dir) + +if __name__ == '__main__': + main() diff --git a/tools/buildtools/extract_yars.py b/tools/extract_yars.py similarity index 90% rename from tools/buildtools/extract_yars.py rename to tools/extract_yars.py index fac68a98f8..7f6b3363a5 100755 --- a/tools/buildtools/extract_yars.py +++ b/tools/extract_yars.py @@ -21,6 +21,7 @@ import dataclasses from pathlib import Path import struct +from version import version_config PRINT_XML = False @@ -121,15 +122,13 @@ def main(): global PRINT_XML PRINT_XML = args.xml - archivesCsvPath = Path(f"tools/filelists/{version}/archives.csv") + config = version_config.load_version_config(version) - with archivesCsvPath.open() as f: - for line in f: - archiveName = line.strip().split(",")[1] - archivePath = baseromSegmentsDir / archiveName + for archiveName in config.archives: + archivePath = baseromSegmentsDir / archiveName - extractedPath = Path(str(archivePath) + ".unarchive") - extractArchive(archivePath, extractedPath) + extractedPath = Path(str(archivePath) + ".unarchive") + extractArchive(archivePath, extractedPath) if __name__ == "__main__": diff --git a/tools/text/msgdis.py b/tools/text/msgdis.py index f11f9afbdb..eedbe53af3 100755 --- a/tools/text/msgdis.py +++ b/tools/text/msgdis.py @@ -3,10 +3,20 @@ # message_data_static disassembler/decompiler # -import argparse, re, struct +import struct from pathlib import Path from typing import Callable, Dict, List, Optional, Tuple, TypeVar +from dataclasses import dataclass + +@dataclass +class GameVersionInfo: + # Vram location of the code segment + code_vram : int + # Variables dict from config + variables : Dict[str, int] + + T = TypeVar("T") item_ids = { @@ -3054,9 +3064,8 @@ class MessageEntry: return out -# TODO: Use version_config instead def collect_messages(message_tables : List[Optional[MessageTableDesc]], baserom_segments_dir : Path, - config : Dict[str,int], code_vram : int, code_bin : bytes): + version_info : GameVersionInfo, code_vram : int, code_bin : bytes): messages : Dict[int,MessageEntry] = {} @@ -3067,7 +3076,7 @@ def collect_messages(message_tables : List[Optional[MessageTableDesc]], baserom_ continue baserom_seg = (baserom_segments_dir / desc.seg_name).read_bytes() - code_offset = config[desc.table_name] - code_vram + code_offset = version_info.variables[desc.table_name] - code_vram if desc.parent is None: # Complete table @@ -3122,33 +3131,10 @@ def collect_messages(message_tables : List[Optional[MessageTableDesc]], baserom_ return messages -def main(): - parser = argparse.ArgumentParser(description="Extract text from the baserom into .h files") - parser.add_argument( - "baserom_segments_dir", - type=Path, - help="Directory of uncompressed ROM segments", - ) - parser.add_argument( - "output_dir", - type=Path, - help="Output directory to place files in", - ) - parser.add_argument( - "-v", - "--version", - help="version to process", - default="n64-us", - ) - args = parser.parse_args() +def extract(version_info: GameVersionInfo, baserom_segments_dir : Path, output_dir: Path): + output_dir.mkdir(parents=True, exist_ok=True) - baserom_segments_dir : Path = args.baserom_segments_dir - output_dir : Path = args.output_dir - - args.output_dir.mkdir(parents=True, exist_ok=True) - - # TODO: use version config instead to get code vram - code_vram = 0x800A5AC0 + code_vram = version_info.code_vram code_bin = (baserom_segments_dir / "code").read_bytes() @@ -3158,17 +3144,11 @@ def main(): message_tables : MessageTableDesc = [None for _ in range(1)] # EN message_table_staff : MessageTableDesc = None - message_tables[0] = MessageTableDesc("sMessageTableNES", "message_data_static", nes_decoder, None) + message_tables[0] = MessageTableDesc("sMessageTableNES", "message_data_static", nes_decoder, None) message_table_staff = MessageTableDesc("sMessageTableCredits", "staff_message_data_static", credits_decoder, None) - # TODO: use version config instead - config = { - "sMessageTableNES": 0x801C6B98, - "sMessageTableCredits": 0x801CFB08, - } - - messages = collect_messages(message_tables, baserom_segments_dir, config, code_vram, code_bin) - staff_messages = collect_messages([message_table_staff], baserom_segments_dir, config, code_vram, code_bin) + messages = collect_messages(message_tables, baserom_segments_dir, version_info, code_vram, code_bin) + staff_messages = collect_messages([message_table_staff], baserom_segments_dir, version_info, code_vram, code_bin) message_data = [] @@ -3184,5 +3164,3 @@ def main(): (output_dir / "message_data.h").write_text(message_data) (output_dir / "message_data_staff.h").write_text(message_data_staff) -if __name__ == "__main__": - main() diff --git a/tools/version/version_config.py b/tools/version/version_config.py new file mode 100644 index 0000000000..761d0291c8 --- /dev/null +++ b/tools/version/version_config.py @@ -0,0 +1,100 @@ +# Version-specific configuration for setup and assets extraction + +# SPDX-FileCopyrightText: © 2024 ZeldaRET +# SPDX-License-Identifier: CC0-1.0 + +from __future__ import annotations + +from collections import OrderedDict +import csv +import dataclasses +from pathlib import Path +from typing import Optional + +import yaml + +PROJECT_ROOT = Path(__file__).parent.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] + # ROM pieces that are copied directly into the build with .incbin + incbins: list[IncbinConfig] + # Addresses of important variables needed for asset extraction + variables: dict[str, int] + # Assets to extract + assets: list[AssetConfig] + # Archive names to extract + archives: list[str] + + +@dataclasses.dataclass +class SegmentInfo: + name: str + vram: Optional[int] + + +@dataclasses.dataclass +class IncbinConfig: + name: str + segment: str + vram: int + size: int + + +@dataclasses.dataclass +class AssetConfig: + name: str + xml_path: Path + start_offset: Optional[int] + end_offset: Optional[int] + + +def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]: + segments = OrderedDict() + with open(PROJECT_ROOT / f"baseroms/{version}/segments.csv", "r") as f: + reader = csv.DictReader(f) + for row in reader: + name = row["Name"] + vram = int(row["VRAM start"], 16) if row["VRAM start"] else None + segments[name] = SegmentInfo(name, vram) + return segments + + +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) + + incbins = [] + if config["incbins"] is not None: + for incbin in config["incbins"]: + incbins.append( + IncbinConfig( + incbin["name"], incbin["segment"], incbin["vram"], incbin["size"] + ) + ) + + assets = [] + if config["assets"] is not None: + for asset in config["assets"]: + name = asset["name"] + xml_path = Path(asset["xml_path"]) + start_offset = asset.get("start_offset", None) + end_offset = asset.get("end_offset", None) + assets.append(AssetConfig(name, xml_path, start_offset, end_offset)) + + return VersionConfig( + version=version, + dmadata_start=config["dmadata_start"], + dmadata_segments=load_dmadata_segments(version), + incbins=incbins, + variables=config["variables"], + assets=assets, + archives=config["archives"] + )