ROM $5EB6(PC $DEB6)から移動消費配列取得ルーチン 各チェック方向プログラムジャンプアドレスヘッダ プログラム自体は$5E43(PC $DE43)から開始 ================================================================================================================================================================ ================================================================================================================================================================ [ 各チェック方向プログラムジャンプアドレスヘッダ ] C0 DE ; 00 ; 開始 ; ↑ チェック      ; 上、下、左、右の順にチェックしていく ← → ↓ --------------------------------------------------------------------------------------------- FD DF ; 02 ; 上 ; ↑ チェック      ; 上、左、右の順にチェックしていく ← → --------------------------------------------------------------------------------------------- EC E0 ; 04 ; 右 ; ↑ チェック      ; 上、下、右の順にチェックしていく → ↓ --------------------------------------------------------------------------------------------- DB E1 ; 06 ; 下 ; ← → チェック      ; 下、左、右の順にチェックしていく ↓ --------------------------------------------------------------------------------------------- CA E2 ; 08 ; 左 ; ↑ チェック      ; 上、下、左の順にチェックしていく ← ↓ =============================================================================================================================================================== =============================================================================================================================================================== ・使用メモリ解析 7E:000B=座標読み込み順フラグ 7E:000F=移動ユニット移動力 7E:0015=座標データ書き込みインデックス 7E:0017=座標データ読み込みインデックス ------------------------------------------------------------ 7E:1038 〜 7E:12B7まで4バイトずつ  座標チェックデータ 一時格納メモリA 7E:12B8 〜 7E:1537まで4バイトずつ  座標チェックデータ 一時格納メモリB ------------------------------------------------------------ 7E:6FCB〜 ;マップ上ユニット存在チェックバッファ 7E:0019 ; チェック基準座標の上 7E:001B ; チェック基準座標の下 7E:001D ; チェック基準座標の左 7E:001F ; チェック基準座標の右 ------------------------------------------------------------ 7E:7BCB〜 ;マップチップ地形ID配置 RAMアドレス 7E:0021 ; チェック基準座標の上 7E:0023 ; チェック基準座標の下 7E:0025 ; チェック基準座標の左 7E:0027 ; チェック基準座標の右 --------------------------------------- 7E:A937〜 ;マップ上 移動消費配列 7E:0029 ; チェック基準座標の上 7E:002B ; チェック基準座標の下 7E:002D ; チェック基準座標の左 7E:0032 ; チェック基準座標の右 --------------------------------------------------------- ============================================================================================================================================================= ============================================================================================================================================================= ============================================================================================================================================================= [ ここからルーチン開始 ] $80/DE43 E6 0F INC $0F [$00:000F] ; 000F++ ; 移動力+1 $80/DE45 64 0B STZ $0B [$00:000B] ; 000B 0000 $80/DE47 A9 80 02 LDA #$0280 ; 0280 $80/DE4A 85 17 STA $17 [$00:0017] ; 0017 0280 $80/DE4C A9 00 00 LDA #$0000 ; 0000 $80/DE4F 85 15 STA $15 [$00:0015] ; 0015 0000 $80/DE51 A6 0D LDX $0D [$00:000D] ; $80/DE53 A9 00 FF LDA #$FF00 ; FF00 $80/DE56 9D 37 A9 STA $A937,x ; 移動消費配列 起点座標格納 $80/DE59 8A TXA ; $80/DE5A A4 15 LDY $15 [$00:0015] ; 0015 0000 ; Y=0000 $80/DE5C 99 38 10 STA $1038,y ; $80/DE5F A9 00 00 LDA #$0000 ; 0000 $80/DE62 99 3B 10 STA $103B,y[$7E:103B] ; 103B 0000 $80/DE65 99 3A 10 STA $103A,y[$7E:103A] ; 103A 0000 $80/DE68 A9 FF FF LDA #$FFFF ; FFFF $80/DE6B 99 3E 10 STA $103E,y ; 次の座標チェックデータの「座標方向」に格納 ------------------------------------------------------------------------------------- [ 読み込み順チェック ] $80/DE6E A5 0B LDA $0B [$00:000B] ;-------------------------------------$DE6E $80/DE70 49 01 00 EOR #$0001 ; 座標読み込み順チェック ; $80/DE73 F0 0E BEQ $0E [$DE83] ; ゼロならジャンプ---------------------- ;IF 000B=$0000 : 0015=$0000 : 0017=$0280 ;IF 000B=$0001 : 0015=$0280 : 0017=$0000 ------------------------------------------------------------------------------------------------------------------------------------------- ;000B=0001の場合 $80/DE75 85 0B STA $0B [$00:000B] ; 座標読み込み順格納 $80/DE77 A2 00 00 LDX #$0000 ; X=0000 $80/DE7A 86 17 STX $17 [$00:0017] ; 0017 $0000 $80/DE7B A2 80 02 LDX #$0280 ; X=0280 $80/DE7F 86 15 STX $15 [$00:0015] ; 0015 $0280 $80/DE81 80 0C BRA $0C [$DE8F] ; ------------------------------------------------------------------------------------------------------------------------------------------- ;000B=0000の場合 $80/DE83 85 0B STA $0B [$00:000B] $80/DE85 A2 80 02 LDX #$0280 ; X=280 $80/DE88 86 17 STX $17 [$00:0017] ; 0017 $0280 $80/DE8A A2 00 00 LDX #$0000 ; X=0000 $80/DE8D 86 15 STX $15 [$00:0015] ; 0015 $0000 ------------------------------------------------------------------------------------------------------------------------------------------- [ 読み込み終了チェック ] $80/DE8F A6 17 LDX $17 [$00:0017] $80/DE91 BD 3A 10 LDA $103A,x ; 座標チェック方向を読み込み $80/DE94 C9 FF FF CMP #$FFFF ; $80/DE97 D0 03 BNE $03 [$DE9C] ; $FFFFでなければ$DE9Cにジャンプ ; チェック続行 -------------------------------- $80/DE99 4C CB E3 JMP $E3CB [$7E:E3CB] ;------------------------$E3CB 移動消費配列チェック終了 $80/DE9C A6 17 LDX $17 [$00:0017] ;--------------------------------------------------------------------$DE9C $80/DE9E BD 3A 10 LDA $103A,x ; 読み込み1巡終了チェック $80/DEA1 C9 FF FF CMP #$FFFF ; $80/DEA4 D0 03 BNE $03 [$DEA9] ; $FFFFでなければ$D6A9にジャンプ---------------------- $80/DEA6 4C 6E DE JMP $DE6E [$7E:DE6E] ; 読み込みが1巡終了したなら$DE6Eにジャンプ--------------------------- $80/DEA9 29 FF 00 AND #$00FF ; チェック座標方向取得 ---------------------------$DEA9 $80/DEAC AA TAX ; X=チェック座標方向 $80/DEAD BF B6 DE 80 LDA $80DEB6,x ; 座標チェック方向ごとのルーチンへのジャンプアドレスを取得 $80/DEB1 85 35 STA $35 [$00:0035] ; ジャンプアドレス格納 $80/DEB3 6C 35 00 JMP ($0035) ; 座標チェック方向ごとのルーチンにジャンプ =============================================================================================================================================================== =============================================================================================================================================================== [ 方向=00 ;上下左右チェックルーチン ] ; 上,下,左,右の順にチェックしていく ------------------------------------------------- ; 上方向チェック開始 ------------------------------------------------- $80/DEC0 E2 20 SEP #$20 $80/DEC2 A6 17 LDX $17 [$00:0017] ; $80/DEC4 BC 38 10 LDY $1038,x ; INDEX Yにチェック座標をロード $80/DEC7 A5 13 LDA $13 [$00:0013] ; $80/DEC9 F0 0D BEQ $0D [$DED8] ; $80/DECB 7B TDC $80/DECC B1 19 LDA ($19),y ; マップ上 ユニット存在チェック           上 $80/DECE F0 08 BEQ $08 [$DED8] ; ユニットがいなければジャンプ ------------------------- $80/DED0 29 C0 AND #$C0 $80/DED2 AA TAX $80/DED3 BD CA 51 LDA $51CA,x ; $80/DED6 D0 38 BNE $38 [$DF10] ; 移動に障害となるユニットがいればジャンプ $80/DED8 C2 20 REP #$20 ; $80/DEDA B1 21 LDA ($21),y ; 上側座標の地形IDをロード $80/DEDC 29 FF 00 AND #$00FF $80/DEDF AA TAX $80/DEE0 E2 20 SEP #$20 $80/DEE2 BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/DEE5 30 29 BMI $29 [$DF10] ; 移動不可ならジャンプ $80/DEE7 18 CLC $80/DEE8 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/DEEB D1 29 CMP ($29),y ; 上側座標の移動消費配列と比較 (値が同じかそれより大きければジャンプ) $80/DEED B0 21 BCS $21 [$DF10] ; 上側座標の移動消費 以上ならばジャンプ $80/DEEF C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/DEF1 B0 1D BCS $1D [$DF10] ; 移動力より大きければ(移動不可ならば) $DF10にジャンプ ---------------------- $80/DEF3 A6 15 LDX $15 [$00:0015] ; 書き込みインデックスをINDEX Xにロード $80/DEF5 91 29 STA ($29),y ; 指定RAMアドレスに移動消費配列を格納 $80/DEF7 9D 3B 10 STA $103B,x ; 座標チェックバッファに移動消費配列を格納 $80/DEFA C2 20 REP #$20 $80/DEFC 98 TYA $80/DEFD 18 CLC $80/DEFE 65 38 ADC $38 [$00:0038] ; 座標を加算 ;Y座標を-1 ; 上方向の座標を算出 $80/DF00 9D 38 10 STA $1038,x ; 座標チェックバッファにチェック座標を格納 $80/DF03 E2 20 SEP #$20 $80/DF05 A9 02 LDA #$02 ; 02 ;チェック座標 座標方向 ;上 $80/DF07 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/DF0A E8 INX $80/DF0B E8 INX $80/DF0C E8 INX $80/DF0D E8 INX $80/DF0E 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 下方向チェック開始 ------------------------------------------------- $80/DF10 A6 17 LDX $17 [$00:0017] ;-------------------------------------------------------------------------------------- $80/DF12 BC 38 10 LDY $1038,x ; INDEX Yにチェック座標をロード $80/DF15 A5 13 LDA $13 [$00:0013] ; $80/DF17 F0 0D BEQ $0D [$DF26] ; $80/DF19 7B TDC $80/DF1A B1 1B LDA ($1B),y ; ユニット存在チェック               $80/DF1C F0 08 BEQ $08 [$DF26] ; チェック座標にユニットがいなければジャンプ $80/DF1E 29 C0 AND #$C0 ; 敵、またはNPCチェック $80/DF20 AA TAX $80/DF21 BD CA 51 LDA $51CA,x ; $80/DF24 D0 38 BNE $38 [$DF5E] ; 敵、またはNPCがいればジャンプ(移動不可)------------------------------------- $80/DF26 C2 20 REP #$20 $80/DF28 B1 23 LDA ($23),y ; チェック座標の地形IDをロード $80/DF2A 29 FF 00 AND #$00FF $80/DF2D AA TAX $80/DF2E E2 20 SEP #$20 $80/DF30 BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/DF33 30 29 BMI $29 [$DF5E] ; 移動不可ならジャンプ $80/DF35 18 CLC $80/DF36 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/DF39 D1 2B CMP ($2B),y ; $80/DF3B B0 21 BCS $21 [$DF5E] ; $80/DF3D C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/DF3F B0 1D BCS $1D [$DF5E] ; チェック先が移動不可なら$DF5Eにジャンプ (次に下はチェックしない)---------------------- $80/DF41 A6 15 LDX $15 [$00:0015] ; $80/DF43 91 2B STA ($2B),y ; 指定RAMアドレスに移動消費配列を格納 $80/DF45 9D 3B 10 STA $103B,x ; $80/DF48 C2 20 REP #$20 $80/DF4A 98 TYA $80/DF4B 18 CLC $80/DF4C 65 3B ADC $3B [$00:003B] ; $80/DF4E 9D 38 10 STA $1038,x ; $80/DF51 E2 20 SEP #$20 $80/DF53 A9 06 LDA #$06 ; 06 ;チェック座標 座標方向 ;下 $80/DF55 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/DF58 E8 INX $80/DF59 E8 INX $80/DF5A E8 INX $80/DF5B E8 INX $80/DF5C 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 左方向チェック開始 ------------------------------------------------- $80/DF5E A6 17 LDX $17 [$00:0017] ;-------------------------------------------------------------------------------------------------------- $80/DF60 BC 38 10 LDY $1038,x ; $80/DF63 A5 13 LDA $13 [$00:0013] ; $80/DF65 F0 0D BEQ $0D [$DF74] ; $80/DF67 7B TDC $80/DF68 B1 1D LDA ($1D),y ; ユニット存在チェック              $80/DF6A F0 08 BEQ $08 [$DF74] ; チェック座標にユニットがいなければジャンプ $80/DF6C 29 C0 AND #$C0 $80/DF6E AA TAX $80/DF6F BD CA 51 LDA $51CA,x ; $80/DF72 D0 38 BNE $38 [$DFAC] ; $80/DF74 C2 20 REP #$20 $80/DF76 B1 25 LDA ($25),y ; 指定座標の地形IDをロード $80/DF78 29 FF 00 AND #$00FF $80/DF7B AA TAX $80/DF7C E2 20 SEP #$20 $80/DF7E BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/DF81 30 29 BMI $29 [$DFAC] ; 移動不可地形なら$DFACにジャンプ $80/DF83 18 CLC $80/DF84 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/DF87 D1 2D CMP ($2D),y ; $80/DF89 B0 21 BCS $21 [$DFAC] ; $80/DF8B C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/DF8D B0 1D BCS $1D [$DFAC] ; 移動力が足りなければ$DFACにジャンプ (次に左はチェックしない)---------------------- $80/DF8F A6 15 LDX $15 [$00:0015] $80/DF91 91 2D STA ($2D),y ; 指定RAMアドレスに移動消費配列を格納 $80/DF93 9D 3B 10 STA $103B,x ; $80/DF96 C2 20 REP #$20 $80/DF98 98 TYA $80/DF99 18 CLC $80/DF9A 65 3E ADC $3E [$00:003E] ; $80/DF9C 9D 38 10 STA $1038,x ; $80/DF9F E2 20 SEP #$20 $80/DFA1 A9 08 LDA #$08 ; 08 ;チェック座標 座標方向 ;左 $80/DFA3 9D 3A 10 STA $103A,x ; チェック方向を格納 $80/DFA6 E8 INX $80/DFA7 E8 INX $80/DFA8 E8 INX $80/DFA9 E8 INX $80/DFAA 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 右方向チェック開始 ------------------------------------------------- $80/DFAC A6 17 LDX $17 [$00:0017] ;-------------------------------------------------------------------------------------------------------------- $80/DFAE BC 38 10 LDY $1038,x ; $80/DFB1 A5 13 LDA $13 [$00:0013] ; $80/DFB3 F0 0D BEQ $0D [$DFC2] ; $80/DFB5 7B TDC $80/DFB6 B1 1F LDA ($1F),y ; ユニット存在チェック               $80/DFB8 F0 08 BEQ $08 [$DFC2] ; チェック座標にユニットがいなければジャンプ $80/DFBA 29 C0 AND #$C0 $80/DFBC AA TAX $80/DFBD BD CA 51 LDA $52CA,x ; $80/DFC0 D0 38 BNE $38 [$DFFA] ; $80/DFC2 C2 20 REP #$20 $80/DFC4 B1 27 LDA ($27),y ; 指定座標の地形IDをロード $80/DFC6 29 FF 00 AND #$00FF $80/DFC9 AA TAX $80/DFCA E2 20 SEP #$20 $80/DFCC BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/DFCF 30 29 BMI $29 [$DFFA] ; 移動不可ならジャンプ $80/DFD1 18 CLC $80/DFD2 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/DFD5 D1 32 CMP ($32),y ; $80/DFD7 B0 21 BCS $21 [$DFFA] ; $80/DFD9 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/DFDB B0 1D BCS $1D [$DFFA] ; 移動力が足りなければ$DFFAにジャンプ (次に右はチェックしない)---------------------- $80/DFDD A6 15 LDX $15 [$00:0015] $80/DFDF 91 32 STA ($32),y ;指定RAMアドレスに移動消費配列を格納 $80/DFE1 9D 3B 10 STA $103B,x ; $80/DFE4 C2 20 REP #$20 $80/DFE6 98 TYA $80/DFE7 18 CLC $80/DFE8 65 41 ADC $41 [$00:0041] ; $80/DFEA 9D 38 10 STA $1038,x ; $80/DFED E2 20 SEP #$20 $80/DFEF A9 04 LDA #$04 ; 04 ;チェック座標 座標方向 ;右 $80/DFF1 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/DFF4 E8 INX $80/DFF5 E8 INX $80/DFF6 E8 INX $80/DFF7 E8 INX $80/DFF8 86 15 STX $15 [$00:0015] ; $80/DFFA 4C B6 E3 JMP $E3B6 [$7E:E3B6] ; 上下左右チェック終了 $E3B6にジャンプ --------------------------- =============================================================================================================================================================== =============================================================================================================================================================== [ 方向=02 ; 上方向チェックルーチン ] ; 上、左、右の順にチェックしていく ------------------------------------------------- ; 上方向チェック開始 ------------------------------------------------- $80/DFFD E2 20 SEP #$20 $80/DFFF A6 17 LDX $17 [$00:0017] ; $80/E001 BC 38 10 LDY $1038,x ; INDEX Y にチェック座標をロード $80/E004 A5 13 LDA $13 [$00:0013] ; $80/E006 F0 0D BEQ $0D [$E015] ; $80/E008 7B TDC $80/E009 B1 19 LDA ($19),y ; ユニット存在チェック           $80/E00B F0 08 BEQ $08 [$E015] ; チェック座標にユニットがいなければジャンプ $80/E00D 29 C0 AND #$C0 ; $80/E00F AA TAX $80/E010 BD CA 51 LDA $51CA,x ; $80/E013 D0 38 BNE $38 [$E04D] ; $80/E015 C2 20 REP #$20 $80/E017 B1 21 LDA ($21),y ; 指定座標の地形IDをロード $80/E019 29 FF 00 AND #$00FF $80/E01C AA TAX $80/E01D E2 20 SEP #$20 $80/E01F BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E022 30 29 BMI $29 [$E04D] ; 移動不可ならジャンプ $80/E024 18 CLC $80/E025 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E028 D1 29 CMP ($29),y ; $80/E02A B0 21 BCS $21 [$E04D] ; $80/E02C C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E02E B0 1D BCS $1D [$E04D] ; 移動力が足りなければ$E04Dにジャンプ (次に上はチェックしない)---------------------- $80/E030 A6 15 LDX $15 [$00:0015] ; $80/E032 91 29 STA ($29),y ; 指定RAMアドレスに移動消費配列を格納 $80/E034 9D 3B 10 STA $103B,x ; $80/E037 C2 20 REP #$20 $80/E039 98 TYA $80/E03A 18 CLC $80/E03B 65 38 ADC $38 [$00:0038] ; $80/E03D 9D 38 10 STA $1038,x ; $80/E040 E2 20 SEP #$20 $80/E042 A9 02 LDA #$02 ; 02 ;チェック座標方向 ; 上 $80/E044 9D 3A 10 STA $103A,x ; チェック座標の方向を格納 $80/E047 E8 INX $80/E048 E8 INX $80/E049 E8 INX $80/E04A E8 INX $80/E04B 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 左方向チェック開始 ------------------------------------------------- $80/E04D A6 17 LDX $17 [$00:0017] ;---------------------------------------------------------------------------------------------------- $80/E04F BC 38 10 LDY $1038,x ; $80/E052 A5 13 LDA $13 [$00:0013] ; $80/E054 F0 0D BEQ $0D [$E063] ; $80/E056 7B TDC $80/E057 B1 1D LDA ($1D),y ; ユニット存在チェック       $80/E059 F0 08 BEQ $08 [$E063] ; チェック座標にユニットがいなければジャンプ $80/E05B 29 C0 AND #$C0 $80/E05D AA TAX $80/E05E BD CA 51 LDA $52CA,x ; $80/E061 D0 38 BNE $38 [$E09B] ; $80/E063 C2 20 REP #$20 $80/E065 B1 25 LDA ($25),y ; 指定座標の地形IDをロード $80/E067 29 FF 00 AND #$00FF $80/E06A AA TAX $80/E06B E2 20 SEP #$20 $80/E06D BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E070 30 29 BMI $29 [$E09B] ; 移動不可ならジャンプ $80/E072 18 CLC $80/E073 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E076 D1 2D CMP ($2D),y ; $80/E078 B0 21 BCS $21 [$E09B] ; $80/E07A C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E07C B0 1D BCS $1D [$E09B] ; チェック先が移動不可なら$E09Bにジャンプ (次に左はチェックしない)---------------------- $80/E07E A6 15 LDX $15 [$00:0015] ; $80/E080 91 2D STA ($2D),y ; 指定RAMアドレスに移動消費配列を格納 $80/E082 9D 3B 10 STA $103B,x ; $80/E085 C2 20 REP #$20 $80/E087 98 TYA $80/E088 18 CLC $80/E089 65 3E ADC $3E [$00:003E] ; $80/E08B 9D 38 10 STA $1038,x ; $80/E08E E2 20 SEP #$20 $80/E090 A9 08 LDA #$08 ; 08 ;チェック座標 座標方向 ;上 $80/E092 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E095 E8 INX $80/E096 E8 INX $80/E097 E8 INX $80/E098 E8 INX $80/E099 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 右方向チェック開始 ------------------------------------------------- $80/E09B A6 17 LDX $17 [$00:0017] ;---------------------------------------------------------------------------------------------------------------- $80/E09D BC 38 10 LDY $1038,x ; $80/E0A0 A5 13 LDA $13 [$00:0013] ; $80/E0A2 F0 0D BEQ $0D [$E0B1] ; $80/E0A4 7B TDC $80/E0A5 B1 1F LDA ($1F),y ; ユニット存在チェック $80/E0A7 F0 08 BEQ $08 [$E0B1] ; チェック座標にユニットがいなければジャンプ $80/E0A9 29 C0 AND #$C0 $80/E0AB AA TAX $80/E0AC BD CA 51 LDA $51CA,x ; $80/E0AF D0 38 BNE $38 [$E0E9] ; $80/E0B1 C2 20 REP #$20 $80/E0B3 B1 27 LDA ($27),y ; 指定座標の地形IDをロード $80/E0B5 29 FF 00 AND #$00FF $80/E0B8 AA TAX $80/E0B9 E2 20 SEP #$20 $80/E0BB BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E0BE 30 29 BMI $29 [$E0E9] ; 移動不可ならジャンプ $80/E0C0 18 CLC $80/E0C1 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E0C4 D1 32 CMP ($29),y ; $80/E0C6 B0 21 BCS $21 [$E0E9] ; $80/E0C8 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E0CA B0 1D BCS $1D [$E0E9] ; チェック先が移動不可なら$E0E9にジャンプ (次に右はチェックしない)---------------------- $80/E0CC A6 15 LDX $15 $80/E0CE 91 32 STA ($32),y ; 指定RAMアドレスに移動消費配列を格納 $80/E0D0 9D 3B 10 STA $103B,x $80/E0D3 C2 20 REP #$20 $80/E0D5 98 TYA $80/E0D6 18 CLC $80/E0D7 65 41 ADC $41 [$00:0041] ; $80/E0D9 9D 38 10 STA $1038,x ; $80/E0DC E2 20 SEP #$20 $80/E0DE A9 04 LDA #$04 ; 04 ;チェック座標 座標方向 ;右 $80/E0E0 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E0E3 E8 INX $80/E0E4 E8 INX $80/E0E5 E8 INX $80/E0E6 E8 INX $80/E0E7 86 15 STX $15 [$00:0015] ; $80/E0E9 4C B6 E3 JMP $E3B6 [$7E:E3B6] ; 上方向チェック終了 $E3B6にジャンプ --------------------------- =============================================================================================================================================================== =============================================================================================================================================================== [ 方向=04 ; 右方向チェックルーチン ]  ; 上、下、左の順にチェックしていく ------------------------------------------------- ; 上方向チェック開始 ------------------------------------------------- $80/E0EC E2 20 SEP #$20 $80/E0EE A6 17 LDX $17 [$00:0017] ; $80/E0F0 BC 38 10 LDY $1038,x ; INDEX Yにチェック座標をロード $80/E0F3 A5 13 LDA $13 [$00:0013] ; $80/E0F5 F0 0D BEQ $0D [$E104] ; $80/E0F7 7B TDC $80/E0F8 B1 19 LDA ($19),y ; ユニット存在チェック   上 $80/E0FA F0 08 BEQ $08 [$E104] ; チェック座標にユニットがいなければジャンプ $80/E0FC 29 C0 AND #$C0 ; $80/E0FE AA TAX $80/E0FF BD CA 51 LDA $51CA,x ; $80/E102 D0 38 BNE $38 [$E13C] ; $80/E104 C2 20 REP #$20 $80/E106 B1 21 LDA ($21),y ; 指定座標の地形IDをロード $80/E108 29 FF 00 AND #$00FF $80/E10B AA TAX $80/E10C E2 20 SEP #$20 $80/E10E BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E111 30 29 BMI $29 [$E13C] ; 移動不可ならジャンプ $80/E113 18 CLC $80/E114 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E117 D1 29 CMP ($29),y ; $80/E119 B0 21 BCS $21 [$E13C] ; $80/E11B C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E11D B0 1D BCS $1D [$E13C] ; $80/E11F A6 15 LDX $15 [$00:0015] ; $80/E121 91 29 STA ($29),y ; 指定RAMアドレスに移動消費配列を格納 $80/E123 9D 3B 10 STA $103B,x ; $80/E126 C2 20 REP #$20 $80/E128 98 TYA $80/E129 18 CLC $80/E12A 65 38 ADC $38 [$00:0038] ; $80/E12C 9D 38 10 STA $1038,x ; $80/E12F E2 20 SEP #$20 $80/E131 A9 02 LDA #$02 ; 02 ;チェック座標 座標方向 ;上 $80/E133 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E136 E8 INX $80/E137 E8 INX $80/E138 E8 INX $80/E139 E8 INX $80/E13A 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 下方向チェック開始 ------------------------------------------------- $80/E13C A6 17 LDX $17 [$00:0017] ;----------------------------------------------------------------------------------------------------- $80/E13E BC 38 10 LDY $1038,x ; $80/E141 A5 13 LDA $13 [$00:0013] ; $80/E143 F0 0D BEQ $0D [$E152] ; $80/E145 7B TDC $80/E146 B1 1B LDA ($1B),y ; ユニット存在チェック     $80/E148 F0 08 BEQ $08 [$E152] ; チェック座標にユニットがいなければジャンプ $80/E14A 29 C0 AND #$CO ; $80/E14C AA TAX $80/E14D BD CA 51 LDA $52CA,x ; $80/E150 D0 38 BNE $38 [$EA8A] ; $80/E152 C2 20 REP #$20 $80/E154 B1 23 LDA ($23),y ; 指定座標の地形IDをロード $80/E156 29 FF 00 AND #$00FF $80/E159 AA TAX $80/E15A E2 20 SEP #$20 $80/E15C BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E15F 30 29 BMI $29 [$E18A] ; 移動不可ならジャンプ $80/E161 18 CLC $80/E162 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E165 D1 2B CMP ($2B),y ; $80/E167 B0 21 BCS $21 [$E18A] ; $80/E169 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E16B B0 1D BCS $1D [$EA8A] ; $80/E16D A6 15 LDX $15 [$00:0015] $80/E16F 91 2B STA ($2B),y ; 指定RAMアドレスに移動消費配列を格納 $80/E171 9D 3B 10 STA $103B,x ; $80/E174 C2 20 REP #$20 $80/E176 98 TYA $80/E177 18 CLC $80/E178 65 3B ADC $3B [$00:003B] ; $80/E17A 9D 38 10 STA $1038,x ; $80/E17D E2 20 SEP #$20 $80/E17F A9 06 LDA #$06 ; 06 ; チェック座標 座標方向 ; 下 $80/E181 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E184 E8 INX $80/E185 E8 INX $80/E186 E8 INX $80/E187 E8 INX $80/E188 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 左方向チェック開始 ------------------------------------------------- $80/E18A A6 17 LDX $17 [$00:0017] ;------------------------------------------------------------------------------------------------------- $80/E18C BC 38 10 LDY $1038,x ; $80/E18F A5 13 LDA $13 [$00:0013] ; $80/E191 F0 0D BEQ $0D [$E1A0] ; $80/E193 7B TDC $80/E194 B1 1F LDA ($1F),y ; ユニット存在チェック    $80/E196 F0 08 BEQ $08 [$E1A0] ; チェック座標にユニットがいなければジャンプ $80/E198 29 C0 AND #$C0 $80/E19A AA TAX $80/E19B BD CA 51 LDA $52CA,x ; $80/E19E D0 38 BNE $38 [$E1D8] $80/E1A0 C2 20 REP #$20 $80/E1A2 B1 27 LDA ($27),y ; 指定座標の地形IDをロード $80/E1A4 29 FF 00 AND #$00FF $80/E1A7 AA TAX $80/E1A8 E2 20 SEP #$20 $80/E1AA BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E1AD 30 29 BMI $29 [$E1D8] ; 移動不可ならジャンプ $80/E1AF 18 CLC $80/E1B0 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E1B3 D1 32 CMP ($32),y ; $80/E1B5 B0 21 BCS $21 [$E1D8] ; $80/E1B7 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E1B9 B0 1D BCS $1D [$E1D8] ; $80/E1BB A6 15 LDX $15 [$00:0015] $80/E1BD 91 32 STA ($32),y ; 指定RAMアドレスに移動消費配列を格納 $80/E1BF 9D 3B 10 STA $103B,x ; $80/E1C2 C2 20 SEP #$20 $80/E1C4 98 TYA $80/E1C5 18 CLC $80/E1C6 65 41 ADC $41 [$00:0041] ; $80/E1C8 9D 38 10 STA $1038,x ; $80/E1CB E2 20 SEP #$20 $80/E1CD A9 04 LDA #$04 ; 04  ;チェック座標 座標方向 ; 左 $80/E1CF 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E1D2 E8 INX $80/E1D3 E8 INX $80/E1D4 E8 INX $80/E1D5 E8 INX $80/E1D6 86 15 STX $15 [$00:0015] $80/E1D8 4C B6 E3 JMP $E3B6 [$7E:E3B6] ; 右方向チェック終了 $E3B6にジャンプ --------------------------- =============================================================================================================================================================== =============================================================================================================================================================== [ 方向=06 ; 下方向チェックルーチン ] ; 下、左、右の順にチェックしていく ------------------------------------------------- ; 下方向チェック開始 ------------------------------------------------- $80/E1DB E2 20 SEP #$20 $80/E1DD A6 17 LDX $17 [$00:0017] $80/E1DF BC 38 10 LDY $1038,x ; INDEX Yにチェック座標をロード $80/E1E2 A5 13 LDA $13 [$00:0013] $80/E1E4 F0 0D BEQ $0D [$E1F3] $80/E1E6 7B TDC $80/E1E7 B1 1B LDA ($1B),y ; ユニット存在チェック   下 $80/E1E9 F0 08 BEQ $08 [$E1F3] ; チェック座標にユニットがいなければジャンプ $80/E1EB 29 C0 AND #$C0 ; $80/E1ED AA TAX $80/E1EE BD CA 51 LDA $51CA,x ; $80/E1F1 D0 38 BNE $38 [$E22B] ; $80/E1F3 C2 20 REP #$20 $80/E1F5 B1 23 LDA ($23),y ; 指定座標の地形IDをロード $80/E1F7 29 FF 00 AND #$00FF $80/E1FA AA TAX $80/E1FB E2 20 SEP #$20 $80/E1FD BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E200 30 29 BMI $29 [$E22B] ; 移動不可ならジャンプ $80/E202 18 CLC $80/E203 79 37 A9 ADC $A937,y[$7E:AAC1] ; 移動先座標コストに移動元コストを加算 $80/E206 D1 2B CMP ($2B),y ; $80/E208 B0 21 BCS $21 [$E22B] ; $80/E20A C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E20C B0 1D BCS $1D [$E22B] ; $80/E20E A6 15 LDX $15 [$00:0015] ; $80/E210 91 2B STA ($2B),y ; 指定RAMアドレスに移動消費配列を格納 $80/E212 9D 3B 10 STA $103B,x ; $80/E215 C2 20 REP #$20 $80/E217 98 TYA $80/E218 18 CLC $80/E219 65 3B ADC $3B [$00:003B] ; $80/E21B 9D 38 10 STA $1038,x ; $80/E21E E2 20 SEP #$20 $80/E220 A9 06 LDA #$06 ; 06 ; チェック座標 座標方向 ; 下 $80/E222 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E225 E8 INX $80/E226 E8 INX $80/E227 E8 INX $80/E228 E8 INX $80/E229 86 15 STX $15 [$00:0015] ; ------------------------------------------------- ; 左方向チェック開始 ------------------------------------------------- $80/E22B A6 17 LDX $17 [$00:0017] ;------------------------------------------------------------------------------------------------------- $80/E22D BC 38 10 LDY $1038,x ; $80/E230 A5 13 LDA $13 [$00:0013] ; $80/E232 F0 0D BEQ $0D [$E241] ; $80/E234 7B TDC $80/E235 B1 1D LDA ($1D),y ; ユニット存在チェック   左 $80/E237 F0 08 BEQ $08 [$E241] ; チェック座標にユニットがいなければジャンプ $80/E239 29 C0 AND #$C0 ; $80/E23B AA TAX $80/E23C BD CA 51 LDA $52CA,x ; $80/E23F D0 38 BNE $38 ; $80/E241 C2 20 REP #$20 $80/E243 B1 25 LDA ($25),y ; 指定座標の地形IDをロード $80/E245 29 FF 00 AND #$00FF $80/E248 AA TAX $80/E249 E2 20 SEP #$20 $80/E24B BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E24E 30 29 BMI $29 [$E279] ; 移動不可ならジャンプ $80/E250 18 CLC $80/E251 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E254 D1 2D CMP ($2D),y ; $80/E256 B0 21 BCS $21 [$E279] ; $80/E258 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E25A B0 1D BCS $1D [$E279] ; $80/E25C A6 15 LDX $15 [$00:0015] $80/E25E 91 2D STA ($2D),y ; 指定RAMアドレスに移動消費配列を格納 $80/E260 9D 3B 10 STA $103B,x ; $80/E263 C2 20 REP #$20 $80/E265 98 TYA $80/E266 18 CLC $80/E267 65 3E ADC $3E [$00:003E] ; $80/E269 9D 38 10 STA $1038,x ; $80/E26C E2 20 SEP #$20 $80/E26E A9 08 LDA #$08 ; 08 ; チェック座標 座標方向 ; 左 $80/E270 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E273 E8 INX $80/E274 E8 INX $80/E275 E8 INX $80/E276 E8 INX $80/E277 86 15 STX $15 [$00:0015] ------------------------------------------------- ; 右方向チェック開始 ------------------------------------------------- $80/E279 A6 17 LDX $17 [$00:0017] ;------------------------------------------------------------------------------------------------------- $80/E27B BC 38 10 LDY $1038,x ; $80/E27E A5 13 LDA $13 [$00:0013] ; $80/E280 F0 0D BEQ $0D [$E28F] ; $80/E282 7B TDC $80/E283 B1 1F LDA ($1F),y ; ユニット存在チェック   右 $80/E285 F0 08 BEQ $08 [$E28F] ; チェック座標にユニットがいなければジャンプ $80/E287 29 C0 AND #$C0 ; $80/E289 AA TAX $80/E28A BD CA 51 LDA $52CA,x ; $80/E28D D0 38 BNE $38 [$E2C7] $80/E28F C2 20 REP #$20 $80/E291 B1 27 LDA ($27),y ; 指定座標の地形IDをロード $80/E293 29 FF 00 AND #$00FF $80/E296 AA TAX $80/E297 E2 20 SEP #$20 $80/E299 BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E29C 30 29 BMI $29 [$E2C7] ; 移動不可ならジャンプ $80/E29E 18 CLC $80/E29F 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E2A2 D1 32 CMP ($32),y ; $80/E2A4 B0 21 BCS $21 [$E2C7] ; $80/E2A6 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E2A8 B0 1D BCS $1D [$E2C7] ; $80/E2AA A6 15 LDX $15 [$00:0015] $80/E2AC 91 32 STA ($32),y ; 指定RAMアドレスに移動消費配列を格納 $80/E2AE 9D 3B 10 STA $103B,x ; $80/E2B1 C2 20 REP #$20 $80/E2B3 98 TYA $80/E2B4 18 CLC $80/E2B5 65 41 ADC $41 [$00:0041] ; $80/E2B7 9D 38 10 STA $1038,x ; $80/E2BA E2 20 SEP #$20 $80/E2BC A9 04 LDA #$04 ; 04 ; チェック座標 座標方向 ; 右 $80/E2BE 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E2C1 E8 INX $80/E2C2 E8 INX $80/E2C3 E8 INX $80/E2C4 E8 INX $80/E2C5 86 15 STX $15 [$00:0015] ; $80/E2C7 4C B6 E3 JMP $E3B6 [$7E:E3B6] ; 下方向チェック終了 $E3B6にジャンプ --------------------------- =============================================================================================================================================================== =============================================================================================================================================================== [ 方向=08 ; 左方向チェックルーチン ]             ; 上、下、左の順にチェックしていく ------------------------------------------------- ; 上方向チェック開始 ------------------------------------------------- $80/E2CA E2 20 SEP #$20 $80/E2CC A6 17 LDX $17 [$00:0017] ; $80/E2CE BC 38 10 LDY $1038,x ; INDEX Yにチェック座標をロード $80/E2D1 A5 13 LDA $13 [$00:0013] $80/E2D3 F0 0D BEQ $0D [$E2E2] $80/E2D5 7B TDC $80/E2D6 B1 19 LDA ($19),y ; ユニット存在チェック    上 $80/E2D8 F0 08 BEQ $08 [$E2E2] ; チェック座標にユニットがいなければジャンプ $80/E2DA 29 C0 AND #$C0 ; $80/E2DC AA TAX $80/E2DD BD CA 51 LDA $52CA,x ; $80/E2E0 D0 38 BNE $38 [$E31A] ; $80/E2E2 C2 20 REP #$20 $80/E2E4 B1 21 LDA ($21),y ; 指定座標の地形IDをロード $80/E2E6 29 FF 00 AND #$00FF $80/E2E9 AA TAX $80/E2EA E2 20 SEP #$20 $80/E2EC BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E2EF 30 29 BMI $29 [$E31A] ; 移動不可ならジャンプ $80/E2F1 18 CLC $80/E2F2 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E2F5 D1 29 CMP ($29),y ; $80/E2F7 B0 21 BCS $21 [$E31A] ; $80/E2F9 C5 0F CMP $0F [$00:000F] ;(移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E2FB B0 1D BCS $1D [$E31A] ; $80/E2FD A6 15 LDX $15 [$00:0015] $80/E2FF 91 29 STA ($29),y ; 指定RAMアドレスに移動消費配列を格納 $80/E301 9D 3B 10 STA $103B,x ; $80/E304 C2 20 REP #$20 $80/E306 98 TYA $80/E307 18 CLC $80/E308 65 38 ADC $38 [$00:0038] ; $80/E30A 9D 38 10 STA $1038,x ; $80/E30D E2 20 SEP #$20 $80/E30F A9 02 LDA #$02 ; 02 ; チェック座標 座標方向 ; 上 $80/E311 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E314 E8 INX $80/E315 E8 INX $80/E316 E8 INX $80/E317 E8 INX $80/E318 86 15 STX $15 [$00:0015] ------------------------------------------------- ; 下方向チェック開始 ------------------------------------------------- $80/E31A A6 17 LDX $17 [$00:0017] ;-------------------------------------------------------------------------------------------------------- $80/E31C BC 38 10 LDY $1038,x ; $80/E31F A5 13 LDA $13 [$00:0013] ; $80/E321 F0 0D BEQ $0D [$E330] $80/E323 7B TDC $80/E324 B1 1B LDA ($1B),y ; ユニット存在チェック          下 $80/E326 F0 08 BEQ $08 [$E330] ; チェック座標にユニットがいなければジャンプ $80/E328 29 C0 AND #$C0 ; $80/E32A AA TAX $80/E32B BD CA 51 LDA $52CA,x ; $80/E32E D0 38 BNE $38 $80/E330 C2 20 REP #$20 $80/E332 B1 23 LDA ($23),y ; 指定座標の地形IDをロード $80/E334 29 FF 00 AND #$00FF $80/E337 AA TAX $80/E338 E2 20 SEP #$20 $80/E33A BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E33D 30 29 BMI $29 [$E368] ; 移動不可ならジャンプ $80/E33F 18 CLC $80/E340 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E343 D1 2B CMP ($2B),y ; $80/E345 B0 21 BCS $21 [$E368] ; $80/E347 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E349 B0 1D BCS $1D [$E368] ; $80/E34B A6 15 LDX $15 $80/E34D 91 2B STA ($2B),y ; 指定RAMアドレスに移動消費配列を格納 $80/E34F 9D 3B 10 STA $103B,x ; $80/E352 C2 20 SEP #$20 $80/E354 98 TYA $80/E355 18 CLC $80/E356 65 3B ADC $3B [$00:003B] ; $80/E358 9D 38 10 STA $1038,x ; $80/E35B E2 20 SEP #$20 $80/E35D A9 06 LDA #$06 ; 06 ; チェック座標 座標方向 ; 下 $80/E35F 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E362 E8 INX $80/E363 E8 INX $80/E364 E8 INX $80/E365 E8 INX $80/E366 86 15 STX $15 [$00:0015] ------------------------------------------------- ; 左方向チェック開始 ------------------------------------------------- $80/E368 A6 17 LDX $17 [$00:0017] ;--------------------------------------------------------------------------------------------------------- $80/E36A BC 38 10 LDY $1038,x ; $80/E36D A5 13 LDA $13 [$00:0013] $80/E36F F0 0D BEQ $0D [$E37E] $80/E371 7B TDC $80/E372 B1 1D LDA ($1D),y ; ユニット存在チェック              $80/E374 F0 08 BEQ $08 [$E37E] ; チェック座標にユニットがいなければジャンプ $80/E376 29 C0 AND #$C0 ; $80/E378 AA TAX $80/E379 BD CA 51 LDA $52CA,x ; $80/E37C D0 38 BNE $38 [$E3B6] ; $80/E37E C2 20 REP #$20 $80/E380 B1 25 LDA ($25),y ; 左側座標の地形IDをロード $80/E382 29 FF 00 AND #$00FF $80/E385 AA TAX $80/E386 E2 20 SEP #$20 $80/E388 BD 0C 52 LDA $520C,x ; 地形の移動コストをロード $80/E38B 30 29 BMI $29 [$E3B6] ; 移動不可なら$E3B6にジャンプ ----------------------------- $80/E38D 18 CLC $80/E38E 79 37 A9 ADC $A937,y ; 移動先座標コストに移動元コストを加算 $80/E391 D1 2D CMP ($2D),y ; $80/E393 B0 21 BCS $21 [$E3B6] ; $E3B6にジャンプ------------------ $80/E395 C5 0F CMP $0F [$00:000F] ; (移動元座標コスト + 移動先座標コスト) を移動力と比較 $80/E397 B0 1D BCS $1D [$E3B6] ; $80/E399 A6 15 LDX $15 [$00:0015] $80/E39B 91 2D STA ($2D),y ; 指定RAMアドレスに移動消費配列を格納 $80/E39D 9D 3B 10 STA $103B,x ; $80/E3A0 C2 20 REP #$20 $80/E3A2 98 TYA $80/E3A3 18 CLC $80/E3A4 65 3E ADC $3E [$00:003E] ; $80/E3A6 9D 38 10 STA $1038,x ; $80/E3A9 E2 20 SEP #$20 $80/E3AB A9 08 LDA #$08 ; 08 ; チェック座標 座標方向 ; 左 $80/E3AD 9D 3A 10 STA $103A,x ; チェック座標方向格納 $80/E3B0 E8 INX $80/E3B1 E8 INX $80/E3B2 E8 INX $80/E3B3 E8 INX $80/E3B4 86 15 STX $15 [$00:0015] ; 座標データ書き込みインデックスを格納 ; 各方向チェック終了後の処理 $80/E3B6 C2 20 REP #$20 : ------------------------------------- $E3B6 $80/E3B8 A6 15 LDX $15 [$00:0015] ; $80/E3BA A9 FF FF LDA #$FFFF ; FFFF $80/E3BD 9D 3A 10 STA $103A,x ; $80/E3C0 A5 17 LDA $17 [$00:0017] ; $80/E3C2 18 CLC $80/E3C3 69 04 00 ADC #$0004 ; +0004 ; 座標データ読み込みINDEXを+4 $80/E3C6 85 17 STA $17 [$00:0017] $80/E3C8 4C 9C DE JMP $DE9C [$7E:DE9C] ; 左方向チェック終了----------------------------$DE9C =============================================================================================================================================================== =============================================================================================================================================================== [ チェック終了 リターン ] $80/E3CB AB PLB A:FFFF X:0280 Y:019B P:envmxdiZC ;-------------------------$E3CB $80/E3CC 28 PLP A:FFFF X:0280 Y:019B P:envmxdizC $80/E3CD 6B RTL A:FFFF X:0280 Y:019B P:envmxdiZc ;リターン