|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑 / W9 U" s0 I0 K. {8 G4 }0 o
/ t' u% ]7 ]6 I0 O$ |: b2017.3.13
2 p7 y" |5 h& @
1 i" H4 T* c* W, Z, X
) J( j2 f5 A+ o! z
/ C4 n, D' Q& X8 N/ v" A" a- .ORG $936E ;CONTRA(J)0 E* l. g/ R% ~0 A
- LDA $25
# u9 J M# E( c& l2 | - BEQ ADDR_93C9
. S ^/ J |: n - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)& @/ M) Y/ M- U+ e! w
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y
' x) W/ {/ x) P$ p; B/ u: _ - ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节, p- M2 f ^6 G# I
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
2 X$ N& C$ _9 Y: ~. m - ADDR_9376: STA $0000 ;将累加器数值送到地址$00
3 ]) c' M! x, W% o* B - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
# I$ w# W* H3 C6 F - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
" J, W( [+ t% v% l - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A, i2 B6 M/ o1 N3 L1 K% _! o
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节) d( H+ p! K7 ]- f
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
0 R4 j$ B, b0 g# f% K' J - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)
% V% J2 Z Q4 V% { - ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
% p; A7 J# t! R- e, j1 n* T9 n - ADDR_9387: LSR ;逻辑右移
1 U X7 E, q& T* g' J" x+ S - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节/ ]" o$ W( i% f, u7 v9 P6 s V6 A
- ADDR_938A: LDY $0000 ;设置Y==#00
' u/ P: j2 t: B3 a - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
' ]8 e4 [ E& ~: x h8 M - CLC% V4 I% `! y$ Y
- ADC #$028 @% {: i0 L1 {/ o
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
4 v2 m8 \" v( [ - ADDR_9391: CMP #$08 ;比较Y==$04?
" J1 n' z$ c4 `9 C0 i0 S; s8 P - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节: H$ T/ ?3 P: S! p' Z! `% e U
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
8 f, f5 ?+ i( E* d! e - ADDR_9397: STA $0001 ;送入地址$01
! Y% A' E* Q, I( }. E% J - ADDR_9399: DEC $0001 ;地址$01递减. V: R; E9 S7 r) P$ v$ @: ]4 _# \
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节 J4 ?5 B5 v; c i/ p( \
- ADDR_939D: LDA #$08 ;设置纵坐标数值8 Y' I8 Q* j; [$ _
- ADDR_939F: STA $0200,X ;送入纵坐标地址: t/ J6 j- F7 d" a
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
4 W0 J. O9 k& \) ^2 B! f - ADDR_93A5: STA $0201,X ;送入图快号地址
) I; C' L& q: ^) ~' Z - ADDR_93A8: LDA $0000 ;读取属性值数据& M% A+ ~/ e0 E3 @9 u8 `
- ADDR_93AA: STA $0202,X ;送入属性值地址
( |, `* ]- M/ S: o2 @/ | - ADDR_93AD: LSR ;逻辑右移2 ]( ~% z$ l* D6 |3 x0 n" v \
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值: Y+ u- ~) Q' K# X$ o, B1 t
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
2 u3 A* q' ~+ L6 E - PHA# h2 w% D; H7 v) s0 Y5 D) Y
- TYA
- {) D# z! S& b7 T1 I+ D9 b( O4 g9 p - PHA
4 K5 A8 b# i* o7 o( ^ - LDA #$D4
6 I2 ?7 F/ c# M: x, W V) O - STA $0200,X# Y \3 }5 t9 l2 b
- PLA
& Y: }! y ~" d" q - TAY
9 H- x' |7 _; ] - PLA
) R9 ^1 C% `8 m. W2 R6 j$ C - ADDR_93B5: JSR WEAPON1 g7 p. ]- Z4 L! d+ w# W
- ADDR_93B8: DEC $0007 ;地址$C7递减. o- P8 T/ i0 N# I. \
- ADDR_93BA: TXA ;X-->A
; R; Z. d) v$ X" ?* o+ m - ADDR_93BB: CLC ;清除进位标志- v, |: w ~' Z* }
- ADDR_93BC: ADC $0010 ;加上地址$10的值
K# c6 n( K( J - ADDR_93BE: TAX ;A-->X
* t& ^% T" b) {1 v) s - ADDR_93BF: INY ;设置Y++
7 n7 i0 V' e7 b: o, G* _/ J! D - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399 c% Y' O# L8 s% \2 I
- ADDR_93C3: DEC $0000 ;地址$00递减
; r( A' i& I0 ^: h4 q7 i' Y; u - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节% r7 Y2 d1 ~3 D/ ~+ `( \" R
- ADDR_93C7: STX $0004 ;送入地址$04
* K+ V- e( [5 X6 n/ I) {* Y8 G - ADDR_93C9: RTS ;程序转回-----------------------------7 V7 ]! p3 U1 @/ O, @, z
# f$ ^6 m6 R5 F3 F( i/ T! B- .ORG $FB60
- J% j1 h4 c) f% L - ADDR_93CA:! Z' f% W2 Q7 N+ ?
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号. f+ `8 V% ]- j3 `, G9 \. G
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号% [9 j) X$ |1 r$ T
- ADDR_93D2:. U, B7 s( h7 O2 n( k4 K7 w/ U
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
4 L1 s7 j1 l" T - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标; z* Z$ b/ H9 B+ a) k& c' d
-
% e* y0 O$ J# ]4 F& J0 t - / _& H, S, O4 Q5 d. K/ Y
- .ORG $FB80
% W# g w' Z- w2 Z1 O - . O* s/ R* v2 V- H+ w' L
- WEAPON:/ R1 D& v) w6 J. i8 Z+ U% _4 S0 m
- STA $0203,X ;送入横坐标地址) U6 ^6 t- G2 V* g6 l( I- l
- PHP2 A9 @3 N) `* J* |
- PHA
7 Q. Y- q- k3 T1 c# _# g4 W - TYA( ^) T! c* b8 H5 M X# S
- PHA
) v7 V3 O; B* r - CPY #$000 b8 c4 H3 ]& I3 s. E; a
- BNE LB
5 D/ }7 X* L w - JSR S_WRITE ;第一个精灵
0 A# G7 u5 T! ]* U: b3 u - LB:
* n1 O+ Y$ T* D4 \: B! T7 G - CPY #$01$ b9 v u4 s' b o
- BNE RE6 [% O* E+ P4 b- @' A
- JSR D_WRITE ;第二个精灵
( z2 W4 C V+ r y - RE:: I! E: l0 z2 ~( `5 B5 k7 D
- PLA! o; X5 h3 I+ |% C" M @
- TAY; V. h( q- J2 U" E( u3 ?5 y( S
- PLA' O8 ~( _9 L( u9 ^) p
- PLP
8 b1 _6 K* T' G" G0 h - RTS1 [" I8 c& O/ O- a1 g _0 _
- 5 ?; b2 L2 t' P
- S_WRITE:1 E: s' V% c: J4 m1 h0 K
- PHA
9 i4 j1 \; t2 j% A - TYA
. }7 h# f' m M: N" F9 U - PHA
4 v }( F, ^# T9 M - S_CMP:
9 O6 A; l/ i; W0 B) D( y - LDA $00
, a q0 j& ]8 ^; Y# l! a9 A. L - TAY
0 e7 l$ W$ {$ I+ b - LDA $AA,Y ;读取武器值
+ A, ?8 i) }5 ~+ D$ Q5 p4 s - AND #$10
5 u6 X2 H4 G! K* l% K: e( b - BNE S_WEAPON! T8 N' V; Z9 |
- M_WEAPON: ;普通状态& B" T' m8 p5 T) s
- LDA #$26
- I$ z" ^$ P+ m8 e - STA $0201,X) S1 b+ f& X. m. U0 U% q
- BNE RETURN' M5 x+ v1 W1 A6 |& g/ K
- S_WEAPON: ;加速状态- Z8 O2 \0 Q$ K8 U
- LDA #$1C7 a+ ^' A9 i K. |
- STA $0201,X, I: f4 _+ W- l7 R7 H0 Q
-
5 g3 [5 Q4 X: |) } - 8 E6 b+ M6 T# V
- RETURN:6 T. l4 o" a7 w r2 C2 S
- PLA8 Z9 q' j, P+ e, M# N
- TAY6 O1 y9 H& {- U" i m H
- PLA
1 f) T/ n! d+ M4 k% C/ ~ - RTS& O4 k, {+ h# Z5 Y: e3 k* h
-
/ d6 L) J: U9 z/ N7 W2 v4 _
- c% z0 T! ?9 K6 w8 i4 }- D_WRITE:
6 H1 w9 |/ h1 ]( g: L - PHA- J) o' T, K8 ] N) x, E! V
- TYA
3 b7 Z. N) t& W; L - PHA/ w4 a* U/ Y3 U k
- WEAA:
2 r( V1 ~& J- L - LDY $005 Y5 f! ]0 F9 ^* I( H7 Z
- LDA $AA,Y
2 M$ T& G7 C( ^, _% G* ` - AND #$0F
' ?* M. i. p& P$ S - TAY2 I8 ?. W7 j% d; t# D- w' f
- LDA DATA,Y' K* K: f# s' d' I
- STA $0201,X
' h/ d: C. T$ v) I) R% x -
( l# l3 G7 A/ v6 Q3 W& ~2 Z" Z - PLA9 c3 q* |8 ]2 H: u/ j
- TAY
9 R/ ^4 H. Y w. Q$ Q9 j% d - PLA
2 |: z; d+ B1 [: ]) }3 H - RTS
. s* M% U8 e: Z" _. }8 M -
0 v" r' _1 Q% _( C2 Z% M+ a - DATA: ;武器种类图块) Z' i8 G" J% e; b" B' r" g# Q* K
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|