Skip to content

Version 1.18.0

Choose a tag to compare

@suzukiplan suzukiplan released this 23 Jan 12:28
· 76 commits to master since this release
b7c9989

次のエンハンス・バグ修正を実施しました。

  • 拡張 RAM バンク I/O (バンク切り替え無しでの拡張RAM入出力)
  • 拡張 RAM のセーブ・ロード
  • HAGe: パーセンテージ計算のラップアラウンド
  • HAGe: パーセンテージ計算機能を追加
  • HAGe: sin/cos を 16bit 値で求める機能に対応
  • Debugger: vgs0 のデバッグコマンドに E (プロセス終了) を追加
  • bugfix: macOS で tools のビルドが失敗する不具合を修正
  • bugfix: macOS で SDL2 版エミュレータのビルドが失敗する不具合を修正

(拡張 RAM バンク I/O)

ポート番号 0xDC の入出力を行うことで、バンク切り替えをすることなく特定の拡張 RAM バンクの特定アドレスへの 1 byte の入出力を行うことができるようにしました。

; 入力
LD HL, 0x1FFF     ; 読み込みアドレスを HL に設定(※上位3ビットはマスクされる)
LD B, 123         ; 読み込むバンク番号を B に設定
IN A, (0xDC)      ; exram[123] の 0x1FFF 番地を A に読み込む
; 出力
LD HL, 0x1FFF     ; 書き込みアドレスを HL に設定(※上位3ビットはマスクされる)
LD B, 123         ; 書き込むバンク番号を B に設定
LD A, 0xCC        ; 書き込む値を A に設定
IN (0xDC), A      ; exram[123] の 0x1FFF 番地に A を書き込む

(拡張 RAM のセーブ・ロード)

  • ポート 0xDB の I/O で拡張 RAM バンクのセーブ(OUT)、ロード(IN)ができるようになりました
  • セーブデータのファイル名は SD カードルートディレクトリ(SDL2の場合はカレントディレクトリ)の saveXXX.dat 固定です
    • XXX は拡張 RAM のバンク番号: 000 ~ 255

セーブの実装例:

LD A, 123       # セーブする拡張 RAM バンク番号を A に設定
OUT (0xDB), A   # セーブを実行
AND 0xFF        # セーブ結果はレジスタAに格納される
JZ SAVE_SUCCESS # 成功時は 0
JNZ SAVE_FAILED # 失敗時は not 0

ロードの実装例:

LD A, 123       # ロードする拡張 RAM バンク番号を A に設定
IN A, (0xDB)    # ロード
JZ LOAD_SUCCESS # ロード成功時は 0
JNZ LOAD_FAILED # ロード失敗時は not 0 (※ロード先は 0x00 で埋められる)
  • 1 つのセーブデータのサイズは 8192 bytes (バンクサイズ) 固定で領域の一部をセーブ・ロードすることはできません
  • 通常のセーブデータと同様の注意事項があります

(パーセンテージ計算のラップアラウンド)

0xD1 を OUT した結果が 32767 を超える場合は 32767、-32768 未満の場合は -32768 に丸められる仕様に変更しました。

(パーセンテージ計算)

0xD1 を IN することで BC が DE の何パーセントなのか、0% 〜 255% の範囲で求めることができるようになりました。

LD BC, 33
LD DE, 100
IN A, (0xD1)  ; A = 33%
  • DE が 0 の場合、結果は常に 0% になり、ゼロ除算エラーにはなりません
  • 結果が 255% を超える場合は 255% に丸められます

(16bit sin/cos)

0xD2, 0xD3 の OUT で HL に 16bit の sin/cos を求めることができるようになりました。

; 16bit sin
LD A, 123      ; A に求めるテーブル要素番号を指定
OUT (0xD2), A  ; HL = sin(A × π ÷ 128.0)

; 16bit cos
LD A, 123      ; A に求めるテーブル要素番号を指定
OUT (0xD3), A  ; HL = cos(A × π ÷ 128.0)

(Add E command for vgs0)

SDL2 版エミュレータのデバッグコマンドに E (プロセス終了) を追加しました。

(Add NO_NSF compile flag)

コンパイル時に -DNO_NSF を定義することで NSF を使用できない状態にするオプションを追加しました。。

(Minor bugfix)

  • macOS で tools のビルドが失敗する不具合を修正
  • macOS で SDL2 版エミュレータのビルドが失敗する不具合を修正