|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 9 E1 A3 Z) H8 ^. G( v" e/ Z6 G; L/ V
' q; E0 Q, {3 [+ x* `9 _" G. c
2017.3.13# k4 q; i- a7 U$ S7 x- F3 ~
5 _" {" a+ r* n1 H( u8 F

0 [. I" k s+ @ ! N- E% u; j0 u- W6 B; H' P. q* [
- .ORG $936E ;CONTRA(J)
" g1 l. ~3 E; n2 J# L# V0 n - LDA $25
; o8 d `8 f' l( G - BEQ ADDR_93C94 H- {* n" r- j' Z+ V
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式): m: J6 n* i7 s+ _" r+ a/ f. a9 F! e
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
% R$ w+ S5 ?- I1 D" _1 R d - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
" A p: Z- F! Q - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
& E. L; J5 _2 a - ADDR_9376: STA $0000 ;将累加器数值送到地址$009 `4 t) v+ w2 ] ], s& p5 J& U
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
! r: V2 T5 H& F8 L - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y4 q0 @- A+ T, U ]& u
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
: _: ^6 X7 R2 K6 i; g3 j - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
6 u, y3 _, Y6 C' b0 K - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
+ |8 L+ U! V0 a( C: i. m$ l/ c. E - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
( |* [1 z& w; b# ~% ?. ]4 A* v; ` - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y/ d! W0 C, a; W
- ADDR_9387: LSR ;逻辑右移2 K3 y9 T7 X5 G2 C
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节: O- I; X6 E3 d0 L) M* N
- ADDR_938A: LDY $0000 ;设置Y==#00
1 E+ F' M& f7 O1 G$ z - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
, `% t4 ~8 A# I, C* _4 m$ V - CLC
0 T' B; O# n0 M - ADC #$02; a3 a0 J+ U( A, C5 ^
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
& K9 N* Y$ l2 u/ \% l: d7 ? - ADDR_9391: CMP #$08 ;比较Y==$04?
( W, B# `, G) u - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节0 A2 w; c6 w, Y. X, g) y
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
- ]$ W# u6 ?* d7 p2 I! G7 u - ADDR_9397: STA $0001 ;送入地址$01/ J' t" i5 R: i
- ADDR_9399: DEC $0001 ;地址$01递减: W$ M @5 [& q7 m! ^
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
. }$ B5 D' f) }- R- k - ADDR_939D: LDA #$08 ;设置纵坐标数值
0 `5 {- J& I5 |: n) b* ? - ADDR_939F: STA $0200,X ;送入纵坐标地址
8 n$ H: L0 Z- Y - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
: L% z( M) C$ G& Z4 |! I) C- T* g - ADDR_93A5: STA $0201,X ;送入图快号地址
& G' C6 @# f$ h! h9 y - ADDR_93A8: LDA $0000 ;读取属性值数据
3 O+ f* I# [2 E8 W - ADDR_93AA: STA $0202,X ;送入属性值地址; |- \& X; L4 M- b: ]' O- A
- ADDR_93AD: LSR ;逻辑右移
) y7 e% V# V3 C Q; B( P& U - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值. q l3 E" y) c% Q7 z/ `* r1 _
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节: _# Q/ z. B! X O: a
- PHA" J% K4 ?3 j, F/ f( q B% W
- TYA
- j& L: K9 o1 A - PHA" W6 D1 `3 y. `
- LDA #$D4
3 t1 r) x# }! S& g% k - STA $0200,X: l& i+ A0 D) U) ~* G" f: e. g
- PLA
' I! s1 r* _4 D4 Y - TAY
) x' K, o3 r+ d7 p/ C - PLA
+ b' a- y9 F8 [# n# i7 \ - ADDR_93B5: JSR WEAPON# R$ y7 u4 k- w* D
- ADDR_93B8: DEC $0007 ;地址$C7递减
% X; G8 v3 a" \5 v0 c5 B' n% c - ADDR_93BA: TXA ;X-->A
8 P' E' H% l3 m/ A - ADDR_93BB: CLC ;清除进位标志/ S( w. y0 t; X! t" S
- ADDR_93BC: ADC $0010 ;加上地址$10的值, J% W- _0 B- @$ m) P0 _
- ADDR_93BE: TAX ;A-->X
7 p# p4 D3 F P) b6 t - ADDR_93BF: INY ;设置Y++
& q7 X$ a- R; b' J! Z! @/ } - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
0 D4 r# p9 e. P; Y - ADDR_93C3: DEC $0000 ;地址$00递减3 p7 q9 @" u% h8 C) Z
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
3 j! S8 C( {& k' K* z0 p: d - ADDR_93C7: STX $0004 ;送入地址$04
# h; V% z- _# `& t/ N4 K4 y - ADDR_93C9: RTS ;程序转回-----------------------------$ l) w" _ G. q3 _
+ m% k9 S$ F" \& U4 B: I- .ORG $FB602 Q5 G# h- M$ ~& }: c+ h3 X
- ADDR_93CA:- K* U+ F5 y9 U' s( k
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号% ]* j6 O% a& `% e, U
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号1 a( W1 I, h$ Y3 b* }0 \- ?5 [
- ADDR_93D2:
W/ {5 C+ _3 h! P; H - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标; d: A$ L0 c, x h8 j8 l
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
+ [0 x- B, v9 K$ Y - 3 o. S$ y( B( e0 [2 l8 h* ^
-
( N6 u R5 x: n# [4 Y: Y - .ORG $FB80
' n ~* i' n& V) {- w# p1 [! _ - ( v, s' Q# f% i) c
- WEAPON:
* W2 }! W7 M) p" e - STA $0203,X ;送入横坐标地址
( n5 j- u+ e0 x( i1 J - PHP9 G: f( J' {$ G! C, d. Y
- PHA8 x2 `( u6 L7 F2 _+ d
- TYA! x- b+ O [& `) W G L( i, e2 E
- PHA2 V5 u) p4 [* R* R5 P1 Y$ x
- CPY #$00" W/ N* i( t- x+ n/ T6 i
- BNE LB
& L+ V, g! R2 [4 m - JSR S_WRITE ;第一个精灵 q) G- z/ v* m3 h5 x
- LB:) U2 ~6 `" X$ g! T4 Z+ Z# V* q
- CPY #$016 H: b0 T; }0 }9 C1 K; |
- BNE RE
% R9 X/ c% G, }9 U+ o - JSR D_WRITE ;第二个精灵3 O' N3 Y) H4 u2 [) b
- RE:
4 ~6 T8 J4 F: Y* P2 V d9 s - PLA# t5 S" [% j, {5 O
- TAY$ a' [! x6 p& S
- PLA/ s, U+ ^$ g& r2 |1 T+ ^. n
- PLP
4 Z9 o1 b y" u- D9 d# X; Y$ s5 r7 @' { - RTS: U+ r3 l# V v% q) @
- + d2 h# h+ t' a: k4 L
- S_WRITE:: c6 M' @/ p% ^$ R/ ?7 e5 u+ K
- PHA
; T" E. G9 l; v5 c; ] - TYA
( O3 |; q. k1 i) r - PHA
5 r5 ]. I K h) x v( r# p8 }2 \ - S_CMP:7 S5 x+ q7 @: U: h$ a
- LDA $00
- |" G* ?) k4 g- S: q1 [. q4 n; B - TAY. k" X% Z( {% p6 S. f
- LDA $AA,Y ;读取武器值; T& n5 t- T# R
- AND #$101 r6 x& m. H6 D& \: a
- BNE S_WEAPON
8 W, u/ V5 z& {3 P H# H0 ^ - M_WEAPON: ;普通状态) ^2 I; |: K( X! o5 @, b
- LDA #$26
$ d3 S9 U% O' m4 Y( F* y7 p/ _6 S - STA $0201,X
! V1 M4 k5 L* P% n# A" C$ z - BNE RETURN) b' Z1 Q; \7 U! i+ K. y5 |
- S_WEAPON: ;加速状态/ R+ s2 m; Z% G8 Q2 k
- LDA #$1C
6 W! z" Q3 {: Y2 C9 P' ]* K/ i - STA $0201,X
$ p& s% ~' z; y) _5 [ - 0 O; D7 E8 A3 v0 h; \
- " b/ g# ?: ?0 v0 S2 @& p
- RETURN:
f" F. i7 ]) E- c0 @9 x - PLA
5 W* o0 ~7 g- A5 ?' C$ A3 h+ D: [ - TAY8 C4 d/ R- n! D* e" A- P" |6 z5 A, F
- PLA
& M( p2 I" K; n% H+ Z$ u% V# i - RTS
" Y; G. g% W& \ - # C" o- K- \+ y" c% ~
2 f8 J$ [' C# w% b% E. O- D_WRITE:
. a3 E! @4 A5 H - PHA' G l& L6 J9 `! X# p
- TYA
) m8 S2 V- b* a" Q) D9 A - PHA
+ B* Y3 K) b. N: X( C; B - WEAA:
6 F9 Y: }' g! Q$ g# C4 J - LDY $00
; _- F% G% R, e, i/ f6 ?* _2 L - LDA $AA,Y$ u. ~; |$ p& A% i, h* |3 E
- AND #$0F/ ^7 \% K3 J T8 N; g' U+ U
- TAY- f. T1 R# N$ G. q* q0 h( A4 W2 G0 V
- LDA DATA,Y
0 W+ J: s7 P" t! u8 Q' Q - STA $0201,X1 z( e8 \5 \+ A! Z: f
-
^- w5 ^/ A6 v/ a( r - PLA7 \: b+ m7 g: x f
- TAY6 o) R4 Y/ y; Y% B
- PLA
2 V& m, W4 L0 o, K, |. f - RTS
" \/ D$ ^" k1 d* q7 n -
. ]* v+ C$ c. S# |0 u - DATA: ;武器种类图块. ^# V& L7 I% l1 a u
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|