|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
( H" z8 x: p7 X9 T" ^6 {) x: y* @( G( | U
2017.3.13
; m- i/ s. i, ^( O6 o
. ?: [# r" b/ v! u& N9 z / j/ z5 J9 H8 z
9 t0 ~" o0 z- w; l+ v
- .ORG $936E ;CONTRA(J): Y7 ~; @% a. F6 o# I, U
- LDA $25
6 [ z: `4 O6 O1 j" O - BEQ ADDR_93C9
# T Z+ D* ` O- m# K - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)" i q k& l, {, m5 ~& S0 N y
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y! s- @: C) y8 v, L5 S
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节9 @7 I/ \+ |/ j
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A. b! X% T) G' j' v9 \0 T
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00
$ X3 r& m0 o( O - ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
, R N9 w! w2 L# S3 e1 m - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
$ }, Z$ f) T% O% t) L7 p9 s - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A
! b8 p$ z- y: `0 y: v7 U) d' _ - ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
. l% t& \. T3 m% _ - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
a8 l# _: D3 p4 Z! i - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)3 b/ ]: b& n L; n
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
( h1 x& x7 V+ E - ADDR_9387: LSR ;逻辑右移
( L$ E! h6 `0 @3 g, r+ B - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
3 A: z9 n5 E4 v- X* w$ S - ADDR_938A: LDY $0000 ;设置Y==#002 O* g. g j$ M
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A. z- }' }0 {' p/ ^
- CLC4 H; I7 t! y, A: s* w& I7 ?8 r
- ADC #$02
5 F0 H+ y* v4 |# }4 q. d3 V - ADDR_938F: LDY #$00 ;设置寄存器Y为$00+ ?4 @( {9 b! A }/ ^
- ADDR_9391: CMP #$08 ;比较Y==$04?
# B7 R9 u+ L' P4 U. N& a+ ] - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节2 P" i" U0 Y7 Y
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A
6 J7 X$ e# ^5 q x& j - ADDR_9397: STA $0001 ;送入地址$01
" v4 e. i) h& b( k2 A( W - ADDR_9399: DEC $0001 ;地址$01递减- |& j, j5 }' ] z2 I) O
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节
: \5 D! V' v8 L5 ~ - ADDR_939D: LDA #$08 ;设置纵坐标数值7 Q, C8 J6 G. u, v" a8 ?
- ADDR_939F: STA $0200,X ;送入纵坐标地址9 K. k" s' y" r$ @5 m1 S7 ^1 e
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
) u! {& q" ]( C - ADDR_93A5: STA $0201,X ;送入图快号地址
1 x! @+ O: A0 a* O: A8 F - ADDR_93A8: LDA $0000 ;读取属性值数据
2 {' ]+ x6 H# \$ X' e - ADDR_93AA: STA $0202,X ;送入属性值地址
1 _5 k3 j9 T, _2 Q# i; W - ADDR_93AD: LSR ;逻辑右移7 e3 z# H9 B# _
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
$ D) A' N9 _6 g - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
* p- U/ |/ t' G9 M - PHA
" C( q! m9 U' D9 \- l - TYA; C+ N& \2 d7 _
- PHA! U( {7 T- Z& P
- LDA #$D4
5 f$ d" ~3 D) e5 _( U8 x - STA $0200,X l# M0 U* f# d1 ?
- PLA) I6 l& m1 ?% W/ _* h
- TAY
" C: n) F2 \7 [. `# `; Y - PLA
9 P, a; v- T; Y3 B( P7 K' j - ADDR_93B5: JSR WEAPON
" W1 k8 _8 Z) Z- E9 ] - ADDR_93B8: DEC $0007 ;地址$C7递减
3 w) V6 S) n9 ?+ d. ^9 }+ W - ADDR_93BA: TXA ;X-->A/ U6 f" D9 F5 d! V# V+ I
- ADDR_93BB: CLC ;清除进位标志
3 h0 ^ q8 c5 r - ADDR_93BC: ADC $0010 ;加上地址$10的值
5 T- |6 a" m9 h+ s f - ADDR_93BE: TAX ;A-->X' n% E" J0 L" @
- ADDR_93BF: INY ;设置Y++& }) M5 y+ H% t1 ~5 j
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399' C4 d$ a4 x5 p* e1 w
- ADDR_93C3: DEC $0000 ;地址$00递减
+ |0 i5 F: J% y* s% ] - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
; i/ g c4 [0 t9 \* X - ADDR_93C7: STX $0004 ;送入地址$04& V* l0 K: m; ~ b9 x7 O; Q
- ADDR_93C9: RTS ;程序转回-----------------------------1 O$ x! m. j/ u9 X* g9 M2 ]: u
1 G; @+ I& x. e: b1 Y3 ?" U- .ORG $FB60, ^( r& {- d8 }' B0 e4 f
- ADDR_93CA:
! J4 }4 j6 e1 `1 B" ~/ m! Y/ M - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
& C! L9 m' a7 S( _) w - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
: ]- s4 a( F2 ?. J0 V, y: ] - ADDR_93D2:
( F3 Y* q$ C# c0 Q5 _ - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标
O d/ t$ w% b/ K2 ]5 |- G) u - .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标% E6 E0 O& J! ?: }1 g/ \1 i
-
" ^6 q2 |8 S4 Z% P5 X -
# v+ e0 V$ W1 r1 D - .ORG $FB80
% K! {: X! K% T( N/ L - ; c$ o5 C$ j: e; w4 L1 J( ?; o) ?* J/ W( |
- WEAPON:! r1 y% \# R7 y$ S5 R( y3 ?# T
- STA $0203,X ;送入横坐标地址
4 a0 ]- m3 y5 V' O - PHP
' l: c% T. L( l7 t - PHA
2 a% `! A7 Q% f. q) |/ A8 k - TYA
4 @4 y5 F4 E _( c - PHA: }! _, x0 E* _5 E
- CPY #$002 U/ O$ L& f0 p. m3 t5 k k2 d4 e6 w
- BNE LB" y; T. B' d, K# x
- JSR S_WRITE ;第一个精灵2 Q) b) c/ f" q& ]! y
- LB:
# Q: B# u) H& B( {5 i( ^5 b - CPY #$01
9 |' g! k. i; |; w6 H; O' T - BNE RE
6 o0 h) @ ?% y6 v9 r - JSR D_WRITE ;第二个精灵" K( P. A" \* q
- RE:
6 l1 m* b; t- g' n - PLA
. B. |. u0 S$ f5 D - TAY* S0 E! m4 z/ y' U D: `
- PLA
& C/ B$ R; C' ^1 f' L - PLP0 P. ^" n" O/ Q8 {2 Z
- RTS
. e, ?+ {7 S. C! d% G - " K" f$ f: {! ]& q& B1 E
- S_WRITE:) L- g$ r4 P' n; `5 d1 i
- PHA
8 t, P2 y2 x, `3 G# { - TYA( f9 J* A+ {( T/ X2 l
- PHA8 U% G3 ~7 p5 t5 y$ t
- S_CMP:1 F( W* t& c- Z5 L
- LDA $00- D" a; |3 W, |7 z0 _& Q& W' N
- TAY' o2 L6 p @, Q V, d. r
- LDA $AA,Y ;读取武器值) D: N, z* i/ p
- AND #$10( N6 Z2 m8 O% a$ o* w; A% [
- BNE S_WEAPON$ r$ W2 I6 D: ~( Q
- M_WEAPON: ;普通状态0 I+ P, |% i# p8 L& Z5 P
- LDA #$269 f" `- t) [# u/ h; x3 s
- STA $0201,X
& z+ b" g+ w2 |9 d# w, `# E - BNE RETURN
- [/ R, @2 G7 {4 j/ n1 ?" X - S_WEAPON: ;加速状态4 P, t! C4 N" i# ~' Q! g# e" q( K
- LDA #$1C N s( D. w: e" x) [3 i/ m- N
- STA $0201,X
" I7 [0 g8 t1 ~. w% x6 m. h -
/ k: i" h. r+ j0 H -
$ l% T1 r6 m8 Q3 c7 Y - RETURN:
3 [ `, r; r8 l, Q( d - PLA; y1 p( l; F" ]; e- ^1 `
- TAY
4 j$ a# H* D/ D2 x# j - PLA
: ^( ^ a- H9 A - RTS- i$ @% U J& [3 W
-
: O& F1 z+ D9 t/ f, Z$ M$ Z
. y/ Y/ P2 s$ H! t+ s& W- D_WRITE:
C# _0 o& l9 x% M - PHA
4 q. H- R8 V! d2 d! Q f* f - TYA5 c6 |6 e0 M; g z( x9 c
- PHA
. ^9 j! v# X: D3 {) k% P - WEAA:% X6 u8 }8 u5 b0 K
- LDY $00
( v$ h9 v" T' G+ h! c - LDA $AA,Y
( ~8 B3 T2 P! O/ g! s$ L% Y6 [ - AND #$0F
0 U9 m0 o; ^5 i; ~ - TAY: m, Z6 m2 G8 q: q& ~
- LDA DATA,Y
4 n* K x' }# {% z5 A' k - STA $0201,X* ?) |: u4 M2 F
- ( b( V1 N' D& ]% T( E7 i8 Y5 C
- PLA
. u' ]3 y+ x% l) J+ s- F$ q - TAY
. l4 U! P7 J6 b) {* B6 H/ Y - PLA
) ?9 [1 q4 ? f) J9 I - RTS9 P% p+ D7 N# n8 R7 s$ C" V4 o
-
, i) m6 K8 C" {0 I& k6 O9 i - DATA: ;武器种类图块
- s6 \8 R6 X* A: v/ U - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|