Almost none of the files on the ROM have extensions. Some don't even have real names:
CODE
engl-eh-117-1:~/Desktop/YUPSP drsturm$ ls data0files
#0_AtkSideBelt #1606_BV_098.acx #398_Br
#1000_un #1607_MEM_BGM34_64.a #399_Br
#1001_un #1608_MEM_BGM35_64.a #39_AtkSideBelt
#1002_un #1609_MEM_BGM40_64.a #3_AtkSideBelt
#1003_un #160_btlc #400_Br
#1004_un #1610_MEM_BGM41_64.a #401_Br
#1005_un #1611_MEM_BGM42_64.a #402_Br
#1006_un #1612_MEM_BGM43_64.a #403_Fa
#1007_un #1613_MEM_BGM44_64.a #404_Fa
#1008_un #1614_MEM_BGM45_64.a #405_Fa
#1009_un #1615_MEM_BGM46_64.a #406_Fa
#100_ #1616_MEM_BGM47_64.a #407_Fa
#1010_un #1617_seData.acx #408_Fa
#1011_un #1618_YGG_MOVIE.spa #409_Fa
#1012_un #1619_01-1-a_0 #40_AtkSideBelt
#1013_un #161_btlc #410_Fa
#1014_un #1620_01-1-a_1 #411_Fa
#1015_un #1621_01-1-a_2 #412_Fa
#1016_un #1622_01-1-a_3 #413_Fa
#1017_un #1623_01-2-a_0 #414_Fa
#1018_un #1624_01-2-a_1 #415_Fa
#1019_un #1625_01-2-a_2 #416_Fa
#101_ #1626_01-2-b_0 #417_Fa
#1020_un #1627_01-2-b_1 #418_Fa
#1021_un #1628_01-2-b_2 #419_Fa
#1022_un #1629_02-1-a_0 #41_AtkSideBelt
#1023_un #162_btlc #420_Fa
#1024_un #1630_02-1-a_1 #421_Fa
#1025_un #1631_02-1-a_2 #422_Fa
#1026_un #1632_02-1-b_0 #423_Fa
#1027_un #1633_02-1-b_1 #424_Fa
#1028_un #1634_02-1-b_2 #425_Fa
#1029_un #1635_02-1-c_0 #426_Fa
#102_ #1636_02-1-c_1 #427_Fa
#1030_un #1637_02-1-c_2 #428_Fa
#1031_un #1638_02-2-a_0 #429_Fa
#1032_un #1639_02-2-a_1 #42_AtkSideBelt
#1033_un #163_btlc #430_Fa
#1034_un #1640_02-2-a_2 #431_Fa
#1035_un #1641_02-2-b_0 #432_Fa
#1036_un #1642_02-2-b_1 #433_Fa
#1037_un #1643_02-2-c_0 #434_Fa
#1038_un #1644_02-2-c_1 #435_Fa
#1039_un #1645_02-2-c_2 #436_Fa
#103_ #1646_03-1-a_0 #437_Fa
#1040_un #1647_03-1-a_1 #438_Fa
#1041_un #1648_03-1-a_2 #439_Fa
#1042_un #1649_03-1-a_3 #43_AtkSideBelt
#1043_un #164_btlc #440_Fa
#1044_un #1650_03-2-a_0 #441_Fa
#1045_un #1651_03-2-a_1 #442_Fa
#1046_un #1652_03-2-a_2 #443_Fa
#1047_un #1653_03-2-a_3 #444_Fa
#1048_un #1654_03-2-b_0 #445_Fa
#1049_ #1655_03-2-b_1 #446_Fa
#104_ #1656_03-2-b_2 #447_Fa
#1050_ #1657_03-3-a_0 #448_BtlCharFace
#1051_ #1658_03-3-a_1 #449_BtlCharFace
#1052_ #1659_03-3-a_2 #44_AtkSideBelt
#1053_ #165_btlc #450_BtlCharFace
#1054_ #1660_03-3-a_3 #451_BtlCharFace
#1055_ #1661_03-3-b_0 #452_BtlCharFace
#1056_ #1662_03-3-b_1 #453_BtlCharFace
#1057_ #1663_03-3-b_2 #454_BtlCharFace
#1058_ #1664_03-3-b_3 #455_BtlCharFace
#1059_ #1665_04-1-a_0 #456_BtlCharFace
#105_ #1666_04-1-a_1 #457_BtlCharFace
#1060_ #1667_04-1-a_2 #458_BtlCharFace
#1061_ #1668_04-1-a_3 #459_BtlCharFace
#1062_ #1669_04-1-b_0 #45_AtkSideBelt
#1063_ #166_btlc #460_BtlCharFace
#1064_ #1670_04-1-b_1 #461_BtlCharFace
#1065_ #1671_04-1-b_2 #462_BtlCharFace
#1066_ #1672_04-1-b_3 #463_BtlCharFace
#1067_ #1673_04-2-a_0 #464_BtlCharFace
#1068_ #1674_04-2-a_1 #465_BtlCharFace
#1069_ #1675_04-2-a_2 #466_BtlCharFace
#106_ #1676_04-2-b_0 #467_BtlCharFace
#1070_ #1677_04-2-b_1 #468_BtlCharFace
#1071_ #1678_04-2-b_2 #469_BtlCharFace
#1072_ #1679_04-2-b_3 #46_AtkSideBelt
#1073_ #167_btlc #470_BtlCharFace
#1074_ #1680_04-3-a_0 #471_BtlCharFace
#1075_ #1681_04-3-a_1 #472_BtlCharFace
#1076_ #1682_04-3-a_2 #473_BtlCharFace
#1077_ #1683_04-3-b_0 #474_BtlCharFace
#1078_ #1684_04-3-b_1 #475_BtlCharFace
#1079_ #1685_04-3-b_2 #476_BtlCharFace
#107_ #1686_04-4A-a_ #477_BtlCharFace
#1080_ #1687_04-4A-a_ #478_BtlCharFace
#1081_ #1688_04-4A-a_ #479_BtlCharFace
#1082_ #1689_04-4A-a_ #47_AtkSideBelt
#1083_ #168_btlc #480_BtlCharFace
#1084_ #1690_04-4A-b_ #481_BtlCharFace
#1085_ #1691_04-4A-b_ #482_BtlCharFace
#1086_ #1692_04-4A-b_ #483_BtlCharFace
#1087_ #1693_04-4B-a_ #484_BtlCharFace
#1088_ #1694_04-4B-a_ #485_BtlCharFace
#1089_ #1695_04-4B-a_ #486_BtlCharFace
#108_ #1696_04-4B-a_ #487_BtlCharFace
#1090_ #1697_04-4B-b_ #488_BtlCharFace
#1091_ #1698_04-4B-b_ #489_BtlCharFace
#1092_ #1699_04-4B-b_ #48_AtkSideBelt
#1093_ #169_btlc #490_BtlCharFace
#1094_ #16_AtkSideBelt #491_BtlCharFace
#1095_ #1700_05-1-a_0 #492_BtlCharFace
#1096_ #1701_05-1-a_1 #493_BtlCharFace
#1097_ #1702_05-1-a_2 #494_BtlCharFace
#1098_ #1703_05-1-a_3 #495_BtlCharFace
#1099_ #1704_05-1-a_4 #496_BtlCharFace
#109_ #1705_05-2-a_0 #497_BtlCharFace
#10_AtkSideBelt #1706_05-2-a_1 #498_BtlCharFace
#1100_ #1707_05-2-a_2 #499_BtlCharFace
#1101_ #1708_05-2-b_0 #49_AtkSideBelt
#1102_ #1709_05-2-b_1 #4_AtkSideBelt
#1103_Field #170_btlc #500_BtlCharFace
#1104_Field #1710_05-2-b_2 #501_BtlCharFace
#1105_Field #1711_05-3-a_0 #502_BtlCharFace
#1106_Field #1712_05-3-a_1 #503_BtlCharFace
#1107_Mvp.p #1713_05-3-a_2 #504_BtlCharFace
#1108_Field_UnitL #1714_05-3-b_0 #505_BtlCharFace
#1109_Field_UnitL #1715_05-3-b_1 #506_BtlCharFace
#110_ #1716_05-3-b_2 #507_BtlCharFace
#1110_Field_UnitL #1717_06-1-a_0 #508_BtlCharFace
#1111_Field_UnitL #1718_06-1-a_1 #509_BtlCharFace
#1112_Field_UnitL #1719_06-1-a_2 #50_AtkSideBelt
#1113_Field_UnitL #171_btlc #510_BtlCharFace
#1114_Field_UnitL #1720_06-1-b_0 #511_B
#1115_Field_UnitL #1721_06-1-b_1 #512_bust
#1116_Field_UnitL #1722_06-1-b_2 #513_bust
#1117_Field_UnitL #1723_06-2-a_0 #514_bust
#1118_Field_UnitL #1724_06-2-a_1 #515_bust
#1119_Field_UnitL #1725_06-2-a_2 #516_bust
#111_ #1726_06-2-bp_ #517_bust
#1120_Field_UnitL #1727_06-2-bp_ #518_bust
#1121_Field_UnitL #1728_06-2-b_0 #519_bust
#1122_Field_UnitL #1729_06-2-b_1 #51_AtkSideBelt
#1123_Field_UnitL #172_btlc #520_bust
#1124_Field_UnitL #1730_06-2-c_0 #521_bust
#1125_Field_UnitL #1731_06-2-c_1 #522_bust
#1126_Field_UnitL #1732_06-2-c_2 #523_bust
#1127_Field_UnitL #1733_06-3-a_0 #524_bust
#1128_Field_UnitL #1734_06-3-a_1 #525_bust
#1129_Field_UnitL #1735_06-3-a_2 #526_bust
#112_ #1736_06-3-b_0 #527_bust
#1130_Field_UnitL #1737_06-3-b_1 #528_bust
#1131_Field_UnitL #1738_06-3-c_0 #529_bust
#1132_Field_UnitL #1739_06-3-c_1 #52_AtkSideBelt
#1133_Field_UnitL #173_btlc #530_bust
#1134_Field_UnitL #1740_06-3-c_2 #531_bust
#1135_Field_UnitL #1741_06-4-a_0 #532_bust
#1136_Field_UnitL #1742_06-4-a_1 #533_bust
#1137_Field_UnitL #1743_06-4-a_2 #534_bust
#1138_Field_UnitL #1744_06-4-a_3 #535_bust
#1139_Field_UnitL #1745_06-4-b_0 #536_bust
#113_ #1746_06-4-b_1 #537_bust
#1140_Field_UnitL #1747_06-4-b_2 #538_bust
#1141_Field_UnitL #1748_06-4-b_3 #539_bust
#1142_Field_UnitL #1749_06-4-b_4 #53_AtkSideBelt
#1143_Field_UnitL #174_btlc #540_bust
#1144_Field_UnitL #1750_07-1-a_0 #541_bust
#1145_Field_UnitL #1751_07-1-a_1 #542_bust
#1146_Field_UnitL #1752_07-1-a_2 #543_bust
#1147_Field_UnitL #1753_07-1-b_0 #544_bust
#1148_Field_UnitL #1754_07-1-b_1 #545_bust
#1149_Field_UnitL #1755_07-1-b_2 #546_bust
#114_ #1756_07-2-a_0 #547_bust
#1150_Field_UnitL #1757_07-2-a_1 #548_bust
#1151_Field_UnitL #1758_07-2-a_2 #549_bust
#1152_Field_UnitL #1759_07-2-a_3 #54_AtkSideBelt
#1153_Field_UnitL #175_btlc #550_bust
#1154_Field_UnitL #1760_07-2-a_4 #551_bust
#1155_Field_UnitL #1761_07-3-a_0 #552_bust
#1156_Field_UnitL #1762_07-3-a_1 #553_bust
#1157_Field_UnitL #1763_07-3-a_2 #554_bust
#1158_Field_UnitL #1764_07-3-a_3 #555_bust
#1159_Field_UnitL #1765_07-3-a_4 #556_bust
#115_Batt #1766_07-3-a_5 #557_bust
#1160_Field_UnitL #1767_07-4-a_0 #558_bust
#1161_Field_UnitL #1768_07-4-a_1 #559_bust
#1162_Field_UnitL #1769_07-4-a_2 #55_AtkSideBelt
#1163_Field_UnitL #176_btlc #560_bust
#1164_Field_UnitL #1770_07-4-a_3 #561_bust
#1165_Field_UnitL #1771_07-4-b_0 #562_bust
#1166_Field_UnitL #1772_07-4-b_1 #563_bust
#1167_Field_UnitL #1773_08-1-a_0 #564_bust
#1168_Flag_T #1774_08-1-a_1 #565_bust
#1169_FontBi #1775_08-1-a_2 #566_bust
#116_btlc #1776_08-1-a_3 #567_bust
#1170_bt #1777_08-1-a_4 #568_bust
#1171_bu #1778_08-1-b2_ #569_bust
#1172_bu #1779_08-1-b2_ #56_AtkSideBelt
#1173_bu #177_btlc #570_bust
#1174_bu #1780_08-1-b2_ #571_bust
#1175_bu #1781_08-1-b_0 #572_bust
#1176_bu #1782_08-1-b_1 #573_bust
#1177_bu #1783_08-2-a_0 #574_bust
#1178_bu #1784_08-2-a_1 #575_bust
#1179_bu #1785_08-2-a_2 #576_bust
#117_btlc #1786_08-2-bp_ #577_bust
#1180_bu #1787_08-2-bp_ #578_bust
#1181_bu #1788_08-2-c2p #579_bust
#1182_bu #1789_08-2-cp_ #57_AtkSideBelt
#1183_bu #178_btlc #580_bust
#1184_bu #1790_08-2-cp_ #581_bust
#1185_bu #1791_08-2-cp_ #582_bust
#1186_bu #1792_08-2-cp_ #583_bust
#1187_bu #1793_08-2-cp_ #584_bust
#1188_bu #1794_08-A-a_0 #585_bust
#1189_bu #1795_08-A-a_1 #586_bust
#118_btlc #1796_08-A-a_2 #587_bust
#1190_bu #1797_08-A-b_0 #588_bust
#1191_bu #1798_08-A-b_1 #589_bust
#1192_bu #1799_08-A-c_0 #58_AtkSideBelt
#1193_bu #179_btlc #590_bust
#1194_Icon.p #17_AtkSideBelt #591_bust
#1195_Map01_1 #1800_08-A-c_1 #592_bust
#1196_Map01_2 #1801_08-A-c_2 #593_bust
#1197_Map02_1 #1802_09-1-a_0 #594_bust
#1198_Map02_2 #1803_09-1-a_1 #595_bust
#1199_Map03_1 #1804_09-1-a_2 #596_bust
#119_btlc #1805_09-1-bpp #597_bust
#11_AtkSideBelt #1806_09-1-bpp #598_bust
#1200_Map03_2 #1807_09-1-bpp #599_bust
#1201_Map03_3 #1808_09-1-bp_ #59_AtkSideBelt
#1202_Map04_1 #1809_09-1-bp_ #5_AtkSideBelt
#1203_Map04_2 #180_btlc #600_bust
#1204_Map04_3 #1810_09-1-bp_ #601_
#1205_Map05_1 #1811_09-1-b_0 #602_
#1206_Map05_2 #1812_09-1-b_1 #603_
#1207_Map05_2 #1813_09-1-c_0 #604_
#1208_Map05_3 #1814_09-1-c_1 #605_
#1209_Map06_1 #1815_09-1-c_2 #606_
#120_btlc #1816_09-2-a_0 #607_
#1210_Map06_2 #1817_09-2-a_1 #608_
#1211_Map06_3 #1818_09-2-a_2 #609_
#1212_Map06_4 #1819_09-2-b_0 #60_AtkSideBelt
#1213_Map06_4 #181_btlc #610_
#1214_Map07_1 #1820_09-2-b_1 #611_
#1215_Map07_2 #1821_09-2-b_2 #612_
#1216_Map07_3 #1822_09-2-b_3 #613_
#1217_Map07_4 #1823_09-3-a_0 #614_
#1218_Map08_1 #1824_09-3-a_1 #615_
#1219_Map08_2 #1825_09-3-a_2 #616_
#121_btlc #1826_09-3-b_0 #617_
#1220_Map08_a #1827_09-3-b_1 #618_
#1221_Map09_1 #1828_09-3-c_0 #619_
#1222_Map09_2 #1829_09-3-c_1 #61_AtkSideBelt
#1223_Map09_3 #182_btlc #620_
#1224_Map09_4 #1830_09-3-c_2 #621_
#1225_Map10_1 #1831_09-3-c_3 #622_
#1226_Map10_2 #1832_09-4-a_0 #623_
#1227_Map11_1 #1833_09-4-a_1 #624_
#1228_Map11_2 #1834_09-4-a_2 #625_
#1229_Map12_1 #1835_09-4-a_3 #626_
#122_btlc #1836_09-4-bpp #627_
#1230_Map12_2 #1837_09-4-bpp #628_
#1231_Map13_1 #1838_09-4-bp_ #629_
#1232_Map13_2 #1839_09-4-bp_ #62_AtkSideBelt
#1233_Map13_3 #183_btlc #630_
#1234_Map13_4 #1840_09-4-b_0 #631_
#1235_Map13_5 #1841_09-4-b_1 #632_
#1236_Map14_1 #1842_09-4-c_0 #633_
#1237_Map14_2 #1843_09-4-c_1 #634_
#1238_Map15_1 #1844_09-4-c_2 #635_
#1239_Map15_1 #1845_10-1-a_0 #636_
#123_btlc #1846_10-1-a_1 #637_
#1240_Map15_2 #1847_10-1-a_2 #638_
#1241_Map15_3 #1848_10-1-bp_ #639_
#1242_Map15_3 #1849_10-1-bp_ #63_AtkSideBelt
#1243_Map15_4 #184_btlc #640_
#1244_Map16_1 #1850_10-1-b_0 #641_
#1245_Map16_2 #1851_10-1-b_1 #642_
#1246_Map17_1 #1852_10-1-b_2 #643_
#1247_Map17_2 #1853_10-1-c_0 #644_
#1248_Map18_1 #1854_10-1-c_1 #645_
#1249_Map18_2 #1855_10-1-c_2 #646_
#124_btlc #1856_10-1-c_3 #647_
#1250_WorldMa #1857_10-2-a_0 #648_
#1251_WorldMa #1858_10-2-a_1 #649_
#1252_WorldMa #1859_10-2-a_2 #64_AtkSideBelt
#1253_WorldMa #185_btlc #650_
#1254_WorldMa #1860_10-2-b_0 #651_
#1255_WorldMa #1861_10-2-b_1 #652_
#1256_MVP_00. #1862_10-2-b_2 #653_
#1257_MVP_01. #1863_10-2-b_3 #654_
#1258_MVP_01B #1864_11-1-a_0 #655_
#1259_MVP_02. #1865_11-1-a_1 #656_
#125_btlc #1866_11-1-a_2 #657_
#1260_MVP_02B #1867_11-1-bm_ #658_
#1261_MVP_03. #1868_11-1-bm_ #659_
#1262_MVP_04. #1869_11-1-bm_ #65_AtkSideBelt
#1263_MVP_05. #186_btlc #660_
#1264_MVP_06. #1870_11-1-b_0 #661_
#1265_MVP_07. #1871_11-1-b_1 #662_
#1266_MVP_08. #1872_11-1-b_2 #663_
#1267_MVP_09. #1873_11-1-c_0 #664_
#1268_MVP_10. #1874_11-1-c_1 #665_
#1269_MVP_11. #1875_11-1-c_2 #666_
#126_btlc #1876_11-2-a_0 #667_
#1270_MVP_12. #1877_11-2-a_1 #668_
#1271_MVP_13. #1878_11-2-a_2 #669_
#1272_SaveDataIco.png #1879_11-2-a_3 #66_AtkSideBelt
#1273_SaveDataIco.png #187_btlc #670_Card_0
#1274_SaveDataIco.png #1880_11-2-a_4 #671_Card_0
#1275_SaveDataIco.png #1881_11-2-b_0 #672_Card_0
#1276_SaveDataIco.png #1882_11-2-b_1 #673_Card_0
#1277_SaveDataIco.png #1883_11-2-c_0 #674_Card_0
#1278_SaveDataIco.png #1884_11-2-c_1 #675_Card_0
#1279_SaveDataIco.png #1885_11-2-c_2 #676_Card_0
#127_btlc #1886_11-2-c_3 #677_Card_0
#1280_SaveDataIco.png #1887_12-1-a_0 #678_Card_0
#1281_SaveDataIco.png #1888_12-1-a_1 #679_Card_1
#1282_SaveDataIco.png #1889_12-1-a_2 #67_AtkSideBelt
#1283_SaveDataIco.png #188_btlc #680_Card_1
#1284_SaveDataIco.png #1890_12-1-a_3 #681_Card_1
#1285_SaveDataIco.png #1891_12-1-a_4 #682_Card_1
#1286_eve_sh #1892_12-2-a_0 #683_Card_1
#1287_eve_sh #1893_12-2-a_1 #684_Card_1
#1288_eve_sh #1894_12-2-a_2 #685_Card_1
#1289_eve_sh #1895_12-2-a_3 #686_Card_1
#128_btlc #1896_12-2-a_4 #687_Card_1
#1290_eve_sh #1897_13-1-a_0 #688_Card_1
#1291_eve_sh #1898_13-1-a_1 #689_Card_2
#1292_eve_sh #1899_13-1-a_2 #68_AtkSideBelt
#1293_eve_sh #189_btlc #690_Card_2
#1294_eve_sh #18_AtkSideBelt #691_Card_2
#1295_eve_sh #1900_13-1-b_0 #692_Card_2
#1296_eve_sh #1901_13-1-b_1 #693_Card_2
#1297_eve_sh #1902_13-1-b_2 #694_Card_2
#1298_eve_sh #1903_13-2-a_0 #695_Card_2
#1299_eve_sh #1904_13-2-a_1 #696_Card_2
#129_btlc #1905_13-2-a_2 #697_Card_2
#12_AtkSideBelt #1906_13-2-a_3 #698_Card_2
#1300_eve_sh #1907_13-3-a_0 #699_Card_3
#1301_eve_sh #1908_13-3-a_1 #69_AtkSideBelt
#1302_eve_sh #1909_13-3-a_2 #6_AtkSideBelt
#1303_eve_sh #190_btl_ #700_Card_3
#1304_eve_sh #1910_13-3-a_3 #701_Card_3
#1305_eve_sh #1911_13-3-b_0 #702_Card_3
#1306_eve_sh #1912_13-3-b_1 #703_Card_3
#1307_eve_sh #1913_13-3-cp_ #704_Card_3
#1308_eve_sh #1914_13-3-cp_ #705_Card_3
#1309_eve_sh #1915_13-3-cp_ #706_Card_3
#130_btlc #1916_13-3-c_0 #707_Card_T
#1310_eve_sh #1917_13-3-c_1 #708_ChapterTitl
#1311_eve_sh #1918_13-4-a_0 #709_ChapterTitl
#1312_eve_sh #1919_13-4-a_1 #70_AtkSideBelt
#1313_eve_sh #191_btl_ #710_ChapterTitl
#1314_eve_sh #1920_13-4-a_2 #711_ChapterTitl
#1315_eve_sh #1921_13-4-a_3 #712_ChapterTitl
#1316_eve_sh #1922_13-4-b_0 #713_ChapterTitl
#1317_eve_sh #1923_13-4-b_1 #714_ChapterTitl
#1318_eve_sh #1924_13-4-b_2 #715_ChapterTitl
#1319_eve_sh #1925_13-5-a_0 #716_ChapterTitl
#131_btlc #1926_13-5-a_1 #717_ChapterTitl
#1320_eve_sh #1927_13-5-a_2 #718_0
#1321_eve_sh #1928_13-5-a_3 #719_0
#1322_eve_sh #1929_13-5-a_4 #71_AtkSideBelt
#1323_eve_sh #192_btl_ #720_0
#1324_eve_sh #1930_13-5-a_5 #721_0
#1325_eve_sh #1931_14-1-a_0 #722_0
#1326_eve_sh #1932_14-1-a_1 #723_0
#1327_eve_sh #1933_14-1-a_2 #724_0
#1328_eve_sh #1934_14-1-a_3 #725_0
#1329_eve_sh #1935_14-1-b_0 #726_0
#132_btlc #1936_14-1-b_1 #727_1
#1330_eve_sh #1937_14-1-b_2 #728_1
#1331_eve_sh #1938_14-1-b_3 #729_1
#1332_eve_sh #1939_14-2-a_0 #7
Posted by: Raijinili Jul 24 2008, 05:49 AM
1) HEY STURM I DIDN'T KNOW ABOUT THIS TOPIC NO ONE TOLD ME
2) School. I have to do at least one small project every two weeks. FOR TWO CLASSES.
3) Sand. Arch, the thing is, the files are not formatted for personal computers. That won't help at all.
Edit: PERSONAL computers.
Posted by: sandpenguin Jul 24 2008, 12:43 PM
Then, if some can't be read by normal one, salvage it....like the png's and tga's......
Thanks for the headstart, Rai!
Posted by: sandpenguin Aug 2 2008, 06:49 AM
I manage to read the tga. file but alas, there's no real improvement on PTA files.....This is the site for the picture viewer I use....it's home-made by someone, and it's pre-assembled with source code, etc...hopefully you can do something with this. as I am noob at this...LOL
http://www.amnoid.de/ddsview/download.html
Hope this helps.....
Posted by: Archeia Aug 4 2008, 08:03 AM
TGA files can be opened with Irfanview but oh well
Posted by: Dr Sturm Aug 4 2008, 10:38 PM
TGA files can be opened without third party software on OSes that don't suck shit. Now please stay on topic.
Posted by: Dr Sturm Aug 7 2008, 05:42 PM
OKAY RAI I WILL WALK YOU THROUGH THE FRY PTA FILE SO YOU MAYBE UNDERSTAND, AND SO MAYBE PEOPLE THAT WILL NEVER UNDERSTAND WILL LEAVE THIS THREAD ALONE
Some of this I actually only discovered last night.
These are all little endian.
CODE
00000000: 50 54 41 00 10 00 00 00 90 01 00 00 00 00 00 00
PTA header.
Int: Identifier, "PTA" (50 54 41 00)
Int: Animation info offsets offset (10 00 00 00)
Int: Frame info offsets offset (90 01 00 00)
Int: Probably padding. (00 00 00 00)
CODE
00000010: 20 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000070: 00 00 00 00 48 01 00 00 00 00 00 00 00 00 00 00
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000B0: 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF
Animation info offsets.
Fry's idle animation would be the first one (20 01 00 00), his other animation (not sure exactly what it is) is the one half way through (48 01 00 00). I think the spacing has to do with the script wanting to call a certain animation, like the idle animation is always animation indice zero, and whatever animation is described at 0x148 is always animation indice 24. The FF FF FF FF at the end I believe merely signifies the end of the section.
CODE
000000C0: 00 00 FC FF 04 00 00 00 01 00 FC FF 04 00 00 00
000000D0: 02 00 FC FF 04 00 00 00 03 00 FC FF 04 00 00 00
000000E0: 04 00 FC FF 04 00 00 00 05 00 FC FF 04 00 00 00
000000F0: 06 00 FC FF 04 00 00 00 07 00 FC FF 04 00 00 00
00000100: 08 00 FC FF 04 00 00 00 09 00 FC FF 04 00 00 00
00000110: 0A 00 FC FF 04 00 00 00 0B 00 FC FF 04 00 00 00
Animation info p1. They're split into chunks of four shorts (eight bytes)
Short: Frame ID. *
Short: Unknown.
Short: Unknown.
Short: Unknown.
This won't be read directly, so no end-of-section marker is necessary, unlike with most of the others.
CODE
00000120: C0 00 00 00 01 00 0C 00 C8 00 00 00 01 00 0C 00
00000130: D0 00 00 00 01 00 0C 00 D8 00 00 00 01 00 0C 00
00000140: 00 00 00 00 00 00 00 00 E0 00 00 00 01 00 0C 00
00000150: E8 00 00 00 01 00 0C 00 F0 00 00 00 01 00 0C 00
00000160: F8 00 00 00 01 00 0C 00 00 01 00 00 01 00 0C 00
00000170: 08 01 00 00 01 00 0C 00 10 01 00 00 01 00 0C 00
00000180: 18 01 00 00 01 00 0C 00 00 00 00 00 00 00 04 00
Animation info p2.
Int: Number of frames. It seems. (C0 00 00 00)
Following are a list of frames, each split into eight byte chunks of data.
Short: Unknown (01 00)
Short: Unknown (0C 00)
Int: Offset in Animation info p1 of corresponding data (C8 00 00 00) **
I think the two shorts may somehow indicate the type of frame, for example, in this it's always 01000C00, but in other ones I'll find mixed values, such as 01000800, 01000400, etc.
CODE
00000190: 50 00 00 00 01 00 00 00 18 00 00 00 0C 00 00 00
000001A0: 48 00 00 00 01 00 00 00 90 00 00 00 64 01 00 00
000001B0: 00 03 00 00 64 01 00 00 90 00 00 00 EC 04 00 00
000001C0: FC 05 00 00 0C 07 00 00 94 08 00 00 F4 09 00 00
000001D0: 40 0B 00 00 F4 09 00 00 D0 0C 00 00 90 90 90 90
Frame assembly offsets. And some other info. Offset of beginning of this section = OffsetX (0x190 in this case)
Int: Length of section/offset to palette (50 00 00 00)
Int: Unknown (01 00 00 00)
Int: Offset from OffsetX to start of frame assembly offsets. (18 00 00 00 - probably always this)
Int: Number of frames (0C 00 00 00)
Int: Offset from OffsetX to PTX file/pixel data (48 00 00 00)
Int: Palettes (01 00 00 00)
Now we're at the offsets. There are twelve in this one, meaning, well, there are twelve int in a row, indicating the offset from OffsetX to the data for the frame's assembly.
After those twelve offsets will almost certainly be the PTX offset earlier mentioned, and, then, padding to align it to a sixteen-byte boundary (90 90 90 90).
CODE
000001E0: B0 B1 80 00 00 00 00 FF 50 22 4C FF B3 57 78 FF
000001F0: ...
Palette. Really no point in going into this. Just like all Sting image palettes it's apparently in BGRA format, a byte per colour field.
CODE
00000220: 0A 00 00 00 00 00 40 00 50 00 00 00 00 00 18 00
00000230: 08 00 00 00 18 00 08 00 30 00 10 00 00 00 18 00
00000240: 00 00 18 00 10 00 00 00 40 00 08 00 40 00 18 00
00000250: 00 00 40 00 00 00 18 00 18 00 00 00 68 00 08 00
00000260: 40 00 20 00 00 00 68 00 00 00 18 00 20 00 00 00
00000270: 88 00 08 00 38 00 28 00 00 00 88 00 00 00 10 00
00000280: 28 00 00 00 B8 00 08 00 40 00 30 00 00 00 B8 00
00000290: 00 00 10 00 30 00 00 00 E8 00 08 00 40 00 38 00
000002A0: 00 00 E8 00 00 00 10 00 38 00 00 00 18 01 08 00
000002B0: 40 00 40 00 00 00 E8 00 00 00 10 00 40 00 00 00
000002C0: F0 00 08 00 18 00 48 00 00 00 18 01 00 00 18 00
000002D0: 40 00 00 00 40 01 08 00 40 00 48 00 00 00 40 01
000002E0: 00 00 10 00 48 00 00 00 68 01 08 00 38 00 50 00
000002F0: 00 00 00 00
Frame assembly data. I am very not sure how this works. This following information is how I THINK it might work, but some of it either doesn't quite fit, or I am unable to test it for lack of other information.
Int: Unknown (0A 00 00 00)
Short: Unknown (00 00)
Short: Width maybe (40 00)
Short: Height maybe (50 00)
Short: Counter as found in LIM files and PTG files [I'm pretty sure about this, it seems to roll over at 0x200 just as always before, though I don't know exactly what it counts] (00 00)
Then I'm uncertain. I think what follows is either locations, or areas of pixels to read/write. I'm not sure, but multiples of eight (heights of the tiles) occur a lot. The counter means it could very well be like LIM/PTG files, meaning we write so many blank pixels/tiles, then so many filled in pixels/tiles, etc, and that's what these numbers indicate.
Following this info comes the PTX data - pretty much just ignore the first 32 bytes and you're right at the pixel data, which is stored two pixels per byte.
NOW, FOR A LITTLE DEMONSTRATION OF HOW ALL THE DATA GOES TOGETHER:
The first frame, putting together the animation data, you get this:
CODE
00000120:
000000C0
>>>0000 FFFC 0004 0000
0001, 000C
000000C8
>>>0001 FFFC 0004 0000
0001, 000C
000000D0
>>>0002 FFFC 0004 0000
0001, 000C
000000D8
>>>0003 FFFC 0004 0000
0001, 000C
So the only thing we know is that this animation is four frames, and we want frames 0, 1, 2 and 3.
They are located at OffsetX + 0x90, OffsetX + 0x164, OffsetX + 0x300 and OffsetX + 0x164 respectively. Note that the last frame is the same data as the second frame, that's because it loops 1->2->3->2, 1->2->3->2, etc.
So, here's said frame data:
Frame 1:
» Click to show Spoiler - click again to hide... «
CODE
0A 00 00 00 00 00 40 00 50 00 00 00 00 00 18 00
08 00 00 00 18 00 08 00 30 00 10 00 00 00 18 00
00 00 18 00 10 00 00 00 40 00 08 00 40 00 18 00
00 00 40 00 00 00 18 00 18 00 00 00 68 00 08 00
40 00 20 00 00 00 68 00 00 00 18 00 20 00 00 00
88 00 08 00 38 00 28 00 00 00 88 00 00 00 10 00
28 00 00 00 B8 00 08 00 40 00 30 00 00 00 B8 00
00 00 10 00 30 00 00 00 E8 00 08 00 40 00 38 00
00 00 E8 00 00 00 10 00 38 00 00 00 18 01 08 00
40 00 40 00 00 00 E8 00 00 00 10 00 40 00 00 00
F0 00 08 00 18 00 48 00 00 00 18 01 00 00 18 00
40 00 00 00 40 01 08 00 40 00 48 00 00 00 40 01
00 00 10 00 48 00 00 00 68 01 08 00 38 00 50 00
00 00 00 00
Frame 2:
» Click to show Spoiler - click again to hide... «
CODE
14 00 00 00 00 00 40 00 50 00 68 01
00 00 18 00 08 00 00 00 78 01 08 00 28 00 10 00
00 00 10 00 00 00 28 00 08 00 00 00 18 00 08 00
30 00 10 00 00 00 78 01 00 00 18 00 10 00 00 00
88 01 08 00 28 00 18 00 00 00 28 00 00 00 28 00
10 00 00 00 30 00 08 00 30 00 18 00 00 00 88 01
00 00 30 00 10 00 00 00 98 01 08 00 40 00 18 00
00 00 40 00 00 00 18 00 18 00 00 00 48 00 08 00
20 00 20 00 00 00 98 01 00 00 20 00 18 00 00 00
B8 01 08 00 40 00 20 00 00 00 B8 01 00 00 18 00
20 00 00 00 D8 01 08 00 38 00 28 00 00 00 88 00
00 00 10 00 28 00 00 00 90 00 08 00 18 00 30 00
00 00 D8 01 00 00 18 00 28 00 00 00 F8 01 08 00
38 00 30 00 00 00 B0 00 00 00 38 00 28 00 00 00
B8 00 08 00 40 00 30 00 00 00 B8 00 00 00 10 00
30 00 00 00 C0 00 08 00 18 00 38 00 00 00 F8 01
00 00 18 00 30 00 00 00 00 02 08 00 20 00 38 00
00 00 00 00 08 00 20 00 30 00 00 00 08 00 10 00
28 00 38 00 00 00 D0 00 00 00 28 00 30 00 00 00
E8 00 08 00 40 00 38 00 00 00 E8 00 00 00 10 00
38 00 00 00 F0 00 08 00 18 00 40 00 00 00 08 00
08 00 18 00 38 00 00 00 30 00 10 00 40 00 40 00
00 00 E8 00 00 00 10 00 40 00 00 00 F0 00 08 00
18 00 48 00 00 00 30 00 08 00 18 00 40 00 00 00
58 00 10 00 40 00 48 00 00 00 40 01 00 00 10 00
48 00 00 00 68 01 08 00 38 00 50 00 00 00 00 00
Frame 3:
» Click to show Spoiler - click again to hide... «
CODE
18 00 00 00 00 00 40 00 50 00 58 00 08 00 18 00
08 00 00 00 68 00 10 00 28 00 10 00 00 00 10 00
00 00 28 00 08 00 00 00 18 00 08 00 30 00 10 00
00 00 68 00 08 00 30 00 08 00 00 00 70 00 10 00
38 00 10 00 00 00 70 00 08 00 18 00 10 00 00 00
80 00 10 00 28 00 18 00 00 00 28 00 00 00 28 00
10 00 00 00 30 00 08 00 30 00 18 00 00 00 80 00
08 00 30 00 10 00 00 00 90 00 10 00 40 00 18 00
00 00 40 00 00 00 18 00 18 00 00 00 48 00 08 00
20 00 20 00 00 00 98 01 00 00 20 00 18 00 00 00
A8 01 08 00 30 00 20 00 00 00 90 00 08 00 30 00
18 00 00 00 A0 00 10 00 40 00 20 00 00 00 A0 00
08 00 18 00 20 00 00 00 C0 00 10 00 38 00 28 00
00 00 88 00 00 00 10 00 28 00 00 00 90 00 08 00
18 00 30 00 00 00 C0 00 08 00 18 00 28 00 00 00
D8 00 10 00 30 00 30 00 00 00 F0 01 00 00 30 00
28 00 00 00 F8 01 08 00 38 00 30 00 00 00 B0 00
00 00 38 00 28 00 00 00 B8 00 08 00 40 00 30 00
00 00 B8 00 00 00 10 00 30 00 00 00 C0 00 08 00
18 00 38 00 00 00 D8 00 08 00 18 00 30 00 00 00
E0 00 10 00 20 00 38 00 00 00 00 00 08 00 20 00
30 00 00 00 08 00 10 00 28 00 38 00 00 00 E0 00
08 00 28 00 30 00 00 00 E8 00 10 00 30 00 38 00
00 00 D8 00 00 00 30 00 30 00 00 00 E8 00 08 00
40 00 38 00 00 00 E8 00 00 00 10 00 38 00 00 00
F0 00 08 00 18 00 40 00 00 00 E8 00 08 00 18 00
38 00 00 00 10 01 10 00 40 00 40 00 00 00 E8 00
00 00 10 00 40 00 00 00 F0 00 08 00 18 00 48 00
00 00 10 01 08 00 18 00 40 00 00 00 38 01 10 00
40 00 48 00 00 00 40 01 00 00 10 00 48 00 00 00
68 01 08 00 38 00 50 00 00 00 00 00
Frame 4:
(see Frame 2)
So. Rai. THINK YOU CAN HELP NOW THAT I'VE GIVEN YOU MORE INFO AND A THOROUGH THROUGH TO PRETTY MUCH EVERYTHING I KNOW ABOUT THE FILE FORMAT?
* There's a failing in this filetype at this point, because there are different frame IDs, but often the ID will reference the same data as another ID, thus wasting (minimum) four bytes everytime this happens. Potentially more.
** Another failing, as, if all the animation info had been put together it would have saved more than splitting it up saves. A guaranteed four bytes per frame rather than a potential billion bytes for the stupidest animation ever.
Posted by: Dr Sturm Aug 12 2008, 05:05 PM
OKAY RAI, I FIGURED OUT PART OF THE FRAME ASSEMBLY SECTION
They're separated into five-short chunks. Here's the first one for Fry split up:
CODE
00 00 00 00 18 00 08 00 00 00
18 00 08 00 30 00 10 00 00 00
18 00 00 00 18 00 10 00 00 00
40 00 08 00 40 00 18 00 00 00
40 00 00 00 18 00 18 00 00 00
68 00 08 00 40 00 20 00 00 00
68 00 00 00 18 00 20 00 00 00
88 00 08 00 38 00 28 00 00 00
88 00 00 00 10 00 28 00 00 00
B8 00 08 00 40 00 30 00 00 00
B8 00 00 00 10 00 30 00 00 00
E8 00 08 00 40 00 38 00 00 00
E8 00 00 00 10 00 38 00 00 00
18 01 08 00 40 00 40 00 00 00
E8 00 00 00 10 00 40 00 00 00
F0 00 08 00 18 00 48 00 00 00
18 01 00 00 18 00 40 00 00 00
40 01 08 00 40 00 48 00 00 00
40 01 00 00 10 00 48 00 00 00
68 01 08 00 38 00 50 00 00 00
And I'm pretty sure I'm right about those two shorts I mentioned earlier being the height and width. This corresponds to how many pieces can be found that make up the first sprite - pieces being in chunks no larger than 32x8 (four tiles).
Posted by: Dr Sturm Dec 29 2010, 01:32 AM
Alright RAI. Sort of related to this, so I'm going to keep it here: I've begun working with the PT* series files again. Only this time with Kitten PSP and XYZ. Two new file formats (both containers of sorts) I've identified:
BST
Not sure of its purpose just yet, but it houses several PT* files, and has other data...
PTBD
The only one I've found so far houses wav files (in the lovely proprietary PSP format). Nothing special here, at least not that I've found.
Posted by: Dr Sturm Dec 30 2010, 04:06 AM
So, essentially the file structure (sans whatever is embedded in the eboots themselves) for Kitten and XYZ are as follows:
Green = converted to useable format.
Yellow = Uhhh... Sort of...
Kitten PSP
- data01.afs
- Memory Card Image (Plain)
- Memory Card Image (Maria)
- Memory Card Image (Mellia)
- Memory Card Image (Yggdra)
- PT* series file(s)
- PT* series file(s)
- Unknown! Animations? Effects? Actually I think it may just be filenames/descriptions of other media.
- POWDATA.SFS - PT* series file(s) + script = battle information
- sound_bgm.afs - ADX files
- sound_se.afs - ACX files (ADX collections)
- sound_voice.afs - It's a bunch of ATRAC3+ files. Semi readable, I suppose... But not really.
Hexyz Force- BGMDATA.afs - ADX files
- BGMDATA22k.afs = ADX files
- data0.afs - a mishmash of files, some ADXs have been converted to waves, but a lot are clearly compressed and thus currently beyond my abilities.
Yggdra Union PSP- bgmData.afs - ATRAC3+ files. As far as I can probably get.
- data0.afs - Bunch of shit. I discovered a lot of ACX files, see below for the issue.
- voiceDataEng.afs - ADX files. See below
- voiceDataJpn.afs - ADX files. See below
Issue with ACX/ADX files: my ADX file decoder (that I did not write) seems to be extracting shitty sounding wav files. I'm not sure if this is the fault of the decoder or if the ADX files actually sounded shitty from the start (haven't played the game in a long time) but I'm looking into it. Hopefully I'll figure it out soon, then we'll have a million billion YU voices to sort out.
For file conversion (source code):
http://studentweb.stcloudstate.edu/hoza0702/Hacking/src/afs.zip
http://studentweb.stcloudstate.edu/hoza0702/Hacking/src/ptbd.c
http://studentweb.stcloudstate.edu/hoza0702/Hacking/src/acx.c (will convert embedded ADX files)
Update: I broke out the YUPSP ISO today and took a look. Realized some lovely surprises. I may have to dig out the RiviPSP ISO to check on that, now, too.
Posted by: Dr Sturm Dec 31 2010, 01:08 AM
Progress was been being made.
Kitten:
-1967 sound effects converted to wav, in need of identification
-135 BGM tracks converted to wav, in need of identification
XYZ:
-54 BGM tracks (x2) converted to wav, in need of identification
-165 voice clips (all from battle, I believe) converted to wav, in need of identification (I'll soon have more, as I've identified another file format housing voice clips)
YUPSP:
-1868 battle voice clips (and maybe SFX) converted to wav, in need of identification
-419 English and 418 Japanese cutscene voice clips converted to wav, in need of identification
Of course, these will only be identified if people actually want them ordered/on the site/whatever, but if you want to take on the identification of something, let me know and I'll provide the archive.
Posted by: Raijinili Dec 31 2010, 08:33 AM
I don't even remember what PTX is.
Posted by: Dr Sturm Dec 31 2010, 03:57 PM
Image Data. They can be stand alone images, but more commonly they're housed in PTG files (I don't know exactly what the point of these are, but they always hold 2 PTX files and have to be arranged in a special way), and PTA files (animation files), which tend to ignore the standard rules of PTX data and even the headers contained in the PTX files and make decoding a pain.
The file format can be found in YUPSP, Kitten PSP and Hexyz Force.
Posted by: Raijinili Dec 31 2010, 08:52 PM
I should graduate first.
Posted by: Dr Sturm Jan 1 2011, 12:49 AM
Pssh fuck that. Graduation is for newbs.
Posted by: Dr Sturm Jan 7 2011, 08:32 PM
So, I have two mysteries regarding the PTG files before I have them totally figured out.
1) The PTG files for Hexyz for some reason have a lot of their block data multiplied by 0x40... Or maybe the Yggdra ones have them divided by 0x40 and one is easier for calculation than the other? Don't know. I have a simple code work around, but it's still a curiosity.
2) For some reason all the colours are outputting properly but the skin. The skin is transparent in most image viewers, and absolute gibberish colours in some others.
Otherwise I could move on to other, for the most part easier file formats.
Also, I figured out why PTG files consist of two PTX files: it's an offshoot of the LIM file format. Having two embedded files allows for saving on space (as, if you remember, the LIM files, while conserving a lot due to their not including alpha pixels wasted a lot to remain block-aligned).
Posted by: Dr Sturm May 23 2011, 03:03 AM
RAI, WE HAVE BEEN FANTASTIC IDIOTS
The files are compressed simply and with ZLIB. Some may be encrypted, as I haven't tried all of them, but I think they're just compressed, and they can be easily decompressed using the library. For example, I just used the Python ZLIB library in my DAR unarchiver for Gungnir. An extra two lines of code and each file extracted is also decompressed.
Posted by: Raijinili May 25 2011, 01:38 AM
k
Kitten too?
Posted by: Dr Sturm May 25 2011, 01:49 AM
Yeah.
Posted by: Raijinili May 26 2011, 04:39 AM
dang. well, get on that and share me.
Posted by: Dr Sturm May 27 2011, 12:25 PM
Get on what? I already unzipped everything in GG, and I could easily unzip Kitten/XYZ/YUPSP stuff, I'm pretty sure, I'm just obsessed with hacking GG right now. It's almost entirely TPL files, even the sprite data, it seems. But some of the files are arranged differently, and I'm not exactly finding a header-based explanation, so I may just have to use exceptions as they come up which will suck.
There are also .bin files that go with some of the files, and I think they describe animation or something to that effect, as they appear with a lot sprites and other things that would probably be animated. I have little idea of how the files work right now, though.
Posted by: Raijinili May 27 2011, 05:42 PM
Give me a specific task and talk to me about transferring the stuff over.
Posted by: Dr Sturm May 30 2011, 02:06 AM
Let me take care of the TPL files and then I'll figure out where we stand on all the files and delegate thusly.
SPEAKING OF THAT
Sting is taking liberties again. In case I didn't tell you, Rai, the TPL file format is actually a fairly common texture format, especially for GC games. But Sting made some changes for their own purposes. Now they're making more. The sprites for the game, as well as a lot of the faces, have a form of construction data added towards the end, and I still can't really find any indicator of its existence (as they treat it like another image in the TPL file header), except for the lack of either palette or width/height. There may be one thing, but I'm still investigating. <3
Posted by: Dr Sturm Jul 1 2011, 05:05 PM
ALRIGHT I HAVE FIGURED IT OUT
I FIGURED OUT THE SPRITE TPL FILES IN GUNGNIR MORE OR LESS
In each TPL file there will be a special image which is not an image at all, but is actually the instructions on how to assemble the randomly assorted image data that the previous image contains. This is how it works. For this example I'm using wine.tpl, which produces three sprites of a wine glass. The assembly data is as follows:
CODE
08 00 00 00 03 00 00 00 20 00 00 00 F4 4F 01 02
2C 00 00 00 F0 1F 01 02 38 00 00 00 EB DF 00 01
00 00 00 00 06 20 00 04 06 00 06 20 01 00 0C 00
09 20 00 04 15 00 07 14 00 00 1C 00 10 18 65 00
Looks like a bunch of crap.
First we have a header of sorts:
CODE
Int: Header Length
Int: Images
Followed by that is Images * 8 bytes of data.
CODE
Int: Offset (relative to header) of image construction code
Byte: Dunno. Usually a negative value.
Short: Dunno. Usually a negative value.
Byte: Construction Commands
The construction commands are actually fairly simple. The offset mentioned above will point to Construction Commands * 6 bytes of data to read in.
CODE
Byte: Horizontal Shift
Byte: Vertical Shift (>>1)
Short: Data start
Byte: Data to read in
Byte: Dunno. Usually 0x20
So yah. Let's parse wine.tpl based on this info:
CODE
Header Length: 0x8
Image Count: 0x3
I1 Offset: 0x20
I1 ?1: 0xF4
I1 ?2: 0x14F
I1 Commands: 0x2
I2 Offset: 0x2C
I2 ?1: 0xF0
I2 ?2: 0x11F
I2 Commands: 0x2
I3 Offset: 0x38
I3 ?1: 0xEB
I3 ?2: 0xDF
I3 Commands: 0x1
I1 Commands:
I1C1 Horizontal Shift: 0x0
I1C1 Vertical Shift: 0x0
I1C1 Data Start: 0x0
I1C1 Run length: 0x6
I1C1 ???: 0x20
I1C2 Horizontal Shift: 0x0
I1C2 Vertical Shift: 0x4 (=0x8)
I1C2 Data Start: 0x6
I1C2 Run length: 0x6
I1C2 ???: 0x20
I2 Commands:
I1C1 Horizontal Shift: 0x1
I1C1 Vertical Shift: 0x0
I1C1 Data Start: 0xC
I1C1 Run length: 0x9
I1C1 ???: 0x20
I1C2 Horizontal Shift: 0x0
I1C2 Vertical Shift: 0x4 (=0x8)
I1C2 Data Start: 0x15
I1C2 Run length: 0x7
I1C2 ???: 0x14
I3 Command:
I1C1 Horizontal Shift: 0x0
I1C1 Vertical Shift: 0x0
I1C1 Data Start: 0x1C
I1C1 Run length: 0x10
I1C1 ???: 0x18
Junk(?): 0x65, 0x00
When dumped as a straight image (scaled to 1000%), we get:

