FPGAã§ã®å®è£ ã«ãããNintendo Entertainment SystemïŒNESïŒã²ãŒã ã³ã³ãœãŒã«ã®ãããžã§ã¯ãã«ã€ããŠã話ããããšæããŸãã ãœããšãåŸã®ç©ºéã§ã¯ã圌女ã¯ãã³ãã£ãšããŠç¥ãããŠããŸãã
ãããªãšæããããèŠãã人ã®ããã«ãç«ã®äžã§ãé¡ãããŸãã
ç§ã®å¹Žéœ¢ã®ã»ãšãã©ã®äººã¯ãã®ã²ãŒã æ©ãããèŠããŠãããšæããŸãã 圌女ã¯ç§ãšäžç·ã§ããã 90幎代ã«ã¯ç§ãã¡ã®å®¶æã«ã¯ããŸããéããªãã£ãã®ã§ããã³ãã£ãããããŸããã§ããããã¹ãŒããŒã®å®å šã«äžåœã®ã¯ããŒã³ã§ããã äœåºŠãä¿®çããªããã°ãªããªãé »ç¹ã«å£ãããžã§ã€ã¹ãã£ãã¯ãé€ããŠã圌ã¯èŠæ ãªãã§åãããšèšããªããã°ãªããŸããã ãã¡ãããçãæéã®åŸãç§ã¯èªæã«æµæããããšãã§ãããæ¥é èŸã解äœããŸããã ããŒãã·ã³ã¯ãªãã§åãä»ããããRFå€èª¿åšãšLM7805ã®é»æºã®2ã€ã®ããªã³ãåè·¯åºæ¿ã§äœæãããéåžžã«é«æž©ã§ããã2ã€ç®ã®ããã»ããµããŒãã¯ãæ®å¿µãªããã·ã³ã°ã«ãããã§äœæãããŸãã-ããããã ç§ãèŠããŠããéãã§ã¯ãã¯ãªãŒãã1察ã®ã³ã³ãã³ãµãŒãããã«ã«ãŒããªããžã³ãã¯ã¿ãããããŸããã§ããã åœæãæ å ±ãèŠã€ããããšã¯éåžžã«é£ããããã³ãã£ãã©ã®ããã»ããµãå®è¡ããŠãããããç¥ããŸããã§ããã NESãé£äººãã€ãŸãã¢ããã¥ã¢ç¡ç·ãšã®ãåå¥ã®ãå®è£ ã§èŠãã®ã¯äžåºŠã ãã§ãã
6ãæå°ãåã«ãeBay STM32ãããã°ããŒãã泚æããæ¯èŒçå®äŸ¡ãªã¢ã«ãã©Cyclone II FPGAãèŠãŠãäºåºŠãšèããã«æ³šæããŸããã äžè¬çã«ãããªãã¿ã®é»åæè¡è ã®ãã©ãŒã©ã ãšæèŠããå€æãããšãFPGAã®ããŒãã¯äŸç¶ãšããŠã¢ã¯ã»ã¹äžèœãšãããæäœããè€éãã®ãããŒã«å ãŸããŠããŸãã ç§ãããã®ãšã©ãŒã«äžåºŠãèªæããããFPGAãããã¯ã«ååãªæ³šæãæã£ãŠããŸããã§ããã FPGAã«äžç®loveãããŸããïŒ ãã€ã¯ãã³ã³ãããŒã©ã«åŸäºããŠããæ®éã®ã¢ããã¥ã¢ç¡ç·æ奜家ã«ã¯ã¢ã¯ã»ã¹ã§ãããç©äºã¯çªç¶çŸå®ã«ãªããŸããã ããšãã°ãSDRAMã䜿çšããæ¬æ Œçãªäœæ¥ã§ã¯ãã©ããããããããªãã¯ã¹ãLVDSã€ã³ã¿ãŒãã§ã€ã¹ã«æ¥ç¶ããŸãïŒãããŠããã®åšæ³¢æ°ã¯åã«ãã©ãŒã§ãïŒã é£æ¬²ãé«ãŸããNESãããžã§ã¯ãã«äœ¿çšãããã¢ã«ãã©DE2-115ããŒããè³Œå ¥ããŸããã ä»ãç§ã¯10幎åã«FPGAã®ãããã¯ãæ±ã£ãŠããªãããšãéåžžã«æ®å¿µã«æã£ãŠããŸããç§ã®ééããç¹°ãè¿ããªãã§ãã ãããFPGAã¯æ¥œãããŠããŸã£ããé£ãããããŸããïŒ
LEDãç¹æ» ãããïŒã¡ãªã¿ã«ãåãSTM32ãšã¯ç°ãªããåšèŸºæ©åšã倧éã«èšå®ããå¿ èŠããããŸãããFPGAã§ã¯ãããã€ã§ãïŒã¢ãã¿ãŒãšãµãŠã³ãã§ãã£ãšçå£ã«åãçµãããšã«ããŸããã
ããã¯äœã®ããã§ããïŒ åœŒããèšãããã«ããã ã®æ¥œãã¿ã®ããã«ã ãã¡ãããããã¯ãã§ã«éåžžã«å€ããã©ãããã©ãŒã ã§ãããFPGAã§åäœæããç¹å¥ãªçç±ã¯ãªããšèšã人ããããããããŸããããå人çã«ã¯ããã®ãããžã§ã¯ãã«åãçµã¿ãæçµçµæãèŠãã®ã¯ãšãŠãè¯ãã£ãã§ãã ããã¯ãç§ãããèšããããããªãå ŽåãåäŸã®é ããããã¡ãã誀ã£ãŠèŠã€ããŠåŸ©å ããæ¹æ³ã§ãã
ããã«ãè·å Žã§ã®æèŠã«ãããšãããŒããŠã§ã¢ã®å®è£ ã¯ãœãããŠã§ã¢ã·ãã¥ã¬ãŒã¿ãšã¯å€§ããç°ãªããŸãã ããã¯ãã¡ãããå¿çç圱é¿ã§ããããŸãããFPGAã®NESã¯ã¿ã€ãã³ã°ãããæ£ç¢ºã«ãããŒããããŸãããœãããŠã§ã¢å®è£ ã§ã¯ãGPUæäœã¢ã«ãŽãªãºã ãæé©åããè©Šã¿ã«ãã£ãŠåŒãèµ·ãããã埮åŠãªé 延ããããªã¢ãŒãã£ãã¡ã¯ãã¯ãããŸããã
ãããã¯ãŒã¯äžã®ãã·ã¢èªã§ã¯ãããšãã°ã ãã㧠NESã¢ãŒããã¯ãã£ã®èª¬æãèŠã€ããããšãã§ããŸãã
ååãšããŠã説æã¯ããªãè¯ãã§ãããPPUã¬ãžã¹ã¿ãŒã¯ãã®èšäºã§éåžžã«è¡šé¢çã«èª¬æãããŠãããããããã䜿çšããŠåäœãããšãã¥ã¬ãŒã¿ãŒãäœæããããšã¯ã§ããŸãã-éåžžã«éèŠãªç¹ã¯çç¥ãããŸãã
ãã®èšäºã§ã¯ãã¢ãŒããã¯ãã£ãšåå¶åŸ¡ã¬ãžã¹ã¿ã«ã€ããŠè©³ãã説æããŸãããããšãã¥ã¬ãŒã¿ãŒã®å®è£ ã§çºçããå¯èœæ§ã®ããåé¡ãææãããããžã§ã¯ãã«é©çšãããœãªã¥ãŒã·ã§ã³ã«ã€ããŠèª¬æããŸãã
以äžã¯ããã³ãã³ããŒãã¡ãã³ã³ã®é»æ°åè·¯å³ã§ãã
nesdev.comããã®ç»å
A203ïŒU6ïŒããã»ããµã®ã³ã¢ã¯ã8ããããã€ã¯ãããã»ããµMOS Technology 6502ã«åºã¥ããŠããŸãã6502ãåãã1ã€ã®ãããã«ã¯ãDMAã³ã³ãããŒã©ãšãªãŒãã£ãªããã»ããµããããŸãã
ããã74LS139ïŒU3ïŒã«ã¯ãCPUã¢ãã¬ã¹ãã³ãŒããŒãå®è£ ãããŠããŸãã ã¢ãã¬ã¹ãã¹ã¯16ãããã§ãããããããã»ããµã¯æ倧64 KBãã¢ãã¬ã¹æå®ã§ããŸãã ã¢ãã¬ã¹ç©ºéã¯æ¬¡ã®ããã«é åžãããŸãã
ã°ã©ãã£ãã¯ããã»ããµïŒPPUïŒ2C02-U5ãããã PPUãã³ãç¯çŽããããã«ãã¢ãã¬ã¹ãã¹ã®äžäœ8ãããã¯ããŒã¿ãã¹ãšå€éåããããããã¡ã¢ãªã¢ã¯ã»ã¹ã«2ã¯ããã¯ãµã€ã¯ã«ãè²»ãããŸãã ã¢ãã¬ã¹éå€éåã«ã¯ãU2ããã-ã¬ãžã¹ã¿ã©ãã74LS373ïŒIR22ã®ã¢ããã°ïŒã䜿çšãããŸãã
1ãããªããŒãžãä¿åããã«ã¯ã1 KBã®ã¡ã¢ãªãå¿ èŠã§ãïŒèæ¯ç»åã¯8x8ãã¯ã»ã«ã®ãããã¯ïŒã¿ã€ã«ïŒã§æ§æããã32ã¿ã€ã«ã®30è¡ãç»é¢ã«é 眮ãããŸãïŒã PPUã¢ãŒããã¯ãã£ã¯4ã€ã®ãããªããŒãžã®äœ¿çšãæäŸããŸããã2KBã®ãããªã¡ã¢ãªïŒU4ãããïŒã®ã¿ãNESèªäœã«ã€ã³ã¹ããŒã«ãããŸããå¿ èŠã«å¿ããŠã2KBãæ¬ èœããŠããããã4ããŒãžãã¹ãŠãã«ãŒããªããžã«é 眮ããå¿ èŠããããŸãïŒããŒãžãªãã¬ã¯ã·ã§ã³ãšPPUã¢ãã¬ã¹ã¹ããŒã¹ã«ã€ããŠã¯åŸè¿°ããŸãïŒã æ£çŽãªãšããããšã³ãžãã¢ãšããŠã®ç§ã«ãšã£ãŠã¯ãå°ãã¯ã€ã«ãã«èŠããŸãã ã»ãããããããã¯ã¹ã®éçºäžã«ãã«ãŒããªããžã®ã³ã¹ããå¢ããããšãç ç²ã«ããŠãããŒã±ãã£ã³ã°äžã®çç±ãšããå®äŸ¡ãªã»ãããããããã¯ã¹ã®ããã«ãã®ãããªæ段ãåãããããšã¯æããã§ãã åœæã®4 KB SRAMã®ã³ã¹ãã¯ããããŸãããããããããã®ããã«ã4ããŒãžã䜿çšããã²ãŒã ã¯ããŸããããŸããã
ãã¹ã¿ãªã·ã¬ãŒã¿ã¯ãã©ã³ãžã¹ã¿Q2ãQ3ã§äœæãããNTSCããŒãžã§ã³ã§ã¯21.47727 MHzãPALã§ã¯26.6017 MHzã®åšæ³¢æ°ãçæããŸãã CPUã³ã¢ã¯çŽ1.79 MHzã®åšæ³¢æ°ã§åäœããPPUãã¯ã»ã«åšæ³¢æ°ã¯CPUåšæ³¢æ°ã®3åã§ãããããã5.37 MHzã«çãããªããŸãã ãžã§ãã¬ãŒã¿ãŒã®æ¯èŒçé«ãåšæ³¢æ°-24.47727 MHzã¯ãã³ã³ããžãããããªä¿¡å·ã®ã«ã©ãŒæ å ±ããšã³ã³ãŒãããã«ã©ãŒãµããã£ãªã¢ã®ããã©ãã·ã¥ããçæããããã«å¿ èŠã§ãã
ã«ãŒããªããžãšãã¥ã¬ãŒã·ã§ã³
æåã¯ãå ã®NESã«ãŒããªããžãèŠã€ããŠäœ¿çšãããã£ãã®ã§ãããæåããŸããã§ãããã«ãŒããªããžããšãã¥ã¬ãŒãããå¿ èŠããããããããã¯è¯ãããšã§ãã æãåçŽãªããŒãžã§ã³ã§ã¯ãã«ãŒããªããžã¯2ã€ã®ROMãããïŒCPUããã°ã©ã ã¡ã¢ãªïŒPRG ROMïŒãšPPUæåãžã§ãã¬ãŒã¿ã¡ã¢ãªïŒCHR ROMïŒïŒã®ã¿ã§ãããã®å ŽåãPRG ROMã®æ倧容éã¯32 KBãCHR ROMã¯8 KBã§ãã ã¹ãŒããŒããªãªãã©ã¶ãŒãº1ãããŒãã©ã³ããŒãããã€ãªã©ã®ã·ã³ãã«ãªã²ãŒã ãå®è¡ã§ããŸãã ãã¡ããã32 KBã¯å€ããå°ãªããæ·±å»ãªã²ãŒã ã«ã¯éåžžã«å°ãããããç¹å¥ãªãœãªã¥ãŒã·ã§ã³ïŒããããŒïŒã䜿çšããŠã¡ã¢ãªãã³ã¯ãåãæ¿ããå©çšå¯èœãªããªã¥ãŒã ãæ°ã¡ã¬ãã€ãã«æ¡åŒµã§ããŸãã ããããŒã«ã¯å€ãã®ãªãã·ã§ã³ããããŸããããšãã°ã74ã·ãªãŒãºã®ãã£ã¹ã¯ãªãŒãããžãã¯ã®äž¡æ¹ã«ãããŸããããšãã°ãUxROMããããŒã¯74HC161ã«ãŠã³ã¿ãŒäžã«æ§ç¯ãããã©ãããš74HC32-4 ORãšã¬ã¡ã³ãã®äž¡æ¹ãããã³MMC3ãªã©ã®ç¹æ®ãªASICãœãªã¥ãŒã·ã§ã³ã䜿çšããŸãã ããã§ããããžã§ã¯ãã¯ããã2ã€ã®ããããŒã®ã¿ãå®è£ ããŸãã MMC3ã¯å¶ç¶éžã°ããŸããã§ãããã¿ããªã®ãæ°ã«å ¥ãã®ã²ãŒã ã®å€§éšåããªãªãŒã¹ãããããã§ãã
å¹³åã«ãŒããªããžãµã€ãºã¯çŽ256 KBã§ãã1MBãè¶ ããããªã¥ãŒã ã®ã«ãŒããªããžã¯éåžžã«ãŸãã§ãã DE2-115ã«ã¯ã2 MBã®SRAMïŒ1M x 16ïŒãš128 MBã®SDRAMããããŸãã ç§ã¯
ãã®å³ã¯ãã«ãŒããªããžãšãã¥ã¬ãŒã·ã§ã³ãŠãããã瀺ããŠããŸãã
ãŠãããã¯ã4ãããã¢ãã¬ã¹ãã¹ãš8ãããããŒã¿ãã¹ã§Nios IIããã»ããµã«æ¥ç¶ãããŸãã ãããã¯ã³ã³ãããŒã©ãŒã«ã¯ãNESã®ç¶æ ãå¶åŸ¡ã§ãã7ã€ã®å¶åŸ¡ã¬ãžã¹ã¿ããããŸã-äžæåæ¢ãããŒããŠã§ã¢ãªã»ããã®å®è¡ããããªããŒãžã®ãªãã¬ã¯ã·ã§ã³ã®ãªãã·ã§ã³ã®èšå®ãããããŒã®ã¿ã€ããã¢ãã¬ã¹ãã¹PRGããã³CHR ROMã®è§£å床ã ã€ã¡ãŒãžãããŠã³ããŒãããã«ã¯ãããŒãé åïŒCHRãŸãã¯PRGïŒãéžæããã¢ãã¬ã¹ããªã»ããããã³ãã³ãããããŸãã 次ã®ãã€ããæžã蟌ãŸããåŸãã¢ãã¬ã¹ã¯èªåçã«ã€ã³ã¯ãªã¡ã³ããããŸãã
ã¢ãã¬ã¹ãã¹ã¯PPUãšCPUã§å ±éã§ããããããã«ããã¬ã¯ãµãŠãããã¯é«ãåšæ³¢æ°ã§åäœããŸããç§ã®å Žåã¯32.22 MHz-PPUåšæ³¢æ°ã®6åã§ãã ããã«ãåå¥ã®ã¢ãã¬ã¹ãã¹ãMMC3ããã³UxROMãå®è£ ãããŠããããããŒã®ãããã¯ã«ç§»åããã¢ã¯ãã£ããªããããŒã®éžæã«ããå¶åŸ¡ã¬ãžã¹ã¿ã®ç¶æ ãèšå®ãããŸãã å¿ èŠã«å¿ããŠãä»ã®ããããŒã®ãµããŒããè¿œå ããã®ã¯éåžžã«ç°¡åã§ãã
ããšãã°ãUxROMå®è£ ã¯æ¬¡ã®ããã«ãªããŸãã
å ã®NESã§ã¯ãããŒããŠã§ã¢ã®èŠ³ç¹ãããã«ãŒããªããžããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒROMã®ä»£ããã«RAMãã€ã³ã¹ããŒã«ããããã°ã©ã å®è¡äžã«åæåããŠPPUã¬ãžã¹ã¿ãä»ããŠæžã蟌ãããšã劚ãããã®ã¯ãããŸããã ãã®ãããªã«ãŒããªããžãšã²ãŒã ãããšãã°ãContraãCastlevaniaãããã³UxROMäžã®ä»ã®å€ãã®ã²ãŒã ãååšããŸãã ãã®ã¢ãããŒãã«ã¯å©ç¹ããããŸããããšãã°ããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒã¢ã€ã³ã³ã®äžéšãããã°ã©ã ã§åæã§ããŸãããŸãããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒã®ã³ã³ãã³ããå§çž®åœ¢åŒã§ä¿åããCHR RAMã§è§£åããããšãã§ããŸããããã«ãããã«ãŒããªããžã®ã¹ããŒã¹ãå€§å¹ ã«ç¯çŽã§ããŸãã
ãã§ã«RAMã䜿çšããŠCHRãä¿åããŠããããããã®æ©èœãããã©ã«ãã§ããããšãããããŸããã
å ¥ã
å ¥åããã€ã¹ã¯USBãžã§ã€ã¹ãã£ãã¯ã䜿çšããŸãã USBã¡ã³ããã³ã¹ãNios IIããã»ããµã«ãã£ãŠå®è¡ãããŸãã
ãã¹ãŠã®ãžã§ã€ã¹ãã£ãã¯ãã¿ã³ã®ç¶æ ã¯1ã€ã®åèªã«ãŸãšãããããã©ã¬ã«ãã¹ãä»ããŠã·ãªã¢ã©ã€ã¶ãŒãããã¯ã«å ¥ããŸãã ã¢ãã¬ã¹0x4016ã§èšé²ããNESããã»ããµã¯ã¹ãããŒããã«ã¹ãçæããã¹ããŒã¿ã¹ãã€ãïŒ8ãã¿ã³ïŒãã·ããã¬ãžã¹ã¿ã«ããŒããããŸãã ããã«ã0x4016ïŒæåã®ãžã§ã€ã¹ãã£ãã¯ã®å ŽåïŒããã³0x4017ïŒ2çªç®ã®å ŽåïŒã«ã¢ã¯ã»ã¹ãããšã次ã®ãã¿ã³ã®ç¶æ ãã·ãããããèªã¿åãããŸãã å ã®NESã®ãTurboããã¿ã³ã¯ãžã§ã€ã¹ãã£ãã¯èªäœã«å®è£ ãããA / Bãã¿ã³ãé »ç¹ã«æŒãããšãã·ãã¥ã¬ãŒãããŸããã€ãŸããNESã¯å®éã«ãTurbo AããŸãã¯ãAãã®ã©ã¡ãã®ãã¿ã³ãæŒãããããåºå¥ããŸããã ãããžã§ã¯ãã§ã¯ããã®æ©èœã¯ã·ãªã¢ã©ã€ã¶ãŒãããã¯ã§å®è¡ãããåšæ³¢ââæ°ã¯çŽ20 Hzã§ãã
PPU
æ©èœçã«ãPPUã¯ããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ãŠããããšã¹ãã©ã€ãã¬ã³ããªã³ã°ãŠãããã«åå²ã§ããŸãã
ãœãããŠã§ã¢ãšãã¥ã¬ãŒã¿ãŒã«ã€ããŠè©±ãå Žåãã¬ã³ããªã³ã°ã¢ã«ãŽãªãºã èªäœã¯åçŽã§ãããCPUãšPPUãåæããŠåäœãããšããäºå®ã«ãããæ£ãããœãããŠã§ã¢ãšãã¥ã¬ãŒã¿ãŒãäœæããããšã¯éåžžã«é£ããã¿ã¹ã¯ã§ããããšã«æ³šæããŠãã ããã ããæ£ç¢ºã«ã¯ãé¡ã«PPUãœãããŠã§ã¢ãšãã¥ã¬ãŒã¿ãå®è£ ããã®ã¯éåžžã«ç°¡åã§ããããã®ãããªå®è£ ã¯å€ãã®ãªãœãŒã¹ãæ¶è²»ããæé©ã«åäœããŸããã ç»é¢äžã«ã¿ã€ã«ã®é åããããæåãžã§ãã¬ãŒã¿ãŒãããã°ããã¬ãŒã å šäœããŸãã¯å°ãªããšããã®äžéšãæç»ã§ãããšæåã«èããã®ã¯ããã°ã©ããŒã ãšæããŸãã ãã¡ããæç»ã§ããŸãããããã§ã¯PPUãšCPUã®åæåäœã«é¢ããåé¡ãå§ãŸããŸãã ã°ã©ãã£ãã¯ãšãã§ã¯ããäœæããããã«ãCPUã¯ãã¬ãŒã ã®ã¬ã³ããªã³ã°ããã»ã¹ã§PPUå¶åŸ¡ã¬ãžã¹ã¿ãçŽæ¥å€æŽãããã¬ãŒã äžã«è€æ°åããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒã®ã¡ã¢ãªãã³ã¯ãåãæ¿ããããšãã§ããŸãã ãã®ãããªã¢ã¯ã·ã§ã³ã¯ãåçŽããã³æ°Žå¹³ã®äž¡æ¹ã®ã®ã£ãããåºå®é åãããããçš®é¡ã®éçæ å ±ã®åºåã§ç»é¢ãã¹ã¯ããŒã«ããããšã§å®è£ ãããŸãã ãããã£ãŠãCPUãPPUå¶åŸ¡ã¬ãžã¹ã¿ãŒã§ã¢ã¯ã·ã§ã³ãå®è¡ããæç¹ãæ£ç¢ºã«ç¥ãã«ã¯ãåCPUã³ãã³ããå®è¡ããããµã€ã¯ã«æ°ãŸã§ããããã®ãã€ã³ããèæ ®ããå¿ èŠããããŸãã
ãã®ãããªæ©èœã«ãããäžéšã®ãœãããŠã§ã¢ãšãã¥ã¬ãŒã¿ãŒã¯ãç¹ã«PPUã®æ©èœãæšæºå€ã§äœ¿çšããã²ãŒã ã§èŠèŠçãªã¢ãŒãã£ãã¡ã¯ããåŒãèµ·ãããŸãã
PPUã¢ãã¬ã¹ç©ºéã¯æ¬¡ã®ããã«é åžãããŸãã
ãããªããŒãžã¯ãããšãã°ãæ°Žå¹³ã¹ã¯ããŒã«ãŸãã¯åçŽã¹ã¯ããŒã«ã䜿çšããŠã2ããŒãžã®ã³ã³ãã³ããç»é¢ã«äžåºŠã«è¡šç€ºããã察è§ç·ã4ã€ã«ãªãããã«é 眮ãããŸãã ããŒãžã¬ã€ã¢ãŠããšåº§æšãå³ã«ç€ºããŸãã
äžèšã§æžããããã«ãNESèªäœã®ããŒãžã¡ã¢ãªã®äžã«ã¯2 KBã®RAMããããŸãã ãããã£ãŠãäžè¶³ããŠããã¡ã¢ãªãã«ãŒããªããžã«ã€ã³ã¹ããŒã«ãããŠããªãå ŽåãããŒãžã®åæ ãé©çšãããŸãã åçŽã2çªç®ã®ããŒãžããŒããåæ ãã3çªç®-æåã®ããŒãžãããã³æ°Žå¹³-æåã®ããŒãžããŒãã3çªç®-2çªç®ãåæ ããŸãã
FPGAãããžã§ã¯ãã§2 KBãç¯çŽããŠãæå³ããªãããã4 KBã®ãã¹ãŠããããªã¡ã¢ãªã«å²ãåœãŠãããŸãã ããŒããŠã§ã¢ãªãã¬ã¯ã·ã§ã³ã¯éåžžã«ç°¡åã«å®è£ ãããŸã-ã¢ãã¬ã¹ãã¹ã§ã®åçŽãªãã¬ã¯ã·ã§ã³ã®å ŽåãRAMãPPUããåãé¢ããã11çªç®ã®ãããã©ã€ã³ããŒãã«æ¥ç¶ãããåçŽã®å Žåã11çªç®ãš10çªç®ã®ãããã亀æãããæãå€ãã©ã€ã³ããŒãã«æ¥ç¶ãããŸãïŒ
äžéšã®ããããŒã¯ãã¢ãã¬ã¹ãã¹ã©ã€ã³ãåãæ¿ããããšã§ããŒãžãªãã¬ã¯ã·ã§ã³ãªãã·ã§ã³ãåçã«å€æŽã§ããŸãã ããšãã°ãã¹ãŒããŒããªãªãã©ã¶ãŒãºãšããã²ãŒã ã§ãã 2ãã²ãŒã ã®éå§æã«èœäžãããšããæ°Žå¹³åå°ã䜿çšãããåçŽã«åãæ¿ãããŸãã
PPUã¬ãžã¹ã¿
PPU 8ãšã®å¯Ÿè©±ã«ã¯ãã¬ãžã¹ã¿ã䜿çšãããŸãïŒCPUã®ã¢ãã¬ã¹ç©ºéãæå³ããŸãïŒã
ã¬ãžã¹ã¿0x2000ïŒæžã蟌ã¿å°çšïŒ
ãã®ã¬ãžã¹ã¿ã¯ãPPUã®ã¹ããŒã¿ã¹ãç£èŠããŸããããšãã°ãã¹ãã©ã€ãã®ãµã€ãºïŒ8x8ãŸãã¯8x16ïŒããããªã¡ã¢ãªããŒãžãããã³NMIå²ã蟌ã¿ãçæããèš±å¯ãèšå®ããŸãã
ã¬ãžã¹ã¿0x2001ïŒæžã蟌ã¿å°çšïŒ
Registerã¯ãã¹ãã©ã€ããšèæ¯ãæç»ããèš±å¯ãèšå®ããŸãã ãŸããã¬ã³ããªã³ã°ããŸã£ããçŠæ¢ããããã«äœ¿çšã§ããCPUã¯ãã€ã§ãPPUã¡ã¢ãªé åã«ã¢ã¯ã»ã¹ã§ããŸããããã¯ãã²ãŒã ç°å¢ãå€æŽããROMã®ä»£ããã«RAMã䜿çšãããå Žåã¯CHR RAMãåãããšãã«ããŒãžã®åæåæåäžã«ã²ãŒã ã§äœ¿çšãããŸã PPUã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ã¯ãPPUãã¢ã¯ã»ã¹ããªãVBLANKæéã«ã®ã¿çŠæ¢ãªãã§ã¢ã¯ã»ã¹ã§ããŸãã
ã¬ãžã¹ã¿0x2002ïŒèªã¿åãå°çšïŒ
ãã®ã¬ãžã¹ã¿ã«ã¯ãPPUã¹ããŒã¿ã¹ãã©ã°ãå«ãŸããŠããŸãã ããã¯ããŒãã¹ãã©ã€ãã®æåã®äžéæãªãã¯ã»ã«ãVBLANKæéã®éå§ãããã³8ã€ä»¥äžã®ã¹ãã©ã€ããçŸåšã®è¡ã«èœã¡ãããšã瀺ããã©ã°ãæç»ããå§ãããšããäºå®ã§ãã
ã¬ãžã¹ã¿0x2003ïŒæžã蟌ã¿å°çšïŒ
ã¹ãã©ã€ãã¡ã¢ãªïŒãªããžã§ã¯ãå±æ§ã¡ã¢ãª-OAMïŒã®åŸç¶ã®æäœã®ã¢ãã¬ã¹ãæå®ããŸãã
ã¬ãžã¹ã¿0x2004ïŒæžã蟌ã¿/èªã¿åãïŒ
OAMããŒã¿ã®èªã¿åããšæžã蟌ã¿ã æäœåŸãã¢ãã¬ã¹å€ã®èªåã€ã³ã¯ãªã¡ã³ããçºçããŸãã éåžžãã²ãŒã ã¯ãã®æ¹æ³ã§OAMã«æžã蟌ãã®ã§ã¯ãªããDMAã䜿çšããŸãã
ã¬ãžã¹ã¿0x2005ïŒæžã蟌ã¿å°çšïŒ
ã¹ã¯ããŒã«ã¬ãžã¹ã¿ã ã¬ãžã¹ã¿ãžã®æåã®æžã蟌ã¿æäœã§ã¯ãæ°Žå¹³ã¹ã¯ããŒã«ã®å€ãèšå®ããã2çªç®-åçŽæ¹åã«èšå®ãããŸãã
ã¬ãžã¹ã¿0x2006ïŒæžã蟌ã¿å°çšïŒ
ãããªããŒãžã®åŸç¶ã®ã¡ã¢ãªæäœã®ã¢ãã¬ã¹ãæå®ããŸãã æåã®æäœã§ã¯ãã¢ãã¬ã¹ã®æãé«ãéšåãæå®ããã2çªç®ã®æäœã§ã¯æãè¥ãéšåãæå®ãããŸãã
ã¬ãžã¹ã¿0x2007ïŒæžã蟌ã¿/èªã¿åãïŒ
ãããªããŒãžã¡ã¢ãªããã®ããŒã¿ã®èªã¿åããšæžã蟌ã¿ã æäœåŸãã¢ãã¬ã¹å€ã¯1ïŒæ¬¡ã®åïŒãŸãã¯32ïŒæ¬¡ã®è¡ïŒã§èªåçã«ã€ã³ã¯ãªã¡ã³ããããŸããããã¯ãã¬ãžã¹ã¿0x2000ã®ããã2ã®ç¶æ ã«äŸåããŸãã
äºéæžã蟌ã¿ã¬ãžã¹ã¿ãŒã¯å ±éã®ããªã¬ãŒã䜿çšãããããããšãã°ã0x2005ã«1åæžã蟌ã¿ã次ã«0x2006ã«æžã蟌ã¿ããããŠåã³0x2005ã«æ»ãããšã¯ã§ããŸããã ããæ£ç¢ºã«ã¯ãã§ããŸããããããè¡ãã«ã¯ç解ããå¿ èŠããããŸãã ããªã¬ãŒã®ç¶æ ãäžæãªå Žåã¯ãã¬ãžã¹ã¿0x2002ãèªã¿åãããšãã§ããããªã¬ãŒããªã»ãããããŸãã
ç°¡åã§ããïŒ ãã ããäžèšã®ãã·ã¢èªã®èª¬æã«ã¯ç€ºãããŠããªãéåžžã«éèŠãªæ©èœããããŸãã
äºå®ããªã¹ããããŠããã¬ãžã¹ã¿ã¯ãããã°ãå®å šã«ç¬ç«ããŠããããã§ã¯ãããŸããã
2ã€ã®15ãããã¬ãžã¹ã¿ããããŸãã
vVRAM-çŸåšã®ãããªã¡ã¢ãªã¢ãã¬ã¹ïŒä»¥äžãåã«ãvãïŒã
tVRAM-äžæã¢ãã¬ã¹ïŒä»¥äžãåã«ãtãïŒ;
Xã§ã®ãæ£ç¢ºãªãã¹ã¯ããŒã«ã®3ãããã¬ãžã¹ã¿ïŒçŽ°ããXã¹ã¯ããŒã«ïŒã 1ã¿ã€ã«å ã§ã¹ã¯ããŒã«ïŒ0..7ïŒãèšå®ããŸãã
ã¢ãã¬ã¹vãštã¯æ¬¡ã®ããã«åœ¢æãããŸãã
ãããã£ãŠãã¬ãžã¹ã¿0x2000ãžã®æžã蟌ã¿ã«ãã£ãŠããŒãžãèšå®ãããšãã¬ãžã¹ã¿tã®ããã11,10ãå€æŽãããŸãã ã¬ãžã¹ã¿0x2005ã«æžã蟌ããšãã¬ãžã¹ã¿tã®ããã4ïŒ0ããã³9ïŒ5/14ïŒ12ã®å€ãšXã§ã¹ã¯ããŒã«ãããæ£ç¢ºãªãå€ãèšå®ãããŸããããããã¬ãžã¹ã¿0x2006ã«æžã蟌ããšããã¹ãŠã®ãããã®å€ãäžåºŠã«å€æŽã§ããããããã¹ãŠãå°ç¡ãã«ãªãå¯èœæ§ããããŸãã¬ãžã¹ã¿tã2åç®ã®æžã蟌ã¿æäœã§ã¯ãv = tãã³ããŒãããŸãã
ç·ãæãããã»ã¹ã§ã¯ãPPUã¯ã¬ãžã¹ã¿vã§ç²ã¹ã¯ããŒã«ã®å€ãXã ãå¢ãããç²ã¹ã¯ããŒã«å€ããªãŒããŒãããŒãããšãããªããŒãžã®ã¢ãã¬ã¹ãå€æŽããŸãã å¯èŠã©ã€ã³ã®çµããïŒãã¯ã»ã«256-257ïŒã§ãPPUã¯Yå€ãå¢ãããæ°Žå¹³ã¹ã¯ããŒã«ã«é¢é£ããã³ã³ããŒãã³ããã³ããŒããŸãïŒv [4ïŒ0] = t [4ïŒ0]ããã³v [10] = t [10]ïŒã æ°ãããã¬ãŒã ãéå§ããïŒããªã¬ã³ããªã³ã°ïŒåã«ãåçŽã¹ã¯ããŒã«ã®ã³ã³ããŒãã³ããã³ããŒãããŸãïŒv [9ïŒ5] = t [9ïŒ5]ãv [14:12] = t [14:12]ãv [11] = t [ 11]ïŒã ãããŠããã¹ãŠãåã³å§ãŸããŸãã
PPUã¬ãžã¹ã¿ã®å€ãå€æŽããããšã§ãããŸããŸãªããã¯ã°ã©ãŠã³ããã£ã¢å¹æãåŸãæ¹æ³ãæ確ã«ãªããŸããã
ç»å圢æã«ã€ããŠå°ã
åãã¯ã»ã«ã®è²ã¯ãã¬ããããéžæãããŸãã èæ¯ãšã¹ãã©ã€ãçšã®åå¥ã®ãã¬ããããããŸãã ãã¬ããã¯16ãã€ãã®ã¡ã¢ãªé åã§ãã èæ¯ãã¬ããã®ãŒãèŠçŽ ã¯ããã£ã³ãã¹ã®è²ãèšå®ããŸãã èæ¯ãã¯ã»ã«ãã¬ã³ããªã³ã°ãããšãããã¬ããã®è²èŠçŽ ãæã4ãããã¢ãã¬ã¹ãçæãããŸãã ã¢ãã¬ã¹ã®2ã€ã®æäžäœãããã¯ã¿ã€ã«ã°ã«ãŒãã®å±æ§ã®å€ã§ããã2ã€ã®æäžäœãããã¯æåãžã§ãã¬ãŒã¿ãŒããã®ç»åã«ãã£ãŠèšå®ãããŸãã ã°ã«ãŒãã®å±æ§ãå€æŽããããšã«ããããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒã®åãèŠçŽ ã䜿çšããŠã¿ã€ã«ã®è²ãå€æŽã§ããŸãã
ãããªããŒãžïŒååããŒãã«ïŒã®æåã®960ãã€ãã¯ãããŒãžã«ããCHRæåãžã§ãã¬ãŒã¿ãŒããã®ã¿ã€ã«ã®ã¢ãã¬ã¹ãæå®ããŸãã å±æ§ããŒãžã®æ®ãã®64ãã€ãã¯ãããããå±æ§ã16ã¿ã€ã«ã®ã°ã«ãŒãïŒ32x32ãã¯ã»ã«é åïŒã«èšå®ããŸãã
16ãã€ãã¯ã1ã€ã®ã¢ã€ã³ã³ã®ã€ã¡ãŒãžãæåãžã§ãã¬ãŒã¿ãŒã®ã¡ã¢ãªã«æ ŒçŽããããã«äœ¿çšãããŸãã åè¿°ã®ããã«ãåãã¯ã»ã«ã¯2ãããã§ãšã³ã³ãŒããããŸãã æåã®8ãã€ãã¯ãã¯ã»ã«ã®äžäœããããåç §ãã次ã®8ãã€ãã¯äžäœããããåç §ããŸãã ã€ãŸãããã€ãã®ãã¢0 + 8ã1 + 9ãªã©ã è¡ã®ã¢ã€ã³ã³ãèšå®ããŸãã
äŸã®è²ã¯æ¡ä»¶ä»ãã§éžæãããŸãããŒãã«çããèŠçŽ ã¯éæã§ãããå±æ§å€ã¯ãããã«åœ±é¿ããŸããã
ã°ã«ãŒãå±æ§ã¯æ¬¡ã®ããã«èšå®ãããŸã
ãPPUã®1ã¯ããã¯ãµã€ã¯ã«ã§1ãã¯ã»ã«ãæç»ããå¿ èŠããããŸããå ã®NESã§ã¯ã2ãµã€ã¯ã«ã®PPUã§ã¡ã¢ãªãã1ã€ã®å€ããååŸã§ããªãããšãç解ããå¿ èŠããããŸãããããã£ãŠãHBLANKæéã®çµããã«è¡ã®éå§åã«ãæ°ããè¡ã®æåã®2ã€ã®ã¿ã€ã«ã®ããŒã¿ããµã³ããªã³ã°ãããŸãã
ã¿ã€ã«ã©ã€ã³ã®åºåã«å¿ èŠãªããŒã¿ã¯ãPPUã®8ãµã€ã¯ã«ã§ãµã³ããªã³ã°ãããŸãããŸãããããªã¡ã¢ãªãããæåãžã§ãã¬ãŒã¿ãŒã®ã¿ã€ã«ã¢ãã¬ã¹ïŒ2ã¡ãžã£ãŒïŒã次ã«ã°ã«ãŒãå±æ§å€ïŒ2ã¡ãžã£ãŒïŒã次ã«æåãžã§ãã¬ãŒã¿ãŒããã®ã¿ã€ã«è¡ã®äžäœãã€ãïŒ2ã¡ãžã£ãŒïŒãæåŸã«ãã¿ã€ã«ã®æäžäœãã€ãïŒ2ã¡ãžã£ãŒïŒãååŸããŸãããããŠããã¹ãŠãåã³å§ãŸããŸãã
ã¢ãã¬ã¹ãã¹ãšããŒã¿ãã¹ãå€éåããŠããªãããããããžã§ã¯ãã§ã¯åPPUã¯ããã¯ã§ããŒã¿ãåä¿¡ã§ããŸãã
ã¹ãã©ã€ã
PPUã¬ãžã¹ã¿ã説æããã»ã¯ã·ã§ã³ã§ãã¹ãã©ã€ãã¡ã¢ãªã®é å-ãªããžã§ã¯ãå±æ§ã¡ã¢ãªïŒOAMïŒã«èšåããŸããããµã€ãºã¯256ãã€ãã§ãå¥ã®ã¢ãã¬ã¹ç©ºéã®PPUãããäžã«ãããŸããã€ãŸãããã®é åãžã®VRAMãCHR ROMã®åæã¢ã¯ã»ã¹ãå¯èœã§ãã
OAMã®åã¹ãã©ã€ãã«ã¯4ãã€ããå²ãåœãŠãããŠãããããäžåºŠã«ç»é¢ã«è¡šç€ºã§ããã¹ãã©ã€ãã¯64åãŸã§ã§ãã
ã¹ãã©ã€ãã®ç»åããã£ã©ã¯ã¿ãŒãžã§ãã¬ãŒã¿ãŒïŒCHR ROMïŒã«ä¿åãããŸãã
ç»é¢äžã®åã¹ãã©ã€ãã¯ãXãšYã®ç»é¢äžã®äœçœ®ãæåãžã§ãã¬ãŒã¿ãŒã®ã¢ã€ã³ã³ã®ã¢ãã¬ã¹ãå±æ§ïŒèæ¯ãã¬ã³ããªã³ã°ãããšãã®ã°ã«ãŒãå±æ§ãšåãïŒãã¹ãã©ã€ãã®æ°Žå¹³ããã³åçŽåå°ãã©ã°ïŒ1ã€ã®ã¢ã€ã³ã³ã®ååã䜿çšããŠå¯Ÿç§°ãªããžã§ã¯ãã衚瀺ã§ããŸãïŒã«ãã£ãŠèšè¿°ãããŸããžã§ãã¬ãŒã¿ãŒïŒããã³åªå é äœã®ãã©ã°ã
ã¹ãã©ã€ãã®ãµã€ãºã¯8x8ããã³8x16ãã¯ã»ã«ã§ãã
ã¹ãã©ã€ãç»åã®åœ¢æã¯ãèæ¯ç»åã®åœ¢æãšå€ãããŸããããã ããããŒããŠã§ã¢ã®å®è£ ã«ãç¬èªã®ç¹æ§ããããŸãã
ç·ãæç»ããããšåæã«ã次ã®è¡ã«è¡šç€ºãããïŒç¯å²è©äŸ¡ã®ïŒã¹ãã©ã€ãã®æ€çŽ¢ãè¡ãããŸãã PPUã«ã¯ã8ã€ã®ã¹ãã©ã€ãã«é¢ããæ å ±ãä¿åã§ããã»ã«ã³ããªOAMããããŸããæ€çŽ¢äžã«æ¬¡ã®è¡ã«8å以äžã®ã¹ãã©ã€ããããããšãå€æããå Žåãäœåãªã¹ãã©ã€ãã¯ç¡èŠãããPPUã¬ãžã¹ã¿0x2002ã§ãã©ã°ãç«ãŠãããŠãããéç¥ããŸãã
CHR ROMãã¹ã¯ç·ã®æç»äžã«ããžãŒã§ããããããããã®8ã€ã®ã¹ãã©ã€ãã®ãã¯ã»ã«ã«ã©ãŒã«é¢ããã·ã³ãã«ãžã§ãã¬ãŒã¿ãŒããã®ããŒã¿ã¯ãHBLANKæéã«ãµã³ããªã³ã°ãããŸãã
NESã¯ã256x240ãã¯ã»ã«ã®è§£å床ã§ç»åã圢æããŸããç»åã衚瀺ããã«ã¯ãVGA 640x480ã®æšæºè§£å床ã䜿çšããŸããPPUã¯ç»åããã¬ãŒã ãããã¡ãŒã«ã¬ã³ããªã³ã°ããŸãããã¬ãŒã ãããã¡ãŒããã®ããŒã¿ã¯ã解å床ã2åã«ãªã£ããããã¯ã«å ¥ããŸãïŒã¢ããã¹ã±ãŒã©ãŒïŒãå°æ¥çã«ã¯ãhq2xãå®è£ ããŸãããããªDACã«ããŒã¿ãé©çšããåã«ãè²ã¯RGBã«å€æãããŸãã
DMAã³ã³ãããŒã©ãŒ
OAMã«ãã°ããå ¥åããããã«ãNESããã»ããµã¯DMAã³ã³ãããŒã©ã䜿çšã§ããŸããDMAã³ã³ãããŒã©ã¯éåžžã«ç°¡åã«å®è£ ãããŸããã³ããŒæäœãéå§ããåã«ãCPUã¯OAMéå§ã¢ãã¬ã¹ïŒã¬ãžã¹ã¿0x2003ïŒãèšå®ãããã0ã«ãªã»ããããå¿ èŠããããŸãããã®åŸãCPUã¯ã¢ãã¬ã¹0x4014ã«CPUã®ã¢ãã¬ã¹ç©ºéã®éå§ã¢ãã¬ã¹ïŒ0x ?? 00ïŒã®å€ãæžã蟌ã¿ãŸããDMAã³ã³ãããŒã©ã¯CPUãåæ¢ããé å0x ?? 00ã0x ?? FFïŒ??ã¯CPUã«ãã£ãŠæå®ãããå€ïŒããPPUã¬ãžã¹ã¿0x2004ãžã®256ãã€ãã®ã³ããŒãéå§ããŸããPPUã¯ãæžã蟌ã¿æäœããšã«1ã€ãã€OAMã¢ãã¬ã¹ãå¢åããŸããæé ã®æåŸã«ãDMAã³ã³ãããŒã©ãŒã¯å¶åŸ¡ãCPUã«æ»ããŸãã
åªå 床ãšã¹ãã©ã€ã0ããã
ãã¯ã»ã«ã®è²ã®æçµçãªå€ã¯æ¬¡ã®ããã«åœ¢æãããŸãã
è€æ°ã®ã¹ãã©ã€ããåãé åã«ååšããå¯èœæ§ãéåžžã«é«ãããã°ãã°çºçããŸãã
ãã®å Žåãç»é¢ãžã®åºåã®åªå 床ã¯2ã€ã®èŠå ã®åœ±é¿ãåããŸããããã¯ãOAMã®ã¹ãã©ã€ãã¢ãã¬ã¹ã®å€ãšåªå 床ãã©ã°ïŒ0-åæ¯ã1-èæ¯ïŒã§ããããšãã°ãåªå ãã©ã°ãèæ¯ã«å±ããããšã瀺ããŠããããOAMã®ã¢ãã¬ã¹ã®å€ãåæ¯ã®ã¹ãã©ã€ãã®å€ãããå°ããã¹ãã©ã€ãã®å Žåãèæ¯ã®ã¹ãã©ã€ãã¯åã®ã¹ãã©ã€ããéããããšãã§ãããããèæ¯ã®ãã¯ã»ã«ãåºåãããŸãããéæã§ãªãå Žåã
ã¢ãã¬ã¹0ã§ã¹ãã©ã€ãã®æåã®äžéæãªãã¯ã»ã«ãã¬ã³ããªã³ã°ãããšïŒãã®æç¹ã§èæ¯ãäžéæã§ãªããã°ãªããŸããïŒãã¬ãžã¹ã¿0x2002ã§ãã©ã°ãç«ãŠãããSprite 0ãããã€ãã³ããçºçããããšã瀺ããŸãããã®ãã©ã°ã®é©çšäŸã¯ãã¹ãŒããŒããªãªãã©ã¶ãŒãºã§ãã1ãããã¯ç»é¢ãå£ãããã¬ã€ãšãªã¢ãããã€ã³ããšæéã«é¢ããéçãªæ å ±ãåé¢ããããã«äœ¿çšãããŸããã³ã€ã³ç»åã¯èæ¯ãšããŠæ©èœãããã®åœ±ã¯ãŒãã¹ãã©ã€ããšããŠæ©èœããŸããCPUã¯å®æçã«ãã©ã°ã®å€ããã§ãã¯ããã€ãã³ããçºçãããšã競æå Žã®åºåãéå§ãããŸãã
ããããŒMMC 3ããã®äžæ
ããããŒMMC3ã«ã¯è¡ã«ãŠã³ã¿ãŒãå«ãŸããŠããã次ã®PPUè¡ã衚瀺ããããšå€ãæžå°ããŸãããŒãã«éãããšãã«ãŠã³ã¿ã¯ãããããŒã®å¯Ÿå¿ããã¬ãžã¹ã¿ã«äºåã«æžã蟌ãããšã§èšå®ã§ããå€ã§ãªããŒããããæå¹ãã©ã°ãèšå®ãããŠããå ŽåãCPUå²ã蟌ã¿ãçºçããŸããã«ãŠã³ã¿ãŒã¯ãããã³ã°ã©ã€ã³ã¯ããªãç¬èªã®æ¹æ³ã§æ§æãããŠããŸã-GPUã®ã¢ãã¬ã¹ã©ã€ã³A12ã«æ¥ç¶ãããŠããŸããèæ¯ã¿ã€ã«ãä¿åããã«ã¯ãéåžžãäžäœãã³ã¯ïŒé å0x000-0x0FFFïŒã䜿çšããã¹ãã©ã€ã-ã·ãã¢ãã³ã¯ïŒé å0x1000-0x1FFFïŒã䜿çšããŸããå¯èŠç·ãæç»ãããšããPPUã¯1ã€ã®ãã³ã¯ãåç §ããHBLANKã§ã¹ãã©ã€ãã€ã¡ãŒãžããŒã¿ããã§ãããããšããããªãªãã¯å¥ã®ãã³ã¯ãåç §ããŸãããããã£ãŠãã©ã€ã³A12ã®åšæ³¢æ°ã¯ã©ã€ã³åºååšæ³¢æ°ã«å¯Ÿå¿ããŸããããããŒå²ã蟌ã¿ã¯ãäž»ã«ç»é¢ãå£ãããµã€ã³ãžã§ãã¬ãŒã¿ãŒãã³ã¯ãåãæ¿ããããã«äœ¿çšãããŸãã
ãããªã®äŸãèŠãããšãã§ããŸãã
APU
NESãªãŒãã£ãªããã»ããµã¯ãCPUãšåããããäžã«ãããŸããæ©èœçã«ã¯ãAPUã¯äžé£ã®å¶åŸ¡ã¬ãžã¹ã¿ããã¬ãŒã ã«ãŠã³ã¿ãŒãããã³ãªãŒãã£ãªãã£ãã«ã®5ãããã¯ã§ãã
ããŒããŠã§ã¢ã®èŠ³ç¹ããèŠããšãAPUã¯ã«ãŠã³ã¿ãŒã®éãŸãã§ãããèœãšãç©Žã¯ãªãããã説æã¯ç°¡åã§ãã
ãã¬ãŒã ã«ãŠã³ã¿ãŒã¯ãCPUã®IRQå²ã蟌ã¿ã ãã§ãªããçŽ240 HzãAPUã®å Žåã¯120 Hzã®åšæ³¢æ°ã®ã¯ããã¯ãã«ã¹ãçæããŸããå²ã蟌ã¿çæã¯ãAPUã¬ãžã¹ã¿ãèšå®ããããšã§ãªãã«ã§ããŸããããã¬ãŒã ãã®æŠå¿µãæ··åããªãã§ãã ããããã®å ŽåãPPUãšã¯é¢ä¿ãããŸããã
ã¡ãªã¿ã«ãéçºäžã«äžå¿«ãªã€ã³ã·ãã³ããçºçããAPUãã¬ãŒã ã«ãŠã³ã¿ãŒãæ¢ã«å®è£ ãããŠãããå²ã蟌ã¿ã€ããŒãã«ãã©ã°ããã¡ããã¡ãã«ãªã£ãããïŒå転ããããšãå€æïŒãçŽ60 Hzã®åšæ³¢æ°ã§å²ã蟌ã¿ãçæãããŸãããå€åŽã§ã¯ãããã¯éåžžã«äºæããçŸããŸãããã²ãŒã ãããªã³ã¹ãªããã«ã·ã£ãã§ã¯ãç»é¢ã®å·ŠåŽã«ãã°ãªã«ã®ããåºå ¥ãå£ã衚瀺ãããããããå¯äžã®ã°ã©ãã£ãã¯ã¢ãŒãã£ãã¡ã¯ãã§ãããæ¬åœã®çç±ãããããŸã§é ã骚æããããã¡ãããPPUã«ã€ããŠãèããŸãããModelSimã§ã³ãŒãã100åãã§ãã¯ããŸãããäžå¿«ã§ããïŒ
APUã«ã¯5ã€ã®ãã£ãã«ããããŸãã
ååã瀺ãããã«ã2ã€ã®é·æ¹åœ¢ãã£ãã«ã¯ãæ¹åœ¢æ³¢ã1ã€ã®äžè§åœ¢ãã£ãã«ã1ã€ã®ãã€ãºãã£ãã«ããã«ã¿å€èª¿ãã£ãã«ïŒDMCïŒã圢æããŸãã
é·æ¹åœ¢ãã£ãã«ã¯ãå¯å€ãã¥ãŒãã£ãµã€ã¯ã«ïŒ4é調ïŒãšåšæãæã€ä¿¡å·ã圢æã§ããæç¶æéãèšå®ããæ©èœãæã¡ãã¹ã€ãŒããããã¯ãšãšã³ãããŒããããã¯ãåããŠããŸããã¹ã€ãŒããããã¯ã¯ä¿¡å·ã®åšæãæéçã«å€æŽïŒé 次å¢å ãŸãã¯æžå°ïŒã§ãããšã³ãããŒããããã¯ïŒãšã³ãããŒãïŒã¯ã«ãŒãã®å¯èœæ§ãããæéå ã«ä¿¡å·æ¯å¹ ãæžå°ã§ããŸãããã®å Žåã®ãšã³ãããŒãã®åœ¢ç¶ã¯éžæ¯ç¶ã§ãã
äžè§ãã£ã³ãã«ã¯ãåšæ³¢æ°ãšæç¶æéãå¯å€ã®äžè§ä¿¡å·ãçæããŸãããé³éã調æŽããæ©èœã¯ãããŸããã
ãã€ãºãã£ãã«ã¯ãå¯å€æéã®æ¬äŒŒã©ã³ãã ä¿¡å·ãçæããŸãããã€ãºãã£ã³ãã«ã«ã¯ãç©åœ¢ãã£ã³ãã«ãšåæ§ã«ããšã³ãããŒãã³ã³ãããŒã«ãŠãããããããŸãã
ãããžã§ã¯ãã®ãã«ã¿å€èª¿ã®ãã£ãã«ã¯ãŸã å®è£ ãããŠããŸããã
LEã®æ¶è²»ã«é¢ããŠãéããæäœã䜿çšããªãããã«ããã£ãã«ã®æ··åã¯è¡šåœ¢åŒã§å®è¡ãããŸãã
ããã·ã³ã°åŸãä¿¡å·ã¯ãã¡ã€ã³åæãããã¯ãšãã£ã«ã¿ãŒã«å ¥ãããã®åŸãI2Sãã¹ãä»ããŠã·ãªã¢ã©ã€ã¶ãŒãããã¯ãä»ããŠWM8731ãªãŒãã£ãªã³ãŒããã¯ã«éãããŸãã
ãããžã§ã¯ããå®è£ ãããšãã«ãVerilog 2001ããŒããŠã§ã¢èšè¿°èšèªã䜿çšããŸããã
, , , , . , , . . , , , GNU GPL.
ãæž èŽããããšãããããŸããïŒ