|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 + v: n$ O4 u/ Q7 F2 ~1 ?) R
0 f3 ~# k6 ?5 O% `) x6 G
2017.3.13% B% a, E, d4 Y1 w
7 A' x: p U% s$ g8 T) k

$ a4 ?; n' g! R8 ^' S% I0 i2 v0 U " I! X' G. `/ [. h. b
- .ORG $936E ;CONTRA(J)
; W* O; R4 _+ ~# K - LDA $25
- y& z+ M2 M/ z. r - BEQ ADDR_93C9
7 P+ d2 r/ a8 x! a) \9 m+ n7 A8 u: d - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
N- j) `, b3 ~) f; L. P - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y! g: X9 W( {) V9 ]* Q* |# I
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
1 g# y2 C' G J0 T9 K/ Z- Z' w - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
0 q; E( X3 A+ r3 q - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
3 ~/ b7 g R6 c9 L0 n) c - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
. e7 {( {4 N1 n' w4 J - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
2 G0 c @7 E$ B, R- D! `, s: V - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
b1 H% Q& n% w1 h% t - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节5 O2 Q- p" t" |+ f
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
8 G3 {) G) }& @$ f0 s - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
3 {% w, k/ Y5 _8 ?) x/ _% ~& T. G1 } - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y$ T, U5 y; x( o) L
- ADDR_9387: LSR ;逻辑右移
; T4 x+ h# i' |* r; `+ j) A( R - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
# [# y( m) u$ {0 @0 G( z, S& k - ADDR_938A: LDY $0000 ;设置Y==#00
t) G# J# F3 ? - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A: E, t4 D$ e, t9 H
- CLC) t1 Q5 t' I* s( v6 B1 L J! d
- ADC #$023 n5 ^7 J, V* P/ K$ p
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
, E/ v1 m9 Z& f3 ?4 p1 J - ADDR_9391: CMP #$08 ;比较Y==$04?
Z1 g6 s# H' {$ Q5 Z3 J) j - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节. U9 |5 t& {4 l! G4 P
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
$ U5 e2 k; b2 |5 _ - ADDR_9397: STA $0001 ;送入地址$01
) C, C' E9 |4 P! C; v - ADDR_9399: DEC $0001 ;地址$01递减) @0 r u0 f8 o) N' {, j
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
2 m( s& d* a& g5 f8 O* q - ADDR_939D: LDA #$08 ;设置纵坐标数值1 n" `/ c& Z8 S
- ADDR_939F: STA $0200,X ;送入纵坐标地址/ ^. z9 x) G m2 r" Y7 h& D! b! e
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据, t( ~' K3 q u/ X$ E9 a
- ADDR_93A5: STA $0201,X ;送入图快号地址
. X/ b6 H: ]6 ]9 c: K - ADDR_93A8: LDA $0000 ;读取属性值数据
) z; K5 M3 n! @% Q - ADDR_93AA: STA $0202,X ;送入属性值地址
$ S, V( t- T3 T* \( c3 B* v - ADDR_93AD: LSR ;逻辑右移
% L) e# y6 B3 j$ ^% S: j - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值3 M" }. I0 w V; p
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
$ m- {( {# ?+ Y' I - PHA# P. W a: |9 b( O3 H/ \
- TYA
+ q; }4 W8 ^/ b) q* t - PHA9 k5 {4 k: P5 F3 S) g
- LDA #$D4
0 S: Q) [) X0 |, @ - STA $0200,X3 L) r6 Y# d9 b! h1 I
- PLA
6 {6 \7 s2 E% O- f - TAY: S+ T1 L9 P1 k+ W* b
- PLA
7 x. o. X3 J" i! i, {6 G - ADDR_93B5: JSR WEAPON
! u a. ?* d% G! j( K- z- j* |: F - ADDR_93B8: DEC $0007 ;地址$C7递减' \$ O- A& a L, M6 ~
- ADDR_93BA: TXA ;X-->A
3 X; z F9 B2 W9 d - ADDR_93BB: CLC ;清除进位标志0 Y3 v$ U4 s6 z( D6 f4 C1 [
- ADDR_93BC: ADC $0010 ;加上地址$10的值
& L/ r( `) A P - ADDR_93BE: TAX ;A-->X, a" L2 ~; Q4 ]' k
- ADDR_93BF: INY ;设置Y++
6 x: f5 y2 R/ v$ o/ k. I, _ - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
8 O" }) _, b$ z6 f+ Z - ADDR_93C3: DEC $0000 ;地址$00递减% b. x2 ?6 a; o, d
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
+ b- |0 V7 L5 X1 E7 w - ADDR_93C7: STX $0004 ;送入地址$04! J7 u9 n$ ` j( }) P. `
- ADDR_93C9: RTS ;程序转回-----------------------------
! {7 U [8 i( x+ \6 q - . t7 f/ n( }$ J
- .ORG $FB60
+ O6 g" B. ~3 @2 J - ADDR_93CA:* I9 f* i6 P) [5 f& \. L
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
5 m5 t) I. ~( q. l - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号. x0 Y' B, N# R( m7 Y. n- \& J
- ADDR_93D2:
, N7 O5 m+ p `, u# k) x - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
2 ^1 U* S0 k8 W) z - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标/ F: C/ D, |2 L" y
-
- S# ^ U" D1 \1 Z1 j5 Q -
0 Y- m+ x/ F# g3 p - .ORG $FB809 M" W+ H. \' m
-
3 T2 `/ E" G' E9 ]% j4 a - WEAPON:; I" z$ S$ A- m$ `0 S
- STA $0203,X ;送入横坐标地址( @9 W: M- \: H/ F0 D7 I9 j, H
- PHP
. a) g2 h8 P( o8 R% k - PHA2 a5 V0 M1 D, ^5 I5 d, M5 q2 z6 R
- TYA( T4 ?# i) C$ R6 l# B( H+ M
- PHA
5 R; N! N. N3 L( ?& {* C# D$ Z - CPY #$00
/ a$ }9 Z | e4 j. r; `8 a6 q1 C - BNE LB& v4 G4 R" n+ m
- JSR S_WRITE ;第一个精灵
/ {( S% B7 I& F% o! Z4 J6 ?4 o - LB:
# ~4 W9 z. q. k' f - CPY #$01: c- L/ b; p( {5 m/ U( U
- BNE RE
$ F( v- f1 p# y. F: G' F; g" s - JSR D_WRITE ;第二个精灵
, h5 R/ {' @1 c. j6 M - RE:* p X# \5 c6 n# k. b; v
- PLA
% t, f! Y2 Z: D - TAY
' C6 x4 Z, u7 h: | - PLA
# K) B I9 } G1 q9 d/ ?5 t - PLP
% y) R8 D( J& R2 c3 W - RTS
2 E6 D6 w1 K- q6 _2 U9 u* y - ! v" n# X6 p& Q0 B! c; c/ R
- S_WRITE:
0 i: g* n/ K8 t, E - PHA3 t# k; o# y# L1 W8 k7 p, Q
- TYA
8 P* V* |! O+ ^6 m& C" ? - PHA
7 S6 S6 A9 o. L* `6 x# j - S_CMP:, t _" ~) u9 O. _0 p3 e: |
- LDA $00. i( B5 }- d4 V0 V
- TAY8 Q; d! ]; U" O8 ` z2 q
- LDA $AA,Y ;读取武器值# _) o" F0 _$ A! @0 R" Q
- AND #$10
+ g. r: I O8 W; Q9 @ - BNE S_WEAPON; M0 |# E0 F- J7 ~# U U# G
- M_WEAPON: ;普通状态, l. E( S, o L2 }
- LDA #$26
8 ~4 ?- \! V+ ^, U3 I - STA $0201,X. i2 U \: ]/ N" O
- BNE RETURN, k& z4 [$ t# ~0 w1 s
- S_WEAPON: ;加速状态4 M5 \# D: h7 P4 k+ w4 n
- LDA #$1C. \9 D( Q9 l9 L
- STA $0201,X
, J* Y% B6 j, T! |) ]# W# D -
( H# t$ T; s* r; e& d3 h" C -
3 K- L. `5 [1 x7 ]1 {- S - RETURN:
" }. i3 F5 j+ K( a& \. s6 t0 `, ? - PLA% S s# H. Z' u8 h) O3 F
- TAY) y$ P8 ]8 Y/ r" ~% l( @$ M7 K
- PLA
" G m" M& `4 Y6 D1 K: c( v - RTS) [: M4 n/ n, T$ j& ^! \( r
- $ [ g9 k$ y$ |; c) l" u
- " K# ^9 o* h& f! a, g0 j
- D_WRITE:
% X% m, U, O" Z9 d1 ^ - PHA
) K: \$ d/ [; ] - TYA
) P# y. r, U# j9 q5 h - PHA% y7 O, g0 e. l" n+ ~
- WEAA:
4 k! K1 p5 W6 v, T- W3 u9 G - LDY $00
c v* b; M( t4 o! ?' u - LDA $AA,Y! m0 y* z- \" Q7 p$ Z% P
- AND #$0F
! c* ~9 ]% A) p6 Q% b; \ - TAY6 p# Z7 Z2 H) C' I. d
- LDA DATA,Y3 G) m8 K: |# g* D& \
- STA $0201,X% W$ Y. ]$ W K) s5 ]
-
8 Z& ]! a0 l7 r* X- } - PLA
: V( p1 }( U/ R K- t6 }" [ - TAY
0 [# u4 c9 z. |. d# N- j7 n, ] - PLA, |/ W; S1 a2 Q& G, [
- RTS$ A" a; `, l! F5 s S" G. C3 N
-
# |; a4 S" ?+ M: [4 t: ]" ]; | - DATA: ;武器种类图块# `) r' X9 P3 x* D; B8 c( q( i: }
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|