|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 . Z+ k' \( Z* [4 N' [& C/ }9 h
" P& P4 x2 H S* l+ L4 A g1 Y" o, k2017.3.13# N3 P; E* b9 [4 r

. Q2 U9 L, ]1 z; G8 |1 E6 y: T
" B& c" K% d n) ]) B% N 0 T# Q5 D7 g+ Q8 {( r1 _0 p$ O' a/ x
- .ORG $936E ;CONTRA(J)6 T. y7 z# O, {/ G6 J8 F* T b
- LDA $25' |7 G1 {) h7 o$ |+ O
- BEQ ADDR_93C9
- u9 a$ J4 c' k- b$ S/ _' h - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)3 ^3 B4 Q4 E5 X2 V+ R
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y8 w3 k$ x9 S- @" H7 |
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
: m) m# O2 o; t: n' q" [* | b2 P - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
) U% r6 W) `& H2 T5 R - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
k# ]8 G; e; M. @6 t - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X% z$ ~8 m) M+ f6 s
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
& w/ d0 b. q7 i2 S8 L+ m/ w - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
& d4 N. i1 z0 I- p - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节, `! Z0 I N2 D% U) v1 k* }) G
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y/ a+ M7 k3 Q- Y3 W
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
+ f4 Y1 Y' i* H' r - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y: T1 Q! J4 s v2 r6 J
- ADDR_9387: LSR ;逻辑右移
' T* d( z3 o* O0 Q f* j8 E( U - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节! }5 J" G" U& t0 ]# Y: k
- ADDR_938A: LDY $0000 ;设置Y==#00- C- _( H8 q! @/ Z
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
% T! v. j, x+ I/ L5 m - CLC
/ `! l& Z s7 z - ADC #$02
* x1 e9 v2 U$ j5 T* Q, F" E - ADDR_938F: LDY #$00 ;设置寄存器Y为$00 J3 U3 D6 [- b G
- ADDR_9391: CMP #$08 ;比较Y==$04?! ] h7 v2 j/ Y9 X& G' c' f
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
2 i* Y! l/ l7 H$ H, ` G* U) M1 V3 R - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A3 D- \2 `' G0 A( r7 o7 N
- ADDR_9397: STA $0001 ;送入地址$01
/ W. M4 b! l& i0 h9 z1 O - ADDR_9399: DEC $0001 ;地址$01递减; w+ Z/ S/ T0 K: D* q: I
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
0 n; a3 |4 _* s6 @3 X6 o# A. _ - ADDR_939D: LDA #$08 ;设置纵坐标数值
0 g, `& P- M* r7 D - ADDR_939F: STA $0200,X ;送入纵坐标地址
. F3 i) V8 f7 f' o c: ~ - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
2 G5 N& \5 Y- \! _3 L( Z$ l7 U - ADDR_93A5: STA $0201,X ;送入图快号地址% v9 e" V1 B; {2 M3 G
- ADDR_93A8: LDA $0000 ;读取属性值数据 A" z, t; z3 ?0 Z4 p7 D% l% y# \
- ADDR_93AA: STA $0202,X ;送入属性值地址
' k: x4 d# \9 [( w \ - ADDR_93AD: LSR ;逻辑右移
! D# E6 T4 c& F+ I - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值' k( H9 X" ~5 ?0 N/ n4 \
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节" Y5 n' {( U1 j: S9 F7 F
- PHA8 v+ ` Y& ^ f
- TYA4 z$ F- m( w/ m
- PHA7 ?6 P6 Y$ J2 |) f4 Y& i2 D
- LDA #$D48 a# n8 [$ |5 C6 j
- STA $0200,X
9 q# b1 r6 k4 D0 o1 D0 Z0 Z - PLA
; N: I. G, f' O' c+ C5 D, } - TAY1 u: j5 j# M. ^! Z/ z5 }
- PLA
- y) h& i2 e: U# l - ADDR_93B5: JSR WEAPON
5 h0 T3 V- n0 T# }2 g, o0 m n - ADDR_93B8: DEC $0007 ;地址$C7递减: }; F' t2 N0 B. j9 m$ M
- ADDR_93BA: TXA ;X-->A
. L# ]! W2 B. {4 ? - ADDR_93BB: CLC ;清除进位标志2 L5 P' O, i+ _0 c$ C8 k9 \ r4 f
- ADDR_93BC: ADC $0010 ;加上地址$10的值
% `7 a4 _) V3 p) k- ?) z - ADDR_93BE: TAX ;A-->X$ d$ b/ G. X: x' ?8 _4 F
- ADDR_93BF: INY ;设置Y++6 l% \+ S) G5 @
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
" H' K! i) Y- p, S. B3 q - ADDR_93C3: DEC $0000 ;地址$00递减6 y' l9 x8 z9 a3 _6 d+ N
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
; [: M1 N9 ]4 k - ADDR_93C7: STX $0004 ;送入地址$04, p9 v: U/ v9 A' b3 _2 L2 p8 y
- ADDR_93C9: RTS ;程序转回-----------------------------+ T# Y. y" v/ k9 l" S9 N
- 3 P \4 y4 ?5 f7 y/ ~) v/ o
- .ORG $FB60
. B3 e6 p8 y" O f8 S' l3 h - ADDR_93CA:9 w9 c, ?& R: C
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
8 _* x# A1 S. G# ~$ j" a0 ^ - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号0 C5 j1 [; D9 C
- ADDR_93D2:
, i/ m+ |7 @ z% w* U - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标: w1 e3 ?) B) e- Y. y' w6 w4 T U
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标9 n7 s* |6 V5 F) M
- , C6 x6 A! Q2 o/ c: Z7 W6 x
- ( O( g$ H& \, \) t) o) M4 d
- .ORG $FB80) n+ x$ X& u' Q, L) r) X* s5 f
-
1 s3 y4 F$ P: a- S! f - WEAPON:2 X0 y; Q7 e* ^/ V$ p/ k/ x
- STA $0203,X ;送入横坐标地址
- G! U: ]" g/ N% I+ N - PHP
9 w. y; N4 Y6 ?# r' K( [: G. F3 ~ - PHA
2 O' W$ E# w' y f4 k: W9 K - TYA
8 f2 Y6 R$ |1 ?7 g$ a9 J - PHA4 C5 _/ {$ Y- c2 h8 t' `
- CPY #$00
9 \' H- I d' H, U - BNE LB! p( x! C( g* r o) l& Q' m- I
- JSR S_WRITE ;第一个精灵
u( U; E; i9 L - LB:' ]" g! C9 Q6 F. w8 U1 }1 [ o
- CPY #$01! v+ l/ f! `& c
- BNE RE$ i! E# c% b: r# s* ]) Z$ b6 k
- JSR D_WRITE ;第二个精灵
5 z! [) g7 Z" W( L& o - RE:
* i. P `6 p, D5 z* V7 m2 Z0 i - PLA a: \' ]: c; o, ~4 a
- TAY6 i7 H; c1 ~+ O7 p$ X; k
- PLA
1 [2 J2 Z: U! [/ s _8 K - PLP! i/ @. W! U5 w! N4 @
- RTS% F( v O: W C( Q/ ^
- ; W4 H2 {1 U0 I1 N" l
- S_WRITE:. q B9 K F4 T1 A
- PHA P# v! g6 [8 k
- TYA0 U2 w4 {$ m7 ^; j9 G5 w; E& P
- PHA+ x2 @5 Y7 _* l* b5 U6 |: Y( ^
- S_CMP:+ B' T G" s: A9 N$ a- t# P
- LDA $00+ @$ N- u, U) i3 T
- TAY
" a# N5 m( b# e: |+ l% l8 ? - LDA $AA,Y ;读取武器值
" H2 U; Z2 D# C K0 r/ c, l; S - AND #$10
2 V' f% d/ Q0 v) [2 L5 W9 J0 t" r2 r- \ - BNE S_WEAPON- h( F9 l+ w# _( c3 }
- M_WEAPON: ;普通状态
5 [- Z/ h6 [1 I( q' A - LDA #$26( } N4 |) ?* y- u, S* ]
- STA $0201,X
8 e% {- ?5 o/ y4 O0 X8 o; s - BNE RETURN; [% `3 I/ B1 h6 G1 z
- S_WEAPON: ;加速状态0 B( @7 r9 c( b; E& I* i
- LDA #$1C' l5 \, h& g7 @4 p0 O. D. W
- STA $0201,X
2 j& a; b$ I5 Y2 @! N - ' ~" _4 Q* m4 F E4 V, R% \
- - h- p# i5 R6 G4 g) m8 ?
- RETURN:: B* p- c+ X0 _; X. u
- PLA2 n1 _5 Q. \6 M
- TAY& S" P- g k/ M) `
- PLA
" m- ?% G0 U1 ~% P" u0 D, H - RTS
: }8 i' y2 C5 N' C* | -
: {: m( @4 O% A2 ^! X - , ~! ^3 R/ k9 H+ f% w
- D_WRITE:
) a. u5 e) p' J' Z - PHA
* }4 }; w) R' f: e - TYA( K! ~* `/ \% G p
- PHA: n8 S- K" Z, w `4 @- T6 o; c8 D
- WEAA:
6 ?+ M" k. D* Y/ G, l. J1 { - LDY $00
. I+ R" i8 b. O - LDA $AA,Y
% e$ s9 `* C/ m: h0 ~! _6 K4 m - AND #$0F
7 k! ]. N$ x. V% ~6 h4 x* b - TAY
- s8 d3 @2 i R1 z1 X - LDA DATA,Y
- j4 O4 t% k# X" `; X8 s - STA $0201,X9 E9 N1 G& b# \9 G6 O
- , q* Y: K3 V. ?
- PLA
. d/ @& J) R [+ Z- d. F( s - TAY
/ h$ Z D; ]' t1 L& T - PLA
0 ^4 v9 A0 e! f* t, `2 T/ S - RTS5 \& m1 H$ }* j) {' A6 b: [
- 3 V3 @+ o$ c1 ~( F% `0 f
- DATA: ;武器种类图块
7 j. ~0 A) W" b; K# E9 L0 Z - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|