|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 . P% x0 M: h5 _* r& d! H3 k
& ?, w& |6 z( h
2017.3.13
6 a- l4 o- U7 ~! a" b 6 D3 k# Q2 R+ b6 |
2 _( u0 v5 y* J; D& z) y& a; k* s
# r D4 F+ e# q; S
- .ORG $936E ;CONTRA(J)
, d' e7 _5 S" [7 _* I( C$ j9 Q - LDA $25
/ e, M$ B! \0 i! Q - BEQ ADDR_93C9" Q9 f9 \, G3 Z9 G& I+ [
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
& W% t4 U2 h8 X1 E+ |+ v5 h# K( k' X - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y& T& a. V7 E# t, p8 y& ~! p- l
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
8 G. r9 S% Y7 f$ z4 H - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A% r3 K, r8 l" e- M- B& W% @
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00+ z7 [6 |) n- f/ B9 d
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
! W7 l# A7 U9 f) P( _, \ - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
0 `+ u8 x, g- A8 p3 Z1 T - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A* l( I6 k% b+ e1 }. p
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节4 V" }: {0 |. ^7 O6 O. {6 K4 c2 w4 J
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y9 L7 }' w. C$ \3 d! `. n. l" h/ L
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
* n; x2 l" r8 M - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
, b9 S2 m- c1 B& {$ ` - ADDR_9387: LSR ;逻辑右移' G) z5 Z2 P, e k d
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
7 d2 W' O. I) k! B+ h/ M - ADDR_938A: LDY $0000 ;设置Y==#00% x' e% x1 d% k( Z& y
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
) ~; {1 j; ?- P - CLC% G" b1 o7 B2 n( J
- ADC #$02+ B9 _1 Y- {+ }, L8 s1 c
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00; p) K# j" X) W: z& p( ~8 D* Y
- ADDR_9391: CMP #$08 ;比较Y==$04?
4 B' M% {; y3 r$ @$ [2 r$ N# J9 N- g3 H - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节, K J( N2 v" J# I0 Z$ T! b
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
# S, F/ V" m( V% m) T8 ? - ADDR_9397: STA $0001 ;送入地址$015 Q' i/ `9 I0 J2 y4 q
- ADDR_9399: DEC $0001 ;地址$01递减
2 ^- P, I [4 p* E2 z( p) l4 v - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
8 y5 O6 B3 t9 L* w6 z. a - ADDR_939D: LDA #$08 ;设置纵坐标数值 I) k. ]7 \% q& |
- ADDR_939F: STA $0200,X ;送入纵坐标地址
/ }+ {% ]- d, }: p& \1 y2 y7 ~ - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据1 P+ |. x% s) s& Q0 t/ F
- ADDR_93A5: STA $0201,X ;送入图快号地址: b8 e* |9 w3 ]7 D
- ADDR_93A8: LDA $0000 ;读取属性值数据* ]/ y% b& J) T; k+ M6 e2 V
- ADDR_93AA: STA $0202,X ;送入属性值地址
1 [4 t* a7 P1 c1 K# w: R% @6 N4 F - ADDR_93AD: LSR ;逻辑右移
! s3 F; ]7 a* z - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
5 {/ _/ M4 F' r# C( w - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节5 A5 E; [& F6 R9 L& L
- PHA
/ W7 M0 s3 `# E# c4 m, l - TYA% X+ L V; q; i& B- ^( e! A3 C
- PHA
3 _9 A. H% }) ?& C) N; Z& m4 M1 } _ - LDA #$D4- B( C. r+ A' k' \' s- |
- STA $0200,X' M" A7 r" G: b, ]5 |
- PLA7 P* ^, ?) S# p' [% T
- TAY2 H3 J0 s" v: `! j# X" X
- PLA! w6 y) U, j+ l) U
- ADDR_93B5: JSR WEAPON
# U7 K. f) t+ H. \- U- g - ADDR_93B8: DEC $0007 ;地址$C7递减
& p% S" Y9 I. M2 K; c - ADDR_93BA: TXA ;X-->A
- _ n1 o) a* S1 k - ADDR_93BB: CLC ;清除进位标志
) h+ y% Z( B' u6 |- D0 Y7 W - ADDR_93BC: ADC $0010 ;加上地址$10的值
) t' t5 {6 S% ~1 _% B+ k2 A - ADDR_93BE: TAX ;A-->X j0 a, v5 u: e# A- M9 I) d2 k
- ADDR_93BF: INY ;设置Y++5 S( n9 _7 \) x u) o
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
) P% E! t* t4 ~5 g1 J - ADDR_93C3: DEC $0000 ;地址$00递减
z2 j2 D$ w4 Q - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
# G5 ^/ m- ~1 \5 n r! Z% P - ADDR_93C7: STX $0004 ;送入地址$04" j+ v# j2 ~) d- G2 l. Q8 T. P b' G, X
- ADDR_93C9: RTS ;程序转回------------------------------ q5 k( o/ p+ }$ S& U1 l, j- @1 L- @
& L' Y! ^; m( M; o) b5 o# d- .ORG $FB60( Y# O2 T# e4 Z. c, i1 }
- ADDR_93CA:+ F# G) {1 |" P2 A; f( m
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号5 h( v0 c# g3 U! J$ F, w
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
% e+ c4 A6 W3 O' Z2 i, {! ~# o3 B - ADDR_93D2:
5 L. F; ~) j# m; k/ m - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标' w/ `* [' b- ~ z# G9 a$ d) }
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标 n! v- _, R" W7 T B( x# }
-
, O7 T* @6 x; g+ W7 A- y/ D - $ B- g! ]) z$ S, I0 Q
- .ORG $FB80
! A/ M3 e9 ^! |* o- Z& ] -
9 o2 `) K8 D( [1 s - WEAPON:( E4 T: j+ I9 B) w/ l( R
- STA $0203,X ;送入横坐标地址
8 T8 @$ m9 X0 r1 y) G - PHP, Z* y# X# l9 P% e/ E- v) a
- PHA
2 K" W4 Q& }& U, i6 X, P) U - TYA: n0 i5 e- r. V
- PHA `0 w: ^1 `4 H* _! M" ]/ h
- CPY #$00% l. a! m: l9 x4 {+ R
- BNE LB
' z4 d# ^: d' [0 M5 P6 R1 W - JSR S_WRITE ;第一个精灵
9 v: _1 ]- t2 T1 c8 W5 P& h, f0 p - LB:
k0 y5 H& @, |, P. Z. H3 d0 V - CPY #$01% [( m2 D1 v! ], ~# z
- BNE RE6 O! z, f- p! ^! h/ O
- JSR D_WRITE ;第二个精灵
, V4 M5 l8 y/ O; O& n0 a; U - RE:
5 l% t F! B0 N+ t0 v( { - PLA
; I' G1 `" c' [' _: A - TAY0 }# t6 \0 x4 q1 P; h
- PLA
2 @8 [! r" x8 _8 l) _, ~ - PLP
. Q/ C6 {7 u9 m* |; L! g/ x - RTS- j* y* R4 }1 a# s/ u
- 2 \9 O- ?# `+ `6 Y3 Q9 L
- S_WRITE:, g: x' q1 T! K5 S
- PHA
: s, q0 Z; V) s* y, a: w; z - TYA
! x5 u% Y$ P5 M5 Q - PHA$ Y* K! y% Q, e) m+ x
- S_CMP:
9 p4 }5 L; S! K( ^ - LDA $00! v$ F# y9 _7 \% ]* h. s" _. O
- TAY' V% F6 _# a0 U) |
- LDA $AA,Y ;读取武器值
0 g2 D* o/ k( h, { - AND #$10: b) t8 h# [6 e5 N( ^$ L
- BNE S_WEAPON% v. I* s) Q- g1 i
- M_WEAPON: ;普通状态5 w) _' K) b# e
- LDA #$26
- V& i/ z% l/ P7 H - STA $0201,X. }' i( A+ N0 H) S7 K) n: ?
- BNE RETURN
3 ~3 g$ _3 o" |4 H+ ]/ J - S_WEAPON: ;加速状态
) {3 V! ^! M" n9 N - LDA #$1C5 Z) j% T( @ t/ m" T
- STA $0201,X
. y: W+ _2 S7 K: j - 6 c' R9 l6 @" y2 A- Y
-
! j5 C: [3 Q2 m - RETURN:
5 S7 m( N: M# |' U/ H, T, m4 d - PLA
& _$ c% t- O: u) P) j$ ^ - TAY% W& B. x o! n7 g' F7 ~5 J
- PLA: p5 |; u- D3 j4 J# p* s4 h' l
- RTS
0 t* F1 K; R- \( D) |, t - ; A! b) w6 f+ K m- @( U
- * v2 T" J2 M6 u. ?* f
- D_WRITE:9 H) Y F- x. f p7 H* P# {$ y- l
- PHA. \! r! R1 y" T
- TYA
+ ^6 N0 w$ y P+ i - PHA/ ?% W) `8 g! ^9 w. f
- WEAA:7 {& w$ g/ [$ ~% n+ O9 I
- LDY $00& c) Z/ }( @- D/ W' @
- LDA $AA,Y
+ F: U# F' G' w" m, X5 t - AND #$0F
: j- L; k/ V5 T/ z - TAY3 V- f4 Z! E' N$ g& s- z1 o" M) ~
- LDA DATA,Y
1 y. z# ~$ b" A" }; L3 M4 {" W - STA $0201,X
, O4 b5 e0 Z7 k, B, l( Z - 4 v2 Y! ~/ z0 O2 H
- PLA
* e- c1 N/ E( m, n - TAY" l4 ~4 L+ u, Y4 c
- PLA
/ m( F5 b* {, M4 `& ?. y4 U - RTS
8 \" D% @6 d" J1 A; ` - n$ L. H3 Y: d; p
- DATA: ;武器种类图块
% B$ P0 X; Y. I% o5 I' P - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|