|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 4 I3 T; j2 w8 p" U3 ~6 p' s
# N7 C I: p6 L& b1 T8 r( ]5 o
2017.3.13. @" k3 n0 o) P
# D+ X. [% }5 F7 m

/ n0 a/ `6 r8 v7 ?. V+ q* b) r4 X
6 z+ l' [7 W( F/ l1 N! v- .ORG $936E ;CONTRA(J)5 ^( O3 i: G3 {" r
- LDA $252 `# R3 o7 f" F
- BEQ ADDR_93C9/ W) l" i* }. I& ~% H
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
O U8 `' s' d5 H - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y+ I5 g: q) ?. g% `" j6 ]$ _
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节& Z& K" ?# C; X0 X3 N! p
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
0 C' D' [; {/ g# B - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
) W# c$ } n1 `- `3 X - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
! e6 g* `- n% d1 ^/ b& n* j; X, j - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
3 C2 C( @8 J- P" o! Q/ b( G2 y9 b - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
5 g" j; [; b* ^, L- I* I, |7 s - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
1 `; v- p# H- ]6 x1 l - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
- R( c8 [! A$ | - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)% B. m" Z% O; i1 y( K6 |
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
1 Y( L+ L6 A- O, C' V k - ADDR_9387: LSR ;逻辑右移$ F0 R% v. v- h, d& ^1 I
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节' m4 X/ `" c9 j0 v |
- ADDR_938A: LDY $0000 ;设置Y==#00 y2 Y9 U, _2 W1 v$ X8 Z
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A: f/ U! C% `$ x: u
- CLC
2 K# ?4 {$ ] J - ADC #$029 T7 G2 `3 D3 S L! _9 _* }* v
- ADDR_938F: LDY #$00 ;设置寄存器Y为$003 N# d5 g; g' I! }1 H
- ADDR_9391: CMP #$08 ;比较Y==$04?" x+ a, A9 O9 {* c" a4 M
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节) L8 [# _' R1 q$ [* b. `6 Q
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A! N0 O& [- w# |$ J' D! P- k) j
- ADDR_9397: STA $0001 ;送入地址$010 N! X6 j, ` o2 k, F" h( w
- ADDR_9399: DEC $0001 ;地址$01递减% r0 X. R- h& E# V: B# h- ?' U: _' G
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节$ g( k/ J5 J" p) f9 G
- ADDR_939D: LDA #$08 ;设置纵坐标数值
( E: N) B$ Z5 C, |. h* e - ADDR_939F: STA $0200,X ;送入纵坐标地址5 `; {% s5 M* `. _
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据% o) W5 h; b: ]/ s
- ADDR_93A5: STA $0201,X ;送入图快号地址- f# v( G6 m# T3 c# E, L4 M6 r
- ADDR_93A8: LDA $0000 ;读取属性值数据
+ Z! M8 V) l) r' y( R% A9 `/ f0 P - ADDR_93AA: STA $0202,X ;送入属性值地址
& {- u" M' g9 |/ g - ADDR_93AD: LSR ;逻辑右移
' D) \) G t5 [8 ]; o S$ Q4 Q - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
- x7 Z" U' H0 X5 F - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节; E. e- {- f; p! r* }+ E$ d# z+ \
- PHA
$ _! W* |; y6 K! F - TYA) q1 ?4 h. b6 [; x+ \
- PHA
2 t1 U# B; V3 }" p& [; Q" Y - LDA #$D4
% n0 M" M0 C# O( w' B1 X7 \0 f* d - STA $0200,X/ q C* m: g z5 P- [0 M. }8 x
- PLA+ Z7 s) U4 O, @& _
- TAY
: D6 v- V+ e) Y0 B P/ V) z - PLA
0 `9 d, m0 w2 H. L - ADDR_93B5: JSR WEAPON: H8 F$ q# z5 B" J
- ADDR_93B8: DEC $0007 ;地址$C7递减7 E5 Y+ t: X# }6 \& Q
- ADDR_93BA: TXA ;X-->A
+ Z0 n) u! e; `0 f0 s - ADDR_93BB: CLC ;清除进位标志
& G7 G# b8 V& z7 x - ADDR_93BC: ADC $0010 ;加上地址$10的值/ J& X( q2 k/ W b4 n6 ^; y
- ADDR_93BE: TAX ;A-->X9 |0 k4 L; e* ]' |
- ADDR_93BF: INY ;设置Y++
3 e+ S/ X7 P: N% ?2 ? - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399' ^% v8 m1 O. _; w v& U% N( M
- ADDR_93C3: DEC $0000 ;地址$00递减
+ l, c, M+ b8 s$ b$ i4 \ - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节/ L0 p& S9 G4 Y& J
- ADDR_93C7: STX $0004 ;送入地址$04: @+ d: t. l2 h$ u
- ADDR_93C9: RTS ;程序转回-----------------------------
. W2 B1 e" p/ n4 o" V; M: ]; h8 R
" ^ F$ K8 }1 c8 Q# G- .ORG $FB60
0 U( e: M* Q( [- F; N - ADDR_93CA:
; P% S( h9 c3 f) e - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号- s5 e' C% n3 E) W C
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号0 r: h% F( z+ r6 N, u( i
- ADDR_93D2:
7 w! P4 U% k3 w M. W, i - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
: ?6 C, B7 C! }% O3 `4 y9 L - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
3 B* D& @, l: k - & S$ H H0 q# q7 S
-
e! R; [3 I) D4 E* {- e - .ORG $FB803 C0 X9 ]' H0 {/ Q- |; Y
- * U3 \. {' L9 Q3 U8 a* r
- WEAPON:% m( s3 F6 Z0 Z/ y/ I: b! u
- STA $0203,X ;送入横坐标地址) N. X4 u. j) A( u" h
- PHP
! v0 B0 }8 p( l \ - PHA7 T( i( J* V6 P: _( r; I
- TYA+ k* t Y5 z3 M/ }* f4 I
- PHA0 h. o- D% M3 [0 i- B
- CPY #$00
& I' D. f7 F( M2 _& B - BNE LB
, a2 Y# b- r0 s; u& d - JSR S_WRITE ;第一个精灵
* Y, V1 ~( Q* e( ?' l+ g% q - LB:( J- O4 h- m4 v+ |, ?. W1 f9 T
- CPY #$01. [6 h+ ]7 d; M7 V$ ?
- BNE RE
1 v# e" x+ t( U& D' I - JSR D_WRITE ;第二个精灵# r7 n/ h3 [ g2 _8 z7 a
- RE:" X5 j/ z7 w- T2 C' @
- PLA
# D- i0 I( @6 r p. i9 Q - TAY
[; ], G* n4 l ?; w. V9 E - PLA' M$ f2 S" T! C. o9 E
- PLP
8 k# E4 j8 ~5 h4 l* O, ^1 [4 u - RTS% Q# f& C H5 Q6 G5 L
- + J! L. p6 n8 Z2 Z7 q* P
- S_WRITE:
" F# U) p! B3 A+ h; R2 z - PHA8 d1 g7 |3 y l8 E
- TYA
# Q8 a7 e. ]. F4 c: Y - PHA& }" J( F- h" E% k
- S_CMP: {6 p# q( l# v6 u6 I- D3 U
- LDA $00
* Y; n- Z: f0 l* e3 r9 M - TAY
7 U& g" o3 @8 I$ m$ m, o$ t% c+ \) G - LDA $AA,Y ;读取武器值) e1 w! ~' X8 o
- AND #$10
9 q: ` K- g8 q6 U% A% d - BNE S_WEAPON/ [- n$ s. d$ ]" T" D1 a: N
- M_WEAPON: ;普通状态6 A$ F8 U, i$ k4 B' a
- LDA #$26
' R+ u1 B5 }7 s* x* v0 ]( K - STA $0201,X5 N4 D$ s# s! u1 d2 }1 O5 y
- BNE RETURN% `' T$ ]- x8 }' B5 w6 o% ], P
- S_WEAPON: ;加速状态
. w! ^! E) @: { - LDA #$1C
# {7 C6 W$ b3 J4 ?7 e - STA $0201,X, Z/ d: P, t* P
-
/ {! |/ U$ I/ [, b: p -
8 ?& u0 s4 B Z7 x2 K1 Z - RETURN:4 R3 T( _/ n' q* r; f6 o2 G9 I( M9 W
- PLA/ w: n5 _# r4 M2 X" G( @, [
- TAY
1 l" D9 D, L5 j3 T, C1 n - PLA
9 f6 g, ]2 e$ k# m* Z: E- t - RTS
" Q# y8 \0 x/ ^% y3 a) B - $ Y7 _) l3 U+ {% R3 B' i l4 t
- 3 N- `0 ^# k+ ?8 {% R
- D_WRITE:) `) E$ v% W0 v# |% K) G0 ?4 J P
- PHA
) S! x( r6 U, o6 ]' w - TYA, _9 V& X! E8 p4 \( L
- PHA+ e$ W& z# Q4 t1 }8 W% b$ H
- WEAA:
8 `, R; X2 k) u4 { - LDY $000 |7 w; l' M/ X$ p
- LDA $AA,Y5 B* m. N3 y# q& Z" U
- AND #$0F
7 J. u/ B- j: }$ U/ Z - TAY+ ?' E: l4 o7 b9 k4 B; l5 I* R
- LDA DATA,Y& }5 s; m! {- e; ]; K: X
- STA $0201,X' s( N$ w( c6 |* r3 v
-
/ N$ W3 Z }9 C) V - PLA* _/ N7 {8 E3 _
- TAY8 P; U, L: {/ L" B9 H# c) M# R; g
- PLA
& d9 b. p( C1 d/ V - RTS4 O' u7 ~ P- C9 X8 X2 g3 R: }
- 3 s+ M( S7 _% J4 K' g8 a8 X
- DATA: ;武器种类图块6 {8 I5 @* |$ B+ g
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|