|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
# j3 N/ s, T: |) P! q8 F0 ?- E! p1 J7 u8 u* @ b' U9 r
2017.3.138 R. G. T1 s5 N" X

1 G3 s* N% D4 V) ~' S* y- ~3 ~ . \" f# m9 J( \0 v8 c0 ?! s: J

8 C8 c$ c2 d6 m$ q' a: a- .ORG $936E ;CONTRA(J)
- g. a& n! I1 y" J: l( p0 S - LDA $252 J- S4 s) x, t% ?! r& D, ?
- BEQ ADDR_93C9
$ n v8 p5 [- j0 `+ f& t' y2 b - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)1 ?9 P J+ d. |% b C! v$ {
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y. `1 }% z0 B$ ^
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节/ Q0 t! x* e6 R( ~$ W
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A' f& \2 P$ Z" M6 l7 F
- ADDR_9376: STA $0000 ;将累加器数值送到地址$000 [. \6 K5 k$ D: N% G+ h8 J, i! g
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X) E7 C1 p' I+ @8 a* N0 |) k
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
1 g' v2 U) V, ?( n - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A: W5 {3 U/ r/ N4 a
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节" M9 p. o6 e; n
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
0 ~7 ^5 W x2 e - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)( R+ j2 ]4 Y7 n. g1 Z
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y) |9 V& Q/ l$ t1 P4 {
- ADDR_9387: LSR ;逻辑右移
. _# v" \) Q) M. U! k! k% d - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节$ G% K6 _8 X5 O: W
- ADDR_938A: LDY $0000 ;设置Y==#00
: U& i7 F: K1 v1 j - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A# U7 J; _3 b$ Y! ~
- CLC
4 s% ?6 `$ o7 W" a5 q - ADC #$021 y- Y# D) ?/ S( _' E: g
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
# M1 ^1 j& o3 [ - ADDR_9391: CMP #$08 ;比较Y==$04?9 c5 }% q- W3 g0 d- }0 r
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节! k" w6 q o! f. O) W6 v* d( [
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
4 k3 I, B( q& L - ADDR_9397: STA $0001 ;送入地址$01
7 ^5 [" G) C# L/ H6 Q- r$ K - ADDR_9399: DEC $0001 ;地址$01递减+ |& U& V% c& f7 j6 O8 C
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
$ {0 d$ N$ ?( T0 G0 x* \5 o" ` - ADDR_939D: LDA #$08 ;设置纵坐标数值
; i: [+ g) u- C" b( k- P$ v; G - ADDR_939F: STA $0200,X ;送入纵坐标地址
3 ]2 s& Y/ }. w! ?5 Y2 y- y' Z - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据/ [; I, R' v0 Q6 _; b6 T5 |8 ^
- ADDR_93A5: STA $0201,X ;送入图快号地址" V- W9 g9 K' C; C. ^
- ADDR_93A8: LDA $0000 ;读取属性值数据
4 T$ H% x# E) `8 D - ADDR_93AA: STA $0202,X ;送入属性值地址
. Z. T b m; I/ x+ d3 G) U- T - ADDR_93AD: LSR ;逻辑右移
3 L' n6 V! n* b8 C/ S T& Q - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
4 {3 A) J+ D4 J; U - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节6 [5 Y: j2 w: h2 U6 |
- PHA# _( R+ i5 `0 u3 C
- TYA7 s8 Z3 Y' i5 Z- K3 [
- PHA
# X8 \7 @/ Y) x+ m. K2 d; L; L. y/ h% s - LDA #$D4
4 _4 R7 s& t( B1 e6 t2 g; w: Z: W - STA $0200,X
) u6 o+ N* p/ @6 D0 [, M( |, s7 f - PLA& t7 M8 _8 \9 u' M7 s# }8 _
- TAY
: Y0 H' L6 a( t' E/ p2 a& z - PLA2 q- c+ t- n6 N8 w
- ADDR_93B5: JSR WEAPON
; p% f- ~) P( M' v - ADDR_93B8: DEC $0007 ;地址$C7递减
( p7 W+ ^" {" x - ADDR_93BA: TXA ;X-->A4 w5 C5 P/ S& F
- ADDR_93BB: CLC ;清除进位标志! z0 L) f% G: q6 ]
- ADDR_93BC: ADC $0010 ;加上地址$10的值0 i( E* \) C; n% k: G6 X. U/ S; H' Y
- ADDR_93BE: TAX ;A-->X
7 z, y+ W1 j$ t \) y& P - ADDR_93BF: INY ;设置Y++0 q& A# R/ w) C, ]6 j
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
7 L, W: L* A: t4 M' Y* ^- p - ADDR_93C3: DEC $0000 ;地址$00递减/ B. v- v9 f0 \
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
' }# j& }( K* f- B; ~5 j* J b - ADDR_93C7: STX $0004 ;送入地址$04
3 Z# ^0 Y* b1 P3 E. L7 J - ADDR_93C9: RTS ;程序转回-----------------------------
2 [% k& e. Q9 R+ G - : O/ L/ D9 p$ s' z
- .ORG $FB60
2 {8 J0 I3 Z* l' s( l - ADDR_93CA:, Q: b" d L, a: t; {' M
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
. g) ^9 N- q2 b, s8 D" L - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
3 I/ j( ]' X$ W - ADDR_93D2:
1 u" S+ l$ X; C- W/ c- \0 j6 G - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
' ]" ]$ t2 ?+ m: T: x - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
3 v" i) n) ~" S3 W- h -
4 d _% Q6 w2 C. _" \8 ?$ h! P -
- F3 n8 G9 p8 ]' R$ j5 B: m - .ORG $FB80; s* o% S0 v1 x2 r8 ]% D+ Y
-
: F* g" i1 q1 y - WEAPON:
( H6 P) x* ?0 e/ l7 Y& q - STA $0203,X ;送入横坐标地址* V7 v0 F @: z/ \
- PHP% j) o9 m( t& r- |; Z
- PHA
! |8 Z' J: l9 C5 J9 y8 j, f: u - TYA
/ L9 @( s+ X" o I" X; Q - PHA
4 L( t) e; K" u% B - CPY #$002 a* ^; c1 q( B6 ]9 `
- BNE LB
; N# C1 @3 ]0 _/ H) ~. y" F0 r0 n - JSR S_WRITE ;第一个精灵+ }8 l2 G/ u z3 L+ I F3 B) ~
- LB:
$ p" |. S1 c8 n* [2 E - CPY #$01
, D* `6 p0 t: b1 w+ p6 |! k1 t' `3 o1 F - BNE RE
9 E; g* ?2 m! z- V) J# o - JSR D_WRITE ;第二个精灵) i p& o' C7 C* t
- RE:4 v8 E; v. n. t8 G
- PLA q& @( u9 }$ S
- TAY
; a2 |* T- [8 p( N8 U - PLA
H, @& u) A2 Z1 q8 p$ ? - PLP2 O# A' ~6 _+ p7 \. n" E+ U
- RTS8 Q4 e& m _6 ~6 H$ E% ~
- 7 f( y6 V( s$ ^# f% y+ B+ W
- S_WRITE:
- Y1 y* u$ i7 H( r" V) e! I: V - PHA9 _' J W" u) e
- TYA
- {- k" M4 U6 G9 H) X, s' r9 R+ L* R - PHA
9 g9 ^; |4 L7 `! x. l8 P - S_CMP:+ h8 A5 W5 f& Z" e. c, Q( D F9 Y; c
- LDA $00
. j: ~( I+ L% V0 F Q& j7 o - TAY6 U/ ~9 L: q& X% u1 d4 Y) }
- LDA $AA,Y ;读取武器值
7 ~! p8 U. |* t+ A4 E - AND #$104 _3 c7 V" @9 o" C0 \: N! G
- BNE S_WEAPON+ P' Q2 G1 [5 q. ]6 k
- M_WEAPON: ;普通状态
9 K. O! g3 e x w - LDA #$26
! {9 K A% E$ ^+ e - STA $0201,X8 C3 ]6 t0 [$ \/ N; r9 r
- BNE RETURN$ q: `8 }6 I% ]# q$ g5 C
- S_WEAPON: ;加速状态
! Y. u( a1 Q. E3 h* v' ` - LDA #$1C6 {( q- m# j' h+ C" q3 C6 ]) w
- STA $0201,X- T n% j a6 \% N0 R3 F: x
- * c7 V6 J0 f: B0 q* f4 E1 P
- 6 @5 Z0 q; h$ ]' Q8 w
- RETURN:
. @- a+ }2 L1 r2 P8 j- o& k - PLA
& K1 b; A, Q( _7 S, q - TAY
9 r2 g8 f! C# v - PLA# Z( C: w( f7 F% a Q% M
- RTS
$ u j2 S8 W6 x: ~ - . y% T3 a0 R) F; n
. j# h4 N8 a' A2 K- D_WRITE:
) l: ~( \9 f+ P H$ k" | - PHA
$ \" l2 ~9 ]$ c5 ?/ O& z - TYA! ]: ?1 k& [: }: c' ?/ A1 [) l8 {
- PHA
# c9 ?/ p; w4 s% X) ]! Y7 T - WEAA:
' W/ O& ]* g3 ^& ` - LDY $00
2 u) z2 B" c$ }8 i9 g& i; z/ E - LDA $AA,Y S. x' H. M/ i' K* ^# D% G
- AND #$0F" f# b; ]/ O& _! O9 L
- TAY( o" s( V9 W) o( H0 `
- LDA DATA,Y
* h# K, J6 G9 V% W& e- Z& _ - STA $0201,X
. q/ Z0 }" [, J -
& U/ e& v: m' Z9 _8 x/ X - PLA
. Y5 w7 v6 K) s2 G3 s- d - TAY* k# M6 O/ ?5 [- O
- PLA' B( s( z _* e$ l! Q
- RTS
/ ], b2 x$ m/ d% [, B# G" a -
8 Y0 `& A0 G: h* R# b3 o7 ~ - DATA: ;武器种类图块
9 ]+ U2 O+ H6 l& A! k: g5 s - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|