|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 + O, ?1 b) }$ w( [& @
& f: T4 L( ~9 ^) D# C
2017.3.13
3 ^& e2 W3 y8 w- D 0 ~) z9 i! c2 ~, H8 x3 ~1 ^

! I# N4 }3 I& _+ }. i, T 9 k0 u) c" _8 ^5 `
- .ORG $936E ;CONTRA(J)" Y& b6 m+ ?# e) b9 a4 O
- LDA $25
" S, R4 B2 L- g+ C - BEQ ADDR_93C9
5 I/ C$ r5 L% q/ U6 i2 M/ g' o - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)9 Z0 ^7 T) r2 r) H3 Z+ ~4 S
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
( ~) j; k* u* E5 t' i - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
9 G: @2 U- [! h4 I. c" z - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
/ C0 v5 K% b& v& | - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
! q) z: w8 d4 h a5 o& G - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
2 G4 C8 {& B( U W" B! P2 ~/ t: m - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y6 M. R2 i V. p; ~8 [: P
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
5 s6 `4 j1 q' G$ F, d+ w6 n5 T - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节) h- N) z% @# v2 L$ ?
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
: W, @+ c9 Y/ z# _ - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束), _" c5 z7 e; `) [" Y
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
! _2 {9 m! ~8 q5 U: |& u% H ^* v9 H - ADDR_9387: LSR ;逻辑右移( S' W5 K* G) P5 j1 B& a+ R
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节# ?! t5 L. d) p4 V3 \( h' Z
- ADDR_938A: LDY $0000 ;设置Y==#00 v% H3 P% ~- e) H9 `" v
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A6 i6 G$ X; _4 l3 k* U0 {) b) z, u% |
- CLC
+ \9 H# R( Z# J' C- e+ f - ADC #$024 O1 \) J/ r; G( m! @' @
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
9 z/ x; ] {, ^ - ADDR_9391: CMP #$08 ;比较Y==$04?( g+ l$ ?: g+ T! W
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节+ A% v9 z) b! B
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A. r9 b; L3 x5 I5 j( M
- ADDR_9397: STA $0001 ;送入地址$01
' {& R' X& P! ?8 z# h - ADDR_9399: DEC $0001 ;地址$01递减
7 ~, R) S( v5 I# z" Z - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节 Y6 c* J' C( \: \ ]9 b3 N
- ADDR_939D: LDA #$08 ;设置纵坐标数值% C) Z' i5 V8 B$ `
- ADDR_939F: STA $0200,X ;送入纵坐标地址
0 ^5 K: x3 Y' d' U7 z - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据8 J; [1 \& T" p+ t9 V) W6 [# p7 X2 @
- ADDR_93A5: STA $0201,X ;送入图快号地址
' b0 h( ]3 M# z1 P0 ^( B8 J- i/ f - ADDR_93A8: LDA $0000 ;读取属性值数据, d! Y/ ]6 ~ l M& x5 [
- ADDR_93AA: STA $0202,X ;送入属性值地址# _% ^# w6 z4 _/ a* m
- ADDR_93AD: LSR ;逻辑右移
0 F; S3 Q/ m2 r+ o' q" W. V1 E) N; Y- r - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
: }) `; k7 Q( H: x$ k - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节, Q5 I/ |1 l! A s0 K& i' Z# ~/ u, z
- PHA
. R3 D1 |9 `( L) |, C - TYA
) U4 }+ l2 [2 T! i - PHA
1 k7 f/ l: |2 |- u7 O9 v3 X0 h - LDA #$D4
7 L" C: h, w/ j/ d - STA $0200,X3 h* i4 J9 f* G7 E% p7 T. X6 T
- PLA4 w4 J( z3 g5 Z- V. b- a# I+ T
- TAY
0 C/ ?' ?7 z$ w) ] - PLA2 g% m0 s2 |) o3 Q. u9 k
- ADDR_93B5: JSR WEAPON
* n! x/ P) ~0 y3 {. B- c0 k - ADDR_93B8: DEC $0007 ;地址$C7递减
8 f6 K# v1 |6 d3 O a - ADDR_93BA: TXA ;X-->A$ M5 }( D3 ]% x) x0 x7 M
- ADDR_93BB: CLC ;清除进位标志* q8 j: @. u0 I1 R5 j
- ADDR_93BC: ADC $0010 ;加上地址$10的值
4 K: U& J! b. u: ~3 R - ADDR_93BE: TAX ;A-->X u* f. S6 u; S9 G/ j
- ADDR_93BF: INY ;设置Y++
, P& }" I3 K3 q0 d- f; i1 {. `$ s& r, k - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
2 Y1 o! S7 q; c f; c% W' ]8 q - ADDR_93C3: DEC $0000 ;地址$00递减* b% ^ i* C" `7 K% N
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节+ J- U! B$ q. X; F
- ADDR_93C7: STX $0004 ;送入地址$04
# o# a& y/ P: K! [; L2 P, S5 o" b - ADDR_93C9: RTS ;程序转回-----------------------------# ^7 @6 h7 D% @& E/ T3 {
- . y9 c6 X0 y8 t" W V
- .ORG $FB60# H8 O- `: J- m/ I5 Z
- ADDR_93CA:
% S \8 X) {4 [/ o7 h5 I - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
! b0 w0 q+ M0 l5 ~ - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号% d/ I3 ?1 S9 J z$ h+ G3 d
- ADDR_93D2:: J0 z' N' S0 M! R! D
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
3 x, X" C/ ] |# a! K - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标4 l( z1 [5 K6 R) I
-
w' `# X/ k0 |: Q# p% { - 4 A1 c7 ^1 @% v) s& d
- .ORG $FB80
6 w- t0 \& H0 n* l) ~& H7 U6 g -
+ H. X9 {$ g( _ - WEAPON:5 p1 D7 i$ ?7 z3 | [5 j9 Y3 F+ a3 |
- STA $0203,X ;送入横坐标地址( p6 [, A! O. {! f! M
- PHP/ J' P9 J6 G8 C4 T" f4 g# P' h
- PHA
- d7 ^, o9 \2 n - TYA
: {7 @5 C& q' P1 {$ U( M( } - PHA* W+ I7 M; L5 p* J
- CPY #$00- [& u: Q. C. y4 M0 z1 n- i
- BNE LB
7 q; e/ [% h! m5 i - JSR S_WRITE ;第一个精灵' j ?9 h( v# I0 \
- LB:. S# j8 Z% x( G+ [
- CPY #$01
9 H6 h) o+ Y0 e - BNE RE9 |& N2 ~: f# |2 I6 w1 M$ V
- JSR D_WRITE ;第二个精灵4 e6 n+ d( L1 `0 ?) E
- RE:
H5 b* i6 D. m/ i: u$ y8 ?+ v - PLA6 w8 K; ]1 V( ~; a7 v* }7 f
- TAY
: X0 R- p8 ^6 b5 O7 B - PLA
. M" l4 o# G( @" m+ G - PLP
$ s# k% Q( d; D4 r2 {2 ^& t- P - RTS# O/ T* f7 X { N
- 8 ^! v; R# {0 M" y0 Y) @
- S_WRITE:* b7 V* T2 v+ v* `
- PHA2 v9 W4 [( |4 x' g5 C8 Q
- TYA
/ j3 A2 _+ A6 B7 |, \ - PHA6 I/ r, W E% |' _8 p6 E1 f
- S_CMP:
0 H" `2 [4 W$ L# W$ z' s - LDA $00
9 K& L. j) p( ~0 t - TAY
) b( P( Y% t" B5 t& e; `2 G# M - LDA $AA,Y ;读取武器值- w( e2 p1 j% T+ G* N/ e& d
- AND #$10
& `5 E3 K# }( x0 j9 N/ L - BNE S_WEAPON K9 s: Q, i9 s
- M_WEAPON: ;普通状态- D3 L3 z$ K" c7 r% O$ K4 \! B
- LDA #$26
/ D. @5 t$ ]9 c0 Y7 j - STA $0201,X
" E% v" W' w7 | - BNE RETURN2 B3 b1 \4 h F- h2 S9 H
- S_WEAPON: ;加速状态0 I. D% D N8 k% u- v6 C7 J0 F. J
- LDA #$1C) d' ?! s' G- @% K6 j" \. x
- STA $0201,X) r1 _4 ^+ V2 J: s+ b
- + d9 {! M6 P( h ]
-
0 c" G+ C8 K+ c5 S% ~ - RETURN:
: W% G/ f+ Y5 M- G( q - PLA
$ J& q$ s. X$ Z1 X' K - TAY4 S6 Q- C! w8 g4 a8 X3 a0 \+ f1 }
- PLA- l5 x* O% B" w& h6 J1 Q6 [, \
- RTS
R+ {) `& E& J; g$ \2 }5 T -
, `' F, c3 ?5 m) _7 q: R% ^ - 0 c2 T4 p# q' o7 p S' d3 q2 R
- D_WRITE:- E6 j6 J3 n1 g4 t; w* i1 O# J% T
- PHA
" I$ y; i- ~# X5 Y8 A - TYA o- i' i: x$ G! R$ M5 E( k8 d
- PHA1 ?# v9 C- @& E# Y+ r
- WEAA:, P* ~, B9 S' q
- LDY $00
5 c, c% _# _8 f) B5 v: G: | - LDA $AA,Y5 {6 _- P7 p2 M5 W$ D: H) z
- AND #$0F
/ q) E& o/ R1 s1 m& O6 W" f& b1 ` - TAY" G+ H+ w9 @9 M
- LDA DATA,Y
+ x5 a! Z* { H) ] v/ o* L- } - STA $0201,X; s2 l3 S6 @; H/ e1 B
-
$ [% U, l0 x2 B$ G) p0 r - PLA0 F0 I8 |; ]6 v# W7 A3 i' ?7 o
- TAY+ A+ j9 j3 Y4 I; c. }
- PLA8 R+ S& u1 a( [
- RTS1 x6 F& T2 M8 a0 `* `
-
5 K& W$ N1 U V) M9 q# t+ s. X - DATA: ;武器种类图块# E: {& q! o/ w
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|