Turbo PascalãåããŠèŠã20ååŸã«ãåããŠã³ã³ãœãŒã«çšã®ã²ãŒã ãéçºããæ¹æ³ãèããŸããã ããŒããŒãã®ä»ããSuborãæã
ç®ãåŒãããããããããã°ã©ã ãå
¥åããŠåçããããšãã§ããããšããèããæµ®ãã³ãŸããã ãããããã®ãããã¯ã«é¢ããæ
å ±ã¯ãŸã£ããå
¥æã§ããªãã£ããããé¢å¿ã¯ããã«èããŸããã 次åãå€ãã³ã³ãœãŒã«ã®éåžžã«ãã¬ã€å¯èœãªãšãã¥ã¬ãŒã¿ãŒãèŠããšãã«åãèããæµ®ãã³ãŸããã 次ã«ããªã¹ããã³ã³ãœãŒã«èªäœã«å
¥ããå¿
èŠã¯ãªãããšãæããã«ãªããŸããã ããªãåŸã®ã©ããã§ãHabrã¯ãã®ãããªããšã«å¯ŸããŠæ
æ²æ·±ãèŽè¡ãšãšãã«çŸããŸããã ããæç¹ã§ãç§ã¯ããã¥ã¢ã«ãæžãããã«ç°çš®ã®æ
å ±ãåéãå§ããŸããããä»æ¥ãæ¢è£œã®æç§æžã«åºäŒããŸãããããã¯æããã«ç¿»èš³ããå¿
èŠããããŸãã
å€ãã³ã³ãœãŒã«ã®éçºã¯åºãææžåãããŠããŸãããæ
å ±ã®99ïŒ
ãã¢ã»ã³ãã©ãŒã®éçºã«é¢é£ããŠããã®ã¯NESã«ãããšã§ãã äœããã®çç±ã§ãSã§äœæ¥ããã¹ã¿ãŒããå¿
èŠããããšãããã³ã°ããŸããã
次>>>

ã¿ãªããããã«ã¡ã¯ã

