|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
$ d1 [2 R+ h/ U) |. w" y# Y ~0 z: r; p! h- U* G
2017.3.13
& X" i" |7 ~5 ~
( t. X7 I( O7 E6 A0 T + i- i# Z3 E r- B
0 H/ U) N3 k* u% z: b; I8 ?% C- ~% |
- .ORG $936E ;CONTRA(J)$ |/ j; i) i7 ^7 T
- LDA $25
7 I _! L; h& ]6 l - BEQ ADDR_93C95 {5 g( k% ]+ J, ^; n
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)+ _9 q5 N8 |5 l$ S# U
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
c( |2 ~5 C& Q& H+ F$ m" v - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节5 `8 N7 W) a( E7 P, V/ \/ ^
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A& o& W O4 q/ y/ b5 Y k
- ADDR_9376: STA $0000 ;将累加器数值送到地址$003 Z4 b- i& j( Y$ o
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X; Z8 J8 z. Y, g9 w% f2 a
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y0 r" L1 @4 \; ?3 L' z- o
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
6 Z* ^1 t) \( f, {) C$ p - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
: o. M* R4 W, ^) ]; n8 Z5 U# r - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
' p: E6 c6 K) f! i - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束) R$ H6 w/ l; K ]
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y" P6 P9 W3 p; T. z: `* \& W
- ADDR_9387: LSR ;逻辑右移
' y6 K4 q) x+ Q$ @* L$ i - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节9 C: Z6 [! p- Q& W9 s4 s8 G
- ADDR_938A: LDY $0000 ;设置Y==#00
6 c4 G! `* @% Y' r, X. z& q - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A6 ?7 M- K9 M+ N$ C
- CLC: J$ f t3 S+ E( X
- ADC #$023 t( y! O, e1 F( k% f8 ~( @& F1 Q
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
$ n* l! E1 S7 I2 h4 s _ - ADDR_9391: CMP #$08 ;比较Y==$04?9 v" H: z F1 K8 T Z( F
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节- }6 `# ?) l' k- j
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A0 E6 w" B8 z8 d3 u" ?
- ADDR_9397: STA $0001 ;送入地址$01. z6 c* }% o0 v; P
- ADDR_9399: DEC $0001 ;地址$01递减' v$ R/ {0 J/ {! q R
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
C6 \. E0 r7 r3 X1 F, [" k! m - ADDR_939D: LDA #$08 ;设置纵坐标数值$ b0 |. P' H/ o3 |2 Z H9 q6 y9 q! N
- ADDR_939F: STA $0200,X ;送入纵坐标地址 N. j6 g. p6 F% n4 c2 A. j8 K6 P) ~: O
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据0 Z6 g# t2 X I
- ADDR_93A5: STA $0201,X ;送入图快号地址
8 P( p9 P- g. l4 A: S0 B; } - ADDR_93A8: LDA $0000 ;读取属性值数据
* o1 ?6 Z8 K c5 p! D! ]& e: { - ADDR_93AA: STA $0202,X ;送入属性值地址
5 e! G; e/ m. ^* u - ADDR_93AD: LSR ;逻辑右移. ]% q( s+ j/ y* h; J
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值( r: T9 h* a0 H
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节/ F& y6 U$ z Y+ j, V
- PHA
9 I. f% S! s- `! C: R - TYA
) |; i2 ]0 K, B; J - PHA
! J* k; V7 ]+ u: K: ^ - LDA #$D4$ [, B, m+ b% s* ?! m
- STA $0200,X
! H3 |3 s. @. U4 Y% L/ b - PLA
$ y+ Y6 d7 [8 a& g3 ?) T3 H* W3 v - TAY
$ u, d' N, f1 R, f - PLA/ u$ r( b/ x6 U* G2 b
- ADDR_93B5: JSR WEAPON3 v' F; T9 \) F! f, s
- ADDR_93B8: DEC $0007 ;地址$C7递减8 i. U2 @0 Q7 ]" ` c0 g. W3 s
- ADDR_93BA: TXA ;X-->A' i* Y. N4 i; J& s
- ADDR_93BB: CLC ;清除进位标志
/ W! ]4 {7 T, V5 y - ADDR_93BC: ADC $0010 ;加上地址$10的值5 g( N/ v' N: J& m3 B; j& n
- ADDR_93BE: TAX ;A-->X4 T C/ T7 T3 V' D6 F
- ADDR_93BF: INY ;设置Y++. G- V6 c- E0 U
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
\, A! `! f0 W3 l x; y - ADDR_93C3: DEC $0000 ;地址$00递减: R3 M6 Y8 d% ?& b: I4 k: m
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节0 \' h$ F: K8 k6 L. H
- ADDR_93C7: STX $0004 ;送入地址$04; z/ R- a# B7 S0 t5 l
- ADDR_93C9: RTS ;程序转回-----------------------------
k/ j# L/ j4 z% T3 C3 E
# `/ r% U4 G% Q) R* \: }- .ORG $FB60
d" z2 \- t. k% P0 A3 [ - ADDR_93CA:3 L: q7 H$ Q* v. i
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
$ Q2 X. x D/ u" I; y6 N# @ - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号$ T4 K! J1 |5 V7 l5 {/ ^$ C% Y/ m x
- ADDR_93D2:
' L9 B4 C9 s) I8 F0 @: q# h0 k - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标" ?; f) l3 _6 R9 m8 B; {' C: ?
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标! {( q) z+ X" s) J2 s6 d" X0 g. x
- ! a2 K7 R- J5 Z* g, D6 |
- 7 @9 } Y' |6 |1 ~" \
- .ORG $FB80# e) `' ~3 q' \7 f2 b& J) R8 c
-
% O7 \" j8 H4 d* }1 U/ j4 O, I - WEAPON:
* _ e+ |9 I1 ]. b- c" s$ l. Y - STA $0203,X ;送入横坐标地址
( S) v0 f: X9 N. U6 Z2 z) t - PHP( _! S# P( I* F" z+ x
- PHA
' M& N2 E+ e+ V' r - TYA
7 h* H4 |* E: D% @2 [: R - PHA
% ~5 [9 S8 P$ [2 Y) `- Y m - CPY #$005 a4 f) m) t, w2 |3 q; V. H
- BNE LB" J! l: \; G1 I. w
- JSR S_WRITE ;第一个精灵
6 {( [( p4 q# ?) P - LB:# x7 o" y g+ k
- CPY #$01
* ]/ I0 f7 o$ T, m) L0 m( A" [7 e - BNE RE
, F+ b. Z+ G' w - JSR D_WRITE ;第二个精灵; ^7 A* ~8 R7 {4 R
- RE:
9 @3 t _. z9 ~5 Y% T2 x6 y3 l - PLA/ W1 x3 B' `# X4 \" K# { ?
- TAY& P( j4 }8 F* J- e
- PLA
% H( B- L" k, N. p( E - PLP
, ]. \! i$ j5 A0 g; p - RTS
9 o- m: O$ q# Q" C" R0 v# F - , ?! ]# q' T1 g2 x$ Q D/ h( f
- S_WRITE:/ [: W1 {: C; q& v; }$ V. @
- PHA
% a f& N" h" @ - TYA
" w4 F! _0 v4 k - PHA
1 H+ `! d4 P' a, B. N% b - S_CMP:
, Z R1 X% K& C( x - LDA $00
( @% h' U" j7 ] - TAY
) r3 l' t3 ?9 F; _4 W1 J" _ - LDA $AA,Y ;读取武器值) A! \- y7 H5 @6 E2 R
- AND #$10* \9 G9 A. F O* J! a2 D
- BNE S_WEAPON
: C# R/ S& W" J - M_WEAPON: ;普通状态4 v2 e2 c5 R( l
- LDA #$26
2 V0 L' }6 n3 w- x# \# M - STA $0201,X+ h8 X8 H: V5 j' T
- BNE RETURN
/ u0 f: w* X: f1 z& y" P, b) j$ b - S_WEAPON: ;加速状态
! K. x" q7 t% i) g: ]% ~ - LDA #$1C
$ P7 ?: G3 b: ^6 `5 B% q - STA $0201,X
- t9 @5 z7 F9 O q! ^& | - : E6 B) x' V3 I% @
- # i* z( r! ~8 L/ ~8 g4 Y; w
- RETURN:+ R- p6 K. \" ~) t
- PLA
, V' m# k. g) M. T- W- v7 ? - TAY
3 N4 [8 c( u1 O& c/ Q$ k7 S0 G+ U - PLA1 k$ X3 Z# |5 X7 S" ~
- RTS
1 E$ ]' f/ P. ~9 D7 y8 R -
. ~' X3 `! O& R
1 n* X1 N4 d" F- D_WRITE:) P: w% v a8 j% R( @ D# N
- PHA, u9 M, ~- F/ ]8 C0 T: j2 W! R
- TYA
# `/ H/ d2 c5 n( S - PHA
% k5 ^9 X) {- }+ y6 d1 w - WEAA:: P0 s+ W4 S, _
- LDY $006 a. ]! H4 J* L" a L; Y
- LDA $AA,Y" @6 P8 V* g5 x0 ]
- AND #$0F# W, ]- M0 v' k+ t
- TAY
; {5 O! b6 f& y7 \. P0 A- V. X - LDA DATA,Y1 H* K7 N$ y. T
- STA $0201,X
. r$ E m% K( |& u$ Q -
) I8 c: p* q* o; J' X- e) @' ~, f1 e - PLA
- f* k, K& F/ e. L9 e# | - TAY
7 e5 G- L2 Y, a$ w - PLA
: M# t. `: U* r3 ^% G d7 P - RTS
$ B. }7 z. T& C8 \( } -
4 v5 D# z" N- P2 a4 ?' o- u! w. ~& m - DATA: ;武器种类图块
7 P$ V+ m) g" U$ A, } - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|