If you try assembling it per the information above, you'll end up with three wine bottle sprites, one standing vertically, one at about a thirty degree angle, and one lying horizontally.
Hopefully a little more exploration will reveal what the unknown fields do, but I have a feeling at least two of them are pointless counters. But first, time to try to generate an algorithm for this shiznass.
Posted by: Raijinili Jul 2 2011, 04:53 AM
WHY ARE WE TALKING ABOUT THIS IN PUBLIC
Posted by: Dr Sturm Jul 2 2011, 06:26 PM
Why not? Do we want to hide this?
Posted by: Raijinili Jul 3 2011, 05:41 AM
1. There's no reason to show it. It's not like our small userbase has anyone that understands what you're talking about. In fact. I'm pretty sure I haven't been paying attention to most of what you're saying here.
2. Disassembling?
Posted by: Archeia Jul 3 2011, 07:29 AM
I was reading it and I found it interesting. I check this topic more often than the others :C
Posted by: Dr Sturm Jul 3 2011, 05:52 PM
QUOTE(Raijinili @ Jul 3 2011, 12:41 AM)

1. There's no reason to show it.
The more places it is recorded, the less likely a computer migration or faulty harddrive will require the work to be repeated.
QUOTE
It's not like our small userbase has anyone that understands what you're talking about.
Perhaps not, but that doesn't mean they're not possibly interested.
QUOTE
In fact. I'm pretty sure I haven't been paying attention to most of what you're saying here.
Well, that's cause your brain is in a million places at once.
QUOTE
2. Disassembling?
¿Que?
I've got a good four hour block of time coming up here, during which I'm going to work on getting a script going that assembles the sprite TPLs. By the way, when it comes to identifying them, it seems there's a magic flag of some sort. In the TPL header itself, the palette referencing method is 0xFFFF (as opposed to 0x4 for 4-bit and 0x5 for 8-bit).
Posted by: Raijinili Jul 4 2011, 05:13 AM
QUOTE(Dr Sturm @ Jul 3 2011, 01:52 PM)

