diff --git a/Makefile b/Makefile index c165933626..2ebcfd7f8b 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ test.txt: CFLAGS := $(CFLAGS) -Wab,-r4300_mul CC := $(QEMU_IRIX) -L $(IRIX_71_ROOT) $(IRIX_71_ROOT)/usr/bin/cc -test.txt: CC := python3 preprocess.py $(CC) -- $(AS) $(ASFLAGS) -- +test.txt: CC := python3 ./tools/preprocess.py $(CC) -- $(AS) $(ASFLAGS) -- build/src/boot_O2_g3/%: CC := python3 ./tools/preprocess.py $(CC) -- $(AS) $(ASFLAGS) -- build/src/code/%: CC := python3 ./tools/preprocess.py $(CC) -- $(AS) $(ASFLAGS) -- diff --git a/extract_rom.py b/tools/extract_rom.py similarity index 92% rename from extract_rom.py rename to tools/extract_rom.py index deff5f73e0..f86fe8306a 100644 --- a/extract_rom.py +++ b/tools/extract_rom.py @@ -1,1629 +1,1628 @@ -import struct; -import os; -import sys - -from libyaz0 import decompress - -ROM_FILE_NAME = 'baserom.z64' -FILE_TABLE_OFFSET = 0x1A500 # 0x1C110 for JP1.0, 0x1C050 for JP1.1, 0x24F60 for debug - -FILE_NAMES = { - 0:'makerom', - 1:'boot', - 2:'dmadata', - 3:'Audiobank', - 4:'Audioseq', - 5:'Audiotable', - 6:'jpn_font_static', - 7:'link_animetion', # not a typo - #8:'', - #9:'', - 10:'icon_item_field_static', - 11:'icon_item_dungeon_static', - 12:'icon_item_gameover_static', - #13:'', - #14:'', - 15:'map_i_static', - 16:'map_grand_static', - 17:'item_name_static', - 18:'map_name_static', - #19:'', - #20:'', - #21:'', - #22:'', - #23:'', - #24:'', - 25:'do_action_static', - 26:'message_static', - 27:'message_texture_static', - 28:'nes_font_static', - 29:'en_message_data_static', # guess from jpn_message_data_static - 30:'staff_message_data_static', - 31:'code', - 32:'ovl_title', - 33:'ovl_select', - 34:'ovl_opening', - 35:'ovl_file_choose', - 36:'ovl_daytelop', - 37:'ovl_kaleido_scope', - 38:'ovl_Player_Actor', - 39:'ovl_En_Test', - 40:'ovl_En_GirlA', - 41:'ovl_En_Part', - 42:'ovl_En_Light', - 43:'ovl_En_Door', - 44:'ovl_En_Box', - 45:'ovl_En_Pametfrog', - 46:'ovl_En_Okuta', - 47:'ovl_En_Bom', - 48:'ovl_En_Wallmas', - 49:'ovl_En_Dodongo', - 50:'ovl_En_Firefly', - 51:'ovl_En_Horse', - 52:'ovl_En_Arrow', - 53:'ovl_En_Elf', - 54:'ovl_En_Niw', - 55:'ovl_En_Tite', - 56:'ovl_En_Peehat', - 57:'ovl_En_Holl', - 58:'ovl_En_Dinofos', - 59:'ovl_En_Hata', - 60:'ovl_En_Zl1', - 61:'ovl_En_Viewer', - 62:'ovl_En_Bubble', - 63:'ovl_Door_Shutter', - 64:'ovl_En_Boom', - 65:'ovl_En_Torch2', - 66:'ovl_En_Minifrog', - 67:'ovl_En_St', - 68:'ovl_Obj_Wturn', - 69:'ovl_En_River_Sound', - 70:'ovl_En_Ossan', - 71:'ovl_En_Famos', - 72:'ovl_En_Bombf', - 73:'ovl_En_Am', - 74:'ovl_En_Dekubaba', - 75:'ovl_En_M_Fire1', - 76:'ovl_En_M_Thunder', - 77:'ovl_Bg_Breakwall', - 78:'ovl_Door_Warp1', - 79:'ovl_Obj_Syokudai', - 80:'ovl_Item_B_Heart', - 81:'ovl_En_Dekunuts', - 82:'ovl_En_Bbfall', - 83:'ovl_Arms_Hook', - 84:'ovl_En_Bb', - 85:'ovl_Bg_Keikoku_Spr', - 86:'ovl_En_Wood02', - 87:'ovl_En_Death', - 88:'ovl_En_Minideath', - 89:'ovl_En_Vm', - 90:'ovl_Demo_Effect', - 91:'ovl_Demo_Kankyo', - 92:'ovl_En_Floormas', - 93:'ovl_En_Rd', - 94:'ovl_Bg_F40_Flift', - 95:'ovl_Bg_Heavy_Block', - # ovl_Obj_Mure? In JP - 96:'ovl_En_Sw', - 97:'ovl_Object_Kankyo', - 98:'ovl_En_Horse_Link_Child', - 99:'ovl_Door_Ana', - 100:'ovl_En_Encount1', - 101:'ovl_Demo_Tre_Lgt', - 102:'ovl_En_Encount2', - 103:'ovl_En_Fire_Rock', - 104:'ovl_Bg_Ctower_Rot', - 105:'ovl_Mir_Ray', - 106:'ovl_En_Sb', - 107:'ovl_En_Bigslime', - 108:'ovl_En_Karebaba', - 109:'ovl_En_In', - 110:'ovl_En_Bom_Chu', - 111:'ovl_En_Horse_Game_Check', - 112:'ovl_En_Rr', - 113:'ovl_En_Fr', - 114:'ovl_En_Fishing', - 115:'ovl_Obj_Oshihiki', - 116:'ovl_Eff_Dust', - 117:'ovl_Bg_Umajump', - 118:'ovl_En_Insect', - 119:'ovl_En_Butte', - 120:'ovl_En_Fish', - 121:'ovl_Item_Etcetera', - 122:'ovl_Arrow_Fire', - 123:'ovl_Arrow_Ice', - 124:'ovl_Arrow_Light', - 125:'ovl_Obj_Kibako', - 126:'ovl_Obj_Tsubo', - 127:'ovl_En_Ik', - 128:'ovl_Demo_Shd', - 129:'ovl_En_Dns', - 130:'ovl_Elf_Msg', - 131:'ovl_En_Honotrap', - 132:'ovl_En_Tubo_Trap', - 133:'ovl_Obj_Ice_Poly', - 134:'ovl_En_Fz', - 135:'ovl_En_Kusa', - 136:'ovl_Obj_Bean', - 137:'ovl_Obj_Bombiwa', - 138:'ovl_Obj_Switch', - 139:'ovl_Obj_Lift', - 140:'ovl_Obj_Hsblock', - 141:'ovl_En_Okarina_Tag', - 142:'ovl_En_Goroiwa', - 143:'ovl_En_Daiku', - 144:'ovl_En_Nwc', - 145:'ovl_Item_Inbox', - 146:'ovl_En_Ge1', - 147:'ovl_Obj_Blockstop', - 148:'ovl_En_Sda', - 149:'ovl_En_Clear_Tag', - 150:'ovl_En_Gm', - 151:'ovl_En_Ms', - 152:'ovl_En_Hs', - 153:'ovl_Bg_Ingate', - 154:'ovl_En_Kanban', - 155:'ovl_En_Attack_Niw', - 156:'ovl_En_Mk', - 157:'ovl_En_Owl', - 158:'ovl_En_Ishi', - 159:'ovl_Obj_Hana', - 160:'ovl_Obj_Lightswitch', - 161:'ovl_Obj_Mure2', - 162:'ovl_En_Fu', - 163:'ovl_En_Stream', - 164:'ovl_En_Mm', - 165:'ovl_En_Weather_Tag', - 166:'ovl_En_Ani', - 167:'ovl_En_Js', - 168:'ovl_En_Okarina_Effect', - 169:'ovl_En_Mag', - 170:'ovl_Elf_Msg2', - 171:'ovl_Bg_F40_Swlift', - 172:'ovl_En_Kakasi', - 173:'ovl_Obj_Makeoshihiki', - 174:'ovl_Oceff_Spot', - 175:'ovl_En_Torch', - 176:'ovl_Shot_Sun', - 177:'ovl_Obj_Roomtimer', - 178:'ovl_En_Ssh', - 179:'ovl_Oceff_Wipe', - 180:'ovl_Effect_Ss_Dust', - 181:'ovl_Effect_Ss_Kirakira', - 182:'ovl_Effect_Ss_Bomb2', - 183:'ovl_Effect_Ss_Blast', - 184:'ovl_Effect_Ss_G_Spk', - 185:'ovl_Effect_Ss_D_Fire', - 186:'ovl_Effect_Ss_Bubble', - 187:'ovl_Effect_Ss_G_Ripple', - 188:'ovl_Effect_Ss_G_Splash', - 189:'ovl_Effect_Ss_G_Fire', - 190:'ovl_Effect_Ss_Lightning', - 191:'ovl_Effect_Ss_Dt_Bubble', - 192:'ovl_Effect_Ss_Hahen', - 193:'ovl_Effect_Ss_Stick', - 194:'ovl_Effect_Ss_Sibuki', - 195:'ovl_Effect_Ss_Stone1', - 196:'ovl_Effect_Ss_Hitmark', - 197:'ovl_Effect_Ss_Fhg_Flash', - 198:'ovl_Effect_Ss_K_Fire', - 199:'ovl_Effect_Ss_Solder_Srch_Ball', - 200:'ovl_Effect_Ss_Kakera', - 201:'ovl_Effect_Ss_Ice_Piece', - 202:'ovl_Effect_Ss_En_Ice', - 203:'ovl_Effect_Ss_Fire_Tail', - 204:'ovl_Effect_Ss_En_Fire', - 205:'ovl_Effect_Ss_Extra', - 206:'ovl_Effect_Ss_Dead_Db', - 207:'ovl_Effect_Ss_Dead_Dd', - 208:'ovl_Effect_Ss_Dead_Ds', - 209:'ovl_Oceff_Storm', - 210:'ovl_Obj_Demo', - 211:'ovl_En_Minislime', - 212:'ovl_En_Nutsball', - 213:'ovl_Oceff_Wipe2', - 214:'ovl_Oceff_Wipe3', - 215:'ovl_En_Dg', - 216:'ovl_En_Si', - 217:'ovl_Obj_Comb', - 218:'ovl_Obj_Kibako2', - 219:'ovl_En_Hs2', - 220:'ovl_Obj_Mure3', - 221:'ovl_En_Tg', - 222:'ovl_En_Wf', - 223:'ovl_En_Skb', - 224:'ovl_En_Gs', - 225:'ovl_Obj_Sound', - 226:'ovl_En_Crow', - 227:'ovl_En_Cow', - 228:'ovl_Oceff_Wipe4', - 229:'ovl_En_Zo', - 230:'ovl_Effect_Ss_Ice_Smoke', - 231:'ovl_Obj_Makekinsuta', - 232:'ovl_En_Ge3', - 233:'ovl_Obj_Hamishi', - 234:'ovl_En_Zl4', - 235:'ovl_En_Mm2', - 236:'ovl_Door_Spiral', - 237:'ovl_Obj_Pzlblock', - 238:'ovl_Obj_Toge', - 239:'ovl_Obj_Armos', - 240:'ovl_Obj_Boyo', - 241:'ovl_En_Grasshopper', - 242:'ovl_Obj_Grass', - 243:'ovl_Obj_Grass_Carry', - 244:'ovl_Obj_Grass_Unit', - 245:'ovl_Bg_Fire_Wall', - 246:'ovl_En_Bu', - 247:'ovl_En_Encount3', - 248:'ovl_En_Jso', - 249:'ovl_Obj_Chikuwa', - 250:'ovl_En_Knight', - 251:'ovl_En_Warp_tag', - 252:'ovl_En_Aob_01', - 253:'ovl_En_Boj_01', - 254:'ovl_En_Boj_02', - 255:'ovl_En_Boj_03', - 256:'ovl_En_Encount4', - 257:'ovl_En_Bom_Bowl_Man', - 258:'ovl_En_Syateki_Man', - 259:'ovl_Bg_Icicle', - 260:'ovl_En_Syateki_Crow', - 261:'ovl_En_Boj_04', - 262:'ovl_En_Cne_01', - 263:'ovl_En_Bba_01', - 264:'ovl_En_Bji_01', - 265:'ovl_Bg_Spdweb', - 266:'ovl_En_Mt_tag', - 267:'ovl_Boss_01', - 268:'ovl_Boss_02', - 269:'ovl_Boss_03', - 270:'ovl_Boss_04', - 271:'ovl_Boss_05', - 272:'ovl_Boss_06', - 273:'ovl_Boss_07', - 274:'ovl_Bg_Dy_Yoseizo', - 275:'ovl_En_Boj_05', - 276:'ovl_En_Sob1', - 277:'ovl_En_Go', - 278:'ovl_En_Raf', - 279:'ovl_Obj_Funen', - 280:'ovl_Obj_Raillift', - 281:'ovl_Bg_Numa_Hana', - 282:'ovl_Obj_Flowerpot', - 283:'ovl_Obj_Spinyroll', - 284:'ovl_Dm_Hina', - 285:'ovl_En_Syateki_Wf', - 286:'ovl_Obj_Skateblock', - 287:'ovl_Effect_En_Ice_Block', - 288:'ovl_Obj_Iceblock', - 289:'ovl_En_Bigpamet', - 290:'ovl_Bg_Dblue_Movebg', - 291:'ovl_En_Syateki_Dekunuts', - 292:'ovl_Elf_Msg3', - 293:'ovl_En_Fg', - 294:'ovl_Dm_Ravine', - 295:'ovl_Dm_Sa', - 296:'ovl_En_Slime', - 297:'ovl_En_Pr', - 298:'ovl_Obj_Toudai', - 299:'ovl_Obj_Entotu', - 300:'ovl_Obj_Bell', - 301:'ovl_En_Syateki_Okuta', - 302:'ovl_Obj_Shutter', - 303:'ovl_Dm_Zl', - 304:'ovl_En_Ru', - 305:'ovl_En_Elfgrp', - 306:'ovl_Dm_Tsg', - 307:'ovl_En_Baguo', - 308:'ovl_Obj_Vspinyroll', - 309:'ovl_Obj_Smork', - 310:'ovl_En_Test2', - 311:'ovl_En_Test3', - 312:'ovl_En_Test4', - 313:'ovl_En_Bat', - 314:'ovl_En_Sekihi', - 315:'ovl_En_Wiz', - 316:'ovl_En_Wiz_Brock', - 317:'ovl_En_Wiz_Fire', - 318:'ovl_Eff_Change', - 319:'ovl_Dm_Statue', - 320:'ovl_Obj_Fireshield', - 321:'ovl_Bg_Ladder', - 322:'ovl_En_Mkk', - 323:'ovl_Demo_Getitem', - 324:'ovl_En_Dnb', - 325:'ovl_En_Dnh', - 326:'ovl_En_Dnk', - 327:'ovl_En_Dnq', - 328:'ovl_Bg_Keikoku_Saku', - 329:'ovl_Obj_Hugebombiwa', - 330:'ovl_En_Firefly2', - 331:'ovl_En_Rat', - 332:'ovl_En_Water_Effect', - 333:'ovl_En_Kusa2', - 334:'ovl_Bg_Spout_Fire', - 335:'ovl_En_Dy_Extra', - 336:'ovl_En_Bal', - 337:'ovl_En_Ginko_Man', - 338:'ovl_En_Warp_Uzu', - 339:'ovl_Obj_Driftice', - 340:'ovl_En_Look_Nuts', - 341:'ovl_En_Mushi2', - 342:'ovl_En_Fall', - 343:'ovl_En_Mm3', - 344:'ovl_Bg_Crace_Movebg', - 345:'ovl_En_Dno', - 346:'ovl_En_Pr2', - 347:'ovl_En_Prz', - 348:'ovl_En_Jso2', - 349:'ovl_Obj_Etcetera', - 350:'ovl_En_Egol', - 351:'ovl_Obj_Mine', - 352:'ovl_Obj_Purify', - 353:'ovl_En_Tru', - 354:'ovl_En_Trt', - 355:'ovl_En_Test5', - 356:'ovl_En_Test6', - 357:'ovl_En_Az', - 358:'ovl_En_Estone', - 359:'ovl_Bg_Hakugin_Post', - 360:'ovl_Dm_Opstage', - 361:'ovl_Dm_Stk', - 362:'ovl_Dm_Char00', - 363:'ovl_Dm_Char01', - 364:'ovl_Dm_Char02', - 365:'ovl_Dm_Char03', - 366:'ovl_Dm_Char04', - 367:'ovl_Dm_Char05', - 368:'ovl_Dm_Char06', - 369:'ovl_Dm_Char07', - 370:'ovl_Dm_Char08', - 371:'ovl_Dm_Char09', - 372:'ovl_Obj_Tokeidai', - 373:'ovl_En_Mnk', - 374:'ovl_En_Egblock', - 375:'ovl_En_Guard_Nuts', - 376:'ovl_Bg_Hakugin_Bombwall', - 377:'ovl_Obj_Tokei_Tobira', - 378:'ovl_Bg_Hakugin_Elvpole', - 379:'ovl_En_Ma4', - 380:'ovl_En_Twig', - 381:'ovl_En_Po_Fusen', - 382:'ovl_En_Door_Etc', - 383:'ovl_En_Bigokuta', - 384:'ovl_Bg_Icefloe', - #385:'[?]', - #386:'[?]', - #387:'[?]', - #388:'[?]', - #389:'[?]', - 390:'ovl_Effect_Ss_Sbn', - 391:'ovl_Obj_Ocarinalift', - 392:'ovl_En_Time_Tag', - 393:'ovl_Bg_Open_Shutter', - 394:'ovl_Bg_Open_Spot', - 395:'ovl_Bg_Fu_Kaiten', - 396:'ovl_Obj_Aqua', - 397:'ovl_En_Elforg', - 398:'ovl_En_Elfbub', - 399:'ovl_En_Fu_Mato', - 400:'ovl_En_Fu_Kago', - 401:'ovl_En_Osn', - 402:'ovl_Bg_Ctower_Gear', - 403:'ovl_En_Trt2', - 404:'ovl_Obj_Tokei_Step', - 405:'ovl_Bg_Lotus', - 406:'ovl_En_Kame', - 407:'ovl_Obj_Takaraya_Wall', - 408:'ovl_Bg_Fu_Mizu', - 409:'ovl_En_Sellnuts', - 410:'ovl_Bg_Dkjail_Ivy', - 411:'ovl_Obj_Visiblock', - 412:'ovl_En_Takaraya', - 413:'ovl_En_Tsn', - 414:'ovl_En_Ds2n', - 415:'ovl_En_Fsn', - 416:'ovl_En_Shn', - 417:'ovl_En_Stop_heishi', - 418:'ovl_Obj_Bigicicle', - 419:'ovl_En_Lift_Nuts', - 420:'ovl_En_Tk', - 421:'ovl_Bg_Market_Step', - 422:'ovl_Obj_Lupygamelift', - 423:'ovl_En_Test7', - 424:'ovl_Obj_Lightblock', - 425:'ovl_Mir_Ray2', - 426:'ovl_En_Wdhand', - 427:'ovl_En_Gamelupy', - 428:'ovl_Bg_Danpei_Movebg', - 429:'ovl_En_Snowwd', - 430:'ovl_En_Pm', - 431:'ovl_En_Gakufu', - 432:'ovl_Elf_Msg4', - 433:'ovl_Elf_Msg5', - 434:'ovl_En_Col_Man', - 435:'ovl_En_Talk_Gibud', - 436:'ovl_En_Giant', - 437:'ovl_Obj_Snowball', - 438:'ovl_Boss_Hakugin', - 439:'ovl_En_Gb2', - 440:'ovl_En_Onpuman', - 441:'ovl_Bg_Tobira01', - 442:'ovl_En_Tag_Obj', - 443:'ovl_Obj_Dhouse', - 444:'ovl_Obj_Hakaisi', - 445:'ovl_Bg_Hakugin_Switch', - 446:'ovl_En_Snowman', - 447:'ovl_TG_Sw', - 448:'ovl_En_Po_Sisters', - 449:'ovl_En_Pp', - 450:'ovl_En_Hakurock', - 451:'ovl_En_Hanabi', - 452:'ovl_Obj_Dowsing', - 453:'ovl_Obj_Wind', - 454:'ovl_En_Racedog', - 455:'ovl_En_Kendo_Js', - 456:'ovl_Bg_Botihasira', - 457:'ovl_En_Fish2', - 458:'ovl_En_Pst', - 459:'ovl_En_Poh', - 460:'ovl_Obj_Spidertent', - 461:'ovl_En_Zoraegg', - 462:'ovl_En_Kbt', - 463:'ovl_En_Gg', - 464:'ovl_En_Maruta', - 465:'ovl_Obj_Snowball2', - 466:'ovl_En_Gg2', - 467:'ovl_Obj_Ghaka', - 468:'ovl_En_Dnp', - 469:'ovl_En_Dai', - 470:'ovl_Bg_Goron_Oyu', - 471:'ovl_En_Kgy', - 472:'ovl_En_Invadepoh', - 473:'ovl_En_Gk', - 474:'ovl_En_An', - 475:'ovl_En_Bee', - 476:'ovl_En_Ot', - 477:'ovl_En_Dragon', - 478:'ovl_Obj_Dora', - 479:'ovl_En_Bigpo', - 480:'ovl_Obj_Kendo_Kanban', - 481:'ovl_Obj_Hariko', - 482:'ovl_En_Sth', - 483:'ovl_Bg_Sinkai_Kabe', - 484:'ovl_Bg_Haka_Curtain', - 485:'ovl_Bg_Kin2_Bombwall', - 486:'ovl_Bg_Kin2_Fence', - 487:'ovl_Bg_Kin2_Picture', - 488:'ovl_Bg_Kin2_Shelf', - 489:'ovl_En_Rail_Skb', - 490:'ovl_En_Jg', - 491:'ovl_En_Tru_Mt', - 492:'ovl_Obj_Um', - 493:'ovl_En_Neo_Reeba', - 494:'ovl_Bg_Mbar_Chair', - 495:'ovl_Bg_Ikana_Block', - 496:'ovl_Bg_Ikana_Mirror', - 497:'ovl_Bg_Ikana_Rotaryroom', - 498:'ovl_Bg_Dblue_Balance', - 499:'ovl_Bg_Dblue_Waterfall', - 500:'ovl_En_Kaizoku', - 501:'ovl_En_Ge2', - 502:'ovl_En_Ma_Yts', - 503:'ovl_En_Ma_Yto', - 504:'ovl_Obj_Tokei_Turret', - 505:'ovl_Bg_Dblue_Elevator', - 506:'ovl_Obj_Warpstone', - 507:'ovl_En_Zog', - 508:'ovl_Obj_Rotlift', - 509:'ovl_Obj_Jg_Gakki', - 510:'ovl_Bg_Inibs_Movebg', - 511:'ovl_En_Zot', - 512:'ovl_Obj_Tree', - 513:'ovl_Obj_Y2lift', - 514:'ovl_Obj_Y2shutter', - 515:'ovl_Obj_Boat', - 516:'ovl_Obj_Taru', - 517:'ovl_Obj_Hunsui', - 518:'ovl_En_Jc_Mato', - 519:'ovl_Mir_Ray3', - 520:'ovl_En_Zob', - 521:'ovl_Elf_Msg6', - 522:'ovl_Obj_Nozoki', - 523:'ovl_En_Toto', - 524:'ovl_En_Railgibud', - 525:'ovl_En_Baba', - 526:'ovl_En_Suttari', - 527:'ovl_En_Zod', - 528:'ovl_En_Kujiya', - 529:'ovl_En_Geg', - 530:'ovl_Obj_Kinoko', - 531:'ovl_Obj_Yasi', - 532:'ovl_En_Tanron1', - 533:'ovl_En_Tanron2', - 534:'ovl_En_Tanron3', - 535:'ovl_Obj_Chan', - 536:'ovl_En_Zos', - 537:'ovl_En_S_Goro', - 538:'ovl_En_Nb', - 539:'ovl_En_Ja', - 540:'ovl_Bg_F40_Block', - 541:'ovl_Bg_F40_Switch', - 542:'ovl_En_Po_Composer', - 543:'ovl_En_Guruguru', - 544:'ovl_Oceff_Wipe5', - 545:'ovl_En_Stone_heishi', - 546:'ovl_Oceff_Wipe6', - 547:'ovl_En_Scopenuts', - 548:'ovl_En_Scopecrow', - 549:'ovl_Oceff_Wipe7', - 550:'ovl_Eff_Kamejima_Wave', - 551:'ovl_En_Hg', - 552:'ovl_En_Hgo', - 553:'ovl_En_Zov', - 554:'ovl_En_Ah', - 555:'ovl_Obj_Hgdoor', - 556:'ovl_Bg_Ikana_Bombwall', - 557:'ovl_Bg_Ikana_Ray', - 558:'ovl_Bg_Ikana_Shutter', - 559:'ovl_Bg_Haka_Bombwall', - 560:'ovl_Bg_Haka_Tomb', - 561:'ovl_En_Sc_Ruppe', - 562:'ovl_Bg_Iknv_Doukutu', - 563:'ovl_Bg_Iknv_Obj', - 564:'ovl_En_Pamera', - 565:'ovl_Obj_HsStump', - 566:'ovl_En_Hidden_Nuts', - 567:'ovl_En_Zow', - 568:'ovl_En_Talk', - 569:'ovl_En_Al', - 570:'ovl_En_Tab', - 571:'ovl_En_Nimotsu', - 572:'ovl_En_Hit_Tag', - 573:'ovl_En_Ruppecrow', - 574:'ovl_En_Tanron4', - 575:'ovl_En_Tanron5', - 576:'ovl_En_Tanron6', - 577:'ovl_En_Daiku2', - 578:'ovl_En_Muto', - 579:'ovl_En_Baisen', - 580:'ovl_En_Heishi', - 581:'ovl_En_Demo_heishi', - 582:'ovl_En_Dt', - 583:'ovl_En_Cha', - 584:'ovl_Obj_Dinner', - 585:'ovl_Eff_Lastday', - 586:'ovl_Bg_Ikana_Dharma', - 587:'ovl_En_Akindonuts', - 588:'ovl_Eff_Stk', - 589:'ovl_En_Ig', - 590:'ovl_En_Rg', - 591:'ovl_En_Osk', - 592:'ovl_En_Sth2', - 593:'ovl_En_Yb', - 594:'ovl_En_Rz', - 595:'ovl_En_Scopecoin', - 596:'ovl_En_Bjt', - 597:'ovl_En_Bomjima', - 598:'ovl_En_Bomjimb', - 599:'ovl_En_Bombers', - 600:'ovl_En_Bombers2', - 601:'ovl_En_Bombal', - 602:'ovl_Obj_Moon_Stone', - 603:'ovl_Obj_Mu_Pict', - 604:'ovl_Bg_Ikninside', - 605:'ovl_Eff_Zoraband', - 606:'ovl_Obj_Kepn_Koya', - 607:'ovl_Obj_Usiyane', - 608:'ovl_En_Nnh', - 609:'ovl_Obj_Kzsaku', - 610:'ovl_Obj_Milk_Bin', - 611:'ovl_En_Kitan', - 612:'ovl_Bg_Astr_Bombwall', - 613:'ovl_Bg_Iknin_Susceil', - 614:'ovl_En_Bsb', - 615:'ovl_En_Recepgirl', - 616:'ovl_En_Thiefbird', - 617:'ovl_En_Jgame_Tsn', - 618:'ovl_Obj_Jgame_Light', - 619:'ovl_Obj_Yado', - 620:'ovl_Demo_Syoten', - 621:'ovl_Demo_Moonend', - 622:'ovl_Bg_Lbfshot', - 623:'ovl_Bg_Last_Bwall', - 624:'ovl_En_And', - 625:'ovl_En_Invadepoh_Demo', - 626:'ovl_Obj_Danpeilift', - 627:'ovl_En_Fall2', - 628:'ovl_Dm_Al', - 629:'ovl_Dm_An', - 630:'ovl_Dm_Ah', - 631:'ovl_Dm_Nb', - 632:'ovl_En_Drs', - 633:'ovl_En_Ending_Hero', - 634:'ovl_Dm_Bal', - 635:'ovl_En_Paper', - 636:'ovl_En_Hint_Skb', - 637:'ovl_Dm_Tag', - 638:'ovl_En_Bh', - 639:'ovl_En_Ending_Hero2', - 640:'ovl_En_Ending_Hero3', - 641:'ovl_En_Ending_Hero4', - 642:'ovl_En_Ending_Hero5', - 643:'ovl_En_Ending_Hero6', - 644:'ovl_Dm_Gm', - 645:'ovl_Obj_Swprize', - 646:'ovl_En_Invisible_Ruppe', - 647:'ovl_Obj_Ending', - 648:'ovl_En_Rsn', - 649:'gameplay_keep', - 650:'gameplay_field_keep', - 651:'gameplay_dangeon_keep', - # 652 not set, gameplay_object_exchange_static? - 653:'object_link_boy', - 654:'object_link_child', - 655:'object_link_goron', - 656:'object_link_zora', - 657:'object_link_nuts', - 658:'object_mask_ki_tan', - 659:'object_mask_rabit', - 660:'object_mask_skj', - 661:'object_mask_truth', - 662:'object_mask_gibudo', - 663:'object_mask_json', - 664:'object_mask_kerfay', - 665:'object_mask_bigelf', - 666:'object_mask_kyojin', - 667:'object_mask_romerny', - 668:'object_mask_posthat', - 669:'object_mask_zacho', - 670:'object_mask_stone', - 671:'object_mask_bree', - 672:'object_mask_gero', - 673:'object_mask_yofukasi', - 674:'object_mask_meoto', - 675:'object_mask_dancer', - 676:'object_mask_bakuretu', - 677:'object_mask_bu_san', - 678:'object_mask_goron', - 679:'object_mask_zora', - 680:'object_mask_nuts', - 681:'object_mask_boy', - 682:'object_box', - 683:'object_okuta', - 684:'object_wallmaster', - 685:'object_dy_obj', - 686:'object_firefly', - 687:'object_dodongo', - 688:'object_niw', - 689:'object_tite', - 690:'object_ph', - 691:'object_dinofos', - 692:'object_zl1', - 693:'object_bubble', - 694:'object_test3', - 695:'object_famos', - 696:'object_st', - 697:'object_thiefbird', - 698:'object_bombf', - 699:'object_am', - 700:'object_dekubaba', - 701:'object_warp1', - 702:'object_b_heart', - 703:'object_dekunuts', - 704:'object_bb', - 705:'object_death', - 706:'object_hata', - 707:'object_wood02', - 708:'object_trap', - 709:'object_vm', - 710:'object_efc_star_field', - 711:'object_rd', - 712:'object_yukimura_obj', - # skip object_heavy_object (in JP) - 713:'object_horse_link_child', - 714:'object_syokudai', - 715:'object_efc_tw', - 716:'object_gi_key', - 717:'object_mir_ray', - 718:'object_ctower_rot', - 719:'object_bdoor', - 720:'object_sb', - 721:'object_gi_melody', - 722:'object_gi_heart', - 723:'object_gi_compass', - 724:'object_gi_bosskey', - 725:'object_gi_nuts', - 726:'object_gi_hearts', - 727:'object_gi_arrowcase', - 728:'object_gi_bombpouch', - 729:'object_in', - 730:'object_os_anime', - 731:'object_gi_bottle', - 732:'object_gi_stick', - 733:'object_gi_map', - 734:'object_oF1d_map', - 735:'object_ru2', - 736:'object_gi_magicpot', - 737:'object_gi_bomb_1', - 738:'object_ma2', - 739:'object_gi_purse', - 740:'object_rr', - 741:'object_gi_arrow', - 742:'object_gi_bomb_2', - 743:'object_gi_shield_2', - 744:'object_gi_hookshot', - 745:'object_gi_ocarina', - 746:'object_gi_milk', - 747:'object_ma1', - 748:'object_ny', - 749:'object_fr', - 750:'object_gi_bow', - 751:'object_gi_glasses', - 752:'object_gi_liquid', - 753:'object_ani', - 754:'object_gi_shield_3', - 755:'object_gi_bean', - 756:'object_gi_fish', - 757:'object_gi_longsword', - 758:'object_zo', - 759:'object_umajump', - 760:'object_mastergolon', - 761:'object_masterzoora', - 762:'object_aob', - 763:'object_ik', - 764:'object_ahg', - 765:'object_cne', - 766:'object_bji', - 767:'object_bba', - 768:'object_an1', - 769:'object_boj', - 770:'object_fz', - 771:'object_bob', - 772:'object_ge1', - 773:'object_yabusame_point', - 774:'object_d_hsblock', - 775:'object_d_lift', - 776:'object_mamenoki', - 777:'object_goroiwa', - 778:'object_toryo', - 779:'object_daiku', - 780:'object_nwc', - 781:'object_gm', - 782:'object_ms', - 783:'object_hs', - 784:'object_lightswitch', - 785:'object_kusa', - 786:'object_tsubo', - 787:'object_kanban', - 788:'object_owl', - 789:'object_mk', - 790:'object_fu', - 791:'object_gi_ki_tan_mask', - 792:'object_gi_mask18', - 793:'object_gi_rabit_mask', - 794:'object_gi_truth_mask', - 795:'object_stream', - 796:'object_mm', - 797:'object_js', - 798:'object_cs', - 799:'object_gi_soldout', - 800:'object_mag', - 801:'object_gi_golonmask', - 802:'object_gi_zoramask', - 803:'object_ka', - 804:'object_zg', - 805:'object_gi_m_arrow', - 806:'object_ds2', - 807:'object_fish', - 808:'object_gi_sutaru', - 809:'object_ssh', - 810:'object_bigslime', - 811:'object_bg', - 812:'object_bombiwa', - 813:'object_hintnuts', - 814:'object_rs', - 815:'object_gla', - 816:'object_geldb', - 817:'object_dog', - 818:'object_kibako2', - 819:'object_dns', - 820:'object_dnk', - 821:'object_gi_insect', - 822:'object_gi_ghost', - 823:'object_gi_soul', - 824:'object_f40_obj', - 825:'object_gi_rupy', - 826:'object_po_composer', - 827:'object_mu', - 828:'object_wf', - 829:'object_skb', - 830:'object_gs', - 831:'object_ps', - 832:'object_omoya_obj', - 833:'object_crow', - 834:'object_cow', - 835:'object_gi_sword_1', - 836:'object_zl4', - 837:'object_grasshopper', - 838:'object_boyo', - 839:'object_fwall', - 840:'object_jso', - 841:'object_knight', - 842:'object_icicle', - 843:'object_spdweb', - 844:'object_boss01', - 845:'object_boss02', - 846:'object_boss03', - 847:'object_boss04', - 848:'object_boss05', - 849:'object_boss07', - 850:'object_raf', - 851:'object_funen', - 852:'object_raillift', - 853:'object_numa_obj', - 854:'object_flowerpot', - 855:'object_spinyroll', - 856:'object_ice_block', - 857:'object_keikoku_demo', - 858:'object_slime', - 859:'object_pr', - 860:'object_f52_obj', - 861:'object_f53_obj', - 862:'object_kibako', - 863:'object_sek', - 864:'object_gmo', - 865:'object_bat', - 866:'object_sekihil', - 867:'object_sekihig', - 868:'object_sekihin', - 869:'object_sekihiz', - 870:'object_wiz', - 871:'object_ladder', - 872:'object_mkk', - 873:'object_keikoku_obj', - 874:'object_sichitai_obj', - 875:'object_dekucity_ana_obj', - 876:'object_rat', - 877:'object_water_effect', - 878:'object_dblue_object', - 879:'object_bal', - 880:'object_warp_uzu', - 881:'object_driftice', - 882:'object_fall', - 883:'object_hanareyama_obj', - 884:'object_crace_object', - 885:'object_dnq', - 886:'object_obj_tokeidai', - 887:'object_eg', - 888:'object_tru', - 889:'object_trt', - 890:'object_hakugin_obj', - 891:'object_horse_game_check', - 892:'object_stk', - 893:'object_mnk', - 894:'object_gi_bottle_red', - 895:'object_tokei_tobira', - 896:'object_az', - 897:'object_twig', - 898:'object_dekucity_obj', - 899:'object_po_fusen', - 900:'object_racetsubo', - 901:'object_ha', - 902:'object_bigokuta', - 903:'object_open_obj', - 904:'object_fu_kaiten', - 905:'object_fu_mato', - 906:'object_mtoride', - 907:'object_osn', - 908:'object_tokei_step', - 909:'object_lotus', - 910:'object_tl', - 911:'object_dkjail_obj', - 912:'object_visiblock', - 913:'object_tsn', - 914:'object_ds2n', - 915:'object_fsn', - 916:'object_shn', - 917:'object_bigicicle', - 918:'object_gi_bottle_15', - 919:'object_tk', - 920:'object_market_obj', - 921:'object_gi_reserve00', - 922:'object_gi_reserve01', - 923:'object_lightblock', - 924:'object_takaraya_objects', - 925:'object_wdhand', - 926:'object_sdn', - 927:'object_snowwd', - 928:'object_giant', - 929:'object_comb', - 930:'object_hana', - 931:'object_boss_hakugin', - 932:'object_meganeana_obj', - 933:'object_gi_nutsmask', - 934:'object_stk2', - 935:'object_spot11_obj', - 936:'object_danpei_object', - 937:'object_dhouse', - 938:'object_hakaisi', - 939:'object_po', - 940:'object_snowman', - 941:'object_po_sisters', - 942:'object_pp', - 943:'object_goronswitch', - 944:'object_delf', - 945:'object_botihasira', - 946:'object_gi_bigbomb', - 947:'object_pst', - 948:'object_bsmask', - 949:'object_spidertent', - 950:'object_zoraegg', - 951:'object_kbt', - 952:'object_gg', - 953:'object_maruta', - 954:'object_ghaka', - 955:'object_oyu', - 956:'object_dnp', - 957:'object_dai', - 958:'object_kgy', - 959:'object_fb', - 960:'object_taisou', - 961:'object_gk', - 962:'object_haka_obj', - 963:'object_dnt', - 964:'object_yukiyama', - 965:'object_icefloe', - 966:'object_gi_gold_dust', - 967:'object_gi_bottle_16', - 968:'object_gi_bottle_22', - 969:'object_bee', - 970:'object_ot', - 971:'object_utubo', - 972:'object_dora', - 973:'object_gi_loach', - 974:'object_gi_seahorse', - 975:'object_bigpo', - 976:'object_hariko', - 977:'object_dno', - 978:'object_sinkai_kabe', - 979:'object_kin2_obj', - 980:'object_ishi', - 981:'object_hakugin_demo', - 982:'object_jg', - 983:'object_gi_sword_2', - 984:'object_gi_sword_3', - 985:'object_gi_sword_4', - 986:'object_um', - 987:'object_rb', - 988:'object_mbar_obj', - 989:'object_ikana_obj', - 990:'object_kz', - 991:'object_tokei_turret', - 992:'object_zog', - 993:'object_rotlift', - 994:'object_posthouse_obj', - 995:'object_gi_mask09', - 996:'object_gi_mask14', - 997:'object_gi_mask15', - 998:'object_inibs_object', - 999:'object_tree', - 1000:'object_kaizoku_obj', - 1001:'object_gi_reserve_b_00', - 1002:'object_gi_reserve_c_00', - 1003:'object_zob', - 1004:'object_milkbar', - 1005:'object_dmask', - 1006:'object_gi_reserve_c_01', - 1007:'object_zod', - 1008:'object_kumo30', - 1009:'object_obj_yasi', - 1010:'object_tanron1', - 1011:'object_tanron2', - 1012:'object_tanron3', - 1013:'object_gi_magicmushroom', - 1014:'object_obj_chan', - 1015:'object_gi_mask10', - 1016:'object_zos', - 1017:'object_an2', - 1018:'object_an3', - 1019:'object_f40_switch', - 1020:'object_lodmoon', - 1021:'object_tro', - 1022:'object_gi_mask12', - 1023:'object_gi_mask23', - 1024:'object_gi_bottle_21', - 1025:'object_gi_camera', - 1026:'object_kamejima', - 1027:'object_nb', - 1028:'object_harfgibud', - 1029:'object_zov', - 1030:'object_ah', - 1031:'object_hgdoor', - 1032:'object_dor01', - 1033:'object_dor02', - 1034:'object_dor03', - 1035:'object_dor04', - 1036:'object_last_obj', - 1037:'object_redead_obj', - 1038:'object_ikninside_obj', - 1039:'object_iknv_obj', - 1040:'object_pamera', - 1041:'object_hsstump', - 1042:'object_zm', - 1043:'object_al', - 1044:'object_tab', - 1045:'object_secom_obj', - 1046:'object_dt', - 1047:'object_gi_mask03', - 1048:'object_cha', - 1049:'object_obj_dinner', - 1050:'object_gi_reserve_b_01', - 1051:'object_lastday', - 1052:'object_bai', - 1053:'object_ikn_demo', - 1054:'object_gi_fieldmap', - 1055:'object_big_fwall', - 1056:'object_hunsui', - 1057:'object_uch', - 1058:'object_tanron4', - 1059:'object_tanron5', - 1060:'object_in2', - 1061:'object_yb', - 1062:'object_rz', - 1063:'object_bjt', - 1064:'object_taru', - 1065:'object_moonston', - 1066:'object_gi_schedule', - 1067:'object_gi_stonemask', - 1068:'object_zoraband', - 1069:'object_kepn_koya', - 1070:'object_obj_usiyane', - 1071:'object_gi_mask05', - 1072:'object_gi_mask11', - 1073:'object_gi_mask20', - 1074:'object_nnh', - 1075:'object_kzsaku', - 1076:'object_obj_milk_bin', - 1077:'object_random_obj', - 1078:'object_kujiya', - 1079:'object_kitan', - 1080:'object_gi_mask06', - 1081:'object_gi_mask16', - 1082:'object_astr_obj', - 1083:'object_bsb', - 1084:'object_fall2', - 1085:'object_sth', - 1086:'object_gi_mssa', - 1087:'object_smtower', - 1088:'object_gi_mask21', - 1089:'object_yado_obj', - 1090:'object_syoten', - 1091:'object_moonend', - 1092:'object_ob', - 1093:'object_gi_bottle_04', - 1094:'object_and', - 1095:'object_obj_danpeilift', - 1096:'object_drs', - 1097:'object_msmo', - 1098:'object_an4', - 1099:'object_wdor01', - 1100:'object_wdor02', - 1101:'object_wdor03', - 1102:'object_wdor04', - 1103:'object_wdor05', - 1104:'object_stk3', - 1105:'object_kinsta1_obj', - 1106:'object_kinsta2_obj', - 1107:'object_bh', - 1108:'object_gi_mask17', - 1109:'object_gi_mask22', - 1110:'object_lbfshot', - 1111:'object_fusen', - 1112:'object_ending_obj', - 1113:'object_gi_mask13', - #1114:'1113', Map Textures - Building Interiors I - #1115:'1114', Map Textures - Building Interiors II - #1116:'1115', Map Textures - Lost Woods - #1117:'1116', Map Textures - Mountains - #1118:'1117', Map Textures - Ocean - #1119:'1118', Map Textures - Swamp - #1120:'', - #1121:'1120', Map Textures - Field - 1122:'nintendo_rogo_static', - 1123:'title_static', - #1124:'', - #1125:'1124', Textures - Region Lock Error Messages - #1126:'', - #1127:'', - #1128:'', - #1129:'', - #1130:'', - #1131:'', - 1132:'vr_fine_static', - 1133:'vr_cloud_static', - 1134:'vr_pal_static', - 1135:'elf_message_field', - 1136:'elf_message_ydan', - 1137:'Z2_20SICHITAI2', - 1138:'Z2_20SICHITAI2_room_00', - 1139:'Z2_20SICHITAI2_room_01', - 1140:'Z2_20SICHITAI2_room_02', - 1141:'Z2_WITCH_SHOP', - 1142:'Z2_WITCH_SHOP_room_00', - 1143:'Z2_LAST_BS', - 1144:'Z2_LAST_BS_room_00', - 1145:'Z2_HAKASHITA', - 1146:'Z2_HAKASHITA_room_00', - 1147:'Z2_HAKASHITA_room_01', - 1148:'Z2_HAKASHITA_room_02', - 1149:'Z2_HAKASHITA_room_03', - 1150:'Z2_HAKASHITA_room_04', - 1151:'Z2_AYASHIISHOP', - 1152:'Z2_AYASHIISHOP_room_00', - 1153:'Z2_AYASHIISHOP_room_01', - 1154:'Z2_OMOYA', - 1155:'Z2_OMOYA_room_00', - 1156:'Z2_OMOYA_room_01', - 1157:'Z2_OMOYA_room_02', - 1158:'Z2_BOWLING', - 1159:'Z2_BOWLING_room_00', - 1160:'Z2_SONCHONOIE', - 1161:'Z2_SONCHONOIE_room_00', - 1162:'Z2_SONCHONOIE_room_01', - 1163:'Z2_SONCHONOIE_room_02', - 1164:'Z2_SONCHONOIE_room_03', - 1165:'Z2_IKANA', - 1166:'Z2_IKANA_room_00', - 1167:'Z2_IKANA_room_01', - 1168:'Z2_IKANA_room_02', - 1169:'Z2_IKANA_room_03', - 1170:'Z2_IKANA_room_04', - 1171:'Z2_KAIZOKU', - 1172:'Z2_KAIZOKU_room_00', - 1173:'Z2_MILK_BAR', - 1174:'Z2_MILK_BAR_room_00', - 1175:'Z2_INISIE_N', - 1176:'Z2_INISIE_N_room_00', - 1177:'Z2_INISIE_N_room_01', - 1178:'Z2_INISIE_N_room_02', - 1179:'Z2_INISIE_N_room_03', - 1180:'Z2_INISIE_N_room_04', - 1181:'Z2_INISIE_N_room_05', - 1182:'Z2_INISIE_N_room_06', - 1183:'Z2_INISIE_N_room_07', - 1184:'Z2_INISIE_N_room_08', - 1185:'Z2_INISIE_N_room_09', - 1186:'Z2_INISIE_N_room_10', - 1187:'Z2_INISIE_N_room_11', - 1188:'Z2_TAKARAYA', - 1189:'Z2_TAKARAYA_room_00', - 1190:'Z2_INISIE_R', - 1191:'Z2_INISIE_R_room_00', - 1192:'Z2_INISIE_R_room_01', - 1193:'Z2_INISIE_R_room_02', - 1194:'Z2_INISIE_R_room_03', - 1195:'Z2_INISIE_R_room_04', - 1196:'Z2_INISIE_R_room_05', - 1197:'Z2_INISIE_R_room_06', - 1198:'Z2_INISIE_R_room_07', - 1199:'Z2_INISIE_R_room_08', - 1200:'Z2_INISIE_R_room_09', - 1201:'Z2_INISIE_R_room_10', - 1202:'Z2_INISIE_R_room_11', - 1203:'Z2_OKUJOU', - 1204:'Z2_OKUJOU_room_00', - 1205:'Z2_OPENINGDAN', - 1206:'Z2_OPENINGDAN_room_00', - 1207:'Z2_OPENINGDAN_room_01', - 1208:'Z2_MITURIN', - 1209:'Z2_MITURIN_room_00', - 1210:'Z2_MITURIN_room_01', - 1211:'Z2_MITURIN_room_02', - 1212:'Z2_MITURIN_room_03', - 1213:'Z2_MITURIN_room_04', - 1214:'Z2_MITURIN_room_05', - 1215:'Z2_MITURIN_room_06', - 1216:'Z2_MITURIN_room_07', - 1217:'Z2_MITURIN_room_08', - 1218:'Z2_MITURIN_room_09', - 1219:'Z2_MITURIN_room_10', - 1220:'Z2_MITURIN_room_11', - 1221:'Z2_MITURIN_room_12', - 1222:'Z2_13HUBUKINOMITI', - 1223:'Z2_13HUBUKINOMITI_room_00', - 1224:'Z2_CASTLE', - 1225:'Z2_CASTLE_room_00', - 1226:'Z2_CASTLE_room_01', - 1227:'Z2_CASTLE_room_02', - 1228:'Z2_CASTLE_room_03', - 1229:'Z2_CASTLE_room_04', - 1230:'Z2_CASTLE_room_05', - 1231:'Z2_CASTLE_room_06', - 1232:'Z2_CASTLE_room_07', - 1233:'Z2_CASTLE_room_08', - 1234:'Z2_CASTLE_room_09', - 1235:'Z2_DEKUTES', - 1236:'Z2_DEKUTES_room_00', - 1237:'Z2_MITURIN_BS', - 1238:'Z2_MITURIN_BS_room_00', - 1239:'Z2_SYATEKI_MIZU', - 1240:'Z2_SYATEKI_MIZU_room_00', - 1241:'Z2_HAKUGIN', - 1242:'Z2_HAKUGIN_room_00', - 1243:'Z2_HAKUGIN_room_01', - 1244:'Z2_HAKUGIN_room_02', - 1245:'Z2_HAKUGIN_room_03', - 1246:'Z2_HAKUGIN_room_04', - 1247:'Z2_HAKUGIN_room_05', - 1248:'Z2_HAKUGIN_room_06', - 1249:'Z2_HAKUGIN_room_07', - 1250:'Z2_HAKUGIN_room_08', - 1251:'Z2_HAKUGIN_room_09', - 1252:'Z2_HAKUGIN_room_10', - 1253:'Z2_HAKUGIN_room_11', - 1254:'Z2_HAKUGIN_room_12', - 1255:'Z2_HAKUGIN_room_13', - 1256:'Z2_ROMANYMAE', - 1257:'Z2_ROMANYMAE_room_00', - 1258:'Z2_PIRATE', - 1259:'Z2_PIRATE_room_00', - 1260:'Z2_PIRATE_room_01', - 1261:'Z2_PIRATE_room_02', - 1262:'Z2_PIRATE_room_03', - 1263:'Z2_PIRATE_room_04', - 1264:'Z2_PIRATE_room_05', - 1265:'Z2_PIRATE_room_06', - 1266:'Z2_PIRATE_room_07', - 1267:'Z2_PIRATE_room_08', - 1268:'Z2_PIRATE_room_09', - 1269:'Z2_PIRATE_room_10', - 1270:'Z2_PIRATE_room_11', - 1271:'Z2_PIRATE_room_12', - 1272:'Z2_PIRATE_room_13', - 1273:'Z2_PIRATE_room_14', - 1274:'Z2_SYATEKI_MORI', - 1275:'Z2_SYATEKI_MORI_room_00', - 1276:'Z2_SINKAI', - 1277:'Z2_SINKAI_room_00', - 1278:'Z2_YOUSEI_IZUMI', - 1279:'Z2_YOUSEI_IZUMI_room_00', - 1280:'Z2_YOUSEI_IZUMI_room_01', - 1281:'Z2_YOUSEI_IZUMI_room_02', - 1282:'Z2_YOUSEI_IZUMI_room_03', - 1283:'Z2_YOUSEI_IZUMI_room_04', - 1284:'Z2_KINSTA1', - 1285:'Z2_KINSTA1_room_00', - 1286:'Z2_KINSTA1_room_01', - 1287:'Z2_KINSTA1_room_02', - 1288:'Z2_KINSTA1_room_03', - 1289:'Z2_KINSTA1_room_04', - 1290:'Z2_KINSTA1_room_05', - 1291:'Z2_KINDAN2', - 1292:'Z2_KINDAN2_room_00', - 1293:'Z2_KINDAN2_room_01', - 1294:'Z2_KINDAN2_room_02', - 1295:'Z2_KINDAN2_room_03', - 1296:'Z2_KINDAN2_room_04', - 1297:'Z2_KINDAN2_room_05', - 1298:'Z2_TENMON_DAI', - 1299:'Z2_TENMON_DAI_room_00', - 1300:'Z2_TENMON_DAI_room_01', - 1301:'Z2_LAST_DEKU', - 1302:'Z2_LAST_DEKU_room_00', - 1303:'Z2_LAST_DEKU_room_01', - 1304:'Z2_22DEKUCITY', - 1305:'Z2_22DEKUCITY_room_00', - 1306:'Z2_22DEKUCITY_room_01', - 1307:'Z2_22DEKUCITY_room_02', - 1308:'Z2_KAJIYA', - 1309:'Z2_KAJIYA_room_00', - 1310:'Z2_00KEIKOKU', - 1311:'Z2_00KEIKOKU_room_00', - 1312:'Z2_POSTHOUSE', - 1313:'Z2_POSTHOUSE_room_00', - 1314:'Z2_LABO', - 1315:'Z2_LABO_room_00', - 1316:'Z2_DANPEI2TEST', - 1317:'Z2_DANPEI2TEST_room_00', - 1318:'Z2_DANPEI2TEST_room_01', - 1319:'Z2_16GORON_HOUSE', - 1320:'Z2_16GORON_HOUSE_room_00', - 1321:'Z2_16GORON_HOUSE_room_01', - 1322:'Z2_33ZORACITY', - 1323:'Z2_33ZORACITY_room_00', - 1324:'Z2_8ITEMSHOP', - 1325:'Z2_8ITEMSHOP_room_00', - 1326:'Z2_F01', - 1327:'Z2_F01_room_00', - 1328:'Z2_INISIE_BS', - 1329:'Z2_INISIE_BS_room_00', - 1330:'Z2_30GYOSON', - 1331:'Z2_30GYOSON_room_00', - 1332:'Z2_31MISAKI', - 1333:'Z2_31MISAKI_room_00', - 1334:'Z2_TAKARAKUJI', - 1335:'Z2_TAKARAKUJI_room_00', - 1336:'Z2_TORIDE', - 1337:'Z2_TORIDE_room_00', - 1338:'Z2_FISHERMAN', - 1339:'Z2_FISHERMAN_room_00', - 1340:'Z2_GORONSHOP', - 1341:'Z2_GORONSHOP_room_00', - 1342:'Z2_DEKU_KING', - 1343:'Z2_DEKU_KING_room_00', - 1344:'Z2_LAST_GORON', - 1345:'Z2_LAST_GORON_room_00', - 1346:'Z2_LAST_GORON_room_01', - 1347:'Z2_24KEMONOMITI', - 1348:'Z2_24KEMONOMITI_room_00', - 1349:'Z2_F01_B', - 1350:'Z2_F01_B_room_00', - 1351:'Z2_F01C', - 1352:'Z2_F01C_room_00', - 1353:'Z2_BOTI', - 1354:'Z2_BOTI_room_00', - 1355:'Z2_BOTI_room_01', - 1356:'Z2_HAKUGIN_BS', - 1357:'Z2_HAKUGIN_BS_room_00', - 1358:'Z2_20SICHITAI', - 1359:'Z2_20SICHITAI_room_00', - 1360:'Z2_20SICHITAI_room_01', - 1361:'Z2_20SICHITAI_room_02', - 1362:'Z2_21MITURINMAE', - 1363:'Z2_21MITURINMAE_room_00', - 1364:'Z2_LAST_ZORA', - 1365:'Z2_LAST_ZORA_room_00', - 1366:'Z2_11GORONNOSATO2', - 1367:'Z2_11GORONNOSATO2_room_00', - 1368:'Z2_11GORONNOSATO2_room_01', - 1369:'Z2_SEA', - 1370:'Z2_SEA_room_00', - 1371:'Z2_SEA_room_01', - 1372:'Z2_SEA_room_02', - 1373:'Z2_SEA_room_03', - 1374:'Z2_SEA_room_04', - 1375:'Z2_SEA_room_05', - 1376:'Z2_SEA_room_06', - 1377:'Z2_SEA_room_07', - 1378:'Z2_SEA_room_08', - 1379:'Z2_SEA_room_09', - 1380:'Z2_SEA_room_10', - 1381:'Z2_SEA_room_11', - 1382:'Z2_SEA_room_12', - 1383:'Z2_SEA_room_13', - 1384:'Z2_SEA_room_14', - 1385:'Z2_SEA_room_15', - 1386:'Z2_35TAKI', - 1387:'Z2_35TAKI_room_00', - 1388:'Z2_REDEAD', - 1389:'Z2_REDEAD_room_00', - 1390:'Z2_REDEAD_room_01', - 1391:'Z2_REDEAD_room_02', - 1392:'Z2_REDEAD_room_03', - 1393:'Z2_REDEAD_room_04', - 1394:'Z2_REDEAD_room_05', - 1395:'Z2_REDEAD_room_06', - 1396:'Z2_REDEAD_room_07', - 1397:'Z2_REDEAD_room_08', - 1398:'Z2_REDEAD_room_09', - 1399:'Z2_REDEAD_room_10', - 1400:'Z2_REDEAD_room_11', - 1401:'Z2_REDEAD_room_12', - 1402:'Z2_REDEAD_room_13', - 1403:'Z2_BANDROOM', - 1404:'Z2_BANDROOM_room_00', - 1405:'Z2_BANDROOM_room_01', - 1406:'Z2_BANDROOM_room_02', - 1407:'Z2_BANDROOM_room_03', - 1408:'Z2_BANDROOM_room_04', - 1409:'Z2_11GORONNOSATO', - 1410:'Z2_11GORONNOSATO_room_00', - 1411:'Z2_11GORONNOSATO_room_01', - 1412:'Z2_GORON_HAKA', - 1413:'Z2_GORON_HAKA_room_00', - 1414:'Z2_SECOM', - 1415:'Z2_SECOM_room_00', - 1416:'Z2_SECOM_room_01', - 1417:'Z2_10YUKIYAMANOMURA', - 1418:'Z2_10YUKIYAMANOMURA_room_00', - 1419:'Z2_TOUGITES', - 1420:'Z2_TOUGITES_room_00', - 1421:'Z2_DANPEI', - 1422:'Z2_DANPEI_room_00', - 1423:'Z2_DANPEI_room_01', - 1424:'Z2_DANPEI_room_02', - 1425:'Z2_DANPEI_room_03', - 1426:'Z2_DANPEI_room_04', - 1427:'Z2_DANPEI_room_05', - 1428:'Z2_DANPEI_room_06', - 1429:'Z2_DANPEI_room_07', - 1430:'Z2_DANPEI_room_08', - 1431:'Z2_IKANAMAE', - 1432:'Z2_IKANAMAE_room_00', - 1433:'Z2_DOUJOU', - 1434:'Z2_DOUJOU_room_00', - 1435:'Z2_MUSICHOUSE', - 1436:'Z2_MUSICHOUSE_room_00', - 1437:'Z2_IKNINSIDE', - 1438:'Z2_IKNINSIDE_room_00', - 1439:'Z2_IKNINSIDE_room_01', - 1440:'Z2_MAP_SHOP', - 1441:'Z2_MAP_SHOP_room_00', - 1442:'Z2_F40', - 1443:'Z2_F40_room_00', - 1444:'Z2_F41', - 1445:'Z2_F41_room_00', - 1446:'Z2_10YUKIYAMANOMURA2', - 1447:'Z2_10YUKIYAMANOMURA2_room_00', - 1448:'Z2_10YUKIYAMANOMURA2_room_01', - 1449:'Z2_14YUKIDAMANOMITI', - 1450:'Z2_14YUKIDAMANOMITI_room_00', - 1451:'Z2_12HAKUGINMAE', - 1452:'Z2_12HAKUGINMAE_room_00', - 1453:'Z2_17SETUGEN', - 1454:'Z2_17SETUGEN_room_00', - 1457:'Z2_17SETUGEN2', - 1456:'Z2_17SETUGEN2_room_00', - 1457:'Z2_SEA_BS', - 1458:'Z2_SEA_BS_room_00', - 1459:'Z2_RANDOM', - 1460:'Z2_RANDOM_room_00', - 1461:'Z2_RANDOM_room_01', - 1462:'Z2_RANDOM_room_02', - 1463:'Z2_RANDOM_room_03', - 1464:'Z2_RANDOM_room_04', - 1465:'Z2_RANDOM_room_05', - 1466:'Z2_YADOYA', - 1467:'Z2_YADOYA_room_00', - 1468:'Z2_YADOYA_room_01', - 1469:'Z2_YADOYA_room_02', - 1470:'Z2_YADOYA_room_03', - 1471:'Z2_YADOYA_room_04', - 1472:'Z2_KONPEKI_ENT', - 1473:'Z2_KONPEKI_ENT_room_00', - 1474:'Z2_INSIDETOWER', - 1475:'Z2_INSIDETOWER_room_00', - 1476:'Z2_INSIDETOWER_room_01', - 1477:'Z2_26SARUNOMORI', - 1478:'Z2_26SARUNOMORI_room_00', - 1479:'Z2_26SARUNOMORI_room_01', - 1480:'Z2_26SARUNOMORI_room_02', - 1481:'Z2_26SARUNOMORI_room_03', - 1482:'Z2_26SARUNOMORI_room_04', - 1483:'Z2_26SARUNOMORI_room_05', - 1484:'Z2_26SARUNOMORI_room_06', - 1485:'Z2_26SARUNOMORI_room_07', - 1486:'Z2_26SARUNOMORI_room_08', - 1487:'Z2_LOST_WOODS', - 1488:'Z2_LOST_WOODS_room_00', - 1489:'Z2_LOST_WOODS_room_01', - 1490:'Z2_LOST_WOODS_room_02', - 1491:'Z2_LAST_LINK', - 1492:'Z2_LAST_LINK_room_00', - 1493:'Z2_LAST_LINK_room_01', - 1494:'Z2_LAST_LINK_room_02', - 1495:'Z2_LAST_LINK_room_03', - 1496:'Z2_LAST_LINK_room_04', - 1497:'Z2_LAST_LINK_room_05', - 1498:'Z2_LAST_LINK_room_06', - 1499:'Z2_LAST_LINK_room_07', - 1500:'Z2_SOUGEN', - 1501:'Z2_SOUGEN_room_00', - 1502:'Z2_BOMYA', - 1503:'Z2_BOMYA_room_00', - 1504:'Z2_KYOJINNOMA', - 1505:'Z2_KYOJINNOMA_room_00', - 1506:'Z2_KOEPONARACE', - 1507:'Z2_KOEPONARACE_room_00', - 1508:'Z2_GORONRACE', - 1509:'Z2_GORONRACE_room_00', - 1510:'Z2_TOWN', - 1511:'Z2_TOWN_room_00', - 1512:'Z2_ICHIBA', - 1513:'Z2_ICHIBA_room_00', - 1514:'Z2_BACKTOWN', - 1515:'Z2_BACKTOWN_room_00', - 1516:'Z2_CLOCKTOWER', - 1517:'Z2_CLOCKTOWER_room_00', - 1518:'Z2_ALLEY', - 1519:'Z2_ALLEY_room_00', - 1520:'SPOT00', - 1521:'SPOT00_room_00', - 1522:'KAKUSIANA', - 1523:'KAKUSIANA_room_00', - 1524:'KAKUSIANA_room_01', - 1525:'KAKUSIANA_room_02', - 1526:'KAKUSIANA_room_03', - 1527:'KAKUSIANA_room_04', - 1528:'KAKUSIANA_room_05', - 1529:'KAKUSIANA_room_06', - 1530:'KAKUSIANA_room_07', - 1531:'KAKUSIANA_room_08', - 1532:'KAKUSIANA_room_09', - 1533:'KAKUSIANA_room_10', - 1534:'KAKUSIANA_room_11', - 1535:'KAKUSIANA_room_12', - 1536:'KAKUSIANA_room_13', - 1537:'KAKUSIANA_room_14', - 1538:'bump_texture_static', - } - -def read_uint32_be(offset): - return struct.unpack('>I', romData[offset:offset+4])[0] - -def write_output_file(name, offset, size): - try: - with open(name, 'wb') as f: - f.write(romData[offset:offset+size]) - except IOError: - print('failed to write file ' + name) - -try: - os.mkdir('baserom') -except: - pass - -try: - os.mkdir('decomp') -except: - pass - -try: - os.mkdir('asm') -except: - pass - -# read baserom data -try: - with open(ROM_FILE_NAME, 'rb') as f: - romData = f.read() -except IOError: - print('failed to read file ' + ROM_FILE_NAME) - sys.exit(1) - -dmadata_size = read_uint32_be(FILE_TABLE_OFFSET + 16 * 2 + 4) - read_uint32_be(FILE_TABLE_OFFSET + 16 * 2 + 0) -file_count = dmadata_size // 0x10 - -# extract files -for i in range(0, file_count): - entryOffset = FILE_TABLE_OFFSET + 16 * i - - virtStart = read_uint32_be(entryOffset + 0) - virtEnd = read_uint32_be(entryOffset + 4) - physStart = read_uint32_be(entryOffset + 8) - physEnd = read_uint32_be(entryOffset + 12) - - if i in FILE_NAMES: - filename = FILE_NAMES[i] - else: - filename = '%03d_0x%08x' % (i, physStart) - - if physEnd == 0: # uncompressed - compressed = False - size = virtEnd - virtStart - else: # compressed - compressed = True - size = physEnd - physStart - - if physStart == 0xFFFFFFFF: # file is in table but not on cart? - continue - - if virtStart == 0 and virtEnd == 0: # there are several entries at the end like this... - continue - - print('extracting ' + filename + ' (0x%08X, 0x%08X, 0x%08X)' % (virtStart, virtEnd, size)) - - if compressed: - #print('decompressing ' + filename) - - decompressed_data = decompress(romData[physStart:physStart+size]) - - writefile = open('decomp/' + filename, 'wb') - writefile.write(decompressed_data) - writefile.close() - else: - write_output_file('baserom/' + filename, physStart, size) - +import struct, os, sys, argparse + +from libyaz0 import decompress + +# TODO automatically find dmadata +FILE_TABLE_OFFSET = 0x1A500 # 0x1C110 for JP1.0, 0x1C050 for JP1.1, 0x24F60 for debug + +# TODO stick this in ./tables +FILE_NAMES = { + 0:'makerom', + 1:'boot', + 2:'dmadata', + 3:'Audiobank', + 4:'Audioseq', + 5:'Audiotable', + 6:'jpn_font_static', + 7:'link_animetion', # not a typo + #8:'', + #9:'', + 10:'icon_item_field_static', + 11:'icon_item_dungeon_static', + 12:'icon_item_gameover_static', + #13:'', + #14:'', + 15:'map_i_static', + 16:'map_grand_static', + 17:'item_name_static', + 18:'map_name_static', + #19:'', + #20:'', + #21:'', + #22:'', + #23:'', + #24:'', + 25:'do_action_static', + 26:'message_static', + 27:'message_texture_static', + 28:'nes_font_static', + 29:'en_message_data_static', # guess from jpn_message_data_static + 30:'staff_message_data_static', + 31:'code', + 32:'ovl_title', + 33:'ovl_select', + 34:'ovl_opening', + 35:'ovl_file_choose', + 36:'ovl_daytelop', + 37:'ovl_kaleido_scope', + 38:'ovl_Player_Actor', + 39:'ovl_En_Test', + 40:'ovl_En_GirlA', + 41:'ovl_En_Part', + 42:'ovl_En_Light', + 43:'ovl_En_Door', + 44:'ovl_En_Box', + 45:'ovl_En_Pametfrog', + 46:'ovl_En_Okuta', + 47:'ovl_En_Bom', + 48:'ovl_En_Wallmas', + 49:'ovl_En_Dodongo', + 50:'ovl_En_Firefly', + 51:'ovl_En_Horse', + 52:'ovl_En_Arrow', + 53:'ovl_En_Elf', + 54:'ovl_En_Niw', + 55:'ovl_En_Tite', + 56:'ovl_En_Peehat', + 57:'ovl_En_Holl', + 58:'ovl_En_Dinofos', + 59:'ovl_En_Hata', + 60:'ovl_En_Zl1', + 61:'ovl_En_Viewer', + 62:'ovl_En_Bubble', + 63:'ovl_Door_Shutter', + 64:'ovl_En_Boom', + 65:'ovl_En_Torch2', + 66:'ovl_En_Minifrog', + 67:'ovl_En_St', + 68:'ovl_Obj_Wturn', + 69:'ovl_En_River_Sound', + 70:'ovl_En_Ossan', + 71:'ovl_En_Famos', + 72:'ovl_En_Bombf', + 73:'ovl_En_Am', + 74:'ovl_En_Dekubaba', + 75:'ovl_En_M_Fire1', + 76:'ovl_En_M_Thunder', + 77:'ovl_Bg_Breakwall', + 78:'ovl_Door_Warp1', + 79:'ovl_Obj_Syokudai', + 80:'ovl_Item_B_Heart', + 81:'ovl_En_Dekunuts', + 82:'ovl_En_Bbfall', + 83:'ovl_Arms_Hook', + 84:'ovl_En_Bb', + 85:'ovl_Bg_Keikoku_Spr', + 86:'ovl_En_Wood02', + 87:'ovl_En_Death', + 88:'ovl_En_Minideath', + 89:'ovl_En_Vm', + 90:'ovl_Demo_Effect', + 91:'ovl_Demo_Kankyo', + 92:'ovl_En_Floormas', + 93:'ovl_En_Rd', + 94:'ovl_Bg_F40_Flift', + 95:'ovl_Bg_Heavy_Block', + # ovl_Obj_Mure? In JP + 96:'ovl_En_Sw', + 97:'ovl_Object_Kankyo', + 98:'ovl_En_Horse_Link_Child', + 99:'ovl_Door_Ana', + 100:'ovl_En_Encount1', + 101:'ovl_Demo_Tre_Lgt', + 102:'ovl_En_Encount2', + 103:'ovl_En_Fire_Rock', + 104:'ovl_Bg_Ctower_Rot', + 105:'ovl_Mir_Ray', + 106:'ovl_En_Sb', + 107:'ovl_En_Bigslime', + 108:'ovl_En_Karebaba', + 109:'ovl_En_In', + 110:'ovl_En_Bom_Chu', + 111:'ovl_En_Horse_Game_Check', + 112:'ovl_En_Rr', + 113:'ovl_En_Fr', + 114:'ovl_En_Fishing', + 115:'ovl_Obj_Oshihiki', + 116:'ovl_Eff_Dust', + 117:'ovl_Bg_Umajump', + 118:'ovl_En_Insect', + 119:'ovl_En_Butte', + 120:'ovl_En_Fish', + 121:'ovl_Item_Etcetera', + 122:'ovl_Arrow_Fire', + 123:'ovl_Arrow_Ice', + 124:'ovl_Arrow_Light', + 125:'ovl_Obj_Kibako', + 126:'ovl_Obj_Tsubo', + 127:'ovl_En_Ik', + 128:'ovl_Demo_Shd', + 129:'ovl_En_Dns', + 130:'ovl_Elf_Msg', + 131:'ovl_En_Honotrap', + 132:'ovl_En_Tubo_Trap', + 133:'ovl_Obj_Ice_Poly', + 134:'ovl_En_Fz', + 135:'ovl_En_Kusa', + 136:'ovl_Obj_Bean', + 137:'ovl_Obj_Bombiwa', + 138:'ovl_Obj_Switch', + 139:'ovl_Obj_Lift', + 140:'ovl_Obj_Hsblock', + 141:'ovl_En_Okarina_Tag', + 142:'ovl_En_Goroiwa', + 143:'ovl_En_Daiku', + 144:'ovl_En_Nwc', + 145:'ovl_Item_Inbox', + 146:'ovl_En_Ge1', + 147:'ovl_Obj_Blockstop', + 148:'ovl_En_Sda', + 149:'ovl_En_Clear_Tag', + 150:'ovl_En_Gm', + 151:'ovl_En_Ms', + 152:'ovl_En_Hs', + 153:'ovl_Bg_Ingate', + 154:'ovl_En_Kanban', + 155:'ovl_En_Attack_Niw', + 156:'ovl_En_Mk', + 157:'ovl_En_Owl', + 158:'ovl_En_Ishi', + 159:'ovl_Obj_Hana', + 160:'ovl_Obj_Lightswitch', + 161:'ovl_Obj_Mure2', + 162:'ovl_En_Fu', + 163:'ovl_En_Stream', + 164:'ovl_En_Mm', + 165:'ovl_En_Weather_Tag', + 166:'ovl_En_Ani', + 167:'ovl_En_Js', + 168:'ovl_En_Okarina_Effect', + 169:'ovl_En_Mag', + 170:'ovl_Elf_Msg2', + 171:'ovl_Bg_F40_Swlift', + 172:'ovl_En_Kakasi', + 173:'ovl_Obj_Makeoshihiki', + 174:'ovl_Oceff_Spot', + 175:'ovl_En_Torch', + 176:'ovl_Shot_Sun', + 177:'ovl_Obj_Roomtimer', + 178:'ovl_En_Ssh', + 179:'ovl_Oceff_Wipe', + 180:'ovl_Effect_Ss_Dust', + 181:'ovl_Effect_Ss_Kirakira', + 182:'ovl_Effect_Ss_Bomb2', + 183:'ovl_Effect_Ss_Blast', + 184:'ovl_Effect_Ss_G_Spk', + 185:'ovl_Effect_Ss_D_Fire', + 186:'ovl_Effect_Ss_Bubble', + 187:'ovl_Effect_Ss_G_Ripple', + 188:'ovl_Effect_Ss_G_Splash', + 189:'ovl_Effect_Ss_G_Fire', + 190:'ovl_Effect_Ss_Lightning', + 191:'ovl_Effect_Ss_Dt_Bubble', + 192:'ovl_Effect_Ss_Hahen', + 193:'ovl_Effect_Ss_Stick', + 194:'ovl_Effect_Ss_Sibuki', + 195:'ovl_Effect_Ss_Stone1', + 196:'ovl_Effect_Ss_Hitmark', + 197:'ovl_Effect_Ss_Fhg_Flash', + 198:'ovl_Effect_Ss_K_Fire', + 199:'ovl_Effect_Ss_Solder_Srch_Ball', + 200:'ovl_Effect_Ss_Kakera', + 201:'ovl_Effect_Ss_Ice_Piece', + 202:'ovl_Effect_Ss_En_Ice', + 203:'ovl_Effect_Ss_Fire_Tail', + 204:'ovl_Effect_Ss_En_Fire', + 205:'ovl_Effect_Ss_Extra', + 206:'ovl_Effect_Ss_Dead_Db', + 207:'ovl_Effect_Ss_Dead_Dd', + 208:'ovl_Effect_Ss_Dead_Ds', + 209:'ovl_Oceff_Storm', + 210:'ovl_Obj_Demo', + 211:'ovl_En_Minislime', + 212:'ovl_En_Nutsball', + 213:'ovl_Oceff_Wipe2', + 214:'ovl_Oceff_Wipe3', + 215:'ovl_En_Dg', + 216:'ovl_En_Si', + 217:'ovl_Obj_Comb', + 218:'ovl_Obj_Kibako2', + 219:'ovl_En_Hs2', + 220:'ovl_Obj_Mure3', + 221:'ovl_En_Tg', + 222:'ovl_En_Wf', + 223:'ovl_En_Skb', + 224:'ovl_En_Gs', + 225:'ovl_Obj_Sound', + 226:'ovl_En_Crow', + 227:'ovl_En_Cow', + 228:'ovl_Oceff_Wipe4', + 229:'ovl_En_Zo', + 230:'ovl_Effect_Ss_Ice_Smoke', + 231:'ovl_Obj_Makekinsuta', + 232:'ovl_En_Ge3', + 233:'ovl_Obj_Hamishi', + 234:'ovl_En_Zl4', + 235:'ovl_En_Mm2', + 236:'ovl_Door_Spiral', + 237:'ovl_Obj_Pzlblock', + 238:'ovl_Obj_Toge', + 239:'ovl_Obj_Armos', + 240:'ovl_Obj_Boyo', + 241:'ovl_En_Grasshopper', + 242:'ovl_Obj_Grass', + 243:'ovl_Obj_Grass_Carry', + 244:'ovl_Obj_Grass_Unit', + 245:'ovl_Bg_Fire_Wall', + 246:'ovl_En_Bu', + 247:'ovl_En_Encount3', + 248:'ovl_En_Jso', + 249:'ovl_Obj_Chikuwa', + 250:'ovl_En_Knight', + 251:'ovl_En_Warp_tag', + 252:'ovl_En_Aob_01', + 253:'ovl_En_Boj_01', + 254:'ovl_En_Boj_02', + 255:'ovl_En_Boj_03', + 256:'ovl_En_Encount4', + 257:'ovl_En_Bom_Bowl_Man', + 258:'ovl_En_Syateki_Man', + 259:'ovl_Bg_Icicle', + 260:'ovl_En_Syateki_Crow', + 261:'ovl_En_Boj_04', + 262:'ovl_En_Cne_01', + 263:'ovl_En_Bba_01', + 264:'ovl_En_Bji_01', + 265:'ovl_Bg_Spdweb', + 266:'ovl_En_Mt_tag', + 267:'ovl_Boss_01', + 268:'ovl_Boss_02', + 269:'ovl_Boss_03', + 270:'ovl_Boss_04', + 271:'ovl_Boss_05', + 272:'ovl_Boss_06', + 273:'ovl_Boss_07', + 274:'ovl_Bg_Dy_Yoseizo', + 275:'ovl_En_Boj_05', + 276:'ovl_En_Sob1', + 277:'ovl_En_Go', + 278:'ovl_En_Raf', + 279:'ovl_Obj_Funen', + 280:'ovl_Obj_Raillift', + 281:'ovl_Bg_Numa_Hana', + 282:'ovl_Obj_Flowerpot', + 283:'ovl_Obj_Spinyroll', + 284:'ovl_Dm_Hina', + 285:'ovl_En_Syateki_Wf', + 286:'ovl_Obj_Skateblock', + 287:'ovl_Effect_En_Ice_Block', + 288:'ovl_Obj_Iceblock', + 289:'ovl_En_Bigpamet', + 290:'ovl_Bg_Dblue_Movebg', + 291:'ovl_En_Syateki_Dekunuts', + 292:'ovl_Elf_Msg3', + 293:'ovl_En_Fg', + 294:'ovl_Dm_Ravine', + 295:'ovl_Dm_Sa', + 296:'ovl_En_Slime', + 297:'ovl_En_Pr', + 298:'ovl_Obj_Toudai', + 299:'ovl_Obj_Entotu', + 300:'ovl_Obj_Bell', + 301:'ovl_En_Syateki_Okuta', + 302:'ovl_Obj_Shutter', + 303:'ovl_Dm_Zl', + 304:'ovl_En_Ru', + 305:'ovl_En_Elfgrp', + 306:'ovl_Dm_Tsg', + 307:'ovl_En_Baguo', + 308:'ovl_Obj_Vspinyroll', + 309:'ovl_Obj_Smork', + 310:'ovl_En_Test2', + 311:'ovl_En_Test3', + 312:'ovl_En_Test4', + 313:'ovl_En_Bat', + 314:'ovl_En_Sekihi', + 315:'ovl_En_Wiz', + 316:'ovl_En_Wiz_Brock', + 317:'ovl_En_Wiz_Fire', + 318:'ovl_Eff_Change', + 319:'ovl_Dm_Statue', + 320:'ovl_Obj_Fireshield', + 321:'ovl_Bg_Ladder', + 322:'ovl_En_Mkk', + 323:'ovl_Demo_Getitem', + 324:'ovl_En_Dnb', + 325:'ovl_En_Dnh', + 326:'ovl_En_Dnk', + 327:'ovl_En_Dnq', + 328:'ovl_Bg_Keikoku_Saku', + 329:'ovl_Obj_Hugebombiwa', + 330:'ovl_En_Firefly2', + 331:'ovl_En_Rat', + 332:'ovl_En_Water_Effect', + 333:'ovl_En_Kusa2', + 334:'ovl_Bg_Spout_Fire', + 335:'ovl_En_Dy_Extra', + 336:'ovl_En_Bal', + 337:'ovl_En_Ginko_Man', + 338:'ovl_En_Warp_Uzu', + 339:'ovl_Obj_Driftice', + 340:'ovl_En_Look_Nuts', + 341:'ovl_En_Mushi2', + 342:'ovl_En_Fall', + 343:'ovl_En_Mm3', + 344:'ovl_Bg_Crace_Movebg', + 345:'ovl_En_Dno', + 346:'ovl_En_Pr2', + 347:'ovl_En_Prz', + 348:'ovl_En_Jso2', + 349:'ovl_Obj_Etcetera', + 350:'ovl_En_Egol', + 351:'ovl_Obj_Mine', + 352:'ovl_Obj_Purify', + 353:'ovl_En_Tru', + 354:'ovl_En_Trt', + 355:'ovl_En_Test5', + 356:'ovl_En_Test6', + 357:'ovl_En_Az', + 358:'ovl_En_Estone', + 359:'ovl_Bg_Hakugin_Post', + 360:'ovl_Dm_Opstage', + 361:'ovl_Dm_Stk', + 362:'ovl_Dm_Char00', + 363:'ovl_Dm_Char01', + 364:'ovl_Dm_Char02', + 365:'ovl_Dm_Char03', + 366:'ovl_Dm_Char04', + 367:'ovl_Dm_Char05', + 368:'ovl_Dm_Char06', + 369:'ovl_Dm_Char07', + 370:'ovl_Dm_Char08', + 371:'ovl_Dm_Char09', + 372:'ovl_Obj_Tokeidai', + 373:'ovl_En_Mnk', + 374:'ovl_En_Egblock', + 375:'ovl_En_Guard_Nuts', + 376:'ovl_Bg_Hakugin_Bombwall', + 377:'ovl_Obj_Tokei_Tobira', + 378:'ovl_Bg_Hakugin_Elvpole', + 379:'ovl_En_Ma4', + 380:'ovl_En_Twig', + 381:'ovl_En_Po_Fusen', + 382:'ovl_En_Door_Etc', + 383:'ovl_En_Bigokuta', + 384:'ovl_Bg_Icefloe', + #385:'[?]', + #386:'[?]', + #387:'[?]', + #388:'[?]', + #389:'[?]', + 390:'ovl_Effect_Ss_Sbn', + 391:'ovl_Obj_Ocarinalift', + 392:'ovl_En_Time_Tag', + 393:'ovl_Bg_Open_Shutter', + 394:'ovl_Bg_Open_Spot', + 395:'ovl_Bg_Fu_Kaiten', + 396:'ovl_Obj_Aqua', + 397:'ovl_En_Elforg', + 398:'ovl_En_Elfbub', + 399:'ovl_En_Fu_Mato', + 400:'ovl_En_Fu_Kago', + 401:'ovl_En_Osn', + 402:'ovl_Bg_Ctower_Gear', + 403:'ovl_En_Trt2', + 404:'ovl_Obj_Tokei_Step', + 405:'ovl_Bg_Lotus', + 406:'ovl_En_Kame', + 407:'ovl_Obj_Takaraya_Wall', + 408:'ovl_Bg_Fu_Mizu', + 409:'ovl_En_Sellnuts', + 410:'ovl_Bg_Dkjail_Ivy', + 411:'ovl_Obj_Visiblock', + 412:'ovl_En_Takaraya', + 413:'ovl_En_Tsn', + 414:'ovl_En_Ds2n', + 415:'ovl_En_Fsn', + 416:'ovl_En_Shn', + 417:'ovl_En_Stop_heishi', + 418:'ovl_Obj_Bigicicle', + 419:'ovl_En_Lift_Nuts', + 420:'ovl_En_Tk', + 421:'ovl_Bg_Market_Step', + 422:'ovl_Obj_Lupygamelift', + 423:'ovl_En_Test7', + 424:'ovl_Obj_Lightblock', + 425:'ovl_Mir_Ray2', + 426:'ovl_En_Wdhand', + 427:'ovl_En_Gamelupy', + 428:'ovl_Bg_Danpei_Movebg', + 429:'ovl_En_Snowwd', + 430:'ovl_En_Pm', + 431:'ovl_En_Gakufu', + 432:'ovl_Elf_Msg4', + 433:'ovl_Elf_Msg5', + 434:'ovl_En_Col_Man', + 435:'ovl_En_Talk_Gibud', + 436:'ovl_En_Giant', + 437:'ovl_Obj_Snowball', + 438:'ovl_Boss_Hakugin', + 439:'ovl_En_Gb2', + 440:'ovl_En_Onpuman', + 441:'ovl_Bg_Tobira01', + 442:'ovl_En_Tag_Obj', + 443:'ovl_Obj_Dhouse', + 444:'ovl_Obj_Hakaisi', + 445:'ovl_Bg_Hakugin_Switch', + 446:'ovl_En_Snowman', + 447:'ovl_TG_Sw', + 448:'ovl_En_Po_Sisters', + 449:'ovl_En_Pp', + 450:'ovl_En_Hakurock', + 451:'ovl_En_Hanabi', + 452:'ovl_Obj_Dowsing', + 453:'ovl_Obj_Wind', + 454:'ovl_En_Racedog', + 455:'ovl_En_Kendo_Js', + 456:'ovl_Bg_Botihasira', + 457:'ovl_En_Fish2', + 458:'ovl_En_Pst', + 459:'ovl_En_Poh', + 460:'ovl_Obj_Spidertent', + 461:'ovl_En_Zoraegg', + 462:'ovl_En_Kbt', + 463:'ovl_En_Gg', + 464:'ovl_En_Maruta', + 465:'ovl_Obj_Snowball2', + 466:'ovl_En_Gg2', + 467:'ovl_Obj_Ghaka', + 468:'ovl_En_Dnp', + 469:'ovl_En_Dai', + 470:'ovl_Bg_Goron_Oyu', + 471:'ovl_En_Kgy', + 472:'ovl_En_Invadepoh', + 473:'ovl_En_Gk', + 474:'ovl_En_An', + 475:'ovl_En_Bee', + 476:'ovl_En_Ot', + 477:'ovl_En_Dragon', + 478:'ovl_Obj_Dora', + 479:'ovl_En_Bigpo', + 480:'ovl_Obj_Kendo_Kanban', + 481:'ovl_Obj_Hariko', + 482:'ovl_En_Sth', + 483:'ovl_Bg_Sinkai_Kabe', + 484:'ovl_Bg_Haka_Curtain', + 485:'ovl_Bg_Kin2_Bombwall', + 486:'ovl_Bg_Kin2_Fence', + 487:'ovl_Bg_Kin2_Picture', + 488:'ovl_Bg_Kin2_Shelf', + 489:'ovl_En_Rail_Skb', + 490:'ovl_En_Jg', + 491:'ovl_En_Tru_Mt', + 492:'ovl_Obj_Um', + 493:'ovl_En_Neo_Reeba', + 494:'ovl_Bg_Mbar_Chair', + 495:'ovl_Bg_Ikana_Block', + 496:'ovl_Bg_Ikana_Mirror', + 497:'ovl_Bg_Ikana_Rotaryroom', + 498:'ovl_Bg_Dblue_Balance', + 499:'ovl_Bg_Dblue_Waterfall', + 500:'ovl_En_Kaizoku', + 501:'ovl_En_Ge2', + 502:'ovl_En_Ma_Yts', + 503:'ovl_En_Ma_Yto', + 504:'ovl_Obj_Tokei_Turret', + 505:'ovl_Bg_Dblue_Elevator', + 506:'ovl_Obj_Warpstone', + 507:'ovl_En_Zog', + 508:'ovl_Obj_Rotlift', + 509:'ovl_Obj_Jg_Gakki', + 510:'ovl_Bg_Inibs_Movebg', + 511:'ovl_En_Zot', + 512:'ovl_Obj_Tree', + 513:'ovl_Obj_Y2lift', + 514:'ovl_Obj_Y2shutter', + 515:'ovl_Obj_Boat', + 516:'ovl_Obj_Taru', + 517:'ovl_Obj_Hunsui', + 518:'ovl_En_Jc_Mato', + 519:'ovl_Mir_Ray3', + 520:'ovl_En_Zob', + 521:'ovl_Elf_Msg6', + 522:'ovl_Obj_Nozoki', + 523:'ovl_En_Toto', + 524:'ovl_En_Railgibud', + 525:'ovl_En_Baba', + 526:'ovl_En_Suttari', + 527:'ovl_En_Zod', + 528:'ovl_En_Kujiya', + 529:'ovl_En_Geg', + 530:'ovl_Obj_Kinoko', + 531:'ovl_Obj_Yasi', + 532:'ovl_En_Tanron1', + 533:'ovl_En_Tanron2', + 534:'ovl_En_Tanron3', + 535:'ovl_Obj_Chan', + 536:'ovl_En_Zos', + 537:'ovl_En_S_Goro', + 538:'ovl_En_Nb', + 539:'ovl_En_Ja', + 540:'ovl_Bg_F40_Block', + 541:'ovl_Bg_F40_Switch', + 542:'ovl_En_Po_Composer', + 543:'ovl_En_Guruguru', + 544:'ovl_Oceff_Wipe5', + 545:'ovl_En_Stone_heishi', + 546:'ovl_Oceff_Wipe6', + 547:'ovl_En_Scopenuts', + 548:'ovl_En_Scopecrow', + 549:'ovl_Oceff_Wipe7', + 550:'ovl_Eff_Kamejima_Wave', + 551:'ovl_En_Hg', + 552:'ovl_En_Hgo', + 553:'ovl_En_Zov', + 554:'ovl_En_Ah', + 555:'ovl_Obj_Hgdoor', + 556:'ovl_Bg_Ikana_Bombwall', + 557:'ovl_Bg_Ikana_Ray', + 558:'ovl_Bg_Ikana_Shutter', + 559:'ovl_Bg_Haka_Bombwall', + 560:'ovl_Bg_Haka_Tomb', + 561:'ovl_En_Sc_Ruppe', + 562:'ovl_Bg_Iknv_Doukutu', + 563:'ovl_Bg_Iknv_Obj', + 564:'ovl_En_Pamera', + 565:'ovl_Obj_HsStump', + 566:'ovl_En_Hidden_Nuts', + 567:'ovl_En_Zow', + 568:'ovl_En_Talk', + 569:'ovl_En_Al', + 570:'ovl_En_Tab', + 571:'ovl_En_Nimotsu', + 572:'ovl_En_Hit_Tag', + 573:'ovl_En_Ruppecrow', + 574:'ovl_En_Tanron4', + 575:'ovl_En_Tanron5', + 576:'ovl_En_Tanron6', + 577:'ovl_En_Daiku2', + 578:'ovl_En_Muto', + 579:'ovl_En_Baisen', + 580:'ovl_En_Heishi', + 581:'ovl_En_Demo_heishi', + 582:'ovl_En_Dt', + 583:'ovl_En_Cha', + 584:'ovl_Obj_Dinner', + 585:'ovl_Eff_Lastday', + 586:'ovl_Bg_Ikana_Dharma', + 587:'ovl_En_Akindonuts', + 588:'ovl_Eff_Stk', + 589:'ovl_En_Ig', + 590:'ovl_En_Rg', + 591:'ovl_En_Osk', + 592:'ovl_En_Sth2', + 593:'ovl_En_Yb', + 594:'ovl_En_Rz', + 595:'ovl_En_Scopecoin', + 596:'ovl_En_Bjt', + 597:'ovl_En_Bomjima', + 598:'ovl_En_Bomjimb', + 599:'ovl_En_Bombers', + 600:'ovl_En_Bombers2', + 601:'ovl_En_Bombal', + 602:'ovl_Obj_Moon_Stone', + 603:'ovl_Obj_Mu_Pict', + 604:'ovl_Bg_Ikninside', + 605:'ovl_Eff_Zoraband', + 606:'ovl_Obj_Kepn_Koya', + 607:'ovl_Obj_Usiyane', + 608:'ovl_En_Nnh', + 609:'ovl_Obj_Kzsaku', + 610:'ovl_Obj_Milk_Bin', + 611:'ovl_En_Kitan', + 612:'ovl_Bg_Astr_Bombwall', + 613:'ovl_Bg_Iknin_Susceil', + 614:'ovl_En_Bsb', + 615:'ovl_En_Recepgirl', + 616:'ovl_En_Thiefbird', + 617:'ovl_En_Jgame_Tsn', + 618:'ovl_Obj_Jgame_Light', + 619:'ovl_Obj_Yado', + 620:'ovl_Demo_Syoten', + 621:'ovl_Demo_Moonend', + 622:'ovl_Bg_Lbfshot', + 623:'ovl_Bg_Last_Bwall', + 624:'ovl_En_And', + 625:'ovl_En_Invadepoh_Demo', + 626:'ovl_Obj_Danpeilift', + 627:'ovl_En_Fall2', + 628:'ovl_Dm_Al', + 629:'ovl_Dm_An', + 630:'ovl_Dm_Ah', + 631:'ovl_Dm_Nb', + 632:'ovl_En_Drs', + 633:'ovl_En_Ending_Hero', + 634:'ovl_Dm_Bal', + 635:'ovl_En_Paper', + 636:'ovl_En_Hint_Skb', + 637:'ovl_Dm_Tag', + 638:'ovl_En_Bh', + 639:'ovl_En_Ending_Hero2', + 640:'ovl_En_Ending_Hero3', + 641:'ovl_En_Ending_Hero4', + 642:'ovl_En_Ending_Hero5', + 643:'ovl_En_Ending_Hero6', + 644:'ovl_Dm_Gm', + 645:'ovl_Obj_Swprize', + 646:'ovl_En_Invisible_Ruppe', + 647:'ovl_Obj_Ending', + 648:'ovl_En_Rsn', + 649:'gameplay_keep', + 650:'gameplay_field_keep', + 651:'gameplay_dangeon_keep', + # 652 not set, gameplay_object_exchange_static? + 653:'object_link_boy', + 654:'object_link_child', + 655:'object_link_goron', + 656:'object_link_zora', + 657:'object_link_nuts', + 658:'object_mask_ki_tan', + 659:'object_mask_rabit', + 660:'object_mask_skj', + 661:'object_mask_truth', + 662:'object_mask_gibudo', + 663:'object_mask_json', + 664:'object_mask_kerfay', + 665:'object_mask_bigelf', + 666:'object_mask_kyojin', + 667:'object_mask_romerny', + 668:'object_mask_posthat', + 669:'object_mask_zacho', + 670:'object_mask_stone', + 671:'object_mask_bree', + 672:'object_mask_gero', + 673:'object_mask_yofukasi', + 674:'object_mask_meoto', + 675:'object_mask_dancer', + 676:'object_mask_bakuretu', + 677:'object_mask_bu_san', + 678:'object_mask_goron', + 679:'object_mask_zora', + 680:'object_mask_nuts', + 681:'object_mask_boy', + 682:'object_box', + 683:'object_okuta', + 684:'object_wallmaster', + 685:'object_dy_obj', + 686:'object_firefly', + 687:'object_dodongo', + 688:'object_niw', + 689:'object_tite', + 690:'object_ph', + 691:'object_dinofos', + 692:'object_zl1', + 693:'object_bubble', + 694:'object_test3', + 695:'object_famos', + 696:'object_st', + 697:'object_thiefbird', + 698:'object_bombf', + 699:'object_am', + 700:'object_dekubaba', + 701:'object_warp1', + 702:'object_b_heart', + 703:'object_dekunuts', + 704:'object_bb', + 705:'object_death', + 706:'object_hata', + 707:'object_wood02', + 708:'object_trap', + 709:'object_vm', + 710:'object_efc_star_field', + 711:'object_rd', + 712:'object_yukimura_obj', + # skip object_heavy_object (in JP) + 713:'object_horse_link_child', + 714:'object_syokudai', + 715:'object_efc_tw', + 716:'object_gi_key', + 717:'object_mir_ray', + 718:'object_ctower_rot', + 719:'object_bdoor', + 720:'object_sb', + 721:'object_gi_melody', + 722:'object_gi_heart', + 723:'object_gi_compass', + 724:'object_gi_bosskey', + 725:'object_gi_nuts', + 726:'object_gi_hearts', + 727:'object_gi_arrowcase', + 728:'object_gi_bombpouch', + 729:'object_in', + 730:'object_os_anime', + 731:'object_gi_bottle', + 732:'object_gi_stick', + 733:'object_gi_map', + 734:'object_oF1d_map', + 735:'object_ru2', + 736:'object_gi_magicpot', + 737:'object_gi_bomb_1', + 738:'object_ma2', + 739:'object_gi_purse', + 740:'object_rr', + 741:'object_gi_arrow', + 742:'object_gi_bomb_2', + 743:'object_gi_shield_2', + 744:'object_gi_hookshot', + 745:'object_gi_ocarina', + 746:'object_gi_milk', + 747:'object_ma1', + 748:'object_ny', + 749:'object_fr', + 750:'object_gi_bow', + 751:'object_gi_glasses', + 752:'object_gi_liquid', + 753:'object_ani', + 754:'object_gi_shield_3', + 755:'object_gi_bean', + 756:'object_gi_fish', + 757:'object_gi_longsword', + 758:'object_zo', + 759:'object_umajump', + 760:'object_mastergolon', + 761:'object_masterzoora', + 762:'object_aob', + 763:'object_ik', + 764:'object_ahg', + 765:'object_cne', + 766:'object_bji', + 767:'object_bba', + 768:'object_an1', + 769:'object_boj', + 770:'object_fz', + 771:'object_bob', + 772:'object_ge1', + 773:'object_yabusame_point', + 774:'object_d_hsblock', + 775:'object_d_lift', + 776:'object_mamenoki', + 777:'object_goroiwa', + 778:'object_toryo', + 779:'object_daiku', + 780:'object_nwc', + 781:'object_gm', + 782:'object_ms', + 783:'object_hs', + 784:'object_lightswitch', + 785:'object_kusa', + 786:'object_tsubo', + 787:'object_kanban', + 788:'object_owl', + 789:'object_mk', + 790:'object_fu', + 791:'object_gi_ki_tan_mask', + 792:'object_gi_mask18', + 793:'object_gi_rabit_mask', + 794:'object_gi_truth_mask', + 795:'object_stream', + 796:'object_mm', + 797:'object_js', + 798:'object_cs', + 799:'object_gi_soldout', + 800:'object_mag', + 801:'object_gi_golonmask', + 802:'object_gi_zoramask', + 803:'object_ka', + 804:'object_zg', + 805:'object_gi_m_arrow', + 806:'object_ds2', + 807:'object_fish', + 808:'object_gi_sutaru', + 809:'object_ssh', + 810:'object_bigslime', + 811:'object_bg', + 812:'object_bombiwa', + 813:'object_hintnuts', + 814:'object_rs', + 815:'object_gla', + 816:'object_geldb', + 817:'object_dog', + 818:'object_kibako2', + 819:'object_dns', + 820:'object_dnk', + 821:'object_gi_insect', + 822:'object_gi_ghost', + 823:'object_gi_soul', + 824:'object_f40_obj', + 825:'object_gi_rupy', + 826:'object_po_composer', + 827:'object_mu', + 828:'object_wf', + 829:'object_skb', + 830:'object_gs', + 831:'object_ps', + 832:'object_omoya_obj', + 833:'object_crow', + 834:'object_cow', + 835:'object_gi_sword_1', + 836:'object_zl4', + 837:'object_grasshopper', + 838:'object_boyo', + 839:'object_fwall', + 840:'object_jso', + 841:'object_knight', + 842:'object_icicle', + 843:'object_spdweb', + 844:'object_boss01', + 845:'object_boss02', + 846:'object_boss03', + 847:'object_boss04', + 848:'object_boss05', + 849:'object_boss07', + 850:'object_raf', + 851:'object_funen', + 852:'object_raillift', + 853:'object_numa_obj', + 854:'object_flowerpot', + 855:'object_spinyroll', + 856:'object_ice_block', + 857:'object_keikoku_demo', + 858:'object_slime', + 859:'object_pr', + 860:'object_f52_obj', + 861:'object_f53_obj', + 862:'object_kibako', + 863:'object_sek', + 864:'object_gmo', + 865:'object_bat', + 866:'object_sekihil', + 867:'object_sekihig', + 868:'object_sekihin', + 869:'object_sekihiz', + 870:'object_wiz', + 871:'object_ladder', + 872:'object_mkk', + 873:'object_keikoku_obj', + 874:'object_sichitai_obj', + 875:'object_dekucity_ana_obj', + 876:'object_rat', + 877:'object_water_effect', + 878:'object_dblue_object', + 879:'object_bal', + 880:'object_warp_uzu', + 881:'object_driftice', + 882:'object_fall', + 883:'object_hanareyama_obj', + 884:'object_crace_object', + 885:'object_dnq', + 886:'object_obj_tokeidai', + 887:'object_eg', + 888:'object_tru', + 889:'object_trt', + 890:'object_hakugin_obj', + 891:'object_horse_game_check', + 892:'object_stk', + 893:'object_mnk', + 894:'object_gi_bottle_red', + 895:'object_tokei_tobira', + 896:'object_az', + 897:'object_twig', + 898:'object_dekucity_obj', + 899:'object_po_fusen', + 900:'object_racetsubo', + 901:'object_ha', + 902:'object_bigokuta', + 903:'object_open_obj', + 904:'object_fu_kaiten', + 905:'object_fu_mato', + 906:'object_mtoride', + 907:'object_osn', + 908:'object_tokei_step', + 909:'object_lotus', + 910:'object_tl', + 911:'object_dkjail_obj', + 912:'object_visiblock', + 913:'object_tsn', + 914:'object_ds2n', + 915:'object_fsn', + 916:'object_shn', + 917:'object_bigicicle', + 918:'object_gi_bottle_15', + 919:'object_tk', + 920:'object_market_obj', + 921:'object_gi_reserve00', + 922:'object_gi_reserve01', + 923:'object_lightblock', + 924:'object_takaraya_objects', + 925:'object_wdhand', + 926:'object_sdn', + 927:'object_snowwd', + 928:'object_giant', + 929:'object_comb', + 930:'object_hana', + 931:'object_boss_hakugin', + 932:'object_meganeana_obj', + 933:'object_gi_nutsmask', + 934:'object_stk2', + 935:'object_spot11_obj', + 936:'object_danpei_object', + 937:'object_dhouse', + 938:'object_hakaisi', + 939:'object_po', + 940:'object_snowman', + 941:'object_po_sisters', + 942:'object_pp', + 943:'object_goronswitch', + 944:'object_delf', + 945:'object_botihasira', + 946:'object_gi_bigbomb', + 947:'object_pst', + 948:'object_bsmask', + 949:'object_spidertent', + 950:'object_zoraegg', + 951:'object_kbt', + 952:'object_gg', + 953:'object_maruta', + 954:'object_ghaka', + 955:'object_oyu', + 956:'object_dnp', + 957:'object_dai', + 958:'object_kgy', + 959:'object_fb', + 960:'object_taisou', + 961:'object_gk', + 962:'object_haka_obj', + 963:'object_dnt', + 964:'object_yukiyama', + 965:'object_icefloe', + 966:'object_gi_gold_dust', + 967:'object_gi_bottle_16', + 968:'object_gi_bottle_22', + 969:'object_bee', + 970:'object_ot', + 971:'object_utubo', + 972:'object_dora', + 973:'object_gi_loach', + 974:'object_gi_seahorse', + 975:'object_bigpo', + 976:'object_hariko', + 977:'object_dno', + 978:'object_sinkai_kabe', + 979:'object_kin2_obj', + 980:'object_ishi', + 981:'object_hakugin_demo', + 982:'object_jg', + 983:'object_gi_sword_2', + 984:'object_gi_sword_3', + 985:'object_gi_sword_4', + 986:'object_um', + 987:'object_rb', + 988:'object_mbar_obj', + 989:'object_ikana_obj', + 990:'object_kz', + 991:'object_tokei_turret', + 992:'object_zog', + 993:'object_rotlift', + 994:'object_posthouse_obj', + 995:'object_gi_mask09', + 996:'object_gi_mask14', + 997:'object_gi_mask15', + 998:'object_inibs_object', + 999:'object_tree', + 1000:'object_kaizoku_obj', + 1001:'object_gi_reserve_b_00', + 1002:'object_gi_reserve_c_00', + 1003:'object_zob', + 1004:'object_milkbar', + 1005:'object_dmask', + 1006:'object_gi_reserve_c_01', + 1007:'object_zod', + 1008:'object_kumo30', + 1009:'object_obj_yasi', + 1010:'object_tanron1', + 1011:'object_tanron2', + 1012:'object_tanron3', + 1013:'object_gi_magicmushroom', + 1014:'object_obj_chan', + 1015:'object_gi_mask10', + 1016:'object_zos', + 1017:'object_an2', + 1018:'object_an3', + 1019:'object_f40_switch', + 1020:'object_lodmoon', + 1021:'object_tro', + 1022:'object_gi_mask12', + 1023:'object_gi_mask23', + 1024:'object_gi_bottle_21', + 1025:'object_gi_camera', + 1026:'object_kamejima', + 1027:'object_nb', + 1028:'object_harfgibud', + 1029:'object_zov', + 1030:'object_ah', + 1031:'object_hgdoor', + 1032:'object_dor01', + 1033:'object_dor02', + 1034:'object_dor03', + 1035:'object_dor04', + 1036:'object_last_obj', + 1037:'object_redead_obj', + 1038:'object_ikninside_obj', + 1039:'object_iknv_obj', + 1040:'object_pamera', + 1041:'object_hsstump', + 1042:'object_zm', + 1043:'object_al', + 1044:'object_tab', + 1045:'object_secom_obj', + 1046:'object_dt', + 1047:'object_gi_mask03', + 1048:'object_cha', + 1049:'object_obj_dinner', + 1050:'object_gi_reserve_b_01', + 1051:'object_lastday', + 1052:'object_bai', + 1053:'object_ikn_demo', + 1054:'object_gi_fieldmap', + 1055:'object_big_fwall', + 1056:'object_hunsui', + 1057:'object_uch', + 1058:'object_tanron4', + 1059:'object_tanron5', + 1060:'object_in2', + 1061:'object_yb', + 1062:'object_rz', + 1063:'object_bjt', + 1064:'object_taru', + 1065:'object_moonston', + 1066:'object_gi_schedule', + 1067:'object_gi_stonemask', + 1068:'object_zoraband', + 1069:'object_kepn_koya', + 1070:'object_obj_usiyane', + 1071:'object_gi_mask05', + 1072:'object_gi_mask11', + 1073:'object_gi_mask20', + 1074:'object_nnh', + 1075:'object_kzsaku', + 1076:'object_obj_milk_bin', + 1077:'object_random_obj', + 1078:'object_kujiya', + 1079:'object_kitan', + 1080:'object_gi_mask06', + 1081:'object_gi_mask16', + 1082:'object_astr_obj', + 1083:'object_bsb', + 1084:'object_fall2', + 1085:'object_sth', + 1086:'object_gi_mssa', + 1087:'object_smtower', + 1088:'object_gi_mask21', + 1089:'object_yado_obj', + 1090:'object_syoten', + 1091:'object_moonend', + 1092:'object_ob', + 1093:'object_gi_bottle_04', + 1094:'object_and', + 1095:'object_obj_danpeilift', + 1096:'object_drs', + 1097:'object_msmo', + 1098:'object_an4', + 1099:'object_wdor01', + 1100:'object_wdor02', + 1101:'object_wdor03', + 1102:'object_wdor04', + 1103:'object_wdor05', + 1104:'object_stk3', + 1105:'object_kinsta1_obj', + 1106:'object_kinsta2_obj', + 1107:'object_bh', + 1108:'object_gi_mask17', + 1109:'object_gi_mask22', + 1110:'object_lbfshot', + 1111:'object_fusen', + 1112:'object_ending_obj', + 1113:'object_gi_mask13', + #1114:'1113', Map Textures - Building Interiors I + #1115:'1114', Map Textures - Building Interiors II + #1116:'1115', Map Textures - Lost Woods + #1117:'1116', Map Textures - Mountains + #1118:'1117', Map Textures - Ocean + #1119:'1118', Map Textures - Swamp + #1120:'', + #1121:'1120', Map Textures - Field + 1122:'nintendo_rogo_static', + 1123:'title_static', + #1124:'', + #1125:'1124', Textures - Region Lock Error Messages + #1126:'', + #1127:'', + #1128:'', + #1129:'', + #1130:'', + #1131:'', + 1132:'vr_fine_static', + 1133:'vr_cloud_static', + 1134:'vr_pal_static', + 1135:'elf_message_field', + 1136:'elf_message_ydan', + 1137:'Z2_20SICHITAI2', + 1138:'Z2_20SICHITAI2_room_00', + 1139:'Z2_20SICHITAI2_room_01', + 1140:'Z2_20SICHITAI2_room_02', + 1141:'Z2_WITCH_SHOP', + 1142:'Z2_WITCH_SHOP_room_00', + 1143:'Z2_LAST_BS', + 1144:'Z2_LAST_BS_room_00', + 1145:'Z2_HAKASHITA', + 1146:'Z2_HAKASHITA_room_00', + 1147:'Z2_HAKASHITA_room_01', + 1148:'Z2_HAKASHITA_room_02', + 1149:'Z2_HAKASHITA_room_03', + 1150:'Z2_HAKASHITA_room_04', + 1151:'Z2_AYASHIISHOP', + 1152:'Z2_AYASHIISHOP_room_00', + 1153:'Z2_AYASHIISHOP_room_01', + 1154:'Z2_OMOYA', + 1155:'Z2_OMOYA_room_00', + 1156:'Z2_OMOYA_room_01', + 1157:'Z2_OMOYA_room_02', + 1158:'Z2_BOWLING', + 1159:'Z2_BOWLING_room_00', + 1160:'Z2_SONCHONOIE', + 1161:'Z2_SONCHONOIE_room_00', + 1162:'Z2_SONCHONOIE_room_01', + 1163:'Z2_SONCHONOIE_room_02', + 1164:'Z2_SONCHONOIE_room_03', + 1165:'Z2_IKANA', + 1166:'Z2_IKANA_room_00', + 1167:'Z2_IKANA_room_01', + 1168:'Z2_IKANA_room_02', + 1169:'Z2_IKANA_room_03', + 1170:'Z2_IKANA_room_04', + 1171:'Z2_KAIZOKU', + 1172:'Z2_KAIZOKU_room_00', + 1173:'Z2_MILK_BAR', + 1174:'Z2_MILK_BAR_room_00', + 1175:'Z2_INISIE_N', + 1176:'Z2_INISIE_N_room_00', + 1177:'Z2_INISIE_N_room_01', + 1178:'Z2_INISIE_N_room_02', + 1179:'Z2_INISIE_N_room_03', + 1180:'Z2_INISIE_N_room_04', + 1181:'Z2_INISIE_N_room_05', + 1182:'Z2_INISIE_N_room_06', + 1183:'Z2_INISIE_N_room_07', + 1184:'Z2_INISIE_N_room_08', + 1185:'Z2_INISIE_N_room_09', + 1186:'Z2_INISIE_N_room_10', + 1187:'Z2_INISIE_N_room_11', + 1188:'Z2_TAKARAYA', + 1189:'Z2_TAKARAYA_room_00', + 1190:'Z2_INISIE_R', + 1191:'Z2_INISIE_R_room_00', + 1192:'Z2_INISIE_R_room_01', + 1193:'Z2_INISIE_R_room_02', + 1194:'Z2_INISIE_R_room_03', + 1195:'Z2_INISIE_R_room_04', + 1196:'Z2_INISIE_R_room_05', + 1197:'Z2_INISIE_R_room_06', + 1198:'Z2_INISIE_R_room_07', + 1199:'Z2_INISIE_R_room_08', + 1200:'Z2_INISIE_R_room_09', + 1201:'Z2_INISIE_R_room_10', + 1202:'Z2_INISIE_R_room_11', + 1203:'Z2_OKUJOU', + 1204:'Z2_OKUJOU_room_00', + 1205:'Z2_OPENINGDAN', + 1206:'Z2_OPENINGDAN_room_00', + 1207:'Z2_OPENINGDAN_room_01', + 1208:'Z2_MITURIN', + 1209:'Z2_MITURIN_room_00', + 1210:'Z2_MITURIN_room_01', + 1211:'Z2_MITURIN_room_02', + 1212:'Z2_MITURIN_room_03', + 1213:'Z2_MITURIN_room_04', + 1214:'Z2_MITURIN_room_05', + 1215:'Z2_MITURIN_room_06', + 1216:'Z2_MITURIN_room_07', + 1217:'Z2_MITURIN_room_08', + 1218:'Z2_MITURIN_room_09', + 1219:'Z2_MITURIN_room_10', + 1220:'Z2_MITURIN_room_11', + 1221:'Z2_MITURIN_room_12', + 1222:'Z2_13HUBUKINOMITI', + 1223:'Z2_13HUBUKINOMITI_room_00', + 1224:'Z2_CASTLE', + 1225:'Z2_CASTLE_room_00', + 1226:'Z2_CASTLE_room_01', + 1227:'Z2_CASTLE_room_02', + 1228:'Z2_CASTLE_room_03', + 1229:'Z2_CASTLE_room_04', + 1230:'Z2_CASTLE_room_05', + 1231:'Z2_CASTLE_room_06', + 1232:'Z2_CASTLE_room_07', + 1233:'Z2_CASTLE_room_08', + 1234:'Z2_CASTLE_room_09', + 1235:'Z2_DEKUTES', + 1236:'Z2_DEKUTES_room_00', + 1237:'Z2_MITURIN_BS', + 1238:'Z2_MITURIN_BS_room_00', + 1239:'Z2_SYATEKI_MIZU', + 1240:'Z2_SYATEKI_MIZU_room_00', + 1241:'Z2_HAKUGIN', + 1242:'Z2_HAKUGIN_room_00', + 1243:'Z2_HAKUGIN_room_01', + 1244:'Z2_HAKUGIN_room_02', + 1245:'Z2_HAKUGIN_room_03', + 1246:'Z2_HAKUGIN_room_04', + 1247:'Z2_HAKUGIN_room_05', + 1248:'Z2_HAKUGIN_room_06', + 1249:'Z2_HAKUGIN_room_07', + 1250:'Z2_HAKUGIN_room_08', + 1251:'Z2_HAKUGIN_room_09', + 1252:'Z2_HAKUGIN_room_10', + 1253:'Z2_HAKUGIN_room_11', + 1254:'Z2_HAKUGIN_room_12', + 1255:'Z2_HAKUGIN_room_13', + 1256:'Z2_ROMANYMAE', + 1257:'Z2_ROMANYMAE_room_00', + 1258:'Z2_PIRATE', + 1259:'Z2_PIRATE_room_00', + 1260:'Z2_PIRATE_room_01', + 1261:'Z2_PIRATE_room_02', + 1262:'Z2_PIRATE_room_03', + 1263:'Z2_PIRATE_room_04', + 1264:'Z2_PIRATE_room_05', + 1265:'Z2_PIRATE_room_06', + 1266:'Z2_PIRATE_room_07', + 1267:'Z2_PIRATE_room_08', + 1268:'Z2_PIRATE_room_09', + 1269:'Z2_PIRATE_room_10', + 1270:'Z2_PIRATE_room_11', + 1271:'Z2_PIRATE_room_12', + 1272:'Z2_PIRATE_room_13', + 1273:'Z2_PIRATE_room_14', + 1274:'Z2_SYATEKI_MORI', + 1275:'Z2_SYATEKI_MORI_room_00', + 1276:'Z2_SINKAI', + 1277:'Z2_SINKAI_room_00', + 1278:'Z2_YOUSEI_IZUMI', + 1279:'Z2_YOUSEI_IZUMI_room_00', + 1280:'Z2_YOUSEI_IZUMI_room_01', + 1281:'Z2_YOUSEI_IZUMI_room_02', + 1282:'Z2_YOUSEI_IZUMI_room_03', + 1283:'Z2_YOUSEI_IZUMI_room_04', + 1284:'Z2_KINSTA1', + 1285:'Z2_KINSTA1_room_00', + 1286:'Z2_KINSTA1_room_01', + 1287:'Z2_KINSTA1_room_02', + 1288:'Z2_KINSTA1_room_03', + 1289:'Z2_KINSTA1_room_04', + 1290:'Z2_KINSTA1_room_05', + 1291:'Z2_KINDAN2', + 1292:'Z2_KINDAN2_room_00', + 1293:'Z2_KINDAN2_room_01', + 1294:'Z2_KINDAN2_room_02', + 1295:'Z2_KINDAN2_room_03', + 1296:'Z2_KINDAN2_room_04', + 1297:'Z2_KINDAN2_room_05', + 1298:'Z2_TENMON_DAI', + 1299:'Z2_TENMON_DAI_room_00', + 1300:'Z2_TENMON_DAI_room_01', + 1301:'Z2_LAST_DEKU', + 1302:'Z2_LAST_DEKU_room_00', + 1303:'Z2_LAST_DEKU_room_01', + 1304:'Z2_22DEKUCITY', + 1305:'Z2_22DEKUCITY_room_00', + 1306:'Z2_22DEKUCITY_room_01', + 1307:'Z2_22DEKUCITY_room_02', + 1308:'Z2_KAJIYA', + 1309:'Z2_KAJIYA_room_00', + 1310:'Z2_00KEIKOKU', + 1311:'Z2_00KEIKOKU_room_00', + 1312:'Z2_POSTHOUSE', + 1313:'Z2_POSTHOUSE_room_00', + 1314:'Z2_LABO', + 1315:'Z2_LABO_room_00', + 1316:'Z2_DANPEI2TEST', + 1317:'Z2_DANPEI2TEST_room_00', + 1318:'Z2_DANPEI2TEST_room_01', + 1319:'Z2_16GORON_HOUSE', + 1320:'Z2_16GORON_HOUSE_room_00', + 1321:'Z2_16GORON_HOUSE_room_01', + 1322:'Z2_33ZORACITY', + 1323:'Z2_33ZORACITY_room_00', + 1324:'Z2_8ITEMSHOP', + 1325:'Z2_8ITEMSHOP_room_00', + 1326:'Z2_F01', + 1327:'Z2_F01_room_00', + 1328:'Z2_INISIE_BS', + 1329:'Z2_INISIE_BS_room_00', + 1330:'Z2_30GYOSON', + 1331:'Z2_30GYOSON_room_00', + 1332:'Z2_31MISAKI', + 1333:'Z2_31MISAKI_room_00', + 1334:'Z2_TAKARAKUJI', + 1335:'Z2_TAKARAKUJI_room_00', + 1336:'Z2_TORIDE', + 1337:'Z2_TORIDE_room_00', + 1338:'Z2_FISHERMAN', + 1339:'Z2_FISHERMAN_room_00', + 1340:'Z2_GORONSHOP', + 1341:'Z2_GORONSHOP_room_00', + 1342:'Z2_DEKU_KING', + 1343:'Z2_DEKU_KING_room_00', + 1344:'Z2_LAST_GORON', + 1345:'Z2_LAST_GORON_room_00', + 1346:'Z2_LAST_GORON_room_01', + 1347:'Z2_24KEMONOMITI', + 1348:'Z2_24KEMONOMITI_room_00', + 1349:'Z2_F01_B', + 1350:'Z2_F01_B_room_00', + 1351:'Z2_F01C', + 1352:'Z2_F01C_room_00', + 1353:'Z2_BOTI', + 1354:'Z2_BOTI_room_00', + 1355:'Z2_BOTI_room_01', + 1356:'Z2_HAKUGIN_BS', + 1357:'Z2_HAKUGIN_BS_room_00', + 1358:'Z2_20SICHITAI', + 1359:'Z2_20SICHITAI_room_00', + 1360:'Z2_20SICHITAI_room_01', + 1361:'Z2_20SICHITAI_room_02', + 1362:'Z2_21MITURINMAE', + 1363:'Z2_21MITURINMAE_room_00', + 1364:'Z2_LAST_ZORA', + 1365:'Z2_LAST_ZORA_room_00', + 1366:'Z2_11GORONNOSATO2', + 1367:'Z2_11GORONNOSATO2_room_00', + 1368:'Z2_11GORONNOSATO2_room_01', + 1369:'Z2_SEA', + 1370:'Z2_SEA_room_00', + 1371:'Z2_SEA_room_01', + 1372:'Z2_SEA_room_02', + 1373:'Z2_SEA_room_03', + 1374:'Z2_SEA_room_04', + 1375:'Z2_SEA_room_05', + 1376:'Z2_SEA_room_06', + 1377:'Z2_SEA_room_07', + 1378:'Z2_SEA_room_08', + 1379:'Z2_SEA_room_09', + 1380:'Z2_SEA_room_10', + 1381:'Z2_SEA_room_11', + 1382:'Z2_SEA_room_12', + 1383:'Z2_SEA_room_13', + 1384:'Z2_SEA_room_14', + 1385:'Z2_SEA_room_15', + 1386:'Z2_35TAKI', + 1387:'Z2_35TAKI_room_00', + 1388:'Z2_REDEAD', + 1389:'Z2_REDEAD_room_00', + 1390:'Z2_REDEAD_room_01', + 1391:'Z2_REDEAD_room_02', + 1392:'Z2_REDEAD_room_03', + 1393:'Z2_REDEAD_room_04', + 1394:'Z2_REDEAD_room_05', + 1395:'Z2_REDEAD_room_06', + 1396:'Z2_REDEAD_room_07', + 1397:'Z2_REDEAD_room_08', + 1398:'Z2_REDEAD_room_09', + 1399:'Z2_REDEAD_room_10', + 1400:'Z2_REDEAD_room_11', + 1401:'Z2_REDEAD_room_12', + 1402:'Z2_REDEAD_room_13', + 1403:'Z2_BANDROOM', + 1404:'Z2_BANDROOM_room_00', + 1405:'Z2_BANDROOM_room_01', + 1406:'Z2_BANDROOM_room_02', + 1407:'Z2_BANDROOM_room_03', + 1408:'Z2_BANDROOM_room_04', + 1409:'Z2_11GORONNOSATO', + 1410:'Z2_11GORONNOSATO_room_00', + 1411:'Z2_11GORONNOSATO_room_01', + 1412:'Z2_GORON_HAKA', + 1413:'Z2_GORON_HAKA_room_00', + 1414:'Z2_SECOM', + 1415:'Z2_SECOM_room_00', + 1416:'Z2_SECOM_room_01', + 1417:'Z2_10YUKIYAMANOMURA', + 1418:'Z2_10YUKIYAMANOMURA_room_00', + 1419:'Z2_TOUGITES', + 1420:'Z2_TOUGITES_room_00', + 1421:'Z2_DANPEI', + 1422:'Z2_DANPEI_room_00', + 1423:'Z2_DANPEI_room_01', + 1424:'Z2_DANPEI_room_02', + 1425:'Z2_DANPEI_room_03', + 1426:'Z2_DANPEI_room_04', + 1427:'Z2_DANPEI_room_05', + 1428:'Z2_DANPEI_room_06', + 1429:'Z2_DANPEI_room_07', + 1430:'Z2_DANPEI_room_08', + 1431:'Z2_IKANAMAE', + 1432:'Z2_IKANAMAE_room_00', + 1433:'Z2_DOUJOU', + 1434:'Z2_DOUJOU_room_00', + 1435:'Z2_MUSICHOUSE', + 1436:'Z2_MUSICHOUSE_room_00', + 1437:'Z2_IKNINSIDE', + 1438:'Z2_IKNINSIDE_room_00', + 1439:'Z2_IKNINSIDE_room_01', + 1440:'Z2_MAP_SHOP', + 1441:'Z2_MAP_SHOP_room_00', + 1442:'Z2_F40', + 1443:'Z2_F40_room_00', + 1444:'Z2_F41', + 1445:'Z2_F41_room_00', + 1446:'Z2_10YUKIYAMANOMURA2', + 1447:'Z2_10YUKIYAMANOMURA2_room_00', + 1448:'Z2_10YUKIYAMANOMURA2_room_01', + 1449:'Z2_14YUKIDAMANOMITI', + 1450:'Z2_14YUKIDAMANOMITI_room_00', + 1451:'Z2_12HAKUGINMAE', + 1452:'Z2_12HAKUGINMAE_room_00', + 1453:'Z2_17SETUGEN', + 1454:'Z2_17SETUGEN_room_00', + 1457:'Z2_17SETUGEN2', + 1456:'Z2_17SETUGEN2_room_00', + 1457:'Z2_SEA_BS', + 1458:'Z2_SEA_BS_room_00', + 1459:'Z2_RANDOM', + 1460:'Z2_RANDOM_room_00', + 1461:'Z2_RANDOM_room_01', + 1462:'Z2_RANDOM_room_02', + 1463:'Z2_RANDOM_room_03', + 1464:'Z2_RANDOM_room_04', + 1465:'Z2_RANDOM_room_05', + 1466:'Z2_YADOYA', + 1467:'Z2_YADOYA_room_00', + 1468:'Z2_YADOYA_room_01', + 1469:'Z2_YADOYA_room_02', + 1470:'Z2_YADOYA_room_03', + 1471:'Z2_YADOYA_room_04', + 1472:'Z2_KONPEKI_ENT', + 1473:'Z2_KONPEKI_ENT_room_00', + 1474:'Z2_INSIDETOWER', + 1475:'Z2_INSIDETOWER_room_00', + 1476:'Z2_INSIDETOWER_room_01', + 1477:'Z2_26SARUNOMORI', + 1478:'Z2_26SARUNOMORI_room_00', + 1479:'Z2_26SARUNOMORI_room_01', + 1480:'Z2_26SARUNOMORI_room_02', + 1481:'Z2_26SARUNOMORI_room_03', + 1482:'Z2_26SARUNOMORI_room_04', + 1483:'Z2_26SARUNOMORI_room_05', + 1484:'Z2_26SARUNOMORI_room_06', + 1485:'Z2_26SARUNOMORI_room_07', + 1486:'Z2_26SARUNOMORI_room_08', + 1487:'Z2_LOST_WOODS', + 1488:'Z2_LOST_WOODS_room_00', + 1489:'Z2_LOST_WOODS_room_01', + 1490:'Z2_LOST_WOODS_room_02', + 1491:'Z2_LAST_LINK', + 1492:'Z2_LAST_LINK_room_00', + 1493:'Z2_LAST_LINK_room_01', + 1494:'Z2_LAST_LINK_room_02', + 1495:'Z2_LAST_LINK_room_03', + 1496:'Z2_LAST_LINK_room_04', + 1497:'Z2_LAST_LINK_room_05', + 1498:'Z2_LAST_LINK_room_06', + 1499:'Z2_LAST_LINK_room_07', + 1500:'Z2_SOUGEN', + 1501:'Z2_SOUGEN_room_00', + 1502:'Z2_BOMYA', + 1503:'Z2_BOMYA_room_00', + 1504:'Z2_KYOJINNOMA', + 1505:'Z2_KYOJINNOMA_room_00', + 1506:'Z2_KOEPONARACE', + 1507:'Z2_KOEPONARACE_room_00', + 1508:'Z2_GORONRACE', + 1509:'Z2_GORONRACE_room_00', + 1510:'Z2_TOWN', + 1511:'Z2_TOWN_room_00', + 1512:'Z2_ICHIBA', + 1513:'Z2_ICHIBA_room_00', + 1514:'Z2_BACKTOWN', + 1515:'Z2_BACKTOWN_room_00', + 1516:'Z2_CLOCKTOWER', + 1517:'Z2_CLOCKTOWER_room_00', + 1518:'Z2_ALLEY', + 1519:'Z2_ALLEY_room_00', + 1520:'SPOT00', + 1521:'SPOT00_room_00', + 1522:'KAKUSIANA', + 1523:'KAKUSIANA_room_00', + 1524:'KAKUSIANA_room_01', + 1525:'KAKUSIANA_room_02', + 1526:'KAKUSIANA_room_03', + 1527:'KAKUSIANA_room_04', + 1528:'KAKUSIANA_room_05', + 1529:'KAKUSIANA_room_06', + 1530:'KAKUSIANA_room_07', + 1531:'KAKUSIANA_room_08', + 1532:'KAKUSIANA_room_09', + 1533:'KAKUSIANA_room_10', + 1534:'KAKUSIANA_room_11', + 1535:'KAKUSIANA_room_12', + 1536:'KAKUSIANA_room_13', + 1537:'KAKUSIANA_room_14', + 1538:'bump_texture_static', + } + +def read_uint32_be(offset): + return struct.unpack('>I', romData[offset:offset+4])[0] + +def write_output_file(name, offset, size): + try: + with open(name, 'wb') as f: + f.write(romData[offset:offset+size]) + except IOError: + print('failed to write file ' + name) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + + parser.add_argument('input', help='input file') + args = parser.parse_args() + + try: + os.mkdir('baserom') + except: + pass + + try: + os.mkdir('decomp') + except: + pass + + # read baserom data + try: + with open(args.input, 'rb') as f: + romData = f.read() + except IOError: + print('failed to read file ' + ROM_FILE_NAME) + sys.exit(1) + + dmadata_size = read_uint32_be(FILE_TABLE_OFFSET + 16 * 2 + 4) - read_uint32_be(FILE_TABLE_OFFSET + 16 * 2 + 0) + file_count = dmadata_size // 0x10 + + # extract files + for i in range(0, file_count): + entryOffset = FILE_TABLE_OFFSET + 16 * i + + virtStart = read_uint32_be(entryOffset + 0) + virtEnd = read_uint32_be(entryOffset + 4) + physStart = read_uint32_be(entryOffset + 8) + physEnd = read_uint32_be(entryOffset + 12) + + if i in FILE_NAMES: + filename = FILE_NAMES[i] + else: + filename = '%03d_0x%08x' % (i, physStart) + + if physEnd == 0: # uncompressed + compressed = False + size = virtEnd - virtStart + else: # compressed + compressed = True + size = physEnd - physStart + + if physStart == 0xFFFFFFFF: # file is in table but not on cart? + continue + + if virtStart == 0 and virtEnd == 0: # there are several entries at the end like this... + continue + + print('extracting ' + filename + ' (0x%08X, 0x%08X, 0x%08X)' % (virtStart, virtEnd, size)) + + if compressed: + #print('decompressing ' + filename) + + decompressed_data = decompress(romData[physStart:physStart+size]) + + writefile = open('decomp/' + filename, 'wb') + writefile.write(decompressed_data) + writefile.close() + else: + write_output_file('baserom/' + filename, physStart, size) diff --git a/include/prelude.inc b/tools/prelude.inc similarity index 100% rename from include/prelude.inc rename to tools/prelude.inc diff --git a/tools/preprocess.py b/tools/preprocess.py index ee0ddc7553..4e43ebccc0 100644 --- a/tools/preprocess.py +++ b/tools/preprocess.py @@ -6,8 +6,8 @@ import subprocess import tempfile dir_path = os.path.dirname(os.path.realpath(__file__)) -asm_processor = ['python3', os.path.join(dir_path, "tools/asm-processor/asm-processor.py")] -prelude = os.path.join(dir_path, "include/prelude.inc") +asm_processor = ['python3', os.path.join(dir_path, "asm-processor/asm-processor.py")] +prelude = os.path.join(dir_path, "prelude.inc") all_args = sys.argv[1:] sep1 = all_args.index('--')