|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 $ ?6 e. i& r: J" |
4 f* V6 Y6 Y3 c7 g% L! f I2017.3.13
9 F, y7 k6 W$ G8 R 6 ]% N. C1 U8 f& W* N/ }) N1 x

6 X% p! Z% e6 W; n% U% y8 b$ K + b6 V" |0 |, x+ }& a1 \( ^
- .ORG $936E ;CONTRA(J)
! c b0 n- {3 p" L8 R4 x - LDA $25$ I" G' }) y7 f7 P
- BEQ ADDR_93C9
0 [+ K) m' n+ Q; k - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)3 L1 V1 ~4 J1 U* f
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
- d; t, f3 @- b9 f5 c' n8 B+ Y - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
! H3 m) q! ]5 q - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A1 c# N8 n0 l, C& a2 u+ K
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00% U! L2 L8 y" |1 N1 e& F
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
# g9 H) Q- w. |- I8 j$ A - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y- ^- M8 _/ \4 _( _
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
. t; ], J) _% Q( R T - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节3 ^$ J7 X ?7 z* k. }3 U: K
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
0 }6 o# f$ l; C6 h1 K/ z1 w - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)0 L7 s3 A8 M0 _: U% J
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
: P& e2 j: C; X - ADDR_9387: LSR ;逻辑右移$ F L4 v9 E% A* {& s
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
8 g( z* R" S; I2 s, c - ADDR_938A: LDY $0000 ;设置Y==#00
3 _) a3 ?1 U( m$ t7 K - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A/ ~9 X0 F% R: o4 U0 Y
- CLC5 f2 x/ t( d% m n3 ?
- ADC #$020 G# w7 c) w6 O+ Y) N& M
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
( U2 u+ z6 k: t% ?) Z o/ n! y - ADDR_9391: CMP #$08 ;比较Y==$04?
6 P9 S! l, }5 }* g+ L- x( H - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
( R/ }8 ~* w& h- z/ N5 M - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
2 H/ O5 V. E* O! q, Q - ADDR_9397: STA $0001 ;送入地址$016 P. p( W4 J. j7 {
- ADDR_9399: DEC $0001 ;地址$01递减
+ P4 v' L- M2 C1 q - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
3 ]* m# t: B. U* J - ADDR_939D: LDA #$08 ;设置纵坐标数值
6 |& ~0 D0 h$ _2 w* I% X - ADDR_939F: STA $0200,X ;送入纵坐标地址
$ J, @* ?* Z1 w0 |' v - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据( ]* B) g6 e3 t. r [. }
- ADDR_93A5: STA $0201,X ;送入图快号地址% Y; ?& Q% R. p: ?: W
- ADDR_93A8: LDA $0000 ;读取属性值数据5 j; l9 Y6 r" K/ Z1 h
- ADDR_93AA: STA $0202,X ;送入属性值地址. C" m- U1 T4 a0 I, b5 W
- ADDR_93AD: LSR ;逻辑右移
5 f; {8 }0 h- [, W& t1 w. U - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值& y, u8 X/ p# \+ y0 s' z
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节9 w; }" q* ~. Y
- PHA8 w6 _' k; V9 ?) p3 p3 z y1 k ]
- TYA; s1 |) o4 _! |. }/ h6 {! R* a6 B2 N
- PHA2 g0 W, k, l3 z' Z" q0 e
- LDA #$D45 _1 ^7 d( d: P& V0 f1 c+ j
- STA $0200,X, Z/ [8 r4 S) ~0 b1 a
- PLA
7 l- e0 Z- k' b - TAY
) Z0 C0 Z# A9 y3 @+ d - PLA
. Y! W; p' J' ^8 u9 [( A, C - ADDR_93B5: JSR WEAPON. j. P b; L; B& d: o
- ADDR_93B8: DEC $0007 ;地址$C7递减
( l- f+ N9 F. D1 w4 B, F - ADDR_93BA: TXA ;X-->A
! v z9 Q) [* Y- c9 X6 r% [ - ADDR_93BB: CLC ;清除进位标志
% G6 Y: K5 g$ H - ADDR_93BC: ADC $0010 ;加上地址$10的值
$ a9 n0 A2 N8 W' G0 r- R1 L8 c - ADDR_93BE: TAX ;A-->X
& `- v; m6 b0 I* l- s+ m: J% [2 c - ADDR_93BF: INY ;设置Y++
& o+ `2 C$ R) t" `/ [! O$ h3 Q! i - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
! v+ ], [5 W2 L# p, M - ADDR_93C3: DEC $0000 ;地址$00递减8 L# n$ q% y) u. U
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节, r- s: B; Q4 a; l/ [3 E
- ADDR_93C7: STX $0004 ;送入地址$04
: x2 g" w0 }; @1 u - ADDR_93C9: RTS ;程序转回-----------------------------3 ?/ n: ~3 }- `: l( L" \/ {! Q
# h: k9 q9 ]1 t: F% T: K" B- .ORG $FB602 j! C8 @: _& T
- ADDR_93CA:8 K: \; I* ~9 A: q" D
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号! E0 O: Y# s& D, O$ x
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
" M8 w+ y3 ~) u; Y - ADDR_93D2:3 A+ m/ u% z+ H
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
& c! ]1 \ b$ s0 u2 j" i8 n - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标# m8 s" d) X5 g& ~: _
-
' ?3 y% P, ^" ^, _7 c+ O5 Q; W -
, M- @! T: `! R. ?9 \ - .ORG $FB80
% Q; r2 `& {6 ]: m -
/ L2 L$ V7 R/ t3 i' F - WEAPON:
$ A% X# T) Y7 Q - STA $0203,X ;送入横坐标地址
5 U% z7 r; x6 ?* z4 k2 {' K - PHP; p% A% w2 I' E" D, v' Z
- PHA
9 r9 `, x) T6 l3 n - TYA
) y8 A$ W3 {" G" i6 ~2 _; M! u$ f - PHA
6 `) n9 Y u8 }7 g6 t - CPY #$009 z5 g4 m7 I# | H' l
- BNE LB* b, b! Z; \# t8 V3 a5 ]
- JSR S_WRITE ;第一个精灵
9 A6 z% ]' ?3 a - LB:
7 n7 E4 `/ R6 A: A/ ? - CPY #$013 Q! D3 ^ y2 w: @3 o# f4 m1 A
- BNE RE
& R8 Q/ c1 c0 w3 w# Q0 O - JSR D_WRITE ;第二个精灵
1 I0 D0 b- Z' |* z, E- h$ e - RE:$ g0 s9 V4 j( k7 m S. F9 _4 R
- PLA! k4 A3 D% C9 }# U7 X$ d
- TAY
T( R+ f u! b+ a3 R t* L' p1 K - PLA( h2 Y/ n2 Q" S
- PLP, l5 N$ E' U: N; k
- RTS
# M; }. |8 u$ T -
8 g* p. P) Z+ u. T - S_WRITE:
& }" U. |/ B9 d9 P8 ? - PHA
W$ {. G, F x% q6 p; w v - TYA
. M! @2 n* b" N( S/ R2 W- o - PHA
) T# z/ j- b; }5 ]. {7 a9 ~ - S_CMP:
. p5 t' U) q8 K - LDA $00" S. T! j" `4 k7 f8 ^
- TAY6 n& \$ {' g+ r$ d
- LDA $AA,Y ;读取武器值( j) T$ @$ v7 {0 k4 G
- AND #$106 w; l+ d% ]" y8 v. V
- BNE S_WEAPON3 A& Z' F# C) f0 A5 M3 c; s
- M_WEAPON: ;普通状态% { Y# _1 \( {- u7 v. ?! W
- LDA #$267 K2 G' D; l$ X' @
- STA $0201,X& K: m* [/ l/ V; M
- BNE RETURN8 F( C m! v8 ^5 S! e$ |
- S_WEAPON: ;加速状态( b/ g! c4 c- _+ U3 g
- LDA #$1C
1 o: \2 x8 e5 |& Y - STA $0201,X
' B/ ]& [2 C+ G' `- M- l* ?6 _/ e - 9 `( N, [+ Q% q1 y
- S. y& l, s# L7 q, R+ M4 o
- RETURN:% k+ Y, X- [ F$ ]
- PLA
, P" h! B! P1 h5 G0 k+ s9 r - TAY
4 s+ O U" Z" n* @( J, [8 C, l - PLA
, M v2 w& k* s0 j% f& D! i - RTS
! C% x( I, J8 E& J* O1 q - ' d2 s4 I- X5 F+ C7 M
- 3 r# n$ }5 F# y5 s
- D_WRITE:0 L4 w; E' E. ~8 Y! N$ ~* J
- PHA
, e2 b5 e; h" ? T; A ` - TYA
/ y- e! d2 E$ r3 w5 a& a - PHA
) k/ l; ?& ]" Q& O9 ^6 }+ b, I - WEAA:
W# I G, U& o1 B# [3 S5 Q - LDY $003 n2 o2 q, g X
- LDA $AA,Y
, z Q2 H: ^, ]! \1 N - AND #$0F2 H" Q4 N/ u; x2 H* S
- TAY
8 ?8 F; W( y! f2 _1 C - LDA DATA,Y
+ v* U! t$ _$ D1 M( E/ [9 @ - STA $0201,X( |4 O0 H; \& a
-
6 F l' K0 x" P8 F5 } - PLA
. {' u+ U; X+ g4 H; P - TAY
H: Q* q3 c' g0 ?' f - PLA8 K2 R2 ^0 z% Y
- RTS$ Z6 s# r; M1 f
-
! q0 @" S; }2 @( O% ^5 L$ ` a3 G - DATA: ;武器种类图块 b" e4 A8 S$ c9 B* k7 C
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|