ç§ã®ååã¯ãã°ã§ãã ç§ã¯ãã1幎NESåãã®ã²ãŒã ãæžããŠããŸããããã®ããã°ãå§ããããšã«ããŸããã NESã²ãŒã éçºãã¥ãŒããªã¢ã«ãæžããŠãä»ã®äººã«èªåã®ã²ãŒã ãäœãããã«ä¿ããŸãã
ããã°ã®ç¹åŸŽã¯çŽç²ãªCã®äœ¿çšã§ãããããä»ã®ããã°ã©ããŒã¯ãããã»ããµãŒ6502ã®ã¢ã»ã³ãã©ãŒãæ·±ãæãäžããããšãªããããã«æžãå§ããããšãã§ããŸãã
ãŸããç§ã¯éçºãããã°ã®ã©ã¡ãã®å°é家ã§ããªãããšãå¿ããªãã§ãã ããã NESã«ã€ããŠè³ªåãããå Žåã¯ãããããWikiã§åçãèŠã€ããããšãã§ããŸãã
ãã¬ãŒãã³ã°ãå¯èœãªéãç°¡çŽ åããæãåçŽãªäŸã䜿çšããããã«ããŸãã ãŸããã²ãŒã ã®æãåçŽãªã¢ã€ãã¢ããå§ããããšããå§ãããŸãã èªè
ã¯æããã«æ°ãããŒã«ããäœããããšæãã§ãããããããã¯ããŸããããŸããã æãåçŽãªã²ãŒã ã®éçºã«ã¯2ã3ãæããŒã«ã-2ã3幎ããããŸãã ãã®ãããªãããžã§ã¯ãã¯æŸæ£ãããå¯èœæ§ããããŸãã å°ãªããšãåããŠãPakmanã«æ³šç®ããŠãã ããã
ã³ã³ãœãŒã«ã¡ã¢ãª
ã¡ã¢ãªã®æ§é ã«ã€ããŠè©±ããŸãããã NESã«ã¯2ã€ã®ç¬ç«ããã¢ãã¬ã¹ç©ºéããããŸã-ç¯å²ã$ 0ã$ FFFFã®ããã»ããµã¡ã¢ãªãšPPUãããªãããã®ã¡ã¢ãªã
ããã»ããµã®ã¡ã¢ãªããå§ããŸãããã
- æåã®800ãã«ã¯RAMã§ãã
- 6000ãã«ãã7FFFã®ç¯å²ã¯ãäžéšã®ã²ãŒã ã§SRAMïŒããããªãŒä»ãã«ãŒããªããžã«ä¿åïŒã䜿çšããããè¿œå ã®ã¯ãŒã¯RAMãšããŠäœ¿çšãããããããã«äœ¿çšãããŸãã
- ã¹ããŒã¹ã«$ 8000- $ FFFF ROMã衚瀺ãããŸãã äžéšã®ããããŒïŒã«ãŒããªããžå
ã®ãªãã·ã§ã³ã®ããã»ããµãŒïŒã¯32k以äžã®ROMã䜿çšã§ããŸãããéåžžã¯$ 8000- $ FFFFã§åäœããŸãã
- ã¢ãã¬ã¹$ FFFC- $ FFFDã¯ãããã°ã©ã ã®éå§ã瀺ããªã»ãããã¯ãã«ã§ãã
詳现ãªæ
å ±ã¯ãã¡ãã§ã ã
PPUã«ã¯ç¬èªã®ç¬ç«ããã¢ãã¬ã¹ç©ºéããããŸãã ãµã€ãºã¯3FFFã§ãããäžéšã®å Žæã§ãã©ãŒåãããŠããŸãã ãããžã®ã¢ã¯ã»ã¹ã¯ãããã»ããµã¡ã¢ãªå
ã®ã¬ãžã¹ã¿ãééããŸãã 4ã€ã®ç»é¢ãããã¡ãŒã«ååãªãããªã¡ã¢ãªããããŸãããã²ãŒã ã®å€§éšåã§ã¯ã¹ã¯ããŒã«ãå®è£
ããããã«2ã€ãã䜿çšãããŠããŸããã
- $ 0- $ 1FFF =ã¹ãã©ã€ãã¯ããã«ä¿åãããŸã
- $ 2000- $ 23FF =ååããŒãã«0
- $ 2400- $ 27FF =è¡š1ã®åå
- $ 2800- $ 2BFF =ååè¡š2
- $ 2C00- $ 2FFF =ååè¡š3
ãã®å ŽåãããŒãã«2ãš3ã¯ããŒãã«0ãš1ã®ãã©ãŒã§ãã - $ 3F00- $ 3F1F =ãã¬ãã
ååããŒãã«ãååããŒãã«ã¯ãèæ¯ã¿ã€ã«ãšç»é¢äžã®äœçœ®ããªã³ã¯ããŸãã
ãã©ãŒãªã³ã°ã䜿çšãããšãæ°Žå¹³ã¹ã¯ããŒã«ãŸãã¯åçŽã¹ã¯ããŒã«ãå¶åŸ¡ã§ããŸããããã¹ãŠã«ç¬èªã®æéããããŸãã

