Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hello, Worldまで3ヶ月 Golangでファミコンエミュレータ実装 #gocon fukuoka 2019

1,824 views

Published on

GoCon Fukuoka 2019 発表資料
ファミコンエミュレータを通してコンピュータアーキテクチャの世界を見る。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Hello, Worldまで3ヶ月 Golangでファミコンエミュレータ実装 #gocon fukuoka 2019

  1. 1. HELLO, WORLD 3 GO
  2. 2. ▸ @cakephper ▸ ▸ VAddy: ▸ Scutum: Web Application Firewall
  3. 3. (NES) ▸ CPU 1.79MHz, 8bit ▸ RP2A03 (6502) ▸ PPU 5.37MHz ▸ RP2C02
  4. 4. (NES) ▸ RAM: 2KB ▸ VRAM: 2KB ▸ Program ROM: 32KB ▸ Character ROM: 8KB ▸ 16bit
  5. 5. GOAAAAAL ▸ ▸
  6. 6. ▸ (CPU, Memory, etc) ▸
  7. 7. PHP NES EMULATOR ▸ PHP ▸ Go ▸ 30
  8. 8. Golang
  9. 9. PROS/CONS PHP, JS, RUST, GOLANG … ▸ ▸
  10. 10. PROS/CONS PHP, JS, RUST, GOLANG … ▸ ▸
  11. 11. PROS/CONS ▸ Hello World 3 ▸
  12. 12. HELLO WORLD
  13. 13. HELLO WORLD ▸ (ROM) ▸ CPU ▸ : 56 13
  14. 14. HELLO WORLD ▸ CPU BUS (Memory-mapped I/O) ▸ PPU ( )
  15. 15. (NES ROM) ROM ROM 16KB or 32KB
  16. 16. https://github.com/ichikaway/goNES/blob/master/cpu/opcode.go
  17. 17. 78 A2 FF 9A A9 00 8D 00 20 … 0x8000 0x8001 0x8002 0x8003 0x8004 0x8005 0x8006 0x8007 0x8008
  18. 18. 78 A2 FF 9A A9 00 8D 00 20 … 0x8000 0x8001 0x8002 0x8003 0x8004 0x8005 0x8006 0x8007 0x8008 0x8000 SEI
  19. 19. 78 A2 FF 9A A9 00 8D 00 20 … 0x8000 0x8001 0x8002 0x8003 0x8004 0x8005 0x8006 0x8007 0x8008 0x8001 LDX
  20. 20. 78 A2 FF 9A A9 00 8D 00 20 … 0x8000 0x8001 0x8002 0x8003 0x8004 0x8005 0x8006 0x8007 0x8008 0x8003 TXS
  21. 21. (GOLANG) https://github.com/ichikaway/goNES/blob/master/cpu/cpu.go
  22. 22. (PHP) https://github.com/hasegawa-tomoki/php-terminal-nes-emulator/blob/master/src/Cpu/Cpu.php
  23. 23. (RUST) https://github.com/bokuweb/rustynes/blob/master/src/nes/cpu/mod.rs
  24. 24. (RUST) https://github.com/bokuweb/rustynes/blob/master/src/nes/cpu/instructions.rs
  25. 25. 78 A2 FF 9A A9 00 8D 00 20 … 0x8000 0x8001 0x8002 0x8003 0x8004 0x8005 0x8006 0x8007 0x8008 0x8005 STA 0x2000
  26. 26. ▸ ▸ ▸
  27. 27. https://github.com/ichikaway/goNES goNES
  28. 28. GONES 1 ▸ ▸ ▸termbox
  29. 29. GONES
  30. 30. GONES 2 ▸HTTP
  31. 31. ▸ ▸upper uint8 << 8 ▸
  32. 32. STEP0 ▸ ▸
  33. 33. STEP0 ▸ ▸ 2 PPU
  34. 34. STEP1 ▸ Hello, World! ▸ @bokuweb ▸ https://qiita.com/bokuweb/items/ 1575337bef44ae82f4d3 ▸ 3 PPU 30%
  35. 35. STEP2 ▸ ▸ ROM CPU
  36. 36. STEP3 ▸ ▸ PPU ▸
  37. 37. THANK YOU ▸ @cakephper ▸ goNES ▸ https://github.com/ichikaway/goNES

×