Copyright (C) 2003-2009 デグレファクトリー
この資料は SNES SPC700 Player v2.13.5, v2.14.0 以降に準拠しています。
3.7 Script700 ワークエリアの読み取り・書き換え
3.8 Script700 CmpParam の読み取り・書き換え
SPCCMD.EXE は起動中の SNES SPC700 Player からメモリの内容を読み取ったり、書き換えたりするための公式外部拡張ツールです。
SNES SPC700 Player はある程度のレジスタやメモリ状態を表示できますが、メモリマップ全体を表示したり、リアルタイムで書き換えることはできません。
このツールは SNES SPC700 Player で SPC ファイルや SNESAPU のデバッグで必要となる追加機能を提供します。
SPCCMD.EXE はコマンドライン ツールですので、コマンド プロンプトより実行する必要があります。
SPCCMD.EXE を使用する前に、まずコマンド プロンプトを起動してください。
C:\>_
次に SNES SPC700 Player を起動し、任意の SPC ファイルを開いた状態にしてください (演奏中でも停止中でもかまいません)。
SPCCMD.EXE を置く場所はどこでもかまいません (SPCPLAY.EXE と異なる場所でも動作します)。
コマンド プロンプトで spccmd /? と入力して Enter キーを押すと、 SPCCMD.EXE の構文ヘルプが表示されます。
C:\>spccmd /?
Sending debug message tool to SNES SPC700 Player
サポートしている SPCPLAY.EXE のバージョン: v2.13.5 以降
<< 構文 >>
spccmd.exe [オプション]
[オプション]
== 基本オプション.
/? /h : 構文ヘルプを表示
/v : バージョン情報を表示
/p : 演奏開始・一時停止
/r : 最初から演奏
/s : 演奏停止
:
:
C:\>_
コマンド プロンプトで spccmd /v と入力して Enter キーを押すと、 SPCCMD.EXE のバージョン情報が表示されます。
C:\>spccmd /v Sending debug message tool to SNES SPC700 Player サポートしている SPCPLAY.EXE のバージョン: v2.13.5 以降 C:\>_
【演奏開始の場合】
コマンド プロンプトで spccmd /p と入力して Enter キーを押すと、開いている SPC ファイルの演奏が開始されます。
C:\>spccmd /p C:\>_
【一時停止の場合】
コマンド プロンプトで spccmd /p と入力して Enter キーを押すと、演奏が一時停止されます。
C:\>spccmd /p C:\>_
【最初から演奏する場合】
コマンド プロンプトで spccmd /r と入力して Enter キーを押すと、演奏が最初から再開されます。
C:\>spccmd /r C:\>_
【演奏停止の場合】
コマンド プロンプトで spccmd /s と入力して Enter キーを押すと、演奏が停止されます。
C:\>spccmd /s C:\>_
【読み取りの場合】
コマンド プロンプトで spccmd /gd [アドレス] と入力して Enter キーを押すと、 DSP レジスタの値が表示されます。
[アドレス] には読み取りたいメモリの場所を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には読み取った値が表示されます。
C:\>spccmd /gd $41 戻り値 = $000000FE (254) C:\>_
【書き換えの場合】
コマンド プロンプトで spccmd /sd [アドレス] [設定値] と入力して Enter キーを押すと、 DSP レジスタの値を書き換えます。
[アドレス] には読み取りたいメモリの場所、 [設定値] には書き込む値を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には書き込む前に設定されていた値が表示されます。
C:\>spccmd /sd $41 $37 戻り値 = $000000FE (254) C:\>_
【メモリマップ表示の場合】
コマンド プロンプトで spccmd /md と入力して Enter キーを押すと、 DSP レジスタの値の一覧が表示されます。
C:\>spccmd /md DSP レジスタ メモリマップ Addr : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0000 : 00 00 3A 00 00 00 21 00 00 00 6E 00 00 00 3C 00 0010 : 00 00 0E 00 00 00 08 00 00 00 7E 00 00 00 3C 00 0020 : 00 00 6A 00 00 00 1D 00 00 00 3F 00 00 00 17 00 0030 : 00 00 0C 00 00 00 0A 00 00 00 72 00 00 00 17 00 0040 : 00 00 12 00 00 00 07 00 00 00 7D 00 00 00 20 00 0050 : 00 00 12 00 00 00 07 00 00 00 7D 00 00 00 00 00 0060 : 00 00 01 00 00 00 0A 00 00 00 7F 00 00 00 00 00 0070 : 00 00 0A 00 00 00 0A 00 00 00 68 00 00 00 C8 00 C:\>_
【読み取りの場合】
コマンド プロンプトで spccmd /gp [アドレス] と入力して Enter キーを押すと、 I/O ポートの値が表示されます。
[アドレス] には読み取りたいメモリの場所を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には読み取った値が表示されます。
C:\>spccmd /gp 2 戻り値 = $00000000 (0) C:\>_
【書き換えの場合】
コマンド プロンプトで spccmd /sp [アドレス] [設定値] と入力して Enter キーを押すと、 I/O ポートの値を書き換えます。
[アドレス] には読み取りたいメモリの場所、 [設定値] には書き込む値を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には書き込む前に設定されていた値が表示されます。
C:\>spccmd /sp 2 $10 戻り値 = $00000000 (0) C:\>_
【書き換え後すぐに元に戻す場合】
コマンド プロンプトで spccmd /tp [アドレス] [設定値] と入力して Enter キーを押すと、 I/O ポートの値を書き換え、すぐに元の値に戻します。
効果音の再生等のために、ドライバにメッセージを送る際に便利です。
[アドレス] には読み取りたいメモリの場所、 [設定値] には書き込む値を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には常に 0 が表示されます。
C:\>spccmd /tp 2 $10 戻り値 = $00000000 (0) C:\>_
【読み取りの場合】
コマンド プロンプトで spccmd /gr [アドレス] と入力して Enter キーを押すと、 64KB APU RAM の値が表示されます。
[アドレス] には読み取りたいメモリの場所を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には読み取った値が表示されます。
C:\>spccmd /gr $1732 戻り値 = $E8021003 (3892449283) C:\>_
【書き換えの場合】
コマンド プロンプトで spccmd /sr [アドレス] [設定値] と入力して Enter キーを押すと、 64KB APU RAM の値を書き換えます。
[アドレス] には読み取りたいメモリの場所、 [設定値] には書き込む値を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には書き込む前に設定されていた値が表示されます。
C:\>spccmd /sr $1732 55410474 戻り値 = $E8021003 (3892449283) C:\>_
【メモリマップ表示の場合】
コマンド プロンプトで spccmd /mr [開始アドレス] [表示サイズ] と入力して Enter キーを押すと、 64KB APU RAM の値の一覧が表示されます。
[開始アドレス] は下 1 桁が切り捨てられます。 例えば $206 を指定すると $200 から始まります。
[表示サイズ] は 16 で切り上げされます。 例えば 33 を指定すると 48 バイト分表示されます。
C:\>spccmd /mr $200 256 64KB APU RAM メモリマップ Addr : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0200 : B8 02 00 5C 15 FF 00 00 00 00 00 00 00 00 00 00 0210 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0220 : 00 00 00 00 01 00 BE 72 00 60 A0 80 00 00 00 00 0230 : 00 00 00 00 00 00 00 00 00 00 00 00 03 03 03 33 0240 : 0B 0B 33 33 00 00 00 00 00 00 00 00 1D 01 0E 90 0250 : 43 C6 46 EF 00 00 00 00 82 57 53 98 14 1E 15 17 0260 : 1B 1F 19 15 00 00 00 00 30 2C 28 28 A4 00 B4 F6 0270 : B0 B0 F6 F6 00 00 00 00 00 00 00 00 04 15 02 0F 0280 : 16 10 0B 09 00 00 00 00 04 03 1A 0E 97 5C 56 D8 0290 : 1A 8F E0 6D 00 00 00 00 7D 68 E9 41 7D 00 00 00 02A0 : 00 F9 3C F8 00 00 00 00 23 0A 04 00 03 01 02 01 02B0 : 04 03 03 01 00 00 00 00 00 02 01 01 01 01 07 02 02C0 : 01 04 02 02 00 00 00 00 00 01 01 01 00 00 00 00 02D0 : 00 00 00 00 00 00 00 00 00 00 00 00 01 09 11 18 02E0 : 21 29 30 38 00 00 00 00 60 68 70 78 64 00 00 FF 02F0 : FF 01 4C 02 81 FE 00 05 FF FF 64 C8 FF 00 1C FF C:\>_
【読み取りの場合】
コマンド プロンプトで spccmd /gw [アドレス] と入力して Enter キーを押すと、 Script700 ワークエリアの値が表示されます。
[アドレス] には読み取りたいメモリの場所を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には読み取った値が表示されます。
C:\>spccmd /gw 7 戻り値 = $00007D41 (32065) C:\>_
【書き換えの場合】
コマンド プロンプトで spccmd /sw [アドレス] [設定値] と入力して Enter キーを押すと、 Script700 ワークエリアの値を書き換えます。
[アドレス] には読み取りたいメモリの場所、 [設定値] には書き込む値を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には書き込む前に設定されていた値が表示されます。
C:\>spccmd /sw 7 $20 戻り値 = $00007D41 (32065) C:\>_
【読み取りの場合】
コマンド プロンプトで spccmd /gc [アドレス] と入力して Enter キーを押すと、 Script700 CmpParam の値が表示されます。
[アドレス] には読み取りたいメモリの場所を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には読み取った値が表示されます。
C:\>spccmd /gc 1 戻り値 = $3CF90000 (1022951424) C:\>_
【書き換えの場合】
コマンド プロンプトで spccmd /sc [アドレス] [設定値] と入力して Enter キーを押すと、 Script700 CmpParam の値を書き換えます。
[アドレス] には読み取りたいメモリの場所、 [設定値] には書き込む値を指定します。 $ を最初に付けると 16 進数指定になります。
戻り値には書き込む前に設定されていた値が表示されます。
C:\>spccmd /sc 1 $3CFA0000 戻り値 = $3CF90000 (1022951424) C:\>_