|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
5 e7 `5 X" l$ ]9 m% ]4 c! O1 G+ d9 U" S7 Z9 p, x4 \+ B5 j# {( [
2017.3.13% U3 k& j f& ]" `

! r) ]/ N1 c' q, `5 t
* ?' p( c6 D. I$ X" ~. ~
6 Y- Y$ [, U5 m' Z) V- .ORG $936E ;CONTRA(J)
; ]" t2 O D( v5 L7 o( k- T7 Y - LDA $256 @8 N _& C" t# z m$ x
- BEQ ADDR_93C9' T. S h' j9 q, Z- T
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)( \' R- |5 U/ d* l
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y* f0 _) E% K1 L6 U9 h
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节 |$ u0 ^" p' V/ _+ C
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A; K8 ^7 | W5 b' V# N7 d/ Y1 b
- ADDR_9376: STA $0000 ;将累加器数值送到地址$007 Z, ~9 I: u# @# V
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
- f, `0 i2 o/ o( y - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
' |: E0 r' a; c* e - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A! I1 [3 ~3 W- v) M' ]" D0 {
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节- C4 s1 | h( S" y! j
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
& S( _, L7 |) D1 L: F - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束): m& Q: l J& j- U1 N1 g2 u! L
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
8 o& U/ U5 b. V2 _0 k - ADDR_9387: LSR ;逻辑右移& G7 {: E% M+ B0 p$ P8 A) \# ^! f
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节
7 R. H" c2 J9 [* I3 {2 Y - ADDR_938A: LDY $0000 ;设置Y==#00
, X& @; i9 Y; E1 `6 \8 |4 Z3 B - ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A
u+ Q5 U2 [9 G0 A' ^7 w* t: Y - CLC
7 x5 v9 Y$ w, p0 O" X - ADC #$02
& B7 c# V3 y, J! }- }6 s s - ADDR_938F: LDY #$00 ;设置寄存器Y为$00
" N! @* X0 S" E+ v" m% Z Q5 G - ADDR_9391: CMP #$08 ;比较Y==$04?* j! R7 j/ F5 h; _
- ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节) W8 ]/ O3 R% C
- ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A2 [* m, C7 K. g0 E+ l7 s
- ADDR_9397: STA $0001 ;送入地址$01
8 I& ]1 E& ?# G1 @/ F - ADDR_9399: DEC $0001 ;地址$01递减
/ D. f# k7 f. ^8 b) [/ M - ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节5 c' W- C4 [4 ]. L+ t! D# d2 I% T% o8 {
- ADDR_939D: LDA #$08 ;设置纵坐标数值% J6 h5 ?8 w2 {# j3 Z
- ADDR_939F: STA $0200,X ;送入纵坐标地址: H6 l0 ]$ M4 C
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据- N! l0 a7 Z1 s- M8 z
- ADDR_93A5: STA $0201,X ;送入图快号地址
$ |: @ `, w' T+ n g% z; m$ ` - ADDR_93A8: LDA $0000 ;读取属性值数据
# q7 q7 r! j7 Z" B - ADDR_93AA: STA $0202,X ;送入属性值地址
' s$ c) Q0 z+ ], L& |" ~5 q - ADDR_93AD: LSR ;逻辑右移' d o( M* N: y5 r/ A& w
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值5 S( ?6 B" x7 B$ t* `6 ]" Q
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节. {0 s2 I' l" |: X
- PHA0 B. \. `0 f/ A6 z% n
- TYA
" ]/ ?5 k9 n! r& P" y3 ^% B - PHA
) k5 z( d6 o9 ]9 m( s6 | - LDA #$D43 r- s$ h4 \* c; i% y1 O4 S
- STA $0200,X
3 ?! `6 X" |' y5 P5 L" v - PLA
) S- V5 ~& ] h9 l2 L' ^6 m - TAY: Z7 K$ s" q o+ s
- PLA
4 I" m7 q, ?4 C1 ]1 r s5 l - ADDR_93B5: JSR WEAPON" }6 E( O3 b) q$ P4 {) G+ ?8 A
- ADDR_93B8: DEC $0007 ;地址$C7递减
# n5 K; y3 U1 L, B, c - ADDR_93BA: TXA ;X-->A
; \. r+ \7 F2 | - ADDR_93BB: CLC ;清除进位标志& N6 {. p* R. O4 R% g
- ADDR_93BC: ADC $0010 ;加上地址$10的值# N, L- V$ o6 u. z: h! r
- ADDR_93BE: TAX ;A-->X7 X8 o$ W9 d" J- ]& v2 f
- ADDR_93BF: INY ;设置Y++
* p6 M( g+ R. {" }" J! B8 e9 [ - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399& n! n& G% T2 D- p) ?5 l8 e
- ADDR_93C3: DEC $0000 ;地址$00递减9 T3 V5 s$ W* |( Y" T' S$ j2 a
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
" w% M/ X" o/ b/ F - ADDR_93C7: STX $0004 ;送入地址$04
4 A" ?1 e. c2 }) a! _1 h - ADDR_93C9: RTS ;程序转回-----------------------------
) ~- R+ g1 c# w9 K1 Z - 0 E. v- } ~# b0 r2 I6 C- c, v
- .ORG $FB60
]( ?* S9 q4 I5 Y( j8 x - ADDR_93CA:
. a; O4 H4 @* b - .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号, g: I/ ~1 e$ e0 F# G8 I" X
- .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号+ G0 b+ i+ N8 Z' C: Q* p9 w
- ADDR_93D2:& X$ w% C3 }; ]" |! X
- .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标0 s- Z U# u" I5 F( ~/ T+ P
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标& t: Q* X8 Z/ M
-
) Z8 V, @+ k& f. }1 p - ( W2 T( ]# M; d* ~2 ~
- .ORG $FB80! F+ `( ^. p' N4 I; K$ L3 C7 z
-
2 O, k4 |( H: P0 e$ p! q- | - WEAPON:) X5 M' b* }% s. a! N ?1 \
- STA $0203,X ;送入横坐标地址
+ Z" @" S4 P; v - PHP
( E5 W0 l B8 r% x W( p - PHA. ~) K/ U5 K5 {* n" ^* c
- TYA
( B* h8 V n3 P& f, R- l J - PHA
8 E' O( |" t, y. Y7 @! m* c - CPY #$00- U' h* U& I- T% t" o
- BNE LB
. |* ^* N) Z: ?3 C9 k6 W S( J& { - JSR S_WRITE ;第一个精灵
1 n' _8 ]* h5 }9 ?& Z6 w - LB:
2 E q4 ^% d& |/ E3 [% Z; ] - CPY #$01+ [+ x* b2 S) A5 j
- BNE RE9 i$ F8 F1 N z! q: ]) y
- JSR D_WRITE ;第二个精灵
1 i/ ?5 y4 w6 P" @. `& _! D - RE:' `- p) ?" U5 y0 [
- PLA
7 T/ x9 w" Z9 A7 F: \# P- h( o6 n% d - TAY
* G7 @( g. J1 |, t% q4 E# }+ W( D6 N - PLA
. Z% Y5 G8 E% U0 K" n - PLP
0 {; P' r- y, \$ ]0 \, g - RTS. R! z6 r/ W- }' w4 P, v5 E
- # [: h8 h7 ]/ P1 f
- S_WRITE:! Y( [1 W. F; Q. j2 ?" p$ X- o# G
- PHA
- M+ p8 ]6 \! r/ x - TYA
6 H. M. d/ N3 D$ Y; s- N x - PHA) {' ?( B3 ~. d4 u% l# B& z
- S_CMP:6 L" ^* N/ ?! B. [( s0 k) j8 D1 X
- LDA $004 E( w( p1 ~6 B- f# U. u/ n
- TAY
8 F( ]; d ?* \0 Q; G* \6 l - LDA $AA,Y ;读取武器值
5 y0 [/ o8 P: J. J, t - AND #$10
0 y6 E0 f" ]% f* q' k4 Z: A4 \ - BNE S_WEAPON. F. R6 ]" s: d8 D: I% l1 c
- M_WEAPON: ;普通状态
6 U; r+ a9 L: T p& ^: z; j$ p - LDA #$26' ~5 n. Q$ o* D/ u) L) |% l
- STA $0201,X
. e4 \* y, {" v% D( Y! L* G - BNE RETURN
2 Z8 d6 N$ v) ?& Y ^ - S_WEAPON: ;加速状态. o: {5 l! @( m4 O" i3 U
- LDA #$1C
& Q) V4 K, Y0 j: M- W& o5 E" k( C - STA $0201,X
2 _. N: j# H7 h) L z - ; p; p% `7 O7 G" j
-
1 ?) ?4 f( [5 G! G - RETURN:
& Q( m: J9 T$ [+ o) o. N - PLA2 O3 t. T# \! D4 v" a! y
- TAY* x! ]+ A5 g& ?9 q3 Q# I% v
- PLA, o0 v% A! G2 b; _4 \
- RTS3 t' `3 Y; S* N9 m
-
+ i# M3 [# j5 Y* O6 U
7 S# u* E* b- _% P% H5 i w8 Y1 p- D_WRITE:
' R0 o0 r$ J, V( j# ]7 S- U - PHA
( y+ G8 R. S# S - TYA
: H7 }4 Y3 O w6 V% H3 \ - PHA' X( ]( K% T+ R% U* H; W
- WEAA:$ Z: l1 t) S0 u# t' _3 I0 k. ~
- LDY $00/ [. L7 Q7 q: z- n& B
- LDA $AA,Y
' W; Z& `" t# L. R0 ~' z - AND #$0F
5 Y: I( _8 Z# U5 x6 i |2 ^ - TAY% R8 V8 `6 W# z6 l' D8 b( |
- LDA DATA,Y
( v) S) Q0 `1 g6 j7 J- | - STA $0201,X$ y+ ]7 I- Z, u% \
- ) T8 @) H- Z6 E( b+ t
- PLA- U. J8 w+ k" L
- TAY
+ q$ A/ e/ Q& I3 a - PLA
! _. r4 L. x% {- X6 T5 L1 q& e - RTS
) g' _# B Y) d$ r -
9 x6 z5 \5 }/ Y: {/ s. K6 T4 I% ? - DATA: ;武器种类图块
5 |, t/ w( M ?4 V" S! I) }" [# M - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|