ã²ãŒã ãšã³ãžã³ã®å
éšã«å
¥ããããããããããçš®é¡ã®ã³ã³ãã³ããåŒãåºãæ¹æ³ã«é¢ããäžé£ã®èšäºãç¶ããŸãã åå ããã°ããã®äººãã¡ã®ããã«ãèŠèŠçãªçç·šå°èª¬ã®ãããªé¢çœããžã£ã³ã«ãç 究ããããšãç°¡åã«æãåºããŸãã
ããžã¥ã¢ã«ããã«ãšã³ãžã³Yukaã®ã¢ãŒã«ã€ãã解æããæ¹æ³ãåŠãã§ããããªãã®æéãçµã¡ãŸãããããã§ãç§ãã¡ãããã§èŠã€ããæãèå³æ·±ããã®ãå®éã¯ã¹ã¯ãªãããåãäžãããšããæ¥ãŸããã ã¹ã¯ãªããã«ã€ããŠã¯ããã¡ã€ã«ãå«ãã¢ãŒã«ã€ããããã¯ããã«è€éãªåé¡ã§ããããšãããã«èŠåããŸãããããã£ãŠã1ã€ã®èšäºã§ãããç解ããããšã¯ã§ããŸããããä»æ¥ã¯ãã¹ã¯ãªãããã©ã®éšåã§æ§æãããããã¹ããªãœãŒã¹ã
ãã€ããªãã³ãã®æ·±ãã«å
¥ãåã«ãããžã¥ã¢ã«ããã«ã®ãšã³ãžã³ã®ã»ãšãã©ãã©ã®ããã«æ©èœããããæšå®ããŸãããã èŠèŠçãªçç·šå°èª¬èªäœã¯ãããã¹ãïŒè±éã察話ãäžéç©èªã®çºèšïŒãã°ã©ãã£ãã¯ã¹ãããã³é³å£°ã§æ§æãããŠããŸãã ãŠãŒã¶ãŒã«åçŸããã«ã¯ãäœããã®å¶åŸ¡ã¢ã¯ã·ã§ã³ã䜿çšããŠããããã¹ãŠããŸãšããå¿
èŠãããããšã¯æããã§ãã çè«çã«ã¯ããã¹ãŠãçŽæ¥exeãã¡ã€ã«ã«çž«ãããšã¯å¯èœã§ããã99ïŒ
ã®ã±ãŒã¹ïŒå€§äžå€«ãåãå人çã«ã¯100ïŒ
ã«èŠãããïŒã§ã¯ããŸã ãããè¡ããŸãããããã®ãããªæ瀺ãå¥åã®ã¹ã¯ãªããããã°ã©ã ãšããŠåå¥ã«ä¿åããŸãã ååãšããŠãã¹ã¯ãªããã¯æ¬¡ã®ãããªç¹å¥ãªããã°ã©ãã³ã°èšèªïŒãšã³ãžã³åºæïŒã§èšè¿°ãããŠããŸãã
$ tarot = 0 $ memory = 0 scene bg01_1 with dissolve play music fadein (2.0) play ambience fadein (3.0)
ããã¯Ren'Pyã® 1ã€ã®VNããã®ã¹ã¯ãªãããœãŒã¹ã®æçã§ã-æã人æ°ã®ããç¡æ/ç¡æãšã³ãžã³ã®1ã€ã§ãã ãã®èšäºã§ã¯ãRen'Pyèªäœãã©ãã ãåªããŠããããšãã質åã¯å¥ãšããŠãä»ã®ãšããã¯ãããžã¥ã¢ã«ããã«ã¹ã¯ãªããã«éåžžå«ãŸããŠãããã®ãšãèŠã€ããå¿
èŠããããã®ã«æ³šç®ããŸãããã
ãã¡ãããçŸå®ã®äžçã§ã¯ãã¹ã¯ãªããã®ãœãŒã¹ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããªãããšããããããŸãã 人ã
ã¯ãã§ã«ïŒã€ã³ã¿ãŒããªã¿ãŒã§ã¯ãªãïŒçŽ50幎éã³ã³ãã€ã©ãŒã®äœææ¹æ³ãåŠãã§ãããããéåžžãã¹ã¯ãªãããœãŒã¹ã¯ãã€ããªã³ãŒãïŒãã€ãã³ãŒãïŒã«ã³ã³ãã€ã«ãããããžã¥ã¢ã«ããã«ãšã³ãžã³å
ã®ä»®æ³ãã·ã³ã«ãã£ãŠå®è¡ãããŸãã 幞éãªããšãããã人æ°ã®ããäžéšã®ãšã³ãžã³ã§ã¯ãåæ³çã«äœ¿çšã§ããããŒã«ãŸãã¯éåžžã«åæ³çã«äœ¿çšã§ããªãããŒã«ïŒãããã¬ãŒãã³ã³ãã€ã©ãŒãéã³ã³ãã€ã©ãŒãã¹ã¯ãªããããªããŒã¿ãŒãªã©ïŒããããŸãããå€ãã®å Žåã人çã¯ããã»ã©åçŽã§ã¯ãããŸããã
ããã§ã¯ã以åã®èšäºã æãã島äºã®å
åäž ãã§æ¢æ±ãå§ããããžã¥ã¢ã«ããã«ã«æ»ããŸããã ã æ¢ã«ã¢ãŒã«ã€ãã解åããå
éšãã°ã©ãã£ãã¯ã¹ããµãŠã³ããé³æ¥œããããŠæãéèŠã§ç解ã§ããªã-æ¡åŒµåã.yksã®ãã¡ã€ã«ãèŠã€ããŸããã ããããã圌ãã¯çç·šå°èª¬ã®ã¹ã¯ãªãããæ§æããŠããŸãã ãšããã§ãå€ãã®ãã¡ã€ã«ããããŸãïŒ
YKS/ScriptStart.yks YKS/trial/Yoyaku.yks YKS/trial/trial_00100.yks YKS/trial/trial_00200.yks YKS/all/all_00010.yks ... YKS/all/all_02320.yks
YKS / all /ã«ããã®ã¯103ãã¡ã€ã«ã®ã¿ã§ãã è©Šçšçãå®å
šã«æ£çŽã«ããŠã³ããŒãããŠæ€èšããããšãæãåºãããŠãã ãã-ããããã©ãããéçºè
ã¯å°ãé¢åã§ãã©ãããè©Šçšç/ã¹ã¯ãªããã«ã¯è©Šçšçãšãã¹ãŠ/å®å
šçãå«ãŸããŠããããã§ãã
äžè¬ã«ãæå°éã®çµéšã«åºã¥ããŠãããžã¥ã¢ã«ããã«ãšã³ãžã³ã®ãã«ããŒã«ã¯2ã€ã®ã¢ãããŒãããããŸãããã¹ãŠã1ã€ã®å·šå€§ãªãã¡ã€ã«ã«è©°ã蟌ãããå€æ°ã®ãã¡ã€ã«ããããããããã«ç¬èªã®ã·ãŒã³ãŸãã¯ã€ãã³ãããããŸãã 2çªç®ã®ããã§ãã ããã«ããŸã å¥ã®ScriptStart.yksããããŸãããããèªäœã¯ã»ãšãã©é¢å¿ããããŸããïŒå®éãéçºè
ã¯å€ãã®å Žåããšã³ãžã³ãå¯èœãªéãå€çšéã«ããããããçš®é¡ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãmenus-load-save-optionsãªã©ãå®è£
ããããšãæãã§ããŸã.dã ãŸãããã®ã¹ã¯ãªããèšèªã«ãã£ãŠã ããªãã¯ããã«å¯ŸåŠããããšãã§ããŸããããããéå±ã§å®ãããããŸããããããã£ãŠãç§ã¯è§ã§éçãåããã²ãŒã ã®å®éã®ã¹ã¯ãªããããå§ããããšãææ¡ããŸãã
è¡šé¢çãªç®èŠæ€æ»ããäœãèšããã§ããããïŒ ç¬¬äžã« ã²ãŒã ã¯Windowsäžã§å®è¡ããããããå®è¡ããŠå€èŠ³ã確èªããããšã¯éåžžã«å¯èœã§ãã nçªç®ã®æéãè²»ãããWindowsãã·ã³ãèŠã€ããŠèµ·åããæ°ããã²ãŒã ã®ã¹ã¿ãŒããã¿ã³ãã¯ãªãã¯ããçŽåŸã«äœãèµ·ãããã確èªããŸãã
ç©èªã®å§ãŸããç§ãã¡ã«åºäŒã£ãããã§ãã ããã«ã¯èæ¯ãããïŒBGã§ç°¡åã«æ€çŽ¢ããåŸ/ãã®èæ¯ãæã€bg01_01.pngãã¡ã€ã«ããããŸãïŒãããã¹ãããããŸãã ãã®ããã¹ãã¯ãŸã å¿
èŠãªã®ã§ãç»é¢ããåå
¥åãã䟡å€ããããŸãã
æããå§åŠ¹ã®å
éå¥ãã»ã¯ã¹ããããäœéšçVer2ãããŠã³ããŒãé ãããããšãããããŸãã
2ã€ã®ãã€ã³ãïŒ
æ¥æ¬èªããã¹ãã®å
¥åã«åé¡ãããå Žåã¯ããã®åé¡ã倧å¹
ã«ç°¡çŽ åãã3ã€ãŸãã¯4ã€ã®ããªãã¯ãç¿åŸããããšããå§ãããŸããå°ãå¿è匷ããæ³¢ç·ããŸã£ããããããªã人ã§ãæ¥æ¬èªããã¹ããå
¥åã§ããããã«ããŸãã åã¢ã€ã³ã³ãåå¥ã«æ€èšããŸãã
- 次ã®ãããªè¡šã®å¥èªç¹ãã©ããã確èªããŸããã...ããïŒïŒã-éããããã°ã³ããŒããŸãã ããã§ã¯ããã³ã³ãããããããããããã³æ¬åŒ§ã®äž¡æ¹ãå
·äœçã§ãããšããäºå®ã«æ³šæããŠãã ããã
- ããã§ãªãå Žåã¯ããã®è¡šãèŠãŠãã ããïŒããããããããããããããããã¡ã€ãŠãšãªã«ã¬ãã®ã¯ã²ãµãžãŸã¿ãããããããããããããããã
- 次ã«ã次ã®ãããªãã®ãæ¢ããŸãïŒã¢ã€ãŠãšãªã«ãã¯ã±ã³ãµã·ã¹ã»ãœã¿ãããããããããããããããããã ã¡ã¢ã¢ã€ãŠãšã©ãªã«ã¬ãã¯ã¯ã¯
- ããã圹ã«ç«ããªãå Žå-äŸãã°ãæããã£ããããã-ããã¯æŒ¢åã§ãã 次ã«ããã©ã³ãã300ã500ïŒ
å¢ãããŠããã¹ãŠã®å°ããªè©³çŽ°ãã¯ã£ãããšèŠããããã«ãããã©ãžã«ã«ã«ããæ€çŽ¢ãã»ã¯ã·ã§ã³ã§jisho.orgã«ã¢ã¯ã»ã¹ããŸãã ããã§ãæ§æéšåïŒã©ãžã«ã«ïŒã®è¡šãèŠãŠãèŠããã®ãšåæ§ã®ãã®ãæ¢ããŸãã ããšãã°ãæ-çãçæ³ã®åŸã圌ã¯ã®äžã«ã³ã³ããŒãã³ããããããšãããããŸãã-ãã®ã³ã³ããŒãã³ãã§ãã¿ã³ãæŒãç¶ãããšãæ°åã®ã¢ã€ã³ã³ãæ°ååãããããŸããã 圌ãã®ç®ãéããŠèŠãŠãã»ã¯ã·ã§ã³ã10ãã®åé¡ã§æåãã5çªç®ã®ãµã€ã³ãèŠã€ããŠãã ããïŒããã¯æãŸãããã®ã§ãã
- Ver2ãVSer2ããããã¯ããããŸãã-ãããã¯ç°ãªããã©ã³ãã§ã¯ãªããããããå
šè§æåã§ããããšã«æ³šæããŠãã ãã-Unicodeã§ã¯ãU + FF01..U + FF5EãªãŒãžã§ã³ã®ã©ããã«ãããŸãïŒã
2ã€ã®ããšã«ã€ããŠããã¹ããå¿
èŠã«ãªããŸãã ãŸããããã¹ããšããŠãäœãèµ·ãã£ãŠããã®ããç解ããããã«ïŒæ¥æ¬èªã話ããªããŠããGoogle翻蚳ã«æ¿å
¥ããŠããã®ã²ãŒã ã®è©ŠçšçãããŠã³ããŒãããŠãããããšã«æè¬ããŸã=>ã€ãŸããããã¯æ¬åœã®å§ãŸãã§ã¯ãããŸãããããããããã³ç¹å®ã®çŽ¹ä»ããèè
ãããïŒã 次ã«ããã®ããã¹ããŸãã¯ãã®äžéšãååŸããŠShiftJISã«å€æãïŒåã®ããŒãã§èŠãããã«ããã¹ãŠããã®ãšã³ã³ãŒãã£ã³ã°ã«å«ãŸããå¯èœæ§ãé«ãïŒããã¡ã€ã«ã§æ€çŽ¢ã§ããŸãã æåŸããããŒã¹ãåããæ¢ããŠãããã®ãæºåããŸãã
$ echo 'ããŠã³ããŒãé ãããããšãããããŸã' | iconv -t sjis | hd 00000000 83 5f 83 45 83 93 83 8d 81 5b 83 68 92 b8 82 ab |._.E.....[.h....| 00000010 82 a0 82 e8 82 aa 82 c6 82 a4 82 b2 82 b4 82 a2 |................| 00000020 82 dc 82 b7 |....|
ãã¹ãŠã®.yksãã¡ã€ã«ã§ãã®è¡ãæ¢ããŠããŸããããã¡ããèŠã€ãããŸããã ããã»ã©åçŽã§ã¯ãããŸããã
å¥ã®äœè«ãè¡ã£ãŠã¿ãŸããããShiftJISãšã³ã³ãŒãã®ä»çµã¿ãç解ããŸãããã æ¥æ¬èªã§ã¯ãæããã«ããšãŒããããããã¯ããã«å€ãã®ã¢ã€ã³ã³ããããŸããShiftJISã§ã¯ãåã¢ã€ã³ã³ã¯å°ãªããšã1ãã€ããæ倧2ãã€ãã§ãšã³ã³ãŒããããŸãã ãã®ãã¬ãŒããããããããã«ããã€ã00..7Fã®å€ã¯ASCIIãšåãã§ããããã€ã81..9F E0..EAã¯ãããã2ãã€ãã®çµã¿åããã§ããããšãæå³ããŸãããŸããäºææ§ã®ããã«ããã€ããªèªã¿åããšåæ§ã«ã2çªç®ã®ãã€ãã«ã¯å€ããããŸããã ã40ãFFã®éã§ãã
æ¥æ¬èªãžã®ãã€ã¯ããšã¯ã¹ã«ãŒã·ã§ã³ïŒèšèªã§ã¯3ã€ã®ã°ã«ãŒãã®ã¢ã€ã³ã³ã䜿çšãããŸãã
- ã²ãããª-次ã®ããã«ãªããŸãïŒããããšãããããŸã-ããªãã¡ äžžã¿ã垯ã³ãã·ã³ãã«ãªã©ã€ãã£ã³ã°ãã©ãŒã ã ã50åã®ã¢ã€ã³ã³ããããŸãããã倧i =ããå°i =ãããªã©ãããããçš®é¡ã®ããªãšãŒã·ã§ã³ããããŸãã 1é³ç¯= 1æåã
- ã«ã¿ã«ã-次ã®ããã«ãªããŸãïŒããŠã³ããŒã-ããªãã¡ å»ãŸããæ£æ¹åœ¢ã®ã·ã³ãã«ãªå°å·ãã©ãŒã ã é³ã¯ãã¹ãŠã²ãããªãšã»ãŒåãã§ãããã»ãšãã©åçšãããåèªãé²é³ããããã«äœ¿çšãããŸãïŒããŠã³ããŒã= da-un-loïŒ-do = downloadïŒã
- 挢å-次ã®ããã«ãªããŸãïŒäœè©Šç-i.e. ååãšããŠãããŸããŸãªããŒããšãã£ããã®ããŒãããã®è€éãªæ£æ¹åœ¢ã®æ§é ã 圌ãã«ãšã£ãŠæãé£ããããšã§ããããã¯åœŒãã®å€ãã§ãã
ããã«ãå¥èªç¹ãããããã©ã¹ãŸãã¯ãã€ãã¹ã¯ãšãŒãããèšèªãšåãã§ããããããã³ã³ãããçç¥èšå·ãåŒçšç¬Šãã
ãæå笊ãçå笊ãªã©ã ããããéåžžãã®ã£ããã¯ãããŸããã ç§trickã¯ãããã¹ãã絶ãã挢åã§èšé²ããããéèŠãªãåèªãšã²ãããªã§èšé²ãããç²åãšäº€äºã«ãªãããã®çµæããã®æ··åç©ãå°ãªããšãäœããã®æ¹æ³ã§åé¡ã§ããããšã§ãã ããšãã°ãã²ãŒã ãæããå§åŠ¹ã®å
éå¥ãã®ååãåããŸãã
- æ-挢å
- ãã-ã²ãããª
- å§åŠ¹-挢å
- ã®-ã²ãããª
- å
éå¥-挢å
ããã«ãããæçµçã«äœãåŸãããŸããïŒ éåžžã«ç°¡åïŒé »åºŠè¡šã æ¥æ¬èªã®æåã®ããžã¥ã¢ã«ããã«ã®æ¢è£œã®ã¹ã¯ãªãããæã«å
¥ããUnicodeã®3ã€ã®ã°ã«ãŒããã¹ãŠã®ç¯å²ã®å¢çããã°ãã調ã¹ãŠããã®ã¹ã¯ãªãããå®è¡ããŸãïŒãããã§ããããªããïŒã
stats = {} $stdin.each_char { |c| t = case c.ord when 0x3041..0x309F then :hiragana when 0x30A0..0x30FF then :katakana when 0x4E00..0x9FCC then :kanji end stats[t] ||= 0 stats[t] += 1 } p stats
åºåã®ãããªãã®ãåŸãããŸãïŒ
{nil=>72384, :kanji=>5731, :hiragana=>15377, :katakana=>2241}
ã€ãŸã éåžžã®ããã¹ãã¯ãçŽ25ïŒ
ã®æŒ¢åã65ïŒ
ã®ã²ãããªã10ïŒ
ã®ã«ã¿ã«ãã§ãã
ããŒã«ãçºèŠããä»äºã«çã£åããé£ã³èŸŒãæãæ¥ãããã§ãã æ°ãããªãŒãã³ãœãŒã¹ããŒã«Kaitai Structã䜿çšããŠãç解ã§ããªãæ§é ã®ãã€ããªãã¡ã€ã«ãåæããããšãç°¡åã«æãåºãããŠãã ãããããã«ããããã³ãã¬ãŒããããŒã¯ã¢ããèšèªã§èšè¿°ãããã¡ã€ã«ã«é©çšããŠãããªãŒå
ã®æ£ã«é
眮ãããã³ã³ãã³ãããã°ããèŠèŠåã§ããŸãã¡ã¬ããŒãã¹ãšããŠã-ã»ãŒãã¹ãŠã®äžè¬çãªããã°ã©ãã³ã°èšèªã§ãã³ãã¬ãŒãããœãŒã¹ã«çŽæ¥ã³ã³ãã€ã«ããŸãïŒåã®èšäºã®å·ç以æ¥ãã«ã€ã¿ã€ã¹ãã©ã¯ãã¯JavaãJavaScriptãPythonãRubyã ãã§ãªããC ++ãCïŒãPerlãPHPããµããŒããå§ããŸããïŒã ã€ãŸãããããèšèªã®ããããçš®é¡ã®ãªã¹ããèŠããšãããã10ãå®å
šã«ã«ããŒãããŠãããããã20ããããã¡ã€ã³åºæã®ãã®ããšããªããšãDelphiãVisual Basicã¯ååã§ã¯ãããŸããïŒèª°ããªããŒã¹ãšã³ãžãã¢ãªã³ã°ãè¡ããšã¯æããŸãããïŒå€ä»£ã®Visual Basicã¯.NETã§ã¯ãããŸããïŒãSwift and Goã
èšäºã®æåã®éšåã§Kaitai Structãã³ãã¬ãŒãã®åºæ¬çãªæ§æãç 究ããã®ã§ããããäœã§ããããèŠéãã/å¿ãã人ã¯ããããããç解ããã¡ã¢ãªã§ãªãã¬ãã·ã¥ããæã§ãã
ãã®ããã3ã4åã®ãã¡ã€ã«ã®ãã³ãããã°ãã確èªãããã®ãããªãã³ãã¬ãŒããåºçºç¹ãšããŠé©ããŠããããšãç解ããŸãã
meta: id: yks application: Yuka Engine endian: le seq: - id: magic contents: ["YKS001", 1, 0] - id: magic2 contents: [0x30, 0, 0, 0, 0, 0, 0, 0, 0x30, 0, 0, 0] - id: unknown1 type: u4 - id: unknown2 type: u4 - id: unknown3 type: u4 - id: unknown4 type: u4 - id: unknown5 type: u4 - id: unknown6 type: u4 - id: unknown7 type: u4
YKC圢åŒã§ããã«é¡æšã§ããŸãã ãªããªã æåã«ãããããŒãã®èª¬æãããããã®é·ãããå§ãŸããé«ã確çã§magic2ã®ãã¹ãŠã®å Žæã«ããåºå®ã®0x30ãå
ã®ããããŒã®é·ãã§ããããã0x30ãŸã§ã®ãã¹ãŠãäžåºŠã«èªãããšãææ¡ããŸãã 7ã€ã®æ°åãå€æããŸããããä»ã§ã¯ãããäœã§ããããæšæž¬ããããšããŸãã
Yoyaku.yksã®å ŽåïŒãã¡ã€ã«èªäœã¯27741ãã€ãïŒïŒ
[.] @unknown1 = 1845 [.] @unknown2 = 7428 [.] @unknown3 = 795 [.] @unknown4 = 20148 [.] @unknown5 = 7593 [.] @unknown6 = 25 [.] @unknown7 = 0
trial_00100.yksïŒãã¡ã€ã«91267ãã€ãïŒã®å ŽåïŒ
[.] @unknown1 = 6433 [.] @unknown2 = 25780 [.] @unknown3 = 2376 [.] @unknown4 = 63796 [.] @unknown5 = 27471 [.] @unknown6 = 5 [.] @unknown7 = 0
ãŸããæ¯èŒã®ããã«ããã¹ãŠã®ãã¡ã€ã«ãããšãã°all_00010.yksïŒ12968ãã€ãïŒïŒ
[.] @unknown1 = 933 [.] @unknown2 = 3780 [.] @unknown3 = 353 [.] @unknown4 = 9428 [.] @unknown5 = 3540 [.] @unknown6 = 1 [.] @unknown7 = 0
äœãèŠããïŒ ãŸãããã¡ã€ã«ã®ãªãã»ããããµã€ãºã®ãããªå£®å€§ãªãã®ã§ãããªããªãã ãã¡ã€ã«ãµã€ãºã91 Kã®å Žåãæ°å€ã¯25ã63 Kã®ç¯å²ã§ã12 Kã®ãµã€ãºã¯3ã9 Kã®ç¯å²ã§å€åããŸãã ããèŠããšããªãã»ãããšãµã€ãºã¯ãunknown2ãunknown4ãunknown5ã®ã¿ã§ããå¯èœæ§ãé«ãããããã¯4ã€ã«åå²ãããéåžžã«å€§ãããªã£ãŠããŸãã 第äºã«ãunknown7ã¯åžžã«0ã®ããã§ãã第äžã«ãunknown6ã¯éåžžã«åºåçã«äœããèšå®ããŠããããã§ãã ããã¯ãããšãã°ãå€æ°çšã®ä»®æ³ãã·ã³ã®äºçŽã¡ã¢ãªã®ãµã€ãºãå€åããã·ãŒã³/ã¹ãã©ã€ã/èæ¯ã®æ°ããŸãã¯ä»ã®äœãã§ãã
0x30ã®çŽåŸãèçŒã§ãã人éã®16é²ãšãã£ã¿ã§ã¯ãå¢å ããïŒãŸãã¯ã»ãšãã©åžžã«å¢å ããïŒããŒãã«ã衚瀺ãããŸãã ããã¯ã»ãšãã©ãã€ãã³ãŒããã®ãã®ã§ã¯ãããŸããããã€ãã³ãŒãã®ç¹åŸŽã¯ãåãã·ãŒã±ã³ã¹ã®äžå®ã®ç¹°ãè¿ãã ãã§ãã ããã¯ããããããã€ãã®ãªãã»ããã§ããããŸããããšãã°ããã€ãã³ãŒãã®ã³ãã³ãã®å
é ãå¯å€é·ã®è¡ã®å
é ãŸãã¯æ«å°Ÿãªã©ãå®çŸ©ãããªãã»ããã§ãã äžæãªå€ã¯7ã€ãããŸãããããã¯ããã»ã©å€ããããŸãã-調ã¹ãŠããã®ãã¡ã®1ã€ã次ã®ããã«ãªã£ãŠãããã©ããã確èªããŸãããã
- ãã®ã»ã¯ã·ã§ã³ã®é·ã
- ãã®ã»ã¯ã·ã§ã³ã®çµããã®çµ¶å¯Ÿãªãã»ãã=æ°ããã»ã¯ã·ã§ã³ã®å§ãŸã
- ããããå
ã®4ãã€ãæŽæ°ã®æ°
ã»ãŒæåã®è©Šã¿ã¯éåžžã«ããŸãé©åããŸããunknown1ã¯ãã®ã»ã¯ã·ã§ã³ã®èŠçŽ ã®æ°ã§ãããunknown2ã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã®å
é ãžã®ãã€ã³ã¿ãŒã§ããããšãããããŸãã ãããã£ãŠãå®éã«ã¯unknown2 = 0x30 + unknown1 * 4ã®ããã§ããããã«èª¬æãè¿œå ããåæã«ããããŒãæ瀺çã«éžæãããããããŒã¿ã€ãã«ç§»åããéããã»ã¯ã·ã§ã³sect1..sectXã®åŒã³åºããéå§ããŸãã
seq: - id: header type: header - id: sect1 size: header.sect2_ofs - 0x30 type: sect1 types: header: seq: - id: magic contents: ["YKS001", 1, 0] - id: magic2 contents: [0x30, 0, 0, 0, 0, 0, 0, 0, 0x30, 0, 0, 0] - id: sect1_qty type: u4 - id: sect2_ofs type: u4 - id: unknown3 type: u4 - id: unknown4 type: u4 - id: unknown5 type: u4 - id: unknown6 type: u4 - id: unknown7 type: u4 sect1: seq: - id: entries type: u4 repeat: expr repeat-expr: _root.header.sect1_qty
ãã®çµæãtrial_00100ã¯æ¬¡ã®ããã«ãªãå§ããŸãã
[-] @header [.] @magic = 59 4b 53 30 30 31 01 00 [.] @magic2 = 30 00 00 00 00 00 00 00 30 00 00 00 [.] @sect1_qty = 6433 [.] @sect2_ofs = 25780 [.] @unknown3 = 2376 [.] @unknown4 = 63796 [.] @unknown5 = 27471 [.] @unknown6 = 5 [.] @unknown7 = 0 [-] @sect1 [-] @entries (6433 = 0x1921 entries) [.] 0 = 6 [.] 1 = 7 [.] 2 = 3 [.] 3 = 3 [.] 4 = 4 ... [.] 6425 = 2371 [.] 6426 = 2372 [.] 6427 = 34 [.] 6428 = 1 [.] 6429 = 2373 [.] 6430 = 2374 [.] 6431 = 1 [.] 6432 = 2375
å®éããããã¯åãªãå¢å ããå€ã§ã¯ãªãããã€ãã³ãŒãã§ããå¯èœæ§ããããŸãã ãã®ãã¡ã€ã«ã§ã¯ãé¡èãªå¢å æ°ã¯0ãŸãã¯1ãã2375ã«å¢å ããããã«èŠããŸããçªç¶ãunknown3 = 2376ã¯ãããã®å€ã®æ°ã«éåžžã«äŒŒãŠããŸãã ã€ãŸã ãã€ãã³ãŒãã¯ã2376ã®ç°ãªãå€ïŒæããã«0ãã2375ãŸã§ïŒãããå¥ã®ããŒãã«ãåç
§ããŸãã äœã ããïŒ
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãç»é¢3ã4ã§äœãèµ·ããããèŠãŠãããŸãã
ç§ã®æèŠã§ã¯ããããã16ãã€ãïŒ1è¡ïŒã®é·ãã®ã¬ã³ãŒãã§ããããšã¯å€ããå°ãªããæçœã§ãããåã³ããããã¯æããã«äžåäžã«å¢å ãããªãã»ãããŸãã¯ã€ã³ããã¯ã¹ã«èãã䌌ããã®ãæã£ãŠããŸãã ãã®ãããªèšé²ã¯2376åãããŸããïŒ unknown3ã®ååãsect2_qtyã«å€æŽããç°¡åãªã¹ã©ã€ã¹ãè¿œå ããŠ16ãã€ãã®ã¬ã³ãŒãããsect2ãåéããããšã§ç¢ºèªããŸãã
- id: sect2 size: 16 repeat: expr repeat-expr: header.sect2_qty
ãããŠããã³ãŽãããã¯ããã§ãããéåžžã«æ£ç¢ºã§ãïŒ
ãããã®éåžžã«çŽ°ã16ãã€ãã®ã¬ã³ãŒãã¯ãsect2_qtyããŒã¹ã®çŽåŸã§å®éã«çµäºããå®å
šã«ç°ãªããã®ãå§ãŸãããšãèçŒã§ã¯ã£ãããšããããŸãã ããã§äœãèŠããŸããïŒ ãããã¯æããã«4ãã€ãã®é·ãæ°åã§ã¯ãªããã»ãšãã©ãã¹ãŠãŒãã§ã¯ãããŸããã å°ãªããšãäžèŠãããšãæããã«åšæçãªæ§é ã远跡ãããŸããã è±å¯ãª0xaaã å€ãã®0x28ãæéãšãšãã«å€åããŸãã ãã¡ã€ã«ã®æåŸãèŠãŠãä»ã®ã»ã¯ã·ã§ã³ãèŠã€ããããšããŸã-æåŸã®åããã¯ã¹ãã£ã«ã€ããŠã¯ããã§ã¯ãããŸããïŒ
ã€ãŸããããã¯ãã¡ã€ã«ã®3çªç®ã®æåŸã®ã»ã¯ã·ã§ã³ã§ããããã以äžäœããããŸããã ãããŠãç§ãã¡ãèŠãããšããªããã®ã¯äœã§ããïŒ ããã¹ããšè¡ã ã©ããããããã¯åœŒããäœã§ãããã§ãããæããã«äœããã®åœ¢ã§ãšã³ã³ãŒããããŠããŸãã çµã£ãïŒ ããããããã§ã¯ãããŸããã ãã®ãããª0x28ãš0xaaã®ç¹°ãè¿ãã¯ãããŸããã ã¯ããããããçš®é¡ã®28 08 28 1b 28 0e 28 6c 26 6f 28 07 3a 14 28 6b
0x28ãç¹°ãè¿ããšãéåžžã«çãããããã«èŠããŸãã æ¯èŒã®ããã«ãShiftJISã§ã®å¹³åçãªæ¥æ¬èªããã¹ããã©ã®ããã«èŠãããæãåºããŠã¿ãŸãããïŒ 82 a0 82 e8 82 aa 82 c6 82 a4 82 b2 82 b4 82 a2
ã ããã¯ããããæãåçŽãªã¯ã€ã«ãã«ãŒãæå·ã§ãããåãã€ããåžžã«åãä»ã®ãã€ãã«å€æããããšãã仮説ãããã«çããŸãã ããã¯äœã§ããã0x82 => 0x28ããååŸããæ¹æ³ã¯ïŒ å®éã人é¡ã¯ããã»ã©å€ãã®éžæè¢ãæãã€ããŸããã§ããã
- å ç®/æžç®-åãã€ãã«åãæ°ãå ç®ïŒãŸãã¯åããã®ãæžç®ïŒãããªãŒããŒãããŒã¯ç¡èŠããŸã
- rol / ror-ç¹å®ã®ãããæ°ã«ãã埪ç°ã·ãããæãæããªããŒãžã§ã³ã§ã¯ãæ£ç¢ºã«4ãããã®ã·ãããå³ãŸãã¯å·Šã«è¡ããã2æ¡ã®16é²æ°ãå
¥ãæ¿ãããŸãã
- æä»ç "or"ïŒxorïŒ-åãã€ãã§ä»ã®åºå®ãã€ãã§xoræäœãå®è¡ããŸãã æãæããªãå¹³å¡ãªãäœããã®åœ¢ã§æŒæãããããã£ãŠäººæ°ã®ããæ¹æ³ã®äžã€
äžè¬ã«ã XORSearchã®ãããªããã°ã©ã ã®åœ¢ã®ãéããå€§ç ²ãããããŸãããããã¯ç·åœããã§ãã®ãããªå€æãæšæž¬ããããšããŸãããããã§ã¯ããã¯ããäžè¬çã§ãããç§ã¯äºåºŠç®ã«æšæž¬ããããšãã§ããŸãã 0xaaãè±å¯ã«ãããšããããšã¯ã0xaaãšXORãè¡ããšãŒããå€ããªãã0xaaãåŸãããããšã瀺ããŠããŸãã ãããŠãçªç¶0x82 ^ 0xaaã¯æ£ç¢ºã«0x28ã§ãã 0xaaã¯äžè¬ã«ããŸãæåã«ãã§ãã¯ããå¿
èŠãããæãäžè¬çãªä»®å®ã®1ã€ã§ãã 0xaa = 0b10101010ãã€ãŸã xorã¯ã2ãããããšã«ããããã«ã«ããŸãã
幞ããªããšã«ãKaitai Structã«ã¯ããã®ãããªå€æã®ãµããŒããçµã¿èŸŒãŸããŠããã process:
ã«ãã£ãŠã¢ã¯ãã£ãã«ãªãprocess:
ãã®ããã«æžãã ãã§ãïŒ
- id: sect3 size-eos: true process: xor(0xaa)
ãã®åŸãããããä¿¡é Œã¹ã¯ãªããã®æååå®æ°ã®è±å¯ãªå
éšäžçã芳å¯ã§ããããã«ãªããŸãã
000000: 69 66 00 c8 00 00 00 47 6c 6f 62 61 6c 46 6c 61 | if.....GlobalFla 000010: 67 00 3d 00 ff ff 00 00 01 00 00 00 3d 00 7b 00 | g.=.........=.{. 000020: 0d 00 00 00 57 69 6e 64 6f 77 4e 61 6d 65 53 65 | ....WindowNameSe 000030: 74 00 97 f6 82 b7 82 e9 8e 6f 96 85 82 cc 98 5a | t........o.....Z 000040: 8f 64 91 74 28 83 66 83 6f 83 62 83 4f 29 81 7c | .dt(.fobO).| 000050: 46 69 6c 65 20 3a 20 74 72 69 61 6c 68 5f 6d 61 | File : trialh_ma 000060: 79 75 2e 79 6b 73 00 7d 00 09 00 00 00 44 72 61 | yu.yks.}.....Dra 000070: 77 53 74 6f 70 00 47 72 61 70 68 69 63 48 69 64 | wStop.GraphicHid 000080: 65 00 0a 00 00 00 54 72 61 6e 73 69 74 69 6f 6e | e.....Transition 000090: 00 02 00 00 00 64 00 00 00 0a 00 00 00 0b 00 00 | .....d.......... 0000a0: 00 47 72 61 70 68 69 63 4c 6f 61 64 00 00 00 00 | .GraphicLoad....
幞ããªããšã«ãç¹ã«ASCIIã©ã€ã³ã®ã¯ã©ãŠãããããããã«ãã人çã倧å¹
ã«ç°¡çŽ åãããŸãã äžèŠããããã¯ãŒãã§çµäºããåãªãCã¹ã¿ã€ã«ã®ã©ã€ã³ã®ããã«èŠããŸããã詳现ã«èª¿ã¹ããšãããã¯å®å
šã«çå®ã§ã¯ãªãããšãããããŸãã è¡ãšãç解ã§ããªãå®æ°ã®æ£åšããããŸããããšãã°ã ff ff 00 00 01 00 00 00
ãŸãã¯02 00 00 00 64 00 00 00 0a 00 00 00 0b 00 00 00
ãŸãã¯02 00 00 00 64 00 00 00 0a 00 00 00 0b 00 00 00
ããã¯ãå°å·ãããASCIIæåã1ã€ããã«ããããããäžå€®ïŒ d
= 0x64ïŒã«ããå¯èœæ§ãæãé«ãã®ã¯ç·ã§ã¯ãããŸããã ããã«ãæã䟡å€ã®ãããã®-ããã«ãã-ã¯ãShiftJISã§82
ãšåãè¡ã§ãã
ãŸãšãããšãæåããŸããïŒ
- 4ãã€ãæŽæ°ïŒããããããã¯ãã€ãã³ãŒãïŒã§æ§æãããsect1ããããã®çªå·ãæã€sect2ã®16ãã€ããšã³ããªãéšåçã«åç
§
- sect2ãå
éšã®æ°å€ãå¢å ãã16ãã€ãã®ã¬ã³ãŒãã§æ§æãããïŒããããããã€ãã®ãªãã»ããïŒ
- äž»ã«ShiftJISã®ãã«çµäºè¡ã§æ§æãããŠããsect3ã§ãããå®å
šã§ã¯ãããŸããïŒãããã-æååãªãœãŒã¹ããã³ãã€ãã³ãŒãã§åç
§ãããä»ã®ãã¹ãŠã®å®æ°ïŒ
ãã®å°ããªåå©ã§ãä»æ¥ã®ç 究ãå®äºãããšæããŸããèšäºãåã³ç¡æ°ã«å€§ãããªã£ãããã§ãã ããçšåºŠãããšãã°ãã¿ã¹ã¯ãããžã¥ã¢ã«ããã«ã®ç¿»èš³ã§ããå Žåãä»æ¥ã®ææã¯ãã§ã«ããã¹ããåãåã£ãŠç¿»èš³è
ã«æäŸããã®ã«ååã§ãã sect3ãååŸããSJISã®ããã«èŠãããã®ããã¹ãŠèŠã€ããä»ã®ãã¹ãŠã泚ææ·±ãç Žæ£ããŸã-åºæ¥äžããïŒ
æããå§åŠ¹ã®å
éå¥(ãããã°)ïŒFile : trialh_mayu.yksãŸããããã£âŠâŠïŒïŒãæè²çæå°ãå
ŒããŠããæã¿éãã¡ãã£ã¯ãã£ã«ããŠããããããªããïŒïŒ ããã£âŠâŠãããã«ãã£âŠâŠãèªåããèªã£ãŠãããªãããäžå®ãããªè¡šæ
ãæµ®ãã¹ããŸãããããªãŸããããœãã¡ãŒã«æŒãã€ããŠâŠâŠèžãé²åºãããè¡éãäžžèŠãã«ãªãäœå¢ã匷ããã ãããã£âŠâŠã
ãã®å Žæãèªãã§ãããã¿ããªã«æè¬ããŸãã 次åã¯ãã€ãã³ãŒãèªäœã«è¡ããsect1ãšsect2ãã©ã®ããã«æ©èœããããç解ããããšããŸãã ããããïŒ