セガサターン
マシン語プログラミング
の紹介
大神 祐真
(@yohgami)
大神 祐真 (@yohgami)
自己紹介
大神祐真
@yohgami
[仕事]
グループウェア
メーカーの
インフラエンジニア
[趣味]
自作OS
レトロPC/ゲーム
自作アーケード基板
セガサターン
1994年発売 セガ据え置き型
初のポリゴン
描画
同世代
PlayStation
NINTENDO64
44,800円
大神 祐真 (@yohgami)
今日のお話
最も簡単な
「無限ループだけのプログラム」[1]を例に
趣味で行っている
マシン語によるセガサターンのソフト開発を
紹介します!
[1]
https://github.com/cupnes/sh_ss_test/tree/master/011_loop
大神 祐真 (@yohgami)
シェルスクリプトによる開発環境
●
iso9660.sh
– セガサターン用のヘッダを付けた
ISO9660ファイルシステムを生成する
シェルスクリプト
– 引数で指定されたバイナリが、
起動時にRAMへロードされ、
先頭から実行が開始される
大神 祐真 (@yohgami)
シェルスクリプトによる開発環境
●
include/sh2.sh
– シェルスクリプト製SH-2アセンブラ
– SH-2の各命令をシェル関数で定義している
●
網羅してあるわけではない
●
使いたい命令が出てきたらその都度追加している
– 各関数は標準出力へマシン語を出力する
●
例えば、sh2_nop()は0x0009を標準出力へ出力する
●
リダイレクトでファイルへ保存すれば
マシン語のバイナリファイルとなる
大神 祐真 (@yohgami)
無限ループだけのプログラム
src/main.sh
#!/bin/bash
. include/common.sh
. include/sh2.sh
main() {
sh2_rel_jump_after_next_inst $(two_comp_d 2)
sh2_nop
}
main
大神 祐真 (@yohgami)
ありがとうございました!
大神 祐真 (@yohgami)
宣伝
共に、電子版は無料公開中!
物理版は各種ショップ様へ委託中!
興味があれば、
http://yuma.ohgami.jp へどうぞ!
大神 祐真 (@yohgami)
宣伝
セガサターン
エミュレータ
「Yabause」の
コードを読んで
どんなハード
だったのかを知る
https://techbookfest.org/product/5711801452855296?productVariantID
=5652438159720448

セガサターンマシン語プログラミングの紹介