|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
2 m5 i. g/ x0 [4 Q
4 o; S- n5 J" [( m* }' h$ i2017.3.13
h4 }" o3 g/ n$ |' W. b; p & t* k* v' k1 ~( H( j

" u6 Y: p" n1 v3 Z ) Y* M, C* p+ [8 l2 U3 `
- .ORG $936E ;CONTRA(J)
2 @& j n; N9 G9 Y; e - LDA $25
+ l! ~5 A J( h! E! E8 Y - BEQ ADDR_93C9
w+ M7 _9 w2 H. p6 x - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)" u% [( T" V, w4 h
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y' i: T/ m8 v$ i! A
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节" W+ v$ y( @$ D" J5 n5 C& K5 L3 _
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
- | l; r1 W2 h' Q8 K - ADDR_9376: STA $0000 ;将累加器数值送到地址$002 c/ @0 y# D7 U6 [+ F( Z0 x
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
. {6 _" w; j6 A/ T: F - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
5 y" [4 J/ j) }: w/ f$ S2 [ - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A7 n8 ]2 s& ]* {# S D! p
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节2 L$ i+ _9 A% w
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y. y. Q; [7 U5 \
- ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)- }- k: N5 L9 z- g; @
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y$ J5 F$ w9 M3 K+ A7 I
- ADDR_9387: LSR ;逻辑右移9 ^# m$ f: F( G- |0 L( i
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
7 f: V! @ U9 z U) y' [9 R - ADDR_938A: LDY $0000 ;设置Y==#00% d# P5 P' H; Q( e5 G# w6 w
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
x2 s. x( W5 N - CLC
0 i3 T% H% e0 G+ j! Z+ ` - ADC #$02( z" Z* E) w2 W$ o
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
% F9 E9 d$ A9 _5 ~" b, r4 x, N+ Z - ADDR_9391: CMP #$08 ;比较Y==$04?
# c: \- m& j2 e) E - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
. w/ G1 R/ K5 e+ N e% L- K - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A; T8 Q+ S- h8 t' M* G
- ADDR_9397: STA $0001 ;送入地址$01
: v: s/ b: r0 h& |, ? - ADDR_9399: DEC $0001 ;地址$01递减2 P7 Q/ Q* x+ c! Z, E0 m
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节* ~5 ~( y% o6 \
- ADDR_939D: LDA #$08 ;设置纵坐标数值
/ N; f8 H) J, ?$ v" h. j. X! d - ADDR_939F: STA $0200,X ;送入纵坐标地址
; p* E6 P. b# d9 _3 v3 s - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
2 B( h, O- U# x - ADDR_93A5: STA $0201,X ;送入图快号地址
% `' o5 E; i( K* M2 H - ADDR_93A8: LDA $0000 ;读取属性值数据4 M: y3 y7 u( J+ C8 Z" Z
- ADDR_93AA: STA $0202,X ;送入属性值地址
8 y4 ^" A& z0 K" f6 n# A& Y8 i! u - ADDR_93AD: LSR ;逻辑右移
: j' t- C: a y, z" j% a" T - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
& z$ z2 t+ U2 H N' ?/ w9 H; { - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节6 H4 q% J/ P$ L" j# s% m' R
- PHA! A6 F+ \! ~" b. }$ e4 r
- TYA4 l( [5 \2 X6 Y& l) j+ w+ g
- PHA
# r+ t0 j O- I l9 @+ x - LDA #$D4
9 C6 B t5 h9 a' V- \% A: `, J - STA $0200,X4 [- y' E! j9 R! T2 E2 H) w
- PLA" Y6 z) Q2 F. m. F4 @- i! q4 N# {
- TAY
0 l! y G& [, A/ A( I - PLA2 x$ \5 W) O/ B+ q
- ADDR_93B5: JSR WEAPON
9 E% f9 m$ Q7 |+ W - ADDR_93B8: DEC $0007 ;地址$C7递减- ~ V. K( {) b) o' h
- ADDR_93BA: TXA ;X-->A
l+ a" B* H+ O7 F8 W) B - ADDR_93BB: CLC ;清除进位标志2 |! E. U: l: c, e2 u
- ADDR_93BC: ADC $0010 ;加上地址$10的值
. q3 g( I8 V) V0 O - ADDR_93BE: TAX ;A-->X
2 h6 C+ B0 D2 P3 ?: L( `5 V$ z; B Y - ADDR_93BF: INY ;设置Y++ x: Q$ R+ p, G# r3 E7 {/ `
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
/ [- o) b3 P7 S$ Q# I0 p% D- f - ADDR_93C3: DEC $0000 ;地址$00递减
+ E2 d! a1 }& S" G - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
: Q+ g \# `) |* I6 E - ADDR_93C7: STX $0004 ;送入地址$04
6 U" G8 j4 |" ~: L/ B7 G - ADDR_93C9: RTS ;程序转回-----------------------------; @2 J3 T: r( {# Q5 s$ W1 J% V! V
& Y/ n* Y" ?7 N+ I3 t4 Y- .ORG $FB60 X- R6 k" i& X1 ^, J- |
- ADDR_93CA:
, N9 {$ K% d& n. n, b( }1 n' ]1 m - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号# n, x) Z" d6 F0 z* h% j' q. I6 E
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号, T4 e. R% X. b; t1 ?6 x
- ADDR_93D2:
& D6 ]! C9 C3 u1 v% v; j* o - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标- O$ r4 @& \; J4 u
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
& S1 \! V: B1 N L -
4 j' X3 H3 E8 b! M -
A0 O( Y3 J2 d* { - .ORG $FB80; |0 } g) z3 D! `$ z0 t
- ; N/ z1 i2 D2 v3 [! t M4 Y
- WEAPON:: y; @* f: P' Y0 ?
- STA $0203,X ;送入横坐标地址
+ y' G$ o( _( a# e3 f" D - PHP) z$ @# j3 L+ Q0 o" u, Q Z
- PHA
; _7 _/ P9 }" C! n9 E - TYA
3 k( d6 B- a8 k8 e - PHA2 A$ {1 u( x; r$ z" Z4 u* v' [
- CPY #$00
1 s5 _; F$ Y+ `3 y/ ?! q( v7 D# p- q - BNE LB
: J! [$ k Z6 x, e& \, f% E( { - JSR S_WRITE ;第一个精灵
+ e& m# ^! Q9 B+ k& J+ \' \ - LB:, X# _9 ~8 d4 o d7 v
- CPY #$01
2 R" G7 h4 |5 W - BNE RE
; F4 P% U8 N" r L4 l1 F - JSR D_WRITE ;第二个精灵
; P0 _, K. d2 g* Q# S - RE: J: g% ]# I3 n% t. X+ K4 u2 \
- PLA2 O( b* ]! S9 u7 w3 x
- TAY
8 X9 [5 n/ {4 t9 r8 ` - PLA+ K3 m3 ]; E' s* {9 @
- PLP1 t0 T0 P9 F: u4 G
- RTS
- a3 q* Y- n n - . F8 q* g' ?4 S# S
- S_WRITE:0 J: A* l4 ^- j$ m* K8 ]
- PHA
! V0 ]! P( |3 u l4 r# p - TYA
- A+ T$ q2 _+ I/ x9 U - PHA
X( X& b; U c6 M/ T6 G - S_CMP:4 c; S( ?4 |9 a0 n
- LDA $00
6 ?& K3 N; |3 [. y8 {; j, E - TAY: H# k! S6 a' e
- LDA $AA,Y ;读取武器值+ x9 S# _& F# l! c1 C9 P# N
- AND #$10
* H2 {) d3 {' Z' i2 { - BNE S_WEAPON
( s: @" T, c/ v7 N - M_WEAPON: ;普通状态/ P, k$ c8 W7 Z
- LDA #$26+ ^( t2 b+ {1 H& S8 F- _+ g
- STA $0201,X
4 g; ~1 ~ o: x% a/ p - BNE RETURN
6 M# h/ T) W( L( K4 N' l - S_WEAPON: ;加速状态
; S4 b9 _+ B; G% G" U' n2 t( M - LDA #$1C
9 H5 g0 _/ B% c8 m1 r ] - STA $0201,X0 w' I9 t# \' c
-
- J& z" V' n( C+ X) D' M - 7 y& ^8 [1 D" T$ n
- RETURN:
) q9 x+ `% K2 F2 S. n! P* C - PLA) c) |. U, ]* a) a
- TAY, [) n6 r2 I( K( f$ z8 u
- PLA
% I6 b+ l: _% w# H; G7 G j - RTS
0 M+ B! Z$ w: [* V$ C% o$ T# p Y' X -
& x; _: y. o! ^* P! L' O - ; {& U: e4 p) e, q
- D_WRITE:2 j& ]! N) o& ^0 @5 z
- PHA
9 q' w o6 j4 H3 p1 D9 l V; j - TYA
1 e9 T- H9 t# D; h. { - PHA! W0 Q$ Z# A) p0 R- e- v
- WEAA:% I" Q4 K, y \
- LDY $00+ t K. K8 x9 t: r, C
- LDA $AA,Y* M* c+ t$ \- Q7 m
- AND #$0F2 z. B# \9 R: g0 Q1 \! k
- TAY" K0 U% L( P5 b9 m8 T3 R- c
- LDA DATA,Y
6 @% l: {- ]5 C( F$ [ - STA $0201,X+ J) g# f2 ~+ j V" R4 n3 E
-
0 W9 G1 G- O8 n - PLA
) r2 u$ w3 q; Q0 M4 i% g' q0 ~ - TAY& P" V; `. l& C6 Z3 G0 T
- PLA4 y0 y3 C" @2 C# o& G
- RTS
6 U2 ^6 U# x# N3 R -
2 j: o! R3 U: x9 m: [! W - DATA: ;武器种类图块9 v; e" v/ D! |5 _0 v
- .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|