PPUã«ã¯ããµã€ãºã256ãã€ãã®åå¥ã®OAMã¡ã¢ãªé åã§ãããªããžã§ã¯ãå±æ§ã¡ã¢ãªããããŸãã ãããžã®ã¢ã¯ã»ã¹ã¯ãããã»ããµã®ã¢ãã¬ã¹ç©ºéã®ã¬ãžã¹ã¿ãä»ããŠå®è£
ãããã¹ãã©ã€ãã®è¡šç€ºãå¶åŸ¡ã§ããŸãã
詳现ãªPPUã¡ã¢ãªæ
å ±ã¯æ¬¡ã®ãšããã§ãã
http://wiki.nesdev.com/w/index.php/PPU_memory_map
å¥ã®ãã€ã³ãã ã«ãŒããªããžã«ã¯2ã€ã®ã¿ã€ãããããŸãã ããã€ãã¯2ã€ã®ROMããããæã£ãŠããŸã-å®è¡å¯èœã³ãŒããåããPRG-ROMãšã°ã©ãã£ãã¯ãåããCHR-ROMã ãã®å Žåãã¹ã±ãžã¥ãŒã«ã¯èªåçã«ã¢ãã¬ã¹$ 0-1FFF PPUã«ãããã³ã°ãããŸãã ããã«ãããéåžžã«ç°¡åã«æç»ã§ããŸã-ããŒãã«ã«ã¿ã€ã«çªå·ãæžã蟌ãã ãã§ãã ãã®åœ¢åŒã䜿çšããŸãã
å¥ã®ã¿ã€ãã®ã«ãŒããªããžã¯ãCHR-ROMã®ä»£ããã«CHR-RAMã䜿çšããŸãã ããã«ããããã®è¿œå RAMã«ã°ã©ãã£ãã¯ã®äžéšãããŒãã§ããŸãã ããã¯è€éãªææ³ã§ããããã®ãã¥ãŒããªã¢ã«ã§ã¯åãäžããŸããã
ããã§ãéçºã«äœ¿çšããããœãããŠã§ã¢ã確èªã§ããŸãã
- ã³ã³ãã€ã©
- ã¿ã€ã«ãšãã£ã¿ãŒ
- ã°ã©ãã£ãã¯ãšãã£ã¿ãŒ
- ã¡ã¢åž³++
- è¯ããšãã¥ã¬ãŒã¿
- ã¿ã€ã«ããã«ãŒ
ãã®ãã¥ãŒããªã¢ã«ã§ã¯cc65ã®ã¿ãæ±ããŸãã ããã¯ã6502ãNESããã»ããµçšã®æé«ã®ã³ã³ãã€ã©ã®1ã€ã§ãã
ããŒãžã§ã³2.15ã䜿çšããŠããŸãïŒç¢ºèªã®ãããã³ã³ãœãŒã«ã«ãcc65 --versionããšå
¥åããŸãïŒã ç°ãªãããŒãžã§ã³ã®ãã¡ã€ã«ã«ã¯äºææ§ããªããããå¿
èŠã«å¿ããŠã³ã³ãã€ã©ãããã®nes.libã䜿çšããŠãã ããã
次ã«ãã°ã©ãã£ãã¯ãäœæããå¿
èŠããããŸãã YY-CHRã䜿çšããŸã
ã°ã©ãã£ãã¯ã®ååŠçã«ã¯ãPhotoshopãŸãã¯GIMPã®ã°ã©ãã£ãã¯ãšãã£ã¿ãŒãå¿
èŠã§ãã
ãã®ã³ãŒãã¯ã ã¡ã¢åž³++ã§æžãã®ã«äŸ¿å©ã§ã ã æ§æã®åŒ·èª¿è¡šç€ºãšè¡çªå·ä»ãããããŸã-ããã«ãããããã°ã容æã«ãªããŸãã

ãããŠä»ããšãã¥ã¬ãŒã¿ãŒã ç§ã¯FCEUXã90ïŒ
ã®æé䜿çšããŠããŸãããªããªããããã¯ã¡ã¢ãªãã¹ãã©ã€ããã¥ãŒã¢ãŒãªã©ãæäœããããã®ã¯ãŒã«ãªãããã¬ãŒãšããŒã«ãåããŠããããã§ãã ãããããšãã¥ã¬ãŒã·ã§ã³ã§ã¯æãæ£ç¢ºã§ã¯ãããŸããã ã²ãŒã ã¯å¥ã®å Žæã§ãã¹ãããå¿
èŠããããŸãã ã¬ãã¥ãŒããå€æãããšãæãæ£ç¢ºãªãšãã¥ã¬ãŒã¿ãŒã¯ãNintendulatorãNestopiaãããã³puNESã§ãã ããã§ãããæ£ç¢ºãªãã¬ãããããŒãããããšãäŸç¶ãšããŠæãŸããŸãã
FCEUXã«ã¯ãSDLãšWin32ã®2ã€ã®ããŒãžã§ã³ããããŸãã 1ã€ç®ã¯ã»ãŒãã¹ãŠã®å Žæã§æ©èœãã2ã€ç®ã¯Windowsã§ã®ã¿æ©èœããŸãã ãã®ããããããã¬ã¯2çªç®ã«ã®ã¿ååšããŸãã ãã®ããã代æ¿OSã®å Žåãä»®æ³ãã·ã³ãŸãã¯Wineã䜿çšããå¿
èŠããããŸãã
ãããŠæåŸã«ãã¿ã€ã«ã¢ã©ã€ããŒã ãããªãã§ãã²ãŒã ãäœæã§ããŸãããééããªã圹ç«ã¡ãŸãã NES Screen Toolããå§ãããŸãã ã³ã³ãœãŒã«ã®è²ã®å¶éãå®å
šã«ç€ºããŠãããåäžç»é¢ã®ã²ãŒã ã«æé©ã§ãã ã¹ã¯ããŒã«ã²ãŒã ã«ã¯ã ã¿ã€ã«ããããšãã£ã¿ãŒãæé©ã§ãã
ããããã¹ãŠäœ¿çšããæ¹æ³ã¯ïŒ

