Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Perlでゲームボーイアセンブラプログラミング
Search
kimkim0106
January 28, 2025
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Perlでゲームボーイアセンブラプログラミング
2025/01/28 レトロゲームから得た学びの発表 #01 にて発表
kimkim0106
January 28, 2025
More Decks by kimkim0106
See All by kimkim0106
令和最新版レトロゲームの世界
kimkim0106
0
100
ゲームボーイ開発でもバイブコーディング
kimkim0106
0
110
奥深いゲームボーイ周辺機器の世界
kimkim0106
1
110
なぜ令和の今ゲームボーイを触るのか
kimkim0106
0
510
ゲームボーイでいろいろ「つながった」
kimkim0106
0
130
ゲームボーイでLT
kimkim0106
0
270
レトロゲームから学ぶ通信技術の歴史
kimkim0106
0
350
レトロゲームから学ぶ半導体の歴史
kimkim0106
0
120
ゲームボーイに画像表示させよう!
kimkim0106
0
28
Other Decks in Programming
See All in Programming
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
140
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
220
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
170
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
670
Heart of Swift Concurrency
koher
0
1.1k
setup-vp GitLab対応の裏側
naokihaba
0
140
Webの地図
yosuke_furukawa
PRO
6
4.9k
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
240
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
410
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Ethics towards AI in product and experience design
skipperchong
2
400
Product Roadmaps are Hard
iamctodd
55
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
Odyssey Design
rkendrick25
PRO
2
830
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
720
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
250
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Transcript
Perlで ゲームボーイアセンブラ プログラミング kimkim0106 2025/01/28 レトロゲームから得た学びの発表 #01
自己紹介 kimkim0106 株式会社モバイルファクトリー マネージャー エンジニアとしてはサーバーとかインフラがメイン ゲームボーイカラーが好きです Website : kimkim0106.net X
: @kimkim0106_3218 VRChat : kimkim0106 GitHub : kaoru-k 2
ゲームボーイとは? 知ってる人〜?? 3
ゲームボーイとは? • 任天堂の携帯型ゲーム機 • 1989年 発売 ◦ モノクロ4階調液晶 • 1998年
カラー発売 ◦ 32000色カラー液晶 ◦ 性能もアップ 4
以前こういう本を見かけた 「シェルスクリプトでゲームボーイプログラミング」 echo とかをつかってアセンブラを実装 5
Perlでやりたい Perlで食っている身としては、Perlでやってみたい… と、metacpanを見ていたら、なんとZ80アセンブラを発見! 6 https://x.com/kimkim0106_3218/status/1856000687651606837
CPU::Z80::Assembler Perl製のZ80アセンブラ • Z80アセンブリの文字列・リストを渡すとバイナリを出力 • 外部プログラムは呼び出していない ◦ RGBDS とか GBDK
は不使用 • XS(Cバインディング)すら使わず、Perlのみで実装 ◦ パーサーもPerl ◦ ハッシュでアセンブリ↔機械語を変換 https://metacpan.org/pod/CPU::Z80::Assembler 7
検証環境 • OS: Arch Linux • Perl: 5.40.1 ◦ CPU::Z80::Assembler
2.25 ◦ IO::File (標準モジュール) 8
画像表示プログラムを作る ちょうどアセンブリで画像表示プログラムを書いていた こいつをこれでコンパイルしたいが… 9
ゲームボーイのCPUとZ80の違い 共通点が多いが、追加・削除された命令がある とくに16bit操作の命令に差分が多い アセンブラに手を加えるのは大変そう… 10 opcode は FA Z80だとジャンプ命令
GBのCPUとZ80の違い Pan Docs が詳しい 8080、Z80との違いについて書かれている Opcodeの対照表もある 11 https://gbdev.io/pandocs/CPU_Comparison_with_Z80.html
ならば書き換えればいいだけ Z80の命令表とにらめっこしながら、共通で使えるものを探す 命令数は増えてしまうが、こんな感じで書き換えができた Z80のアセンブラでゲームボーイ用バイナリを作れた! 12 ld a, [$FF44] ld hl,
$FF44 ld a, (hl)
バイナリを書き出す バイナリをロムデータとして書き出す 13
動いた!!! 14
もうちょいPerlを使いたい 未実装だが、このあたりをやりたい • ヘッダのチェックサムの計算 ◦ エミュレータだとチェックサムがおかしくても動く ◦ 実機だと検証失敗した場合、実行されない • 画像データの変換
◦ いまは別ツールで作成 ◦ ビットマップデータがあれば作れる 15
まとめ Perlがあればゲームボーイプログラミングができる! • Perlだけでアセンブリからゲームボーイのバイナリが作れる • Z80用のアセンブラでゲームボーイのバイナリが作れる ◦ 共通の命令を使う必要があるが、アセンブラは無改造 • 応用は難しいが、ちょっとしたものを作るのには使える?
◦ 例えば、サーバに画像をアップロードして、ゲームボーイで画像表示 させるプログラムを生成するとか 16
おわり ご清聴ありがとうございました 17 https://x.com/kimkim0106_3218/status/1866108982211092704