|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
! W. u, a0 S. h2 @4 y9 h& {' o
, Q" d! v0 J5 w6 _* x: |2017.3.13
6 Y3 m/ z* Y6 K+ R
: @# j; x) y8 X2 Z6 U # O) B1 M$ A# j! v8 G

8 p+ Q2 l6 j3 v3 F- P" J3 q- .ORG $936E ;CONTRA(J)
2 Y& Y9 `% Y$ c6 F! M6 g - LDA $25
' _7 S" N# D' y+ ~( s+ ` - BEQ ADDR_93C9+ P) V. u+ }6 D4 d1 ` r1 j9 `
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
; u( ^# T4 Z5 S0 R - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y7 }* Z: V0 d. A+ {0 o
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
: |: X4 V% E8 S8 w* O8 _. H - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A' b, X0 d+ p, U3 C1 I
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00
( c0 q5 l A& i7 a% a - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
' ~5 N4 @4 T' k# D! r - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
* J/ [5 u3 N! |6 z0 ` - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A8 l. G# k5 [, f( _/ m/ Z' A$ R
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节, L& n3 c' {6 q) Q) y. ?4 F4 K, O
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y) m3 O+ p9 C4 q2 u! B
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束) F$ ]7 O+ j& }) {8 D
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
- ^7 e' M: r P2 ~$ V, o - ADDR_9387: LSR ;逻辑右移
0 A$ Q/ B/ m' C! k; N9 F3 |/ N - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
4 g. z) J) k4 F6 \ - ADDR_938A: LDY $0000 ;设置Y==#00
' ^6 n% v9 k5 y' ^ - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A" V, D! l* k3 W9 a9 ?8 @$ |
- CLC
$ g/ g8 ?! P. Z3 s' Q' n - ADC #$02) H7 g" j* [# Z3 |$ F
- ADDR_938F: LDY #$00 ;设置寄存器Y为$007 d9 V" o4 Z ]1 C8 _
- ADDR_9391: CMP #$08 ;比较Y==$04?
7 e2 f! m& t7 G, v5 J/ X - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
( P6 G9 L l9 X - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A1 u' z! Z! n% c E* W" W8 R
- ADDR_9397: STA $0001 ;送入地址$01
; J( \- o$ a# @0 W; @ - ADDR_9399: DEC $0001 ;地址$01递减4 k& K* M7 V3 s2 J) w$ V/ O
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
: ^' d- n" I" r2 ^! ~6 x6 l$ U - ADDR_939D: LDA #$08 ;设置纵坐标数值5 Q0 C3 x* t1 F! w C: v7 I
- ADDR_939F: STA $0200,X ;送入纵坐标地址
* `6 @- p: Y! u+ Y, o - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
w& @! E3 S& S" F - ADDR_93A5: STA $0201,X ;送入图快号地址
+ T+ m9 P- x; z9 b0 Q - ADDR_93A8: LDA $0000 ;读取属性值数据8 b$ p7 Y* a9 @+ z( }, [
- ADDR_93AA: STA $0202,X ;送入属性值地址+ j9 m; Y$ H! g- t( ?
- ADDR_93AD: LSR ;逻辑右移
2 c( F/ ^) a0 B" [ - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值$ u# M1 t2 e: B" x v% d6 m$ o, ^/ C
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节; S; S& U% a1 v% u- ^
- PHA5 m7 [( c$ n7 w
- TYA
2 p0 v# v8 ~- [) [: R) P5 | - PHA
; m: t) z. i" |( W - LDA #$D4; j$ h+ S: l! ?
- STA $0200,X- H8 M, q# {) x, q H. G2 c
- PLA
3 ?- t$ H1 K, B8 i! R - TAY/ G8 x2 V# Y- m1 O
- PLA
+ V& E) j) y, a: N ?( a: a$ W - ADDR_93B5: JSR WEAPON0 ?- m7 E3 X/ N
- ADDR_93B8: DEC $0007 ;地址$C7递减
/ q3 O2 x$ r& { - ADDR_93BA: TXA ;X-->A2 g, V5 Y* E/ o( p, ]7 q/ D/ z
- ADDR_93BB: CLC ;清除进位标志
& P8 }1 P" o7 V1 ] - ADDR_93BC: ADC $0010 ;加上地址$10的值. M3 Q6 R! v: c) ]; _) T' J
- ADDR_93BE: TAX ;A-->X; e$ ~8 g7 m6 v5 x6 \9 s
- ADDR_93BF: INY ;设置Y++
. m% m/ A, P) ]" x y4 R8 K - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
* `" L7 d% U3 S - ADDR_93C3: DEC $0000 ;地址$00递减
- d. t4 O- j& V- e. K - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节0 n& B9 u; \8 L; B f& _
- ADDR_93C7: STX $0004 ;送入地址$04" M0 J2 q! ?2 ]4 W6 I& a
- ADDR_93C9: RTS ;程序转回-----------------------------0 F: n4 t& X9 Z) x
( L( z! W8 |5 J4 ?; B, Y- .ORG $FB60* D" V. M1 W1 m" ~' \3 [7 ?" K
- ADDR_93CA:
! ~% x5 }: F# w9 N# F2 ? - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号3 n; D6 K3 R2 \* k
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
: u' l- P! S/ h: q' } - ADDR_93D2:4 s I& o# e& g0 D t* U$ ~, ~/ Q
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
9 C! \! D% P' L! ]% i - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
2 C! T$ \+ j; Y: G, { -
+ q( O4 M1 L/ [2 t/ {3 b -
' o7 x B1 L+ Z - .ORG $FB80
5 I/ v" |+ {4 F - ' W, |% ]4 K5 F' |( A: I8 i
- WEAPON:
3 j( F! }5 e( t3 e8 A. G0 K) z1 S - STA $0203,X ;送入横坐标地址
5 G) Y* G6 R$ p- t3 A- Z - PHP
6 _0 G7 u, S6 F: U - PHA
0 }9 j$ D( C# ] X- f - TYA
4 f1 j* |6 ?3 w5 P- q7 D - PHA$ W/ i; ^0 N$ Y
- CPY #$00
8 f& ^* s }7 X4 B - BNE LB8 f8 Y" {) P. z0 `8 u* C5 J( v d8 I
- JSR S_WRITE ;第一个精灵
3 G2 ]5 s$ V( \1 z$ |" U* | - LB:
# V( S: ^; H, _+ L" n - CPY #$01! F \$ D7 O( v8 K6 r/ Q" _& i
- BNE RE/ g# h8 N) C9 a5 a
- JSR D_WRITE ;第二个精灵
6 W' \: c4 O* D; E5 r S - RE:
, Y) _* U) b# ?! B0 Z - PLA
9 c! E( W. m6 F! |4 q( c! ]" ~ - TAY9 {, M9 H+ P3 Q7 s9 f( Z. B3 M
- PLA9 _+ u; n9 \$ G$ Y3 V
- PLP
* d1 L4 Q! S, n) x - RTS
2 a1 E9 X7 f9 \0 d* g -
5 i* n: g1 e" _2 p - S_WRITE:8 U" U# w* g, g3 y/ E
- PHA8 P$ e& t% m& w* H* @0 l/ `
- TYA
6 k# N5 ?) s, _- v u$ c - PHA
9 {) N. U2 A5 M. a) n& \ - S_CMP:
, }3 f( k- ~8 F5 e9 } J" k+ h4 o" R - LDA $003 M' ]% O# ^3 Z) N0 E
- TAY
, P2 s$ n4 e# v' d0 | - LDA $AA,Y ;读取武器值
1 X5 ~: L: M3 z. t* G+ ~% q$ n - AND #$104 W% h6 a- H9 U, t
- BNE S_WEAPON
; d, ]: Q+ _0 w5 b& _1 M - M_WEAPON: ;普通状态
: C1 i( ?* d( l3 J: M - LDA #$26
c; X4 C4 J9 s8 ^% l# n. D N - STA $0201,X
+ {6 q- Q4 k; w: e - BNE RETURN
1 Q( \" Z% s5 M. D - S_WEAPON: ;加速状态
; L9 \6 r9 p, g" {' M - LDA #$1C7 l3 d, M" s1 g
- STA $0201,X
" E, k& R9 y3 L8 [9 \6 E7 ~6 D* h - + e9 G% F$ |2 R( \0 H
-
l- R/ W& Z3 P9 e) Z& y, Y - RETURN:
1 I" y5 |/ W& E! e, c - PLA$ [, W' T: \$ }4 g+ E6 Y" l$ ?
- TAY" [6 h( D: ]- N- H/ a) _* z B
- PLA
' e! p$ S# g2 [ - RTS
U! F" f% w% i# Z: Q0 r - ) U4 [) x* Y0 C u# O' F& o0 W. n
- . G$ F" o4 G8 I7 R |3 U
- D_WRITE:4 h5 @9 u# h& V2 B& ]: H$ ]
- PHA6 H- b9 N R/ ], g+ S8 ~
- TYA' `- P3 ^2 h( T2 N3 P7 o, o# p4 l
- PHA
' r8 z/ g0 _7 ]8 M* {) F - WEAA:) y3 d+ }; }$ Q" x% O% s
- LDY $00
5 N$ I1 ]: L4 J R7 |" e9 c( I - LDA $AA,Y. w1 u8 w" {- H. Z( E t* G
- AND #$0F7 `" Y; H7 B7 t) |
- TAY
R3 r! q Z O# j. q' p - LDA DATA,Y
+ B5 m$ G( M: T2 \ e) i# P2 L - STA $0201,X
2 L+ L9 C, O! ^, s5 ]; d# s' G' u: F+ J - b4 m1 |) R* g+ g. ^
- PLA. e! F( Y9 K& C' a' q/ r
- TAY( u. k* e& x3 @) ^
- PLA' j5 s) k' J# v, {; N
- RTS/ s. B; D% }9 E/ b" F. B
- * x8 x o8 k) m x7 T4 @2 J2 C! ^
- DATA: ;武器种类图块, B( o1 m7 @! w3 ?
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|