トップ 一覧 検索 ヘルプ RSS ログイン

h2e 仕様 - メモリ配置の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!about
ここではリンカスクリプト h2e.x をベースにした RAM の配置を記載いたします。 System24 は当時としては RAM の容量が非常に大きいので、複雑なプログラムを実行可能です。その反面、 VRAM (特にキャラクタ)は少なめになっています。

未使用領域を使う場合は h2e.x を変更するか、ポインタにアドレスを直書きするなどしてください。

!!!RAM配置
 $080000-$08ffff BIOS 予約
 $090000-$09dfff h2e file Program
 $09e000-$09ffff h2e work RAM
 $0a0000-$0bbfff 未使用
 $0bc000-$0bffff スタックデータ
 $0c0000-$0fffff $080000-$0bffff のミラー
 $200000-$3fffff VRAM (tile)
 $400000-$403fff color RAM
 $600000-$7fffff VRAM (sprite)
 $f00000-$f3ffff CPU B main RAM
 $f40000-$f7ffff $f00000-$f3ffff のミラー
 $f80000-$fbffff $080000-$0bffff のミラー
 $fc0000-$ffffff $080000-$0bffff のミラー

ROM やinput port,専用レジスタは別資料を参照してください。

Sega System 24 hardware description by Charles MacDonald http://cgfm2.emuviews.com/txt/s24tech.txt

!! BIOS 予約
書き込み禁止。

BIOS のプログラムで使用するデータとして予約済みです。現状では $081fff まで使用しています。

!! h2e file Program
h2e ファイルのヘッダを除いた部分が転送されます。 プログラムの長さは 0xe000 byte が最大となりますので、それを越える長さや別のアドレスを使用したい場合は個別に定義、使用してください。

!! h2e work RAM
h2e file Program が使用できる RAM で、スタックは除きます。グローバル変数や静的変数をリンカがこの領域に配置します。値の初期化は行いません。

!! 未使用
自由に使用できますが、スタックデータにつながる領域です。このためプログラムの内容によってはスタックがデータを浸食することがあります。

!! スタックデータ
BIOS, h2e progam 共用のスタックです。BIOS では $f80000-$ffffff をスタックポインタとしています(A7レジスタの初期値は$0000000)。
BIOS, h2e program 共用のスタックです。BIOS では $f80000-$ffffff をスタックポインタとしています(A7レジスタの初期値は$0000000)。

巨大なデータのローカル変数確保や多重の再帰呼び出しはスタックデータを大量に使用し、通常のRAM領域を浸食する原因になりますので、注意してください。

!! VRAM (tile), color RAM, VRAM (sprite)
詳細な仕様は別文書を参照してください。

BIOS では VRAM (tile) と color RAM の先頭に文字表示のためのデータが入っています。データを変更すると BIOS に戻ったときに表示がおかしくなる可能性があります。 VRAM (sprite) は未使用です。

!! CPU B main RAM
CPU B の $000000-$03ffff に配置される RAM で、 CPU B を使用する場合にはプログラムを転送します。 CPU B を使用しない場合は自由に使用できます。