|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
; U t; P( Z3 C& Y$ T7 `: V: P E0 J' I$ J
2017.3.13
4 l9 u/ _7 D4 [
% B' s8 m. _3 S2 I1 N. M) g3 l
5 k. S( S1 X& K) h$ d 5 Y6 F$ n- b9 u$ w4 A
- .ORG $936E ;CONTRA(J)
7 w2 ?* m) Q! j# F - LDA $25
/ C5 ~5 _8 N3 q! A1 N% @, a8 O - BEQ ADDR_93C9
0 x4 u( [4 J) q+ ]2 O - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)# e9 O, l/ Y5 _8 E
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y) U4 Q3 H9 D9 D9 [1 W" r6 r" U
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
& w( n8 K; L# |. X4 p# _ - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A1 y: H* e# |/ g3 G% ~9 |
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00* T3 m' x" T9 K. A1 v' Q! E# z7 G
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X4 x8 @9 Z; E3 }
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
{/ m' k8 Y% [9 w' K - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
% U2 Y: D* U! v& k+ o. j! a - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
& J+ E7 _, R s4 B- W - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y$ j7 r& n: t) Z4 t
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)4 q* i Z4 |; n ]* d
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y9 y) o2 p% V; y- }; @* |$ _1 G
- ADDR_9387: LSR ;逻辑右移: q# n% B8 s; v4 U2 A
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节, L& p; B6 s* `: i
- ADDR_938A: LDY $0000 ;设置Y==#00
3 i2 }! b0 \$ f& A( l, G" Q* Z - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A/ v9 B' a1 ~# k5 p
- CLC
5 L$ s$ }& d/ f: d, ]& X. Q0 ^ - ADC #$026 R: S; D) G' L5 p: s
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00& j, A: }" {* d$ ]
- ADDR_9391: CMP #$08 ;比较Y==$04?
0 b* c; }/ I* @6 Q a2 c - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节: H9 m/ |9 e, p0 ^
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
7 [; n9 V( X/ t. R1 {8 {# ~5 _ - ADDR_9397: STA $0001 ;送入地址$01. h4 A3 h/ d# O R, ^9 p
- ADDR_9399: DEC $0001 ;地址$01递减
l1 T8 J; m8 P2 s2 C: f$ F4 [ - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
2 Q3 m$ F, G& e2 P& m - ADDR_939D: LDA #$08 ;设置纵坐标数值
' B7 f: t/ F( _# o: e3 b# ? - ADDR_939F: STA $0200,X ;送入纵坐标地址
6 e _8 v" }& Q. o - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据1 z9 d2 j( P0 r, d+ [
- ADDR_93A5: STA $0201,X ;送入图快号地址
( X e" h7 y) u' I% N - ADDR_93A8: LDA $0000 ;读取属性值数据
! L* t0 C. d- ^ [9 p- G) o - ADDR_93AA: STA $0202,X ;送入属性值地址
1 L* k5 {$ g( u' }$ Y( t4 v: R - ADDR_93AD: LSR ;逻辑右移1 B/ Y6 Y! R; z9 X4 _. V
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
* z9 @. M9 Q# S! [( M( v - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
; n' u9 o" _ L - PHA6 T) m$ W) K& K9 l
- TYA
3 }: z) K+ `% |# b/ u - PHA, E& w5 o- Y c) B2 m" J2 {
- LDA #$D44 C; \( f y+ r# b" `2 Q
- STA $0200,X5 V) ^' {) t3 i, o! G" c
- PLA
$ e9 G6 _1 H3 M - TAY
* S# h& |/ M5 D) O( c8 ~- U - PLA
& w# h. o9 s8 U1 z9 v6 p5 f) L3 h - ADDR_93B5: JSR WEAPON
; r7 ?4 o4 k1 r6 j - ADDR_93B8: DEC $0007 ;地址$C7递减
& w' S) H+ V% S3 h# r) u7 n - ADDR_93BA: TXA ;X-->A0 j5 E+ V* u+ I) {+ o% X* x
- ADDR_93BB: CLC ;清除进位标志 m* D3 f3 w6 X% q2 _7 D
- ADDR_93BC: ADC $0010 ;加上地址$10的值
4 X* t4 e1 J) E8 ?) S- d, `' d - ADDR_93BE: TAX ;A-->X# e9 V* Y. ]) ` X. K
- ADDR_93BF: INY ;设置Y++
2 S# G) f7 X9 ~2 c - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
8 b# f: W8 j% Q5 B) x - ADDR_93C3: DEC $0000 ;地址$00递减
* ^( n, q; F6 B - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
8 C! u% T* T) z6 ?, p; d$ M. V, H - ADDR_93C7: STX $0004 ;送入地址$043 F4 b5 v- _& }
- ADDR_93C9: RTS ;程序转回-----------------------------
6 w0 P" l/ E3 r
( K0 f7 l0 r% t+ ]& Q* C- .ORG $FB60
- w; o2 i' g; J4 g2 r4 t - ADDR_93CA:
5 H8 E+ x6 S" v- R3 ?2 i' @ - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号9 D" L! ?- A; a) z
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
% }% w1 q" j8 L; i8 |$ Z - ADDR_93D2:
1 y% e- G* {8 n5 H: M/ D - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标0 h+ f) {" |4 ^" j; ^: y+ @
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标, V2 A$ y: Y( K; W( c' R! b& B
- - l4 N! Y# x. m/ E2 H7 {
- ! t5 Q* E6 H* ]7 E: ?
- .ORG $FB804 N8 G- o3 e) j
-
H9 m w g7 G6 y3 y+ C0 o l - WEAPON:
; `9 T& c% z7 G- i$ C3 e - STA $0203,X ;送入横坐标地址
6 p/ l; R/ o( r - PHP
' k3 \1 v, F, j - PHA" r$ o! ~0 y7 ]% R' e0 T
- TYA# X3 O8 s/ f. |& C
- PHA* e0 I, a T. R4 N9 b6 A. O7 x
- CPY #$00$ l _3 Z5 c' ^
- BNE LB2 l. [# T5 ]. {; Z
- JSR S_WRITE ;第一个精灵1 P/ B& a4 H" V% @: u5 X( V c- s
- LB:: ?" c% {1 ?* S' R8 M. I
- CPY #$01+ ^/ A# B9 H( G, b$ S3 a4 ]& G) h
- BNE RE
* T* F0 F( C) P1 V/ z Y - JSR D_WRITE ;第二个精灵
7 \0 i1 X( y/ Q- o3 Y - RE:' F! \0 Y& b3 B0 K w s( {
- PLA! A, m* p" U5 ?% f9 b% j! L, z2 P
- TAY
5 M4 Z0 ?$ S2 _. P- o G - PLA
& n$ B9 n# _$ W$ C; R3 F* k6 E; l - PLP8 s; A! l% K( B
- RTS
$ \7 s+ m& j$ Q6 h0 l2 f - ) ?' O3 U! d* S) J# B! f! b0 w
- S_WRITE:
/ i2 L/ A/ q) `- m2 a* F/ Q - PHA0 ^+ @8 C) e9 @# y/ g7 @" W2 S
- TYA
Y0 [" G1 w: Y; `4 s1 {1 ` - PHA
3 _9 H; V4 Q0 {* c% r1 F8 Y5 i. l - S_CMP:& T1 V/ b9 p: F! H8 G/ B$ i1 a4 }
- LDA $00' n* _4 l4 F0 K& \/ J- E0 t
- TAY z5 f5 L6 i& O7 T
- LDA $AA,Y ;读取武器值- ]+ D3 N- ^2 f( a8 r% M. E U1 ~
- AND #$10! e d( ?5 l. y; z( o1 Q
- BNE S_WEAPON
% g" u. B* d% Q) n; q, {; B - M_WEAPON: ;普通状态
1 o; `+ D; v' ~- v" S - LDA #$26
8 ^, v4 V8 p' |6 P- Y - STA $0201,X
* ~$ v$ @6 G! g" m; V3 R$ V - BNE RETURN
) i: c: R; ~6 A* Y- ^* H2 F; B - S_WEAPON: ;加速状态9 }2 x, R7 H g1 w: Q3 ^
- LDA #$1C
. x! Q S9 J# ?4 H" R) {# j7 j3 ? - STA $0201,X9 l/ c# y6 u! v* o; U
-
. v7 t; |) ?; O7 H9 | -
! v' @* ?5 J7 V! @* M' b$ R' h2 k: @ - RETURN:1 G0 a/ i9 X/ k8 X; ]1 X# `* H
- PLA3 Q& { z) b7 t) j$ T
- TAY- s0 Z/ ]- ]5 H s2 t
- PLA
" C3 S! X! y! | - RTS
0 ?! F: {+ U: j9 Q -
7 e8 Z7 n, q* r( v - u+ K4 p/ q( ]. U4 d- ~- d
- D_WRITE:
* p, i" {& c+ U& e* } g - PHA; Q& b# s# p* `5 p, @$ ?2 O4 F. A
- TYA: N3 T# ^$ h' b @# t. `2 |4 n
- PHA5 X" K/ Y* U+ C# @3 O
- WEAA:/ V* s" Y( h$ d |8 Y- {0 s% i& b
- LDY $00! ~% z. h: k3 Z1 `7 ]( H
- LDA $AA,Y
! U: }4 |# ~$ }7 y - AND #$0F
. p8 b- g& ~' Y# w* G, Y' A - TAY
3 ]0 O. j6 R+ T/ L- H( z - LDA DATA,Y
* O0 m+ b6 D& w7 a- g - STA $0201,X' }0 `% F% w$ o% W6 h" q1 G
- ( h6 w) j4 V5 z6 b; P# j
- PLA
' e9 D6 F' P. `. q7 n - TAY
0 t) o/ E+ X2 p# l$ ?' H/ y; _ - PLA
4 w( n" o) C+ M6 C9 s- {7 w% P# _ - RTS3 q7 {( U2 p' {; r, m8 _5 y
-
; V9 o0 ?9 p0 N& H - DATA: ;武器种类图块3 k/ ?, p7 a) j$ W( d/ v3 x
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|