ここではSMWのメモリに関する資料を集めています。RAM, ROMで使えそうな部分を集めます。(*1)
目次
RAM
$0000とは$7E:0000を指します。$7F:0000はそう明記します。$XXのアドレッシングモードではDレジスタの値との和がそのアドレスを指しますが、大抵$0000なので結局$0000 ~ $00FFを指していることになります。
汎用RAM
アドレス | 長さ | 説明 |
$0000 | 16 | 色々な用途で使われるRAMで一時的な数値の保存に適しています。 |
$008A | 1 | 汎用 |
空きRAM
アドレス | 長さ |
$0058 | 1 |
$005C | 1 |
$0060 | 4 |
$0079 | 1 |
$007C | 1 |
$0079 | 1 |
$0087 | 1 |
$0AF5 | 1 |
$0D9C | 1 |
$0DA1 | 1 |
$00D4 | 1 |
$00D9 | 1 |
$0F3A | 6 |
$0F42 | 1 |
$0F5E | 1 |
$13C8 | 1 |
$13D8 | 1 |
$13E6 | 1 |
$13F2 | 1 |
システム
アドレス | 長さ | 説明 |
$0013 | 1 | フレームカウンター。1フレーム毎に1加算され続け、$FFになったら$00に戻り繰り返す。 |
$0014 | 1 | フレームカウンター。ただし、ポーズ中などストップするときは止まる。 |
$0015 | 1 |
コントローラー入力。上位bit←【byetUDLR】→下位ビット b = A or B / y = X or Y / e = Select / t = Start / U = ↑ / D = ↓/ L = ←/ R = → |
$0016 | 1 |
コントローラー入力。(押し続けても1最初の1フレームだけ)上位bit←【byetUDLR】→下位ビット b = B / y = X or Y/ e = Select / t = Start / U = ↑ / D = ↓/ L = ←/ R = → |
$0017 | 1 | コントローラー入力。上位bit←【AXLR----】→下位ビット |
$0018 | 1 | コントローラー入力。(押し続けても1最初の1フレームだけ)上位bit←【AXLR----】→下位ビット |
ステージ
アドレス | 長さ | 説明 |
$0085 | 1 | 水フラグ ($00 : なし / $01 : あり) |
$0086 | 1 | 滑りやすさ。$00 ~ $FF |
$0DAE ($2100) | 1 | 明るさ。$00 ~ $0F |
$0DC0 | 1 | ステージの初め#30あり、コインを取るごとに1ずつ減って0になる。 |
$0EF8 | 1 | ヨッシー登場フラグ ($00 : 未登場 / $01 : 登場済み) |
$13BF | 1 | メッセージ用ステージ番号 |
$13CE | 1 | 中間ゲートフラグ($00 : 通っていない / $01 : 通った) |
$13F1 | 1 | 縦スクロールフラグ ($00 : 禁止 / $01 : 可能) |
プレイヤー
アドレス | 長さ | 説明 |
$0019 | 1 | パワーアップ状態。(0: 通常 / 1:キノコ / 2 : マント / 3 : ファイアーフラワー) |
$0071 | 1 | 値を代入するとマリオを動かす事が出来る。メモリ資料/$FE:0071 |
$0072 | 1 | ジャンプ状態。($00 : 地面 / $0B : ジャンプ・水泳上昇中 / $0C : 大砲ドカン・最大スピード / $24 : ジャンプ・水中下降中) |
$0073 | 1 | しゃがみフラグ。($00 : 通常 / $04 : しゃがんでいる) |
$0074 | 1 | 登りフラグ ($00 : 通常 / $1F : つた / $9F : 金網) |
$0075 | 1 | 水中フラグ。($00 : 通常 / $01 : 水中) |
$0076 | 1 | マリオの向き ($00 : 左 / $01 : 右) |
$0077 | 1 |
ブロックされている方向。【xxMSUDLR】 M : ブロックの中央 / S : 水平スクロールが出来ない状態で左右に触れている / U : 上 / D : 下 / L : 左 / R : 右 |
$0078 | 1 |
マリオを透明にする。【dlcapLU】 d : スターの点滅 / l : 飛行時に下をマントで隠す / u : 飛行時に上をマントで隠す / c : マントを隠す / a : 8x8 タイルを隠す / p : pバルーン状態などで他のタイルを隠す / L : 下を隠す / U : 上を隠す |
$007B | 1 | マリオのx座標の速度。右が正。 |
$007D | 1 | マリオのy座標の速度。右が正。 |
$007E | 2 | マリオのスクリーン端からのx座標; 但し表示位置が変わるだけで辺り判定は変わらない。 |
$0080 | 2 | マリオのスクリーン端からのy座標; 同上 |
$0088 | 1 | ドカンには行って移動するまでのタイマー |
$0089 | 1 | ワープ時の行動。($00 : 右 / $01 : 左 / $02 : 下 / $03 : 上へドカンに入った / $04 : 左 / $05 : 右 / $06 : 上 / $07 : 下へドカンに入った ) |
$0090 | 1 | ブロックの中でのy座標($00 ~ $0F) |
$0091 | 1 | ブロックの外へ出る際の動き($00 ~ $07 : 上 / $08 ~ $0F : 下) |
$0092 | 1 | ブロックの中でのx座標($00 ~ $0F) |
$0093 | 1 | $0092 >> 3されている。即ち ($00 : 左側 / $01 : 右側) |
$0094 | 2 | マリオのx座標。$0095はページ単位。 |
$0096 | 2 | マリオのy座標。$0096はページ単位。通常のマリオの状態ではマリオの頭の+10の位置を指しているので注意。 |
$0DB3 | 1 | プレイキャラクター。($00 : マリオ / $01 : ルイージ) |
$0DBA | 1 | マリオのヨッシーの色 |
$0DBB | 1 | ルイージのヨッシーの色 |
$0DBC | 1 | マリオの所持アイテム ($00 : なし / $01 : キノコ / $02 : マント / $03 : ファイアーフラワー) |
$0DBD | 1 | ルイージの所持アイテム ($00 : なし / $01 : キノコ / $02 : マント / $03 : ファイアーフラワー) |
$0DBE | 1 | 残機 |
$0DBF | 1 | コイン |
$0DC1 | 1 | ヨッシー許可フラグ ($00 : 禁止 / $01 : 許可) |
$13C7 | 1 | ヨッシーの色 ($04 : 黄色 / $06 : 青 / $08: 赤 / $0A : 緑) |
$13C9 | 1 | 状態フラグ。($00 : 通常 / $01 : PAUSE / $02 : 続ける・止めるメッセージ) |
$13CC | 1 | コイン取得。枚数を指定 |
$13D9 ~ | 1 | player |
画面上のステータス
アドレス | 長さ | 説明 |
$0DC2 | 1 | ストックアイテム。($00 : なし / $01 : キノコ / $02 : ファイアーフラワー / $03 : スター / $04 : マント羽) |
$0EF9 | 55 | ステータス画面描画 |
$0F30 | 1 | タイムを1減らすためのタイマー。$00になると1減る |
$0F31 | 3 | $0F31 : 百の位 / $0F32 : 十の位 / $0F33 : 一の位 |
$0F34 | 3 | マリオのスコア(÷10) |
$0F37 | 3 | ルイージのスコア(÷10) |
$0F48 | 1 | マリオのボーナススター |
$0F49 | 1 | ルイージのボーナススター |
ステージ選択画面(OW)
アドレス | 長さ | 説明 |
$0DC7 | 2 | マリオのX座標 |
$0DC9 | 2 | マリオのY座標 |
$00CB | 2 | ルイージのX座標 |
$00CD | 2 | ルイージのY座標 |
$0DCF | 2 | X座標のスピード |
$0DD1 | 2 | Y座標のスピード |
$0DD3 | 1 | 移動方向。最初のみ参照 ($00 : 上 / $02 : 下 / $04 : 左 / $06 : 右) |
$0DD8 | 1 | キャラクター切り替えモード ($00 : 無効 / $01 : 有効) |
カメラ
アドレス | 長さ | 説明 |
$005E | 1 | カメラが止まる前のスクリーン番号(横ステージ用) |
$005F | 1 | カメラが止まる前のスクリーン番号(縦ステージ用) |
タイマー
アドレス | 長さ | 説明 |
$13F3 | 1 | Pバルーンタイマー。$09から$01まで |