Well, that's cause your brain is in a million places at once.
I read this as "pieces"
Posted by: Raijinili Aug 21 2011, 05:56 AM
HEY
STURM
I LOOKED AT GLORIA
AND I NEED A WAY TO SEE IT UNFILTERED
IT'S TOO DENSE
ARRRRN
BYE
P.S. GUNGNIR TOO
Posted by: Dr Sturm Aug 21 2011, 01:38 PM
What do you mean "unfiltered"?
Posted by: Raijinili Aug 21 2011, 05:55 PM
Either the steps to unencrypt with Python or the unencrypted themselves.
I want to look into the data (stats).
Posted by: Dr Sturm Aug 21 2011, 06:58 PM
Well, the encryption method needs to be determined first, have you done that? Are you sure the data is encrypted in the first place?
Posted by: Raijinili Aug 21 2011, 07:14 PM
But I thought you decompressed with this!
QUOTE(Dr Sturm @ May 22 2011, 11:03 PM)

RAI, WE HAVE BEEN FANTASTIC IDIOTS
The files are compressed simply and with ZLIB. Some may be encrypted, as I haven't tried all of them, but I think they're just compressed, and they can be easily decompressed using the library. For example, I just used the Python ZLIB library in my DAR unarchiver for Gungnir. An extra two lines of code and each file extracted is also decompressed.
Posted by: Dr Sturm Aug 22 2011, 01:14 PM
Well, yeah, but not all of the files are compressed, only some. At least as far as I know. Some might be encrypted, or maybe all the weird ones are merely compressed.
Posted by: Dr Sturm Jun 23 2015, 12:07 AM
QUOTE
The more places it is recorded, the less likely a computer migration or faulty harddrive will require the work to be repeated.
Someone just emailed me and I'm incapable of sending them any data related to these projects because of the quoted issue.
FOR YOUR FUTURE CAUTION
Posted by: Deathless Jun 24 2015, 04:31 AM
Just in case, that "someone" was me.
I'll try to investigate it myself when I get enough of free time.
Posted by: Raijinili Apr 14 2019, 07:42 PM
QUOTE(Dr Sturm @ Aug 22 2011, 09:14 AM)

