|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
4 j, d7 s) G j" C1 h* `* H: O2 F
4 Y& N" b5 a/ f2 B( L$ y2017.3.13
) X# u: v" b: [2 l& V" i# x 8 Q# d5 q0 l0 R& o. G: H& U9 P; n

- q& o9 n0 Q7 W7 a , U6 }) n) e$ k) q
- .ORG $936E ;CONTRA(J)
+ Z9 l$ C: H, E0 D+ i; r. J - LDA $250 }- g. ?0 g3 ?+ n7 N/ l G/ m6 X
- BEQ ADDR_93C9" Z5 I; i! {% r
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)! ^* U! P( Y" x, Z0 T
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
4 b' z" J+ b1 V g" S# d( ?1 {; v; [ - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
. }3 ?: i: F$ O6 d- M6 O: A - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
; x7 S7 P! Q1 w$ p* v- {( L - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
% B2 ]) s5 ^: A$ F - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X7 X( A$ I- h9 |2 e! l
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
7 U |, o" v+ B6 h9 O" i - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A) n5 k4 y5 t2 L/ g7 y
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
1 i# p* i. H1 t - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y: Q9 t- G, \$ s6 N) G: ^) [5 s1 x
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
0 m' p5 D: K1 \) k8 j9 K" c - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y% K; E. M5 S0 m9 D7 k: C! f
- ADDR_9387: LSR ;逻辑右移
. u; G. {& f8 q0 |- Q - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节 h/ b! ~) W2 Q* L
- ADDR_938A: LDY $0000 ;设置Y==#00
- j2 Y: i. u3 z3 X0 S2 D7 b - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
2 U. Y* l- n! Y9 L! p - CLC
3 S$ K" I: B9 a; l - ADC #$02
A* C* J9 c3 S& F. i( W - ADDR_938F: LDY #$00 ;设置寄存器Y为$00' G- ]) a8 U. |; U2 b6 I
- ADDR_9391: CMP #$08 ;比较Y==$04?/ {# h9 Q: z6 y8 P
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节6 G* }3 U2 X) ^/ _# t
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A' S% x* ^8 {) b* L# z, k6 O
- ADDR_9397: STA $0001 ;送入地址$019 H/ |+ a, t- b1 C: t5 ^
- ADDR_9399: DEC $0001 ;地址$01递减( B+ C# @$ ?9 Z& A4 D3 X
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
4 k4 g4 o1 ~4 K$ @1 \ - ADDR_939D: LDA #$08 ;设置纵坐标数值9 s( `- O. Y) n( `0 S/ u* l# L
- ADDR_939F: STA $0200,X ;送入纵坐标地址7 g! E g c/ \2 k
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据/ t# W3 T) e+ u7 N* Q9 ^0 V
- ADDR_93A5: STA $0201,X ;送入图快号地址& \; R, t: C& f* s. W% ?5 l
- ADDR_93A8: LDA $0000 ;读取属性值数据
8 B" V& l3 `6 L$ ^ - ADDR_93AA: STA $0202,X ;送入属性值地址8 Q2 `7 W/ M$ K5 I2 l2 D4 k
- ADDR_93AD: LSR ;逻辑右移! b" r' v: g% Q7 d
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值- [& F% p* j" ?
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节 c8 I: K6 @8 H$ @
- PHA
" h4 L6 Z8 h$ C, b" d' N - TYA
2 N! P" ^& r2 s9 x- B1 ^' t" ? j - PHA* G' E/ x5 z F3 |! z8 |
- LDA #$D47 `+ e1 U2 `& F7 K0 V5 E# l
- STA $0200,X
" {/ g9 e' y2 N* s' o+ c - PLA' k) @& }) n ]6 q) N' f7 ~; t
- TAY3 y8 G2 p, x. ~+ V/ U' L3 t
- PLA* \- R$ k9 y) `) l% G1 c
- ADDR_93B5: JSR WEAPON$ C4 o m0 n6 ^% s6 _
- ADDR_93B8: DEC $0007 ;地址$C7递减
! q" \: G4 [/ f% x$ r. Q! L# \. o - ADDR_93BA: TXA ;X-->A, q+ X0 ~" u% J) V0 r* ~1 b
- ADDR_93BB: CLC ;清除进位标志2 S- r3 C9 E# p% F7 b& j( H: I
- ADDR_93BC: ADC $0010 ;加上地址$10的值
; r; F- W& C6 b& Z - ADDR_93BE: TAX ;A-->X
9 K. I$ C6 A! j. U7 c - ADDR_93BF: INY ;设置Y++
) W: V$ T" ?8 u4 |* _/ z( o* R - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
' o* r5 y/ `, U% s - ADDR_93C3: DEC $0000 ;地址$00递减
& G a1 S+ o* L5 b - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
# h- D8 \- J! r; ~+ B* {, J - ADDR_93C7: STX $0004 ;送入地址$04
* o$ O; X' W4 \& R m* u' `5 E - ADDR_93C9: RTS ;程序转回-----------------------------
& n- m" A0 P7 T% ^9 V' o - 1 r) `3 I4 H2 p7 [) o
- .ORG $FB602 ]1 g" I6 k2 V" Z% m2 N
- ADDR_93CA:& b" E1 T# u8 G, h1 y
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号# V a- N& z2 j( i1 j% @1 L
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号. ?; s3 b u' ^- |4 d2 A. ?
- ADDR_93D2:( Z2 I: J2 M2 Y: E' d8 }& ?
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标 r& r2 Q. p1 L( @
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
k! Z8 ?7 k4 P" q4 X/ A, f - $ h- q7 ~$ I( t4 V7 T0 ?% }% l6 P
-
?. _4 ]" C: V1 t - .ORG $FB80' U4 G0 p5 P9 ~. f& Y
- * h: \, X Y$ H* D0 X6 \; r: b- q8 D
- WEAPON:* ?7 y2 T& ?" t9 Y* I
- STA $0203,X ;送入横坐标地址
/ K. N( j' R9 q - PHP7 @1 w7 e( y" P
- PHA
. Y |) J$ q" J! u/ J - TYA2 {7 C+ @& g0 L3 l
- PHA
- O' C0 V9 X7 V - CPY #$00
) ?( N/ s4 S, T - BNE LB: V8 r- k; A1 `0 L ^5 C: ]
- JSR S_WRITE ;第一个精灵
. V! S, i* `! @% `2 t3 a! Z - LB:! e9 @5 S9 v9 d
- CPY #$01
) ^" s. c/ W' R+ r% f. B - BNE RE
6 T/ U' p6 p' P4 [. t. u - JSR D_WRITE ;第二个精灵" S' A+ t: o' x# {
- RE:7 ~2 l3 V7 l9 X3 C$ N% E
- PLA
; ?" `# u i% K9 l- R5 ^ - TAY
& P; w* }, C) A8 d& V( { - PLA$ ^: s' u' g+ a6 w
- PLP' M* D, C1 f( |# l r' M i* H
- RTS
6 P2 m0 e# q% w* O. L4 l! M0 [ - , A' A+ m7 ?2 ?: P& z
- S_WRITE:
4 u% F1 H, v8 R! e; p1 u% y7 a0 D - PHA& ~" X0 X _" [) b% n8 R
- TYA
7 r9 u% |5 E( m7 |8 S) O - PHA4 y8 f6 Y& c' S0 @, y- @
- S_CMP:
. T E% E' }7 v$ {# p5 p - LDA $00
" H5 x: t; f: R- |7 q+ ~ - TAY& p2 S' I, z1 _% P/ ^* e0 }! d
- LDA $AA,Y ;读取武器值
- f1 d P6 V$ f7 M5 g - AND #$105 M) ?( U. d8 X" `9 z: i
- BNE S_WEAPON& ?0 x. K% z9 x1 q% t; K8 f$ T
- M_WEAPON: ;普通状态
! ~4 |' s/ M. S9 M& x8 C - LDA #$26: P" z) x- m0 v
- STA $0201,X
0 a! k% v* \3 H5 ]2 a - BNE RETURN; B* l% F. g4 @0 T- E& F. z" D
- S_WEAPON: ;加速状态! S% Q# j4 N! {) | @1 }4 J Y
- LDA #$1C
3 S P) h9 }) w$ p - STA $0201,X
3 M8 j8 J* Q* y -
8 i0 ~5 n/ r0 y% F: S Y# U6 v - ! Y7 X$ s. P- }1 r' p B: O/ m0 l
- RETURN:3 W; g* O' H# c: Z7 j) }& t$ g
- PLA
5 \5 L# {9 D* M! ?& j, l0 n. J - TAY/ a7 l4 ^3 c& P. O0 {( ^" s
- PLA
- a) e h5 U% |6 ? - RTS
! ]1 `/ o3 W: f/ Y. b -
" A5 M, q2 J6 t7 Z( E
* c Q" m O" U- D_WRITE:/ d* ~* r: I/ J0 s: w
- PHA7 r' l1 `+ q2 i6 \6 `
- TYA. x$ |; [0 _/ B% S2 ?5 }
- PHA8 ^+ ~ ~0 `: W
- WEAA:
, e& m6 a2 x' n$ G - LDY $00" j# A1 e! Y" ]9 T5 s
- LDA $AA,Y
+ j, x" C- a/ y# e: g! [ - AND #$0F
: _+ W0 a) [& q, ]$ n - TAY
! F& f4 L0 T' d% ^5 J - LDA DATA,Y2 o" |5 T% k) a( k
- STA $0201,X
. \ t* o3 R0 |8 r9 b/ x% F# U - 8 D/ }" h4 Z. d6 H4 F5 n. x. `
- PLA+ M( G& }# I8 O) k, L% a$ w! b3 T, D
- TAY
* v4 Q8 Q P. y! \7 F( Z% s) Q% R0 u - PLA B( }+ P$ O7 F% {2 b0 M# N
- RTS
) j; _: H/ J \8 h; ^$ w -
) c, y2 S$ O9 B# {1 L - DATA: ;武器种类图块
% d9 L* Y- Y. P8 s- s$ { - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|