|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
5 i# s# a& v9 W, C; E9 m( c
7 v4 y" f8 K$ d& S2017.3.13
) z0 L3 h; }/ m1 m- Y8 E
: W* C, l; B% s/ z8 o $ z$ U7 c! |! o7 z: K2 h! k
# ]1 r! o$ t1 |- H e" Z: _" |
- .ORG $936E ;CONTRA(J)
3 x; ~3 u4 C! Y" m, L) p5 I/ e - LDA $25
$ W1 {( B" ]; ]# ^ ? - BEQ ADDR_93C9
2 @+ e/ X$ G/ n- m/ O6 H; o - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
! s2 J; g8 `3 Q9 T* O9 [- x! i - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
+ w2 G9 e& A i5 l- w - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节4 Z Q0 Y# d$ J
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
. b) L1 o5 \7 E# I - ADDR_9376: STA $0000 ;将累加器数值送到地址$00- r; M7 e+ i; a) e# K
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
1 Y$ |$ V6 c6 h, e+ ^4 U; j* c - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
& F7 _0 A w1 B: y8 {- O - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
5 e% K5 i" T( f) }( m - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
4 V) o6 W* j8 @$ ^ N& K( A - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y5 N1 R2 `. v/ }1 g- B/ l4 _; o# d
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束). K. Q) E) V1 _0 G
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
) e# E: `; ?& j! u, ]2 O - ADDR_9387: LSR ;逻辑右移+ z6 K4 u/ p: X$ e
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节7 Y7 ^6 k- J9 h+ H- }
- ADDR_938A: LDY $0000 ;设置Y==#00+ P7 N8 W' C8 e2 S4 x- \. u- t
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A8 v) i/ r, s( W- N
- CLC; c6 R) Q$ B3 x" `- ^$ Z: e
- ADC #$02
. t% ~" P" V; t: Y; V/ Q - ADDR_938F: LDY #$00 ;设置寄存器Y为$00
0 ~1 G+ K4 J" g+ z/ \ - ADDR_9391: CMP #$08 ;比较Y==$04?! k4 x+ L0 s [' I
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节# e+ ]' j, A: ]' ]. g4 g
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A1 P, ~& R9 n( ^8 D" p
- ADDR_9397: STA $0001 ;送入地址$01
/ A# A Z0 Y8 d, c4 f' r$ O5 e - ADDR_9399: DEC $0001 ;地址$01递减1 S1 M" ]& G8 _$ C: ^
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
4 f0 W6 c) |! M: k1 {1 c - ADDR_939D: LDA #$08 ;设置纵坐标数值
0 c5 K4 ?# a2 V* I" Z ?$ v; y - ADDR_939F: STA $0200,X ;送入纵坐标地址. Y- t/ a* e0 A4 j5 }5 A* }0 j
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
j4 Q8 V, ?" b5 G- R - ADDR_93A5: STA $0201,X ;送入图快号地址
0 G2 z X2 o3 F9 | - ADDR_93A8: LDA $0000 ;读取属性值数据3 ]$ Z J% Z( q Y+ [
- ADDR_93AA: STA $0202,X ;送入属性值地址
* g) Y0 d! m+ I: W - ADDR_93AD: LSR ;逻辑右移$ c$ r$ w7 _0 T4 R1 u6 ^, u+ X6 f% H F
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值3 [4 y& ?! n5 Q0 s4 }: }
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节8 P5 l$ X( V' w& N5 g2 M* i# b
- PHA
8 ~5 `) J- e7 F9 G. E% P! Q5 m" a - TYA
2 M- P) Y+ d$ P* k: y - PHA
1 X* } B* A4 e1 C M - LDA #$D4
$ e% ?- r* q' x! ^6 } - STA $0200,X% ?4 W! p! m+ f4 P* E
- PLA
' J( |+ f7 K+ R$ X$ p$ d! W0 `2 N - TAY
x4 V3 c) w: G; Y - PLA2 X. L- b3 F6 a% H4 U
- ADDR_93B5: JSR WEAPON
& K( k/ d* ` ^' W - ADDR_93B8: DEC $0007 ;地址$C7递减* [8 ?7 Z# c2 R! c
- ADDR_93BA: TXA ;X-->A' d8 p, O& x- W- _9 b
- ADDR_93BB: CLC ;清除进位标志 ~/ y) T( w$ o" r/ }; A
- ADDR_93BC: ADC $0010 ;加上地址$10的值
# i+ R$ u; Y2 h - ADDR_93BE: TAX ;A-->X& L+ H- u( J9 ]5 b4 n
- ADDR_93BF: INY ;设置Y++. H* z7 I. h: d
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
: m( R, i C: w) {; U - ADDR_93C3: DEC $0000 ;地址$00递减% b. M1 C1 A" D. R5 k/ D
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
1 s" O e" X8 D1 _ - ADDR_93C7: STX $0004 ;送入地址$041 [: `) S8 U* z* f1 Y& v
- ADDR_93C9: RTS ;程序转回-----------------------------
: w' Z5 V' n( u* F" {7 h* e, v7 B% ~
. ]$ T6 |* p8 B0 ~; D- .ORG $FB60 T/ G7 M8 r7 l, X$ R: k) l
- ADDR_93CA:0 }: ~9 M5 N" X1 N4 r
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
6 X( q9 z5 e: D2 d# u - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号6 g0 i$ C3 H& B
- ADDR_93D2:
: }, x" X* p! M- D - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
- S; l) c, |4 Z$ Q/ B* P - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标1 l- v) U5 B) X* E( U! I
-
. g7 w* I2 p' n H -
# r. E* O5 u6 ]9 E$ o3 |7 ] - .ORG $FB80( \! q, C% ~ z5 z
- " G& [" q/ t( o) v
- WEAPON:
; w, t7 @4 Q0 [1 |4 B) C - STA $0203,X ;送入横坐标地址5 D3 M4 v; w( s: C4 U$ t
- PHP5 [% t( y' C3 Z/ b7 |: s
- PHA' D" a {6 m; z
- TYA
) K3 {" E4 k# I( A" } - PHA: b: f3 C! V3 P3 y% [$ Z2 v6 c
- CPY #$00( j- k2 D; d) E @* l; J
- BNE LB' x. T4 N3 H* |4 Z s
- JSR S_WRITE ;第一个精灵
2 z7 K$ P; h* ?9 R2 ] - LB:! i6 ^3 I- `, k5 N! S: v
- CPY #$015 q0 P% g$ R& I# k8 \
- BNE RE7 D$ `% A; L% R: h* ?: E; z, x9 q
- JSR D_WRITE ;第二个精灵
1 u3 F; t: [, K/ @! Z$ U - RE:. z5 L6 p7 ^( {
- PLA7 q* d2 z# }; M! L& H/ M
- TAY
% R- \4 ?0 o/ [; _; h" | - PLA4 E1 w& n' H) i+ _( `) j
- PLP9 b3 @, p( o/ e0 O5 R
- RTS/ i# W7 F Y- c% g! l
- " N4 o: h8 t5 W8 E6 b' K9 c
- S_WRITE:* V. J& v" h6 T, B
- PHA% [8 G* M1 C2 F8 N' s
- TYA# I4 v. h& \4 {0 _+ l, _
- PHA
! z y# b( x/ O# X" c3 ?9 H - S_CMP:
; m: l: N* v1 E8 P2 u4 i, u - LDA $004 S- B& Z* f& e+ r5 R2 P: c
- TAY5 s4 m0 ?+ z2 X
- LDA $AA,Y ;读取武器值+ R' y1 B4 _( |1 W% m
- AND #$10$ E2 Z# u. T' @
- BNE S_WEAPON
- }5 v! Z. o5 \$ r - M_WEAPON: ;普通状态
5 n1 {9 P8 r2 \0 A - LDA #$26
+ j' k' c5 ~9 j3 E( b0 } - STA $0201,X
9 s6 |! p& ?( Z$ K* r) Z - BNE RETURN
7 C9 f* q, S' ]( b( I( m' H9 V& E, Y - S_WEAPON: ;加速状态% u4 [/ O3 Q. _8 T
- LDA #$1C$ p. }# B6 F: \# o! t6 V# G: _
- STA $0201,X
8 q1 l/ U e" c) r' X -
1 B% O6 e$ ~! C s5 E7 B# s$ {9 g - - ]5 ^; }. J# V
- RETURN:7 e) j4 R+ } B8 X1 ^
- PLA
7 ]3 R' L' M; _1 o: Y+ c - TAY2 G; N+ [5 [5 k4 }4 E7 V/ r; k: |7 b& a
- PLA5 t, l, e$ u6 T- D
- RTS8 A5 M5 p) c/ E
-
9 v4 L7 I$ m- p6 |9 b) Z$ [( \ - / M& L/ ^. T2 z" B) S
- D_WRITE:
/ R: m8 p6 l0 l1 {; r6 y - PHA
; U* F) H! M1 G9 i. p9 K - TYA# y2 r7 x" o7 O: u. X6 d
- PHA
, N4 I9 P& |# e - WEAA:, F) U6 r+ L+ C" ^
- LDY $00) x; B7 x: @% H
- LDA $AA,Y' z& `. }$ Y2 I+ o9 ~, e- B, ?
- AND #$0F" K+ e! W$ V: Z# X
- TAY
( Z5 F1 Z. V! C. C. {+ T' h2 j - LDA DATA,Y
8 v7 F2 E/ I6 } @, C3 H - STA $0201,X
+ ?: V" X. @/ g1 h p( d" T @8 Q -
6 o) W' |9 O5 W) C - PLA
! ?& X7 e% W8 p5 Y2 R1 l& x - TAY: x5 a4 ^) B3 H, g5 {
- PLA( F3 N( D9 @ X' \8 f* b
- RTS4 N6 N' G s+ X
-
; q. k% m5 n! H0 b - DATA: ;武器种类图块
. c# C9 S' K' @8 Y3 H - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|