|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
|) V0 c/ r! t" U- l( t8 a" y5 R* Y- i% V" W# b
2017.3.13
& u! R1 X5 t4 u% I- k, L/ a3 c. g
. W7 K4 @0 E( u8 w' ?& P J) X; j7 ~ 6 M9 w- V1 c* ^6 o+ _: e |: C
7 C- H6 [8 r+ q% r5 f
- .ORG $936E ;CONTRA(J)0 w8 I# F) C$ _
- LDA $25
! I$ I# C0 N6 o8 x4 p# g - BEQ ADDR_93C9' C+ Y! c4 W% Z3 u0 B0 p" e3 I- j( F1 B
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
% B% R/ X% D0 p' E+ q) z* d+ K9 w - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
3 X5 ]5 j& x& { - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
5 q2 ^5 f/ J" E% R% F0 C. N - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
* F: `2 ~0 p" l% f7 W2 J - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
8 Z' r; H4 ?5 E) B j0 ] - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X( x9 v8 j1 t5 i; C5 L
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
8 Z9 h8 h- ~2 F, S - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A, S+ Y1 M! G5 N5 z. C" X9 G6 s. v
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节. x- n# v, A/ D L: S7 y% O* M
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
. F" h+ Q0 J& T% M - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
; b0 P& s ?6 g4 X - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y& U; N' O) l0 G$ ^' H; q
- ADDR_9387: LSR ;逻辑右移6 l X2 b4 c0 j% R7 G1 @! M1 J
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
% s( x3 v# U3 v8 U - ADDR_938A: LDY $0000 ;设置Y==#00
0 W3 z3 a# a) x' u% ~. u - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
1 k) g: G) E% u. y - CLC! V S- `& j- T! O# Q" q2 r: T
- ADC #$023 s$ D- } f! m
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
' ?3 R& j& }/ N: P) r- q - ADDR_9391: CMP #$08 ;比较Y==$04?; ^4 R; ?* s* H( u. c- L0 ^8 m4 `
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
. C& i! F9 x# p3 F# K - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A2 |/ K$ x! W% D, C8 q7 o* s# {6 a. T/ h
- ADDR_9397: STA $0001 ;送入地址$019 s7 J6 i6 p% c- p! m! L
- ADDR_9399: DEC $0001 ;地址$01递减) b( g9 q6 w7 O7 l- A: _ I7 m
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节1 f7 t' j, g/ I8 w' Z4 t
- ADDR_939D: LDA #$08 ;设置纵坐标数值
. ~) G& s, s# {$ p7 N - ADDR_939F: STA $0200,X ;送入纵坐标地址) c3 @ |) ?! B- j
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
7 t) i# v" ~% P/ u# d a5 z - ADDR_93A5: STA $0201,X ;送入图快号地址
6 i# a, f6 r! G) s% N - ADDR_93A8: LDA $0000 ;读取属性值数据
* m% l1 H5 ?/ z \ - ADDR_93AA: STA $0202,X ;送入属性值地址
) E' _, ~: K0 Z9 x- b - ADDR_93AD: LSR ;逻辑右移* O- o0 ?- l# b) h u \' n
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值# x S+ x9 x) j$ K, B6 x
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
5 r; W0 L0 N4 N - PHA
C8 [* n2 g) h* R4 S2 \/ w - TYA. `. c4 K$ y' I6 o4 w
- PHA ?/ x9 b- N: r( N# M3 q
- LDA #$D4+ U: y% U/ L9 }+ W! U
- STA $0200,X _9 L; @% n. T- O2 Z
- PLA
6 ~. r, P. O* l, u/ r5 y - TAY
. E5 k C+ \5 z: [# `' C - PLA' y* J" z4 m3 [7 d- o" y
- ADDR_93B5: JSR WEAPON/ _ B1 Z( `. m4 m. e* N/ V
- ADDR_93B8: DEC $0007 ;地址$C7递减
0 |7 i$ Z) C+ n3 ^! X3 G: v - ADDR_93BA: TXA ;X-->A
# k& i4 w: z% G: ~: K - ADDR_93BB: CLC ;清除进位标志
! r5 N: z; {" U - ADDR_93BC: ADC $0010 ;加上地址$10的值
2 z: u2 V! i4 c, z& ? - ADDR_93BE: TAX ;A-->X0 S- t8 ?7 ]/ G! `0 |
- ADDR_93BF: INY ;设置Y++
9 g( l' q9 }* n6 V, T% \' p - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399) B& R% m X: G) p8 }& l% j. o: f
- ADDR_93C3: DEC $0000 ;地址$00递减
. \- W- o! [4 f6 } - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节! Q+ p2 R- G, \# `
- ADDR_93C7: STX $0004 ;送入地址$04. |. S4 B. G# Z& ?# D1 k
- ADDR_93C9: RTS ;程序转回-----------------------------
+ w4 P! o, j5 c) Q$ w/ u - 4 B5 P) C* j- r
- .ORG $FB60
, R# K( K1 S0 v: H" w E - ADDR_93CA:
0 ~5 {+ K' w" p! A6 F - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号! E+ {5 [6 O) W" J. _
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
. M, q3 W# a% q* I q - ADDR_93D2:$ }+ I. r8 C# v% I7 Q, Z S# |5 y
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标! e3 d) S1 Q: b* ~! o
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
$ t* e- J8 y2 J2 o. v - 4 s. t; }3 }7 p u
-
# n2 B) j+ G5 S& n% n* W+ ^) K - .ORG $FB80% b( j" S4 T- _) r+ _
-
& u# p5 k9 P# l4 | T5 y - WEAPON:
5 l: H$ |' |. T, ^8 P8 k( y6 y - STA $0203,X ;送入横坐标地址
( {+ v6 T2 S2 N9 x - PHP- U% y' T- v- P# b
- PHA
' m3 W5 N; l4 ]9 i0 A% z - TYA0 U' A( A0 u0 W/ |* H
- PHA
# t0 B* [1 Z0 {0 Z# ^9 M5 z - CPY #$00 a7 J$ w: e" ?) u
- BNE LB% i7 m! }1 ~7 K0 {
- JSR S_WRITE ;第一个精灵& ^& L4 P" [( b$ Z
- LB:
3 \. z% g( y2 B0 q+ j - CPY #$01
5 \9 n) N0 n$ ~; w' R - BNE RE
. \/ N# e1 q: k/ e5 H3 U - JSR D_WRITE ;第二个精灵# `2 z0 v$ u2 I' D& E
- RE:8 ~+ q- B: X6 b4 B
- PLA: A- v/ p6 g/ W% J
- TAY+ S" b9 N W$ v( e
- PLA0 h9 D# n: D2 }; ~# K
- PLP+ O( c. J6 q) Q2 q" ~
- RTS
9 |* V6 `- J$ X/ i: g& A -
- [! c; |. e$ v9 B - S_WRITE:) ]+ t( \ i3 W4 S; Z
- PHA# W8 P0 v; A6 K, \, U
- TYA2 _# M- O& a( _+ a! o+ k
- PHA% v; M% ]5 z- Z; A
- S_CMP:% v& C' m5 l, g/ n
- LDA $00
8 [3 `- z+ l8 F- f' z, i - TAY
+ E3 W4 {+ J' C$ X+ d. n6 y$ q1 i% m - LDA $AA,Y ;读取武器值
& P2 [8 J9 \4 t/ t) b - AND #$10
7 }; I U# S9 m, d - BNE S_WEAPON
7 ?6 ^2 h; T9 m+ p% ^ - M_WEAPON: ;普通状态
" R+ |. {0 Y% j9 E2 N) h - LDA #$26" }8 T* n9 |, M# w) e/ }* e
- STA $0201,X2 n( c, n$ R2 z- A5 T( V
- BNE RETURN) {4 n& n- d6 z2 W9 s9 I
- S_WEAPON: ;加速状态3 |/ c- c; D# r ?/ a7 m* E, y
- LDA #$1C8 w+ ?" U" o9 S! Z' `
- STA $0201,X
0 z* G0 O8 B1 Q' k) O6 y - " l. T A; ]" ]' Z
- - Y3 X% N1 ^7 _' B: `- C6 r+ R! `
- RETURN:* ~" M' j& t4 ?: v# I2 F& A; j' J; c
- PLA
1 e: k$ _% G$ S7 g# U - TAY# L; `9 n" ]8 L& {6 Z
- PLA
6 {7 ?* G0 a; ]3 W- y: j - RTS
7 z5 A" w; T& q$ ? -
3 U2 q! {7 o1 x' o3 n4 z
/ X! @& d" F9 B; B- D_WRITE:6 B+ W6 I9 C4 G( d' ~& C
- PHA
7 q' S0 E; P& X i - TYA) x* S9 q$ g+ `. J' G( g
- PHA C( }& f' |; c( ~4 u# ?3 b
- WEAA:
& J3 L0 [) k! s9 y) @# t - LDY $00
$ P7 a$ K/ i, a* s - LDA $AA,Y; ^: W: D0 w2 X! U, K0 [
- AND #$0F
; k3 G- L# h, }- y2 R. x0 t) d% J - TAY
d% w; h. v8 e" f6 R) J. K1 s - LDA DATA,Y
. [: P+ b& Z( Q& J" c; \ - STA $0201,X
" m& M+ a4 d. D" t - 3 b& P4 c/ T1 Z( m) s7 l* a
- PLA
3 b7 H6 |# J/ X. G - TAY2 O: |9 C [4 P1 J4 g m7 X( f
- PLA, q0 T- ?; X# Y c' J
- RTS
4 a" [: u& |# J3 ]8 X) N -
- K3 r8 h9 H! e" ? - DATA: ;武器种类图块
# s7 ^, w4 w& d4 _. t% U; k - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|