SkillAgentSearch skills...

Vgszero

SUZUKI PLAN - Video Game System Zero

Install / Use

/learn @suzukiplan/Vgszero
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Video Game System - Zero suzukiplan

Language: Japanese, English

logo

Video Game System - Zero (VGS-Zero) は RaspberryPi Zero 2W のベアメタル環境で動作するゲーム機です。

本リポジトリは、VGS-Zero の本体コード、配布イメージ、SDK、パソコン(Linux または macOS)で動作するエミュレータを提供します。

Table of Content

  1. VGS-Zero Feature ... スペック概要
  2. First Step Guide ... 導入ガイド(PC)
  3. How to Execute ... RaspberryPi Zero 2W での実行方法
  4. config.sys ... 動作設定ファイル
  5. game.pkg ... ゲーム実行形式ファイル
  6. Game Development Tools ... 開発ツール(SDK)一覧
  7. Programming Guide ... プログラム開発ガイド
  8. How to Sell Your Game ... セールス・ガイド
  9. Examples ... サンプル・プログラム一覧
  10. License ... ライセンス情報

VGS-Zero Feature

First Step Guide

VGS-Zero のゲーム開発環境の推奨 OS は Ubuntu Desktop です。

より正確には、2013 年モデルの MacBook Air へ Ubuntu Desktop をインストールした環境不自由なく快適にゲームの開発に専念できる環境のベースライン です。

VGS-Zero ならゲームを開発するのに強い PC は必須ではありません。

以下、何もインストールされていない Ubuntu Desktop で VGS-Zero の Hello, World! (Z80) を動かすまでの手順を案内します。

# ツールチェインのビルドに必要なミドルウェアをインストール
sudo apt update
sudo apt install build-essential libsdl2-dev libasound2 libasound2-dev

# VGS-Zeroのリポジトリをダウンロード
git clone https://github.com/suzukiplan/vgszero

# example/01_hello-asm のディレクトリへ移動
cd vgszero/example/01_hello-asm

# ビルド & 実行
make

上記の手順を実行すれば VGS-Zero の SDL2 版エミュレータで Hello, World! が起動します。

preview

VGS-Zero で扱えるグラフィックスの描画、効果音の作成、音楽の作曲などに必要なツールセットについては Game Development Tools の章で詳しくリストアップしています。

How to Execute

実機(RaspberryPi Zero 2W)でゲームを動かすための手順を記します。

Required Hardware

以下のハードウェアが必要です。

  • RaspberryPi Zero 2W
  • HDMI ケーブル (mini HDMI Type C → HDMI Type A)
  • USB ジョイパッド(D-Pad+A/B+Start/Select)+ 変換アダプタ
  • USB 電源
  • micro SD カード
    • 最大 20MB 程度の空き容量が必要です(ゲーム本体: 最大16MB、ファームウェア: 約4MB)
  • テレビなど(以下の条件のもの)
    • HDMI入力対応
    • リフレッシュレート60Hz
    • 解像度 480x384 ピクセル以上
    • オーディオ出力対応

(Joypad)

VGS-Zero は、カーソル(D-PAD)、Aボタン、Bボタン、SELECTボタン、STARTボタンの8ボタン式 USB ジョイパッドによる入力のみサポートしています。

joypad.png

RaspberryPi Zero 2W に接続する USB ジョイパッドのボタン割当(key config)は、config.sys ファイルにより利用者が自由にカスタマイズできます。

PC(SDL2 版)のキー割当は次の通りです:

  • D-Pad: カーソルキー
  • A ボタン: X キー
  • B ボタン: Z キー
  • START ボタン: SPACE キー
  • SELECT ボタン: ESC キー

プログラムからは 0xA0 ポートの入力 により入力状態を取得できます。

(Supported USB Joypad)

VGS-Zero での USB ジョイパッドのサポートリストを示します。

|製品名|サポート|補足事項| |:-|:-:|:-| |HXBE37823 (XINYUANSHUNTONG)|OK|完全に動作します| |suily USBコントローラー NESゲーム用(有線)|OK|完全に動作します| |Elecom JC-U3312シリーズ|OK|完全に動作します| |HORI リアルアーケードPro V3SA (PS3用)|OK|完全に動作します| |HORI グリップコントローラーアタッチメントセット for Nintendo Switch||十字キーが使用不可| |ロジクール (ロジテック) F310|NG|接続不可| |Kiwitata gamepad|NG|Circleが非サポート| |Xbox 360 wired gamepad clone|NG|Circleが非サポート|

標準 HID 準拠のジョイパッド(ゲームコントローラー)であれば動作できる可能性が高いです。 パソコンでの利用に際して専用のデバイスドライバを必要とするものや、XInput対応のゲームコントローラー(比較的新しいゲームコントローラー)は、全く認識できなかったり、認識できても一部のキー入力が効かないものが多い傾向があるので非推奨です。 SUZUKIPLAN が主に使用している製品は Elecom JC-U3312 と HXBE37823 です。Elecom JC-U3312 は EOL (製造終了) の商品のため入手が難しいかもしれません。HXBE37823 は Aliexpress に 300 円前後の安価なものが沢山あり、Amazon でも購入可能です。(ただし、HXBE37823 は上下左右の移動をする時に斜め入力が入ってしまうものがあり、感度の品質面に難があるかもしれませんが、Battle Marine のように左右に移動方向を絞ったゲームであれば快適にプレイできます)

