「星をみるひと 移動量2倍&Bダッシュパッチ」 by さんきち (http://www.sankichi.flnet.org/) 無断転載を禁じます。 四角はROMイメージ先頭からのアドレスを示す。 $で始まるのは、ファミコン内部から見たアドレス。 :や#はコメントを示す。 また、一部ラベルのようなものが書かれているが、無視してよい。 ■0001C2C4〜 キー入力横取り $C2B4 20 5d ff : JSR $ff5d #Bボタン状態を拾うルーチンに飛ばす ■0001D786〜 $D776 4c cd FF : JMP $ffcd #左移動時のスクロール $D779 EA : NOP $D77a EA : NOP $D77B 4c ba FF : JMP $ffba #右移動時のスクロール $D77E EA : NOP ■0001D81F〜 $6eセットルーチンを呼ぶ $d80f 20 69 fe : JSR $fe69 $d812 EA : NOP ■0001D853〜 $1b初期値セットルーチンを呼ぶ $D843 20 59 fe : JSR $fe59 $D846 EA : NOP ■0001D85A〜 $D84a 4c a7 ff : JMP $ffa7 #上移動時のスクロール $D84d EA EA : NOP NOP $D84f 4c 94 ff : JMP $ff94 #下移動時のスクロール $D852 EA: : NOP ■0001D881〜 $6d処理ルーチンを呼ぶところ $d871 4c 7b ff : JMP $ff7b $d874 EA : NOP ■0001DD23〜 $dd13 20 24 ff : JSR $ff24 ←右スクロール時OBJ一括移動 $dd16 EA EA EA $dd19 EA EA EA $dd1c EA EA EA ■0001DD32〜 $dd22 20 b2 fe : JSR $feb2 ←左スクロール時OBJ一括移動 $dd25 EA EA EA $dd28 EA EA EA $dd2b EA EA EA ■0001DD41〜 $dd31 20 eb fe : JSR $feeb ←下スクロール時OBJ一括移動 $dd34 EA EA EA $dd37 EA EA EA $dd3a EA EA EA ■0001DD50〜 $dd40 20 79 fe : JSR $fe79 ←上スクロール時OBJ一括移動 $dd43 EA EA EA $dd46 EA EA EA $dd49 EA EA EA ■0001FE69〜 $1bセット用 16バイト $fe59 a5 bf : LDA $bf $fe5b 29 01 : AND #$01 $fe5d f0 05 : BEQ B_isnot_on B_is_on: $fe5f a9 ec: : LDA #$ec ←元は#$ef $fe61 4c 66 fe : JMP $fe74 (DATA_SET) B_isnot_on: $fe64 a9 ee: : LDA #$ee ←元は#$ef DATA_SET: $fe66 85 1b : STA $1b $fe68 60 : rts ■0001FE79〜 $6Eセット用 16バイト $fe69 a5 bf : LDA $bf $fe6b 29 01 : AND #$01 $fe6d f0 05 : BEQ B_isnot_on B_is_on: $fe6f a9 04: : LDA #$04 ←元は#$10 $fe71 4c 76 fe : JMP $fe76 (DATA_SET) B_isnot_on: $fe74 a9 08: : LDA #$08 ←元は#$10 DATA_SET: $fe76 85 6e : STA $6e $fe78 60 : rts ■0001FE89〜 上ボタン押下裏ルーチン 57バイト $fe79 48 : PHA $fe7a fe 00 06 : INC $0600,X $fe7d fe 00 06 : INC $0600,X $fe80 fe 04 06 : INC $0604,X $fe83 fe 04 06 : INC $0604,X $fe86 fe 08 06 : INC $0608,X $fe89 fe 08 06 : INC $0608,X $fe8c fe 0c 06 : INC $060c,X $fe8f fe 0c 06 : INC $060c,X $fe92 a5 bf : LDA $bf $fe94 29 01 : AND #$01 $fe96 f0 18 : BEQ B_isnot_on B_is_on: $fe98 fe 00 06 : INC $0600,X $fe9b fe 00 06 : INC $0600,X $fe9e fe 04 06 : INC $0604,X $fea1 fe 04 06 : INC $0604,X $fea4 fe 08 06 : INC $0608,X $fea7 fe 08 06 : INC $0608,X $feaa fe 0c 06 : INC $060c,X $fead fe 0c 06 : INC $060c,X B_isnot_on: $feb0 68 : PLA $feb1 60 : rts ■0001FEC2〜 左ボタン押下裏ルーチン 57バイト $feb2 48 : PHA $feb3 fe 03 06 : INC $0603,X $feb6 fe 03 06 : INC $0603,X $feb9 fe 07 06 : INC $0607,X $febc fe 07 06 : INC $0607,X $febf fe 0b 06 : INC $060b,X $fec2 fe 0b 06 : INC $060b,X $fec5 fe 0f 06 : INC $060f,X $fec8 fe 0f 06 : INC $060f,X $fecb a5 bf : LDA $bf $fecd 29 01 : AND #$01 $fecf f0 18 : BEQ B_isnot_on B_is_on: $fed1 fe 03 06 : INC $0603,X $fed4 fe 03 06 : INC $0603,X $fed7 fe 07 06 : INC $0607,X $feda fe 07 06 : INC $0607,X $fedd fe 0b 06 : INC $060b,X $fee0 fe 0b 06 : INC $060b,X $fee3 fe 0f 06 : INC $060f,X $fee6 fe 0f 06 : INC $060f,X B_isnot_on: $fee9 68 : PLA $feea 60 : rts ■0001FEFB〜 下ボタン押下裏ルーチン 57バイト $feeb 48 : PHA $feec de 00 06 : DEC $0600,X $feef de 00 06 : DEC $0600,X $fef2 de 04 06 : DEC $0604,X $fef5 de 04 06 : DEC $0604,X $fef8 de 08 06 : DEC $0608,X $fefb de 08 06 : DEC $0608,X $fefe de 0c 06 : DEC $060c,X $ff01 de 0c 06 : DEC $060c,X $ff04 a5 bf : LDA $bf $ff06 29 01 : AND #$01 $ff08 f0 18 : BEQ B_isnot_on B_is_on: $ff0a de 00 06 : DEC $0600,X $ff0d de 00 06 : DEC $0600,X $ff10 de 04 06 : DEC $0604,X $ff13 de 04 06 : DEC $0604,X $ff16 de 08 06 : DEC $0608,X $ff19 de 08 06 : DEC $0608,X $ff1c de 0c 06 : DEC $060c,X $ff1f de 0c 06 : DEC $060c,X B_isnot_on: $ff22 68 : PLA $ff23 60 : rts ■0001FF34〜 右ボタン押下裏ルーチン 57バイト $ff24 48 : PHA $ff25 de 03 06 : DEC $0603,X $ff28 de 03 06 : DEC $0603,X $ff2b de 07 06 : DEC $0607,X $ff2e de 07 06 : DEC $0607,X $ff31 de 0b 06 : DEC $060b,X $ff34 de 0b 06 : DEC $060b,X $ff37 de 0f 06 : DEC $060f,X $ff3a de 0f 06 : DEC $060f,X $ff3d a5 bf : LDA $bf $ff3f 29 01 : AND #$01 $ff41 f0 18 : BEQ B_isnot_on B_is_on: $ff43 de 03 06 : DEC $0603,X $ff46 de 03 06 : DEC $0603,X $ff49 de 07 06 : DEC $0607,X $ff4c de 07 06 : DEC $0607,X $ff4f de 0b 06 : DEC $060b,X $ff52 de 0b 06 : DEC $060b,X $ff55 de 0f 06 : DEC $060f,X $ff58 de 0f 06 : DEC $060f,X B_isnot_on: $ff5b 68 : PLA $ff5c 60 : rts ■0001FF6d〜 (Bボタンを$bfに保管) $ff5d-> 20 50 cb : JSR $cb50 キー入力受け付け $ff60-> 48 : PHA $ff61-> a5 6d : LDA $6d $6d|$6e==0ならば、スクロール中ではない $ff63-> 05 6e : ORA $6e スクロール中に定数など変更すると多分暴走? $ff65-> f0 03 : BEQ CHANGE_B_FLAG $ff67-> 4c 79 ff : JMP $ff79 (NOTHING_TO_DO) CHANGE_B_FLAG: $ff6a-> a5 17 : LDA $17 A=$17 $ff6c-> 29 40 : AND #$40 A=A AND #$40 Bボタンの情報 $ff6e-> f0 05 : BEQ $ff75 =0なら押されてない $ff70-> a9 01 : LDA #$01 押されてたら1 $ff72-> 4c 77 ff $ff75-> a9 00 : LDA #$00 押されてなかったら0 $ff77-> 85 bf : STA $bf NOTHING_TO_DO: $ff79-> 68 : PLA $ff7a-> 60 : rts ■0001FF8b〜 ($6d)をいい感じにする裏ルーチン 25バイト $ff7b 48 : PHA $ff7c c6 6d : DEC $6d $ff7e c6 6d : DEC $6d $ff80 a5 bf : LDA $bf $ff82 29 01 : AND #$01 $ff84 f0 04 : BEQ B_isnot_on B_is_on: $ff86 c6 6d : DEC $6d $ff88 c6 6d : DEC $6d B_isnot_on: $ff8a d0 04 : BNE $ff90 $ff8c 68 : PLA $ff8d 4c 75 d8 : JMP $d875 $ff90 68 : PLA $ff91 4c 7c d8 : JMP $d87c ■0001FFA4〜 下移動時のスクロール用裏ルーチン 19バイト $ff94 e6 1b : INC $1b $ff96 e6 1b : INC $1b $ff98 a5 bf : LDA $bf $ff9a 29 01 : AND #$01 $ff9c f0 04 : BEQ B_isnot_on B_is_on: $ff9e e6 1b : INC $1b $ffa0 e6 1b : INC $1b B_isnot_on: $ffa2 a5 1b : LDA $1b $ffa4 4c 53 d8 : JMP $d853 ■0001FFB7〜 上移動時のスクロール用裏ルーチン 19バイト $ffa7 48 : PHA $ffa8 c6 1b : DEC $1b $ffaa c6 1b : DEC $1b $ffac a5 bf : LDA $bf $ffae 29 01 : AND #$01 $ffb0 f0 04 : BEQ B_isnot_on B_is_on: $ffb2 c6 1b : DEC $1b $ffb4 c6 1b : DEC $1b B_isnot_on: $ffb6 68 : PLA $ffb7 4c 71 d8 : JMP $d871 ■0001FFCA〜 右移動時のスクロール用裏ルーチン 19バイト $ffba e6 1a : INC $1a $ffbc e6 1a : INC $1a $ffbe a5 bf : LDA $bf $ffc0 29 01 : AND #$01 $ffc2 f0 04 : BEQ B_isnot_on B_is_on: $ffc4 e6 1a : INC $1a $ffc6 e6 1a : INC $1a B_isnot_on: $ffc8 a5 1a : LDA $1a $ffca 4c 7f d7 : JMP $d77F ■0001FFDD〜 左移動時のスクロール用裏ルーチン 19バイト $ffcd 48 : PHA $ffce c6 1a : DEC $1a $ffd0 c6 1a : DEC $1a $ffd2 a5 bf : LDA $bf $ffd4 29 01 : AND #$01 $ffd6 f0 04 : BEQ B_isnot_on B_is_on: $ffd8 c6 1a : DEC $1a $ffda c6 1a : DEC $1a B_isnot_on: $ffdc 68 : PLA $ffdd 4c 84 d7 : JMP $d784