|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
' F& u+ i, ]' v! _$ K+ v" Y4 Z" E2 Z3 P
2017.3.13, `, `- O/ r: ?2 ?* C+ R! {

, X5 X, P# Q- N$ K# V, N ! z" a$ ^" v# t; \) [3 M9 Q7 X$ ]1 \

5 H6 i7 k+ M) }& F2 l/ \+ p! K- .ORG $936E ;CONTRA(J)( T: [( O6 B. Z5 ]% v1 f1 Y
- LDA $256 g2 A B" j/ U
- BEQ ADDR_93C94 K& ?5 K: W2 K# N4 K9 q
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)- x; M+ Y6 j# j; c; j% P
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
, z, k$ }! q! L% U9 N2 [6 Z - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节4 c6 c) d/ a3 N
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
% [4 N, L; D g, l! i x* _) A6 c - ADDR_9376: STA $0000 ;将累加器数值送到地址$001 P; e j j$ j2 R6 O: R: J
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
! d# o l; a, |3 C7 w( U - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
$ E) V F2 _6 Y* |- f5 f9 y - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A- b1 H7 c+ A9 B$ r
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节! O+ Z* G. y8 D; J& A) B
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
/ I; V, z# F! \# U - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
% ]- [' s: K& R7 _ - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y# |$ Y+ e2 I' A' a) X+ Q5 p
- ADDR_9387: LSR ;逻辑右移3 U6 \ L. D1 l3 H; F' b
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
2 b- F e+ Y- \4 K9 R I - ADDR_938A: LDY $0000 ;设置Y==#00
2 _2 p8 J% Z+ ? - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A! w) j- U: E' Q2 B/ @9 t
- CLC
: L! M2 @8 U& V, p a) t' g - ADC #$02+ a w+ `$ H5 E9 Z
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00# x: ~( }; Z( r8 h3 l4 P% A
- ADDR_9391: CMP #$08 ;比较Y==$04?" D3 L! a0 ^7 H
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
" \& x/ u$ C: ? - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A5 _+ j2 t; t# @
- ADDR_9397: STA $0001 ;送入地址$01" \" M+ y' ~1 U' s2 K( L
- ADDR_9399: DEC $0001 ;地址$01递减
% L. `2 H4 A0 n3 Q: r: G - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
3 a5 {3 g0 ]! `; W( R5 h+ n: I X - ADDR_939D: LDA #$08 ;设置纵坐标数值' X& w' C" k3 ?9 a5 Q0 X) N3 B
- ADDR_939F: STA $0200,X ;送入纵坐标地址
5 e( W! _5 w& } - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据8 b% d; H a8 P6 X- J
- ADDR_93A5: STA $0201,X ;送入图快号地址
: X4 f) V) |9 q, I - ADDR_93A8: LDA $0000 ;读取属性值数据8 U* [4 D h/ _2 H$ m
- ADDR_93AA: STA $0202,X ;送入属性值地址
. k2 K2 M( u% K% r - ADDR_93AD: LSR ;逻辑右移
8 c% M9 e; N4 u% r7 Y! K - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
, Z# J4 m8 s* t - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
3 v8 h" d& |5 k& | - PHA
' T7 `0 s: r5 d1 S - TYA4 }: `# J- P; z$ C- R
- PHA
9 e& ?5 v# S4 a9 I" c - LDA #$D4
- `3 K; S J0 [* g' r1 G - STA $0200,X! Q" t0 N: i+ o3 }3 V3 u* P7 R
- PLA) L8 Z4 K* {& ^. j0 L3 F, v
- TAY& }' ]4 K9 k" ?% p3 I
- PLA
& ^: u7 V. }! K5 n - ADDR_93B5: JSR WEAPON
7 ^- M+ r- w' L- h - ADDR_93B8: DEC $0007 ;地址$C7递减
O$ w+ U4 W5 C$ y$ I, v# T - ADDR_93BA: TXA ;X-->A4 h" r" u' @# Z) J0 [1 u
- ADDR_93BB: CLC ;清除进位标志
- x0 s( d- Y& V" R: L - ADDR_93BC: ADC $0010 ;加上地址$10的值7 U' ]) t( r. E, ^( L, D9 k& P: S) H
- ADDR_93BE: TAX ;A-->X+ c) D, K" a" C% {: ], d: ]5 r0 x9 M& U
- ADDR_93BF: INY ;设置Y++
/ z4 g* \2 W) G6 ] - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
& `$ B8 ?. L7 R& s8 @2 _& R- A - ADDR_93C3: DEC $0000 ;地址$00递减) x$ W! t3 n' ?, R( {
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节0 w, A6 ]" M- b ?% }
- ADDR_93C7: STX $0004 ;送入地址$04
+ I' d( J. Q- w1 W8 ~8 p - ADDR_93C9: RTS ;程序转回-----------------------------( t( B9 P0 G" ]5 B4 t; h5 a
3 ]- k- c& v5 a( D* ]$ [7 Y- .ORG $FB608 S* M7 u6 u. B! o
- ADDR_93CA:
9 l* R2 v: E& k/ u/ D4 ^+ \ - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号. B7 i j; Y3 b1 J0 R/ a
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
D' |- f% P/ `0 ]. B - ADDR_93D2:
6 e, ?0 `; }3 r. | - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
/ j4 |$ L- }# V3 P2 I - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标) ^% z& T! v" t, p5 O* U" c
- 1 }/ a5 f. |! t
- 3 }3 s. Q% S( G9 q- l6 V) x
- .ORG $FB804 t6 v4 g% v6 |
- # [- R+ I Y% a( ^& K6 n) R( `% P' U) A
- WEAPON:
+ i C/ I: c: w0 p$ G - STA $0203,X ;送入横坐标地址
, d) L7 T8 O0 j - PHP
7 `5 H3 c! `; s# {8 A4 y) ~ - PHA
# l/ c: c4 j4 l4 u" u# |& y - TYA: Y. P' r" K/ V) {; \4 H: L1 T) L
- PHA2 P1 I+ l1 m/ F- ], {' H
- CPY #$00
# Q; V8 w" E0 v) k% b8 Y: u - BNE LB0 D9 V: f( P7 b6 S0 h
- JSR S_WRITE ;第一个精灵
% |& g6 l, h+ M& l+ Z/ l# e" f `" A - LB:9 B; k' p e M
- CPY #$01
5 K) y0 [% {% W8 v$ @ - BNE RE
$ }) D4 U% Z J8 H8 Y3 F5 u - JSR D_WRITE ;第二个精灵
p4 n, m f7 w% J" m - RE:8 ~9 o3 k5 c- O' y
- PLA
* U. Q, X# P. }' x% C8 o# k/ K! M - TAY
8 j( J7 \; V& ~ - PLA
# m4 [' j( [$ y5 M; Y; X/ A - PLP/ ^# P6 W% ~" p- v9 v
- RTS* L3 O- W" L& ~5 z: b/ C. N
- * R$ h4 z: \, v# q" ?8 }6 Q6 Y
- S_WRITE:
' m; q+ A' V4 X5 I) ~" I - PHA" Z8 b" z3 R) R. T7 I0 X1 _
- TYA) K3 V) x$ q5 j7 Z: j& H
- PHA/ ?- Z5 t! h4 J
- S_CMP:2 e8 a0 z2 p2 S
- LDA $00
" v/ g3 ?" k j) w* |" d8 E - TAY/ V% y) f# `6 V$ d4 ?2 Q) A$ j
- LDA $AA,Y ;读取武器值9 N+ w8 p- Z) h! u7 g. K
- AND #$10
: V3 {6 V/ o, O% `, E) U - BNE S_WEAPON3 `- w9 S: z4 s7 Z9 Q! d9 M2 w* J
- M_WEAPON: ;普通状态
! w6 ?/ Z& x- o - LDA #$26/ t# G- O& u# n- X8 n; z
- STA $0201,X3 W) ]; z6 K1 {* k1 v
- BNE RETURN
. f" F5 y9 }& t. u - S_WEAPON: ;加速状态% t3 H5 U C$ i- f
- LDA #$1C( X' _9 q* o& e S8 M
- STA $0201,X3 L; t* E, M# U2 F0 R2 W R: _' Z% h
-
$ V5 t1 ~" l% ] -
& R) N; I K" i9 X - RETURN:
+ D3 d! V& r$ p$ h- M3 ~3 A - PLA
/ n( K1 K9 @4 h - TAY- v0 ?9 @" s' ~+ J) Y4 H
- PLA" g5 q2 P7 z. i
- RTS
' s1 `% Q3 o2 f7 H2 Z4 H1 }$ o -
* [/ x/ ~) S" o& B
7 P a2 X/ M6 J5 y9 m- D_WRITE:
7 m2 y6 k; w+ I - PHA
/ X) x$ j4 X7 y# b1 X - TYA
1 R, D" j& o- G: [% V& e7 o9 y" u7 B - PHA
. ~5 X4 g3 q' Y; a* i - WEAA:
. Z2 Y- i6 }% i4 N, \9 U' n4 B - LDY $00
. m. }+ R7 @* T* f# ~ - LDA $AA,Y0 P% k0 Z& {, K5 N* z
- AND #$0F0 P0 a( V+ v( J& A. N& |
- TAY3 s& P( n! E( i# S5 ?1 C
- LDA DATA,Y* Z2 v }' x8 C8 P
- STA $0201,X
2 P! v4 P7 K1 c" V7 B5 c -
6 _2 M! S) ~" @+ Z - PLA9 X4 `4 L* P/ u* c
- TAY' n j, L" C" ~3 y4 g
- PLA
5 i0 X6 }0 e. _+ Z - RTS
2 ~' v# ]2 Z" ^+ N$ V0 y -
( ?# R1 r. M7 n7 ~: u - DATA: ;武器种类图块, R# P1 V& ~: R) I% |/ S; O2 c
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|