[泚 ã¬ãŒã³ïŒZachtronicsã®Zach Bartã¯ãçŽ æŽããããããªããºã«ã²ãŒã ïŒSpaceChemãTIS-100ãSHENZHEN I / OïŒãäœæãã é»åã¹ã¯ã€ãŒã«ãŒãã¢ããã°ã¬ãŒãããã ãã§ãªããå€ãã²ãŒã ã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãªãœãŒã¹ã楜ããã§ããŸãã ãã®èšäºã¯ã圌ã®åäŸæ代ã®ãæ°ã«å ¥ãã®ã²ãŒã ããããã³ã°ããããšã«æåããŠããŸãã]
ãŸããã
çç±ã¯ããããŸããããã³ã³ãã¥ãŒã¿ãŒã²ãŒã ããŒã¿ãã¡ã€ã«ã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ã«åžžã«æ¹ãããŠããŸããã ã²ãŒã ã³ãŒãã®éã³ã³ãã€ã«ã¯å°é£ãªäœæ¥ã§ãããããŒã¿ãã¡ã€ã«ã®åæã¯å€ãã®å Žåããç°¡åã§ãïŒããã¹ããã¹ãã©ã€ããªã©ã®æ確ã«èŠããã³ã³ãã³ããå€ãå«ãŸããŠããããïŒããã¡ã€ã«ãååã«ç解ããŠããã°ãã²ãŒã ãå€æŽã§ããŸãã
Star WarsïŒEmpire at Warãã¢ã®ãªãªãŒã¹ããæ°æ¥åŸã®2006幎ãã²ãŒã ããŒã¿ãã¡ã€ã«ã®ãã³ããšåããã¯ãå¯èœã«ããããã€ãã®åºæ¬çãªããŒã«ãå ¬éããŸããããã¢ã§ïŒã ç§ã¯èªåã®äœåã®çè·¡ããããäžã§èŠã€ããããšã¯ã»ãšãã©ã§ããŸããããã²ãŒã ãããã°ãªãã®éçºè ã®ããã«ç¡æã®Tã·ã£ããæã«å ¥ããããšãã§ããŸãããããã¯äœãã§ãã
äœå¹Žãåã«ã Star WarsïŒYoda StoriesãšåŒã°ããå¥ã®Star Warsã²ãŒã ããããŸããã 圌女ã¯ããªãæ··ä¹±ããæªãè©äŸ¡ãåããŸããããããã¯ç§ãæ¢ããŸããã§ããã åå¿è ããã°ã©ããŒã§ãããé åºãªã¹ã¿ãŒãŠã©ãŒãºã®ãã¡ã³ãšããŠãç§ã¯èªåã®ã²ã©ãã¹ã¿ãŒãŠã©ãŒãºã²ãŒã ãäœãããã®ã²ãŒã ãªãœãŒã¹ãèŠã€ããããšããŸããã ãã ãããã¹ã¯ãããããŒãã¢ã€ã³ã³ãšããŠé åžããããµãŠã³ããšãã§ã¯ããšå°æ°ã®ã¹ãã©ã€ãã®ã¿ãæ€åºã§ããŸããã
16幎ã«ããã®ãŒããŸãã1990幎代ã®ããŒãã§ã³ã³ãã¥ãŒã¿ãŒããŒãã£ãŒã§ãã¬ã€ã§ããå€ãã²ãŒã ãæ¢ããŠãCDã®å€ä»£ã®ã³ã¬ã¯ã·ã§ã³ãç 究ããŠããŸãã CDããã©ã€ãã«æ¿å ¥ãããšããµã€ãºãçŽ4ã¡ã¬ãã€ãã®ããŒã¿ãã¡ã€ã«ãèŠã€ãã£ãããšã«ããã«æ°ä»ãã倧åŠã§ãããã³ã°ã®ããã«ç¥èã䜿çšãããã®ãåŸ ã£ãŠããŸããã 決ããŠåŸãããè¯ãïŒ
ãã¡ã€ã«æ§é ïŒé£æ床ïŒããã¯ã³ïŒ
åæ§ã®äœãããªããŒã¹ãšã³ãžãã¢ãªã³ã°ããã«ã¯16é²ãšãã£ã¿ã§ååã ãšæããŸãããåŸã§ãã³ã³ãã€ã©ãèšç®æ©ã察å¿ããããã°ã©ã ã®ç¥èã䜿çšããŸãã ç§ã¯HxDã®å€§ãã¡ã³ãªã®ã§ããã®ãšãã£ã¿ãŒã䜿çšããŸãã
èªåã§å®éšãããå Žåã¯ãã²ãŒã ããŒã¿ãã¡ã€ã«ãžã®ãªã³ã¯ã以äžã«ç€ºããŸãïŒ YODESK.DTA
ãã®ãã¡ã€ã«ãéãæéã§ãïŒ
ãããã£ãŠãããã¯ééããªãããã¹ãã§ã¯ãªãã人éãèªãããšãæå³ãããã®ã§ã¯ãããŸãããããŸã£ããé©ãããšã§ã¯ãããŸããã 16幎åãåããã¡ã€ã«ãã¡ã¢åž³ã§éããŠããã«éããã®ã¯ç¢ºãã§ããã
æåã«ãã»ã¯ã·ã§ã³èå¥åã®ããã«æãã4æåã®ASCIIæåã衚瀺ãããŸãã 以äžã«ãSNDSãTILEãCHARãPUZ2ãªã©ã®ç¢ºèªã衚瀺ãããŸãã ãã¡ã€ã«ã¯ENDFã»ã¯ã·ã§ã³ã§çµäºããŸããããã¯ããã¡ã€ã«ã®äžè¬çãªæ§é ããã©ãã«ã®ããã»ã¯ã·ã§ã³ã®éå±€ãŸãã¯ã»ã¯ã·ã§ã³ã®ãªã¹ãã§ããããšãæå³ããŸãã
VERSèå¥åã¯ãæããã«ãããŒãžã§ã³ãã»ã¯ã·ã§ã³ã§å§ãŸãã次ã®4ãã€ããå«ãŸããŸãïŒ0x00ã0x02ã0x00ã0x00ã Yoda Storiesã¯åããšã³ãžã³ã䜿çšããŠãããšæãããIndiana Jonesã²ãŒã ã®åŸã«ç»å Žãããããããã¯ãã¡ã€ã«åœ¢åŒã®ããŒãžã§ã³2.0ã§ãããšæãããŸãã ãã ãããã®ããŒã¿ã«ã¯ããŸãé¢å¿ããªããããããã¯ç¹ã«éèŠã§ã¯ãããŸããã
次ã«ãSTUPïŒã»ããã¢ããïŒïŒã»ã¯ã·ã§ã³ããããŸãããã®ã»ã¯ã·ã§ã³ã«ã¯ãå€ãã®æå·ããŒã¿ââãå«ãŸããŠããŸãã
æããã«ãããã«ã¯äœããã®ãã¿ãŒã³ããããŸãããã²ãŒã ã®è©³çŽ°ãªç¥èããªããã°ããã®ç®çãç解ã§ããŸããã 次ã®è³ªåã¯ç§ã«ãšã£ãŠããéèŠãªããã§ãïŒãããã¹ãããããæ¹æ³ïŒ ãã®ã»ã¯ã·ã§ã³ã¯åºå®é·ã§ãããšæ³å®ã§ããŸãããå®éã«ã¯ããã§ã¯ãããŸããã
ã»ã¯ã·ã§ã³ã®å é ïŒåã®ã¹ã¯ãªãŒã³ã·ã§ããïŒãããäžåºŠèŠããšãSTUPèå¥åã®åŸã«4ã€ã®çããããã€ããç¶ãããšãããããŸãïŒ0x00ã0x44ã0x01ã0x00ã ãã®4ãã€ãã®åŸã«ãã®ã»ã¯ã·ã§ã³ã«æ®ã£ãŠããããŒã¿ã確èªãããšããããã®é·ããæ£ç¢ºã«0x00014400ãã€ãã§ããããšãããããŸãã å¶ç¶ïŒ ããã¯æããŸããïŒ
æããã«ããããã®4ãã€ãã¯ãSTUPã»ã¯ã·ã§ã³ã®æ®ããæ§æããããŒã¿ã®éã瀺ã笊å·ãªã32ãããæŽæ°ã§ãã ãã€ããéã®é åºã§æžã蟌ãŸããŠããããã«æããå Žåãããªãã¯æ£ããã§ãïŒæäžäœãã€ããæåã«æ ŒçŽãããŠããæäžäœããæãå€ãïŒãªãã«ãšã³ãã£ã¢ã³ïŒã®é ã«æ ŒçŽãããŸã-x86ããã³x86-64ããã»ããµã®äžè¬çãªæ¹æ³ é·ãã®å€ãèæ ®ãããšãã»ã¯ã·ã§ã³ã«æ ŒçŽãããŠããããŒã¿ã«ã€ããŠäœãç¥ããªããŠããæ®ãã®ã»ã¯ã·ã§ã³ãã¹ãããã§ããŸãã
ããã4 MBã®ãµã€ãºã®ãã€ããªãã¡ã€ã«ãæåã§èªã¿åãããšã¯ãããŸãçç£çãªäœæ¥æ¹æ³ã§ã¯ãªãããããã¡ã€ã«ã®è§£æããã³/ãŸãã¯ããŒã¿ãã³ãããšã³ã³ãŒãããæ¹æ³ãèŠã€ããããã»ã¹ã§ãã³ãããããã°ã©ã ã§äœæ¥ãéå§ããæãæ¥ãŸããã ç§ã¯CïŒããã°ã©ãã³ã°èšèªã奜ãã®ã§ãããã䜿çšããŸãã ãã¡ã€ã«åœ¢åŒãå®å šã«æ··ä¹±ããŠããªããšä»®å®ãããšãããªã詳现ãªBinaryReaderã¯ã©ã¹ãäœæããŠéå§ã§ããŸãã ãããŸã§ã«æºåããããã°ã©ã ã¯æ¬¡ã®ãšããã§ãã
static void Main(string[] args) { using (BinaryReader binaryReader = new BinaryReader(File.OpenRead("YODESK.DTA"))) { bool keepReading = true; while (keepReading) { string section = new string(binaryReader.ReadChars(4)); switch (section) { case "VERS": uint version = binaryReader.ReadUInt32(); break; case "STUP": uint length = binaryReader.ReadUInt32(); byte[] data = binaryReader.ReadBytes((int)length); break; default: throw new Exception("Unknown section: " + section); } } } }
æ®å¿µãªãããæåã®2ã€ã®ã»ã¯ã·ã§ã³ã§ã®ã¿æ©èœããŸãã3çªç®ã®ã»ã¯ã·ã§ã³ïŒSNDSïŒã«å°éãããšããã«ããã¡ã€ã«å ã®ãã¹ãŠã®ãªãã·ã§ã³ãåŠçããå¿ èŠãããããšãæããã«ãªããŸãã ããã¯ããã¡ã€ã«åœ¢åŒã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°æã«éåžžã«é »ç¹ã«çºçããŸããããã¯ãå€ãã®çš®é¡ã®ãããããæã€ããŸããŸãªå€ãæã£ãŠããããã§ãã ãã®ãããç§ãã¡ã¯äŒãããšãã§ãããã¹ãŠã®ã¿ã€ããç解ããå¿ èŠããããŸãã 幞ããªããšã«ããã®ãã¡ã€ã«ã®ã»ãšãã©ãã¹ãŠã®ã»ã¯ã·ã§ã³ã§ã¯ãã»ã¯ã·ã§ã³èå¥åã®åŸã«ç¬Šå·ãªã32ãããé·ãç¶ããŸããã€ãŸããSTUPã»ã¯ã·ã§ã³åŠçã³ãŒãã䜿çšããŠããããã¹ãããã§ããŸãã
static void Main(string[] args) { using (BinaryReader binaryReader = new BinaryReader(File.OpenRead("YODESK.DTA"))) { bool keepReading = true; while (keepReading) { string section = new string(binaryReader.ReadChars(4)); switch (section) { case "VERS": uint version = binaryReader.ReadUInt32(); break; case "STUP": case "SNDS": case "ZONE": case "TILE": case "PUZ2": case "CHAR": case "CHWP": case "CAUX": case "TNAM": uint sectionLength = binaryReader.ReadUInt32(); byte[] sectionData = binaryReader.ReadBytes((int)sectionLength); break; case "ENDF": keepReading = false; break; } } } }
ZONEã»ã¯ã·ã§ã³ã§ã¯ãèå¥åïŒ0x00010292ïŒã®çŽåŸã«ãã®é·ãã瀺ãããŠããããã«èŠããŸããããã®ãã€ãæ°ãè¶ ãããšããã€ãã«ãªããŸããã€ãŸããããããäœãééã£ãããšãããŠããŸãã ãã ããéå§çŽåŸã«ãIZONãIZAXãIZX2ãIZX3ãIZX4ãããã³ãããã®åŸã«0ããããã€ãã®IACTã®ä»ã®èå¥åãããããšã¯æããã§ãã ãã®èå¥åã®ã»ããã¯ã以äžã§ããäžåºŠç¹°ãè¿ããããã¡ã€ã«å ã§æ°ååºçŸããŸãã ããã§ã¯ãã²ãŒã ã®ä»çµã¿ã«é¢ããç¥èã圹ç«ã¡ãŸãããšãŒãã¹ããŒãªãŒã®éèŠãªãæ©èœãã®1ã€ã¯ãæ°ããããã»ãŒãžããšã«ã©ã³ãã ã«ãŒããçæãããããšã§ãããããã€ãã®ã²ãŒã ã®åŸãã«ãŒãã¯å®éã«ã¯å°ããªã«ãŒãã§æ§æãããŠããããšãæããã«ãªããŸããµã€ãºã IACTã»ã¯ã·ã§ã³ã«ã¹ã¯ãªããã®ãããªããã¹ããå«ãŸããŠãããšããäºå®ã¯ãåIZONãå®éã«ããããã©ã°ã¡ã³ãã«å¯Ÿå¿ããŠãããšããèããè£ä»ããŠããŸãã
ZONEã»ã¯ã·ã§ã³ãç°¡åã«ã¹ãããã§ããªãå Žåã¯ãæ§é ãåæããŠããã¥ã¡ã³ãã®æ®ãã®éšåã解æãç¶ããããšãã§ããããã«ããã®æ§é ã«ã€ããŠããã«åŠç¿ããå¿ èŠããããŸãã ãã®éšåã¯ä»¥åã®éšåãããã¯ããã«æŽç·ŽãããŠããã«ãããããããé·ãã«é¢ä¿ã®ãªãããŒã¿ãã»ã¯ã·ã§ã³èå¥åã®é£ã«è¿œå ããããããçµæãšããŠæåããŸããã
IZONã«ã¯å€ãã®ã»ã¯ã·ã§ã³ããããããããããŒã¿ããå¥ã®ããŒã¿ã«ç§»åã§ããããŒã¿ãããããšã¯æããã§ãã ãã ããããã°ã©ã ã¯åã«ãIZONãã®æ¬¡ã®è¡ãèŠã€ãããŸã§ããŒã¿ãã¹ãã£ã³ããããšãã§ããŸãããããã¯éåžžã«ä¿¡é Œæ§ã®äœãã¢ãããŒãã§ããã誰ããNPCãã€ã¢ãã°ã©ã€ã³ã«ãIZONããè¿œå ãããããããŸããã æåã®IZONã®å é ãã次ã®IZONãŸã§ã®é·ãã枬å®ãããšãé·ã0x064CãåŸãããŸããããã¯ãèå¥åZONEïŒ0x00000646ïŒã«ç¶ã4ãã€ãã®åŸã«4ãã€ãã«çãããã»ã©è¿ãé·ãã§ãã ãããã®4ãã€ããé·ãã®èå¥åãšããŠäœ¿çšãããããã«ç¶ã0x646ãã€ããèŠããšããã¿ãŒã³ã«æ°ã¥ãå§ããŸãã
4 : "ZONE"
2 : ????
2 : ????
4 : (X)
X : zone
2 : ????
4 : (X)
X : zone
2 : ????
4 : (X)
X : zone
...
2 : ????
4 : (X)
X : zone
4 : "PUZ2" ( )
ãããªãç 究ã«ãããããŸããŸãªçšåºŠã®å®çšæ§ã®äºå®ãæããã«ãªããŸããã
- ZONEèå¥åã«ç¶ã2ãã€ãã¯ããŸãŒã³ã®æ°ãæå®ãã笊å·ãªã16ãããæŽæ°ã«å¯Ÿå¿ããŸãã
- åãŸãŒã³ã®é·ãã®æ±ºå®èŠå ã®åã®2ãã€ãã¯ãå€0x0001ã0x0002ã0x0003ãããã³0x0005ã®ã¿ãæã€ããšãã§ããŸãã
- ãããã®ãŸãŒã³ã®æåã®2ãã€ãã¯ã0x0000ã§å§ãŸããæ¯å1ãã€å¢å ããäœããã®ã«ãŒãIDçªå·ã§ãã
ãã®æ å ±ã«åºã¥ããŠZONEã»ã¯ã·ã§ã³ãèªã¿åãããã«ããã°ã©ã ãæŽæ°ãããšããã¡ã€ã«å šäœãèªã¿åãããšãã§ããŸãã
static void Main(string[] args) { using (BinaryReader binaryReader = new BinaryReader(File.OpenRead("YODESK.DTA"))) { bool keepReading = true; while (keepReading) { string section = new string(binaryReader.ReadChars(4)); switch (section) { case "VERS": uint version = binaryReader.ReadUInt32(); break; case "STUP": case "SNDS": case "TILE": case "PUZ2": case "CHAR": case "CHWP": case "CAUX": case "TNAM": uint sectionLength = binaryReader.ReadUInt32(); byte[] sectionData = binaryReader.ReadBytes((int)sectionLength); break; case "ZONE": ushort count = binaryReader.ReadUInt16(); for (int i = 0; i < count; i++) { ushort unknown = binaryReader.ReadUInt16(); uint zoneLength = binaryReader.ReadUInt32(); byte[] zoneData = binaryReader.ReadBytes((int)zoneLength); } break; case "ENDF": keepReading = false; break; default: throw new Exception("Unknown section: " + section); } } } }
ãã®ã³ãŒãã䜿çšãããšããã¡ã€ã«åœ¢åŒã®äžè¬çãªæ§é ã«ã€ããŠèª€ã£ãä»®å®ãè¡ã£ãããšã瀺ãäŸå€ãçºçãããããšãªãããã¡ã€ã«å šäœãèªã¿åãããšãã§ããŸãã ãããŠããŸã äœãæœåºããŠããŸãããããã§ã«æ£ããè»éã«ä¹ã£ãŠããŸãã
ã¿ã€ã«ïŒé£æ床ïŒãžã§ãã€ãã€ãïŒ
ãã¡ã€ã«æ§é å šäœã解æã§ããããã«ãªã£ãã®ã§ãããã«æ·±ãæãäžããŠãããã«æ¥ããã®ãã€ãŸãå¥åŠã§å æ¬çãªã²ãŒã ã¿ã€ã«ã®ã»ããããã³ãããŸãã
TILEã»ã¯ã·ã§ã³ã®äžå€®ãŸã§è¡ãã°ãããã«äœãèå³æ·±ãããšãããããšãããã«ããããŸããããã¯ããããããã€ã¡ãŒãžã§ãã ã²ãŒã ç»åã¯32x32ãã¯ã»ã«ã®ã¹ãã©ã€ãã§ãããããåæ§ã®ãã¿ãŒã³ã32ãã€ãã®åã«çŸãå§ãããšãããã¯ãã¯ã»ã«ããã1ãã€ãã®éå§çž®ãããããã圢åŒã§ããå¯èœæ§ãé«ããªããŸãã
TILEã»ã¯ã·ã§ã³ã®å é ã«ç§»åãããšãASCIIæåã¹ããŒã¹ã«å¯Ÿå¿ãã1024ãã€ãïŒ32x32ïŒã®ããŒã¿é åã«æ°ä»ãã®ã¯ç°¡åã§ãããããã4ãã€ãã®ãã¬ãã£ãã¯ã¹ãæã€ã¹ãã©ã€ãããŒã¿ã§ãã ããŒã¿é åå šäœã§ããã4ãã€ãã®å€ã®ç¯å²ã調ã¹ããšããããã¯æ¯èŒçã©ã³ãã ã§ãããå€ãã®å Žåç¹°ãè¿ãããããããã©ã°ã®é åã®ããã«èŠããŸãã
4 :
1024 :
4 :
1024 :
...
4 :
1024 :
ããããããããã©ã°ã¯ã¿ã€ã«ã®ããããã£ãè¡šããŠããã®ã§ããããïŒ ã©ã®ãããªéãããããŸããïŒ ç»åã®æœåºã«è¿ã¥ããŠããŸãïŒ çãããç»åããŒã¿ãç»åãã¡ã€ã«ã«ãã³ãããããã«ããã°ã©ã ã®æ©èœãæ¡åŒµããããšã¯æ®ããŸã...
case "TILE": { Directory.CreateDirectory(@"Tiles"); uint tileSectionLength = binaryReader.ReadUInt32(); for (int i = 0; i < tileSectionLength / 0x404; i++) { uint unknown = binaryReader.ReadUInt32(); Bitmap tile = new Bitmap(32, 32); for (int j = 0; j < 0x400; j++) { byte pixelData = binaryReader.ReadByte(); Color pixelColor = Color.FromArgb(pixelData, pixelData, pixelData); tile.SetPixel(j % 32, j / 32, pixelColor); } tile.Save(string.Format(@"Tiles\{0}.png", i)); } break; }
åå©ïŒ ãŸãã¯ãã®ãããªãã®...
æããã«ãã²ãŒã ã«ã¯è²ããããŸãããã®ãããåRGBã³ã³ããŒãã³ãã«ãã¯ã»ã«å€ãå²ãåœãŠãã ãã§ã¯åé¡ã¯è§£æ±ºããŸããã ã°ã¬ãŒã®ã°ã©ããŒã·ã§ã³ä»¥å€ã¯ååŸã§ããŸããã ãŠã£ãããã£ã¢ã«ãããšãæšæºã®8ãããã®ãã¥ã«ãŒã«ã©ãŒã¹ããŒã ã¯0bRRRGGGBBãªã®ã§ãè©ŠããŠã¿ãŸãããã
case "TILE": { Directory.CreateDirectory(@"Tiles"); uint tileSectionLength = binaryReader.ReadUInt32(); for (int i = 0; i < tileSectionLength / 0x404; i++) { uint unknown = binaryReader.ReadUInt32(); Bitmap tile = new Bitmap(32, 32); for (int j = 0; j < 0x400; j++) { byte pixelData = binaryReader.ReadByte(); byte r = (byte)((pixelData & 0xE0) << 0); byte g = (byte)((pixelData & 0x1C) << 3); byte b = (byte)((pixelData & 0x03) << 6); Color pixelColor = Color.FromArgb(r, g, b); tile.SetPixel(j % 32, j / 32, pixelColor); } tile.Save(string.Format(@"Tiles\{0}.png", i)); } break; }
æããã«ããããééã£ããã¯ã»ã«åœ¢åŒã§ãããããæšæž¬ããããŠãæ°å€èªäœã®åæãå§ããŸãããã ã²ãŒã ã®ã¹ã¯ãªãŒã³ã·ã§ãããæ®ããæçµçãªã¹ãã©ã€ãã®è²ã«å¯Ÿå¿ããå€ãæ¯èŒããŸãã
ãããã®éã®è²åãã¯éåžžã«èå³æ·±ãã§ããéåžžã«è¿ãã§ãããããã€ãã®ç°ãªãè²åãããããŸãã ç»ååŠçããã°ã©ã ãããã¯ã»ã«å€ãååŸãããšã次ã®å€ãååŸãããŸãã
0x1F 0x00 / 0x00 / 0x00
0x92 0x0B / 0x53 / 0xFB
0x93 0x00 / 0x00 / 0xFB
0x94 0x00 / 0x00 / 0xCB
0x95 0x00 / 0x00 / 0x9F
0x96 0x00 / 0x00 / 0x6F
ç§ã¯æ¥œèŠ³çãããŠããã¯ã»ã«å€ããè²æåãžã®ãããå€æãããã€ããããŸãããã0x1Fã¯äœããã®åœ¢ã§é»ïŒãã¹ãŠãŒãïŒã«äžèŽããŠããŠããšã©ãŒã瀺ããŠããŸãã ãã¯ã»ã«å€ã0x93ãã0x92ã«æžãããšãè²ã«2ãã€ãã®æ å ±ãéæ³ã®ããã«è¿œå ãããå Žåãé¿ããããªããã®ãèªèããæãæ¥ãŸãããã«ã©ãŒãã¬ããã¯ã©ããã«æ ŒçŽãããã©ãã«ãããããããŸããã
ãã¡ãããããããã®ã¹ã¯ãªãŒã³ã·ã§ãããåãããã¯ã»ã«å€ãæ¯èŒããããã»ã¹ãèªååã§ããŸããããã£ãšæé©ãªæ¹æ³ãããã¯ãã§ãã ãã¬ããããŒã¿ã¯ã©ããã«ä¿åããå¿ èŠããããŸãã ãã®ã·ã¹ãã ãããã°ã©ã ããå Žåãããããé åã€ã³ããã¯ã¹ããã¯ã»ã«ããŒã¿ã®å€ã§ããè²ã®é åãä¿æããã ãã§ãã 楜ãã¿ã®ããã«ãR2D2ã¹ãã©ã€ãã§äœ¿çšãããŠããè²ã®1ã€ãã€ãŸã0x0B53FBããã¡ã€ã«ã§èŠãŠã¿ãŸããã...
ãããäœããªãã
å¥ã®äººæ°ã®ãããã¯ã»ã«åœ¢åŒ-BGRãå€å0xFB530Bãã§ããŸãã
ãŸã空ã
ãã ãããã1ã€ã®å Žæãã€ãŸãã²ãŒã ã®å®è¡å¯èœãã¡ã€ã«ã§ã¯æ€çŽ¢ããŸããã§ããã éåžžãå€ãã®ã²ãŒã ãã¬ã€æ å ±ã¯å®æ°ãšããŠã³ãŒãã«ä¿åãããŸãããããã¯ãããããã®å Žåã§ãã ãã€ããªãã¡ã€ã«ã§0x0B53FBãæ€çŽ¢ããŠãçµæã¯è¿ãããŸããããBGRã®å€ãæ€çŽ¢ãããš...
ãããããã¯ã«ã©ãŒãã¬ããã§ãïŒ æ¬¡ã®4ãã€ãã®å€ã¯0xFB000000ãã€ãŸãBGRAã®è²0x93ã§ãããããæçšãªäœãã«åºãããå¯èœæ§ãé«ããªããŸãã éã¢ã»ã³ãã©ã§ããŒã¿ãæ¢ããšãããå°ãç解ã§ããŸãã
ãã®ç»åããç解ããããšã¯å°é£ã§ãããããã¯ãã¬ããããŒã¿ã§ãããéã³ã³ãã€ã«ãããããã°ã©ã ã§ã³ã³ãã€ã«æå®æ°ã®é åãèŠã€ããããšãã§ããå Žæã§ãã ãããè²0x92ã§ããããšãããã£ãŠããã®ã§ãæ£ããè²ã§ç»åããšã¯ã¹ããŒãããããã«ããã°ã©ã ã«ã³ããŒããããã«ãæåŸããäœæ¥ãéå§ãããã¬ããã®å é ãèŠã€ããããšãã§ããŸãã
private static readonly byte[] PaletteData = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x8B, 0x00, 0xC3, 0xCF, 0x4B, 0x00, 0x8B, 0xA3, 0x1B, 0x00, 0x57, 0x77, 0x00, 0x00, 0x8B, 0xA3, 0x1B, 0x00, 0xC3, 0xCF, 0x4B, 0x00, 0xFB, 0xFB, 0xFB, 0x00, 0xEB, 0xE7, 0xE7, 0x00, 0xDB, 0xD3, 0xD3, 0x00, 0xCB, 0xC3, 0xC3, 0x00, 0xBB, 0xB3, 0xB3, 0x00, 0xAB, 0xA3, 0xA3, 0x00, 0x9B, 0x8F, 0x8F, 0x00, 0x8B, 0x7F, 0x7F, 0x00, 0x7B, 0x6F, 0x6F, 0x00, 0x67, 0x5B, 0x5B, 0x00, 0x57, 0x4B, 0x4B, 0x00, 0x47, 0x3B, 0x3B, 0x00, 0x33, 0x2B, 0x2B, 0x00, 0x23, 0x1B, 0x1B, 0x00, 0x13, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x43, 0x00, 0x00, 0xB7, 0x43, 0x00, 0x00, 0xAB, 0x3F, 0x00, 0x00, 0x9F, 0x3F, 0x00, 0x00, 0x93, 0x3F, 0x00, 0x00, 0x87, 0x3B, 0x00, 0x00, 0x7B, 0x37, 0x00, 0x00, 0x6F, 0x33, 0x00, 0x00, 0x63, 0x33, 0x00, 0x00, 0x53, 0x2B, 0x00, 0x00, 0x47, 0x27, 0x00, 0x00, 0x3B, 0x23, 0x00, 0x00, 0x2F, 0x1B, 0x00, 0x00, 0x23, 0x13, 0x00, 0x00, 0x17, 0x0F, 0x00, 0x00, 0x0B, 0x07, 0x00, 0x4B, 0x7B, 0xBB, 0x00, 0x43, 0x73, 0xB3, 0x00, 0x43, 0x6B, 0xAB, 0x00, 0x3B, 0x63, 0xA3, 0x00, 0x3B, 0x63, 0x9B, 0x00, 0x33, 0x5B, 0x93, 0x00, 0x33, 0x5B, 0x8B, 0x00, 0x2B, 0x53, 0x83, 0x00, 0x2B, 0x4B, 0x73, 0x00, 0x23, 0x4B, 0x6B, 0x00, 0x23, 0x43, 0x5F, 0x00, 0x1B, 0x3B, 0x53, 0x00, 0x1B, 0x37, 0x47, 0x00, 0x1B, 0x33, 0x43, 0x00, 0x13, 0x2B, 0x3B, 0x00, 0x0B, 0x23, 0x2B, 0x00, 0xD7, 0xFF, 0xFF, 0x00, 0xBB, 0xEF, 0xEF, 0x00, 0xA3, 0xDF, 0xDF, 0x00, 0x8B, 0xCF, 0xCF, 0x00, 0x77, 0xC3, 0xC3, 0x00, 0x63, 0xB3, 0xB3, 0x00, 0x53, 0xA3, 0xA3, 0x00, 0x43, 0x93, 0x93, 0x00, 0x33, 0x87, 0x87, 0x00, 0x27, 0x77, 0x77, 0x00, 0x1B, 0x67, 0x67, 0x00, 0x13, 0x5B, 0x5B, 0x00, 0x0B, 0x4B, 0x4B, 0x00, 0x07, 0x3B, 0x3B, 0x00, 0x00, 0x2B, 0x2B, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0xDB, 0xEB, 0xFB, 0x00, 0xD3, 0xE3, 0xFB, 0x00, 0xC3, 0xDB, 0xFB, 0x00, 0xBB, 0xD3, 0xFB, 0x00, 0xB3, 0xCB, 0xFB, 0x00, 0xA3, 0xC3, 0xFB, 0x00, 0x9B, 0xBB, 0xFB, 0x00, 0x8F, 0xB7, 0xFB, 0x00, 0x83, 0xB3, 0xF7, 0x00, 0x73, 0xA7, 0xFB, 0x00, 0x63, 0x9B, 0xFB, 0x00, 0x5B, 0x93, 0xF3, 0x00, 0x5B, 0x8B, 0xEB, 0x00, 0x53, 0x8B, 0xDB, 0x00, 0x53, 0x83, 0xD3, 0x00, 0x4B, 0x7B, 0xCB, 0x00, 0x9B, 0xC7, 0xFF, 0x00, 0x8F, 0xB7, 0xF7, 0x00, 0x87, 0xB3, 0xEF, 0x00, 0x7F, 0xA7, 0xF3, 0x00, 0x73, 0x9F, 0xEF, 0x00, 0x53, 0x83, 0xCF, 0x00, 0x3B, 0x6B, 0xB3, 0x00, 0x2F, 0x5B, 0xA3, 0x00, 0x23, 0x4F, 0x93, 0x00, 0x1B, 0x43, 0x83, 0x00, 0x13, 0x3B, 0x77, 0x00, 0x0B, 0x2F, 0x67, 0x00, 0x07, 0x27, 0x57, 0x00, 0x00, 0x1B, 0x47, 0x00, 0x00, 0x13, 0x37, 0x00, 0x00, 0x0F, 0x2B, 0x00, 0xFB, 0xFB, 0xE7, 0x00, 0xF3, 0xF3, 0xD3, 0x00, 0xEB, 0xE7, 0xC7, 0x00, 0xE3, 0xDF, 0xB7, 0x00, 0xDB, 0xD7, 0xA7, 0x00, 0xD3, 0xCF, 0x97, 0x00, 0xCB, 0xC7, 0x8B, 0x00, 0xC3, 0xBB, 0x7F, 0x00, 0xBB, 0xB3, 0x73, 0x00, 0xAF, 0xA7, 0x63, 0x00, 0x9B, 0x93, 0x47, 0x00, 0x87, 0x7B, 0x33, 0x00, 0x6F, 0x67, 0x1F, 0x00, 0x5B, 0x53, 0x0F, 0x00, 0x47, 0x43, 0x00, 0x00, 0x37, 0x33, 0x00, 0x00, 0xFF, 0xF7, 0xF7, 0x00, 0xEF, 0xDF, 0xDF, 0x00, 0xDF, 0xC7, 0xC7, 0x00, 0xCF, 0xB3, 0xB3, 0x00, 0xBF, 0x9F, 0x9F, 0x00, 0xB3, 0x8B, 0x8B, 0x00, 0xA3, 0x7B, 0x7B, 0x00, 0x93, 0x6B, 0x6B, 0x00, 0x83, 0x57, 0x57, 0x00, 0x73, 0x4B, 0x4B, 0x00, 0x67, 0x3B, 0x3B, 0x00, 0x57, 0x2F, 0x2F, 0x00, 0x47, 0x27, 0x27, 0x00, 0x37, 0x1B, 0x1B, 0x00, 0x27, 0x13, 0x13, 0x00, 0x1B, 0x0B, 0x0B, 0x00, 0xF7, 0xB3, 0x37, 0x00, 0xE7, 0x93, 0x07, 0x00, 0xFB, 0x53, 0x0B, 0x00, 0xFB, 0x00, 0x00, 0x00, 0xCB, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xBF, 0xBB, 0xFB, 0x00, 0x8F, 0x8B, 0xFB, 0x00, 0x5F, 0x5B, 0xFB, 0x00, 0x93, 0xBB, 0xFF, 0x00, 0x5F, 0x97, 0xF7, 0x00, 0x3B, 0x7B, 0xEF, 0x00, 0x23, 0x63, 0xC3, 0x00, 0x13, 0x53, 0xB3, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0xA7, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE3, 0xF7, 0x00, 0x00, 0xCF, 0xF3, 0x00, 0x00, 0xB7, 0xEF, 0x00, 0x00, 0xA3, 0xEB, 0x00, 0x00, 0x8B, 0xE7, 0x00, 0x00, 0x77, 0xDF, 0x00, 0x00, 0x63, 0xDB, 0x00, 0x00, 0x4F, 0xD7, 0x00, 0x00, 0x3F, 0xD3, 0x00, 0x00, 0x2F, 0xCF, 0x00, 0x97, 0xFF, 0xFF, 0x00, 0x83, 0xDF, 0xEF, 0x00, 0x73, 0xC3, 0xDF, 0x00, 0x5F, 0xA7, 0xCF, 0x00, 0x53, 0x8B, 0xC3, 0x00, 0x2B, 0x2B, 0x00, 0x00, 0x23, 0x23, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00, 0x13, 0x13, 0x00, 0x00, 0xFF, 0x0B, 0x00, 0x00, 0xFF, 0x00, 0x4B, 0x00, 0xFF, 0x00, 0xA3, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x33, 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0x97, 0x00, 0xDF, 0x00, 0xFF, 0x00, 0x73, 0x00, 0x77, 0x00, 0x6B, 0x7B, 0xC3, 0x00, 0x57, 0x57, 0xAB, 0x00, 0x57, 0x47, 0x93, 0x00, 0x53, 0x37, 0x7F, 0x00, 0x4F, 0x27, 0x67, 0x00, 0x47, 0x1B, 0x4F, 0x00, 0x3B, 0x13, 0x3B, 0x00, 0x27, 0x77, 0x77, 0x00, 0x23, 0x73, 0x73, 0x00, 0x1F, 0x6F, 0x6F, 0x00, 0x1B, 0x6B, 0x6B, 0x00, 0x1B, 0x67, 0x67, 0x00, 0x1B, 0x6B, 0x6B, 0x00, 0x1F, 0x6F, 0x6F, 0x00, 0x23, 0x73, 0x73, 0x00, 0x27, 0x77, 0x77, 0x00, 0xFF, 0xFF, 0xEF, 0x00, 0xF7, 0xF7, 0xDB, 0x00, 0xF3, 0xEF, 0xCB, 0x00, 0xEF, 0xEB, 0xBB, 0x00, 0xF3, 0xEF, 0xCB, 0x00, 0xE7, 0x93, 0x07, 0x00, 0xE7, 0x97, 0x0F, 0x00, 0xEB, 0x9F, 0x17, 0x00, 0xEF, 0xA3, 0x23, 0x00, 0xF3, 0xAB, 0x2B, 0x00, 0xF7, 0xB3, 0x37, 0x00, 0xEF, 0xA7, 0x27, 0x00, 0xEB, 0x9F, 0x1B, 0x00, 0xE7, 0x97, 0x0F, 0x00, 0x0B, 0xCB, 0xFB, 0x00, 0x0B, 0xA3, 0xFB, 0x00, 0x0B, 0x73, 0xFB, 0x00, 0x0B, 0x4B, 0xFB, 0x00, 0x0B, 0x23, 0xFB, 0x00, 0x0B, 0x73, 0xFB, 0x00, 0x00, 0x13, 0x93, 0x00, 0x00, 0x0B, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, }; case "TILE": { Directory.CreateDirectory(@"Tiles"); uint tileSectionLength = binaryReader.ReadUInt32(); for (int i = 0; i < tileSectionLength / 0x404; i++) { uint unknown = binaryReader.ReadUInt32(); Bitmap tile = new Bitmap(32, 32); for (int j = 0; j < 0x400; j++) { byte pixelData = binaryReader.ReadByte(); byte r = PaletteData[pixelData * 4 + 2]; byte g = PaletteData[pixelData * 4 + 1]; byte b = PaletteData[pixelData * 4 + 0]; Color pixelColor = pixelData == 0 ? Color.Transparent : Color.FromArgb(r, g, b); tile.SetPixel(j % 32, j / 32, pixelColor); } tile.Save(string.Format(@"Tiles\{0}.png", i)); } break; }
ããŸããããŸããïŒ ç§ãã¡ã¯ã2,000ãè¶ ããå¥åŠã§é åçãªã¹ãã©ã€ããæœåºããŸããã 0x00ã®è²ã¯å®éã«ã¯éæã§ããããšã«æ³šæããŠãã ãããããã¯ãçã®ãã¯ã»ã«ããŒã¿ãèŠããšæããã§ãã
ããã¯ç»åããã³ããããããéå±ã§ãããç»åãã¡ã€ã«åã®äžéšãšããŠãããããšã¯ã¹ããŒãããäžè¬çã«èŠãŠãã©ã°ããã³ãŒãããããšã¯ããã»ã©é£ãããããŸããã å°ããªç»åãšããã«å¯Ÿå¿ããæ°åã®è«çãšç¶¿å¯ãªèª¿æ»ã«ããã次ã®ããšãããããŸãã
:
bit0 =
bit1 = ,
bit2 = ,
bit3 = , /
bit4 = , ( , )
bit5 = -
bit6 =
bit7 =
bit8 =
:
bit16 =
bit17 = (????)
bit18 =
bit19 =
:
bit16 = -
bit17 =
bit18 = (???)
bit19 = ( ???)
bit20 =
bit22 =
:
bit16 =
bit17 =
bit18 =
:
bit16 =
-:
bit17 = - ()
bit18 = - (, )
bit19 = - (, )
bit20 = - (, )
bit21 = - (, )
bit22 = - ( , )
bit23 = - ( , )
bit24 = - ( , )
bit25 = - ( , )
bit26 = - ( , )
bit27 = - ( , )
bit28 = - ( , )
bit29 = - ( , )
bit30 = - ()
ããã0ã8ã«å¿ããŠããã16以äžãç°ãªãå€ã§äœ¿çšãããç¹å®ã®ãããã«1ã€ã®å€ã®ã¿ãå«ãŸãããšäºæ³ãããå Žåãæåã¯å°ãæ··ä¹±ããããšã«æ³šæããŠãã ããã
ã«ãŒãïŒé£æ床ïŒãžã§ãã€ãã€ãïŒ
ç®æšãéæããŸãããããŸãŒã³ãããã¯ç 究ã®èå³æ·±ã察象ã®ããã«ãèŠããŸãã 16é²ãšãã£ã¿ã§ãŸãŒã³ã®èšè¿°æ¹æ³ã«æ»ããšããŸãŒã³ãšã³ããªã«ããã€ãã®ãµãã»ã¯ã·ã§ã³ãããããšãããããŸãã ãŸãŒã³ãã¹ãããããã«åæããã«ã¯ãåãŸãŒã³ã«ã€ããŠè©³ããç¥ãå¿ èŠããããŸãã
èªåã§ãã¡ã€ã«ã16é²ãšãã£ã¿ã«ããŒãããªããšããã確èªããããšã¯å°é£ã§ãããIZONãµãã»ã¯ã·ã§ã³ã®é·ãã¯ããªãäžè²«ããŠããŸããã IZONã®åŸã®æåã®4ãã€ãã®é·ãã¯äŒŒãŠããŸãããå®éã«è¿œè·¡ãããšãå®éã«ã¯IZAXãµãã»ã¯ã·ã§ã³èå¥åãè¶ ããŠããŸãã¯IZAXãµãã»ã¯ã·ã§ã³èå¥åãè¶ ããŠã¹ããŒãããŸãã
å€ãã®å Žåããã®ããã»ã¹ã¯è€éãªããºã«ã²ãŒã ããã¬ã€ãããããªãã®ã§ãïŒä¿¡ããããŸãããç§ã¯ãããæžããŠããŸãïŒããæçµçã«ã¯ç§ã«æ°ã¥ããŸããïŒç¹ã«ããããã®ãµã€ãºïŒ9x9ãŸãã¯18x18ïŒã次ã«6ãã€ãã決å®ããå°ããªèŠåºãããããŸãã°ãªããã®æ£æ¹åœ¢ããšã«ããã®åŸã«ç¶ã12ãã€ãæ§é ã®æ°ã決å®ãã16ãããæŽæ°ã
ä»ã®ãµãã»ã¯ã·ã§ã³ãæ··ä¹±ãæããŸããIZAXã¯ãIZX2ããã³IZX3ãšåãé·ã+ 6ã決å®ããŸãã IZX4ã®é·ãã¯äžå®ã§ãé »ç¹ã«çºçããIACTã¯ãã®é·ããçŽæ¥ç€ºããŸãã ãã¹ãŠããŸãšããŠã以äžãååŸããŸãã
4 : "IZON"
4 :
2 : (W)
2 : (H)
1 : ( )
5 : ( )
1 : (0x01 = , 0x02 = , 0x03 = , 0x05 = )
1 : ( )
W*H*6 :
2 : (X)
X*12 :
4 : "IZAX"
2 : (X)
X-6 : IZAX
4 : "IZX2"
2 : (X)
X-6 : IZX2
4 : "IZX3"
2 : (X)
X-6 : IZX3
4 : "IZX4"
8 : IZX4
4 : "IACT"
4 : (X)
X :
4 : "IACT"
4 : (X)
X :
...
4 : "IACT"
4 : (X)
X :
æ£æ¹åœ¢ã°ãªããããšã«6ãã€ããããããšãã€ãŸããããããããŒããããšãã«ã°ãªããã®æ£æ¹åœ¢ã«æžã蟌ãŸããŠãããã®ã«å¯Ÿå¿ããå¯èœæ§ãé«ãããšãããã£ãŠããŸãã æåã®ã«ãŒãã®æåã®æ£æ¹åœ¢ïŒ0x00ã0x00ã0xFFã0xFFã0x01ã0x00ïŒãèŠãã ãã§ããããã¯3ã€ã®16ãããæŽæ°ã§ããããšãã»ãŒç¢ºå®ã§ãããã¿ã€ã«ã¯256ãã¯ããã«è¶ ããŠããŸãïŒã ããã°ã©ã ã®æ©èœãæ¡åŒµããŠããã®æ å ±ã«åºã¥ããŠæœåºããããã¡ã€ã«ãæ¥ç¶ãããšã次ã®ããã«ãªããŸãã
ã«ãŒãïŒ ç§ãã¡ã®æšæž¬ã¯çå®ã®ããã§ãã ã²ãŒã ã«ã¯600æ以äžã®ã«ãŒãããããããããã«ç¬èªã®ã¹ã¯ãªãããšã¹ããŒã ããããŸãã ãã®äžèŠã·ã³ãã«ãªã²ãŒã ã«ã©ãã ãã®åŽåãè²»ãããããã¯é©ãã¹ãããšã§ãã
ãŸãèå³æ·±ãã®ã¯ãIZONãµãã»ã¯ã·ã§ã³ã®æåŸã«ããå€æ°ããªããžã§ã¯ãæ å ±ãã®é·ãã§ãã ãããäžã«ããã¿ã€ã«ã®è¿œå ããããã£ãå®çŸ©ããŠããããã§ãã 16é²ãšãã£ã¿ãŒã§1ã€ã®å·šå€§ãªãã©ã°ã¡ã³ããšããŠããŒã¿ã調ã¹ãããšã¯ããŸã圹ã«ç«ã¡ãŸãããã12ãã€ãã®ã¬ã³ãŒããšããŠè¡šã«ããŠãããç»åãšæ¯èŒãããšãããã€ãã®ãã¿ãŒã³ãçŸãå§ããŸãã
N/AXYN/A
09 00 00 00 04 00 04 00 01 00 01 00
09 00 00 00 09 00 09 00 01 00 05 00
09 00 00 00 0F 00 09 00 01 00 09 00
0F 00 00 00 09 00 0D 00 01 00 5D 00
06 00 00 00 0A 00 03 00 01 00 AE 04
06 00 00 00 0A 00 04 00 01 00 AE 04
åã¬ã³ãŒãã6ã€ã®16ãããæŽæ°ãšããŠåŠçããå Žåãæåã®ã¬ã³ãŒãã¯ã¿ã€ããã©ã°ã«ãªãã3çªç®ãš4çªç®ã¯ããã座æšã«ãªããŸãã 2çªç®ãš5çªç®ã®å€ã¯åžžã«åãå€ïŒ0x0000ãš0x0001ïŒã§ãããåŸè ã¯éåžžã«ä¹±éã§ãããããåŒæ°ã®ããã«èŠããŸãã ãããã®ã¬ã³ãŒããæãã¿ã€ã«ã確èªãå§ãããšãã¿ã€ã0x09ã®åã¬ã³ãŒãã¯ãã¢ã瀺ããŸããåŒæ°ã¯ãã²ãŒã ã§ãã¢ãã€ãªããã«ãŒãã®IDã§ãã
ããŸããŸãªã¿ã€ãã®ã¬ã³ãŒãã察å¿ãããã®ãèŠã€ããããšã¯éåžžã«å調ãªã¿ã¹ã¯ã§ãããæå·åãããŠããªãã¬ã³ãŒãã¿ã€ããèŠã€ãã£ããšãã«å¯Ÿè©±ãäžæåæ¢ããããã«ããã°ã©ã ã«æããããšã«ãããããŒã¿ãã¡ã€ã«å ã®åããŒã¿ã¿ã€ããäœç³»çã«èª¿ã¹ãããšãã§ããŸãã ã¡ãã£ãšããããžãã¯ãšåœãŠæšéã§ã次ã®ãã®ãåŸãããŸãã
ã¿ã€ãID | 説æ | åŒæ° |
0x00 | ããªã¬ãŒäœçœ® | |
0x01 | ã¹ããŒã³ãã€ã³ã | |
0x02 | ãã©ãŒã¹ã«é¢é£ããå Žæ | |
0x03 | è¿œå ã«ãŒããžã®èŒžé | ãã©ã³ã¹ããŒãããã¬ãŒã€ãŒãéã¶ã«ãŒã |
0x04 | ã¡ã€ã³ã«ãŒããžã®èŒžé | ãã©ã³ã¹ããŒãããã¬ãŒã€ãŒãéã¶ã«ãŒã |
0x05 | ãã¬ãŒã€ãŒããã±ãŒã¿ãŒã«äžãããªããžã§ã¯ã | |
0x06 | ã¢ã€ãã ããã¯ã¹ | å éšã«ãããªããžã§ã¯ã |
0x07 | ããºã«NPC | 察å¿ããæåã®ã¿ã€ã«ID |
0x08 | æŠåšç®± | äžã«æšªããã£ãŠããæŠåš |
0x09 | ãã¢ïŒå ¥ãå£ïŒ | ãã¢ãæ¥ç¶ãããŠããã«ãŒã |
0x0A | ãã¢ïŒåºå£ïŒ | |
0x0B | æªäœ¿çš | |
0x0C | ããããã³ã° | |
0x0D | ãã¬ããŒã | |
0x0E | ææããŽãããã®XãŠã€ã³ã° | ã«ãŒãX-Wingã¯ãã¬ã€ã€ãŒã |
0x0F | ææããŽããžã®XãŠã€ã³ã° | ã«ãŒãX-Wingã¯ãã¬ã€ã€ãŒã |
ã¹ã¯ãªããïŒé£æ床ïŒãžã§ãã€ãã¹ã¿ãŒïŒ
ã¿ã€ã«ãšã«ãŒãã®åœ¢åŒãæ±ã£ãã®ã§ãç¹å®ã®ã«ãŒãã®ã²ãŒã ãã¬ã€ããžãã¯ãå¶åŸ¡ããã¹ã¯ãªããèšèªã®åãæ±ããå§ããã®ã¯è«ççã§ãã ASCIIæåã§æºããããã³ãã³ãã«äŒŒããã©ã°ã¡ã³ãããããããããããããã»ã©é£ãããªãã§ããã...
æ®å¿µãªããã解èªãé£ããã¹ã¯ãªããã§ã¯å€ãã®ããšãèµ·ãããŸãã ã¿ã€ã«ãšã«ãŒãã解èªããåŸã¯èŠèŠçã«æããã§ããã®ãšã¯ç°ãªããã¹ã¯ãªããã¯å€æ°ãšã²ãŒã ãã¬ã€ã®ç¶æ ã䜿çšããŸããããããã¯èŠãã確èªãããããã®ãããã»ã©ç°¡åã§ã¯ãããŸããããã®ã²ãŒã ã®ãªããŒã¹éçºã«éåžžã«èå³ãããå Žåã¯ãã¬ãã«ãããŒããã芳å¯ãããã²ãŒã ãã¬ã€ã®åäœãã¹ã¯ãªããå ã®ããŒã¿ãšçžé¢ãããããšããå§ãããŸããããã®æºåã¯ã§ããŠããŸãããçµäºããåã«ãç§ãã¡ãåŠãã ããšã§äœããè©ŠããŠã¿ãã...
Modã®äœæ
ã«ãŒãçªå·95ã®IZONãµãã»ã¯ã·ã§ã³ã¯ãããŒã¿ãã¡ã€ã«ã®ãªãã»ãã0x266512ããå§ãŸããŸãã20ãã€ããã¹ãããããŠãããããŒã¿ãååŸããããã«6 *ïŒ18 * 9 + 12ïŒãã€ããã¹ãããããŠãã€ã³ãïŒ12ã11ïŒã«ç§»åã§ããŸãããã®åŸã16é²ãšãã£ã¿ãŒã䜿çšããŠã1985ããã³1986ã¿ã€ã«ã®å€ãåã°ãªããã®ãå¹³åãäºä¹å€ã«ãªã»ããããã²ãŒã ããŒã¿ãã¡ã€ã«ãæžãæãããšã次ã®ããã«ãªããŸãã
ã²ãŒã ã¿ã€ã«ã®ã»ããã«ã¹ããŒãã«ãŒãããçç±ã¯ããããããŸãããããšãŒãã¯æé«ã®å¥³ã®åãšããŒãã«è¡ããšç¢ºä¿¡ããŠããŸãã
ATTACHMENTïŒãŠãŒã¶ãŒsehuggããã«ãŒã®ãã¥ãŒã¹ã«ã¯ãæ ç»1978幎ãããšããäºå®ã«ããã®ãã·ã³ãå ±åãããã³ã«ããããã®æ€çŽ¢ã§å€ãããïŒã«ãŒã¯ã»ã¹ã«ã€ãŠã©ãŒã«ãŒãæŒããïŒããŒã¯ã»ããã«ãäž»æŒããŠããŸããã€ãŒã¹ã¿ãŒãšãã°ïŒ
çµè«ãšããŠ
æããã«ãå¿èåãããã°ããã®ããŒã¿ã䜿çšããŠããã«å€ãã®ããšãã§ããŸããã²ãŒã ããŒã¿ãã¡ã€ã«ã®ã»ãšãã©ããªããŒã¹ãšã³ãžãã¢ãªã³ã°ããåŸãé©ãã»ã©ç°¡åã«ãŒãããåäœæãããïŒä»ã§ã¯éåžžã«å°ããªãŠã£ã³ããŠã§åäœããŸãïŒãã²ãŒã ã®ã³ã³ãã³ãããšã¯ã¹ããŒããç·šéãåããã±ãŒãžããŠmodãäœæããããŒã«ãäœæããŸãããªããããå¿ èŠãªã®ãããããŸããããééããªããã®ãããªæ©äŒããããŸããå°ãªããšããä»ã§ã¯å¥åŠã§èŠæ ãã®ããã¹ã¿ãŒãŠã©ãŒãºã¹ãã©ã€ãã®ã¯ãŒã«ã§å æ¬çãªã»ããã«ã¢ã¯ã»ã¹ã§ããŸããå€ãã³ã³ãã¥ãŒã¿ãŒã²ãŒã ã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ããŒã¿ãã¡ã€ã«åœ¢åŒã«ã€ããŠèå³æ·±ãããšãåŠãã ããšãé¡ã£ãŠããŸãã