# 麻雀 (FC) rom map # ================= $C00C-$C0D7 牌描画用データ(上向き) # 1牌あたり6Byte(2x3) $C0E4-$C1AF 牌描画用データ(下向き) # 1牌あたり6Byte(2x3) $C1BC-$C1BF 2*(牌種) のテーブル。ポインタオフセットへの変換用 $C1C0-$C1C9 6*(牌種内番号) のテーブル。牌描画用データオフセットへの変換用 $C1CA-$C1D1 牌描画用データ(上向き)へのポインタテーブル # $C00C マンズ # $C042 ピンズ # $C078 ソーズ # $C0AE 字牌 $C1D2-$C1D9 牌描画用データ(下向き)へのポインタテーブル # $C0E4 マンズ # $C11A ピンズ # $C150 ソーズ # $C186 字牌 $C326-$C334 コマンド文字列(アガリ, リーチ, ...) $C400-$C42B 役文字列へのオフセット # 役満はベースアドレス $C42C # 役満以外はベースアドレス $C484 $C42C-$C53D 役文字列 # 役満は 0xFF 終端 # 役満以外は 0xFF, (飜数) で終端 # ただし、役牌、ドラは数によって飜数が変わるため 0xFF 終端 $C53E-$C552 BG描画用データ $C560-$C571 BG描画用データ $C57F-$C587 パレット設定用データ $C588-$C59A BG描画用データ $C59B-$C59F BG描画用データ $C5A0-$C5A4 BG描画用データ $C5A5-$C5B5 パレット設定用データ $C652-$C675 パレット設定用データ $C676-$C694 属性テーブル設定用データ $C695-$C6D8 BG描画用データ $C6D9-$C707 パレット/属性テーブル設定用データ $C708-$C8B1 BG描画用データ $C90C-$C90E 各レベルに対応するカーソルy座標 $C90F-$C92E デモ用乱数 $C92F-$C933 属性テーブル設定用データ $C934-$C938 属性テーブル設定用データ $C9C2-$C9E1 BG描画用データへのポインタテーブル # (下位Byte配列, 上位Byte配列) の形式 # BG描画用データは以下のような構造体の配列で、0終端: # Byte0-1 ptr VRAMアドレス # Byte2 U8 データ形式、長さ # Byte3- ? データ # 長さはByte2のbit0-5 # Byte2のbit7が1ならばPPUアドレスインクリメント +32, 0ならば +1 # Byte2のbit6が1ならばByte3を長さ分書き込む。0ならばByte3以降の長さ分のデータを書き込む $CA43 RESET割り込みルーチン $CE26- 牌の残り枚数初期化処理? $CE4C NMI割り込みルーチン $D2BF 配牌ルーチン $D30F 配牌実行前に乱数を「かき混ぜる」処理 $F9D9 スプライトDMA $F9E4 ネームテーブル全体を1種類のタイルで埋める(ただし属性テーブルは0で埋める # Read # $00 U8 タイルID # $01 U8 ネームテーブルID(1-origin) $FA27 $FA61 の処理本体 $FA61 BG描画ルーチン $FC81 タイマ処理 $FCC2 乱数更新(256bit LFSR) # $23-$42 を右へシフトする。タップは $23 のbit1と $24 のbit1。 # 初期値は $23 のみ 0x0C, 他は全て0。この初期値から開始した場合、237番目まで # の値はただ1回だけ現れ、238番目以降は周期32767で循環する。 $FCDD 入力読み取り(ABSTUDLR, 拡張ポート対応) $FCF8 入力読み取り下請け $FD36 デモ用乱数設定 $FE40-$FE50 サウンド関連データ(ベースアドレス $FE40 に対するオフセット) $FE51 サウンド関連データ(5Byte単位。Byte1-2はポインタ) $FEA1 サウンド関連データ $FFFA-$FFFF 割り込みベクタ