äžéšã®ãããã¯ã¯é¢é£ããŠããªãããããã®èšäºã¯ããã€ãã®ã»ã¯ã·ã§ã³ã«åãããŠããŸãã ãŸããåºå€§ãªããããã®è³æã¯å°ããªæ¬ã«ã¯ååãªã®ã§ã詳现ãç解ããã人ã®ããã«èšäºãžã®ãªã³ã¯ãæäŸãããšã³ãžã³ã®ã¢ãŒããã¯ãã£ã«é¢ããäžè¬çãªããšã ãã説æããŸãã
ç 究ã®ããã«ã FCEUXãšãã¥ã¬ãŒã¿ãŒã«çµã¿èŸŒãŸããŠããéã¢ã»ã³ãã©ãŒãšãã³ãŒãããŒã¹ãæäœããããã®æåãªIDAéã¢ã»ã³ãã©ãŒã䜿çšããŸãïŒããŒãããã¯ãšãã³ã䜿çšããã«å®è¡ã§ããŸãïŒã ããïŒãFCEUdã®ããã¥ã¡ã³ããã·ãªãŒãºïŒã«ã¯ããããã¬ãŒã®äœ¿çšã«é¢ããããã€ãã®èšäºããããŸãã æ€çŽ¢ã®ã¢ã€ãã¢ã¯ããããããªããŒã¹ãšã³ãžãã¢ãªã³ã°ã«æºãã£ãŠãããã¹ãŠã®äººã«ç¥ãããŠããŸããã¡ã¢ãªå ã§ãç®çãç¥ãããŠããã調æ»äžã®æ©èœã«çŽæ¥ãŸãã¯éæ¥çã«é¢é£ããã¢ãã¬ã¹ãèŠã€ãããã®ã¢ãã¬ã¹ã®ãããã¬ãŒã«ãã¬ãŒã¯ãã€ã³ããèšå®ããå¿ èŠããããŸã 次ã«ãç 究è ã¯ã²ãŒã ãèµ·åãããã¬ãŒã¯ãã€ã³ããæ©èœããã®ãåŸ ã¡ããããããªã¬ãŒããã³ãŒãã調ã¹ãŠãå éšã§äœãèµ·ãã£ãŠãããã«é¢ããæ å ±ãååŸããŸãã 以äžã¯ããšã³ãžã³ã®ç 究ã®äŸã§ãã
ç»é¢ã¹ã¯ããŒã«ã®å®è£
ã²ãŒã ã®ã¬ãã«ããšã«è€æ°ã®ç»é¢ãããå Žåããã¬ã€ã€ãŒãå¢çç·ã«è¿ã¥ããšãåžžã«ç»åãæŽæ°ããå¿ èŠããããŸãã ãšãã¥ã¬ãŒã¿ã§ã²ãŒã ãDarkwing Duckããå®è¡ããæåã®ã¬ãã«ãããŒãããŠã [ãããã°]-> [ååããŒãã«ãã¥ãŒã¢ãŒ]ç»é¢ãã¥ãŒã¢ãŒãéããŸãã ããã§äžæ©é²ãã§ãã®ãŠã£ã³ããŠã®å€æŽã芳å¯ãããšãã²ãŒã ãç·æ¥äºæ ã®åã¹ãããã§2ãããã¯ïŒå2x2ã¿ã€ã«ãåèš8ã€ã®ãããªã¡ã¢ãªã¿ã€ã«ïŒãæŽæ°ããŠããããšãããããŸãã
![](https://habrastorage.org/files/a9d/9f9/ddb/a9d9f9ddb08546a78a2c91ba61e93589.png)
ïŒä»åã¯å€æŽã®ãããã²ãŒã ããã¯ã®ã¹ã¯ãªãŒã³ã·ã§ããã䜿çšããŸãïŒ
ãããã£ãŠããã©ãã¯ã¯ããŒã¯ã®16ã¹ãããã§ã1è¡ã«ã¹ã¯ããŒã«ãè¡ããããã®æç¹ã§å®å šã«æºåãæŽããŸãã NESãããªããã»ããµã¯ããªãã»ããã䜿çšããŠç»é¢ã®ç»é¢éšåã衚瀺ã§ãããããç»é¢ã¯å³åŽã«æ§ç¯ããç¶ããæ¢ã«æç»ãããŠãããã¹ãŠã®ã¿ã€ã«ãã³ããŒããããšã¯ãããŸããã ãŸãããããªããã»ããµã«ã¯ãããŒãžã®æ°Žå¹³æ¹åã®ç¹°ãè¿ããèšå®ã§ãããªãã·ã§ã³ãã©ã°ãããã€ããããŸãã ãã®ãããç»é¢ãå³ã®å¢çãŸã§å®æãããåŸã次ã®è¡ãå·ŠåŽã«äœæãããŸãã
ã¹ã¯ããŒã«ã®ä»çµã¿ãæè¡çã«ç¢ºèªã§ããŸãã ãããè¡ãã«ã¯ããããã¬ãŒã§ãã¬ãã«ãæ¢ã«èªã¿èŸŒãŸããŠããæç¹ã§ããããªã¡ã¢ãªã«èšé²ãããã¬ãŒã¯ãã€ã³ããã¢ãã¬ã¹ç¯å²$ 2007- $ 23BF ïŒãããã¬ãŒã®PPU MEMãªãã·ã§ã³ïŒã«èšå®ããå¿ èŠããããŸãã ãã®åŸãã²ãŒã ãéå§ãããç·æ¥äºæ ãé²è¡ããŠã¹ã¯ããŒã«ãæ©èœãããšãã¥ã¬ãŒã¿ãŒãã²ãŒã ãåæ¢ãããããã¬ãŒãŠã£ã³ããŠã衚瀺ããŸãã
ROM:C119 loc_C119:; CODE XREF: ROM:C137 ROM:C119 LDA $360,X ROM:C11C BMI locret_C139 ROM:C11E STA byte_2006 ROM:C121 LDA $361,X ROM:C124 STA byte_2006 ROM:C127 LDY $362,X ROM:C12A ROM:C12A loc_C12A:; CODE XREF: ROM:C132 ROM:C12A LDA $363,X >ROM:C12D STA byte_2007 ROM:C130 INX ROM:C131 DEY ROM:C132 BPL loc_C12A ROM:C134 INX ROM:C135 INX ROM:C136 INX ROM:C137 BNE loc_C119
NESã®ãããªã¡ã¢ãªãšã®éä¿¡ã¯ãããã»ããµã®ã¢ãã¬ã¹ç©ºéãä»ããŠè¡ãããã¢ãã¬ã¹$ 2006ã¯ã¢ãã¬ã¹æå®ã«äœ¿çšãããã¢ãã¬ã¹$ 2007ã¯ã¡ã¢ãªãžã®å€ã®èªã¿åããšæžã蟌ã¿ã«äœ¿çšãããŸãã 次ã«ãäžèšã®ã³ãŒãã®ããžãã¯ãç解ã§ããŸã-ããã¯ãRAMãããããªã¡ã¢ãªã«ã³ããŒããå Žæãå Žæãããã³ãã€ãæ°ã«é¢ããã¬ã³ãŒããèªã¿åãæ©èœã§ãã ã¬ã³ãŒãèªäœã¯360ãã«ããå§ãŸãã次ã®åœ¢åŒã«ãªããŸãã
COPY_TO_VIDEO_REC |ãã€ã0xFFãåæ¢ããŸã ãããã§ã COPY_TO_VIDEO_REC = ïŒãããªã¡ã¢ãªã® ã¬ã³ãŒã ã¢ãã¬ã¹ãã³ããŒãããã€ãæ°ãã³ããŒãããã€ãïŒ ã
ããã«ããã¬ãŒã¯ãã€ã³ãã¯0x360-0x36Fé åã«æžã蟌ãããã«ã·ãããããŸãããã®é åã«ã¯ãã®ããŒã¿ãæ ŒçŽããããããã¬ãŒã¯ã¢ãã¬ã¹$ DB40- $ DD09 ïŒ457ãã€ãïŒã«å€§ããªã¹ã¯ããŒã«æ©èœã衚瀺ããŸãã ãã®é¢æ°ã¯å€ç®çã§ãã²ãŒã ã®ãã¹ãŠã®ã¿ã€ãã®ã¹ã¯ããŒã«ïŒå³ãäžãäžïŒã§äœ¿çšãããããŸããŸãªãããã®èšå®ã«å¿ããŠå€ãã®ãã©ã³ãããããŸãã é¢æ°ã®å ¥åã«ã¯ãã»ã«23 ãã«ãš25ãã« ïŒ2ãã€ãïŒã®æåã¹ã¯ããŒã«å€ããããŸãã
次ã«ã調æ»ã®äžéšãã¹ããããïŒãã¬ãŒã¯ãã€ã³ãã®åé 眮ãšãããŒã¿ãæåã«ã©ãããæ¥ãŠãã©ã®å€æãåãããã確èªããããšã§æ§æãããŸãïŒãå€æé¢æ°ã®ã°ã©ããã¬ã€ã¢ãŠãããŸãã
![](https://habrastorage.org/files/424/fe1/304/424fe1304ae54eaebd443b41f53d6dc7.png)
ã°ã©ããããããããã«ãé¢æ°å šäœãåæããŸããã§ãããããã®äžéšã«éäžããŸãã-140ãã« ãããã«RAMã«ã¯ãç»é¢ã«è¡šç€ºããããã¯ããããã¯ããéžæããããããã¯ã€ã³ããã¯ã¹ãããããã®ã·ãªãŒãºã®ã¬ã³ãŒããã³ã³ãã€ã«ãããŸããããªã¡ã¢ãªïŒè¡0x360 ïŒã«ã³ããŒããŸããããã¯ã¹ã¯ããŒã«ããã€ã¹ãç解ããã®ã«ååã§ããäžéšã«ã¯ãROMã€ã¡ãŒãžå ã®ã¢ã¯ãã£ããªç»é¢ã®çªå·ã«é¢ãã座æšã®å€æãšããŒã¿ã®éžæãèšè¿°ãããŠããŸãã
ä»ã®ãšã³ãžã³ã§ã¯ãããã€ã¹ã¯äŒŒãŠããŸã-ã³ããŒçšã®ã¢ãã¬ã¹ãšãã¯ããããã¯ã€ã³ããã¯ã¹ã®æ ŒçŽçšã®ã¢ãã¬ã¹ããããåãã¢ãã¬ã¹ã«ããå ŽåããããŸãã
ã¬ãã«æ§æãšã¡ã¢ãªãã³ã¯ã®åãæ¿ã
ã¬ãã«ã«é¢ããããŒã¿ã¹ããªãŒã ãããã«åŠçããããšã§ãã¹ãã¬ãŒãžã®ãœãŒã¹ã®å Žæãã€ãŸãROMã€ã¡ãŒãžã«èšé²ããå Žæã«ã¢ã¯ã»ã¹ã§ããŸãã å€ãã®å Žåããã¹ãŠã®ã¬ãã«ã®ããŒã¿ã¬ã³ãŒãã¯ã°ã«ãŒãåãããã¬ãã«æ§æãšåŒã°ããŸãã
ããšãã°ãã²ãŒã ãChipïŒDaleãã®ã¬ãã«ãšãã¢ã®æ§æïŒ
ãã¢ã®èª¬æïŒ25ãšã³ããªïŒ
1E673 - . 1E68B - Y . 1E6A3 - X . 1E6BB - . 1E6D3 - . 1E6EB - . 1E703 - ( ). 1E71B - ( ). 1E734 - Y. 1E74C - X.
ã¬ãã«ã®èª¬æïŒ15ãšã³ããªïŒ
101B2, 101A3 - X ( ). 101D0, 101C1 - X ( ). 101EE, 101DF - Y ( ). 1020C, 101FD - Y ( ). 1022A, 1021B - . 10248, 10239 - . 1E201 - ( ). 1E26A - . 1E2A6, 1E297 - ( ). 1E2C4, 1E2B5 - ( + ). 1E210 - . 1E23D - (8x=enemy gfx, 9x=tile gfx). 1E24C - (8x=enemy gfx, 9x=tile gfx). 1E25B - , . 1E279 - , . 1E288 - ( ). 1E22E - . 1E21F - .
ãããã£ãŠã16ãããã§ã¯64 KBã®ã¡ã¢ãªããã¢ãã¬ã¹æå®ã§ãããROMã€ã¡ãŒãžã®ãµã€ãºãã¯ããã«å€§ãããªãå¯èœæ§ãããããã泚ææ·±ãèªè ã¯ãã¹ãŠã®ãã€ã³ã¿ãŒã2ãã€ãããå æããªãçç±ãå°ããŸãã çãã¯ãNESã§ã¯ããã®å¶éãåé¿ããããã«ãç°ãªãã¡ã¢ãªãã³ã¯ãããããŒã®æ¥ç¶ãå¶åŸ¡ããã«ãŒããªããžã§ç¹å¥ãªãã€ã¯ããããã䜿çšããããšããããšã§ãã ROMããã®èªã¿åããè¡ãããã»ããµã®ã¢ãã¬ã¹ç©ºéã«ã¢ã¯ã»ã¹ãããšãã«ãã©ã®ç¹å®ã®ROMã¡ã¢ãªãã³ã¯ãèªã¿åããã決å®ããŸãã NESãžã®ãã€ã³ã¿ãŒã«ã€ããŠã¯ãcah4e3ã®èšäºãåç §ããŠãã ãã ã
ããã°ã©ãã³ã°æã®ã¡ã¢ãªãã³ã¯ã¯ãNESã®é倧ãªå¶éã§ãïŒç¹å®ã®ã¿ã¹ã¯ã§ã¯ãç¹å®ã®ãã³ã¯ã«ç©ºãã¹ããŒã¹ãå¿ èŠãªå ŽåããããŸãããä»ã®ãã³ã¯ã«ã¯ãŸã ååãªå Žåã§ããããŸãïŒããã³ç 究ã®è¿œå ã®é£ããïŒã¡ã¢ãªã«å¯Ÿå¿ãããã€ã³ã¿ãŒãšãã³ã¯ãæ¯èŒããå¿ èŠããããŸãïŒã
ãã³ã¯éã§ããŒã¿ãåæ£ãã2ã€ã®å¯èœãªæ¹æ³ã¯ããã®ã¢ãŒããã¯ãã£ããåŸãããŸãïŒ1ã€ã®ã¬ãã«ã®ãã¹ãŠã®ããŒã¿ã1ã€ã®ãã³ã¯ã«ä¿åãããã1ã€ã®ã¿ã€ãã®ãã¹ãŠã®ããŒã¿ã»ããã1ã€ã®ãã³ã¯ã«ä¿åããŸãïŒ1ã€ã®ãã¯ããããã¯ãå¥ã®ãããã¯ã3çªç®ã®ç»é¢ïŒã ããŸããŸãªãšã³ãžã³ã§ãæåã®ã¢ãããŒããš2çªç®ã®ã¢ãããŒãã®äž¡æ¹ãèŠã€ãããŸãã ãã«ãã³ã³ãã¯ãå€ãã®å Žåã1ã€ã®ãã³ã¯ã«åãã¬ãã«ã®ããŒã¿ãä¿åããŸããããšãã°ããã¡ã¬ãã³4ãã§ã¯ããããã¯ãšãã¯ããããã¯ãžã®ãã€ã³ã¿ãŒããã¹ãŠåãã§ããã€ãŸãããã³ã¯ãåãæ¿ãããšãããŒã¿ã¯ããã»ããµãŒã®ã¢ãã¬ã¹ç©ºéã®åãã¢ãã¬ã¹ã«ãããã³ã°ãããŸãã ããã§ãããã³ã¯ã¯ãã¬ãŒã ããšã«æ°ååãæ¿ããããŸããã€ãŸããå¿ èŠãªããŒã¿ã¯ROMã€ã¡ãŒãžã®ããŸããŸãªå Žæã«æ£åšããŠããŸãã
ãªããžã§ã¯ãã®ãªã¹ãã®æ§æ
æ¬æ Œçãªã²ãŒã ã®ã¬ãã«ãããã«å ããŠãããŒãã¹ãæµãç Žå£å¯èœãªãªããžã§ã¯ããè£ é£Ÿçšã®ã¢ãã¡ãŒã·ã§ã³ãªããžã§ã¯ãããã¢ãããã³ã²ãŒã ã®ä»ã®è«çèŠçŽ ãªã©ã®ã²ãŒã ãªããžã§ã¯ãã®ãªã¹ããæå®ããå¿ èŠããããŸãã åã®2ã€ã®ãã©ã°ã©ãã§ã¯ãã¬ãã«èšå®ã«å°éããæ¹æ³ã瀺ããŸããããã®èšå®ã§ã¯ãé«ã確çã§ãã²ãŒã ãªããžã§ã¯ãã®ãªã¹ãã®å é ãžã®ãã€ã³ã¿ãèŠã€ããããšãã§ããŸãã ãã®ãªã¹ãã¯å¥ã®æ¹æ³ã§ãèŠã€ããããšãã§ããŸã-ç»é¢äžã®ãªããžã§ã¯ãã«é¢ããæ å ±ãä¿åãããŠããRAMå ã®å Žæãèšç®ããããããã¢ãã¬ã¹ã®æ€çŽ¢ãéå§ããŸãã ã¡ã¢ãªå ã®ãããã®ã¢ãã¬ã¹ããããã¯ãããæ¹æ³ã¯ããã€ããããŸãã
- æµãç»é¢ã«è¡šç€ºãããããæéãé ãããŠXãY座æšãŸãã¯ãã®ä»ã®ãã©ã¡ãŒã¿ãŒã確èªããŸãïŒã¡ãã¥ãŒããŒã«->ã©ã æ€çŽ¢... ïŒã ãããã£ãŠãRAMã®ãDarkwing Duckãã®ç»é¢äžã®æµã®ãã©ã¡ãŒã¿ãŒã¯ãå0x580 ïŒæåã®ãªããžã§ã¯ãã®å Žåã¯0x581ã2çªç®ã®å Žåã¯0x581ã3çªç®ã®å Žåã¯0x582ãªã©ïŒ-ãªããžã§ã¯ãã®ç§»åæ¹åã 0x5A0-æ®ãã®ãã«ã¹ãªã©ã«æ ŒçŽãããŸãã ã ãã®äžã§ããªããžã§ã¯ãçªå·ãèŠã€ããããšãã§ããŸã
- ç»é¢ã«è¡šç€ºããããªããžã§ã¯ãã®ã«ãŠã³ã¿ãŒã远跡ããŸãã 次ã®ãªããžã§ã¯ãã衚瀺ããããšã1ãã€å¢å ããŸãã ã¡ãªã¿ã«ãã¡ã¢ãªãæ€çŽ¢ããã«è¡šç€ºã§ããŸãããRAMãçŽæ¥èŠããšïŒFCEUXã§ã¯ãæè¿å€æŽãããã»ã«ã匷調衚瀺ããæ©èœããããã䟿å©ã§ãïŒã¡ãã¥ãŒããŒã«-> Hex Editor ïŒïŒïŒ
ã»ã«0x70ã¯ãç»é¢äžã®æ°ãããªããžã§ã¯ãã®åºçŸãšåæã«å¢å ããŸãïŒDarkwing DuckãšChipïŒDaleã®äž¡æ¹ã§ïŒã
- æµã殺ãããã«ã¹ã³ã¢ãªã³ã°ããã²ãŒã ã§ã¯ããã¬ãŒã¯ãã€ã³ããèšå®ããŠã¹ã³ã¢ã«ãŠã³ã¿ãŒãå¢ãããã¹ã³ã¢ãªã³ã°æ©èœã«ç§»åã§ããŸããã¹ã³ã¢ãªã³ã°æ©èœã§ã¯ãæµã®æ°ã䜿çšããŠã
- ç 究è ã®æ³ååã«ãã£ãŠã®ã¿å¶éãããä»ã®æ¹æ³
éžæãããæ¹æ³ã«é¢ä¿ãªããäžèšããé ããæ©ããã調æ»ã¯ã¬ãã«èšå®ã«ã€ãªããããããããªããžã§ã¯ãã®ãªã¹ãã®å é ã®ã¢ãã¬ã¹ãèŠã€ããããšãã§ããŸãã ãDarkwing Duckãã®å Žåããªããžã§ã¯ãã®èª¬æã¯æ¬¡ã®ãšããã§ãã
1 â 0x10315-0x10347 2 â 0x10438-0x10473 3 â 0x10584-0x105C7 6 â 0x106A0-0x106D5 4 â 0x10816-0x10865 5 â 0x10962-0x109A0 7 â 0x10A89-0x10AC2
ãããã®ã¢ãã¬ã¹ä»è¿ã§ã®ããŒã¿ç Žæã«é¢ããããã€ãã®å®éšã®åŸããã®æ§é ãæããã«ãªããŸãããªããžã§ã¯ãèªäœã®ãªã¹ãã®åã«ããªããžã§ã¯ãã®åº§æšXãšYã®ãã¢ãæã€åãé·ãã®4ã€ã®é åããããŸãã äžäœãã€ãã¯ãªããžã§ã¯ãã衚瀺ãããç»é¢ã®åº§æšã瀺ããäžäœãã€ãã¯ç»é¢äžã®ãªããžã§ã¯ãèªäœã®åº§æšã瀺ããŸãã ãããã£ãŠããªããžã§ã¯ãã®äœçœ®ãšã¿ã€ããå®å šã«èšè¿°ããã«ã¯ããããã5ãã€ãããããŸãã
ãŸãããªã¹ãå ã®ãªããžã§ã¯ãã¯ç»é¢ã«è¡šç€ºãããé åºã§ãœãŒãããå¿ èŠãããããšãæããã«ãªããŸããããã¯ããšã³ãžã³å ã«ãªã¹ãå ã®æ¬¡ã®ãªããžã§ã¯ãã®å€èŠ³ããã§ãã¯ãããã®åŸã«ã«ãŠã³ã¿ãŒã1å¢ãããŠãã次ã®ãªããžã§ã¯ãããã§ãã¯ããããã·ãŒãžã£ãããããã§ã ãã¬ãŒã€ãŒã®èåŸã«ããå ŽåïŒããã³ã²ãŒã å ã§ã¹ã¯ããŒã«ããã¯ããªãå ŽåïŒãç»é¢ã«è¡šç€ºãããããšã¯ãããŸããã ãªããžã§ã¯ãã䞊ã¹æ¿ãããšãã«èæ ®ããªããã°ãªããªããªããžã§ã¯ãã®ãªã¹ãã«é¢ãããšã³ãžã³ã®æ©èœãããã€ããããŸããããšãã°ããã¢ã«å ¥ã£ãåŸãã«ãŠã³ã¿ãŒããªã»ããããããšã³ãžã³ã¯ãªã¹ãã®æåã®ãªããžã§ã¯ããæ€çŽ¢ããŸãã ããã«ãããå ã®ã²ãŒã ã«ã¯ãªãã£ãããã€ãã®ä»£æ¿ãã©ã³ãžã·ã§ã³ã§ã¬ãã«ãæ§ç¯ã§ããŸãã
ä»ã®ãšã³ãžã³ã§ã¯ããªããžã§ã¯ããªã¹ãããã€ã¹ã¯éåžžã«é¡äŒŒããŠããããªããžã§ã¯ãã®åº§æšã®1ã€ã1ãã€ãã§ãšã³ã³ãŒãããïŒå®æ°ãä¹ç®ãããããããã¯ãã€ã«ãº2ããªã©ã®ãªããžã§ã¯ãã»ããå šäœã®ããŒã¹ãšããŠåºå®ã¢ãã¬ã¹ã䜿çšãããªã©ïŒãŸãã¯ããªããžã§ã¯ãã®ãªã¹ãå ã®å¯å€é·ã®ãšã³ããªïŒããšãã°ããNew Ghostbusters 2ãã§ã¯ãæµã®åº§æšãããã«æ ŒçŽãããŸããããã¢ã®å Žåã¯é·ç§»ãè¡ãããéšå±ããããŸãïŒã
Duck Talesã®ãã¹ãŠã®ã¿ã€ãã®ãªããžã§ã¯ãã®ãã³ãŒãïŒ gist.github.com/spiiin/5524555
ã¢ãã¡ãŒã·ã§ã³ã·ã¹ãã ããã€ã¹
ãªããžã§ã¯ãçªå·ã¯åãªãå®æ°ã§ã¯ãªãããã¹ãŠã®ãªããžã§ã¯ãã«é¢ããã¬ã³ãŒãã®é åå ã®ã€ã³ããã¯ã¹ã§ãã
ã¢ãã¬ã¹ç¯å²0x05A4-0x05AF ïŒç»é¢ã«ãªããžã§ã¯ãçªå·ãä¿åããïŒã«èšé²ããããã®ãã¬ãŒã¯ãã€ã³ãã¯ããªããžã§ã¯ãã®ç¹æ§ãããŒããããå Žæã瀺ããŸãã
LDA (06), y. [cpu addr 0x8C57->rom addr 0x10C67] - 4 () LDA (04), y. [cpu addr 0x8AB3->rom addr 0x10AC0] - 4 ()
æåã®é åã«ã¯ããªããžã§ã¯ãã®å¯¿åœã®æ°ãš3ã€ã®ç©ºã®ãã£ãŒã«ãïŒæããã«ãããå€ãã®ç¹æ§ããã£ãMega Man 4ãšã³ãžã³ããç¶æ¿ïŒãæ ŒçŽããã2çªç®ã®é åã«ã¯ïŒ
1- - . 2- - ( ). 3- - . 4- - - .
次ã«ãã¢ãã¡ãŒã·ã§ã³çªå·ã調ã¹ãŸããããã«ãããæ°ã¹ãããã§ãªããžã§ã¯ãã¢ãã¡ãŒã·ã§ã³ã·ã¹ãã ã®ã¹ãã¬ãŒãžããã€ã¹ãç解ã§ããŸãã
åã¢ãã¡ãŒã·ã§ã³ã¯ãããã€ãã®ãã¬ãŒã ãšåçæéã§æ§æãããŠããŸãã
: { 1 - - N. 1 . . N - . }
ã¿ã€ããŒã«ããããã¬ãŒã ã¯æ¬¡ã®ããã«åãæ¿ãããŸãã
: { ( 1. - ) }
ïŒãã¬ãŒã ã®é åã¯ãç°ãªããã³ã¯ã«åå²ããããã«ãµã€ãºã倧ãããããROMã€ã¡ãŒãžã§ã¯2ã€ã®éšåã«åå²ãããŸãïŒã
ç»é¢ãžã®ãã¹ãŠã®ãã¬ãŒã ã¿ã€ã«ã®åºåã¯ãNESã®æšæºçãªæ段ã«ãã£ãŠå®è¡ãããŸããç»é¢ããŒãžã«å ããŠããããªããã»ããµã¯ãç»é¢äžã®ä»»æã®å Žæã«ç»é¢äžã®ã¿ã€ã«ïŒ8x8ãµã€ãºïŒãæç»ã§ããŸããç»é¢äžã®ã¹ãã©ã€ãã®è¡šç€ºã®è©³çŽ°ã«ã€ããŠã¯ããã¹ãã©ã€ããã»ã¯ã·ã§ã³ãåç §ããŠãã ããã DMAã³ã³ãããŒã©ãã
åæ§ã®ã¢ãã¡ãŒã·ã§ã³ã·ã¹ãã ã¯ãã²ãŒã ãDarkwing DuckãããChipïŒDaleãããDuck Talesãã§äœ¿çšãããŸãïŒæåã®éšåããChipïŒDale 2ãããã³ãDuck Tales 2ãã«ã¯ç¬èªã®ã·ã¹ãã ããããŸãïŒããLittle MermaidãããTale Spin ãããã¡ã¬ãã³ãïŒ2ã5ïŒãããã€ãã£ãã¡ã€ãã«ãã¡ã€ããã
ã¢ãã¡ãŒã·ã§ã³ãç·šéããã«ã¯ã CadEditorãšãã£ã¿ãŒãŸãã¯Capcom Sprite AssemblerãŠãŒãã£ãªãã£ã䜿çšã§ããŸãã
![](https://habrastorage.org/files/698/390/bdc/698390bdc81a4e3e8ad24534310e42c2.png)
ã²ãŒã ãªããžã§ã¯ãã®æŽæ°æ©èœ
ã²ãŒã ãªããžã§ã¯ãããã¬ãŒã ã«è¡šç€ºããããšããã®ã²ãŒã ãµã€ã¯ã«ããšã«æŽæ°æ©èœãåŒã³åºãããŸããããã¯ããã¹ãŠã®ã²ãŒã ããžãã¯ãæ åœããŸããç»é¢å ã§ã®ç§»åãæ°ãããªããžã§ã¯ãïŒåŒŸäžžãªã©ïŒã®çæãå£ãåºããã®ä»ã®ãªããžã§ã¯ãéã®è¡çªã®åŠçãããã³åãæ¿ãè«ççãªãã§ãŒãºãšã¢ãã¡ãŒã·ã§ã³ïŒäŸïŒ ãŠã©ãŒãã³ã°->ãžã£ã³ã->çéž ïŒã
åã®ã»ã¯ã·ã§ã³ã§æŽæ°é¢æ°çªå·ãæ¢ããŠããããªããžã§ã¯ãã®çŸåšã®ãã©ã¡ãŒã¿ãŒãä¿åãããŠããã¡ã¢ãªã»ã«ã調ã¹ãå¿ èŠããããŸãã ãããŒã¯ãŠã£ã³ã°ããã¯ãã®å ŽåïŒ
4D0 - (/ /// etc.). 420 - 580 - 5A0 - (80, ) 410 - 430 - 400 - ( , , , etc.) .
ããã«ç¶ããŠããªããžã§ã¯ãã®åæ©èœã®åäœã®ããžãã¯ãç解ããããã®éªšã®æããäœæ¥ãç¶ããŸãïŒéåžžã¯æåã®2ã€ãŸãã¯3ã€ã ããé£ããããã¹ãŠãç¹°ãè¿ãããŸãïŒã
ããšãã°ããã©ãã¯ãã³ãã®æåã®æµã§ããããããã®æŽæ°æ©èœã³ãŒãïŒ gist.github.com/spiiin/14197bc6b8889a0dd4f0
ããããã«ã¯2ã€ã®ãã§ãŒãºããããŸããæåã®ãã§ãŒãºïŒ ãããããŒã«ã ïŒã§ã¯ããã¹ããé¢ãããããããå°ããªååŸãæ©ãããã©ãã¯ã¯ããŒã¯ãæ±ããŠé ãåããŠåæ¢ããå ŽåããããŸãã ãã¬ã€ã€ãŒãŸã§ã®è·é¢ã32ãã¯ã»ã«ã«æžå°ããå ŽåããŸãã¯ããããã®å¥åº·ç¶æ ãäœäžããå Žåã ãæ»æã段éã«å ¥ãããã¬ã€ã€ãŒãããæ¹åã«åãå§ããè¡ãæ¢ãŸãã«ãªã£ãå Žåã«ã®ã¿æ¹åãå€æŽããŸããžã£ã³ãã§éããããšãã§ããŸãã
ãªããžã§ã¯ããäœæããããã®ç¹å¥ãªããŒã«ã¯ãããŸãããã§ããã°æŽæ°æ©èœã®ãµã€ãºå¶éã«åãããŠãã³ãŒããæžãçŽãå¿ èŠããããŸãã ãã ããããã¯ããã¯ãã³ãã€ãã¹ã€ã³ãã£ããã£ã®ãããªçŽ æŽãããããã¯ã®äœæã劚ããŸããã
ãã¹ã¿ãŒã«ãŒãããã€ã¹
ããŒãã¹ã¯ãã¡ã€ã³ã«ãŒãã®ããã€ã¹ã«é¢ããå°ããªã»ã¯ã·ã§ã³ã«ãªããŸãã 圌女ã«ãšã£ãŠããDarkwing Duckãã¯ãããã¯ã§ã¯ãªããèšè¿°çãªæ¹æ³ã䜿çšããŠããŸãïŒããŒã¿ã¹ãã¬ãŒãžã®æ¹æ³ã«ã€ããŠã¯ãã·ãªãŒãºã®æåã®èšäºãåç §ããŠãã ããïŒã
åæã«ãã¹ãã¬ãŒãžã¡ãœããïŒã¢ã»ã³ãã©ã³ãŒãã§èšäºãéè² è·ã«ããªãããã«ã¹ãããããŸãïŒã®è§£æã«å ããŠãããããå€æŽããã«ã¯ãããããROMã€ã¡ãŒãžã«ä¿åããæ¹æ³ãèšè¿°ããå¿ èŠããããŸãã èšè¿°çãªã¹ãã¬ãŒãžã®æ¹æ³ã¯ããã¹ãŠã®ãŒãã®ãã§ãŒã³ãã«ãŒãããã¹ããŒããããããã®ä»£ããã«ãåããŒã¿ãã§ãŒã³ãéå§å ã®ã¢ãã¬ã¹ã瀺ããããããŒã¿ãã«ãŒãã«å ¥åããå Žæãæ確ã«ãªããŸãã
![](https://habrastorage.org/files/91b/184/156/91b184156b2d4d319530d7efb3c1ba24.png)
CïŒ ããã«ãŒã³ãŒã ïŒ gist.github.com/spiiin/8738491
ããã§ããããããšãã£ã¿ãŒã«è¿œå ã§ããŸãã
![](https://habrastorage.org/files/5a1/392/ccd/5a1392ccd89647f794e98985dac3b376.png)
...ãããŠãããšãã°ããã©ãã¯ã¯ããŒã¯ããµã³ã«ãã«ããå¥ã®éœåžã«ç§»åããã«ã¯ïŒ
![](https://habrastorage.org/files/457/679/d99/457679d994724a1489c9d7105aa7452d.png)
ããšãã
ãããååã§ãªã人ã®ããã«ãç§ã¯ãšã³ãžã³ã®ç¬ç«ããç 究ãç¶ããããDarkwing Duckã«äŒŒãMega Man 4ãšã³ãžã³ã®å解ãããã³ã¡ã³ãä»ãã³ãŒããç 究ããããšãææ¡ã§ããŸãã ãããããèšäºã§è§£æãããªãã£ãæ å ±ãããšãã°ããã¬ãããåãæ¿ããããšã«ããèæ¯ã¢ãã¡ãŒã·ã§ã³ãªã©ããµãŠã³ããšã³ãžã³ããã€ã¹ãç¹æ®å¹æããã€ã¹ãæç»ã§ããŸãã
誰ããã²ãŒã ãšã³ãžã³ã®ããã€ã¹ã®ä»ã®åŽé¢ã«èå³ãããå Žåã¯ãã³ã¡ã³ããæè¿ããŸãããããæŽçããã®ãæäŒããŸãã