ç»åãé©åãªãµã€ãºãããšãã°128ãã¯ã»ã«å¹
ã«å§çž®ããå¿
èŠããããŸãã 次ã«ã4è²ã«å€æããå¿
èŠã«å¿ããŠå·ãä¿®æ£ããŸãã ããã§ãYY-CHRã§ã³ããŒã¢ã³ãããŒã¹ãã§ããŸãã
YY-CHRã§ã¯ãè²ã2ãããã§ããããšã確èªããå¿
èŠããããŸãã

ãã¬ããã¯ãä»ã®å Žæã«èšå®ãããŠãããããä»ã¯éèŠã§ã¯ãããŸããã
ss65ã¯ã©ã®ããã«
NESã®ãã¹ãŠã®ã³ã³ãã€ã©ã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãªãã§ã³ã³ãœãŒã«ãä»ããŠåäœããŸãã ã€ãŸããã¡ã¢åž³ã§ããã°ã©ã ãäœæããå¿
èŠãªãã©ã¡ãŒã¿ãŒã䜿çšããŠã³ã³ãã€ã©ãŒãåŒã³åºããŸãã
äœæ¥ãç°¡çŽ åããããã«ã.batã¹ã¯ãªãããšMakefileã䜿çšããŸãã ããã«ãããããã»ã¹ãèªååãããã¯ã³ã¿ããã§ã«ãŒããªããžã®ç»åãåéãããŸãã
ããã»ã¹ã¯ãã®ãããªãã®ã§ãã cc65ã¯ãCã³ãŒããã¡ã€ã«ãã¢ã»ã³ããªã³ãŒãã«ã³ã³ãã€ã«ããŸãã ca65ã¯ãªããžã§ã¯ããã¡ã€ã«ãåéããŸãã ld65ã¯ããšãã¥ã¬ãŒã¿ã§å®è¡ã§ãã.nesã«ãŒããªããžã€ã¡ãŒãžã«ãªã³ã¯ããŸãã èšå®ã¯.cfgãã¡ã€ã«ã«ä¿åãããŸãã
ãã¬ãã£ãã¯ã¹ã¯8ãããããã»ããµMOS 6502ã䜿çšããŸãã8ããããè¶
ããå€æ°ã«åçŽã«ã¢ã¯ã»ã¹ããæ¹æ³ã¯ããããŸããã ã¢ãã¬ã¹æå®ã¯16ãããã§ãæ°åŠçã«ã¯å ç®ãæžç®ããããã·ããã®ã¿ã§ãã ãã®ããããããã®èŠå ãèæ
®ããŠã³ãŒããäœæããå¿
èŠããããŸãã
- ã»ãšãã©ã®å€æ°ã¯ãunsigned charå-8ããããå€0ã255ã§ããå¿
èŠããããŸã
- é¢æ°ã«å€ãæž¡ããªããã3ã€ã®ã¬ãžã¹ã¿ïŒAãXãYïŒã«åŒæ°ãæž¡ãfastcallãã£ã¬ã¯ãã£ããä»ããŠå€ãæž¡ãããšããå§ãããŸã
- é
åã¯256ãã€ãããé·ãããããšã¯ã§ããŸãã
- printfããããŸãã
- ++ gã¯g ++ãããèããéã
- cc65ã¯ãæ§é äœãå€ã§æž¡ãããšããé¢æ°ããè¿ãããšãã§ããŸãã
- ã°ããŒãã«å€æ°ã¯ããŒã«ã«å€æ°ãæ§é äœãããã¯ããã«é«éã§ã
-Oãªãã·ã§ã³ã䜿çšããŠæé©åããŸãã ãªãã·ã§ã³iãrãsããããŸãããããã¯ã-Oirsã§çµã¿åããããããšããããŸãããããšãã°ãå€ã䜿çšãããªãããã»ããµã¬ãžã¹ã¿ããèªã¿åããåé€ã§ããŸãã ãããŠããã¯èŽåœçã§ãã
ã³ã³ãã€ã©ã䜿çšããããã®æšå¥šäºé
ã次ã«ç€ºããŸãã
8ãããããã»ããµã®ãªãœãŒã¹ã¯éåžžã«å°ãªããããæé©åã¯äžå¯æ¬ ã§ããå Žåã«ãã£ãŠã¯ãã³ãŒãã®å®è¡æéãç£èŠããå¿
èŠããããŸãã éåžžã®Cã³ãŒãã¯ãããã®èŠä»¶ãæºãããŠããŸããã
ä»ã®ãã¡ã€ã«ããã®å€æ°ã®ã€ã³ããŒãããµããŒããããŠããŸãã cc65ã¯ãã³ãã³ãã䜿çšããŠã¢ã»ã³ãã©ãŒã¢ãžã¥ãŒã«ããå€æ°ãšé
åãã€ã³ããŒãã§ããŸãã
extern unsigned char foo;
ãããŠããããã¡ã¢ãªã®ãŒãããŒãžããã®æåã§ããå Žåããã£ã¬ã¯ãã£ããè¿œå ããŸã
#pragma zpsym (âfooâ);
å°æ¥ã®ã³ãŒã¹ã§ã¯ããããã®ãã¶ã€ã³ã¯ã»ãšãã©äœ¿çšãããŸããã å¯äžã®äŸå€ã¯ã倧ããªãã€ããªãã¡ã€ã«ã®ã€ã³ããŒãã§ãã ãã®å Žåãã¢ã»ã³ãã©ãŒãã¡ã€ã«ã«ã©ããããã®ãæé©ã§ãã
.export _foo _foo: .incbin "foo.bin"
ãããŠã次ã®ããã«Cã«ã€ã³ããŒãããŸã
extern unsigned char foo[];
_65èšå·ã¯ããã§éèŠã§ããã¢ã»ã³ããªã³ãŒãã«ã³ã³ãã€ã«ããããšãcc65ã¯åå€æ°åã®åã«_ãè¿œå ããããã§ãã ããã«åãããå¿
èŠããããŸãã
__fastcall__ã䜿çšããŠãã¢ã»ã³ãã©ãŒã§èšè¿°ãããé¢æ°ãåŒã³åºãããšãã§ããŸãã ãã®å ŽåãåŒæ°ã¯ã¹ã¿ãã¯ã§ã¯ãªãã¬ãžã¹ã¿ãä»ããŠé¢æ°ã«æž¡ãããŸããæéãç¯çŽã§ããŸãã å Žåã«ãã£ãŠã¯ãããšãã°ãã¬ãã£ãã¯ã¹ãåæåãããšããªã©ãã¢ã»ã³ãã©ã³ãŒããçãããšãã§ããŸããã ãããã«ãããé¢æ°ã«æž¡ãããåŒæ°ãå°ãªãã»ã©è¯ãã§ãã 2ã€ã®é¢æ°ããã¹ãå€æ°ãšã°ããŒãã«å€æ°Aãæ¯èŒããŸãã
void Test (char A) { test = A; }
_ãã¹ã jsr pusha ldy #$00 lda (sp),y sta _test ; test = A; jmp incsp1 pusha: ldy sp beq @L1 dec sp ldy #0 sta (sp),y rts @L1: dec sp+1 dec sp sta (sp),y rts incsp1: inc sp bne @L1 inc sp+1 @L1: rts
void Test (void) { test = A; }
ã¢ã»ã³ãã©ã³ãŒããã³ãŒãã«çŽæ¥æ¿å
¥ããããšãã§ããŸãã ç§ã¯ã»ãšãã©ãããããŸããããæã«ã¯ãããæã
å¿
èŠã§ãã 次ã®ããã«ãªããŸãã
asm ("Z: bit $2002") ; asm ("bpl Z") ;
ããã«ãããã°ãcrt0.såæåã³ãŒããã³ã³ãã¯ããªreset.sã«çœ®ãæããããããã¹ãŠã®èšå®ã埮調æŽããŸããã ãããã®ãã¡ã€ã«ã¯æã
å€æŽãããŸãã nes.libã¯ãã³ã³ãã€ã©ã®æšæºã®ãã®ã䜿çšããŸãã ãããžã§ã¯ãã¯ãäžéã¢ã»ã³ãã©ãã¡ã€ã«ãåé€ããªã-add-sourceãªãã·ã§ã³ã䜿çšããŠãã«ããããŸããçæãããã³ãŒããæ€èšã§ããŸãã
ãœãŒã¹ã³ãŒãã§å€æ°ãå®çŸ©ããŠãããã¢ã»ã³ãã©ã«ã€ã³ããŒãããæ¹ã䟿å©ã§ãã
.import _Foo
ããããããã¯å¥œã¿ã®åé¡ã§ãããç§ã®æèŠã§ã¯ããã®ãããªã³ãŒãã¯ããèŠèŠçã§ãã
ãããŒã¯ãŒã«ã
ãã®ããã°ã©ã ã¯ãç»é¢ã«ããã¹ããå°å·ããã ãã§ãã ãã¬ãã£ãã¯ã¹ã¯ãASCIIãšã³ã³ãŒãã£ã³ã°ãšããããã圢åŒã®ããã¹ãã®æäœã«ã€ããŠç¥ããªãããšã«æ³šæããå¿
èŠããããŸãã ãã ããèæ¯ã«8x8ã®ãµã€ãºã®åçã衚瀺ããæ©äŒããããŸãã
ããã§ãã¹ãã©ã€ãæåã®é
åãäœæãããã®æåã®ã¢ãã¬ã¹ãASCIIã³ãŒãã«å¯Ÿå¿ããããã«ããŸãã ãã®åŸãCã®ã³ãŒãããããããååŸã§ããŸãã

