|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
% q& ~+ d5 T- I0 e
# ?8 \2 ^& T$ F# @) X! V- H% s2 p2017.3.13 B$ k% Y8 H3 y2 w2 Y, \8 a) H
* N! W2 v) U8 F+ r

2 o: O3 T, B, Q/ c1 Y 7 j6 \6 o! y1 l9 g" H5 x
- .ORG $936E ;CONTRA(J)
2 A, j/ [# X, Q) i- U! ~ - LDA $250 x) ?$ w" W! j6 X
- BEQ ADDR_93C9
- D) U& M% s8 H: h% p4 h. V! A Z' E4 l - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)' U* `& A3 k9 D" u; N4 L
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
* r$ }, t+ l% T2 f+ X - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
4 ~; J" h+ s8 S" D- c - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A* n# f7 z) R; _$ ^' n
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00
, P5 Q h: G* [( \( F( z1 P - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
' V6 x$ O( [* {* P0 A" H P7 Y - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y R& x4 h7 i2 m) w: a# B
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A. c6 c( `* c9 t. A" {
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节0 _$ J5 c* \6 m( `
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
0 p6 j w! B" ?: c8 V - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)' G1 b" v* E7 q8 j. G4 s
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
. Z( h+ D" I& W% ? - ADDR_9387: LSR ;逻辑右移
" h) Z# l" \8 r - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节6 `" e" Z' H' u" S: Y
- ADDR_938A: LDY $0000 ;设置Y==#004 ]% S3 v5 y* P. @: M
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A! h m& |8 P( j$ j3 h4 W
- CLC% i c0 |% T" p2 Z- }7 V1 Q
- ADC #$02
! j* I3 o4 u( q+ O- I( g$ x$ Q - ADDR_938F: LDY #$00 ;设置寄存器Y为$00
: X6 S5 g; x7 r9 O( y - ADDR_9391: CMP #$08 ;比较Y==$04?& I& ], H# K3 |) b5 j0 w
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节. ^6 e$ w' v/ s/ y' N
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A2 l: |6 r0 w/ F( u3 S' d1 s
- ADDR_9397: STA $0001 ;送入地址$01/ T8 D3 ^, s- D' P3 w
- ADDR_9399: DEC $0001 ;地址$01递减 \: d8 p7 {( o A
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节) `& T+ H+ e3 H
- ADDR_939D: LDA #$08 ;设置纵坐标数值
, Z) O4 `, P7 B! W, C/ f6 }2 [3 P - ADDR_939F: STA $0200,X ;送入纵坐标地址$ D# i. V& K+ ]8 B
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据7 t e) y7 |" P7 n- H# I
- ADDR_93A5: STA $0201,X ;送入图快号地址2 h, L0 ?2 N' B$ n% `# [) a
- ADDR_93A8: LDA $0000 ;读取属性值数据2 J$ F( R: c3 F1 g9 D
- ADDR_93AA: STA $0202,X ;送入属性值地址- C2 h7 J1 V; a' ?9 T3 M6 F- H7 R
- ADDR_93AD: LSR ;逻辑右移0 F" J( E; s! |) b
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
) w3 F. n: g9 v+ y8 F - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节1 `; z e) q7 Z
- PHA
. G; D3 B3 f7 a/ Y/ l- c+ l0 K( b - TYA
6 g* ^! ?4 F! E; q - PHA Z5 G$ v' I4 {9 }
- LDA #$D4% U1 B" r$ a* R+ b3 K' `0 t- E
- STA $0200,X5 J( ?" G) f) H" p" f8 }
- PLA, U, B& [# Y: z& @
- TAY
9 X# j$ F- D3 X- I - PLA
* R! z: I. z8 t2 @3 n: s - ADDR_93B5: JSR WEAPON. J0 ^9 Y0 @9 N1 b* h2 `( k5 m# C
- ADDR_93B8: DEC $0007 ;地址$C7递减
! {5 D$ g/ ~% @* ?) V) P- T; V - ADDR_93BA: TXA ;X-->A
* ]" k+ }& j# K0 r/ O - ADDR_93BB: CLC ;清除进位标志
s# b; x/ {1 v7 p1 @ - ADDR_93BC: ADC $0010 ;加上地址$10的值3 ?, r/ F! T6 D8 y6 {; [* U& |% i, m& f
- ADDR_93BE: TAX ;A-->X
8 D2 F2 A* u/ h3 W - ADDR_93BF: INY ;设置Y++
7 `# J& V: i ?/ r; ]& k/ T5 m - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
& y! ^: j/ ?. l - ADDR_93C3: DEC $0000 ;地址$00递减
0 E0 \- A5 z- }; d - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节/ e4 q/ H j$ B+ C# Q
- ADDR_93C7: STX $0004 ;送入地址$04
- _ j Y" F$ Q! K ^ g7 J - ADDR_93C9: RTS ;程序转回-----------------------------
% G1 C. i3 w& ?' \3 m
. A. Y3 ?- E1 m1 l6 t- .ORG $FB60) z. ~, u& @9 J1 d& }
- ADDR_93CA:5 u* y7 ^. r3 w- u
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号" N4 n7 Q" x4 B: r% q
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号; o, k1 U- h. Y) B8 ~9 l
- ADDR_93D2:* e7 u- c) d- }) ^9 u4 o0 u
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标' |! K# D* ^# v. o" q+ r$ J# Z
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标! O) Y5 X; N, w0 n
- $ p* U! }( \2 q( y" D
- + Z v% a8 H" j8 V
- .ORG $FB80
% @6 i+ q& R8 h* h8 |9 w @ - : N: }8 u- ?3 p8 ?
- WEAPON:: M( q# A4 a5 o
- STA $0203,X ;送入横坐标地址
2 C( e) o8 ^2 o1 v6 u - PHP/ M) R4 y' y8 n3 k4 s7 ?. c" L9 _
- PHA
; s$ m. s( e, C) b - TYA3 v8 O. b; R2 h* q# A S
- PHA2 v7 Z# C' Q8 R: m6 P6 z" f
- CPY #$00( v# c: Z" v. Z8 j
- BNE LB
: R. Y! f) M* j, g1 j" j: F - JSR S_WRITE ;第一个精灵
1 b8 c; T$ g7 ^7 V# {, j% Z - LB:
- c# L2 l4 s/ T' a6 G/ C - CPY #$01
: `. G/ x3 Y/ V0 p$ j - BNE RE
8 q" f' \! ^6 p! N/ b8 `- n2 Z - JSR D_WRITE ;第二个精灵# Q& E6 Q q' n A0 q1 n
- RE:) j% N3 I; ]8 ~; ?/ k3 I7 ^9 q
- PLA) M" q" q, w7 D, U% F3 P
- TAY4 _+ \9 a* Z0 x2 t- N1 ]" b
- PLA
8 C# r$ H/ F: l5 q - PLP1 c- T/ h* \% M3 C& P3 ]) B; r9 M
- RTS
& }3 l; t/ I1 }! r1 F) h) r - 7 y4 ?) J, ^/ i8 ]+ f3 |: B
- S_WRITE:
" h$ g5 L+ l% I. z g - PHA" l2 F/ a- g. V3 J# M8 `5 w7 d( X
- TYA
: ]2 z" G' _# W- I3 @& u - PHA f6 e* i7 ~, P/ h8 o0 M! @
- S_CMP:
4 F2 z% f/ t3 U9 U - LDA $00& y) @2 D6 Y$ g1 F; U0 O" \
- TAY5 B" I4 P& D: q) B& t4 t4 v7 p
- LDA $AA,Y ;读取武器值
' s6 x( C9 [# B - AND #$10 u6 d. f0 |* f9 Q }' K k" X# t, [
- BNE S_WEAPON
. t2 |6 `( R( f9 {/ Q+ Y3 ?. { - M_WEAPON: ;普通状态* t$ V; j% B- L! ^
- LDA #$26/ f1 I; r+ l- Q% y6 j4 [
- STA $0201,X. p0 `+ X* @7 X& b
- BNE RETURN
6 z. H! V# N5 w% A9 o8 t t - S_WEAPON: ;加速状态* ?. V' B$ E" |$ C' K5 @: p
- LDA #$1C+ D; x/ o m ?; ]1 q
- STA $0201,X
O$ A. ]4 F9 v9 U - ' r8 S, [7 x7 l
-
8 @# y+ @% y# F' g( d: j - RETURN:
7 y2 I8 j- m+ M" p6 ~) ~2 P, r - PLA, M. X8 A$ W g& Y" c
- TAY
; [2 u7 g A: H - PLA
9 ~6 o: _" T, B/ ~! l* V; f - RTS
& q5 G7 l1 G: a" C' k -
- n' B a2 [+ Z" Y3 ^! a: W - ! ?$ ^! u/ v% e
- D_WRITE:
( T& @( O, r0 S) \( W7 v$ P" Y - PHA
) V7 d7 d+ K- k- d - TYA
/ Q+ M* w( T6 P% P8 ^ - PHA3 |5 t7 N5 B+ @9 E2 }2 S7 T v# M$ [
- WEAA:0 I, B& ^( G) x' o5 }
- LDY $00
6 Y& ?" J& n7 r- w/ ~, j) L& t - LDA $AA,Y
3 b9 _8 Q) {$ s& D- Q- h" { - AND #$0F1 ?: e" T3 n( h$ S: W2 W
- TAY
2 x4 @+ I" d8 [) r - LDA DATA,Y/ v$ Q( ^; q& Z8 u
- STA $0201,X ~4 p0 |/ {% h) [7 \- e
- 7 F2 u7 A, ^, b
- PLA- Q: U7 R& ], o8 x. T! P- ^
- TAY
/ V5 R9 R8 }9 ]8 ]- K1 X: z! D - PLA7 w$ s, y$ T4 u! D+ F
- RTS
/ Q# P) {8 {+ b -
, m$ q2 ^: K* C$ T2 M0 v* k - DATA: ;武器种类图块2 M5 H) v) A: n5 L/ v
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|