|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 + @# l! g3 h3 L* n; N9 y+ Q- j
' `5 e, l% j) I; i- `/ {2017.3.13
& n4 C2 H" K4 o4 v' J( W
, s! u) q1 `5 x1 }+ z / p& H, p' Q9 S
7 E6 o0 r; G6 { i
- .ORG $936E ;CONTRA(J)" q* n% |& \! F; a$ y b
- LDA $256 y- _7 K1 U; [) G! ?! J
- BEQ ADDR_93C9
% J3 {8 T, p# F - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)7 C# L6 l! q: @, [% s/ T
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y9 a. X) D3 f6 H o) B
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节2 j* z, e$ g. p8 w
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A4 b* x7 x' ]7 x& F& R
- ADDR_9376: STA $0000 ;将累加器数值送到地址$003 e1 T: i1 j$ S4 P
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X+ A$ [4 R) e4 T
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y' I8 Z- s" S% y* C) O
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A8 x' w) w, u" l: D( U4 A
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
4 A) B7 Q. x0 e! G0 b4 ^; T1 u" V& E - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y3 C) [2 \4 s) x: S
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束) }3 k5 f" @5 P3 k% ?+ H1 e7 L
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
" w) ]8 {1 h8 K7 |- I - ADDR_9387: LSR ;逻辑右移0 o. C5 b# i( O2 b" Q* G
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节# W8 ?, H$ ~$ ?* A c7 G. {
- ADDR_938A: LDY $0000 ;设置Y==#00. Z; K& k+ {. x4 J6 |! }
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A+ G6 R( t! w0 T7 c) b" ^
- CLC
+ `: K a$ V2 E - ADC #$02
, s( w% n4 d. w2 R* o - ADDR_938F: LDY #$00 ;设置寄存器Y为$005 W. v) o9 p5 ]8 y
- ADDR_9391: CMP #$08 ;比较Y==$04?5 Y9 r+ U' g' Q) a7 M4 X* E { D
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
2 O" R8 j! x. | y/ W - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A% M, \4 P d2 D: F
- ADDR_9397: STA $0001 ;送入地址$01' y; B& h0 X- K7 ?. d
- ADDR_9399: DEC $0001 ;地址$01递减
- ]" l# ~; G( S8 t5 m' j) j - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
% O( `- H$ j2 B0 U: \1 B - ADDR_939D: LDA #$08 ;设置纵坐标数值
8 y6 p3 U% N c6 E - ADDR_939F: STA $0200,X ;送入纵坐标地址4 i- B) Q* |" h
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据 {! o r1 `0 M3 p% w
- ADDR_93A5: STA $0201,X ;送入图快号地址5 ?9 J# s6 K8 y1 T( \$ J# g. `
- ADDR_93A8: LDA $0000 ;读取属性值数据
4 w( q+ x6 M Z# H! D/ V% E - ADDR_93AA: STA $0202,X ;送入属性值地址; S% D, p' Q! J B6 K: D6 `4 i
- ADDR_93AD: LSR ;逻辑右移
# x$ \! e6 k7 \5 ^% H3 e* O% ? - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值/ g9 U; f. l& l
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节' ^; Q ?4 h: x# v0 b
- PHA# T( f0 z% L. f3 [2 e
- TYA
& n g4 A5 ]2 _) A0 _$ a, G4 h - PHA
9 `5 y/ t" y8 j( r - LDA #$D48 [) M0 i2 d* d2 ~' {
- STA $0200,X, | C8 [7 O, b4 e* w# [# F- _
- PLA
/ Z: E" N2 B% K( g1 k7 q - TAY
3 x3 N5 J7 C3 H5 i/ L. b - PLA
! e& C! P$ W5 P - ADDR_93B5: JSR WEAPON
1 L5 z5 ?% z( r# x2 B - ADDR_93B8: DEC $0007 ;地址$C7递减
1 \* G! y; V- b# d8 V$ r4 ~ - ADDR_93BA: TXA ;X-->A
7 D6 D( j1 b4 c1 f- v7 g - ADDR_93BB: CLC ;清除进位标志% g! p4 U! q4 T' T( A7 g& I
- ADDR_93BC: ADC $0010 ;加上地址$10的值
0 a5 } T. X* B' k0 I - ADDR_93BE: TAX ;A-->X* _0 O+ T6 c( O
- ADDR_93BF: INY ;设置Y++
4 J8 i3 q& V6 g, F8 A - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399* q. A C- n* \* N
- ADDR_93C3: DEC $0000 ;地址$00递减
5 ]0 p* g5 l+ a5 w - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节% y( U: H+ b9 X6 M6 t# }
- ADDR_93C7: STX $0004 ;送入地址$04) S" E9 z* s- I# V
- ADDR_93C9: RTS ;程序转回-----------------------------# U- p! i+ H. E
- . i X* F9 A% L9 C3 X4 z
- .ORG $FB60
0 d& e5 U# }7 e - ADDR_93CA:9 X( q9 U9 b/ P1 |
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号5 V0 e9 \! k( t6 e9 @6 c# m
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号% w! ?, y, {* a6 x" |1 N- s4 p6 w# q' C5 E
- ADDR_93D2:
, w" T5 B) k/ F! O$ R8 n7 v' R - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标1 |! s" S9 P7 V/ S0 J' m
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
8 K1 _: E& G# _3 m - ' t4 q2 M0 S2 F- l
-
- `( @9 ]1 [, n! h8 U. L - .ORG $FB80
4 R2 a n5 h! [ - 1 H/ e7 |* o% h' G+ _
- WEAPON:
" ?; V- v+ \4 @3 t4 h2 I - STA $0203,X ;送入横坐标地址7 Z5 E0 O+ ^0 V1 T: \! R
- PHP
- z- l( g# I% `# [/ O. j: Q - PHA1 ]( \. H) S/ Y8 L, n' i/ N
- TYA! v' Y- l6 M* Z7 B
- PHA
7 E0 [0 k' Q# r7 g - CPY #$00+ |, v, |' l: R# }% ]. K8 G1 M' e
- BNE LB
) r. v% D+ Y1 m' ]; ^) c3 N - JSR S_WRITE ;第一个精灵
( v" b" O4 r7 i9 H' c( \( b - LB:6 u4 B) `6 ?- E
- CPY #$01- _0 h7 I- b. ^
- BNE RE
1 k: c2 g' ^3 |) V - JSR D_WRITE ;第二个精灵
" R0 P- F3 z/ z( `) p/ { - RE:; [) ?# F4 `+ `
- PLA" }3 w% G9 ^4 u2 i
- TAY- U. \7 I7 g; N6 S3 |- Z7 K9 [
- PLA% r3 u9 m+ f. f, J7 ~9 Z
- PLP( n8 \ h8 v" s/ d: R- r
- RTS
+ c( q" E/ ~! J8 h& d% F - : P7 b) |# q+ G0 H, k
- S_WRITE:8 L3 s- n- e6 S' G6 R1 `
- PHA
4 O: g9 _: W( ] - TYA
( f8 C+ q% v( d5 g6 t - PHA9 g. R4 v% i( e$ P8 p
- S_CMP:
) W% G9 ~- D$ Z6 v+ i3 \3 @ - LDA $007 y) [! u. |) g( j$ [
- TAY$ ]0 d3 H+ L$ ]+ k: Z
- LDA $AA,Y ;读取武器值/ M# N' N% ^: _6 F; m: D Q
- AND #$10
! E$ @; g: Q0 T, Z - BNE S_WEAPON
* o: R: \3 g8 j9 ?1 ]+ [ - M_WEAPON: ;普通状态
: [& M# |8 ]0 ?( z! s6 z1 a& Z - LDA #$26
- G0 ^3 Z- K# x6 V5 v - STA $0201,X( @) F* ?+ r, |) f7 X- z" V9 L
- BNE RETURN! H- ^) m M0 v
- S_WEAPON: ;加速状态
5 u5 T6 q7 ?/ A* W - LDA #$1C, m0 B# r. A' N2 \: C% {
- STA $0201,X9 S& c, o. Z3 y: d% o
-
" v/ {4 m9 \0 ~' Q' T3 a- Y' I0 k; x - & S5 K- h! \% S4 K: U G) M
- RETURN:2 F& p5 p' [+ M+ m: y+ n
- PLA
( w9 z0 Y8 ~: _ - TAY) I U9 q$ f4 c8 P4 x5 Q- D- E) D2 I
- PLA: x. U. y" A+ M* r1 V( Q
- RTS9 j0 n2 x7 S$ ~6 O7 u
-
R. _% A! ~, K3 x* k* n- _
5 h8 r" U- H U% {- D_WRITE: U0 [5 h7 X; b, N( a
- PHA
- Z# h4 m' _8 D/ M - TYA
) ~$ S2 U3 q0 o - PHA
) z+ N2 E9 |4 ~3 H; F+ g7 B - WEAA:
3 n2 f$ Y0 v3 F) q2 `. P - LDY $00% U1 F% ^, a1 c) V6 E" E* s
- LDA $AA,Y
0 _" u) o8 r* ` - AND #$0F X6 z$ G9 G' e, A
- TAY8 {' l$ w/ _( I8 u9 n* W
- LDA DATA,Y
/ m8 r0 O" x7 q4 i9 [ - STA $0201,X, F( N5 _' p% p- V& \( @9 @
-
; j! {; Q, V, D* @# G9 Q. n- W - PLA! @1 \2 `7 g! b7 q4 [$ |. g5 P
- TAY4 O, F$ k1 @( i# S/ ^6 @
- PLA
9 ] G( D3 R( f! E+ d8 s: a) s3 B( o - RTS1 a& w- i" u2 F! @
- # L9 g& J3 P, f1 @. l- L
- DATA: ;武器种类图块; \# m1 S1 Y8 j/ A
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|