|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 ; y7 o* Z& F2 U' {% U
' S: H: y" m' q" D& V9 w: m
2017.3.13
$ V- L% W0 i$ a 4 y2 i7 g# h9 F+ p( [0 i7 {3 a+ ?
3 r' G% d. n, p0 V

7 E; m$ c1 c8 Y$ A9 R4 ^* u- .ORG $936E ;CONTRA(J)% `, w3 u" H* ^* j2 r) y
- LDA $25+ H3 x; f2 g2 `1 m6 Z& ~% T( j
- BEQ ADDR_93C9
; K% A m% R- g; W& K! } - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
6 g7 I( U' k a' u - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y7 G ?/ `5 ~2 U2 Z6 R
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
, v, |1 s. V0 Q - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A2 [& y4 X3 }1 N& S2 h1 z1 Q
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00( j3 n5 g$ j/ N( p5 e' a
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X9 ?! A j8 E+ d5 W
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y0 p. {' Q6 F5 w7 E: g/ k0 V
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
$ v Z, d& l5 ]* h4 ~% C; ^ - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
/ S% s' j. p# X# z+ d; J, ^3 r - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y- U' W9 n% n& @, U, ?" n
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)& b7 a( }: i" g6 z& q/ d
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y, p/ `' I$ Z" [& @ V+ j: {
- ADDR_9387: LSR ;逻辑右移
; N4 w# I" G+ ~: k - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
! J2 ~/ j. ^2 c - ADDR_938A: LDY $0000 ;设置Y==#005 l7 i" \( a: R) b5 C- S4 N8 R
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A5 Z$ V. J, W$ s0 H: b
- CLC+ V8 m! b9 e; `$ ]$ ^( {
- ADC #$02& w3 \1 e, V$ T* [
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00/ v v* @ ]1 q2 K- l& E% v
- ADDR_9391: CMP #$08 ;比较Y==$04?
B9 s, Y. x3 q' R9 ]. t. }6 F: R' a - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节 Q) i; j, g* f7 Z7 w
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A$ y+ N3 ^0 E- b B
- ADDR_9397: STA $0001 ;送入地址$01; A1 S. s2 X/ x
- ADDR_9399: DEC $0001 ;地址$01递减0 K! x b4 }5 l: `5 F
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
0 C# W' L% S2 l- M; _ F& F' | - ADDR_939D: LDA #$08 ;设置纵坐标数值2 t- [2 G/ `( P% Q' l- c+ v
- ADDR_939F: STA $0200,X ;送入纵坐标地址
% V* k2 h/ n' g7 } - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
6 |# w M0 ~; N - ADDR_93A5: STA $0201,X ;送入图快号地址. g$ l2 ^+ h7 |. E* L: y
- ADDR_93A8: LDA $0000 ;读取属性值数据) y$ l0 F0 N& \& a
- ADDR_93AA: STA $0202,X ;送入属性值地址
) y4 f, A) O0 ^1 F4 B) {8 N: X - ADDR_93AD: LSR ;逻辑右移$ X- J/ q, k% J T
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
5 v8 k1 i% O) ?+ K8 p2 q2 s - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
) d L0 e( ^+ O& E' W' Q+ X - PHA d: Z: y& e V) Y. Q2 _/ H
- TYA
5 q& ^: t/ S4 m" S9 m - PHA/ z# m M. J2 P7 J
- LDA #$D4
. z" p7 X: A0 H: X - STA $0200,X
6 a5 s" h0 k& b n( o - PLA
& l+ g7 I! F9 z' E: U4 ~7 R& y5 z - TAY
* z4 z7 m M8 s$ q6 l% ~ - PLA
& r/ F* _2 J9 }) h# ?8 U$ q - ADDR_93B5: JSR WEAPON
9 M( {7 }* z9 d' r" h- d9 @3 l - ADDR_93B8: DEC $0007 ;地址$C7递减 h! g( R4 ]8 K- v4 ]5 j
- ADDR_93BA: TXA ;X-->A
4 G/ I' X+ P( Q0 X$ V - ADDR_93BB: CLC ;清除进位标志& I1 k) R+ E0 Y2 A4 P: z& T9 ~& [
- ADDR_93BC: ADC $0010 ;加上地址$10的值4 v3 Q( K$ w" N: u! X; A
- ADDR_93BE: TAX ;A-->X
* s9 z2 N+ M5 d# ~ v1 J - ADDR_93BF: INY ;设置Y++
% z u5 {$ w% y: p/ }5 Y# k% ] - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399: H) v* X" m' J1 d6 m% n4 b2 G
- ADDR_93C3: DEC $0000 ;地址$00递减6 D' K5 x4 Y6 V" k- t
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节& G/ J0 j# B0 o6 T) Q7 l
- ADDR_93C7: STX $0004 ;送入地址$04
9 i; b9 D m v- [! y5 ? - ADDR_93C9: RTS ;程序转回-----------------------------# a; E, H0 T# G) A* c
" e6 k8 p X4 O% W$ ~- .ORG $FB607 ^. s5 u b& [
- ADDR_93CA:
- C, g+ C7 G6 b) D e - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
: a& o4 x/ Q; }9 S/ A - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号2 F8 |, @5 _5 a
- ADDR_93D2:6 J7 l; d! O# o7 n) a- R
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
( g6 `4 p: d5 j# T* e% `1 x& l - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标0 n% p h& G; I. F0 R( \
-
( R/ A, G6 B3 R7 _ -
; @5 M2 G H4 k5 r- k - .ORG $FB802 @( c7 g, m$ I; h
-
+ q' ^; J- E. H" W. q; ?2 R - WEAPON:
; ~: U0 m2 e- z2 m8 ? - STA $0203,X ;送入横坐标地址8 `4 d0 I+ p2 ^1 o5 o& W( J
- PHP! F8 l, q8 L; e( r7 x, J6 ~
- PHA
% j" o. q W/ b- _$ ]3 e* q) } - TYA
6 }7 _* | V- C3 p8 c+ e' W" g( R - PHA8 h' ~+ Z1 V. z0 w/ t; V
- CPY #$00
. G% ?3 {- ^' k+ b: C8 A, { - BNE LB
" X7 H7 A2 W, V1 e5 | - JSR S_WRITE ;第一个精灵$ Q; x; W& F1 u n0 d" j
- LB:
2 s& t$ }# ~9 f4 |+ |' b5 D7 A - CPY #$01 E: I0 m! ^- K3 A9 j& E0 K2 E
- BNE RE+ f. a9 e# {. J: L# @
- JSR D_WRITE ;第二个精灵
0 e! H5 N! A" C+ @7 X% ^8 }. b8 i - RE:
- Z( f) h, G+ i# i8 X: \$ [' G - PLA
1 u. |4 X$ U3 Q# Y7 h - TAY
# j( s2 ?. @ r/ ~ - PLA" j% n: ?, g* I
- PLP
; Z& O# I7 Z/ l' l' K6 R - RTS+ |! g$ o8 N* w, k5 V1 g
- - F. F% v/ z0 y5 {3 f4 |
- S_WRITE:
3 U) Z7 f/ y; @7 d( V! r4 t) U - PHA
( B. C% Y0 g3 a3 b: ]; D# D% \ - TYA
6 v. }0 x, a# x" p' C* X2 p - PHA9 [, u$ v0 u i7 s3 S( @# Q- S5 O
- S_CMP:" H7 z3 d( T; ^8 ^$ M$ S
- LDA $00
7 e+ o( w1 t6 s - TAY- Y% B0 u1 N. x( }4 J7 e
- LDA $AA,Y ;读取武器值& r- r- {7 w3 o* d: ~, _2 ?
- AND #$10, H. J! _9 g+ D o9 j) x
- BNE S_WEAPON
+ r: h& X& |' j - M_WEAPON: ;普通状态
! K0 b$ i# N1 c, [1 G' p! D - LDA #$26
; H, `& d0 F- o. Y - STA $0201,X, s$ C! X- C, x. P
- BNE RETURN
" X7 V$ U- x2 a+ K+ \ - S_WEAPON: ;加速状态
/ _1 ~' ~; G/ @# k - LDA #$1C5 d. f1 O% n V0 U& u1 g
- STA $0201,X9 Y5 y' P9 A. q) B& @9 a3 h
-
0 ~8 p" z% U! r -
: j4 ^7 T: t# g: _) v$ W - RETURN:
# D z! B" Q S9 T$ H - PLA
9 \7 p5 e7 k# l - TAY% l z* C* N+ G
- PLA
% R" B& L* W3 C - RTS1 _9 d, V$ i$ G8 b7 T# Z7 Z
- - m. o& x5 Z9 Q$ F* w: d3 [
- , t9 ]% j, L( O# L% S8 i1 E1 C
- D_WRITE:
8 a" ~; J6 `+ s& T - PHA
& `3 `6 E) M2 F3 T1 W - TYA
+ w. O+ M$ p% l, r1 p+ | - PHA
; W7 h- b% d6 s h - WEAA:& W9 m( Y" }( V# a7 M% J
- LDY $00
8 ^7 g8 S T5 J - LDA $AA,Y/ o/ s* `6 `" d/ V% A) m0 F# O" E" Z+ v6 [
- AND #$0F
4 G/ c2 ~/ k! x2 b8 W - TAY0 a+ S/ Z7 `" j; ?1 H
- LDA DATA,Y4 v+ T$ U0 k% I% Y1 f6 G* G% Q
- STA $0201,X
3 [7 u* `% o' c0 e - / {3 I4 h% f" p7 {. l9 e
- PLA
- U9 G; a. {0 ` s - TAY
# s+ o0 X! m0 R) } - PLA" w( C% v+ [" S* L# j0 B' r3 ]
- RTS
" N: t, V8 |- Y$ g - - i) I8 T+ F- T
- DATA: ;武器种类图块1 p/ Q7 p" e! N
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|