diff options
| author | Kenix3 <kenixwhisperwind@gmail.com> | 2021-04-29 18:56:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-29 18:56:18 -0400 |
| commit | c40bb119e1f64972e6a0879110826c455a28437b (patch) | |
| tree | fb1a29a657a985bcd707004a31d43086310d9d95 /tools | |
| parent | e97f10a6fa573e8b817ed03a4674d52b1818dafa (diff) | |
Adds in scene support (#117)
* 1 scene done, Z2_SOUGEN OK
* All scenes OK
* Makefile improvements
* Use WIP ZAPD branch as submodule
* Add spawn rotation flag macro
* Fix bad merge
* Move scenes to be in their own subfolders
* Rename and restructure extracted baserom files
* Progress tracking for assets
* Add asset progress to csv
* Use master ZAPD
* Use distclean like in OOT
* Fix up a few things with the makefile
* Fix scenes not being dumped from ELF
Co-authored-by: Rozelette <Uberpanzermensch@gmail.com>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/Makefile | 8 | ||||
| m--------- | tools/ZAP2 | 0 | ||||
| m--------- | tools/ZAPD | 0 | ||||
| -rwxr-xr-x | tools/extract_rom.py | 1894 | ||||
| -rwxr-xr-x | tools/progress.py | 77 |
5 files changed, 1028 insertions, 951 deletions
diff --git a/tools/Makefile b/tools/Makefile index f8147317c..fc3771c75 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,14 +1,13 @@ CC := gcc CFLAGS := -Wall -Wextra -pedantic -std=c99 -g -O2 PROGRAMS := yaz0 makeromfs elf2rom mkldscript vtxdis -ZAP2 := ZAP2/ZAP2.out all: $(PROGRAMS) - cd ZAP2 && $(MAKE) + $(MAKE) -C ZAPD clean: $(RM) $(PROGRAMS) - $(RM) ZAP2/ZAP2.out + $(RM) ZAPD/ZAPD.out # Need to clean the above line later... mkldscript_SOURCES := mkldscript.c util.c @@ -17,9 +16,6 @@ yaz0_SOURCES := yaz0tool.c yaz0.c util.c makeromfs_SOURCES := makeromfs.c n64chksum.c util.c vtxdis_SOURCES := vtxdis.c -#$(ZAP2): -# cd ZAP2 && $(MAKE) - define COMPILE = $(1): $($1_SOURCES) $(CC) $(CFLAGS) $$^ -o $$@ diff --git a/tools/ZAP2 b/tools/ZAP2 deleted file mode 160000 -Subproject 15fcb21d2c4e2ef2f720d28a0f7dec259ddd06f diff --git a/tools/ZAPD b/tools/ZAPD new file mode 160000 +Subproject bbbbb046a54f99dcbc6cbcc765177d8b252546f diff --git a/tools/extract_rom.py b/tools/extract_rom.py index 6e4f56ccb..15161582b 100755 --- a/tools/extract_rom.py +++ b/tools/extract_rom.py @@ -6,40 +6,927 @@ 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:'', +SCENE_NAMES = { + 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', + 1455:'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', +} + +OBJECT_NAMES = { + 649:'gameplay_keep', + 650:'gameplay_field_keep', + 651:'gameplay_dangeon_keep', + 652:'gameplay_object_exchange_static', + # 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', +} + +TEXTURE_NAMES = { + 6:'kanji', + 8:'icon_item_static', + 9:'icon_item_24_static', 10:'icon_item_field_static', 11:'icon_item_dungeon_static', 12:'icon_item_gameover_static', - #13:'', - #14:'', + 13:'icon_item_jpn_static', + 14:'icon_item_vtx_static', 15:'map_i_static', 16:'map_grand_static', 17:'item_name_static', 18:'map_name_static', - #19:'', - #20:'', - #21:'', - #22:'', - #23:'', - #24:'', + 19:'icon_item_static_test', + 20:'icon_item_24_static_test', + 21:'schedule_dma_static', + 22:'schedule_dma_static_test', + 23:'schedule_static', + 24:'story_static', 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 + 29:'message_data_static', 30:'staff_message_data_static', - 31:'code', + 1114:'scene_texture_01', # Map Textures - Building Interiors I + 1115:'scene_texture_02', # Map Textures - Building Interiors II + 1116:'scene_texture_03', # Map Textures - Lost Woods + 1117:'scene_texture_04', # Map Textures - Mountains + 1118:'scene_texture_05', # Map Textures - Ocean + 1119:'scene_texture_06', # Map Textures - Swamp + 1120:'scene_texture_07', + 1121:'scene_texture_08', # Map Textures - Field + 1123:'title_static', + 1126:'parameter_static', + 1127:'week_static', + 1128:'daytelop_static', + 1129:'ger_daytelop_static', + 1130:'fra_daytelop_static', + 1131:'spa_daytelop_static', + 1132:'d2_fine_static', + 1133:'d2_cloud_static', + 1134:'d2_fine_pal_static', + 1538:'bump_texture_static', +} + +OVERLAY_NAMES = { 32:'ovl_title', 33:'ovl_select', 34:'ovl_opening', @@ -393,11 +1280,11 @@ FILE_NAMES = { 382:'ovl_En_Door_Etc', 383:'ovl_En_Bigokuta', 384:'ovl_Bg_Icefloe', - #385:'[?]', - #386:'[?]', - #387:'[?]', - #388:'[?]', - #389:'[?]', + 385:'ovl_fbdemo_triforce', + 386:'ovl_fbdemo_wipe1', + 387:'ovl_fbdemo_wipe3', + 388:'ovl_fbdemo_wipe4', + 389:'ovl_fbdemo_wipe5', 390:'ovl_Effect_Ss_Sbn', 391:'ovl_Obj_Ocarinalift', 392:'ovl_En_Time_Tag', @@ -657,898 +1544,42 @@ FILE_NAMES = { 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 +} + +AUDIO_NAMES = { + 3:'Audiobank', + 4:'Audioseq', + 5:'Audiotable', +} + +MISC_NAMES = { + 7:'link_animetion', 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', + 1124:'memerrmsg', + 1125:'locerrmsg', 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', - } +} + +ASM_NAMES = { + 0:'makerom', + 1:'boot', + 2:'dmadata', + 31:'code', +} + + +def GetFileName(index): + tbls = [ SCENE_NAMES, OBJECT_NAMES, TEXTURE_NAMES, AUDIO_NAMES, MISC_NAMES, OVERLAY_NAMES, ASM_NAMES ] + paths = [ "baserom/assets/scenes", "baserom/assets/objects", "baserom/assets/textures", "baserom/assets/audio", "baserom/assets/misc", "baserom/overlays", "baserom" ] + + for i in range(0, len(tbls)): + tbl = tbls[i] + if index in tbl: + return [ tbl[index], paths[i] ] + + return [ "ERROR", "baserom" ] + def read_uint32_be(offset): return struct.unpack('>I', romData[offset:offset+4])[0] @@ -1566,16 +1597,6 @@ if __name__ == '__main__': 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: @@ -1584,6 +1605,14 @@ if __name__ == '__main__': print('failed to read file ' + args.input) sys.exit(1) + + paths = [ "baserom", "baserom/assets", "baserom/assets/scenes", "baserom/assets/objects", "baserom/assets/textures", "baserom/assets/audio", "baserom/assets/misc", "baserom/overlays" ] + for path in paths: + try: + os.mkdir(path) + except: + pass + 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 @@ -1596,10 +1625,9 @@ if __name__ == '__main__': 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) + filenameResult = GetFileName(i) + filename = filenameResult[0] + outPath = filenameResult[1] if physEnd == 0: # uncompressed compressed = False @@ -1617,12 +1645,12 @@ if __name__ == '__main__': print('extracting ' + filename + ' (0x%08X, 0x%08X, 0x%08X)' % (virtStart, virtEnd, size)) if compressed: - #print('decompressing ' + filename) + print('decompressing (' + str(i) + ') ' + filename + ", to " + outPath) decompressed_data = decompress(romData[physStart:physStart+size]) - writefile = open('decomp/' + filename, 'wb') + writefile = open(outPath + "/" + filename, 'wb') writefile.write(decompressed_data) writefile.close() else: - write_output_file('baserom/' + filename, physStart, size) + write_output_file(outPath + '/' + filename, physStart, size) diff --git a/tools/progress.py b/tools/progress.py index 3cb2b1786..6b7ac6747 100755 --- a/tools/progress.py +++ b/tools/progress.py @@ -30,7 +30,7 @@ def ReadAllLines(fileName): def GetFiles(path, ext): files = [] - + for r, d, f in os.walk(path): for file in f: if file.endswith(ext): @@ -51,11 +51,11 @@ def GetRemovableSize(functions_to_count, path): for asm_line in asm_lines: if (asm_line[0:2] == "/*" and asm_line[30:32] == "*/"): file_size += 4 - + size += file_size return size - + map_file = ReadAllLines('build/mm.map') # Get list of Non-Matchings @@ -70,7 +70,14 @@ not_attempted_functions = list(set(not_attempted_functions).difference(non_match # We want to do this after not attempted functions list generation so we can remove all non matchings. if not args.matching: non_matching_functions = [] - + +# Get asset files +audio_files = GetFiles("baserom/assets/audio", "") +misc_files = GetFiles("baserom/assets/misc", "") +object_files = GetFiles("baserom/assets/objects", "") +scene_files = GetFiles("baserom/assets/scenes", "") +texture_files = GetFiles("baserom/assets/textures", "") + # Initialize all the code values src = 0 src_code = 0 @@ -82,6 +89,11 @@ asm_code = 0 asm_boot = 0 asm_ovl = 0 asm_libultra = 0 +audio = 0 +misc = 0 +object_ = 0 +scene = 0 +texture = 0 for line in map_file: line_split = list(filter(None, line.split(" "))) @@ -93,25 +105,37 @@ for line in map_file: if (section == ".text"): if (obj_file.startswith("build/src")): - if (obj_file.startswith("build/src/code")): + if (obj_file.startswith("build/src/code")): src_code += file_size elif (obj_file.startswith("build/src/libultra")): src_libultra += file_size - elif (obj_file.startswith("build/src/boot")): + elif (obj_file.startswith("build/src/boot")): src_boot += file_size elif (obj_file.startswith("build/src/overlays")): src_ovl += file_size elif (obj_file.startswith("build/asm")): - if (obj_file.startswith("build/asm/code")): + if (obj_file.startswith("build/asm/code")): asm_code += file_size elif (obj_file.startswith("build/asm/libultra")): asm_libultra += file_size - elif (obj_file.startswith("build/asm/boot")): + elif (obj_file.startswith("build/asm/boot")): asm_boot += file_size elif (obj_file.startswith("build/asm/overlays")): asm_ovl += file_size -# Add libultra to boot. + if (section == ".data"): + if (obj_file.startswith("build/assets/src/audio")): + audio += file_size + if (obj_file.startswith("build/assets/src/misc")): + misc += file_size + if (obj_file.startswith("build/assets/src/objects")): + object_ += file_size + if (obj_file.startswith("build/assets/src/scenes")): + scene += file_size + if (obj_file.startswith("build/assets/src/textures")): + texture += file_size + +# Add libultra to boot. src_boot += src_libultra asm_boot += asm_libultra @@ -142,6 +166,23 @@ boot_size = src_boot + asm_boot ovl_size = src_ovl + asm_ovl handwritten = 0 # Currently unsure of any handwritten asm in MM +# Calculate size of all assets +audio_size = 0 +misc_size = 0 +object_size = 0 +scene_size = 0 +texture_size = 0 +for f in audio_files: + audio_size += os.stat(f).st_size +for f in misc_files: + misc_size += os.stat(f).st_size +for f in object_files: + object_size += os.stat(f).st_size +for f in scene_files: + scene_size += os.stat(f).st_size +for f in texture_files: + texture_size += os.stat(f).st_size + # Calculate asm and src totals src = src_code + src_boot + src_ovl asm = asm_code + asm_boot + asm_ovl @@ -159,6 +200,11 @@ asm_percent = 100 * asm / total code_percent = 100 * code / code_size boot_percent = 100 * boot / boot_size ovl_percent = 100 * ovl / ovl_size +audio_percent = 100 * audio / audio_size +misc_percent = 100 * misc / misc_size +object_percent = 100 * object_ / object_size +scene_percent = 100 * scene / scene_size +texture_percent = 100 * texture / texture_size # convert bytes to masks and rupees num_masks = 24 @@ -203,9 +249,11 @@ if args.format == 'csv': git_object = git.Repo().head.object timestamp = str(git_object.committed_date) git_hash = git_object.hexsha - csv_list = [str(version), timestamp, git_hash, str(code), str(code_size), str(boot), str(boot_size), - str(ovl), str(ovl_size), str(src), str(asm), str(len(non_matching_functions))] - + csv_list = [str(version), timestamp, git_hash, str(code), str(code_size), str(boot), str(boot_size), + str(ovl), str(ovl_size), str(src), str(asm), str(len(non_matching_functions)), + str(audio), str(audio_size), str(misc), str(misc_size), str(object_), str(object_size), + str(scene), str(scene_size), str(texture), str(texture_size)] + print(",".join(csv_list)) elif args.format == 'shield-json': # https://shields.io/endpoint @@ -223,6 +271,11 @@ elif args.format == 'text': print(str(boot) + "/" + str(boot_size) + " bytes " + adjective + " in boot " + str(boot_percent) + "%\n") print(str(code) + "/" + str(code_size) + " bytes " + adjective + " in code " + str(code_percent) + "%\n") print(str(ovl) + "/" + str(ovl_size) + " bytes " + adjective + " in overlays " + str(ovl_percent) + "%\n") + print(str(audio) + "/" + str(audio_size) + " bytes reconstructed in audio " + str(audio_percent) + "%\n") + print(str(misc) + "/" + str(misc_size) + " bytes reconstructed in misc " + str(misc_percent) + "%\n") + print(str(object_) + "/" + str(object_size) + " bytes reconstructed in objects " + str(object_percent) + "%\n") + print(str(scene) + "/" + str(scene_size) + " bytes reconstructed in scenes " + str(scene_percent) + "%\n") + print(str(texture) + "/" + str(texture_size) + " bytes reconstructed in textures " + str(texture_percent) + "%\n") print("------------------------------------\n") if (rupees > 0): |