ãã¬ãã£ãã¯ã¹åæåã³ãŒãããã®ãŸãŸäœ¿çšããŸãããå®è¡åŸãmainïŒïŒãžã®é·ç§»ãçºçããŸãã
次ã®æäœãè¡ãå¿
èŠããããŸãã
- ç»é¢ããªãã«ãã
- ãã¬ãããã«ã¹ã¿ãã€ãº
- 倧åãªèšèãåŒãåºã
- ã¹ã¯ããŒã«ãç¡å¹ã«ãã
- ç»é¢ããªã³ã«ãã
- ç¹°ãè¿ã
ãããªã¡ã¢ãªãæäœãããšç»é¢ã«ãŽããçºçãããããç»é¢ããªãã«ããå¿
èŠããããŸãã ç»é¢ããªãã«ãããããã¬ãŒã ãã©ã³ãã³ã°ãã«ã¹ïŒV-BlankïŒãåŸ
ã€å¿
èŠããããŸãã 次åã¯ãã®åé¡ã«ã€ããŠè©³ããæ€èšããŸãã
åæåã³ãŒãã¯ã¡ã¢ãªããŒãã§åããç»é¢å
šäœããŒãã®ã¿ã€ã«ã§ãã£ã±ãã«ãªãããã«ããŸãããã®äŸã§ã¯ç©ºã§ãã ãããŠããã¬ããå
šäœãç°è²ã§å¡ãã€ã¶ãããŠããŸãã
ç»é¢ã«è¡šç€ºããã«ã¯ãã¢ãã¬ã¹$ 2006ã®äžäœãã€ãããéå§ããŠãå¡ãã€ã¶ãã®éå§ã®åº§æšãèšé²ãã次ã«$ 2007ã«ã¿ã€ã«çªå·ãæžã蟌ãå¿
èŠããããŸãã PPUã¯å¯Ÿå¿ããçªå·ã®ã¿ã€ã«ã1è¡ãã€åºåããæ°ããè¡ã«ç§»è¡ããŸãã PPUã32ã®åºåã¹ãããã«åæ§æã§ããŸã-ã¿ã€ã«ã¯äžäžã«è¡šç€ºãããŸãã ã¬ãžã¹ã¿$ 2000ã䜿çšããŠãã¹ããã1ãèšå®ããå¿
èŠããããŸãã NESç»é¢ããŒã«ã䜿çšããŠãç»é¢åº§æšãã¢ãã¬ã¹ã«åèšç®ã§ããŸãã
ãŸãããã¬ããã®æåã®4è²ãå¡ãã€ã¶ãå¿
èŠããããŸã-ãããã¯èæ¯ãæ
åœããŸãã ãããã¯3F00ãã«ã§èšé²ãããŸãã
PPUã¬ãžã¹ã¿ã«æžã蟌ããšã¹ã¯ããŒã«äœçœ®ãå£ããããããªã»ããããå¿
èŠããããŸãã ããããªããšãç»åãç»é¢ããæ¶ããå ŽåããããŸãã ããã¯ã2006幎ãš2005幎ã®ã¬ãžã¹ã¿ãéããŠè¡ãããŸãã
lesson1.c #define PPU_CTRL *((unsigned char*)0x2000) #define PPU_MASK *((unsigned char*)0x2001) #define PPU_STATUS *((unsigned char*)0x2002) #define SCROLL *((unsigned char*)0x2005) #define PPU_ADDRESS *((unsigned char*)0x2006) #define PPU_DATA *((unsigned char*)0x2007) unsigned char index; const unsigned char TEXT[]={ "Hello World!"}; const unsigned char PALETTE[]={ 0x1f, 0x00, 0x10, 0x20 };

