|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
. R* K/ S) n7 }( h" t$ O
5 {% g0 e7 c4 f2017.3.13
& c8 i" ?( D7 h: u; U
# p/ ]+ z9 d& K1 \+ W 9 K2 [$ R4 M8 ~
1 @1 }& ^9 ]. E9 H8 A
- .ORG $936E ;CONTRA(J)
5 E S3 ~8 U6 G8 a5 Z6 [! o7 C - LDA $258 p$ v: f/ }1 }# D: s# D7 O. O
- BEQ ADDR_93C9
, X$ V# C' q) I3 W - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)1 {+ Z! ]2 v/ U6 ^! h
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y6 u. B6 d# z4 M- T e
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
1 Z' B9 u: r+ P; A7 J - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A0 `: V& }8 |4 Z5 ]0 f& t$ C
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00
$ n5 }2 B P5 ^% g, `. [! R/ }% M - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
$ T' x% }1 {. o - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
4 z+ L, [! J$ p$ [ e - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A$ A: J# ^* c3 S+ t8 q) l$ ~
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
' x" B& `7 v7 I2 z8 D& _* j) @ - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y k2 ~, g6 f0 e( ~9 Q# O
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)" `1 t5 ]7 J: H
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
2 B* V5 |% w2 p, x$ o0 t - ADDR_9387: LSR ;逻辑右移
3 \( D8 j/ c3 o% u; C# I6 S - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节 o2 g, {6 j# |
- ADDR_938A: LDY $0000 ;设置Y==#00' h6 W" Y; H, @* a
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A+ d- I# d& X9 I
- CLC
" n* V" ]1 Z" l) z9 {# [. ? - ADC #$02& r$ s0 J7 P, _( z: w! k# Q
- ADDR_938F: LDY #$00 ;设置寄存器Y为$001 [( Y- k+ ]$ @) |3 F
- ADDR_9391: CMP #$08 ;比较Y==$04?
4 ^0 d* X, t/ v$ C$ ` - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
; b! Q3 [" t$ Q% T - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A4 {; }4 ~. p" A* }, q. [6 t4 U
- ADDR_9397: STA $0001 ;送入地址$01
( M/ g9 I" p6 ^2 L+ `' i5 {! o - ADDR_9399: DEC $0001 ;地址$01递减- y- l7 ] T5 ]: a- f8 I
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节0 e$ H- P+ \8 L+ g( S9 l" x' z
- ADDR_939D: LDA #$08 ;设置纵坐标数值
$ O, {5 L; w' C3 g9 D! _ - ADDR_939F: STA $0200,X ;送入纵坐标地址
& ?5 R, f1 p d% J! E2 H - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据# G9 N' {1 J0 l3 d. F! l& |
- ADDR_93A5: STA $0201,X ;送入图快号地址
/ n0 Q5 e6 I& k }# G* a - ADDR_93A8: LDA $0000 ;读取属性值数据 ? F& B+ h. P( ^/ d
- ADDR_93AA: STA $0202,X ;送入属性值地址7 p0 ?: G# c: P8 M7 x$ L0 C
- ADDR_93AD: LSR ;逻辑右移
2 C0 a C. ^. D# q - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
* h% Y1 N8 N+ N5 h - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
& m5 N, B4 E5 D9 f. N3 w - PHA( B! q0 ?1 j5 y! e
- TYA
% C( E! k) U3 s: |( G( _9 H# O - PHA
% F9 D' X/ q- l% P3 }9 p - LDA #$D48 j& p8 ^" Z# u& P$ f# A7 Z
- STA $0200,X
0 M _1 e: K6 h: c - PLA
# m& m+ O# ^# ^ - TAY8 y/ F8 J, _. P$ ~' A
- PLA
: a/ U2 ]& A9 x/ _ H$ o; H - ADDR_93B5: JSR WEAPON
" e7 q3 o. J7 Y2 ^) O6 n6 n% z - ADDR_93B8: DEC $0007 ;地址$C7递减
" J, j) ]5 \+ K, j5 f. O s - ADDR_93BA: TXA ;X-->A7 m: `% G. c x* J" O
- ADDR_93BB: CLC ;清除进位标志. y# n" S" @% C' {9 E' M
- ADDR_93BC: ADC $0010 ;加上地址$10的值
0 F3 ], c# `. J) [$ c$ b1 e - ADDR_93BE: TAX ;A-->X, E$ ~: V: z# |, a
- ADDR_93BF: INY ;设置Y++
" ~0 q' G- i! E/ |8 C3 n - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399/ G4 \" {: S9 ~: O' x# x, h# X
- ADDR_93C3: DEC $0000 ;地址$00递减
: V$ J5 O! C) i7 l; N4 t1 l - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节. L/ Z9 X4 c& m. w$ O' \
- ADDR_93C7: STX $0004 ;送入地址$04! Q- p- k: \/ |( \* X) R
- ADDR_93C9: RTS ;程序转回-----------------------------
4 l/ Q* E0 W7 p- x% p
' [( ^; D; j2 q! Y/ v- .ORG $FB605 v; K0 Q" m( I/ C" C
- ADDR_93CA:
9 k7 b+ c; G$ v5 d; Q - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
9 T) d. r! U2 x* w5 J2 V - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
( o# Z. _8 v$ W8 N& h9 a - ADDR_93D2:0 Z4 Z# [0 S- g' ~! x$ R
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
' e6 D/ A e# Y8 B - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标/ ~& Y2 @6 s2 r; A0 ^! ~- x
-
4 n# E. e, {* E l& \# ` - / [4 s# |' a o2 a# A9 ^
- .ORG $FB80# L9 c9 b! x6 R' e, B/ s- ^3 S
-
" y3 L) i+ y% s2 d - WEAPON:) ]4 [) G5 X" b- D4 N2 l& U# ^
- STA $0203,X ;送入横坐标地址7 ~; q3 f0 E4 m4 C7 s0 Z6 Z
- PHP) n( T7 }' [, d2 V- h
- PHA, `; c- F3 D) S$ g( B
- TYA
) Q! z8 V& r! o3 ` - PHA/ x) E; P1 l6 j" i# X6 i ~4 M* q2 N
- CPY #$004 u( w8 k( Q/ |; ?9 x; r1 g
- BNE LB
7 A: d F5 Z+ @: T$ o4 ~7 S* V - JSR S_WRITE ;第一个精灵7 q* u+ s' z% L" {
- LB:
" @$ k: q1 C; a; ^' X9 ^1 U+ k - CPY #$01
, J t( ?# [6 b - BNE RE7 p2 T: q8 p# o- e
- JSR D_WRITE ;第二个精灵
8 ?0 Y: V( j# y2 S - RE:
0 [3 P) L+ x' u( ?5 B - PLA
$ X- W0 m n( H7 o1 h - TAY
+ u) c! E" G# A& K- ~$ ~4 f: k - PLA' Y$ a+ Z$ u/ ]3 L' Q
- PLP
+ ~9 }/ q% g# M) f - RTS
. T9 x, ]8 a" I2 M6 h -
) ]. w: I: @/ }% ]$ P% a$ T - S_WRITE:
$ G, J9 r' |+ J& t5 | |- i5 _2 h - PHA1 x( ?; R+ M& ^
- TYA
' T- ^& |1 j ]- ] k - PHA
* e( J/ Y* C! C - S_CMP:3 _4 v! K' c8 {; x" `
- LDA $00( I: a$ G/ O) E1 B- a; h
- TAY* p1 \# t4 C- l7 B7 |
- LDA $AA,Y ;读取武器值! n C8 S2 B3 x! y
- AND #$100 a# W! p1 {9 I. F8 V! E9 L( v
- BNE S_WEAPON
& E- G& ^3 t/ g7 K/ ^1 `; j - M_WEAPON: ;普通状态
# f: j3 s, p: k7 W2 a9 s. m8 [ - LDA #$26
7 \& N' x+ t0 T- f - STA $0201,X7 i4 h. f- F. S/ s8 i* H1 {
- BNE RETURN7 f* g" \1 y4 z2 ]' B
- S_WEAPON: ;加速状态& ]7 x( n* T4 r( K- i1 j/ X8 s% e
- LDA #$1C
3 n1 z- U! r$ ^ - STA $0201,X
5 |: z; o' y9 P [ - ' C2 w+ d' K) `
-
F$ z3 a! _2 J! T - RETURN:2 u7 {" [. W; t2 [6 ]+ A" o
- PLA
7 C! ~5 `6 P2 \( q - TAY4 W; N# C3 @! \$ B
- PLA
/ C9 q. q1 O" O i1 y1 A - RTS
* `! s- e9 l8 W. Y4 R, W - H3 R( y. K$ s) H# ^/ P3 T5 T
( q _7 d2 I3 ]- D_WRITE:2 ~0 f" B/ Y4 r; C3 o) A
- PHA' V% m( m4 ~* n
- TYA
+ }1 y6 I( ?; a9 P$ ^ - PHA
% B, _& \: Y- U2 _0 |, T: o2 O! p - WEAA:' `. C! }# w" B5 Y; h1 E
- LDY $00
" L+ H$ b8 H8 R4 _: p* R - LDA $AA,Y
, [) y. E" n2 |6 G0 } v - AND #$0F
% D4 Y5 h. W4 v7 z, l8 U3 h* y - TAY( T6 u! ~+ ~7 \$ C3 }4 o
- LDA DATA,Y/ L- f& t, M2 v# w
- STA $0201,X
+ d# u$ g. s, Z" ]% i -
: v8 y6 I# K- g3 a - PLA! u' r3 o `$ b4 q0 @
- TAY C+ `* t& }& W/ {8 U3 N
- PLA! E' q$ R5 \) C
- RTS# w0 \+ w n. X: S- d# Q
- ( U7 W! s8 B# c/ z+ F) R/ Z3 F! H7 D
- DATA: ;武器种类图块
6 J& J. ~1 G! G# ?! e: w - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|