(GPIO Joypad)

RaspberryPi Zero 2W の GPIO に次のピンアサインで直接ボタンを接続することもできます。

| Button | GPIO | |:------:|:----:| | Up | 22 | | Down | 5 | | Left | 26 | | Right | 6 | | A | 24 | | B | 25 | | Start | 4 | | Select | 23 |

RaspberryPi Zero 2W Pin Map

joypad_pin.jpeg

※ GND の接続も必要です

GPIO 接続に関する詳細は こちらの記事 をご参照ください。

VGS-Zero 対応のジョイスティック・ジョイパッドは、企業(商業ハード)or 個人(同人ハード)に関係なく SUZUKIPLAN からのライセンス不要で自由に開発・販売していただくことが可能です。(ライセンスは不要ですがサポートもしないスタイルなので、販売に伴う消費者へのサポート対応等は販売元の責任で行ってください)

USB ジョイパッドよりも実装難度が高くなりますが次のメリットがあります。

  • 互換性に関する問題が発生しない
  • レスポンス速度が USB ジョイパッドよりも高速

VGS-Zero のゲームがプレイ可能なハードウェアを販売される場合、基本的には GPIO ジョイパッドで実装することを推奨します。

なお、USB と GPIO のジョイパッドの両方を接続している場合、USB ジョイパッドの入力が優先され、GPIO ジョイパッドの入力は行われません。

Launch Sequence

起動手順は次の通りです。

  1. FAT32 フォーマットされた SD カードを準備
  2. SD カードのルートディレクトリに ./image 以下のファイルをコピー
  3. game.pkg を起動対象のゲームに置き換える
  4. SD カードを RaspberryPi Zero 2W に挿入
  5. RaspberryPi Zero 2W に USB ジョイパッドを接続
  6. RaspberryPi Zero 2W とテレビを HDMI ケーブルで接続
  7. RaspberryPi Zero 2W に電源を接続して ON

config.sys

RaspberryPi Zero 2W に挿入する SD カードのルートディレクトリに config.sys ファイルを配置することで色々なカスタマイズができます。

Joypad Button Assign

#--------------------
# JoyPad settings
#--------------------
A BUTTON_1
B BUTTON_0
SELECT BUTTON_8
START BUTTON_9
UP AXIS_1 < 64
DOWN AXIS_1 > 192
LEFT AXIS_0 < 64
RIGHT AXIS_0 > 192

(凡例)

# ボタン設定
key_name △ BUTTON_{0-31}

# AXIS設定
key_name △ AXIS_{0-1} △ {<|>} △ {0-255}

key_name:

  • A Aボタン
  • B Bボタン
  • START STARTボタン
  • SELECT SELECTボタン
  • UP 上カーソル
  • DOWN 下カーソル
  • LEFT 左カーソル
  • RIGHT 右カーソル

カーソルに BUTTON_ を割り当てたり、ボタンに AXIS_ を割り当てることもできます。

tools/joypad を用いれば、お手持ちの USB ジョイパッドのボタン内容をチェックできます。

game.pkg

game.pkg は VGS-Zero のゲーム実行形式ファイルで、ツールチェインの makepkg コマンド で生成することができます。

makepkg  -o /path/to/output.pkg
         -r /path/to/game.rom
        [-b /path/to/bgm.dat]
        [-s /path/to/se.dat]

なお、game.pkg の最大サイズは 16MB (128Mbits) です。

game.rom

game.rom は ROMバンクに読み込まれる 8KB 単位の ROM データセットで、ツールチェインの makerom コマンド で生成することができます。

usage: makerom output input1 input2 ... input256
  • 8KB (64KBit) = 1 バンク
  • game.rom には最大 256 バンク (16MBit) を格納可能
  • 入力ファイルが 8KB を超える場合、自動的に複数バンクに分割された状態で game.rom に格納されます
  • 入力ファイルが 8KB で割り切れない場合、パディングデータが自動的に挿入されます
  • 入力ファイルの指定順序でバンク番号が決定します(最初に指定したファイルの先頭 8KB がバンク 0)
  • VGS-Zero が起動するとバンク 0 から 3 が CPU Memory Map の ROM Bank 0 から 3 にロードされます
  • バンク 0 は必ずプログラムコードでなければなりません

bgm.dat

bgm.dat は 1 曲以上の楽曲データが含まれたデータセットで、ツールチェインの makebgm コマンド で生成することができます。

楽曲データは次の 2 種類のデータ形式をサポートしています

プログラム(Z80)で 再生を指示 (0xE0) した BGM データの種別は VGS-Zero 本体が自動的

Related Skills

View on GitHub
GitHub Stars61
CategoryContent
Updated21d ago
Forks4

Languages

C

Security Score

85/100

Audited on Mar 13, 2026

No findings