Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Designing video game hardware in verilog

Designing video game hardware in verilog

chap 17 - 22

Atsuki Takahashi

March 06, 2019
Tweet

More Decks by Atsuki Takahashi

Other Decks in Technology

Transcript

  1. 17 - Sprites w 4QSJUFͱ͸ w εΫϦʔϯ্Λಈ͘ϏοτϚοϓ w ࠨӈରশ w

    ͜ͷষͰ΍Δ͜ͱ w 3FDFDBSTQSJUFͷඳը w εΫϦʔϯ্ͷݻఆͷҐஔʹදࣔ w YϐΫηϧ
  2. code NPEVMFDBS@CJUNBQ ZPGT CJUT   JOQVU<>ZPGTd PVUQVU<>CJUTࠨӈରশͳͷͰQJYFEͷ൒෼ͰΑ͍ SFH<>CJUBSSBZ<> 

    BTTJHOCJUTCJUBSSBZ<ZPGT>  JOJUJBMCFHJOUFYUʹॻ͍ͯ͋ΔCJUNBQͱ͸एׯҧ͏ CJUBSSBZ<>`CंͷԼͷํɻʹ͓ͯ͘͠ඞཁ͕͋Δ CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>C CJUBSSBZ<>`Cंͷ্ͷํ FOE  FOENPEVMF
  3. code ఆٛͨ͠30.ͱ઀ଓ SFH<>DBS@TQSJUF@YPGT SFH<>DBS@TQSJUF@ZPGT XJSF<>DBS@TQSJUF@CJUT DBS@CJUNBQDBS  ZPGT DBS@TQSJUF@ZPGT 

    CJUT DBS@TQSJUF@CJUT  TQSJUFͷҐஔΛఆٛʢݻఆʣ SFH<>QMBZFS@Y SFH<>QMBZFS@Z TDBOMJOFຖʹDBS@TQSJUF@ZPGTΛઃఆ
 DBS@TQSJUF@ZPGT͸جຊతʹ BMXBZT! QPTFEHFITZOD  JG WQPTQMBZFS@Z  DBS@TQSJUF@ZPGT FMTFJG DBS@TQSJUF@ZPGT  DBS@TQSJUF@ZPGTDBS@TQSJUF@ZPGT
 DMPDLຖʢQJYFMຖʣʹDBS@TQSJUF@YPGTΛઃఆ DBS@TQSJUF@YPGT͸جຊతʹ
 BMXBZT! QPTFEHFDML  JG IQPTQMBZFS@Y  DBS@TQSJUF@YPGT FMTFJG DBS@TQSJUF@YPGT  DBS@TQSJUF@YPGTDBS@TQSJUF@YPGT
  4. 18 - Better Sprites w 'JOJUF4UBUF.BDIJOF w ਓؒʹͱͬͯཧղ͠΍͍͢ w ଟ͘ͷ߹੒πʔϧ͸'4.ʹରͯ͠࠷దԽΛ͔͚Δ

    w 7FSJMPHʹ͓͚Δ4UBUF.BDIJOF͸ҎԼͷίϯϙʔωϯτͰߏ੒͞ΕΔ w 4UBUFSFHJTUFSݱࡏͷঢ়ଶ w /FYUTUBUFMPHJDঢ়ଶભҠؔ਺ w 0VUQVUMPHJDग़ྗؔ਺
  5. Example FSM BMXBZT! QBTFEHFDML  CFHJO DBTF TUBUF ঢ়ଶ؅ཧϨδελ 45"5&@-"#&-CFHJO

    SFHJTUFSTPNF@MPHJDग़ྗؔ਺ PVUTPNF@PVUQVUग़ྗؔ਺ JG DPOEJUJPO TUBUF/&95@45"5&ঢ়ଶભҠؔ਺ JG PUIFS@DPOEJUJPO TUBUF:&5@"/05)&3@45"5&ঢ়ଶભҠؔ਺ FOE NPSFDBTFIBOEMFST FOEDBTF FOE
  6. Sprite renderer state machine 8"*5@'03@745"35 8"*5@'03@-0"% -0"%@4&561 -0"%@'&5$) 8"*5@'03@)45"35 %3"8

    WTUBSU MPBE ITUBSU YDPVOU DPVOUZDPVOU
  7. code NPEVMFTQSJUF@SFOEFSFS  JOQVUDML  JOQVUWTUBSU ্ลͷඳը։࢝Λ஌ΒͤΔγάφϧ JOQVUMPBE TQSJUFͷϏοτϚοϓσʔλΛϩʔυͰ͖Δ͜ͱΛ஌ΒͤΔγάφϧ JOQVUITUBSU

    ࠨลͷඳը։࢝Λ஌ΒͤΔγάφϧ PVUQVU<>SPN@BEES 30.ͷΞυϨε JOQVU<>SPN@CJUT 30.͔ΒͷJOQVU PVUQVUHGY  PVUQVUJO@QSPHSFTTWTUBSUΛ଴͍ͬͯΔͱ͖͸ ͦΕҎ֎͸  SFH<>TUBUF DVSSFOUTUBUF MPDBMQBSBN8"*5@'03@745"35 MPDBMQBSBN8"*5@'03@-0"% MPDBMQBSBN-0"%@4&561 MPDBMQBSBN-0"%@'&5$) MPDBMQBSBN8"*5@'03@)45"35 MPDBMQBSBN%3"8 BTTJHOJO@QSPHSFTTTUBUF8"*5@'03@745"35 SFH<>ZDPVOU OVNCFSPGTDBOMJOFTESBXOTPGBS SFH<>YDPVOU OVNCFSPGIPSJ[QJYFMTJOUIJTMJOF  SFH<>PVUCJUT SFHJTUFSUPTUPSFCJUTGSPN30.
  8. code BMXBZT! QPTFEHFDML  CFHJO DBTF TUBUF  8"*5@'03@745"35CFHJO ZDPVOUJOJUJBMJ[FWFSUJDBMDPVOU

    HGYEFGBVMUQJYFMWBMVF P⒎  XBJUGPSWTUBSU UIFOOFYUTUBUF JG WTUBSU  TUBUF8"*5@'03@-0"% FOE 8"*5@'03@-0"%CFHJO YDPVOU8"*5@'03@)45"35ͰΑ͘ͳ͍ʁ  HGY XBJUGPSMPBE UIFOOFYUTUBUF JG MPBE  TUBUF-0"%@4&561 FOE -0"%@4&561CFHJO SPN@BEESZDPVOUMPBE30.BEESFTT TUBUF-0"%@'&5$) FOE -0"%@'&5$)CFHJO DMPDLDZDMFͰ30.͔ΒσʔλΛͱΕΔલఏ͚ͩͲ
 ͜Εͬͯৗʹͦ͏ͳΜʁ  PVUCJUTSPN@CJUTMBUDICJUTGSPN30. TUBUF8"*5@'03@)45"35 FOE 8"*5@'03@)45"35CFHJO XBJUGPSITUBSU UIFOTUBSUESBXJOH JG ITUBSU  TUBUF%3"8 FOE %3"8CFHJO HFUQJYFM NJSSPSJOHHSBQIJDTMFGUSJHIU HGYPVUCJUT<YDPVOU YDPVOU<>dYDPVOU<>> YDPVOUYDPVOU  pOJTIFEESBXJOHIPSJ[POUBMTMJDF  JG YDPVOU QSFJODSFNFOUWBMVF ZDPVOUZDPVOU  pOJTIFEESBXJOHTQSJUF  JG YDPVOUZDPVOU QSFJODSFNFOUWBMVF TUBUF8"*5@'03@745"35EPOFESBXJOHTQSJUF FMTFJG YDPVOU   TUBUF8"*5@'03@-0"%EPOFESBXJOHUIJTTDBOMJOF FOE VOLOPXOTUBUFSFTFU EFGBVMUCFHJO TUBUF8"*5@'03@745"35 FOE FOEDBTF FOE
  9. code DBSCJUNBQ30.BOEBTTPDJBUFEXJSFT XJSF<>DBS@TQSJUF@BEES XJSF<>DBS@TQSJUF@CJUT  DBS@CJUNBQDBS  ZPGT DBS@TQSJUF@BEES 

    CJUT DBS@TQSJUF@CJUT  DPOWFSUQMBZFS9:UPCJUTBOEDPNQBSFUP$35IQPTWQPT XJSFWTUBSU\C QMBZFS@Z^WQPT XJSFITUBSU\C QMBZFS@Y^IQPT XJSFDBS@HGY  DBSTQSJUFWJEFPTJHOBM XJSFJO@QSPHSFTT SFOEFSJOHUBLJOHQMBDFPOTDBOMJOF TQSJUFSFOEFSFSNPEVMF TQSJUF@SFOEFSFSSFOEFSFS  DML DML  WTUBSU WTUBSU  MPBE ITZOD TQSJUFσʔλ͸ը໘֎ʹ͍Δͱ͖ʹऔಘ͞ΕΔ ITUBSU ITUBSU  SPN@BEES DBS@TQSJUF@BEES  SPN@CJUT DBS@TQSJUF@CJUT  HGY DBS@HGY  JO@QSPHSFTT JO@QSPHSFTT 
  10. 19 - Racing Game w ෳ਺TQSJUFͱɺিಥݕ஌ͷσϞϯετϨʔγϣϯ w ͭͷTQSJUFSFOEFSJOHNPEVMFΛ࢖༻͢Δ͕ɺ
 ࢖͏30.͸͚ͭͩʹ͍ͨ͠ w

    ݴޠϨϕϧͰ͸໰୊ͳ͍͕ɺ߹੒࣌ʹ໰୊ʹͳΔ w ࣮ࡍͷճ࿏Ͱ͸ಉ࣌ΞΫηεʹ੍ݶ͕͋Δ w IQPT͕dͷؒ͸QMBZFSTQSJUFͷ30.ΞΫηεɺ
 IQPT͕Ҏ߱͸FOFNZTQSJUFͷ30.ΞΫηεʹ͋ͯΔ
  11. code 30.ʹΞΫηε͢Δର৅ΛܾΊΔ XJSFQMBZFS@MPBE IQPT  IQPT  XJSFFOFNZ@MPBE IQPT 

    XJSFVQDBSTQSJUF30. NVMUJQMFYCFUXFFOQMBZFSBOEFOFNZ30.BEESFTT XJSF<>QMBZFS@TQSJUF@ZPGT XJSF<>FOFNZ@TQSJUF@ZPGT XJSF<>DBS@TQSJUF@ZPGTQMBZFS@MPBE QMBZFS@TQSJUF@ZPGTFOFNZ@TQSJUF@ZPGT XJSF<>DBS@TQSJUF@CJUT DBS@CJUNBQDBS  ZPGT DBS@TQSJUF@ZPGT  CJUT DBS@TQSJUF@CJUT  QMBZFSͷTQSJUFΛඳը͢ΔͨΊͷγάφϧΛఆٛ XJSFQMBZFS@WTUBSU\C QMBZFS@Z^WQPT XJSFQMBZFS@ITUBSU\C QMBZFS@Y^IQPT XJSFQMBZFS@HGY XJSFQMBZFS@JT@ESBXJOH QMBZFSTQSJUFHFOFSBUPS TQSJUF@SFOEFSFSQMBZFS@SFOEFSFS  DML DML  WTUBSU QMBZFS@WTUBSU  MPBE QMBZFS@MPBE  ITUBSU QMBZFS@ITUBSU  SPN@BEES QMBZFS@TQSJUF@ZPGT  SPN@CJUT DBS@TQSJUF@CJUT  HGY QMBZFS@HGY  JO@QSPHSFTT QMBZFS@JT@ESBXJOH  TJHOBMTGPSFOFNZTQSJUFHFOFSBUPS XJSFFOFNZ@WTUBSU\C FOFNZ@Z^WQPT XJSFFOFNZ@ITUBSU\C FOFNZ@Y^IQPT XJSFFOFNZ@HGY XJSFFOFNZ@JT@ESBXJOH FOFNZTQSJUFHFOFSBUPS TQSJUF@SFOEFSFSFOFNZ@SFOEFSFS  DML DML  WTUBSU FOFNZ@WTUBSU  MPBE FOFNZ@MPBE  ITUBSU FOFNZ@ITUBSU  SPN@BEES FOFNZ@TQSJUF@ZPGT  SPN@CJUT DBS@TQSJUF@CJUT  HGY FOFNZ@HGY  JO@QSPHSFTT FOFNZ@JT@ESBXJOH 
  12. code TJHOBMTGPSFOFNZCPVODJOHP⒎MFGUSJHIUCPSEFST XJSFFOFNZ@IJU@MFGU FOFNZ@Y ࠨଆQJYFM͸ແఢκʔϯ XJSFFOFNZ@IJU@SJHIU FOFNZ@Y ӈଆQJYFM͸ແఢκʔϯ TQSJUFͷ෯͚ͩແఢκʔϯখ͍͞ 

    XJSFFOFNZ@IJU@FEHFFOFNZ@IJU@MFGUccFOFNZ@IJU@SJHIU  QMBZFS FOFNZ USBDLͷϙδγϣϯΛϑϨʔϜຖʹߋ৽͢Δ BMXBZT! QPTFEHFWTZOD  CFHJO QMBZFS@YQBEEMF@Y QMBZFS@Z USBDL@QPTUSBDL@QPT \C TQFFE<>^ FOFNZ@ZFOFNZ@Z \C TQFFE<>^ JG FOFNZ@IJU@FEHF  FOFNZ@EJSFOFNZ@EJS JG FOFNZ@EJS?FOFNZ@IJU@FEHF  FOFNZ@YFOFNZ@Y  FMTF FOFNZ@YFOFNZ@Y DPMMJTJPODIFDL  JG GSBNF@DPMMJTJPO  TQFFE FMTFJG TQFFEdQBEEMF@Z  TQFFETQFFE  FMTF TQFFETQFFE FOE TFUUPXIFOQMBZFSDPMMJEFTXJUIFOFNZPSUSBDL SFHGSBNF@DPMMJTJPO  BMXBZT! QPTFEHFDML  JG QMBZFS@HGY FOFNZ@HGYccUSBDL@HGY  GSBNF@DPMMJTJPO FMTFJG WTZOD  GSBNF@DPMMJTJPO  USBDLHSBQIJDTTJHOBMT XJSFUSBDL@P⒎TJEF IQPT<> cc IQPT<>  XJSFUSBDL@TIPVMEFS IQPT<> cc IQPT<>  XJSFUSBDL@HGY WQPT<>USBDL@QPT<> USBDL@P⒎TJEF
  13. code ݸͷSPUBUJPOTUFQΛݸͷCJUNBQʹϚοϐϯά͢ΔϞδϡʔϧ
 NPEVMFSPUBUJPO@TFMFDUPS  JOQVU<>SPUBUJPO  PVUQVU<>CJUNBQ@OVN  PVUQVUINJSSPS WNJSSPS

     BMXBZT! ͳΜͰSPUBUJPOͰ͸ͳ͘ ͳͷʁ DBTF SPUBUJPO<>  d d d dͰ৔߹෼͚ CFHJO   CJUNBQ@OVN\C SPUBUJPO<>^ INJSSPS WNJSSPS FOE CFHJO   CJUNBQ@OVNSPUBUJPO<> INJSSPS WNJSSPS FOE CFHJO   CJUNBQ@OVN\C SPUBUJPO<>^ INJSSPS WNJSSPS FOE CFHJO   CJUNBQ@OVNSPUBUJPO<> INJSSPS WNJSSPS FOE FOEDBTF FOENPEVMF
  14. The sine function w αΠϯؔ਺ͷ࣮૷ w ׬શͳαΠϯؔ਺ͷ࠶ݱ͸ෆՄೳ w ࠓճͷέʔεͰ͸͔ͳΓૈ͍ਫ਼౓Ͱे෼ w

    ೖྗ஋ͱͯ͠ύλʔϯ͚ͩड͚෇͚Δ w ग़ྗ͸dͷCJU w DBTFจʹΑΔ৔߹෼͚Ͱ࣮૷ w ίαΠϯؔ਺͸ɺೖྗʹ౓଍͔ͯ͠Β
 αΠϯؔ਺ʹ౉͢͜ͱͰ࣮ݱͰ͖Δ GVODUJPOTJHOFE<>TJO@Y JOQVU<>JO JOQVUBOHMF JOUFHFSZූ߸෇ʹ͍͔ͨ͠ΒJOUFHFSʹͯ͠Δ DBTF JO<>  WBMVFTQFSRVBESBOU Z Z ZTJO    ZTJO    FOEDBTF DBTF JO<>  RVBESBOUT TJO@Y` Z dˠd TJO@Y` Z dˠd TJO@Y` Z dˠd TJO@Y` Z dˠd FOEDBTF FOEGVODUJPO
  15. Move During the Hsync w αΠϯؔ਺ɺίαΠϯؔ਺ͷ݁ՌΛɺ଎౓Ͱ৐͍ͨ͡ w WFSJMPHʹֻ͚ࢉͷػೳ͸ͳ͍ʂʢ೥୅͸ʣ w ʮ9ֻ͚ΔʯΛʮ9ճͨ͢ʯͰ࣮૷͢Δ

    w TJO@Yճ࿏͚ͭͩͰ࣮ݱͰ͖ΔΑ͏ʹɺ
 Y࠲ඪͷܭࢉͱZ࠲ඪͷܭࢉΛผͷλΠϛϯάͰߦ͏ JG WQPT QMBZFS@TQFFE CFHJO͜͜ͰʮQMBZFS@TQFFEճͨ͢ʯΛ࣮ݱ͍ͯ͠Δ JG WQPT<>  QMBZFS@Y@pYFEQMBZFS@Y@pYFE ` TJO@Y QMBZFS@SPU  FMTF QMBZFS@Z@pYFEQMBZFS@Z@pYFE TJO@Y QMBZFS@SPU   FOE
  16. code NPEVMFUBOL@CJUNBQ  JOQVU<>BEES  PVUQVU<>CJUT   PVUQVU͸CJU෯͕ͩCJUBSSBZ͸CJU෯ SFH<>CJUBSSBZ<>

     BEESͷ࠷ԼҐCJUͰɺCJUͷલ൒ͱޙ൒ͲͪΒΛฦ͢ͷ͔Λܾఆ͢Δ BTTJHOCJUT BEES<>  CJUBSSBZ<BEES><>CJUBSSBZ<BEES><> JOJUJBMCFHJO \X I CQX DPVOU^  CJUBSSBZ<I>C CJUBSSBZ<I>`C ʜ ʜ FOE FOENPEVMF
  17. code NPEVMFTQSJUF@SFOEFSFS  JOQVUDML WTUBSU MPBE ITUBSU '4.Ͱ࢖༻͢Δγάφϧ PVUQVU<>SPN@BEES SPN@BEES<>͸TQSJUFͷԿߦ໨͔ɺSPN@BEES<>͸ͦͷߦͷલ൒ޙ൒ͲͪΒ͔ɺΛද͢

    JOQVU<>SPN@CJUT 30.͔Βऔಘͨ͠CJU JOQVUINJSSPS WNJSSPS 30.͔Βऔಘͨ͠σʔλΛϛϥʔϦϯάͯ͠දࣔ͢Δ͔ PVUQVUHGY ݱࡏͷZDPVOU YDPVOU ಺෦Ϩδελ Ͱඳը͢Δ΋ͷ PVUQVUCVTZ  BTTJHOCVTZTUBUF8"*5@'03@745"35 SFH<>TUBUF SFH<>ZDPVOU SFH<>YDPVOU  SFH<>PVUCJUT30.͔ΒGFUDIͨ͠CZUFͷσʔλΛ֨ೲ͢ΔϨδελ  MPDBMQBSBN8"*5@'03@745"35 MPDBMQBSBN8"*5@'03@-0"% MPDBMQBSBN-0"%@4&561 MPDBMQBSBN-0"%@'&5$) MPDBMQBSBN-0"%@4&561લճͱҧ͍ɺCZUFऔಘ͢Δඞཁ͕͋Δ MPDBMQBSBN-0"%@'&5$) MPDBMQBSBN8"*5@'03@)45"35 MPDBMQBSBN%3"8 BMXBZT! QPTFEHFDML  CFHJO DBTF TUBUF  ʜલճͱ΄΅ಉ͡ FOEDBTF FOE FOENPEVMF
  18. code BMXBZT! QPTFEHFWTZODPSQPTFEHFSFTFU  CFHJO JG SFTFU CFHJO QMBZFS@SPUJOJUJBM@SPU QMBZFS@TQFFE

    FOEFMTFCFHJO GSBNFGSBNF JODSFNFOUGSBNFDPVOUFS JG GSBNF<> CFHJOPOMZVQEBUFFWFSZPUIFSGSBNF JG TXJUDI@MFGU  QMBZFS@SPUQMBZFS@SPUUVSOMFGU FMTFJG TXJUDI@SJHIU  QMBZFS@SPUQMBZFS@SPU UVSOSJHIU JG TXJUDI@VQ CFHJO JG QMBZFS@TQFFE NBYBDDFM QMBZFS@TQFFEQMBZFS@TQFFE  FOEFMTF QMBZFS@TQFFETUPQ FOE FOE FOE SFHDPMMJTJPO@EFUFDUFE  BMXBZT! QPTFEHFDML  JG WTUBSU  DPMMJTJPO@EFUFDUFEUFYU͸ؒ͜͜ҧͬͯΔ FMTFJG DPMMJTJPO@HGY  DPMMJTJPO@EFUFDUFE