|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 . B8 l1 n* L. b
+ y8 _( D2 i- @2017.3.13) M$ ]! V# k, N' q' V" B P* M

6 M$ `/ B( @2 L# l/ B5 O / o7 l" i1 v5 M6 O" t1 ~7 N
- q9 X/ P/ Y7 \
- .ORG $936E ;CONTRA(J)& s, } P4 E- W1 K9 `5 y% r0 h5 h4 \
- LDA $25; y" j4 @. F9 o! N
- BEQ ADDR_93C9
9 X( u1 D2 T V) c - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
7 a+ b7 C8 q* S# \ - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
c0 {) J0 H; h - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
& d! B7 } D7 ` - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A3 }4 F* Z6 C5 c5 S( c
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00
, \/ E. e5 y$ S2 ~# j - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
% p: U7 ?: l' G - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y& E1 {1 @/ D+ T5 @3 h; A
- ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
' T! x1 Z( e2 G5 U- g - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节# v) Z, O8 D6 G$ W4 S+ @1 s3 f
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
& }. h3 Q. A: V$ K0 J7 m; e - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)! k+ D, v6 ^/ y9 i# }
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y& d- x( a$ L' V$ L6 F. v
- ADDR_9387: LSR ;逻辑右移5 R& ^8 |6 p' G
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
" m* L* F' r0 t3 R" f - ADDR_938A: LDY $0000 ;设置Y==#00
! `; l8 I# X/ h, Y3 ~0 M a. O' b - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
% B" i6 o1 J9 Z- y7 z - CLC
# N; ]) K4 F: K% ^ - ADC #$02
9 q+ V, l$ b* r% X$ f$ ? - ADDR_938F: LDY #$00 ;设置寄存器Y为$00& A X7 S) }7 W4 O+ _; L& E$ a
- ADDR_9391: CMP #$08 ;比较Y==$04?% |' C& O! A/ u3 m
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节% q1 B' \* e, d4 z! U
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
; l9 s' ~, L, {' v+ Y. l/ w - ADDR_9397: STA $0001 ;送入地址$01
; e8 `# D/ Z/ ?( z2 m( l/ ^7 b4 k+ x4 S - ADDR_9399: DEC $0001 ;地址$01递减9 ~) M$ i% @6 }: ^4 C
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节5 k. F0 U0 k% {
- ADDR_939D: LDA #$08 ;设置纵坐标数值& e0 K3 o O3 B- q U/ ?; E; ~
- ADDR_939F: STA $0200,X ;送入纵坐标地址( g6 A5 u: h9 `" a
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
+ E! j2 |* @! m# o1 q. ~0 ~ - ADDR_93A5: STA $0201,X ;送入图快号地址% {% F7 S- N j1 y# H N: B
- ADDR_93A8: LDA $0000 ;读取属性值数据
( \, o' _. @( ]' ~0 n( z0 v: j - ADDR_93AA: STA $0202,X ;送入属性值地址- @1 `' m: J) L& Y
- ADDR_93AD: LSR ;逻辑右移
; E% C# I" s' ]2 `( b - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
% e4 s/ x1 g" b& U - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节2 O: ~& e+ `/ w- l
- PHA, \- }9 d3 F) A8 X0 J
- TYA! l$ N( K% q9 Z0 l: v! ^4 l
- PHA P6 w- G5 |( u
- LDA #$D4
; Z3 H( b( u5 q( { - STA $0200,X
0 M8 Z# J. b4 B - PLA
1 \$ v7 n' k" B - TAY0 d; i0 ^' |* O# x5 [
- PLA \- y- D7 N9 @0 G
- ADDR_93B5: JSR WEAPON
. M; g9 T( {5 D - ADDR_93B8: DEC $0007 ;地址$C7递减" n( @6 z5 {" G* `2 k
- ADDR_93BA: TXA ;X-->A; Y! W8 R. z: ~; L" |
- ADDR_93BB: CLC ;清除进位标志( z' z2 x0 U) v
- ADDR_93BC: ADC $0010 ;加上地址$10的值# N2 Y9 }" B& Y- H5 }$ j F/ D
- ADDR_93BE: TAX ;A-->X7 o: l# F8 u- t, e3 c6 Q
- ADDR_93BF: INY ;设置Y++- T! w j- W: d8 P! q
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399- p0 s# U4 p' {4 h
- ADDR_93C3: DEC $0000 ;地址$00递减
$ L. T# e9 m; M! Y/ i J - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
# F5 X7 ^# X7 b - ADDR_93C7: STX $0004 ;送入地址$04
# E- w8 P! S" r; R8 R! Z; } - ADDR_93C9: RTS ;程序转回-----------------------------& E( J/ ?- S2 x
! w/ g+ n3 Z- y( x& L2 E1 B+ H- .ORG $FB60
5 `% A2 P- Q; _4 x: A7 Z4 u& u6 C, T - ADDR_93CA:
~, m. F8 m9 o; a( P4 w - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号9 K" h3 i8 T* Y! ~" r, F; e* c
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
) Q" q) B# }2 k0 \1 l" o1 V - ADDR_93D2:
& M! D+ M- c6 F7 ~) ^1 t8 j5 n5 A - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标! `* }# D, O* l! K$ U0 k
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标7 l7 y& c. F. S
-
) ]; R) ~( I7 h0 s1 I# i+ I - ; r9 E3 K2 s% H2 w+ j& x
- .ORG $FB80; D: \* _0 Z% a f
-
8 y0 \. x+ a7 y0 I% W/ J - WEAPON:
" p3 g& y3 b# z0 d; f! G2 ~ - STA $0203,X ;送入横坐标地址& w6 v, B, f) r: N
- PHP
9 A- o: T* @( h - PHA* w8 R2 q( U5 ~3 R z$ q* X9 M
- TYA
- s" \) L& J. ~! {( `# |6 S) n - PHA- S, A8 t0 y8 ^
- CPY #$008 }6 V6 N0 c4 T& \; S5 |
- BNE LB
5 Z8 p1 i, G) M: n0 }2 E$ e) R, ? - JSR S_WRITE ;第一个精灵# x. Y/ n0 W3 D! L
- LB:" Q9 p, T r6 K: P7 z
- CPY #$01! s/ R# [6 A5 e" U r
- BNE RE
' W( a2 o+ ~; e8 n w6 P' Z' B - JSR D_WRITE ;第二个精灵
, [( W' k2 g# w2 P! T4 W - RE:
; l; t+ v- {8 A - PLA
0 g+ r# l8 B" V* j& I - TAY
+ y2 ]0 \$ l, \; U) d - PLA6 y1 J9 K( `% Y8 ]' G/ R& k; z
- PLP4 ~3 j5 J. I' D# E
- RTS
" r4 q4 e/ V6 h" O# f - 1 T( }4 m+ G+ B1 W2 a0 v* P
- S_WRITE:2 z5 i6 M( B9 j; Y9 Z
- PHA
" w$ Q' J# ?, H" a8 {' t - TYA
1 Q! C) n. R0 p$ m0 R' ?/ `8 g - PHA$ s* A# t4 y$ W( E! v
- S_CMP:3 ~2 X' y; b( L& C& Y
- LDA $00
+ D$ I. e* r. [8 _$ R1 r, F - TAY) e' {) ~$ Q' [/ @" v5 a
- LDA $AA,Y ;读取武器值0 ]7 s$ [) L! K& F- [' h
- AND #$10
" a. D1 n# H+ T+ j7 i3 @$ ^8 w - BNE S_WEAPON9 y/ A* a) H9 {+ V+ C3 n) G
- M_WEAPON: ;普通状态
F3 t o1 w t n. s - LDA #$26
6 M$ g x; s6 d U6 e - STA $0201,X1 z! v( f) ~5 s3 \/ c
- BNE RETURN
4 M$ F: x4 _8 T6 o3 _2 @% Q5 |7 o5 m - S_WEAPON: ;加速状态 l/ y, I' H& m1 k
- LDA #$1C
# [+ Q8 x$ G/ d6 t5 w" m - STA $0201,X: E) d9 g- \4 B6 L
- 0 U0 I6 Q$ K5 x7 ?; `5 D" `
-
( [( C' L; x' R" i - RETURN:
6 _, a, W, S6 S! k - PLA
2 x9 k: _& A" v. R7 P9 Y* N2 v - TAY
8 T% R$ { E3 M/ W o - PLA
& p1 U: u1 [: a& ]$ A+ I+ D, r0 Z - RTS+ X% v$ ~2 q- S6 c; p# m1 c$ _
-
- J2 s' F, `( {- t' \* q% ~ - 8 i' y0 i0 m6 [) }. q7 \" V
- D_WRITE:1 f& h8 N& i! v, Y
- PHA
' b4 P0 \( k }' a* L' Q - TYA
- A; D) j! d- K5 V - PHA. y, R9 e7 y: P* S: Q( h
- WEAA:
e! u3 ]+ K" @8 b6 E. ] - LDY $00
8 g& E& c. w1 r - LDA $AA,Y
5 n5 |& C# h, D2 a3 e8 l' { - AND #$0F
0 z; p& }, J, o - TAY
4 C! ]1 r% c' x8 T, ^8 `+ [$ r - LDA DATA,Y
. |/ g9 t. i6 Y; j, T% I9 t7 W - STA $0201,X% |% D- R& ^# t1 q2 f8 ?
-
2 s; I/ f9 C; k5 [0 ]7 h5 F# ~ - PLA
" s3 _) G: _. U. ^% N* [3 k, c - TAY
; R& l# P1 w- R$ x3 f - PLA
2 b* I* F7 ^+ X/ P$ F - RTS
0 P6 I( e- U1 Y: k" Y- Q$ }! i -
" _2 @/ Q% u }" l$ M; c$ p) u! B - DATA: ;武器种类图块
% G9 M. F* K$ B) _ - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|