|
|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
3 P6 a/ f* t5 |0 o' V9 a" h
+ L: w. Z& d/ S9 G; W! S" L" S2017.3.13/ }: e) C. ?! I, D% O! P

: }. r( {% f- k5 {/ a$ Y 8 T6 {( L3 B `4 r/ ~

$ F: v& M& \6 j7 w2 F) M, Q- .ORG $936E ;CONTRA(J)
. b' u' k, Q' @/ \. h - LDA $250 d9 T% T! L% i9 b: {* j
- BEQ ADDR_93C9
( b9 A+ V* I- T - ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式)
+ ^6 ]. W1 ^$ E: s; b' T - ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y: v1 h- m* k/ z' f* S
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节
1 `0 @( R3 n7 V - ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A4 J3 E, [1 K- B; N D; n
- ADDR_9376: STA $0000 ;将累加器数值送到地址$00: w" Q! E6 T9 Q8 N9 {
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X
' N4 B$ c1 k% J4 c7 C - ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
) t2 E$ q. k+ @) _ - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A/ f7 K7 k& r D; {
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节
* I' K1 V+ E6 k/ m) s7 _ - ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
: u8 M+ o! j9 j6 K2 D. s6 A - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)# X9 B9 s* y/ ?6 n8 P0 o4 g
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y
# B5 v5 z* n8 p6 c: @ - ADDR_9387: LSR ;逻辑右移. r! w* d! r3 ~$ L6 q
- ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节1 l# U* z; t8 K+ I) o; x$ r
- ADDR_938A: LDY $0000 ;设置Y==#006 O4 Z+ U0 l( I. q
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A3 v) U7 r! `1 v+ E) k2 a
- CLC* J& i& a* ? W& [/ M
- ADC #$02
; f/ s( n7 s4 F& v - ADDR_938F: LDY #$00 ;设置寄存器Y为$009 H: i# u- a! y) x
- ADDR_9391: CMP #$08 ;比较Y==$04?
\3 K' Q* [, C4 _/ ]5 ` - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
- \, ?% M& ?" z& S3 k) g4 ~ - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A' g0 F# c& s! V8 x
- ADDR_9397: STA $0001 ;送入地址$016 {& I9 T( v9 N! B1 ?6 `
- ADDR_9399: DEC $0001 ;地址$01递减; }& h+ Y' F( u* J: H
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节* F7 f# g* ~6 f6 ]. s( @
- ADDR_939D: LDA #$08 ;设置纵坐标数值 V( e2 x6 u4 P' d" U" T
- ADDR_939F: STA $0200,X ;送入纵坐标地址
' x' ?4 a, p Z3 I6 o4 ?: `8 Q - ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
' K- M5 A# B# ]4 u+ C; Q. N - ADDR_93A5: STA $0201,X ;送入图快号地址" X' i6 V+ N+ y' v
- ADDR_93A8: LDA $0000 ;读取属性值数据& S$ d. B5 E) [
- ADDR_93AA: STA $0202,X ;送入属性值地址
$ d1 T/ M# x! ]" `4 Q* a - ADDR_93AD: LSR ;逻辑右移: d E5 `+ w" B( W" ?; f& Y
- ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值2 l$ A: U1 O) l: _3 W
- ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
. D- `# a4 j C* B4 [. t5 } - PHA
) c8 J" h. f8 b; v - TYA1 u& }9 J1 v: |+ H- e6 s1 ?( G1 x
- PHA
2 W- S/ B- C" h: y$ k/ R - LDA #$D4
# b' B- E# [& X& B7 {" [ - STA $0200,X
5 o6 @ c2 R$ K# T - PLA
- b) W! ^3 p3 s* H+ G - TAY
% U& g0 B0 L! @" d' \ - PLA
* k( D2 b; p1 G9 Z; A/ { - ADDR_93B5: JSR WEAPON
a4 y& O* B, S3 _+ j/ | - ADDR_93B8: DEC $0007 ;地址$C7递减
% u$ o( u' r0 p% a& r - ADDR_93BA: TXA ;X-->A
9 E' B4 l3 O/ o2 E5 F- g - ADDR_93BB: CLC ;清除进位标志8 S- \ t! e1 N% a5 D+ v
- ADDR_93BC: ADC $0010 ;加上地址$10的值& @( A# l& y& f' A% v2 K1 N0 j0 z, {
- ADDR_93BE: TAX ;A-->X
% e) T8 W$ T* Q - ADDR_93BF: INY ;设置Y++! M N* e$ Y8 A' _9 F8 q
- ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
! W. Z8 ~2 e2 i, r" s& j - ADDR_93C3: DEC $0000 ;地址$00递减; t) @7 `; r6 e+ e: u, e' Y3 y
- ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节
% s, N- r' C' P7 n: n - ADDR_93C7: STX $0004 ;送入地址$04/ R! z' a U# T" x& W
- ADDR_93C9: RTS ;程序转回-----------------------------9 Z: ^$ b; t b4 |: ^
7 h# E/ l) Z+ C- .ORG $FB60$ M1 C; C. |- C7 y
- ADDR_93CA:4 f/ ~' K: D: Z& \" ?: i! x
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
7 g l: o& @6 a9 G. ~7 D" @ - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号
4 ^0 c$ o3 e/ ^8 E9 J/ @5 U3 V3 u2 ^/ q - ADDR_93D2:
8 s8 Z2 Z3 W, z" Y - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标7 ?0 {1 y6 H3 L' B" m
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标
, H z5 ^7 j. A) ?, S0 n -
( V5 I: C8 V0 G -
" ^! P0 g8 M K, Y - .ORG $FB80& a3 w9 _, u6 O% ~) n, t9 I+ q. W
-
* L4 ]8 b& J1 w& ^0 m; E - WEAPON:/ Y0 f6 {/ j$ d" ^) a
- STA $0203,X ;送入横坐标地址7 H, M. y: y% |8 g2 d. Y
- PHP. V$ I( L. S: m7 n
- PHA
& j0 L: o" A3 S* A; S* E8 e - TYA
$ l$ Q q8 \- C7 A C$ M - PHA
; r5 p. R# Q( b2 @ - CPY #$00
5 ?) ?3 ^1 H5 g# b" j0 @ - BNE LB
4 f/ C" x6 R0 f$ Q& b - JSR S_WRITE ;第一个精灵$ b" Z [: M# {1 d
- LB:. P. S# c @5 @
- CPY #$01 u$ v* z3 _/ t1 y
- BNE RE" O" i5 Z* A. y8 a# [# s# Y
- JSR D_WRITE ;第二个精灵
% c& B+ P, \; s2 }5 A - RE:5 k0 ]% m; C: o ] d& k9 \! Q
- PLA
6 M j; J# _: M - TAY8 U% g! G: Q# @5 o
- PLA$ N7 X( X5 q6 Y
- PLP: W& M3 \* ]' h" @( B2 I: J, Y
- RTS- @" a$ z4 h+ e0 O8 V! A4 u
- 6 w+ R# Q+ y! G' r; B. O$ u
- S_WRITE:
% I/ g# I* W+ h - PHA
7 x# H& f, ]9 \9 K - TYA& m1 o0 W1 i6 f* f! N j3 h
- PHA: O4 Y. S& _/ s+ h/ U( V' Z
- S_CMP:
4 q& N# m' u% } - LDA $00
) w- V: }7 T5 y# ]1 P# d; Z% ] - TAY
% c2 k2 s0 |- j9 Y: D8 R - LDA $AA,Y ;读取武器值1 d" C' h4 |6 @7 ?; J: {
- AND #$10( ]5 A& H% ]/ w U
- BNE S_WEAPON' Z- t) ?; }! |* c) g
- M_WEAPON: ;普通状态
2 y0 T2 C5 n/ {! N* D# O# s; v - LDA #$26
1 `5 r0 F* i; j1 Z/ f- t - STA $0201,X. i" V0 e. Z2 i
- BNE RETURN
/ e0 M9 \! U! y$ f9 I& w) B - S_WEAPON: ;加速状态1 E: L4 H$ P! [; w) C8 D. Q4 }+ Y$ c
- LDA #$1C
* e- O* S, i2 W8 K8 { - STA $0201,X c! e3 x) \5 } P4 B4 M+ B
- - _& L. g# m' o0 Y+ U* L
-
# F& w+ O2 [, j& N# W" D9 D1 @ - RETURN:# r: Y7 Y. a9 E4 t
- PLA
" ^& l2 u2 a) J, Q1 A% ]* v - TAY
5 q2 ~# E. X) |0 l1 N, \ - PLA
! I! R6 g" z0 I% ?" H - RTS9 }; l+ ~% e' z' {6 P9 Y4 q
-
# |" r$ {. I) l. ^* Z - ( M A {; c" l& Y% h' ^
- D_WRITE: ?' _, B, t. H" u2 p$ o3 B
- PHA* g% g( t+ h* ?* b5 h
- TYA0 Z# T* b# D S6 x, P0 Y: M# E. h
- PHA
- _ d: p) L3 Z, D - WEAA:
* ?) x& S) O/ M ^ p - LDY $00
0 ]2 x8 H+ R/ I. [; ? - LDA $AA,Y" y% l0 |7 h' w2 ~, U' F/ I/ }
- AND #$0F
" l( h: g6 X( b: ` - TAY5 ]$ Y* ]5 C1 W3 f5 k- t
- LDA DATA,Y
" H; J- \, k, [9 \/ u - STA $0201,X
; @, d2 ]( {* M: @) K4 P -
& K M8 i H8 t# e2 E8 e. V - PLA
! L6 C* X! V4 _$ _3 K& P# r5 V - TAY
: @9 K+ j1 j; e" s3 z - PLA( ?+ V% ^# V% Q3 B+ f, t
- RTS
# V' n* j4 a% D+ w& f - * [- H) o1 d0 ~3 T
- DATA: ;武器种类图块
. l: u2 Y W, Y; c! d6 G* Z - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|