ããã¯äœã§ãã
CastlevaniaBotã¯ãCastlevaniaã§ãã¬ã€ããNES Nintacoãšãã¥ã¬ãŒã¿ãã©ã°ã€ã³ã§ãã ã¹ãã©ãã·ã¥ç»é¢ã§å®è¡ãããšããã©ã°ã€ã³ã¯æåããæåŸãŸã§ã²ãŒã å šäœãééããŸãã ãŸãã¯ãã²ãŒã å ã®ã©ãã§ãå®è¡ããŠããã®äžéšãééãããããšãã§ããŸãã
ãã®èšäºã§ã¯ãæªéåãã©ãã¥ã©ãæž¡ãããšãã§ãããããã®äœææ¹æ³ãšãNESã®ã²ãŒã ã«äŒŒããã®ãäœæããæ¹æ³ã説æããŸãã
ç¥èããŒã¹ã®æ§é
ãã®ãããžã§ã¯ãã§ã¯æ©æ¢°åŠç¿ã䜿çšããŸããã§ããã ããããéçºã¯ãæ©æ¢°åŠç¿ããšåŒã¶ããšãã§ããŸãã æªéåãã©ãã¥ã©ãæž¡ãæ¹æ³ãç¥ã£ãŠããŸãã é£ããã¯ãç§ã®ç¥èãã³ã³ãã¥ãŒã¿ãŒããã°ã©ã ã«æžã蟌ãããšã§ããã ãã®çµæãã³ã³ãããŒã©ãŒãæã«ããŠå®è¡ããã®ãšåãææ決å®ããã»ã¹ãã·ãã¥ã¬ãŒãããã·ã¹ãã ãã§ããŸããã ãããäœæããã«ã¯ããµã€ã¢ã³ãã«ã¢ã³ãã®ãããã¯ãŒã«ããå¶åŸ¡ããç©çåŠã®è©³çŽ°ãšãçµéšè±å¯ãªåžè¡é¬Œãã³ã¿ãŒãå¿ èŠãšãããã¹ãŠã®æŠè¡ãæ確ã«è¿°ã¹ãå¿ èŠããããŸããã
CastlevaniaBotã¯ãããŸããŸãªç¶æ³ã«å¯ŸåŠããããã®äžé£ã®æŠç¥ã«ã¢ã¯ã»ã¹ã§ããŸãã ãããã®ã»ãšãã©ã¯ãç¹å®ã®çš®é¡ã®ã²ãŒã ãªããžã§ã¯ãã§åäœããããã«èšèšãããŠããŸãã ããšãã°ãã¹ã±ã«ãã³ã®å¶åŸ¡æŠç¥ããããŸããéã®äººããããããç Žããå¿ãéãããªã©ã§ãã
CastlevaniaBotã¯åžžã«ã²ãŒã ã®ç¶æ ãç£èŠããå¿ èŠã«å¿ããŠç°ãªãæŠç¥ãåãæ¿ããŸãã ææ決å®ããã»ã¹ã§ã¯ããã£ãããã¹é¢æ°ã䜿çšãããç»é¢äžã®ãã¹ãŠã®ã²ãŒã ãªããžã§ã¯ããã©ã³ã¯ä»ããããŸãã ãªã¹ãã®äžçªäžãäž»ãªç®æšã§ãããå€æŽããããšãããã¯æŠç¥ãå€æŽããŸãã ããšãã°ãCastlevaniaBotã¯ãã³ãŠã¢ãªããã¬ãŒã ã«é£ãã ãšãã«ãã£ã³ãã«ãæã€æºåãããããšãã§ããŸãã ããããŸã§ã®è·é¢ã«å¿ããŠããã£ãã¹ã«ããã¢ãããã¯ãã£ã³ãã«æŠç¥ãããããæŠç¥ã«åãæ¿ããŠåå¿ããå ŽåããããŸãã ã³ãŠã¢ãªãç Žå£ããŠã圌ã¯ããããã§åãç¶ããŸãã
åãæ¿ããããšã決å®ããåã«ãCastlevaniaBotã¯çŸåšã®ç®æšãšæŠç¥ã確èªããŸãã 圌ãæåããªãå Žåã圌ã¯ç¡éã®ãµã€ã¯ã«ã§ç«ã¡åŸçããçãããŸãã¯ã»ãŒçããåªå é äœã§2ã€ã®ç®æšãè¡ãæ¥ããå¯èœæ§ããããŸãã ãããåé¿ããããã«ãçŸåšã®ç®æšã®åªå é äœããããã«é«ãæ°ããäž»ãªç®æšã衚瀺ããããšãã«ãCastlevaniaBotã¯çŸåšã®æŠç¥ãç¶ç¶ããããšã決å®ã§ããŸãã
äžéšã®æŠç¥ã¯ãç¹å®ã®ãšãªã¢ã«åé¡ããããšèªåçã«éå§ãããŸãã éåžžããããã¯è€æ°ã®ã²ãŒã ãªããžã§ã¯ãã®åæåŠçãç®çãšããŠããŸãã ããšãã°ã空é£ã¶ã¯ã©ã²ã®é ãããããããå»äžã§ã¯ãåé ãåå¥ã«çããã«å ã«é²ãã®ãæåã§ãã
äžéšã®æŠç¥ã¯ãç¹ã«ãã¹æŠã§ãçŸåšã®äºæ¬¡å µåšãšåéãããããŒãã®æ°ã«ãã£ãŠç°ãªãå ŽåããããŸãã CastlevaniaBotã¯ãææããŠããããŒã«ãšçŸåšã®ç¶æ³ã«åºã¥ããŠæåã®å€æãäžãããšããŠããŸãã
8ãããã®äžçãèšç»ãã
ãã®ãããªãããžã§ã¯ãã«åãçµããšããç§ã¯äž»ã«ã¿ã¹ã¯ãç°¡çŽ åããããåªããŸãã ã¬ãã«ã§åéããæµãããããããŸãã¯ã¢ã€ãã ããªãå ŽåãCastlevaniaãã©ã®ããã«èŠããããæ³åããŸããã ãã®å Žåã«å¿ èŠãªã®ã¯ãåã«ã¬ãã«ã®æåããæåŸãŸã§ååŸããããšã ãã§ãã ãããã«ãããè¡ãæ¹æ³ãæããããšãã§ããããéäžã§ããã€ãã®æµãç Žå£ããã®ã¯ã©ããããé£ããã§ããããïŒ
ãããã«ç§»åãæããããã«ãã¿ã€ã«ã®èæ¯ããããšã¬ãã«ã®æ§ææ¹æ³ãç解ããå¿ èŠããããŸããã ã²ãŒã ã¯6ã€ã®ã¬ãã«ã§æ§æãããåã¬ãã«ã¯ãã¹ã§çµãããŸãã
![](https://habrastorage.org/getpro/habr/post_images/09b/644/665/09b644665551ebb424b3813af0205173.png)
åã¬ãã«ã¯3ã€ãŸãã¯4ã€ã®ã¹ããŒãžã«åãããŠããŸãã éåžžãã¹ããŒãžã¯æšè£œã®ãã¢ã§åºåãããŠããããã¬ã€ã€ãŒã®èäžã®åŸãã«ããã¿é³ãšã¹ã©ã ãéããŸãã
![](https://habrastorage.org/getpro/habr/post_images/207/5fb/a46/2075fba46c9ef8ccd9a496df6aadcf07.png)
ãã¢ã¯ã³ã³ãããŒã«ãã€ã³ãïŒãã§ãã¯ãã€ã³ãïŒã§ãã ãã¬ã€ã€ãŒã殺ãããå Žåã圌ã¯ã¹ããŒãžã®æåã«æ»ããŸãããããã¯åœŒãèªåã®äººçãçµããŠããªãå Žåã®ã¿ã§ãã ã²ãŒã ãªãŒããŒåŸã«ã²ãŒã ãç¶è¡ãããšããã¬ãŒã€ãŒã¯ã¬ãã«ã®äžçªæåã«éãããŸãã
ã¹ããŒãžçªå·ã¯ãã²ãŒã ã®éå§ä»¥éã«å®äºãããã§ãã¯ãã€ã³ãã®ç·æ°ã瀺ããŸãã æåŸã®ã¹ããŒãžã¯18çªã§ãããããããã©ãã¥ã©ãåããšãã²ãŒã ã¯é£æ床ã¢ãŒãã®æåããå§ãŸããã¹ããŒãžæ°ã¯19以äžã«å¢ãç¶ããŸãã é£æ床ã¢ãŒãã䜿çšããå Žåãã²ãŒã ã®3çªç®ã®ãµã€ã¯ã«ã¯é£ãããªããŸããããã¹ããŒãžã®æ°ã¯å¢ãç¶ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/447/6a5/3c5/4476a53c571dc062a4bc2287f5e02587.png)
åã¹ããŒãžã¯ãèæ¯ã®1ã€ä»¥äžã®æ°Žå¹³ã¹ã¯ããŒã«ããŒã§æ§æããããããããµãã¹ãããããšåŒã³ãŸãã äžäžã«ç¶ãé段ã«æ²¿ã£ãŠç»é¢ãçµäºãããšãã²ãŒã ã¯ãµãã¹ããŒãžéã移åããåçŽã«ã¹ã¯ããŒã«ããŸããã
![](https://habrastorage.org/getpro/habr/post_images/760/751/5d8/7607515d8da99df95877d7eef8214f3f.png)
ã²ãŒã ã¯3ãã€ãã䜿çšããŠãã²ãŒã ãµã€ã¯ã«çªå·ãã¹ããŒãžçªå·ãããã³ãµãã¹ããŒãžçªå·ã远跡ããŸãã éåžžã¢ãŒãïŒéåžžã¢ãŒãïŒã®ã²ãŒã ãµã€ã¯ã«ã®å€ã¯0ã§ãã 1以äžã®å€ã¯ãå°é£ã¢ãŒãã瀺ããŸãã ã²ãŒã ãµã€ã¯ã«ã«é¢ä¿ãªããã¹ãããã«ã¯åžžã«0ã18ã®çªå·ãä»ããããŸãããŸããã¹ãããã«ã¯2ã€ä»¥äžã®æ°Žå¹³ã¹ãã©ã€ããå«ãŸããªãããããµãã¹ãããã®å€ã¯åžžã«0ãŸãã¯1ã«ãªããŸãã CastlevaniaBotã¯ãããã®ãã€ãã远跡ããŠããããã©ãã«ããããææ¡ããŸãã
䟿å®äžãåãµãã¹ããŒãžã®èæ¯ã¹ããªãããåå¥ã®ã°ã©ãã£ãã¯ãã¡ã€ã«ã«èšé²ããŸããã ãªããžã§ã¯ãã®æ£ç¢ºãªåº§æšã調ã¹ãå¿ èŠãããå Žåã¯ãã°ã©ãã£ã«ã«ãšãã£ã¿ãŒã䜿çšããŠãã°ããææ¡ã§ããŸãã Nintacoã«çµã¿èŸŒãŸããŠãããããã¡ãŒã«ãŒããŒã«ã䜿çšããŠãã¡ã€ã«ãèšé²ããŸããã ç§ã¯ããããªã³ã«ããŠãã²ãŒã å šäœãè©ŠããŸããã çµæã®ç»åã®ããã€ãã«ã¯ãäºãã«æ¥ç¶ãããããã€ãã®ãµãã¹ããããå«ãŸããŠãããããç°¡åã«å解ã§ããŸããã
![ãã³ã¿ã³ã®ãããã¡ãŒã«ãŒ](https://habrastorage.org/getpro/habr/post_images/a53/3de/57e/a533de57e49c26f55eea024465dd3cf6.png)
èæ¯ç»åã調ã¹ãçµæãéèŠãªã¿ã€ã«ã¯ãã©ãããã©ãŒã ãšé段ã®ã¿ã§ããããšãããããŸããã ãã以å€ã¯ãã¹ãŠç©ºã®ã¹ããŒã¹ãšèŠãªãããšãã§ããŸãã é段ã«ã¯2ã€ã®ã¿ã€ãããããŸããåæ¹ãŸãã¯åŸæ¹ã«é²ãïŒäºç蟺äžè§åœ¢ã®å·Šç«¯ãšå³ç«¯ãšããŠè¡šãããšãã§ããŸãïŒã é段ã¯ããã¬ã€ã€ãŒãæ©ãããšãã§ãããã©ãããã©ãŒã ã§çµããããšããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/c6e/6fa/76b/c6e6fa76bcd6d6c3457060763eb6f993.png)
éèŠãªã¿ã€ãã®ã¿ã€ã«ã¯5ã€ãããªããåã¬ãã«ã§å€èŠ³ãç°ãªããŸãã ããããå¥ã ã®16Ã16ç»åãã¡ã€ã«ã«ã³ããŒããŠè²Œãä»ããŸããã 次ã«ãåãµãã¹ãããã®åã¿ã€ã«ã察å¿ããç»åã»ãããšæ¯èŒããããã°ã©ã ãäœæããŸããã ããã§ããã¹ãŠã®ãµãã¹ãããã®ã¿ã€ã«ã¿ã€ãã®ãããªãã¯ã¹ãååŸããŸããã
ãããªãã¯ã¹ã¯ROMããçŽæ¥æœåºã§ããŸããããããŒã¿ã®ä¿åæ¹æ³ãšä¿åå Žæã«é¢ããããã¥ã¡ã³ããèŠã€ãããŸããã§ããã ROMã¹ããŒã¹ã¯éãããŠãããããéåžžãã¬ãã«ããŒã¿ã¯ãã¯ã¿ãŒã°ã©ãã£ãã¯ã¹åœ¢åŒã«äŒŒãå§çž®åœ¢åŒã§è¡šç€ºãããŸãã åã²ãŒã ã¯ç¬èªã®åœ¢åŒã䜿çšããŠãããããMap Makerãæã£ãŠããããã調æ»ãè¡ãå¿ èŠã¯ãªããšèããŸããã ããã«ããµãã¹ãããã®ã°ã©ãã£ãã¯ã€ã¡ãŒãžãå¿ èŠã§ããã èæ¯ã®çžæš¡æ§ããã£ããã£ããŠããªãã£ãå Žåããããªãã¯ã¹ããç»åãçæããããã°ã©ã ãäœæããå¿ èŠããããŸãã
çµè·¯æ¢çŽ¢
ãããªãã¯ã¹ãäœæãããããã¹æ€çŽ¢ã¢ã«ãŽãªãºã ãã€ãŸãã Floyd-Warshallã¢ã«ãŽãªãºã ãé©çšããããšèããŸãããããã¯ãéã¿ä»ããšããžãæã€æåã°ã©ãã®é ç¹ã®åãã¢éã®æçãã¹ãå«ãåºåããŒãã«ãæäŸããŸãã ã¢ã€ãã¢ã¯ãããŒãã«ãäºåèšç®ããŠãã¡ã€ã«ã«æžã蟌ã¿ãã²ãŒã äžã«ããŒãããããšã§ããã ã¡ã¢ãªå ã«ããŒãã«ãããããããããã¯ä»»æã®2ã€ã®ãã©ãããã©ãŒã ã¿ã€ã«éã®æççµè·¯ãæ€çŽ¢ããŠå³åº§ã«èŠã€ããããšãã§ããŸãã
ã°ã©ãã¯ãšããžãšé ç¹ã§æ§æãããŸãã ãã©ãããã©ãŒã ã¿ã€ã«ãé ç¹ã§ããå Žåããšããžã¯ããããã©ãããã©ãŒã ããå¥ã®ãã©ãããã©ãŒã ã«ç§»åããããã«Simonãå®è¡ã§ããæäœã®ã¿ã§ãã 1ã€ã®ã¿ã€ã«å ã§ã®ã¿å®è¡ãããæäœã¯çŠæ¢ãããŠããŸãã ããšãã°ãã¿ã€ã«ããã®å¹³é¢ã§ã¯ãSimonã¯ã¿ã€ã«ã1ã€å·ŠãŸãã¯å³ã«1ã€ãã移åã§ããŸããã
![](https://habrastorage.org/getpro/habr/post_images/fe2/fa3/03d/fe2fa303d199d5c1cb826da8003acd3a.png)
åæ§ã«ããµã€ã¢ã³ãé段ã«ããå Žåã2ã€ã®å¯èœãªæ¹åã®ããããã§1ã€ã®ã¿ã€ã«ã移åã§ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/a68/f17/502/a68f175026f789811cf3c7b032f76898.png)
ãããã¯æå¹ãªæäœã§ãã ããããã¿ã€ã«ã®äžéç¹ããã¿ã€ã«ã®ç«¯ãžã®ç§»åãªã©ã®ã¢ã¯ã·ã§ã³ã¯ãã°ã©ãã®ããé ç¹ããå¥ã®é ç¹ãžã®é·ç§»ã«å¯Ÿå¿ããŠããªããããæççãããŸãã
å·Šå³ã«æ©ããããé段ãäžãããç»ã£ããããããšã«å ããŠããµã€ã¢ã³ã¯å¥ã®ã¿ã€ã«ã«ãžã£ã³ãã§ããŸãã ãããŠã圌ã¯ã¿ã€ã«è¡šé¢ã®16ãã¯ã»ã«ã®ããããããå§ããŠãå·ŠãŸãã¯å³ã«ãžã£ã³ãã§ããŸãã ã°ã©ãå ã®ãšããžã®æ°ïŒããã³ã«ãã¯ã¢ããããŒãã«ã®ãµã€ãºïŒãæžããããã«ãèãããã5ã€ã®åçºãã€ã³ãã®ã¿ãèæ ®ããŸããã
![](https://habrastorage.org/getpro/habr/post_images/012/37d/aab/01237daabc08e79e6ccd6de83b6a1c0e.png)
ãäœãããªããæäœãè¿œå ãããšã15ã®æäœãåŸãããŸããã ãããã¯ãã¹ãŠåçŽãªã®ã§ããããã¯ã²ãŒã ã®å®è¡äžã«å®è¡ã«å¿ èŠãªãã¿ã³ãæŒãã·ãŒã±ã³ã¹ãç°¡åã«å€æã§ããŸãã
å®å šãªã°ã©ããäœæããããã«ãç§ã¯ãµã€ã¢ã³ã®äžçã®ç©çåŠã®éåžžã«åçŽãªã·ãã¥ã¬ãŒã·ã§ã³ãäœæããŸããã ãã®ã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ãåãã©ãããã©ãŒã ã¿ã€ã«ãã15ã®æäœãã¹ãŠãå®è¡ãããŸãã ã°ã©ãã¯ãSimonãã©ãã«ããããåã«èŠ³å¯ããããšã«ãã£ãŠäœæãããŸãã ããå ·äœçã«ã¯ãåæ座æšãšæäœãæå®ãããšãã·ãã¥ã¬ãŒã·ã§ã³ã¯åºåã§æçµåº§æšãæäŸããŸãã ããšãã°ãSimonãå£ãŸãã¯ç©Žã«å ¥ãããšãããšãã«æçµåº§æšããªãå Žåãããã°ã©ã ã¯æäœãç¡å¹ã§ããããã®ãšããžãã°ã©ãã®äžéšã§ã¯ãªãããšãè¿ããŸãã
ãã®ã·ãã¥ã¬ãŒã·ã§ã³ãäœæããã«ã¯ãSimon Belmontã®åŸ¹åºçãªèª¿æ»ãå¿ èŠã§ããã ãã¬ã€ã€ãŒãæ©ãããšããèµ°ãããšãŸã§å éã§ããä»ã®å€å žçãªãã©ãããã©ãŒããŒãšã¯ç°ãªãããµã€ã¢ã³ã¯æ°Žå¹³ã«ç§»åãããšããåžžã«ãã¬ãŒã ããšã«æ£ç¢ºã«1ãã¯ã»ã«ç§»åããŸãã ããã¯ãæ©ãããããžã£ã³ãããããé段ãç»ã£ãããæµãæ»æãããšãã«åŸãã«æ»ã£ããããå Žåã«ãåœãŠã¯ãŸããŸãã
æ°Žå¹³é床ãå¶éãããšãéå£ã®èªèãå€§å¹ ã«ç°¡çŽ åãããŸãã ã²ãŒã ã¯ããã£ã©ã¯ã¿ãŒã®åã®1ãã¯ã»ã«ã«å£ããããã©ããããã§ãã¯ããå¿ èŠã«å¿ããŠåããæ¢ããŸãã ãã®ãã¹ãã¯ãé ã®ã¬ãã«ã®äžã§å®è¡ãããŸããããã«ãããé ãæ°Žå¹³æ¹åã®åãã劚ããã«äœãââ倩äºã®äžãééã§ããŸãã
åçŽç§»åã¯ããå°ãè€éã§ãã ãµã€ã¢ã³ãåŸã ã«å éããã®ã§ã¯ãªãããã©ãããã©ãŒã ã®ç«¯ããå€ãããšããã¬ãŒã ããã8ãã¯ã»ã«ã®é床ã§å³åº§ã«åããŸãã åã¿ã€ã«ã®é«ãã¯16ãã¯ã»ã«ïŒ8ã®åæ°ïŒã§ãããããå°é¢ã®èªèãç°¡çŽ åãããŸãã åæã«ããã¬ãŒã€ãŒã¯ãèœäžã®çŽåã«ååŸããæ¹åã§ããã¬ãŒã ããšã«1ãã¯ã»ã«ã®æ°Žå¹³é床ãç¶æããŸãã
ãµã€ã¢ã³ã®ã¹ãã©ã€ãã®å¹ ã¯16ãã¯ã»ã«ã§ããããããã¯ã®äžå€®ããæ倧±4ãã¯ã»ã«ãŸã§ãããªã³ã°ã§ããŸãã ããå°ãåãããšãäžã«èœã¡ãŸãã
![](https://habrastorage.org/getpro/habr/post_images/fd8/b2a/0a4/fd8b2a0a48035271fc78e7209d980dd5.png)
ãã©ãããã©ãŒã ãé¢ããŠããã¬ãŒã ãããæ°Žå¹³1ãã¯ã»ã«ãšåçŽ8ãã¯ã»ã«ã®é床ã§æ£ç¢ºã«1ã¿ã€ã«èœã¡ãå Žåãçéžæã«ãããã¯ã®äžã«æ£ç¢ºã«ç«ããªãã®ã¯èå³æ·±ãããšã§ãã 圌ã®çæ¹ã®è¶³ã¯å£ã®å åŽã«2ãã¯ã»ã«ã®æ·±ããŸã§æ®ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/da0/a27/458/da0a274588a45b4e448fbe46ef9e48ca.png)
ãã®åŸã圌ã¯å£ãåºãããšãã§ããŸãããå£ã«å ¥ãããšã¯ã§ããŸããã
ãµã€ã¢ã³ã¯ãžã£ã³ãäžã«æ¹åãå€ããããšã¯ã§ããŸããã ãã¿ã³AãæŒããåŸã圌ã¯æŸç©ç·ã«æ²¿ã£ãŠåºå®ãã¹ãäœæããŸãã
![](https://habrastorage.org/getpro/habr/post_images/041/db3/a4a/041db3a4afa0f0f93e0533f0ee1dbd48.png)
äžéšã§ãSimonã¯36ãã¯ã»ã«äžæãã2ã¿ã€ã«ã®é«ãã®ãã©ãããã©ãŒã ã«ãžã£ã³ãã§ããŸãã ãããŠããæŸç©ç·ãã®äžéšã¯é©ãã»ã©å¹³ãã§ãã ãããã空äžã®ãã€ãããããŒãç°¡çŽ åããããã«ã9ãã«ãã¬ãŒã ã®éã空éã§ããªãŒãºããããã§ãã ãµã€ã¢ã³ãçéžãããã®ããªãå ŽåãæŸç©ç·ã®åãã¯ãå ã®é«ãã«æ»ããŸã§ç¶ããŸãã ãã®åŸããã¬ãŒã ããã8ãã¯ã»ã«ã®é床ã§ãã€ãŸããã©ãããã©ãŒã ããã®èœäžãšåãäžå®ã®é床ã§èœäžãå§ããŸãã
ãã£ã©ã¯ã¿ãŒã®é ã®çäžã«ãã©ãããã©ãŒã ãããå Žåããžã£ã³ãã¯èš±å¯ãããŸããã
![](https://habrastorage.org/getpro/habr/post_images/e06/358/0ba/e063580bac81a0ec963336e2886c0e2a.png)
ãã以å€ã®å Žåã圌ã¯ãã©ãããã©ãŒã ã¿ã€ã«ã«éšåçã«ããžã£ã³ããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/651/56a/f41/65156af41893e3c9008a4836d67efca1.png)
åã«è¿°ã¹ãããã«ããµã€ã¢ã³ãé ã®ãŠã£ãºã以äžã«è§Šãããšããµã€ã¢ã³ã¯æ°Žå¹³æ¹åã®åããæ¢ããŸãã ããã¯ããã¬ã€ã€ãŒãæŽçªããè±åºããããšããã¬ãã«4ã®æåã®æ®µéã®çµããã«éåžžã«è¿·æã§ãã
![](https://habrastorage.org/getpro/habr/post_images/1c6/d41/331/1c6d413312f17f67d6247f9a33000499.png)
é段ã䜿çšãããšããã©ãããã©ãŒã éãèªç±ã«äžäžã«ç§»åã§ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/05c/5e1/2fc/05c5e12fc0bd66681054052354e13a14.png)
ããå Žåã«ã¯ããµã€ã¢ã³ã¯é段ãäžããããã©ãããã©ãŒã ã¿ã€ã«ãééããŸãã é段ã®äžã«ããã®ã§ã圌ã¯å£ãèªç±ã«éãæããããšãã§ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/522/872/438/5228724383d3d908b5298c62dc73e015.png)
ã¬ãã«4ã®ã¢ãã€ã«ãã©ãããã©ãŒã ã§ã¯ããã¬ãŒã€ãŒã¯éåžžãåãäžãã£ãä¹³ç³ã®äžã§ãããã¿ãŸãã ãã ããç«ã¡äžãã£ãŠäŒãããšã¯ã§ããŸãã ãã®ãããªç¶æ³ã§ã¯ãã²ãŒã ã¯æ°Žå¹³ç§»åãå¶éãããµã€ã¢ã³ããŠã©ãŒã¿ãŒãã©ããã«ãã°ãããã©ãã°ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/feb/dcd/85f/febdcd85f8f47c08806d00343a74fc02.png)
æåã°ã©ããçæããç©çã·ãã¥ã¬ãŒã¿ãŒã¯ããµã€ã¢ã³ãé·æ¹åœ¢ãšèŠãªããŸãã ãã®é·æ¹åœ¢ã®ç§»åã¯ãäžèšã®ç§»åèŠåã«ãã£ãŠå¶éãããŸãã ãããããŠãµã®ã®ããã«å Žæããå Žæãžãžã£ã³ãããã®ãé²ãããã«ãã«ãŠã³ãã®ãžã£ã³ããšããžã«ã¯ãé段ãæ©ããã移åããããããšããžãããé«ãã³ã¹ããå²ãåœãŠãããŸããã
ãã¹æ€çŽ¢ã¢ã«ãŽãªãºã ã«ãã£ãŠçæãããããŒãã«ã«ã¯ãåéå§ã¿ã€ã«ãšçµäºã¿ã€ã«ã®æçè·é¢ïŒãã¹ã®ç·ã³ã¹ãïŒããã³ãã¹ã®æåã®ã¹ãããã®èª¬æãå«ãŸããŠããŸãã ãã®èª¬æã«ã¯ããã®ãã¹ã§æåã«å®è¡ããå¿ èŠã®ããæäœãšããã£ã©ã¯ã¿ãŒãå®æããåŸã®ã¿ã€ã«ãå«ãŸããŸãã ããŒãã«å šäœã§æ€çŽ¢ãç¹°ãè¿ãããšã§ããã¹å šäœãåäœæã§ããŸããåæ€çŽ¢ã¯ãæçµã¿ã€ã«ã®æ¹åã«æ¬¡ã®ã¹ããããæäŸããŸãã
äžéšã®ãµãã¹ãããã§ã¯ãåãå®å šã«æ¥ç¶ãããŠããŸããã ããšãã°ãã¬ãã«4ã§ã¯ããã©ãããã©ãŒã ãæ·±byã暪æããå¯äžã®æ¹æ³ã§ãã ãã®ãããªãµãã¹ãããã§ã¯ãããŒãã«ã«ã¯å島ã«æ²¿ã£ãŠç§»åããã¡ãœãããå«ãŸããŸããã島ã®éã移åããã¡ãœããã¯å«ãŸããŸããã
![](https://habrastorage.org/getpro/habr/post_images/e0f/098/f72/e0f098f72ffb3a91bb86d2cf5fa1921b.png)
äžéšã®ç Žå£å¯èœãªãããã¯ã«ã¯ãé ããããªããžã§ã¯ããå«ãŸããŠããŸãã ãããŠããããã¯ã®ç Žå£ã¯ãã®ã°ã©ããå€ããŸãã ãã®åé¡ãåé¿ããããã«ãåå²ãããã¯ãããå Žåãšãªãå Žåã®ãã¹ãèŠã€ããããã®ã¢ã«ãŽãªãºã ããµãã¹ãããã«é©çšãããŸããã å®è¡æã«ãCastlevaniaBotã¯åå²ããããããã¯ã®ç¶æ ãç£èŠããé©åãªã«ãã¯ã¢ããããŒãã«ã䜿çšããŸãã
![](https://habrastorage.org/getpro/habr/post_images/aca/ac4/8a1/acaac48a1c7f4acd0849f06dab3a9d0a.png)
ã²ãŒã ã®ç¶æ
CastlevaniaBotã¯ãAPIãä»ããŠNintacoã«çµ±åãããŠããŸã ã åãã¬ãŒã ã§ãªã¿ãŒã³ãåä¿¡ããããã«ã
FrameListener
ã®å®è£ ãç»é²ããŸãã ãšãã¥ã¬ãŒã¿ã¯æ¯ç§çŽ60ãã¬ãŒã ã§å®è¡ãããããããã®ãªã¹ããŒã¯æééãã«è¿ãããå¿ èŠããããŸãã é·æéã®èšç®ãããŠã³ã¿ã€ã ã¯ããšãã¥ã¬ãŒã¿ãé ãããããããã¯ãããããŸãã çæéã§ãCastlevaniaBotã¯ã²ãŒã ã®ç¶æ ãèªã¿åãããã®äž»ãªç®æšã決å®ããç®æšãå€æŽãããå Žåã«æŠç¥ãåãæ¿ããçŸåšã®æŠç¥ãå®è¡ããŸãã
CastlevaniaBotã¯ãSimon Belmontã®çŸåšã®ç¶æ ãããã»ããµã®RAMããçŽæ¥èªã¿åããŸãã ããããä»ã®ã²ãŒã ãªããžã§ã¯ããã¡ã¢ãªå ã§ã©ã®ããã«è¡šãããããå€æããããšã¯ã§ããŸããã ãããã£ãŠãCastlevaniaBotã¯ããªããžã§ã¯ãã®ã¡ã¢ãªå±æ§ïŒãªããžã§ã¯ãå±æ§ã¡ã¢ãªãOAMïŒããçŽæ¥èªã¿åããŸã-衚瀺ãããã¹ãã©ã€ãã®ãªã¹ããæ ŒçŽããé åã
![](https://habrastorage.org/getpro/habr/post_images/296/b58/46a/296b5846a26530aa657294d619e5ad63.png)
ãã®ææ³ã¯æ©èœããäžè¬ã«ä»ã®ã²ãŒã ã«é©çšã§ããŸãããå€ãã®æ¬ ç¹ããããŸãã OAMã®ã¹ãã©ã€ãã®é åºã¯åžžã«å€åããŠããŸãã ç»é¢äžã«åãã¿ã€ãã®æµã®ã€ã³ã¹ã¿ã³ã¹ãåæã«è€æ°ããå Žåããããã远跡ããå¯äžã®æ¹æ³ã¯ããããã®è¿æ¥ãå€æããã¹ãã©ã€ãã®æåŸã®åº§æšãåã®ãã¬ãŒã ã®åº§æšãšæ¯èŒããããšã§ãã
![](https://habrastorage.org/getpro/habr/post_images/46d/236/258/46d23625808baf3abb91916e4f80baed.png)
äžéšã®ã²ãŒã ãªããžã§ã¯ãã¯ãããŒã³ã¿ã¯ãŒãªã©ã®ç¹°ãè¿ãã¹ãã©ã€ãã§æ§æãããŠããŸãã
![](https://habrastorage.org/getpro/habr/post_images/1b7/49a/dcb/1b749adcb05680e5a22247c783d8bac2.png)
移åãã©ãããã©ãŒã ã¯ã4åç¹°ãè¿ããã1ã€ã®ã¹ãã©ã€ãã§æ§æãããŸãã
![](https://habrastorage.org/getpro/habr/post_images/7e0/f85/ea8/7e0f85ea889b5e824a010d04e26f03d2.png)
ãããã®äž¡æ¹ã®ã±ãŒã¹ããœãŒãããã«ã¯ãè¿œå ã®ããžãã¯ãå¿ èŠã§ãããå®è£ ã¯ç°¡åã§ãã äºæ¬¡å µåšã®ã¢ããã°ã¬ãŒããšããã€ãã®çš®é¡ã®äºæ¬¡å µåšèªäœã¯åãã¹ãã©ã€ãã䜿çšããŸãã ããã«æªãããšã«ãã¬ãã«5ã§ã¯ãéšå£«ã¯ãµã€ã¢ã³ã®å¯æŠåšã¹ãã©ã€ããåããŸãã
![](https://habrastorage.org/getpro/habr/post_images/44c/cd1/08e/44ccd108ea9b25c442a5653d79f0c49e.png)
幞ããªããšã«ãèæ°Žãé€ããŠãCastlevaniaBotã¯ããã¹æŠãªã©ã§ã¢ããã°ã¬ãŒããéåžžå©çšã§ããªãã»ã«ã³ããªæŠåšã®ã¿ã䜿çšããŸãã ãŸããèæ°Žã¢ããã°ã¬ãŒãã¹ãã©ã€ãã¯ããã£ã¹ãæã«äœ¿çšãããã¹ãã©ã€ããšã¯ç°ãªããŸãã
![](https://habrastorage.org/getpro/habr/post_images/014/1d2/faf/0141d2faf5e0168ae8d4046cdbfbe278.png)
ãã¹æŠã®çµããã®ã¯ãªã¹ã¿ã«ããŒã«ãæ»ã®äžã€ç·šã¿ããã©ãã¥ã©ã®äœãªã©ãäœæäžã«äžéšã®ã²ãŒã ãªããžã§ã¯ããç¹æ» ããŸãã ç¹æ» ããã¹ãã©ã€ãã¯OAMã§è¡šç€ºããã³é衚瀺ã«ãªãããããããã®ãªããžã§ã¯ãã远跡ããã«ã¯è¿œå ã®ããžãã¯ãå¿ èŠã§ãã
![](https://habrastorage.org/getpro/habr/post_images/b80/5f1/f8b/b805f1f8bf89efb9c021b716a0d39e25.png)
ãŸããããŒããŠã§ã¢ã®å¶éã«ãããNESã¯ã©ã¹ã¿ã©ã€ã³ããšã«8ã€ã®ã¹ãã©ã€ããã衚瀺ã§ããªãããšã«æ³šæããŠãã ããã ã¹ãã©ã€ãã®åªå 床ã¯OAMã®ã€ã³ããã¯ã¹ã«éšåçã«äŸåãããããåãã¬ãŒã ã®é åºã¯ã©ã³ãã ã«æ··åããã1ã€ã®ã¹ãã©ã€ããåžžã«èŠããªããªãã·ãããåé¿ããŸãã ããã€ãã®ã¹ãã©ã€ããé çªã«ç¹æ» ããåªå é äœãåŸã ã«å€ãããŸãã ãã®ç¹æ» ã¯ãOAMããã®ã¹ãã©ã€ãã®èªã¿åãã«ã¯åœ±é¿ããŸããã ããŒã¿ã¯ããã«æ®ããŸããããšãã¥ã¬ãŒããããããŒããŠã§ã¢ã¯è¡šç€ºããŸããã ããã¯ãã¹ãã©ã€ããäœæãããšãã«ç¹æ» ããäžèšã®ç¶æ³ãšã¯ç°ãªããŸãã ããã«ãNintacoã«ã¯ãããŒããŠã§ã¢ã®ãã©ãã·ã¥ãå€§å¹ ã«åæžãããªãã·ã§ã³ããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/6b9/527/fe6/6b9527fe61e614012f1fd50d1ad0625e.png)
ãããŠæåŸã«ãã²ãŒã ã®ç¶æ ã®å°ããªéšåãPPUååããŒãã«ããèªã¿åãããŸããããã¯ããã¹ãŠã®ããã¯ã°ã©ãŠã³ãããŒã¿ãå«ãã¡ã¢ãªé åã§ãã ããã«ã¯ãç Žå£å¯èœãªãããã¯ã®ãã§ãã¯ãšãã¬ãã«2ã§ã®ãã¯ã©ãã·ã¥ãã®äœçœ®ã®è¿œè·¡ãå«ãŸããŸãã
![](https://habrastorage.org/getpro/habr/post_images/d35/f3c/378/d35f3c378b284474c8d2b5386a78fb57.png)
ãã¥ãŒãªã¹ãã£ãã¯ã¹ããŒããã·ã³
æŠç¥ã¯ã¹ããŒããã·ã³ã§ãã CastlevaniaBotã¯ããããã
init
ããã³
step
ã¡ãœãããæã€æœè±¡ã¯ã©ã¹ãšããŠå®çŸ©ããŸãã
init
ã¡ãœããã¯ãCastlevaniaBotãé©åãªæŠç¥ã«åãæ¿ãã£ããšãã«åŒã³åºãããã¹ããŒããã·ã³ããªã»ããã§ããŸãã ãããŠã
step
ã¡ãœããã¯æŠç¥ãå®è¡ããŸãã ããšãã°ãéã®äººã ã®
step
æŠç¥ã¡ãœããã¯ãéãéã®ç¯å²å ã«ãããã©ããã確èªããããã§ããã°ãããããéã§ãããããŸãã ãã以å€ã®å Žåã¯ããžã£ã³ãããŠã¹ãã©ã€ã¯ã®è·é¢ã«å°éã§ãããã©ããã確èªããå¯èœã§ããã°ããããã¯ãžã£ã³ãããŸãã ãããŠæåŸã«ãããããæµã«è¿ãããå Žåãããããããé ããããŸãã ãããã®åçŽãªã«ãŒã«ã«ãããCastlevaniaBotã¯äººéã®éãæã¡è² ãããŸãã
ã©ã€ãã£ã³ã°æŠç¥ãå¯èœãªéãç°¡çŽ åããããã«ãå®è¡å¯èœãªã¢ã¯ã·ã§ã³ã®ã©ã€ãã©ãªãäœæããŸããã ããšãã°ããã¿ã³AãæŒããŠæŸããŠãžã£ã³ããã代ããã«ããããã¯åã«ã©ã€ãã©ãªãããžã£ã³ãã¡ãœãããåŒã³åºããŸãã ãããŠãã®åã«ã圌ã¯å³æžé€šã«ãµã€ã¢ã³ããã©ãããã©ãŒã ã«ããŠãžã£ã³ãã§ãããã©ããå°ããŸãã
ã¿ãŒã²ãããžã®ã¢ãããŒããšã¿ãŒã²ããããã®ç§»åã¯ããã¹æ€çŽ¢ã¢ã«ãŽãªãºã ã«ãã£ãŠäœæãããããŒãã«ã®æäœã䜿çšããŠå®è¡ãããæšæºã¢ã¯ã·ã§ã³ã§ãã ããšãã°ããã£ã³ãã«ã¹ãã©ããžãŒã¯ã©ã€ãã©ãªã¡ãœãã
routeAndFace
䜿çšããŸããããã¯ãæå®ããã座æšã«Simonãèªå°ããã ãã§ãªãããããåŸã«å·Šå³ã«å転ãããŸãã ããã«ãããããã®é«ãã«å¿ããŠãæŠç¥ã¯éãæã€åã«ãžã£ã³ããŸãã¯ã¹ã¯ã¯ãããå®è¡ããŸãã ããããããèœã¡ããªããžã§ã¯ãã¯ç©ºäžã«äœæãããèœäžãããããã£ãããšå°é¢ã«èœã¡ãŸãã ã¢ã€ãã éžææŠç¥ã¯ãã¢ã€ãã ãå°é¢ã«è§Šããåã«ããµã€ã¢ã³ãçŽäžã®æãè¿ãã¿ã€ã«ã«èªå°ããŸãã
æµããé ãããã«ã¯ãå³æžé€šã¯ãç©Žã«èœã¡ãã«å·Šå³ã«ç§»åããæ¹æ³ãç¥ãå¿ èŠããããŸãã äžè¬çã«ãããã¯ãµãã¹ããŒãžã®å·Šç«¯ãŸãã¯å³ç«¯ãžã®ãã¹ãæ€çŽ¢ããããšã§å®çŸãããŸãã ããããäžéšã®å°åã§ã¯ã巊端ãžã®æççµè·¯ã§ã¯æåã«å³ãžç§»åããå¿ èŠããããéãåæ§ã§ãã ãã®ãããªåé¡ãçºçãããšãããµãã¹ããŒãžå°çšã®ããžãã¯ãè¿œå ããçŸåšã®ãã©ãããã©ãŒã ã®å·Šç«¯ãšå³ç«¯ã«ãµã€ã¢ã³ãåããŸããã
ãŠã©ãŒã¯ã¹ã«ãŒ
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãCastlevaniaBotã䜿çšããæŠç¥ã«ã€ããŠè©³ãã説æãããŠã©ãŒã¯ã¹ã«ãŒå šäœã«ã€ããŠã³ã¡ã³ãããŸãã
ã²ãŒã ã¯åã®åã®äžåºã§å§ãŸããŸãã ãã¬ãŒã å ã®ãªããžã§ã¯ãã¯ãã¡ã€ã³ã¿ãŒã²ãããéžæããããã«é 眮ãããŠããŸãããã®å Žåãã¡ã€ã³ã¿ãŒã²ããã¯çã®ããåã§ãã ã³ã©ã æŠç¥ã¯ããããã«ã³ã©ã ã«è¿ã¥ããæã®å±ããšããã«éã䜿çšããããæ瀺ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/14c/647/750/14c6477507cee1d822e6cadbcafbda5a.png)
éãæã£ãŠåãç Žå£ããåŸãã¢ã€ãã ãäœæãããŸãã ãã¹ãŠã®ã¢ã€ãã ã®åªå é äœã¯ãçæ±ã®åªå é äœãããé«ããªã£ãŠããŸãã ãããã£ãŠãCastlevaniaBotã¯ã次ã®åã«é²ãåã«è¡šç€ºãããã¢ã€ãã ãåéããæŠç¥ã䜿çšããŠãããã«å¯Ÿå¿ããŸãã
ãªããžã§ã¯ããã©ã³ã¯ä»ããããšããCastlevaniaBotã¯åžžã«é·æç®æšãèæ ®ã«å ¥ããŸã-æéããªããªãåã«ã¬ãã«ãå®äºããŸãã æœåšçãªç®æšã®ãªã¹ããäœæãããšãã次ã®ã¬ãã«ãžã®æãåžžã«è¿œå ãããŸãã ãã¢ã«ã¯äœãåªå 床ãå²ãåœãŠãããŠããŸããããã¹ãŠã®åã®ç Žå£ãšãã¹ãŠã®ãªããžã§ã¯ãã®åéã®åŸãåªå 床ã«ãªããŸãã å¯äžã®äŸå€ãé€ããŠãCastlevaniaBotã¯é ãããå®ç©ããã¹ãŠçºèŠããæ¹æ³ãç¥ã£ãŠãããåã®å ¥ãå£ãé£ã³è¶ããŠç¬ãéã«ãéã®è¢ãäœããŸãã
![](https://habrastorage.org/getpro/habr/post_images/200/7f5/eaa/2007f5eaa4405bd611bd8711017fbe24.png)
åã«å ¥ã£ãåŸãCastlevaniaBotã¯å¹œéãšãããããèŠãŸãã ãããããå·¥èžåã¯ã幜éãè¿ã¥ããŸã§åªå ãããŸãã
![](https://habrastorage.org/getpro/habr/post_images/8a7/9ab/843/8a79ab84345e6a16a9231c5a7f45ceae.png)
éã¯æµã«è§Šããããšãªãç Žå£ããããšãå€ãããã§ãã ã²ãŒã ã®ROMã«ã³ãªãžã§ã³é·æ¹åœ¢ããŒãã«ãèŠã€ããã®ã§ãCastlevaniaBotã¯äœããéã®ç¯å²å ã«ããããšãæ£ç¢ºã«èªèããŸãã ãŸããã³ãªãžã§ã³é·æ¹åœ¢ã¯ã¹ãã©ã€ãã®å¢çããããã«è¶ ããŠçªãåºãããšãå€ãããããã¡ã¯ãèŠããªãéšåãã«ã¶ã€ããããšããããŸãã
ã»ãšãã©ã®å Žåããã£ã³ãã«ãç Žå£ãããšãCastlevaniaBotã¯åæ¹ã§ã¯ãªãåçŽã«ãžã£ã³ãããŸãã ããã¯ãªã¹ã¯åé¿ã®æŠè¡ã§ãã 空äžã«ããã®ã§ã移åã®æ¹åãå€ããããšã¯äžå¯èœã§ããæ¥è¿ããæµã®çŸ€è¡ã¯ãå®å šãªçéžãè€éã«ããããäžå¯èœã«ããããšãã§ããŸãã ããã«ãåçŽãžã£ã³ãã§ã¯ãCastlevaniaBotã¯åããããã¯ã«çãŸããŸãã 圌ã¯ãžã£ã³ããäžéšã®ãã©ãããã©ãŒã ãŸãã¯ãããã®åºã«èœã¡ãã®ãã©ããããã§ãã¯ããå¿ èŠã¯ãããŸããã
ç Žå£ãããã£ã³ãã«ãåéãããªããžã§ã¯ãããªããªããšãCastlevaniaBotã¯ãŽãŒã¹ããè¿œãå§ããŸãã ããããããã³ãµãŒæŠç¥ãã¯ãæµãéæã¡ã®ç¯å²å ã«åãŸãã®ãåŸ ã£ãŠã圌ã«ãã£ãšç«ã€ããã«åœããŸãã
![](https://habrastorage.org/getpro/habr/post_images/434/9a0/bd5/4349a0bd58a7078c6b0d1951845bfea2.png)
ããããã¯å¿ãä»ã®ãªããžã§ã¯ãã®ãœãŒã¹ãšããŠæ©èœãããšããäºå®ã«å ããŠã圌ãã¯ã¹ããŒãžãéããŠéã«æ²¿ã£ãŠãã¬ã€ã€ãŒãã¬ã€ãããŸãã ããšãã°ã次ã®ç»åã§ã¯ãå³äžé ã®ãã£ã³ãã«ããã¬ã€ã€ãŒãé段ã«ç»ãããã«ãæåŸ ãããŸãã ãã ããé段ãäžãã«ã¯ããã¬ã€ã€ãŒãæåã«å·Šã«è¡ãå¿ èŠãããããããã£ã³ãã«ãç»é¢ããæ¶ããŸãã CastlevaniaBotãœãªã¥ãŒã·ã§ã³ã¯ãç»é¢ã«è¡šç€ºããããªããžã§ã¯ãã®åªå é äœä»ãã«åºã¥ããŠããããããã®ç¶æ³ã¯ããããããã£ã³ãã«ãžã®æççµè·¯ïŒå·ŠåŽïŒãŸãã¯åºå£ãã¢ãžã®æççµè·¯ïŒå³åŽïŒã亀äºã«éžæããç¡éã®ãµã€ã¯ã«ã«ã€ãªããå¯èœæ§ããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/309/d1a/8e7/309d1a8e7f1f5a39a8b34411108b94b8.png)
åæ§ã®åé¡ã¯ãããã€ãã®æ¹æ³ã§è§£æ±ºã§ããŸãã ããšãã°ãCastlevaniaBotã«ã¯ãªããžã§ã¯ããæ ŒçŽãããŠããããªããžã§ã¯ãã衚瀺ãããŠããªããŠãååšãç¶ããããšãç解ã§ããŸãã ãããããã®ããã«ã¯ããšã«ãããæåããèŠãå¿ èŠããããŸãã ãããããããã«å³åŽã«ããå Žåã¯ãæ€åºåŸã«ããã«æ»ãå¿ èŠããããŸãã
ãã®ããšã念é ã«çœ®ããŠãç§ã¯CastlevaniaBotãæŒããŠãéåžžã¯ç¡èŠããã¹ããŒãžã®é åãæ¢çŽ¢ããã€ã³ã»ã³ãã£ããè¿œå ããŸããã ãããã®ã€ã³ã»ã³ãã£ãã¯åºå£ã®ãã¢ãšåæ§ã«æ©èœããCastlevaniaBotãå¿ èŠãªå Žæã«åŒãä»ããŸãã ããã«ããããããé ãé¢ããïŒçŽç·ã§ã¯ãªã移åè·é¢ã«å¿ããŠïŒç©äœãç¡èŠããã«ãŒã«ãè¿œå ããŸããã
é段ãç»ãããããããç Žå£ããåŸãèæ°ŽãäœæãããŸã-ãã¹ãŠã®äºæ¬¡å µåšã®äžã§æã䟡å€ããããŸãã CastlevaniaBotã¯ãçå£ã亀æããŠéžæããŸãã
![](https://habrastorage.org/getpro/habr/post_images/4c5/575/00a/4c557500adad3a899c43ea80b983d6fb.png)
ã²ãŒã éå§æã®ãããŒããã°ãšåæ§ã«ãCastlevaniaBotã¯é ããããªããžã§ã¯ããå«ããã¹ãŠã®ç Žå£å¯èœãªãããã¯ãèªèããéã䜿çšããŠãããã¯ãç Žå£ããããã«ããã£ã³ãã«ã¹ãã©ããžãŒãšåæ§ã®ã¹ãã©ããžãŒã䜿çšããŸãã
![](https://habrastorage.org/getpro/habr/post_images/1eb/007/d43/1eb007d4384996127451979738a3c6ea.png)
CastlevaniaBotãããã«ç§»åãããšãèæ°Žã䜿çšããŠãŽãŒã¹ãããã£ã³ãã«ãç Žå£ãå§ããããšãããããŸãã ããã¯åé·ã«èŠãããããããŸããããéèŠãªç®çã«åœ¹ç«ã¡ãŸãã ãã£ãã¹ã«ãŽã¡ãã¢ã¯ãäºéããã³äžéã®é²åºã§äºæ¬¡æŠåšã䜿çšãããã¬ã€ã€ãŒã«å ±é ¬ãäžããŸãã èšãæããã°ãCastlevaniaBot ã¯äºæ¬¡å µåšã®ã¢ããã°ã¬ãŒããç²ç ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/6a7/186/be0/6a7186be0588f46012a241cc9745d586.png)
ãã¿ã³BãæŒããåŸããã€ãããæã€ãŸã§ã«16ãã¬ãŒã ã®é 延ããããŸãã ãã€ããã¯è¿œå ã®10ãã¬ãŒã ã®éé·ãæ®ããŸããããããã®10ãã¬ãŒã ã®ãã¡æåã®ãã¬ãŒã ã§ã®ã¿æå¹ã§ãã CastlevaniaBotã¯ããã®äºå®ã䜿çšããŠç §æºãæ¹åããŸãã ç¹ã«ãã¡ã€ã³ã¿ãŒã²ãããç·åœ¢ãã¹ã«æ²¿ã£ãŠç§»åãç¶ãããšä»®å®ããŠããã¬ãŒã å ã®ãã¹ãŠã®ãªããžã§ã¯ãã®é床ã远跡ããŸãã 次ã«ãã¿ãŒã²ãããéã«äŒããªããã°ãªããªãåã«ããã¿ã³Bã16ãã¬ãŒã æŒããŸãã æµã¯ãããã®16ãã¬ãŒã ã®éã«åžžã«æ¹åãå€ããããšãã§ããŸãããéåžžããã®åçŽãªãã¥ãŒãªã¹ãã£ãã¯ãªåäœã§ãã
ãããããã¢ãééããåŸãCastlevaniaBotã¯èµ€ãã³ãŠã¢ãªã«ééããŸãã ã¯ã©ã²ã®é ã®ããã«ãèµ€ãã³ãŠã¢ãªã¯ç»é¢ã暪åã£ãŠé£ã³ããã©ããããŒã ãšé段ãéã£ãŠæ£åŒŠæ³¢ãéããŸãã 16ãã¬ãŒã åŸã®èµ€ãã³ãŠã¢ãªã®äœçœ®ãäºæž¬ããããã«ããã®ãã¡ã®1ã€ã®åããããŒãã«ã«èšé²ããŸããã ã²ãŒã äžãCastlevaniaBotã¯ã³ãŠã¢ãªã远跡ããåçŽé床ã笊å·ãå€ããè»éã®ããŒã¯ãŸãã¯ããŒãåŸ ã¡ãŸãã 次ã«ã座æšãäºåã«äœæãããããŒãã«ã®å€ãšæ¯èŒã§ããŸãã ããã«ãããé©åãªæŠç¥ã§éã§èµ€ãããããæã£ãããæ²ããããè·³ãããããããšãã§ããŸãã
ãã£ãã¹ã«ããã¢ã®ééäžïŒã¹ããŒãã©ãïŒããã¬ã€ã€ãŒã¯ã²ãŒã ãå¯èœãªéã決å®çã«ããæäœãå®è¡ããŸãã ããšãã°ãã¬ãã«1ã®çµããã«ç¹å®ã®æéã·ãŒã±ã³ã¹ã§ãããã¯ãç Žå£ããæŠåšã®ã¢ããã°ã¬ãŒããååŸãããšããã¹ã¯ç®çã®ãã¿ãŒã³ã«åŸã£ãŠåäœããããã«æåããããšãã§ããŸãã
ã©ããªã«çµéšè±å¯ãªäººã§ããä¹±æ°ãžã§ãã¬ãŒã¿ãŒãå®å šã«é£Œããªããããšã¯ã§ããŸããã ãã ããCastlevaniaBotã¯ãã¿ã³ã®æŒäžããã¬ãŒã ããšã«æ£ç¢ºã«å¶åŸ¡ã§ãããããã²ãŒã ãééãããã³ã«ãŸã£ããåãæ¹æ³ã§é床ééã®æŠå¿µãéçã«è¿ã¥ããããšãã§ããŸãã ãããããªãã TASãæž¡ãããšãããè¯ããªãã§ãããã ãã®ãããCastlevaniaBotã¯ã決å®è«çãªã²ãŒã ãã¬ã€ãé¿ããããã«ãå€éšã®ä¹±æ°ãžã§ãã¬ãŒã¿ãŒã䜿çšããŠãã¢ã¯ã·ã§ã³ã«ãšã©ãŒãšé 延ãä»»æã«è¿œå ããŸãã ããšãã°ã圌ãããããã®é«ãã«ããéã§æã€ãšãã圌ã¯æ æã«ãžã£ã³ããšã¹ãã©ã€ã¯ã«ã©ã³ãã ãªãã¬ãŒã æ°ã®é 延ãè¿œå ããŸãã ãããã®å°ããªå€æŽã¯ãã²ãŒã ã®é²è¡ã«å€§ãã圱é¿ããŸãã
CastlevaniaBotã¯æ±ºå®è«ãåé¿ããããšããŠããŸãããããã§ã圌ã¯ã¹ããŒãã©ã³ãã³ã°ãã1ã€ã®ã³ã³ã»ããã ãã¡ãŒãžããŒã¹ããåãå ¥ããŸãã ã 50ïŒ ã®ã±ãŒã¹ã§ãCastlevaniaBotã¯èµ€ãã³ãŠã¢ãªã«è·³ãè¿ã£ãŠäººéã®éã®ãã³ãžã§ã³ã®ééãå®å šã«åé¿ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/375/733/1ed/3757331edfa439d3ed9eb1ef3be8443e.png)
æ®ãã®ååã®ã±ãŒã¹ã§ã¯ãCastlevaniaBotã¯äººéã®éãšæŠãããšãéžæããŸãã 圌ãã®ç«ã®çã¯åªå 床ãé«ããCastlevaniaBotã¯ç¶æ³ã«å¿ããŠéããããããŸãã¯è·³ãè¿ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/6e4/f51/077/6e4f51077f42c471bc0484e64aaa14b6.png)
æµãšãã®ç«ã®çãäœæããããšã¯äºæž¬äžå¯èœã§ãããããã»ãšãã©ã®ãã¬ã€ã€ãŒã¯éåžžã人éã®éã§ããŒããå®è¡ããŸãã ããããCastlevaniaBotã¯ãããã«æéãè²»ããããã¹ãŠã®ããŒããåéããéåžžã«å³ç«¯ã«ããé ãããå®ç©ãåéããŸãã ãããã¯ãåãã£ã³ãã«ã«å«ãŸããã¢ã€ãã ãæ£ç¢ºã«ææ¡ããŠãããèæ°Žã䜿çšããããšã奜ããããã¯ããã¡ãŒã¿ãŒãé ãããŠãããã£ã³ãã«ãã¹ãããããŸãã ãã ãããã®éšåã«ãšã©ãŸããéã®äººã ãšæŠãå Žåã¯ãå¿ ç¶çã«ã¯ããã¡ãŒã¿ãŒãæŸãããšãã§ããŸãã
å€ãã®å Žåãã¹ããŒãžã¯ååæ¶ã§çµãããç»é¢äžã®ãã¹ãŠã®æµãç Žå£ããŸãã 奜å¥å¿ã匷ãå Žåã¯ãã¬ãã«ã®çµããã«ååæ¶ã§ãã¹ã殺ãããšã¯ã§ããªããšèšããŸãã å®éããã¹æŠäžã§ãã£ãŠãã¯ãã¹ãäœæãããããšããããŸãã ããšãã°ãã¡ãã¥ãŒãµãšã®æŠãã§ã¯ãããã殺ããšãã«ååæ¶ãçŸããããšããããŸãã ãããããããã®ååæ¶ã¯ä»ã®ããã殺ãããšããã§ããŸããã
![](https://habrastorage.org/getpro/habr/post_images/c3e/328/e31/c3e328e311c90509ffc2450e4b991436.png)
ãã¢ãééããåŸãCastlevaniaBotã¯åã³å¹œéã«åºäŒããŸãã äžã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ã圌ã¯äžã®ãã©ãããã©ãŒã ã«ãžã£ã³ãããããšæã£ãŠããŸããããŽãŒã¹ãã¯åœŒã®ç§»åã劚ããŠããŸãã ãã¹æ€çŽ¢ã¢ã«ãŽãªãºã ã«ãã£ãŠäœæãããããŒãã«ãCastlevaniaBotã«ãžã£ã³ãããããã«æ瀺ãããšãã¿ãŒã²ãããã©ãããã©ãŒã ã®åšå²ã®ã¹ããŒã¹ã調ã¹ãŸãã 圌ãæµã«çå°ããããšãå€æããå Žåããžã£ã³ãã¯å®è¡ãããŸããã ãã®å Žåããã®ã¡ã«ããºã ã«ãããCastlevaniaBotã¯ãŽãŒã¹ãããã®å Žæã解æŸãããŸã§åŸ æ©ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/c3b/2ef/817/c3b2ef81726485f94f1f391efa1ab2e6.png)
ãã®ããžã£ã³ãããåã®æµã®ãã§ãã¯ãã«ãŒã«ã¯ãCastlevaniaBotæ§é ã®ååã®1ã€ã瀺ããŠããŸããå¯èœãªéãäžè¬åãããã·ã³ãã«ãªã«ãŒã«ã§å¶åŸ¡ããå¿ èŠããããŸãã ã²ãŒã ã®äžéšã§ã¯ãéåžžã«ç¹å®ã®åé¡ã解決ãã1åéãã®æŠç¥ã䜿çšããå¿ èŠããããŸãã ããããã»ãšãã©ã®ã²ãŒã ã§ã¯ããããã¢ã¯ã·ã§ã³ã¯åå©çšå¯èœãªãã¥ãŒãªã¹ãã£ãã¯ã«ãã£ãŠæšé²ãããŸãã ç§ã¯åœŒããã®ç¹å®ã®æç¹ã§åæ¢ããã幜éã圌ãã®éªéãããã®ãåŸ ã€ããŒã ãæžããŠããŸããã§ããã ãã®åäœã¯ããã¥ãŒãªã¹ãã£ãã¯ã®çµæãšããŠçºçããŸããã
CastlevaniaBotã¯ã3ã€ã®èæ°Žã§ãã¡ã³ãã ããããåããŠã¬ãã«ãå®æãããŸãã ãããã圌ã®æ»ææŠç¥ã¯äºæ¬¡å µåšã«ãã£ãŠæ±ºå®ãããŸãã å®éãå¯æŠåšããªãã£ãå Žåã¯ã1åã®éã§ãã¹ã殺ãæºåãã§ããŠããŸããã ç¹ã«èå³æ·±ãã±ãŒã¹ã¯ãPã§ãã¡ã³ãã ãããã殺ãããšã§ãã èµ€ãã³ãŠã¢ãªã®å Žåãšåæ§ã«ãæŸç©ç·ã«æ²¿ã£ãaã®åããããŒãã«ã«èšé²ããŸããã ã²ãŒã ã®å®è¡äžãCastlevaniaBotã¯åããã¢ã¿ã€ã«ãšäžèŽãããããšã§ããŒãã«ãªãã»ãããå®è¡ããŸãã ããã«ãããã§ãã¹ã殺ãã®ã«æé©ãªãã€ã³ããèšç®ã§ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/d0c/480/2de/d0c4802de26d9629ca4376a67513106f.png)
ã¯ãªã¹ã¿ã«ããŒã«ãæŸãçŽåã«ãCastlevaniaBotã¯äºæ¬¡æŠåšãããŸããŸãªæ¹åã«æããããŒã«ã«è§ŠããåŸã«ç©ºäžã§åçµããããšãç¥ã£ãŠããŸãã ãã®åŸã圌ã¯ã©ã³ãã ã«ç¹°ãè¿ããžã£ã³ãããå¥åŠãªããŒãºã§åãã€ãããšãæãã§ãéã§æã€ã
![](https://habrastorage.org/getpro/habr/post_images/f90/83b/d56/f9083bd561d92261d581128157bdf205.png)
ã¬ãã«2ã®éå§æã«ãCastlevaniaBotã¯ããŒã¡ã©ã³ãé ããŠããæåã®ãã£ã³ãã«ãé¿ããŸãã ãã€ãã¹ãã¢ãã³ãšååããæŠç¥ã¯ã幜éãéã®äººã ã®æŠç¥ã«å察ãããã£ã³ããŒã³ã§ãããããã¯2ããããå¿ èŠãšãã人ã殺ãæåã®æµã§ãã é»ãã³ãŠã¢ãªã¯ãããªããããã«è¿ã¥ããŸã§ã¹ããŒãºãããã®åŸãé¢éžããäžèšã®åçŽãªçºèŠçææ³ã䜿çšããŠéã§æ®ºãã®ã«ååãªã»ã©çŽç·çã«ç§»åããŸãã
![](https://habrastorage.org/getpro/habr/post_images/a3e/d23/01e/a3ed2301ee4a6689ef64648439eb1939.png)
CastlevaniaBotã¯ãå£ã®ã¬ã³ã¬ãç Žå£ããŠãã±ãŒã¹ã®50ïŒ ã§ãå ãäžããããšãªãéšå±ããåºãŠããããã§ãã ããããããã§ããïŒ å®éããã®ãããªå Žåã圌ã¯ã²ãŒã ã®ãã°ã䜿çšããŠçå ãæŸããŸãã äžéšã®ã¯ããã®ç«¯ãã¯ã©ãŠã³ã®äœçœ®ãšæ°Žå¹³ã«äžèŽããŠããããããã¬ãŒã€ãŒã¯ç»é¢ã®äžäžãééãããšãã«ç¬éçã«äžã«ãªããŸãã é³ãèããããã¡ã¬ããèŠããšãããããå®éã«çå ãç²åŸããŠããããšãããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/348/459/ef8/348459ef8dc72330b2d1bf99c63eb07d.png)
ã¬ãã«2ã§ã¯ãæµã移åäžã®ãã©ãããã©ãŒã ã«ãããšããæµãæ»æããŸããã CastlevaniaBotã¯ããã©ãããã©ãŒã ãè¿ã¥ãã®ãåŸ ã£ãŠããã©ãããã©ãŒã ã«å ¥ããå察åŽã«å±ãã®ãåŸ ã£ãŠããéããã ãã§ãã äžæ¹ãã¿ã€ã«ã«è§Šããªããã©ãããã©ãŒã ã«ã¯ããããªéãããããŸãã ãã®ãããªå ŽåãCastlevaniaBotã¯äžéããããã©ãããã©ãŒã ããé£ã³éããŸãã
![](https://habrastorage.org/getpro/habr/post_images/161/7e3/f4c/1617e3f4c2b0f50832dba59992438aa7.png)
ãã¢ã¯ç©ºé£ã¶é ã§æºããããå»äžã«ã€ãªãããCastlevaniaBotã¯ããã«åå¿ããŠåé²ããŸãã ã¢ãã€ã«ãã©ãããã©ãŒã ã®å Žåãšåæ§ã«ãCastlevaniaBotã¯ãç»é¢äžã®ã²ãŒã ãªããžã§ã¯ãã®åªå é äœä»ãã§ã¯ãªãããã®äœçœ®ã«åºã¥ããŠãã®æŠç¥ãé©çšããå¿ èŠãããããšãç¥ã£ãŠããŸãã ããããã¯ã©ã²ã®é ããã¹ãŠé£ã¶ãšããã«ã圌ã¯ãã®æè¡ã«æ»ããããã«äœ¿çšããæŠç¥ãéžæããŸãã
![](https://habrastorage.org/getpro/habr/post_images/c33/0ce/dd8/c330cedd8cdb3748b08988787e1b58df.png)
äœçœ®ã«å¿ããŠãã¯ã©ã²ã®é ã§æºãããããšãªã¢ã«ã€ãªãã次ã®ã¯ãããç»ã£ãåŸãå¥ã®æŠç¥ãããªã¬ãŒãããŸãã 50ïŒ ã®ã±ãŒã¹ã§ãCastlevaniaBotã¯ã¯ã©ã²ã®é ã«æå³çã«ãžã£ã³ãããŠãã¡ãŒãžããŒã¹ããç²åŸãããã¢ã®é£ã®äžéšãã©ãããã©ãŒã ã«æŒããŠæ¬¡ã®æ®µéã«é²ã¿ãŸãã ãããã¯ãCastlevaniaBotãç¥ã£ãŠãã2ã€ã®ãã¡ãŒãžããŒã¹ãã§ãã ã¹ããŒãã©ã³ããŒãšã¯ç°ãªããæéãç¯çŽããããã«å®è¡ãããŸãããããã¯ãããã»ãŒãžã®é決å®æ§ã«å¯Ÿãããã1ã€ã®è²¢ç®ã§ãã
![](https://habrastorage.org/getpro/habr/post_images/0ea/e45/c5c/0eae45c5c564301aa03fa376b85f43f2.png)
ã¯ã©ãã·ã¥ãééããããšã¯ãèå³æ·±ãäœçœ®ããŒã¹ã®æŠç¥ã§ããã3åç¹°ãè¿ãããŸããCastlevaniaBotã¯ãå·ŠåŽã®æãè¿ããã¯ã©ãã·ã¥ããç®çã®äœçœ®ã«å°éãããŸã§åŸ æ©ãããã®åŸããã®äœçœ®ãééããŸãããããééããåŸã圌ã¯åæ¢ããåããå€ãããããããéã§æã¡ãäœæããããªããžã§ã¯ããæŸãããã®åŸã®ãã¯ã©ãã·ã¥ãã§æäœãç¹°ãè¿ããŸãããªããžã§ã¯ãã®1ã€ã¯æœåšçã«èæ°Žã§ããå¯èœæ§ããããããåžžã«ãããã®ãã£ã³ãã«ãç Žå£ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/7d2/2b4/303/7d22b4303c14e5f460b4b090918ef1fb.png)
ãã¯ã©ãã·ã¥ãã®åŸãæåã«å¹œéãšéªšã®å¡ãçŸããŸãããŽãŒã¹ãã®çãã¯éåžžã«ç°¡åã§ããããããã殺ãã«ã¯æ°åã®ããããå¿ èŠã§ãã骚ã®å¡ã¯åããªããããçãã®ã¯ããã«ç°¡åã§ããé人ã®ããŒã«ãšåãæŠç¥ãç«ã®çã«äœ¿çšãããŸãã
![](https://habrastorage.org/getpro/habr/post_images/7b1/0ad/931/7b10ad9316ab8e0ef3f53007740ffd4a.png)
ã¬ãã«2ã¯éåžžãCastlevaniaBotã§çµãããèãªãæ°Žã®ç¡éã®æµãã§ã¡ãã¥ãŒãµãå³åº§ã«æ®ºããŸãããããã圌ã¯ä»ã®ã¿ã€ãã®äºæ¬¡å µåšãæ±ãæºåãã§ããŠããŸãã
![](https://habrastorage.org/getpro/habr/post_images/46a/02c/a28/46a02ca28233821148bd64afcf43ef65.png)
ã¬ãã«3ã®ãžã£ã³ããŒã衚瀺ãããŸããCastlevaniaBotã¯ã圌ããéã®éçã«é£ã³èŸŒãã®ãåŸ ã€ããšã§åå¿ããŸãããžã£ã³ããŒããã¬ã€ã€ãŒããžã£ã³ãããããšãCastlevaniaBotã¯å察æ¹åã«åããå°é¢ã«è§Šããåã«éã§ããããæã¡ãŸãã
![](https://habrastorage.org/getpro/habr/post_images/863/ec4/58e/863ec458ebc43b8c3959750018c9952e.png)
çœãã¹ã±ã«ãã³ãããã«çŸããŸãã圌ãã¯éåžžã«ã©ã³ãã ãªãã¿ãŒã³ãæã£ãŠããŸããããã«ã圌ãã¯éªšãæããŸããã¬ãã«3ã§ã¯ãCastlevaniaBotã¯ããããåé¿ããããšããŸãããããããã®åŸã®ã¬ãã«ã§ã¯ã骚ã¯æ°ãæ£ããã ãã§ãããåã«ç¡èŠããæ¹ãå¹ççã§ããããšãããããŸãããCastlevaniaBotã®çœãã¹ã±ã«ãã³ã«å¯ŸããæŠç¥ã¯ãåçŽã«ããããåãããšã§ãã
![](https://habrastorage.org/getpro/habr/post_images/c4d/eaf/9e4/c4deaf9e44458c08487d89d22b5a9618.png)
CastlevaniaBotã¯ãã«ã©ã¹ãé£ã¶ã®ãåŸ ã¡ãŸãã次ã«ããã¬ãŒã€ãŒã«å¯Ÿããã¬ã€ãŽã³ã®é«ãã«åºã¥ããŠããžã£ã³ãåŸã«éã§æã€ã¿ã€ãã³ã°ãæ£ç¢ºã«èšç®ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/d0b/7ce/78c/d0b7ce78cf8ea65a6001ca63a0a1d087.png)
次ã®ã¹ããŒãžã«é²ãã åŸãCastlevaniaBotã¯ãã¯ããã¡ãŒã¿ãŒã衚瀺ãããããããã«åå¥ã«åœãããæ¶ãããŸã§åŸ æ©ããŸããç»é¢ã®å°ãå ãšåŸããã«ã©ã¹ã§ãããããã¯ã¯ã¿ãªã¬ã©ã¹ã®æŠãã®åã«ãããããç Žå£ãã誀ã£ãŠããããã«åœãã£ãŠäžèŠãªå¯æŠåšãç²åŸãããªã¹ã¯ãæžãããŸãã
![](https://habrastorage.org/getpro/habr/post_images/fb3/a6a/c85/fb3a6ac852c7633a530ea2666f3cf3c0.png)
ãã€ã©ã®åºçŸå Žæã®ããåã§ãCastlevaniaBotã¯ãã©ãããã©ãŒã ã«å·Šã«ç§»åããŠãé ããããéã®è¢ã®åºçŸãããªã¬ãŒããŸãã圌ã¯ãããæã¡äžããããšãã§ããªãã®ã§ãåã«èå³ã®ããã«ãããè¡ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/2f4/62d/ebe/2f462debef355d502ee9969489c0fa9b.png)
次ã«ãCastlevaniaBotã¯ãçå£ãèœã¡ããã£ã³ãã«ã«æå³çã«åœãããŸããã¯ããã¡ãŒã¿ãŒã®å Žåã®ããã«ã圌ã¯åŸç¶ã®ã¢ã¯ã·ã§ã³äžã«å¶ç¶ãããæŸããªãããã«ãããè¡ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/094/9c7/0fa/0949c70faa3fcc414107b04ae8e1be68.png)
ãããŠæåŸã«ããã€ã©ã¯èæ°Žããã®éšã«è² ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/ee4/0a6/75a/ee40a675a2432df6a4a3c24d2681c682.png)
CastlevaniaBotã¯ããã¹ãŠã®ãã¹ãšæŠãããã«å¯æŠåšã䜿çšããæºåãã§ããŠããŸããå®éãäœããã®çç±ã§è±èãå«ããããã¯ãç Žå£ããããšãäºæ¬¡å µåšã®äœ¿çšæŠç¥ãå®å šã«å€ãããŸãããã®ãããã¯ããªããã°ãäžã®ãã©ãããã©ãŒã ã«ç»ãããšã¯äžå¯èœã§ãããã®ãããäžã®ã¬ãã«ã§æŠããªããã°ãªããŸããã
ã¬ãã«4ã§ã¯ãã¢ãã€ã«ãã©ãããã©ãŒã ã埩掻ããŠããŸãããããŠãä»åã¯éäžã§èµ€ãã³ãŠã¢ãªãçŸããå¯èœæ§ããããŸãã圌ãã®æ»æã®å¯èœæ§ãæžããããã«ã圌ã¯ãã©ãããã©ãŒã ã®å°çãèµ€ãã³ãŠã¢ãªã®ç Žå£ãšäžèŽããããšãæåŸ ããŠããŸããèµ€ãããŠã¹ã¯äžå®ã®ééã§è¡šç€ºããããããCastlevaniaBotã¯ã³ãŠã¢ãªãªãã§æ°Žå Žãééããã®ã«ååãªæéãäžããŸãã圌ã¯ãã©ããããŒã ã«ããéã«ã³ãŠã¢ãªãšã©ã³ãã ã«çŸããéã®äººã ã«å¯ŸåŠããæºåãã§ããŠããŸãããããã¯ãã©ããããŒã ã«ãžã£ã³ãããŠéåžžã«å±éºã§ããCastlevaniaBotã䜿çšããæŠç¥ã¯ãæåã®å¯èœæ§ãé«ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/f4a/cb3/35b/f4acb335ba2cf17e29d42dfffe51d689.png)
åãæŠç¥ãã¹ããŒãžã®éäžã§ç¹°ãè¿ãããŸããä»åã¯ã移åãããã©ãããã©ãŒã ãžã®ãžã£ã³ããã¯ããã«é·ãããããžã£ã³ãã®åã«èµ€ãããããç Žå£ããããšãéèŠã§ãã
![](https://habrastorage.org/getpro/habr/post_images/6b0/42c/e0d/6b042ce0d1ee7845c83d5ff1ea5c65cf.png)
äžèšã®ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããã«ãããããã¯åžžã«äºãã«64ãã¯ã»ã«ã®è·é¢ã«ãããŸããããããããã¯ãã¬ãã«ããŒã¿ãROMã«ãã¯ã¿ãŒã°ã©ãã£ãã¯ã¹ãšåæ§ã®åœ¢åŒã§è¡šç€ºãããã¹ããŒã¹ãç¯çŽããŠãããšããäºå®ã«ãããã®ã§ããããããäœããã®çç±ã§ããã¶ã€ããŒã¯ãã£ã³ãã«ãäžå¿ã§ã¯ãªããã¿ã€ã«ã®ç«¯ã«åãããããšã«ããŸããããã®å Žåããã£ã³ãã«ã¯ãã©ãããã©ãŒã ã®äž¡ç«¯ã«æããããŸãããããã£ãŠãããããæã£ãåŸã衚瀺ããããªããžã§ã¯ãã¯ããã®äžã®æ°Žæ·±ã«çŽæ¥èœã¡ãå¯èœæ§ããããŸãã
ãã段éã§ããã¶ã€ããŒã¯ãã®åé¡ã«æ°ä»ãããšæããŸãããããããããŸã§ã«ãå®æãããã¹ãŠã®ã¬ãã«ã§äžé£ã®ãã£ã³ãã«å šäœãã·ããããŠã¿ã€ã«ã®äžå¿ã«åããããšãä»ã®åé¡ãçºçããå¯èœæ§ããããŸãã代ããã«ããããããäœæå Žæã®å³ãŸãã¯å·Šã«1ãã¯ã»ã«ãã€ã©ã³ãã ã«ã·ããããããšã«ããŸããããããã£ãŠãã¹ã¯ãªãŒã³ã·ã§ããã®å³åŽã«ããããããã«åœãã£ãåŸããããã«å«ãŸããèæ°Žããã©ãããã©ãŒã ã«èœã¡ãå¯èœæ§ã¯50ïŒ ã§ããæ®ãã®ååã®ã±ãŒã¹ã§ã¯ãæ°Žã«èœã¡ãŸãã
CastlevaniaBotã¯éåžžãèæ°ŽãããŸã貯ããããããããã®ãã£ã³ãã«ãå®å šã«é¿ããŸããããããããå¿ èŠãªãã圌ã¯ãããããèœã¡ãèæ°Žã確å®ã«éžæããããã«ããããã®ããããã«éåžžã«è¿ã¥ããŸãã
次ã®CastlevaniaBotã¯ãããããã®ãžã£ã³ããŒãšåºäŒããŸãããã®é åã§ã¯ããžã£ã³ããŒã殺ããåŸã軞ãé »ç¹ã«è¡šç€ºãããŸããèæ°Žã¯ãã¹ãšæŠããšãã«ç¹ã«åœ¹ç«ã€ãããCastlevaniaBotã¯ããããåé¿ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/50e/182/f5f/50e182f5fe39bc3e3145bb68aae819d7.png)
ã¬ãã«ã®æåŸã®ã¹ããŒãžã«ç§»åãããšãCastlevaniaBotã¯ããŒã³ãã©ãŽã³ãå®å šã«ç¡èŠããŸãã
![](https://habrastorage.org/getpro/habr/post_images/093/45e/a6c/09345ea6ca0024888d7be0f8d25785f6.png)
ãããã圌ã¯æ¬¡ã®2ã€ãçŽ æ©ãå¹ãé£ã°ããŠåãé€ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/d5f/0e5/d57/d5f0e5d5706307c36d5d9dd9c19052e7.png)
ãã©ã³ã±ã³ã·ã¥ã¿ã€ã³ã®ã¢ã³ã¹ã¿ãŒãšã€ãŽãŒã«ã¯ãéãšèæ°Žã䌎ã絶ãéãªãææã«ãã£ãŠç Žå£ãããŸããä»ã®ãã¹ãšåæ§ã«ãCastlevaniaBotã¯ä»ã®å¯æŠåšãåæ§ã«ããŸãã¯ãããããŸã£ãã䜿çšããã«åŠçã§ããŸããããããèæ°Žãªãã§çãæ®ãå¯èœæ§ã¯æžå°ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/23f/606/220/23f6062203ce695c2a38c9d2d170926e.png)
ã¬ãã«5ã§ã¯ãCastlevaniaBotã¯åã³çœãã¹ã±ã«ãã³ãæ±ããŸãããããä»åã¯ãã¬ãã«3ã§ã¯ãã£ãã«èŠãããªãæŠç¥ã®ããªãšãŒã·ã§ã³ã䜿çšããŸããç»å Žå Žæã«ãã£ãŠã¯ãCastlevaniaBotã¯èæ°ŽãæããŠããæ»ã£ãŠã¹ã±ã«ãã³ãçã«åŒã蟌ã¿ãŸããé段ã®è¿ãã§ã圌ã¯ã¹ã±ã«ãã³ã®äžãéãæããŠãããã¹ãå Žæã«åããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/64e/c6c/610/64ec6c6100a72265aab1f024c6561718.png)
ã¬ãã«5ã§ã¯ãçãŸãå€ãã£ãèµ€ãã¹ã±ã«ãã³ãæåã«è¡šç€ºãããŸããCastlevaniaBotã¯ãæåŸã«ãããããæéã远跡ããèµ€ã骚ãæž¡ãã®ãå®å šãã©ãããå€æããŸãã
![](https://habrastorage.org/getpro/habr/post_images/8b6/628/54c/8b662854cf5582b93cf299b0852964c9.png)
ã¹ããŒãž14ã®æåã®éšå±ã¯ã1ã€ã®å·šå€§ãªæŠç¥ã«ãã£ãŠå®å šã«åŠçãããŸãã CastlevaniaBotã¯æåã«ãžã£ã³ããŒã殺ããŸãããããã圌ã¯äžã®éšå£«ãaãæããéã§xãæã¡ããã£ãããšäžã®é段ãç»ãã®ãåŸ ã¡ãŸããããã«ãããäžã®éšå£«ãç»é¢ã®åŸãã«æŒãåºããã圌ã倱toããŸãããããã圌ã¯ãäžéšé åã軞ããèªç±ã«ãªãã®ãåŸ ã¡ããããããæã¡ãçŸãããªããžã§ã¯ããåéããŸãããããã圌ã¯é段ã®ä»ãæ ¹ã«è¿ã¥ããäžéšå£«ã«éããŸããããããã€ããaãé«ãæãããšãCastlevaniaBotã圌ãè¿œããããŸããããã«ãããäžéšã®éšå£«ãç»é¢ããã»ãŒå®å šã«å·Šã«æŒãåºãããŸãããç Žå£ãããŸããã CastlevaniaBotã¯ãæ»ã£ãŠããpossiblyã®äžãå Žåã«ãã£ãŠã¯2çªç®ã«æšãŠãããaã®äžã§æ²ãããæçµçã«æ¬¡ã®ãµãã¹ããããžã®é段ã«è¿ã¥ããŸãããã£ãïŒ
![](https://habrastorage.org/getpro/habr/post_images/93a/727/488/93a727488c3cd37cd381668415c1261b.png)
ããã€ãã®é段ãééããåŸãCastlevaniaBotã¯åã³againãæã€éšå£«ã«äŒããŸãã圌ã¯èæ°Žã䜿ã£ãŠåœŒãæ°çµ¶ããããããŠéã§åœŒãçµããŸããèæ°Žããªãå Žåã圌ã¯éã§whiãç¶ããæ»ã¬ãŸã§éšå£«ãè¿œããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/81c/992/8d6/81c9928d6a77554910fb989df1fd4932.png)
ã¬ãã«5ã®é段ãäžãããšãCastlevaniaBotã¯ãå€ãã®å Žåãèµ€ãã¹ã±ã«ãã³ãé段ã®äžãŸãã¯äžãã移åããã®ãåŸ ããªããã°ãªããŸãããã¬ãã«ã®çµããã«åãã£ãŠã骚ã®å¡ã¯ãã®ã¿ã¹ã¯ãããã«å°é£ã«ããŸããã¹ã±ã«ãã³ã®åãæ¹ã«å¿ããŠãCastlevaniaBotã¯é段ãäžäžã«æ©ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/65a/cd8/ed8/65acd8ed8ae89e882702cb9387b8c432.png)
èµ€ãã¹ã±ã«ãã³ã®ã°ã«ãŒããåŠçããã«ã¯ãããããç¡éã«ãŒãã«é¥ããªãããã«è¿œå ã®ããžãã¯ãå¿ èŠã§ãã CastlevaniaBotãæåã®ãããã埩掻ããæéããããããªééã§ããããéã§åå¥ã«åããšãç¡éã«åŸ©æŽ»ããã¹ã±ã«ãã³ãç Žå£ãç¶ãããµã€ã¯ã«ã«é¥ããŸãããããé¿ããããã«ãCastlevaniaBotã¯ãèµ€ã骚ã®å±±ã®æšªã«ç«ã£ãŠããèµ€ãã¹ã±ã«ãã³ã®éã§ãããããŸããããã®èŠåã«ãããèµ€ã骚ã¯ãŸã çããŠããèµ€ãã¹ã±ã«ãã³ã®é£ã§çãŸãå€ããããšãã§ããäž¡æ¹ã®éªšãåæã«å©ãããšãã§ããŸããç Žå£ã®ééããªããã°ããµã€ã¯ã«ã¯äœæãããŸããã
![](https://habrastorage.org/getpro/habr/post_images/446/82b/18d/44682b18de7a81b58d01dd734e4f57f3.png)
æ»ã«è³ãé·ãå»äžã§ã¯ã©ã²ã®é ãé¿ããããã«ããããã¯æ¢ãŸãããéåžžéäžã«çŸããéšå£«ãé©ãããŸãã圌ã¯ãã¬ãŒã€ãŒããã¡ãŒãžãåããããšãªãèæ°Žã«enç¶ãšããæµãééã§ãããšããäºå®ãå©çšããŠããŸãã
![](https://habrastorage.org/getpro/habr/post_images/cab/d68/587/cabd685876fb241b8362a9f2f83482d5.png)
èæ°Žããªãå ŽåãCastlevaniaBotã®å»äžã®åã§ããŒã¡ã©ã³ãåãããšãã§ããŸããäžé£ã®æåããç¶æ³ã§ã圌ã¯ããã䜿çšããŠéšå£«ãç Žå£ããæŠåšã®ã¢ããã°ã¬ãŒããååŸããŸãã
![](https://habrastorage.org/getpro/habr/post_images/444/738/a60/444738a60282b741af01e775ebfe70b2.png)
ãã£ãã¹ã«ããã¢ãããã¯ãäžã€ç·šã¿ãæãå§ããåã«èæ°Žã§æ»ãé©ãããããã«åœŒå¥³ã殺ããŸãããŸããããªãã«ããŒã¡ã©ã³ã§ãã¹ãåãããšããããŸãããããã«ã¯éåžžããã€ãã®è©Šã¿ãå¿ èŠã§ãã
![](https://habrastorage.org/getpro/habr/post_images/72a/fdb/57a/72afdb57a40c4f9613a71c6edd5beb17.png)
CastlevaniaBotãã¬ãã«6ã®éå§æã«æ©ãééããäž»ãªæŠç¥ã¯ã移åãç¶ããããšã§ãã圌ã¯äžãã巚倧ãªã³ãŠã¢ãªã®éã§æã£ãŠããããæ°çµ¶ããã次ã«äžããçŸãã巚倧ãªã³ãŠã¢ãªã®äžã§è·³ããŸããããã«ãæã 圌ã¯ã³ãŠã¢ãªãæããç«ã®çããããããéã§ããããæã€å¿ èŠããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/507/fa3/c82/507fa3c822d5a767e6b6a4916d1d2857.png)
æ©ãæž¡ãããšã¯ä¿èšŒãããŠããŸãããããã¯ãã¹ãŠã巚倧ãªã³ãŠã¢ãªãã©ãã ãå奜çã«ãªããã«ãã£ãŠç°ãªããŸãã
次ã®ãµãã¹ãããã§ã¯ãCastlevaniaBotã¯æ©ã®ã¯ããã°ã©ãã2å以äžäœ¿çšããŠãã¯ã·ãšãžã£ã³ããŒãééããŸããã¯ããã°ã©ããªãã§ã圌ã¯éã§éãæ©ãããšããŸãã
![](https://habrastorage.org/getpro/habr/post_images/d06/4fd/3f3/d064fd3f3b249a76112632c100b34ccd.png)
CastlevaniaBotããã©ãã¥ã©ã®å¡ã«å°éãããšãé段ãæ°åäžäžããŠåã³ãã£ã³ãã«ãäœæã§ããŸããããã«ãããå°ãªããšã20åã®ããŒããéããããšãã§ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/338/cf3/525/338cf3525c8b5c0361cb98c23681f8b3.png)
ãã©ãã¥ã©ã®éšå±ã®å³ç«¯ã®ããããã¯èæ°Žãäžããããã¯ãã©ãã¥ã©ã®ç¬¬äºã®åœ¢æ ãšæŠãããã«å¿ èŠã§ãã
ãã©ãã¥ã©ã®æåã®åœ¢æ ãæã¡è² ããã«ã¯ãé éšã«16åã®ææãå¿ èŠã§ããCastlevaniaBotã¯ãã©ãã¥ã©ã«äœåºŠãè¿ã¥ãã圌ãç«ã®çã§æã€ã®ãåŸ ã£ãŠãããããŒã«ãé£ã³è¶ããŠãã©ãã¥ã©ã®é ãéã§æã¡ãŸãã
![](https://habrastorage.org/getpro/habr/post_images/8ad/47e/af9/8ad47eaf9a2a962288480bbf49b844fc.png)
ã¯ãããŒã¢ã³ã¹ã¿ãŒãšåŒã°ãããã©ãã¥ã©ã®2çªç®ã®åœ¢æ ã¯ããããã«ãã£ãŠèæ°Žã«é©ããããäœåºŠãéã§é ãæã¡ãŸãããã£ãã¹ã«ããã¢ãããããããéãæã ã¯ãããŒã¢ã³ã¹ã¿ãŒããã¬ã€ã€ãŒã«ãžã£ã³ãããŸããCookie Monsterã¯ç«ã®çãæããŸããç«ã®çã¯éåžžãèæ°Žãšéã§ç Žå£ã§ããŸããæã«ã¯æŠåšã®ã¢ããã°ã¬ãŒããååŸã§ããŸãããããŠã絶ãéãªã絶ãéãªããµã€ã¯ã«ã§äºéã®èæ°Žãã¯ãããŒã¢ã³ã¹ã¿ãŒãæãŸããçŽ æ©ãåå©ããããããŸãã
![](https://habrastorage.org/getpro/habr/post_images/bdf/05b/266/bdf05b2661aff44a2b0804865013b95b.png)
CastlevaniaBotã¯ãæåŸã®ã¯ã¬ãžããã®åŸã«éå§ãããé£æ床ã¢ãŒããã©ã®ããã«ééããããç¥ããŸããããã ããåã®äžåºã§ã²ãŒã ãåã³éå§ããããšãã²ãŒã ãµã€ã¯ã«ãã€ãããŒãã«ãªã»ãããããéåžžã¢ãŒãã«åãæ¿ãããŸããããã«ãããCastlevaniaBotã¯ç¡éã«ãã¬ã€ã§ããŸãã
![](https://habrastorage.org/getpro/habr/post_images/4c6/3a6/c4a/4c63a6c4ad709d26e0256a6ecdf07a61.png)
ãã¡ã€ã«
CastlevaniaBot_2018-12-09.zip
ãã¡ã€ã«ã«
.zip
ã¯ä»¥äžãå«ãŸããŸãã
-
src
-ãœãŒã¹ããªãŒã -
CastlevaniaBot.jar
â . -
lgpl-2.1.txt
â .
æã¡äžã
- Nintaco â NES.
-
Castlevania (U) (PRG1) [!].nes
â ROM .
- Nintaco
Castlevania (U) (PRG1) [!].nes
. -
CastlevaniaBot.jar
.zip
. - Run Program, Tools | Run Program...
- JAR , Find JAR....
- Load JAR, .
- Run.
Copyright © 2018 meatfighter.com
. / LGPLv2.1. |