|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
* g+ R$ Y/ A# C9 y0 |/ h f" z) E3 ]* e7 D
2017.3.136 i2 v% L$ `9 |) H

6 w. v: w% x; I/ X& |7 } , E o# ^6 D+ k% i) {6 m
9 j0 S8 u ^% V6 i, x; ]2 x6 c
- .ORG $936E ;CONTRA(J)0 g( K' s4 R# i2 W: W r h e6 w/ ]
- LDA $25: ^3 t+ _; S# W+ b! N+ t0 c
- BEQ ADDR_93C9# W' d+ z7 w3 ^, ~0 ?+ H
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)$ ^/ R: c0 p' C( ?. p; [
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
/ M+ p: F" l6 Y9 @* ` - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
+ h( S& D- E& O/ z1 Q' @/ q d( c - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A! \4 g* n4 t9 m6 J) }* Q
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00% f) |. X8 R) n3 ]
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
- v9 R" H, M% r6 ^ - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y+ r) k C3 ]; j* g
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A; c& f0 D: j1 v: N
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节$ ]2 J6 G0 s7 ^
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y/ q* @3 n1 z" n" j' R
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
' K j% |/ W& i) V - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
0 v2 h, t$ ^4 ^; O - ADDR_9387: LSR ;逻辑右移 T# ]5 f$ i8 d6 u% |
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节7 W/ [. }. C. \
- ADDR_938A: LDY $0000 ;设置Y==#00
* S$ z: H) ?: ^, j. O - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
4 O- Q' u: k" x. C - CLC6 K4 N$ k$ O& g6 i `
- ADC #$02( i/ @' h. J# w, q3 |1 z
- ADDR_938F: LDY #$00 ;设置寄存器Y为$004 D: a5 O, B% T
- ADDR_9391: CMP #$08 ;比较Y==$04?
z9 a1 h5 p- G# H& [ - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节# l2 m( @1 U1 X+ Y
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A# L0 }. y3 s: b8 T0 \9 T
- ADDR_9397: STA $0001 ;送入地址$01! `$ ]0 c& R) `
- ADDR_9399: DEC $0001 ;地址$01递减. j" U! A8 x& f( J5 v: n# Z" \: E
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
8 w3 I: V+ y i1 ~$ x6 F - ADDR_939D: LDA #$08 ;设置纵坐标数值) {+ u3 J, ]2 @5 ]! d0 w* j
- ADDR_939F: STA $0200,X ;送入纵坐标地址9 B1 |2 F. D; a' o/ f
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
0 `+ @5 V: S: E2 R3 J; d3 z, G. u( m0 H - ADDR_93A5: STA $0201,X ;送入图快号地址
' a0 Z9 t, A6 s/ O- q - ADDR_93A8: LDA $0000 ;读取属性值数据6 b5 Q! |. a1 j, W
- ADDR_93AA: STA $0202,X ;送入属性值地址
% _- J9 E$ x; K" M - ADDR_93AD: LSR ;逻辑右移3 C+ f; A' C& r0 u/ ~* ^% I7 }& [3 q
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值9 n/ L- j9 N6 H& Q2 B# }9 a
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
- f0 A$ H) ]) h( w( N/ {! m) T - PHA6 o4 D) _: `2 N5 f
- TYA1 p/ z3 T# c+ @* S! o
- PHA
* V! d! L" N; i! D: h - LDA #$D4( l& e P7 v6 ~
- STA $0200,X
, n r a1 D3 S3 Q9 R- ^ - PLA
; u: ]) P# T9 X3 {& k' e* V - TAY) s; }! \2 ]0 c/ a
- PLA, y: J1 F1 _' M) a* e% Y, C% Z# `
- ADDR_93B5: JSR WEAPON
# a# C6 Z' Y+ g) i9 N O - ADDR_93B8: DEC $0007 ;地址$C7递减* q2 {) D. q5 C* e/ k* g. r: ]
- ADDR_93BA: TXA ;X-->A
x3 r; X, }6 C0 f - ADDR_93BB: CLC ;清除进位标志: P ~; p: f' E- F0 Y. X3 M
- ADDR_93BC: ADC $0010 ;加上地址$10的值5 Z9 Z9 [# U7 \6 r( G
- ADDR_93BE: TAX ;A-->X/ B% f: S" x( z X4 R$ q" \
- ADDR_93BF: INY ;设置Y++
8 b: l `& Z9 E6 Z @: A - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
$ P5 a7 l, z. y4 W4 w% t! Q, ` - ADDR_93C3: DEC $0000 ;地址$00递减
; Q% t) g& H! Q* F - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
" E, V) K& r6 h5 M, L2 o - ADDR_93C7: STX $0004 ;送入地址$04
: a; {; x7 d4 p& o+ | - ADDR_93C9: RTS ;程序转回-----------------------------, d* F; @6 f* q
( t! W7 C5 e5 H8 Y& T7 D- .ORG $FB60
+ u2 X2 W* w# n1 H7 ^ - ADDR_93CA:$ w) Z: g. N; s7 L) h/ {0 Y
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
0 {) i( X$ P4 i3 Y$ g3 X - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
# R2 e- _3 X& o5 J- ? H - ADDR_93D2:: S0 T P7 R x$ n) m) S
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
0 v* O5 H+ a5 a - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
# S# H1 y2 {/ D6 @ -
( \: z! _1 o7 ?5 d! T -
# a% h7 I c% r% }& q( T0 a/ u - .ORG $FB806 s: N0 `4 {- ~; c6 ]4 q' N
-
* L2 \6 N$ @/ f" H: m9 Z+ t - WEAPON:: a4 p2 O( J4 |9 z r W# }
- STA $0203,X ;送入横坐标地址# n4 s6 K* l+ |2 y4 L. P2 F
- PHP8 H7 ~& ~: h7 R/ _
- PHA
, \! [6 c7 ~+ C5 k - TYA
8 {$ K" R: G0 N3 G - PHA
* B5 p7 w7 |7 n - CPY #$00
- O/ J R1 l. E# b" @' [ - BNE LB. b7 G/ \4 A; q9 s0 e" P9 L
- JSR S_WRITE ;第一个精灵
- @4 s- g1 Q- p) v& U8 u - LB:" U. h) l p& b( j4 s, S9 a; S0 n3 z
- CPY #$01
! W4 A# j& S3 c1 g& r& P9 C' _ - BNE RE/ L" Z f1 Q$ x! t9 {7 P
- JSR D_WRITE ;第二个精灵- K! c1 L% R& w/ S$ E& `
- RE:1 k3 ^# {% l/ Y$ ]. L
- PLA
3 R# r7 @5 h7 m/ M0 }* w. L - TAY; B" C: a! p# b i* F
- PLA
" o% E( j) ` M/ q6 }7 e$ ?- `. q - PLP
a9 c! f3 P+ b5 e& Y! |- H* v' g% { - RTS! ?8 m' a( f* a1 m3 C2 a3 F
-
8 Z8 G6 Q4 u1 L9 N) G& }. @ - S_WRITE:
# K% n& S0 d6 z8 U+ ]' i$ I - PHA/ Q/ ~6 O& K, v5 S9 M* G8 L$ l
- TYA6 S* v. c$ b7 d2 A9 e' Y6 G( x
- PHA
& k8 A% P+ j& h+ W0 }! C - S_CMP:
) E) o% l0 a B* O* Q. p5 X - LDA $005 y0 R& |- k; Y( V& ^
- TAY
/ d* u( g9 ~% W; F( [8 t: o, ] - LDA $AA,Y ;读取武器值 o" m9 w. h+ C; u# W
- AND #$10
T% l3 y& v! b+ x, h" F1 m - BNE S_WEAPON
% `" ~9 b4 X) G5 [ - M_WEAPON: ;普通状态
+ ~% C: k: J4 K- ?2 o - LDA #$26
% A: B; B, l/ t% M3 o7 M( [ - STA $0201,X
- r" v3 H1 P; ^ - BNE RETURN
* W+ ~( ?1 Q) E5 I9 B7 N1 F1 R! d - S_WEAPON: ;加速状态
! Y4 U! I* i7 z F9 l - LDA #$1C
8 c, h6 q1 [6 h$ j6 }- [ - STA $0201,X
3 O5 O0 x3 {/ c, d! G -
& J( F3 k3 J) X; P -
* t/ \8 J2 [0 e3 b) {5 f7 F - RETURN:
# A8 J9 [5 F3 u' Q - PLA) R! W4 t7 W% ~* m1 a. E8 N9 j4 ^
- TAY
/ N( U5 C" [5 ^% f0 V - PLA7 O$ |1 G9 P) F7 \6 U* H* c1 k
- RTS
* q* P* [8 o* ~ -
3 d- u+ w' A$ O5 d( U - 7 S, [" u3 e8 X3 r; j% A) }& z
- D_WRITE:
! q8 C5 Y* y7 \1 K+ U. F/ m - PHA9 L2 p6 f( H6 v% S' v5 k
- TYA) X: I3 s: r7 r
- PHA: I* }3 ^: J* S: A# {- O
- WEAA:- _ o: I) M5 R+ x, L/ o, O
- LDY $006 q0 M: ]: F9 n
- LDA $AA,Y5 O% \" l, ^: C2 p% j
- AND #$0F
" d# I- P/ z; m( V/ Z/ H - TAY
: _9 V N; r$ p/ v! ^ - LDA DATA,Y. e/ N7 V+ x: U
- STA $0201,X% P2 M/ ^& y9 {4 ^/ H1 ]
- 7 w* D) I. H `0 s, H
- PLA% T3 A' { b8 c y5 _
- TAY" {2 ^. B* j3 s9 j8 K
- PLA
t( J4 {# G/ G5 G O" K! U) V& P" m - RTS
( l7 {7 f4 \( a -
) T4 p( A, T) k" W. z - DATA: ;武器种类图块, A8 T% G9 p2 v6 k; h
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|