|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
& M$ E- W" W8 O% ~4 K* h
- A4 A9 \% t: Z. H( Q0 N( Z3 A2017.3.13# g/ N# m, E$ j @# `6 W5 q
_2 K o# Z9 w

, Z& M* s; X& d0 f - W+ Q+ A. J) R$ ^0 a$ D
- .ORG $936E ;CONTRA(J)# S: U2 {4 ^% \- ^8 U2 F
- LDA $251 |, `! d6 g* k4 i6 j- N
- BEQ ADDR_93C9+ }' W6 ]" y" T+ [+ h
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)0 j2 U: p1 g0 u+ d+ j/ O& B
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y% }) I3 b) H! l% C# p: I2 d
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
% e0 L3 j, U( s) k - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
0 b/ T$ a( _! n N; S- i - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
6 `& T" ~ C+ y7 v6 X - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
M1 I4 X; _& r1 h& i% D - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y; g; X/ I% F+ B6 _, Z2 S
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
3 M8 A5 Y6 O' `9 g9 R3 b - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节8 E0 Z, `' c7 R# e
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y! o! X4 \' g% e- g- \8 I( G
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束): f* U1 J8 H, E! N
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
; S( P- K, M4 o% p - ADDR_9387: LSR ;逻辑右移
! g* h1 w" K0 Y2 l5 T' l - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节1 T/ _- [: I7 {- ]: q; ?
- ADDR_938A: LDY $0000 ;设置Y==#00
2 S; l; `5 c6 w - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
7 [ n( b* y. m/ |# S4 F3 ] - CLC# B4 _: G s9 b6 p$ V* Z# }. h
- ADC #$02! D3 C+ J, Y8 F7 w9 n# b" D* S( }
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
$ v/ a% X# f4 n5 v% ? - ADDR_9391: CMP #$08 ;比较Y==$04?
8 a9 G+ x) h1 G8 q0 E. G5 k8 s - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节0 O. j8 T4 l- r7 r1 A, \
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A' N1 M8 G0 p* ^$ G8 F- w
- ADDR_9397: STA $0001 ;送入地址$01
. e0 ?" M, I2 p- I) q4 ~ - ADDR_9399: DEC $0001 ;地址$01递减) ? H0 Z" ^5 M3 ~ d$ h( h! @
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节8 c3 O$ w0 T, Z( W4 t- L: U% h
- ADDR_939D: LDA #$08 ;设置纵坐标数值
& q6 y: ], E6 h" I, D - ADDR_939F: STA $0200,X ;送入纵坐标地址
/ B4 A' v9 k7 b0 C0 W( j - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据& }6 \- U7 M/ f3 I
- ADDR_93A5: STA $0201,X ;送入图快号地址* i4 j: E5 O! _5 r; E$ e% `& X
- ADDR_93A8: LDA $0000 ;读取属性值数据
8 p/ e( u( d+ J7 p. ~2 T3 z - ADDR_93AA: STA $0202,X ;送入属性值地址7 N& E# }( S; W5 b4 V6 r
- ADDR_93AD: LSR ;逻辑右移
$ d* ~9 @" I; Q. y {1 E - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
7 ~+ f8 N7 O! J: D" t - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
: d" ]. ]6 Y# x' U h0 l - PHA& j* j+ y: @$ A+ e8 u
- TYA H6 u; x2 D# I. \* n$ l+ d
- PHA
. O e: e5 @, @' E - LDA #$D48 r. W/ t0 N) M" g" B+ r$ h0 V' j, Y
- STA $0200,X/ b- I: A5 c! k' n8 i1 h
- PLA6 y1 t1 q0 Y# ~7 \* @
- TAY
7 g4 U( k9 Y6 v2 C - PLA$ g# v! k! I/ Y# n/ t1 z7 j
- ADDR_93B5: JSR WEAPON1 y6 w" W; Z5 H( H$ l
- ADDR_93B8: DEC $0007 ;地址$C7递减9 T/ s. b3 F- u1 e m3 R* {8 _
- ADDR_93BA: TXA ;X-->A
/ _4 b! l5 g6 Z `* Q - ADDR_93BB: CLC ;清除进位标志
5 r! s0 Z% K8 H* G - ADDR_93BC: ADC $0010 ;加上地址$10的值 N. L. S/ S' G5 Z# p7 ]0 i/ `' v/ B7 Y
- ADDR_93BE: TAX ;A-->X9 ]& L+ [# d' t, R# Q2 k2 S+ I
- ADDR_93BF: INY ;设置Y++
* }0 p; Y4 n& r+ c! ? - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
/ C, V0 P% H2 G: B% A5 e - ADDR_93C3: DEC $0000 ;地址$00递减# F l' J/ P3 J B: R4 }
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
; K# L8 h/ [6 M - ADDR_93C7: STX $0004 ;送入地址$04* k! ^/ N# ?& u% v* ]: r: q2 A- X
- ADDR_93C9: RTS ;程序转回-----------------------------9 ]5 X" D' X+ Q- h
+ m$ E! L: P2 H( F9 g ~9 i- .ORG $FB60
% `% W+ e3 p& B) _, e5 h - ADDR_93CA:5 _) [% K5 M; U D
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号/ v$ O1 {+ ?7 \; o- n, n8 y! [
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号( s9 y& x) u$ K! M
- ADDR_93D2:8 e" _) @1 t7 h2 v, D" z# h
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
( U" y3 J. Y" M - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
! e+ V; |3 k5 I, G. o: t6 n6 t - 3 R! O6 d* x* y& _. n
-
% n$ K# h2 }+ b, D - .ORG $FB802 L6 ]& b& M/ d& K! J& b
- j% b( A4 l7 g. x: S* T
- WEAPON:! N, H& [1 v) i0 C$ i7 ]) i& d
- STA $0203,X ;送入横坐标地址
. ?9 G8 X4 i, ?3 r6 V( t - PHP; ]5 V" c: x; X. T) Q: k
- PHA
; [2 H6 g" @% S, x# g4 [; f - TYA) D9 u1 _; x& Y- ?9 k9 [3 e7 z: O5 ~, W
- PHA5 J) s- i0 |+ n8 w. p
- CPY #$001 v6 c! Q8 K& q: R3 B
- BNE LB! i1 G: e! X: G) @' }. Q
- JSR S_WRITE ;第一个精灵
! v g# X9 U: P& ` X* g3 ?6 g& S" @ - LB:2 ?; g, v4 K4 K p( e5 g' f
- CPY #$01# V" `. b9 X3 S+ b) ]
- BNE RE
' J+ {7 R- E2 X+ N" Q9 J, F; Q6 U - JSR D_WRITE ;第二个精灵3 w; h4 x3 h7 R3 y0 v
- RE:
: v3 \1 \4 p* ]4 y- T7 q- | - PLA* R" M/ i# T2 I; L4 L5 O S5 d8 N, n
- TAY
/ z2 S& K& x A) e' H - PLA
( k* _, q/ U7 a- V( Q - PLP
; Y$ x$ J7 ~' {2 x" F) V% D - RTS
/ Z. {! i& Y9 e* V - " a; h0 A; c3 P3 [. K, V7 W: b* O
- S_WRITE:1 ]2 O' W) `* V* D% }! K0 @
- PHA$ z! {$ x$ {' U. c
- TYA- R( Y* ^" [% o( t
- PHA
' b. r7 b* }$ P/ }) b$ Z - S_CMP:# b' U" c5 H: y
- LDA $00
3 a% S, U; [4 V( C# b( [ - TAY' S5 t; B6 g' Z. E. S
- LDA $AA,Y ;读取武器值
! C# B1 J5 H- H w - AND #$10
$ L* C9 v( n c9 {2 E. h - BNE S_WEAPON
`; N6 L0 ~! g8 x$ o% X4 k/ G; t - M_WEAPON: ;普通状态
% W( H9 j7 V/ H+ T% n- C6 R/ ^7 S$ G - LDA #$26 }( T" n# G6 L
- STA $0201,X2 H( P5 ^; C4 A3 q6 Q. e) j5 |( {, T
- BNE RETURN
; @% ]3 p2 g9 r8 B- Q - S_WEAPON: ;加速状态
$ z& }9 n/ y: M9 g - LDA #$1C# c! E* W( j* s6 t) [. w7 Z- t- m
- STA $0201,X4 b% \6 [) Q* C& [% @% h0 [) J
-
* G+ w, V6 C2 i, z+ V -
) g& ]1 B- @' h7 r - RETURN:
, ~1 R4 c2 {; [5 |$ C - PLA
: D' e, t: v4 B5 C4 \) B+ R# C - TAY1 O- \& [' i+ ?( X) a- n: A; j3 X) b
- PLA
: k% e, m* M3 k$ _& ]+ x5 z - RTS
8 N! E' I3 K$ N -
( U4 r+ L D6 o" R6 V
5 l! h1 T. G R, ?- D_WRITE:- `$ U1 _' d9 p- d5 u
- PHA
8 j: e: Q; B& ^* c* L o1 Z - TYA
5 \5 F7 L' D+ }) m2 \) q8 b& R - PHA
: c# H6 v6 C* \# {; q# Q3 b; _ - WEAA:
0 J& B( a% {0 C) V/ z, z8 Z - LDY $00' N3 a! C0 [* s' f4 h
- LDA $AA,Y
/ x4 n; r' k" M0 ^/ \* \0 G - AND #$0F
% \- |2 m5 K. l# X1 |0 j - TAY' R) }' }+ @) e) _6 t0 y
- LDA DATA,Y1 D9 p5 x- @, l
- STA $0201,X3 s) \/ [1 i6 X4 ~" _
- 0 R* M: |: w, Y+ T8 \2 p
- PLA
( m- F0 i m0 b* u" u& D( P3 m - TAY) x2 Y$ O+ E/ D+ g
- PLA$ J# H) e; d' a9 ]4 X7 Y% B) g
- RTS
3 \, r3 T$ h8 j, U8 } t - 4 h w- j$ ~9 {7 P
- DATA: ;武器种类图块/ m4 p3 z9 r( k4 m
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|