Repository navigation
Version 1.18.0
次のエンハンス・バグ修正を実施しました。
- 拡張 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 版エミュレータのビルドが失敗する不具合を修正