|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 8 J# \6 Y0 w- J. h5 a4 ~
8 o0 o6 @# V5 j) i
2017.3.13
6 B! @5 R( K P$ U" `" y : P$ {# o& N* m3 ~

# g4 f" K; `. k+ D # O8 j' A9 W7 l/ D9 r2 @
- .ORG $936E ;CONTRA(J) I7 v2 G+ z( y2 q+ a
- LDA $25' }# v- L# b3 ^0 d9 g2 H0 K, E% i
- BEQ ADDR_93C9% _! h6 g- A! q9 \- R/ ?
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
6 L; m9 b2 q4 ^; u! M! \ - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
& ], C+ [( W% y - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
) C% k2 q" f% V2 @1 S. ]7 Z - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A( i. V5 `' W/ Y! H. U
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00( [. W& _4 O+ Y
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X' i: u9 D- u, T y# W; D
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
3 l& X2 ]+ J9 |+ Q - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
' l; ^6 I% e1 _2 F2 o - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节( j0 [7 G0 V2 e
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
& [% h1 Q4 x$ g1 Z' I - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
$ s1 I* o0 C9 B& i/ F5 X3 @/ b - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y- J) `5 r$ l) Y/ V* T" ]
- ADDR_9387: LSR ;逻辑右移
1 _' `$ Z6 W( R% c" l1 b, f0 J, K - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节. l' i: b1 _9 @8 @ ^
- ADDR_938A: LDY $0000 ;设置Y==#00
) }# J6 v/ u# ~! x. k- ~3 N4 a0 I - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
( `. ` @( p& K - CLC
7 C2 U2 C3 k8 o9 W4 [ Q8 Z( s$ Q1 b - ADC #$02
* `5 I& i3 }5 w- [" U( f" | - ADDR_938F: LDY #$00 ;设置寄存器Y为$00
) `( C, v% C) Q, G; L) i& A6 M - ADDR_9391: CMP #$08 ;比较Y==$04?
/ `& C6 _( Q% O2 b0 m) E+ S( M# } - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
9 [& t) \9 m% ^9 v: _ - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
( i7 U% g- n' f; ^: d: N - ADDR_9397: STA $0001 ;送入地址$01* M0 @1 h" }! z3 k+ X r
- ADDR_9399: DEC $0001 ;地址$01递减
% `# \+ r8 Q+ c1 [; o0 f6 }; B - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
1 ]& r1 n; R2 O( | - ADDR_939D: LDA #$08 ;设置纵坐标数值
7 g4 t" L# [; H - ADDR_939F: STA $0200,X ;送入纵坐标地址
* k7 @$ ~) z1 {2 V3 f1 s# E - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
, j/ W! `, S5 }0 P& s: L1 }7 H - ADDR_93A5: STA $0201,X ;送入图快号地址' b5 e$ v+ S6 u* e
- ADDR_93A8: LDA $0000 ;读取属性值数据$ W( ?8 O! x# S) S( ?! j9 e$ b; y
- ADDR_93AA: STA $0202,X ;送入属性值地址
/ F3 Q, p4 j: d3 K - ADDR_93AD: LSR ;逻辑右移
6 C5 K) V8 X7 p8 H8 M3 J5 ` - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
. u7 K4 r& g7 ] - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节6 t0 ]* I) Q* E; g8 h6 l9 e5 Y1 e+ A
- PHA
4 F, l1 U/ a O: I( `7 `: J - TYA: `, M9 N% @$ q! \' X3 N- @' U
- PHA! z$ O8 R- m; j$ N9 t
- LDA #$D46 }: w8 h" `. e
- STA $0200,X
9 B) O" s0 i9 t) l/ ]6 Q2 E - PLA V/ U' b+ f8 I: [! D+ g
- TAY
/ K2 o! Z/ G0 c! A0 n - PLA' ^8 i) z: n s# q9 u' N2 T! |
- ADDR_93B5: JSR WEAPON/ I; {) R# Y# @( g. z$ O$ m; R, O
- ADDR_93B8: DEC $0007 ;地址$C7递减
: X7 ]9 v0 ] ?8 X0 C& q6 V - ADDR_93BA: TXA ;X-->A7 m. Z! ?& O$ M# j
- ADDR_93BB: CLC ;清除进位标志
! k3 B: J% W2 _7 Y# A! ~ - ADDR_93BC: ADC $0010 ;加上地址$10的值
. q" _6 T# O9 T: a' Z4 r. } - ADDR_93BE: TAX ;A-->X
- l' |" y& e+ `! Q1 K' I% I& S - ADDR_93BF: INY ;设置Y++% J: }# y6 v, w/ l2 `5 d L# k' `7 C. r
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399. D* e8 S( Z; p, H
- ADDR_93C3: DEC $0000 ;地址$00递减1 x) R: g% D& ^. p& W4 J
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
- @1 ^, h, p8 M) {9 L9 j8 W5 E e - ADDR_93C7: STX $0004 ;送入地址$04
; b4 b( m2 B1 v# s: m( y0 K: h0 c - ADDR_93C9: RTS ;程序转回-----------------------------# {2 ? G0 [# n1 X
- 3 @9 y; Y+ g& @" [2 j1 V. ]" O
- .ORG $FB60
8 L5 _% M! X2 d$ k6 o - ADDR_93CA:
+ I6 O& n, C0 H' R. e3 Y. Z% z - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号3 j& r: m( v/ g2 F6 b1 C
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
8 C1 R* }, g- z - ADDR_93D2:
9 v2 o6 P8 z( z8 _ - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
. ~5 o6 u0 t [. y1 i, g - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
2 V& F% H9 Y, l( c8 Y# L4 a - 3 V, C1 ?* K, l( s- K0 q
- 6 ?% T; F1 R6 P
- .ORG $FB80+ d* C& Q& ?2 x; z9 e
-
7 s7 K' t$ p9 y - WEAPON:
5 C) n4 X$ o& \# h* P4 R0 v - STA $0203,X ;送入横坐标地址
, T3 J; ^5 o+ `0 t* |5 B - PHP
4 w. |$ `9 d! r - PHA+ u/ X: E5 K1 o: {
- TYA) K4 ~! N2 r; U& Y
- PHA- W- F$ x# r) s4 l( {; w- F# g
- CPY #$00
, h! |, n9 W* L3 f+ o- v P - BNE LB
# A1 O k6 i F! I6 ]2 ?* @ - JSR S_WRITE ;第一个精灵% Q* S8 s" I" W
- LB:' e+ |! g7 _1 ^9 f
- CPY #$01
$ ]( E% V) ~3 W2 c" Y - BNE RE, j; Y: Q+ D8 M7 u+ X/ {
- JSR D_WRITE ;第二个精灵( V1 ~5 x. F0 h- U
- RE:
/ L; i/ {0 [* } Q* ~ - PLA
. d8 k; n$ p5 p: E - TAY
5 e8 R1 Y1 Q2 i3 q2 c8 ~4 F. [# F9 o2 g - PLA# W* Y' S5 ?, h$ z+ h
- PLP
! p: n0 `( P* t% o- j - RTS
, B0 i8 Y' G% |- r$ G% B5 o" O -
& @+ a4 l" B; v4 w- ^ - S_WRITE:- I5 D P2 a; @/ ?0 O! E1 d
- PHA
& B' H. q- ^6 Q9 N( m" u' |# D - TYA
6 a& }! x5 ]' S0 v. H - PHA+ Z8 C, r5 ^. M
- S_CMP:
' O$ p1 ^7 d7 r. b# r8 C/ Q - LDA $00$ N# T- o( K' K
- TAY
+ o, a8 Z5 R6 ] - LDA $AA,Y ;读取武器值
/ n- M) V( d& k/ i* m6 x" ^ - AND #$10
6 ^' C2 K; o! {9 |4 V% S - BNE S_WEAPON/ _' L3 |" p; F* E3 _
- M_WEAPON: ;普通状态0 h' k7 }5 d7 u: i0 k
- LDA #$26
. d c9 ?8 {4 V; W5 O& U& \ - STA $0201,X
# w8 q; Z3 P+ X1 X - BNE RETURN: U* y+ ]; p" i; u* [. N0 z% C
- S_WEAPON: ;加速状态
L' v; I3 t( U) b! s( l8 o - LDA #$1C
: y# w1 T0 L- B2 c$ U - STA $0201,X
. N0 e f- S6 ~; A# f, F -
) b0 J. \& ^" L; U( x* \ -
% F) p# o( t6 u' b/ z7 X9 P - RETURN:
, x. p( g/ {( h* J/ r9 o, v6 a - PLA* Q1 w9 Q: ]* [$ v( P
- TAY
' `6 G. m" A2 n9 j) L# \ - PLA+ u) I1 _# |+ z! K0 }8 ]8 l
- RTS
" H W6 H! _8 J8 v: A - ; N( \# W- d: h5 d. Z& W2 s# N
; M- p# z1 g9 _; _; Q) S: C- D_WRITE:
# d) I! D& w9 u8 k0 ^4 _) C5 i6 H - PHA
z5 P# l& s3 @, u5 E# v - TYA
5 j; A/ o# Q/ [& Y - PHA+ l; q. U1 Z1 ?1 [- b
- WEAA:
, ^8 `3 [) D% B2 \; y. w! x/ | - LDY $00
" n( Y+ X5 h; y0 f# d2 d5 W - LDA $AA,Y
6 s1 y; ]2 @" s5 `( Q- V# s - AND #$0F
5 S9 D5 A) U& g. r; Z/ I$ C - TAY
. I6 r& o. O' a2 b2 `$ U' M6 F - LDA DATA,Y
" d9 U: H2 K) V - STA $0201,X' i5 R" v+ r' O. U2 K' P( m, |
-
, y0 I. G* q. T - PLA
/ {% N: U) ~ O, ~) ] - TAY
% T$ @1 a. }: M4 u+ { - PLA/ r; V. X* i5 B
- RTS9 w' w, i: }8 S0 P
-
+ c* u( t' }$ e( {( R7 j+ I) P - DATA: ;武器种类图块" T: q7 J" S2 k0 {, w9 A8 [
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|