ã³ãŒããžã®ãªã³ã¯ïŒ
Dropbox
Github
Githubã§ã¯ãWindowsã§æ£ããæ©èœããããã«Makefileããããã«ä¿®æ£ããŸããã
ã²ã
ONCE: load = PRG, type = ro, optional = yes;
.cfgãã¡ã€ã«ã®ã»ã°ã¡ã³ã{}ã»ã¯ã·ã§ã³å
ã¯ãcc65ã®ææ°ããŒãžã§ã³ãšã®äºææ§ã®ããã«å¿
èŠã§ãã
ãPPUMASK = 0x1eãã§ç»é¢ããªã³ã«ããæ¹æ³ã¯ã wikiã§èª¬æãããŠããŸã ã
ããã®ãã¹ãŠã®ãã¡ã€ã«ã®ãµã€ãºã¯0x4000ã§ãã ããã¯ãå¯èœãªéãæå°ã®PRG ROMãµã€ãºã§ãã ã²ãŒã ã®90ïŒ
ã¯ããã«åãŸããã$ 8000- $ FFFFã®ã¢ãã¬ã¹ã«ãããã³ã°ãããŸãã ããåœã§ã¯ãã²ãŒã ã¯$ C000- $ FFFFã®ã¢ãã¬ã¹ã«ããŒãããã$ 8000- $ BFFFã§ãã©ãŒãªã³ã°ãããŸãã ãã倧ããªã²ãŒã ãéçºããã«ã¯ãROMã®éå§ã¢ãã¬ã¹ã$ 8000ã«åæ§æãããµã€ãºã$ 8000ã«èšå®ããå¿
èŠããããŸãã ãŸããããããŒã»ã¯ã·ã§ã³ã«2çªç®ã®ãã³ã¯PRG ROMãå«ããŸãã