DOOMãä»»æã®ããã€ã¹ã«ã€ã³ã¹ããŒã«ããããšã¯ãåããèŠå¡ã«åè ã®ãããŒãæ²ãããããªãã®ã§ããããŸããéåœãå§ããã®ïŒããšèãããŸãããç§ããã®èšç®æ©ãããã£ãŠããããšã圌ããç¥ã£ããšããå°ãªããšã35åã芳客ããã£ããããããDOOMã®çºå£²ãå®çŸããããšã«ããŸããããã®éçšã§ãããã¯æ©åšã®æ§èœã®è¯ããã¹ããšãªããäžå¿«ãªãã°ãæããã«ããŸããããããè¡ããïŒ
ãããžã§ã¯ããã¥ãŒã¹
ã©ããã£ãŠDOOMãå®è¡ããã®ãçåã«æã£ãŠãã人ã¯ããã®ç« ãã¹ãããããŠæ¬¡ã®ç« ã«ã¹ãããã§ããŸãããããžã§ã¯ãã®çŸåšã®ã¹ããŒã¿ã¹ã瀺ãã ãã§ãã
åã®ããŒãïŒããŒã1ãš ããŒã2ïŒã§èŠããŠããããã« ãç§ã¯Linuxãé»åã«çœ®ããu-bootãã«ãŒãã«ãrootfsãåæ§ç¯ããããšã«åŸäºããŠããŸããããã以æ¥ãç§ã¯é»åã«éåžžã«å¯æ¥ã«é¢äžããu-bootãã«ãŒãã«ãããã³ããã€ã¹ããªãŒã§äœãè¡ãããããå®å šã«ç解ããŸããããããç§ã®è¶£å³ã§ãããç§ã®äž»ãªä»äºã家æããã®èªç±ãªæéã«ããã¹ãŠãããã«é²ãããã§ã¯ãªããæã«ã¯ãããããéè«ççã§ããããšãç解ããå¿ èŠããããŸãã
ãŠãŒã¶ãŒã®ãããã§ã¡ã€ã³ãã¥ãŒã¹ãè¡ãããŸãã Alx2000yãã«ãŒãã§ãã£ããã«æåŸ ããŠãããŸãããããã§ã¯ãXiaomiGatewayã®ãã¡ãŒã ãŠã§ã¢ãåæ§ã®ããã»ããµã§èŠãããŸããããã®ãããã¯ã«é¢ããHabréã«é¢ããèšäºããã ãŸãã人ã ã¯ãã§ã«ãã®ãããã¯ã§å€ãã®ããšãé²æ©ãããããã€ã¹ã®æ©èœãä¿¡ããããªãã»ã©æ¡åŒµããŠããŸãããããŠãnandã®åé¡ãå æããã®ã«å€§ãã«åœ¹ç«ã¡ãŸããããåç¥ã®ããã«ãæåã¯æãããããã³ãã®ã€ã¡ãŒãžãäžæããŸããããã®çµæãããªãã®æ°ã®ãä»®æ³ãäžè¯ã»ã¯ã¿ãçºçããŸãããæãäžå¿«ãªã®ã¯ãäžè¯ã»ã¯ã¿ãæåãããããããã«u-bootãæžã蟌ãããšãã§ããªãã£ãããšã§ãã以äžã¯äžè¯ã»ã¯ã¿ã®ãªã¹ãã§ãããããã®ã»ãšãã©ã¯ä»®æ³ã§ãã
=> nand bad Device 0 bad blocks: 00000000 00020000 00040000 00060000 012c0000 04e20000 05280000 094c0000 17b20000 1ff80000 1ffa0000 1ffc0000 1ffe0000 =>
Lenarã¯ãäžèšã®ãã£ãããããç§ã倧ãã«å©ããŠãããŸãããåé¡ã¯ãu-bootã®2ã€ã®ã³ãã³ãã ãã§è§£æ±ºãããŸããã
nand erase.chip ⊠nand scrub.chip ⊠Really scrub this NAND flash? <y/N> y
ãã®åŸãäžè¯ã»ã¯ã¿ã®æ°ã確èªããŸããèŠããäžè¯ã»ã¯ã¿ã¯å€§å¹ ã«å°ãªããªã£ãŠããŸãã
=> nand bad Device 0 bad blocks: 1ff80000 1ffa0000 1ffc0000 1ffe0000
ãã®çµæãu-bootãã»ã¯ã¿ãŒ0ã«ããŒãããŠèµ·åã§ããããã«ãªããŸãããçŸæç¹ã§ã¯ãé»åã¯é»æºãå ¥ããã ãã§ããŒãã§ããLinuxãå®å šã«ããŒãããããã£ã¹ãã¬ã€ãæ©èœããUARTãä»ããŠããã°ã©ã ãå®è¡ã§ããããã«ãªããŸãã DOOMã§ãæ£ããåäœããŸãã ããããããã¥ã¢ã³ã¹ããããŸããïŒCïŒãã©ãããããŒããŒããã©ã€ããŒãubifsãã©ã€ããŒãšãªãŒããŒã©ããããŠããããã§ããã®çµæãããŒããŒãã®ããããã®ããŒãæŒããšãé»åãããã«ãã³ã°ããŸããã«ãŒãã«ãããã¯ã¯äžåºŠãç§ã«é£ãã ããå°ãªããšããã®äº€å·®ç¹ã®å ŽæãèŠã€ããããã«ãããä¿åããããšã¯æããªãã£ãããããã£ãŠãä»ã®ãšããããã¹ãŠãinitramfsã§ç¢ºå®ã«æ©èœããŸãã nandã®ããŒããDOOMã®èµ·åãããªãŒãºã®äœæ¥ã瀺ããããªãç§ã®é»å ±ãã£ã³ãã«ã«æçš¿ãããŸãã ã
ä»ã®è¯ããã¥ãŒã¹ãããç§ã¯ubuntuãnandã«å ¥ããããšããŸããããããæ£ããåäœããŸãããã¡ããããã±ãŒãžã¯ã€ã³ã¹ããŒã«ã§ããŸããããäžè¬çã«ã¯äœæ¥ããŠäœ¿çšã§ããã®ã§äŸ¿å©ã§ããããããããŒããŒããæ©èœããŠããªããã°ããããã®ã²ãŒã ã«ã¯ãŸã å®çšçãªæå³ããããŸããã
æåŸã®éšåã§ãnandãšRAMã§å®è¡ãããšãu-bootã®åäœãç°ãªããšäžæºãæŒãããŸãããç§ã¯2æ¥éãu-bootã®ãœãŒã¹ã³ãŒãã調ã¹ãŠãäœãèµ·ãã£ãŠããã®ããç解ããŸããããããŠããã¹ãŠãé³è ã§ããããšãå€æããŸããïŒæ¥ããããããšãããããŸãïŒã uuuãŠãŒãã£ãªãã£ã¯ãã¡ã¢ãªããu-bootãèµ·åãããšãç°å¢å€æ°ãããã«æž¡ããŸããããæ£ç¢ºã«ã¯ãmfgtool_argsãåŒã³åºãããã®çµæãããŒãç°å¢å€æ°ã®è¡ã¯æ¬¡ã®ããã«ãªããŸãã
bootargs=rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber= mtdparts=gpmi-nand:4m(boot),8m(kernel),1m(dtb),1m(misc),-(rootfs) clk_ignore_unused
ãã¡ãããnandããèµ·åããå Žåããã®ãããªãã©ã¡ãŒã¿ãŒã䜿çšãããšã4çªç®ã®ã»ã¯ã·ã§ã³ã®ubifsã¯è¡šç€ºãããŸããããããã£ãŠãu-bootãRAMã«ããŒãããåŸã次ã®ç°å¢å€æ°ã匷å¶çã«èšå®ããŸãã
setenv bootargs console=ttymxc0,115200 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(boot),8m(kernel),1m(dtb),1m(misc),-(rootfs)
ãããŠããã¹ãŠãããŸãæ©èœããŸãã
ãããå¿ èŠãªçç±ã説æããŸããããããŒãããŒããŒããŒãã»ã¯ã¿ãŒã«ãã©ãã·ã¥ãããšãmfgtoolïŒuuuãŠãŒãã£ãªãã£ïŒãä»ããŠäœæ¥ããæ©èœã倱ãããŸãããããŠãã®æ®µéã§ã¯ãéçºãšãããã°ã§æ§æãããŠããããããã¡ã€ã³ããŒã«ã§ãããããã£ãŠãuuuãŠãŒãã£ãªãã£ãå®è¡ãããŸãŸã«ããŠãæ¯åæåã§u-bootãããŒãããæ¹ãç°¡åã§ãã
DOOMã®èµ·å
楜ããéšåã«ç§»ããŸã-é»åã§DOOMãå®è¡ããŸãããæ³åã®ãšãããæåã«ãã¹ãŠã®åé¡ã«ã€ããŠæžããã®ã¯ç¡é§ã§ã¯ãããŸããã§ããã NANDãã©ãã·ã¥ã«ããŒãããããšãã«DOOMãå®è¡ã§ããŸããããã«ã¯ãããããçš®é¡ã®ã«ãŒããDOOMã®ãã¹ãŠã®å¯èœãªããŒãžã§ã³ãããã³äžè¬çã«ã¯å¿ èŠãªãã®ããã¹ãŠé 眮ã§ããŸãããã ããRAMã§å®è¡ããå Žåãrootfsã€ã¡ãŒãžã®ãµã€ãºã¯çŽ15 MBã«å¶éãããŸãïŒå®éã«ã¯ã16ããŸã ããŒã«ããããšã瀺ãããŠããŸãïŒããã®ç¹ã§ãç§ã¯DOOMã®ããŒãžã§ã³ãéžæããŠæ£ããã¢ã»ã³ããªãäœæãããããæäœããæ¹æ³ãåŠã¶å¿ èŠããããŸããã
ãã¹ãŠã®è¯ããã®ã¯ãã£ãšåã«ç§ãã¡ã®ããã«çºæãããããšãããããŸããããããŠDOOMã¯ãœãã¡ãé¢ããããšãªãbuildrootã§çŽæ¥çµã¿ç«ãŠãããšãã§ããŸããçµã¿èŸŒã¿ã·ã¹ãã çšã®DOOMã®å¯èœãªãã¹ãŠã®ããªã¢ã³ããã°ãŒã°ã«ã§æ€çŽ¢ããããããæ§ç¯ããããšãããšãã«ããããèŠã€ããŸãããçµå±ã®ãšãããå®è¡ããã ãã§ååã§ãã
make menuconfig
ãããŠãDOOMãéžæããŸããããã¯ã
Target packages ---> Games --->
ã㧠è¡ãããŸã
DOOMã«ã¯ãchocolate-doomãšprboomã®2ã€ã®ããŒãžã§ã³ã ãã ãŸããããã€ãã®å®éšã®çµæãchocolate-doomãinitramfsã«é©åããããªãããšã«æ°ä»ããŸããããã ããwadãã¡ã€ã«ãå®å šã«åé€ããå Žåãé€ããŸããç§ã¯ãã§ã³ã¬ãŒãã®éåœã«åãã¯ããããã¯ãããã¡ã€ã«ãèŠã€ããããšããŠããŸããããããã圌女ã¯åœŒããšäžç·ã«åãããšãæåŠããŸããããã®çµæããã§ã³ã¬ãŒãããŒãžã§ã³ãïŒprboomãšäžç·ã«ïŒnandã«ã€ã³ã¹ããŒã«ããŠãããã§è©ŠããŠã¿ãŸããããã©ã¡ãŒã¿ãªã©ãéžæããŸãããå®éšã®çµæã次ã®èµ·åæ¹æ³ãåŸãããŸããã
export SDL_NOMOUSE=1
chocolate-doom -geometry 320x240 -bpp 24 -nomouse
ãã®çµæãç§ã¯å€§ãã«å€±æããŸããããã®ããŒãžã§ã³ã®éåœã¯ãç»é¢ã誀ã£ãŠïŒãŸãã¯éã«æ£ããïŒåŒã䌞ã°ããç»é¢ã®ç«¯ã«å¹ ã®åºãçžæš¡æ§ãæ®ããŸããã
DOOMã®ãã§ã³ã¬ãŒãããŒãžã§ã³ãäžã«é»ãçžæš¡æ§ãèŠããŸãã
èµ·åæã«ãç§ã®ãã§ã³ã¬ãŒãã®éåœã¯ããŠã£ã³ããŠã®ãµã€ãºå€æŽãäœãããããæããŠãããŸãã
I_InitGraphics: 320x240 mode not supported on this machine. I_InitGraphics: Auto-adjusted to 320x200x32bpp.
ãããã£ãŠãç§ã¯prboomã«èœã¡çããŸãããå ±æWADãã¡ã€ã«ãšprboomèªäœãšäžç·ã«ç»åãäœæãã äžèŠãªãã®ããã¹ãŠåé€ããŸãããããããããã§ããéåžžã«é·ãéãç§ã¯ãããæ©èœãããããšãã§ããŸããã§ãããç§ã¯ããããçš®é¡ã®ããã¥ã¢ã«ãèªã¿ããã¹ãŠãæ£ããæ©èœããããã«æ§æããæ¹æ³ãæ¢ããŸãããç»åã¯è¡šç€ºããããã¿ã³ã«åå¿ããŸãããç»é¢ãäžåšçšã«äŒžã³ãŠã«ã©ãŒã«ãŒãã衚瀺ãããŸããããã€ãã®ãã©ãŒã©ã ã§çæ³çãªèµ·åãã©ã¡ãŒã¿ãèŠã€ãããŸã§ã
äžè¬ã«ãé»åã®å Žåãprboomã®èµ·åã¯æ¬¡ã®ãšããã§ããããŠã¹ããªãã«ããŠããã次ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠprboomãèµ·åããŸãã
export SDL_NOMOUSE=1
/usr/games/prboom -width 320 -height 240 -nosound -vidmode 32bit
ããã§ã®éèŠãªãã©ã¡ãŒã¿ïŒ
"-vidmode 32bit"
ã
ç§ã¯é·ãéé©åãªãã©ã¡ãŒã¿ãæ¢ããŠããŸããããããã ãã§ãã¹ãŠãå§ãŸããŸããã䟿å®äžããã¹ãŠãd.shã¹ã¯ãªããã«æžãçããŸãããæåŸã«ãã¹ãŠãæ©èœãããã¬ã€ããããšãã§ããŸãïŒ
ç¹ã«ããªãã®ããã«ãç§ã¯DOOMã䜿ã£ãflash_utilityã®æŽæ°ãããã¢ã»ã³ããªãçšæããŸããã ããã¯ããã©ãã·ã¥ããªããŠãé»åã§å®è¡ã§ããåéã«DOOMãç§ã®é»åã§åäœããããšã瀺ããŸããé»åãå解ããæåã®éšåã§èª¬æããæ¥ç¹ãéããŠå®è¡ããã ãã§ååã§ã
sudo uuu doom.uu
ãã¹ãŠã®ã¹ãããã®æåŸã«ãLinuxãšDOOMãåããé»åãå±ããŸããDOOMãèµ·åããã«ã¯ããã°ã€ã³ããŠé»åã§å®è¡ããå¿ èŠããããŸãã
./d.sh
èŠçŽãã
DOOMã¯åäœããŸãïŒåçã§ããŸããïŒãããšãããŒã«ã«ã§ã¯ãã³ã³ãã¥ãŒã¿ãŒããããŠã³ããŒãã§ããŸããããã¯ã¯ãŒã«ã§çŸããããã«èŠããŸãããå®éã«ã¯ãããªããæ¬åœã«æ¬²ãããã®ã§ã¯ãããŸãããå°äžéã«ä¹ã£ãŠãããšãã¯ãé»åãæã£ãŠåºãèããåŒãåºããé»æºãå ¥ããŠïŒçŸåšãçé»åã¢ãŒãã¯æ©èœããŠããŸããïŒãDOOMãèµ·åããã®ã¯ãšãŠãã¯ãŒã«ã§ããããã¯ãDOOMãDuke Nukem 3DãQuake IãIIãIIIãªã©ã®é»åã§ã¡ããã§ãã¬ã€ããã®ã«æ¬åœã«ã¯ãŒã«ã§ããããããäºå®ã¯å€ãããŸãããDOOMã¯ãã®ããŒããŠã§ã¢ã§å®è¡ãããŠããŸããããããããã¹ãããšã¯ãŸã ãããããããŸãã
äžè¬ã«ããã®èšç®æ©ã®åšãã«ã¯å°ãªããšãå°ããªã³ãã¥ããã£ïŒå°ãªããšãç§ãããå€ãïŒãââååã§ã¯ãªããããåé¡ã®ãã¹ã¿ãŒãããŠã話ãããå ±æããããã¢ããã€ã¹ãèããããã人ãããŸããåäœè ã¯ã巚倧ãªä»äºãããŸããããæããã«ãã®ãããžã§ã¯ãã«å·éã«ãªããŸãããç§ã¯åœŒãããç解ããŠããããã®ãããžã§ã¯ãã«ã€ããŠã®ã¢ããã€ã¹ããã£ãŠãå©ããããªããšåœŒãéé£ããããšã¯ã§ããŸããããŸãã圌ã¯å°ããªæšèŠãããŸãããããã圌ã¯æããã«ãã¯ã圌次第ã§ã¯ãããŸããã§ããããããã£ãŠãã¢ã€ãã¢ãèšç®æ©ãå©ããããšããé¡æãããã°ãå°ãªããšãã¢ããã€ã¹ãããã°ããããŸãã¯ã«ãŒãã«æžããŠãã ããã
PSãªãç§ã¯ãããããŠããã®ã§ããïŒ
ãããäœã®ããã«ããšèãããŸããïŒãã®è³ªåã«çããã®ã¯ã°ãããŠããããšãç¥çã«ç解ããŠããŸãããããã§ãçããŸãã
ã¢ãŒãã£ã¹ããçµµãæããããäœå®¶ãæ¬ãæžãããããã®ã¯ãªãã§ããïŒæ£çŽã«èšããšãæ¬ãçµµç»ããã®ä»ã®äœåã®90ïŒ ã¯ãŸã£ããå ãèŠããªãå¯èœæ§ããããå ãèŠãã人ã®ã»ãã®äžéšãç¥ãããããã«ãªããå¹ åºãèªè ãç²åŸããŸããç°¡åã«èšãã°ãã»ãšãã©ã®ã¯ãªãšã€ã¿ãŒã¯ã圹ã«ç«ããªããä»äºãããŠããŸããããã«ãå€ãã®äœåã¯èªè ãèŠã€ããããšãããããŸãããããªã圌ãã¯ãããã¹ãã§ã¯ãªãã®ã§ããïŒãããã®äººã ãåãããã®ã¯äœã§ããïŒãã¹ãŠãããªããããµãããã®ã§ãã圌ãã¯åçŽãªæèŠã«ãã£ãŠåããããŸãïŒ
ç°¡åã«èšãã°ãããã¯ã¯ãŒã«ã§æ¥ãã§ããããã§ãããããŠãå¥åŠãªããšã«ãèŠãç®ã»ã©æçœã§ã¯ãããŸããããå°æ¥çã«ã¯å€§ããªã¡ãªãããããããããã§ãããã