Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Perlでゲームボーイアセンブラプログラミング
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kimkim0106
January 28, 2025
Programming
0
110
Perlでゲームボーイアセンブラプログラミング
2025/01/28 レトロゲームから得た学びの発表 #01 にて発表
kimkim0106
January 28, 2025
Tweet
Share
More Decks by kimkim0106
See All by kimkim0106
奥深いゲームボーイ周辺機器の世界
kimkim0106
1
52
なぜ令和の今ゲームボーイを触るのか
kimkim0106
0
210
ゲームボーイでいろいろ「つながった」
kimkim0106
0
93
ゲームボーイでLT
kimkim0106
0
210
レトロゲームから学ぶ通信技術の歴史
kimkim0106
0
280
レトロゲームから学ぶ半導体の歴史
kimkim0106
0
54
ゲームボーイに画像表示させよう!
kimkim0106
0
16
ゲームボーイのアーキテクチャ
kimkim0106
0
10
ゲームボーイアプリ開発の始め方
kimkim0106
0
14
Other Decks in Programming
See All in Programming
PHPで TLSのプロトコルを実装してみる
higaki_program
0
230
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
480
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
130
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
0
130
The free-lunch guide to idea circularity
hollycummins
0
270
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
280
[SF Ruby Feb'26] The Silicon Heel
palkan
0
110
SourceGeneratorのマーカー属性問題について
htkym
0
200
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
250
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
140
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
120
へんな働き方
yusukebe
5
2.6k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Unsuck your backbone
ammeep
672
58k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
310
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
640
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
120
Marketing to machines
jonoalderson
1
5k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
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