|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 , L8 g( |( D- _" f6 i
( t% O- R) z2 `0 K8 g7 c; h
2017.3.13( j6 V" @+ V( |# U

/ [% d; Y8 j6 c/ d / C: U$ p5 L3 @+ P' ^
! f) }1 S+ @+ Q8 T3 [$ T" | Z# u
- .ORG $936E ;CONTRA(J)8 {" D2 h& s) a S
- LDA $25$ @5 I! D2 M. O0 W3 W4 O5 U. l
- BEQ ADDR_93C9
3 `" |4 {7 O- k( Q5 ^ - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)/ a( b; {5 Y5 {# P! I/ y" N
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y+ B% i; _! {: j5 s* e
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
0 x7 F1 n! S( |, ]1 M - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A1 c5 o+ O9 b5 A1 f3 P+ Q1 r* L
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00
9 K- k; J0 `: s6 r - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
% `7 j* R! I. E; x - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y7 f" V- f* }6 l) g! w" a: }
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A( H, L+ A" _/ M% v
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
% J3 T' U+ w; y% C - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y2 q# X, ]: U3 f( m I
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
0 A+ C+ ^9 v r+ T+ | - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
2 S4 W6 x/ I0 ?$ w$ Y - ADDR_9387: LSR ;逻辑右移, a4 W& P7 ^: Z* U* ]5 j
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
/ i# Z+ R. ~6 x2 l4 {0 P- T - ADDR_938A: LDY $0000 ;设置Y==#00
8 F* _" J0 R, y' k# X3 [9 s; a' h - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
; d$ I/ V* o; m0 V, g - CLC1 N! [% p, y0 E1 \2 d6 ~! {$ R
- ADC #$02
; o# n+ x2 _# r4 u% ^( V5 ] - ADDR_938F: LDY #$00 ;设置寄存器Y为$002 Z- X: p8 f1 b5 W
- ADDR_9391: CMP #$08 ;比较Y==$04?
: ]( K8 V/ Z5 j2 N4 M* Y# |* J* Y - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
: O, n' ]3 E* E6 Y6 p4 T - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A; s: A- M4 c7 f) k$ `' v
- ADDR_9397: STA $0001 ;送入地址$01
- ]' s# s, S9 v/ T0 O8 ]/ s. x/ m! D - ADDR_9399: DEC $0001 ;地址$01递减
; b1 t' S/ n& ` - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
/ V, B7 D( I- r: b0 o7 _- o - ADDR_939D: LDA #$08 ;设置纵坐标数值
- D5 s9 e' j4 J9 x - ADDR_939F: STA $0200,X ;送入纵坐标地址
5 T+ U/ g9 }/ M7 E2 ]) ~2 p, Y! I - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
8 X. d- D2 O0 r* T0 w5 s9 ?* ~ - ADDR_93A5: STA $0201,X ;送入图快号地址
6 F; R3 b4 }& ? - ADDR_93A8: LDA $0000 ;读取属性值数据
) G- x/ ]. {( A# b+ u; q - ADDR_93AA: STA $0202,X ;送入属性值地址
+ i! x7 ]3 S- ?7 w' h# @0 b* Y5 X9 ? - ADDR_93AD: LSR ;逻辑右移* e" i% B1 y w) k4 P
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
* t$ b" o6 ^. f - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节! U' p5 M+ P8 ~) k
- PHA& b( R- v- ~1 D; p
- TYA% J' U9 j' [! `, ^* y# ?
- PHA
8 L/ e, d6 a9 D, s - LDA #$D4
/ u1 b, m- H& n- Q( ]; z# c% E - STA $0200,X9 q7 f) e/ r3 x+ O5 p6 y' {
- PLA
( n) n1 k$ f/ Q - TAY4 L" b) F8 a% ^' t
- PLA
1 ]3 r d, ~) [, @$ C, Q! r, K - ADDR_93B5: JSR WEAPON8 x: _# F2 Y X" C/ e
- ADDR_93B8: DEC $0007 ;地址$C7递减7 T5 I/ {0 f" a/ n3 [* r" Y
- ADDR_93BA: TXA ;X-->A1 W9 ^% ? }) ]0 p3 V
- ADDR_93BB: CLC ;清除进位标志. ^" p! F. `0 y, c% @0 s+ V# C8 F
- ADDR_93BC: ADC $0010 ;加上地址$10的值6 p- ]4 {% T" R( L+ `) }+ N
- ADDR_93BE: TAX ;A-->X
$ T9 b3 W- j( A! Z! L - ADDR_93BF: INY ;设置Y++, s4 ]2 C- M3 u' m! x
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
# t8 e7 t. O! q% B, [4 U - ADDR_93C3: DEC $0000 ;地址$00递减+ v' S5 Q( I3 D8 z7 Q4 P4 N
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
3 @$ z4 w; k0 p1 ~ - ADDR_93C7: STX $0004 ;送入地址$04
2 ~9 T. v% [& f& ?( a - ADDR_93C9: RTS ;程序转回-----------------------------
- c( h" H4 B' u3 v7 X8 j! p! v; G, c
* @( G- P' j0 a2 S/ p: f, G- .ORG $FB603 y9 G: F8 Y ~& t5 W/ d1 @
- ADDR_93CA:; A' N, Z4 f1 B
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
* X6 D+ [' q6 L9 `# p4 B# a - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号. i" J, ^0 _# M1 i# B/ j- l: I
- ADDR_93D2:
5 y- l" j0 w7 @ | - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标. J5 B6 U- Z: h9 l0 I) V
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
4 N+ D- Y. Z! G- P* p/ L" | -
; w! B2 V) N3 r3 W' X( g* _) Q -
* d. U: w: z9 p6 ^' X: f: O - .ORG $FB80
2 ~% v8 ~9 }& ?7 f0 g8 l9 d6 A -
0 a5 I. U1 X' ^+ n T# o: ^: M - WEAPON:
$ ?7 ]2 u6 ]+ [$ |5 _) }6 F7 n - STA $0203,X ;送入横坐标地址, U/ d& @; E) v
- PHP
- c* d/ [0 D/ v3 B7 s - PHA
2 v6 b$ O& m( o: b! k- X( \ - TYA" J7 x( m: M& e) E
- PHA
8 L* N; a2 v( m* n; R9 I4 o3 q - CPY #$00
- p( Y: v: Y6 {. G; w# Q% f8 K - BNE LB
6 |, Y4 X/ R- i1 c' w: B - JSR S_WRITE ;第一个精灵. P' Q7 J/ k6 l4 Z& b8 h: j
- LB:
! H, J/ ^! f& @+ l; I- ?/ C - CPY #$01
1 `$ C m5 D9 s) f0 s# q! C - BNE RE
5 _1 |7 R/ D1 Z0 \ - JSR D_WRITE ;第二个精灵- b4 H9 \9 c) `9 E$ w
- RE:
) m9 ~7 t- E( B - PLA9 I3 k/ r( m' ~: I
- TAY
2 b8 r* d+ H D; N3 ?! { - PLA( H$ U5 ^$ f$ }9 A, G
- PLP+ N0 ]6 N9 x; h8 ~- h4 Z' h9 P
- RTS7 @# [( v6 V- H! y+ `1 ~
-
. q) g" [ W8 g L# V' G - S_WRITE:- ?- i8 z& R' z5 C, a
- PHA- D3 F" |$ C+ a
- TYA3 @/ C, T8 v0 w
- PHA
( Q$ o0 Q+ g- `, l - S_CMP:! B& `, y7 Z* f4 g8 Q5 m1 f
- LDA $00
# C; D' e5 t$ Z Y4 C; [2 e - TAY" q$ b/ w: u# m, y: g/ L
- LDA $AA,Y ;读取武器值& P, H, O) `# M& P
- AND #$101 `$ J. O q( r' s
- BNE S_WEAPON( Z5 ]5 d4 r. I2 f, i
- M_WEAPON: ;普通状态
1 u1 w, o$ |/ X1 U9 g( A - LDA #$26* y/ d, p) t: B1 T% d, f$ }/ D3 a
- STA $0201,X
. R/ Z; \7 L3 |2 i4 X2 Y# K - BNE RETURN0 w2 ~3 ^1 @ P
- S_WEAPON: ;加速状态- i, y3 @1 C) T5 u2 f" b! o
- LDA #$1C
! w+ V6 A: S; S7 D% ?- t - STA $0201,X( T1 t5 |- v! f
- / T/ t' q# f$ R
-
* X1 ]- a5 m" v" N - RETURN:9 S- W9 G; c! z! P8 A1 s: y+ }$ f
- PLA5 q. M9 {, X: o" O6 X! D! g
- TAY
, m8 y" x. W Y, @ - PLA7 x9 n1 K% e' W' w
- RTS; X- u6 p: m/ B+ @6 \
- - Z! _& ] \- t0 r
; M' X; K! f* Z/ ~1 w- D_WRITE:
7 k4 ^8 q4 Q3 [- r, U - PHA
. h: W- L1 e* a - TYA
5 ^: F, @3 H1 f: \4 B+ p, _ - PHA, r. }2 w' A) `& L; }
- WEAA:
' V9 S1 f# x$ f8 P% V# H - LDY $00
( u$ r1 a; k! ?& z+ u( j - LDA $AA,Y
, c9 R3 A% u) [, e2 H! v - AND #$0F
5 j; \+ y2 P4 O5 Q$ r - TAY5 f4 P0 t I7 Y# T: K
- LDA DATA,Y0 u/ D. O+ M" H0 c7 I- s$ u1 K- G
- STA $0201,X
( x8 u' e3 ~( P. n; _3 e -
I' ?0 u, i- S - PLA
# j5 |. l# y+ D, ^# x - TAY
/ i0 L' z8 G) ?/ L8 ? - PLA
( [% X. T# c. e' ]% U - RTS
8 A4 j1 J6 V5 Y- Z - ! t4 R) T5 n6 T1 }& r
- DATA: ;武器种类图块 S8 R! ~) a/ L
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|