|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 8 H) i5 T# C( D2 E$ G# o
5 Z+ H4 _3 G7 F/ b& f4 O9 K* ]/ q. t2017.3.13
# s7 a0 o( V, D( J9 n3 t2 W 5 C+ x3 e3 V, ]; Y, N0 b1 Q

% j, g8 B5 p4 {; l) t: D. E % Q8 e8 o0 v2 E0 n4 A0 R, h
- .ORG $936E ;CONTRA(J)
5 h1 m0 ?, V, x/ q' m( G# A) y - LDA $25
9 x7 a% f1 b! f& Y* c) I7 V" O - BEQ ADDR_93C90 n; P1 t" J. u
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
" o; u$ y6 s* V" `# p" k0 U8 C - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y0 ]5 u7 ~7 N- D# \; k
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节& k% Y$ {3 ? P
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
- K- p# ]' {0 m1 _: E) j - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
1 a/ E) x% ~0 v5 }4 H$ q) s; O - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
; Q% L/ v$ S# w% V2 e! j - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y7 D- M |2 G! i
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A; {2 `+ [: a$ `
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
- w7 V; a) z3 J - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
^ c4 U3 n, z! \' w - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
/ `" D6 S. v: o: I: E2 E% L - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y3 v! d% U2 N. L7 H+ T* }
- ADDR_9387: LSR ;逻辑右移
6 f8 Y& x7 L/ { - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节' _9 A$ S* }3 N9 P) ] I1 z* p
- ADDR_938A: LDY $0000 ;设置Y==#00. _" L% @7 L2 q0 x
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A5 [1 U; {; q" ^1 ^
- CLC! f3 w! h8 |5 _4 A
- ADC #$02
' H" b: x4 t% N; \ - ADDR_938F: LDY #$00 ;设置寄存器Y为$00- T8 F" ~4 }# X
- ADDR_9391: CMP #$08 ;比较Y==$04?& @* S' G: b5 a
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节0 |* ^/ C: l" x. |/ ^# M# w% {
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
) t7 x0 q1 O/ Y$ j8 F3 g - ADDR_9397: STA $0001 ;送入地址$010 T$ O( j7 Q5 B# ^
- ADDR_9399: DEC $0001 ;地址$01递减
3 ]) K/ n' l. A& t+ u: o - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
' W3 U6 j! J4 r$ A- T3 t - ADDR_939D: LDA #$08 ;设置纵坐标数值
1 _8 ?( B" t: F/ C - ADDR_939F: STA $0200,X ;送入纵坐标地址
/ f; h; K+ j- }1 L& G) \ - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
5 J) j2 t4 N) {$ L - ADDR_93A5: STA $0201,X ;送入图快号地址
, ?. N9 Q! @0 i, x) Q6 E) e - ADDR_93A8: LDA $0000 ;读取属性值数据. }4 @/ D- o* Q5 U4 e. }3 r
- ADDR_93AA: STA $0202,X ;送入属性值地址. i1 z$ u$ c; |" d- ~! k" L
- ADDR_93AD: LSR ;逻辑右移
3 e% f' h T5 l8 G4 Z1 Z - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
% ?" z( G/ ^1 j* k4 _7 q' L: F6 q - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
6 }$ O' s$ ~+ Y& p/ y - PHA& f% t6 ?" V# T4 b; j+ D
- TYA
. j" _; f( f+ j { j9 G! U - PHA8 W! J3 U9 x0 ^6 l( M5 ]
- LDA #$D4
! I' Y" K8 p! d$ [! R2 C4 ~: q - STA $0200,X
0 R& z/ E, i x- s( b - PLA/ O/ o$ ^1 G7 j( y& }
- TAY0 u+ X4 Q* L R. {* e7 `
- PLA
$ l! d6 L* ^+ h: | - ADDR_93B5: JSR WEAPON
3 d% C) b( K- i% K6 K - ADDR_93B8: DEC $0007 ;地址$C7递减. {! V0 T: c! C6 v
- ADDR_93BA: TXA ;X-->A9 d; x# Y2 c( n% g- n7 M& n7 ^
- ADDR_93BB: CLC ;清除进位标志
9 w( y9 B- S' E& P# F - ADDR_93BC: ADC $0010 ;加上地址$10的值0 d) t) y8 B9 ?8 ~0 q! {7 d- M
- ADDR_93BE: TAX ;A-->X
9 [9 T1 j4 {7 Z' ?) ` - ADDR_93BF: INY ;设置Y++7 d1 C% y. I' x4 ^& x1 j; ^
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399" q4 v- o; X. A3 |1 H- A
- ADDR_93C3: DEC $0000 ;地址$00递减0 T6 [% W% _. S R
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
i8 b# {. b0 K; `' n: o - ADDR_93C7: STX $0004 ;送入地址$04
: @7 n4 E/ M* [% f5 C8 h - ADDR_93C9: RTS ;程序转回-----------------------------: |8 u1 i$ w5 b. C2 c5 h3 o
, d* ]+ f: X/ U+ p- s" x0 g- .ORG $FB60( C. V6 Z j) N# W; }, D) t2 z
- ADDR_93CA:
( ~8 }; R. H. l2 i+ c - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号/ o. U# @7 O; t
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号 b5 S: B k7 x6 d9 c, }6 D5 G
- ADDR_93D2:
7 f; n" D n$ K0 O - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
T# J ~1 x4 B7 N: G7 [ - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标1 Q' z. @/ u9 g
- # t/ O7 F$ u. C$ h+ t4 l$ v
- & D2 V/ m& I8 M; X* Z
- .ORG $FB80
6 o1 G) q2 n% z ~& z - ( I' I6 }, f( y* w6 N4 U3 o
- WEAPON:
" q" y1 y- z& e0 Z7 K7 G; E - STA $0203,X ;送入横坐标地址
1 y/ S2 U* @! [4 L" ~ - PHP
" ?7 ~: _9 Y9 H! e- k0 | - PHA
$ G+ n6 A# x8 S7 z! P- G" H - TYA0 Q- S9 ~: V0 Y3 g
- PHA2 `# C8 D8 O3 M- v
- CPY #$00. K7 p d: j3 F; X
- BNE LB6 C+ ]7 I2 [& I
- JSR S_WRITE ;第一个精灵" l m! K, I) e, q8 a) c
- LB:) x$ C) m1 @" ~3 v; ^6 ~
- CPY #$01$ P2 e( _' E* c/ ~
- BNE RE
* r% ]+ S4 v C" r, E7 E$ u - JSR D_WRITE ;第二个精灵7 v. w) T: k7 z0 k' x
- RE:
$ s/ a- @' V9 w0 t) x; V+ D - PLA0 P9 C' E* S# r p
- TAY
! z* P2 L: q% @ C( S0 W! ]" n$ N8 v - PLA1 b6 } [$ V$ V$ n4 o
- PLP
" B0 ~/ F( [$ Z/ x - RTS
! Q, Z" Q+ `+ t; o- r - . G0 l+ A' i8 |
- S_WRITE:7 _4 i$ ] P+ {" i
- PHA
$ w% |$ y2 E" c2 ]$ ? - TYA
% v f! _; @! h1 H e - PHA; N- G' x' b3 t. e7 C6 u3 F: J: ?+ p
- S_CMP:6 |* S3 K( P) ]0 H
- LDA $00) M' m# x1 l5 M0 s- j! T
- TAY/ A3 R6 ]( `3 }+ k5 U
- LDA $AA,Y ;读取武器值
4 D6 P1 y' v+ z1 _0 a2 Q- K5 o - AND #$10$ Z Y4 @/ S5 W2 M9 b1 e; w
- BNE S_WEAPON, B$ K' D M1 H5 c+ v+ ]' I4 M
- M_WEAPON: ;普通状态# q& z' J5 `0 A9 `1 k+ F
- LDA #$26 i% E6 L- a5 }, }" {
- STA $0201,X% \1 y9 O& W' ~* d
- BNE RETURN) I* d5 M1 g% B2 V8 m$ Y
- S_WEAPON: ;加速状态
: [9 M1 h: ?$ y$ H$ w - LDA #$1C {) M7 A, }) o! I; i" C
- STA $0201,X- f; z/ [# |9 r
-
2 J/ N$ G) b, z3 c -
8 l6 Z9 _, P, ? - RETURN:
4 |- q; t \1 G$ \# Z$ b8 ^ v - PLA
& E F9 {8 i6 p6 E, y - TAY; K$ k8 L; I, [9 R/ r: |0 K
- PLA x- U6 Z' p6 B5 B% a( ~7 m- v% c
- RTS
; b" Z4 x# F, C2 k - ) V: Q" ^- J2 e5 q3 s6 O
- ' `. n6 J0 l( A" ]/ D) j3 N
- D_WRITE:
9 t9 q, b" f: o- R* T/ Z - PHA, d4 J+ @! _& V+ T, x
- TYA H6 ?4 u; p; p7 X! g( [& H
- PHA
0 G m6 }8 r& [) X1 s# Y9 J) j9 T - WEAA:
$ L' p x* ]! N/ L: X5 N/ R0 | - LDY $00
9 m0 J) w* r8 P4 K$ w - LDA $AA,Y
3 x# Z8 Q5 G6 D - AND #$0F' U4 R' k% q, K4 _
- TAY4 O3 N+ N! t! \! A7 F% f5 q
- LDA DATA,Y
) U5 n! Y2 P m6 Y - STA $0201,X' x3 G) R- J# ^
- 4 o- H! c0 j* m7 _6 t5 d
- PLA
1 I7 V- [0 N1 w - TAY
/ e( _* e2 R8 J1 _6 {+ Y - PLA' ~0 p1 u; q6 n+ U$ U! }& Z
- RTS5 o! N0 D! x5 T
-
7 N) k/ F- D) J1 E8 Q - DATA: ;武器种类图块; M; r) l2 A5 O, d2 @! h
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|