summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorKenix3 <kenixwhisperwind@gmail.com>2021-04-29 18:56:18 -0400
committerGitHub <noreply@github.com>2021-04-29 18:56:18 -0400
commitc40bb119e1f64972e6a0879110826c455a28437b (patch)
treefb1a29a657a985bcd707004a31d43086310d9d95 /tools
parente97f10a6fa573e8b817ed03a4674d52b1818dafa (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/Makefile8
m---------tools/ZAP20
m---------tools/ZAPD0
-rwxr-xr-xtools/extract_rom.py1894
-rwxr-xr-xtools/progress.py77
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):