Well, yeah, but not all of the files are compressed, only some. At least as far as I know. Some might be encrypted, or maybe all the weird ones are merely compressed.
I figured out the compression without you.
CODE
import zlib
def decompress(fpath, outpath):
with open(fpath, 'rb') as file:
data = file.read()
assert data[:4] == b'zlb\0'
data = zlib.decompress(data[8:])
if outpath is None:
outpath = fpath + '.out'
with open(outpath, 'wb') as file:
file.write(data)
Posted by: Dr Strum Apr 22 2019, 05:36 PM
External libraries is cheats
Posted by: Raijinili Apr 24 2019, 04:00 AM
https://docs.python.org/3/library/zlib.html Anyway...

I can rip all of the individual sprites of the animations for at least three files. I even got the right invisible background color now. I pretty much solved chunk 1.
The only thing left to do is to figure out chunk 0 table fields. There are two tables:
- Table 0 starts at 00C0.
- Table 1 is actually a bunch of smaller tables, indexed by the array at 0010-00C0.
Legend:
- 04.2 means offset 4 from start, 2 bytes.
- All values are ints. Usually signed ints.
A table 0 row represents a processed sprite, and looks like this (8 bytes):
+00.2: Index into the sprite array of chunk 1.
+02.2: X offset?? (Usually negative.)
+04.2: Y offset?? (Signed.)
+06.2: (Either 0000 or 0010?)
The variables probably indicate that something needs to be done to a raw sprite. That's why there are multiple rows using the same indexed sprite.
Each table 1 represents an animation, and looks like this (8 bytes):
+00.2: Pointer (from start of file) to a table 0 row, or 0 if end of current animation.
+02.2: (Always zero?)
+04.2: Number of sprites to grab from that pointer.
+06.2: Time?
The number of sprites to grab allows the overlay of multiple sprites in a single instance of the animation. For example, in Valkyrie (0731-0), this row in a table1 (during the Revolution animation):
CODE
F0 06 00 00 03 00 06 00
means to grab these (consecutive) rows in table 0:
CODE
000006F0 DC 00 BC FF 14 00 00 00
000006F8 96 00 BC FF 14 00 00 00
00000700 D0 00 BC FF 14 00 00 00
which correspond to instances of:
0. Valkyrie's after-image.
1. Valkyrie.
2. The lightning on the sword.
which are placed on top of each other in that order, so the shadow is on the back and the lightning is in front.
I believe that the last row of an animation table (i.e. the row that starts with 00 00) holds some metadata about the animation. Possibly determines looping/stopping.
It may even indicate which row to loop once you reach the end. For example, the 11 at the end might indicate that you jump to row 0x11 to loop.
CODE
58 04 00 00 01 00 06 00
60 04 00 00 01 00 0C 00
68 04 00 00 01 00 06 00
70 04 00 00 01 00 06 00
78 04 00 00 01 00 0C 00
80 04 00 00 01 00 0C 00
88 04 00 00 01 00 0C 00
90 04 00 00 01 00 0C 00
98 04 00 00 01 00 0C 00
A0 04 00 00 01 00 06 00
A8 04 00 00 01 00 0C 00
B0 04 00 00 01 00 0C 00
B8 04 00 00 01 00 0C 00
C0 04 00 00 01 00 06 00
C8 04 00 00 01 00 06 00
D0 04 00 00 02 00 06 00
E0 04 00 00 01 00 0C 00
E8 04 00 00 01 00 0C 00
F0 04 00 00 01 00 0C 00
F8 04 00 00 01 00 0C 00
00 00 00 00 00 00 11 00
Posted by: Raijinili Apr 25 2019, 03:24 AM
I consider this work pretty much complete.

There are three remaining issues:
1. Transparency. It is https://github.com/imageio/imageio/issues/360 to get these Python image libraries to make animated GIFs with transparency.
2. Image x,y offsets. The offset interpretation of the data was correct, but the sprites can be offset beyond the bounds of the canvas. I can correct for this by detecting how far they're off-bound and offsetting the entire image, but you'd lose information about the original.
3. Palette swapping. There's no palette-swap info in these files.
These can all be taken care of in-bulk using an image processing program like ImageMagick.
The loop index interpretation seems to be right, but I know of no way to represent that in an image file.
Posted by: Dr Strum Apr 29 2019, 08:31 PM
Cool shit, thanks Rai
I haven't looked at these files in at least 30 years though so I don't know what's a valkyrie \_(ツ)_/
Posted by: Raijinili Apr 30 2019, 03:35 AM

I doubled the size of the canvas (halfway in each direction) to fix the offset issue, since it turns out that you can't automate it based on the subsprite offsets. I used ImageMagick to fix transparency (SLOOOOW).
I put up https://github.com/Raijinili/stingfiles.