|
本帖最后由 yandagui 于 2017-3-18 16:17 编辑
$ }) Q3 h+ g3 C( W
0 C3 h! y; ?7 _ i# j L2017.3.13
4 [/ N6 j* V# W. @
( ]0 |4 ]) h# C: L5 {* T5 F B 1 H6 J/ G; q8 O! l
/ f0 b6 X" E9 g( K
- .ORG $936E ;CONTRA(J)
; {: ^' |3 w$ n; c - LDA $25
5 K! l/ n$ _6 r' i& ^ - BEQ ADDR_93C9& `" [9 y8 H/ H6 ]4 Y
- ADDR_936E: LDA $0022 ;读取地址$22数据到累加器A($22==0,单人模式,$22==01双人模式) k( P5 K! D0 Q$ e! A' _) z! t
- ADDR_9370: LDY $001C ;读取地址$1C数据到寄存器Y9 |/ }. F# g! g, a/ F; G8 Y5 |; O9 M
- ADDR_9372: BEQ ADDR_9376 ;Z==1?如果结果为零则跳过$2字节1 w9 H! Y/ T8 ^$ d
- ADDR_9374: LDA #$01 ;读取地址$01数据到累加器A
# X* [4 z1 R6 U8 \7 m& ~: J - ADDR_9376: STA $0000 ;将累加器数值送到地址$00& \' @/ v$ @9 S$ m
- ADDR_9378: LDX $0004 ;读取地址$04数据到寄存器X# {( w% z* l- g
- ADDR_937A: LDY #$08 ;读取立即数$04到寄存器Y
) g) P$ h) x) j5 F7 J9 { - ADDR_937C: LDA $001C ;读取地址$1C数据到累加器A( S8 R& a+ I' U6 C9 ?1 X/ U
- ADDR_937E: BNE ADDR_9395 ;Z==0?如果结果不为零则跳过$15字节7 F3 u) ^- a" e- [+ D
- ADDR_9380: LDY $0000 ;读取地址$00数据到寄存器Y
: l( v, ~9 Z8 K2 w1 N8 e9 Q3 L8 J - ADDR_9382: LDA $0038,Y ;读取地址$38,Y数据到累加器A($38==01,P1结束,$39==01,P2结束)1 v5 F/ u7 d- o1 g8 H+ |8 `' y
- ADDR_9385: LDY #$08 ;读取立即数$04到寄存器Y- F9 t3 x1 P" |! N9 ]
- ADDR_9387: LSR ;逻辑右移
! O! @( Y# [; Z - ADDR_9388: BCS ADDR_9395 ;C==1,有借位则跳过$B字节& ^$ d' Q) k9 h( B
- ADDR_938A: LDY $0000 ;设置Y==#007 ?2 s5 p# U! b) R5 K; \- S
- ADDR_938C: LDA $0032,Y ;读取地址$32,Y数据到累加器A# J1 m5 k* \! x! J4 m- F
- CLC3 U4 g, Y2 \, f/ Y+ q# c+ ?" M2 z
- ADC #$025 s" ?$ q% c+ c# j, a
- ADDR_938F: LDY #$00 ;设置寄存器Y为$00
' Q" ]( ^: t8 Y# n8 H! v - ADDR_9391: CMP #$08 ;比较Y==$04?
0 t0 m& f3 S' {0 V+ ^& I - ADDR_9393: BCC ADDR_9397 ;C==0,有借位则跳过$2字节
: G, S4 q% ^; ` - ADDR_9395: LDA #$08 ;读取地址$04数据到累加器A% @6 P: |/ G; M$ D$ ^" y7 w$ o
- ADDR_9397: STA $0001 ;送入地址$012 W( \5 P1 W. _ ?) x4 x
- ADDR_9399: DEC $0001 ;地址$01递减: a( N: j7 j8 n% t, h3 |
- ADDR_939B: BMI ADDR_93C3 ;N==1,结果为负则跳过$26字节" `! @6 O _& p( B, W5 X
- ADDR_939D: LDA #$08 ;设置纵坐标数值) F1 l* v2 y* n
- ADDR_939F: STA $0200,X ;送入纵坐标地址! C) b3 J/ e0 M4 K* S; d
- ADDR_93A2: LDA ADDR_93CA,Y ;读取图快号数据
( h9 j2 t" T2 t4 F6 B# l/ G - ADDR_93A5: STA $0201,X ;送入图快号地址
# ^% }& M$ u( ? - ADDR_93A8: LDA $0000 ;读取属性值数据
# f2 G9 T& X6 u# u- \) p - ADDR_93AA: STA $0202,X ;送入属性值地址1 w/ u: V; ~1 R Q" m
- ADDR_93AD: LSR ;逻辑右移
. C1 o% [( T. V3 ]: ]8 X" L# Q% F - ADDR_93AE: LDA ADDR_93D2,Y ;读取横坐标数值
, R' _: u O, [; E4 S - ADDR_93B1: BCC ADDR_93B5 ;C==0,有借位则跳过$2字节
( q! |# Q6 m% T& Z7 n - PHA
9 E: ?( @5 t U$ E& u - TYA
1 `- w. x. q% b! Q, s: I - PHA
* b8 C9 q2 D4 c - LDA #$D42 H6 Y5 R( ?4 X$ n% @5 @
- STA $0200,X. v# {) t6 n. T4 |# B3 H
- PLA7 ^ v: x! p* T1 d8 x
- TAY
, Z. Z2 G7 ~* c7 x u - PLA
/ q( X8 v$ g5 M, k/ b$ D8 p, r: O - ADDR_93B5: JSR WEAPON ~- A5 x1 N+ e2 P0 y, |6 e, ~: R. S
- ADDR_93B8: DEC $0007 ;地址$C7递减
, D e) A% p; v - ADDR_93BA: TXA ;X-->A
+ F8 c, S) r. j# r3 U - ADDR_93BB: CLC ;清除进位标志" i3 f# [; T5 e3 ?5 R" U5 p
- ADDR_93BC: ADC $0010 ;加上地址$10的值/ g6 F; l6 O: C" N
- ADDR_93BE: TAX ;A-->X: U1 J0 E# l! @/ j+ P& j
- ADDR_93BF: INY ;设置Y++
2 P: V" @& E+ J4 f& `1 \" M5 i0 q - ADDR_93C0: JMP ADDR_9399 ;跳转到ADDR_9399
& Z5 \, \, X$ t8 p8 Q* N - ADDR_93C3: DEC $0000 ;地址$00递减
. `/ `/ ]( i& ^( o& I7 z' i5 j - ADDR_93C5: BPL ADDR_937A ;N==0,结果为正数则跳回$100-$B3=4D字节6 l" P0 g# J9 g0 b) j% Z
- ADDR_93C7: STX $0004 ;送入地址$040 d' B X! K2 N
- ADDR_93C9: RTS ;程序转回-----------------------------
- ^$ {. M2 Y6 E6 m7 Y5 K- [& S D - + t6 G# S+ S6 p+ w
- .ORG $FB60
s, p: L5 v' T! I+ X$ q( x - ADDR_93CA:5 |% Q* q) r6 _6 k2 N5 h
- .BYTE $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A ;生命图块号
$ R3 p* B0 r! r - .BYTE $02,$04,$06,$08,$FE,$FE,$FE,$FE ;GAME OVER图块号! [1 E O; b- O( o. W% d' `
- ADDR_93D2:
5 `6 t% y2 V/ R0 g$ r3 P - .BYTE $14,$1C,$28,$34,$40,$4C,$58,$64 ;生命图块坐标# c) t4 g2 S5 \4 s6 K8 z6 P) A
- .BYTE $10,$1C,$28,$34,$40,$4C,$58,$64 ;GAME OVER图块坐标$ L$ x2 Y6 f, X+ i. Q
-
! q& I4 b: h+ A, y7 I$ b - ( r- U& l. m7 l' ?0 i
- .ORG $FB808 D7 {1 O& C% p# N6 Z( R
- , z4 d% E! n- x7 p( B, {0 U
- WEAPON:, P: f1 D3 `9 _* x4 P% b5 [
- STA $0203,X ;送入横坐标地址
5 E7 N8 \4 E! l: z6 l+ u3 p - PHP. i. z8 s' x& ]7 v: U3 k1 V, O
- PHA
! v& ]; _( h, [! V' n; { - TYA" g. Z& L2 L* Q7 z% n
- PHA
# E- a9 L% j0 z, k$ }/ i - CPY #$00
a/ L6 M, V: G# w) f3 ]# f - BNE LB. ?1 I/ N4 B* Z" X9 r
- JSR S_WRITE ;第一个精灵
4 m& U% Y8 F' C - LB:
& r) o" k" _! Q( g1 { D) s' H - CPY #$01
X4 u8 C" J: b, Z. R - BNE RE' v; p7 i$ l, u2 P5 ~
- JSR D_WRITE ;第二个精灵
& `+ n# v1 z N* k$ W D1 m - RE:
2 o( u. T" x# _" A2 O \+ ~ - PLA$ Y# m4 m5 U" E: Z) n
- TAY7 p0 I1 r( q( [. s, p
- PLA
0 P( R+ U6 B+ Y9 m - PLP+ V2 W3 V2 B0 D/ Y- Z1 Z
- RTS
! g0 H; M. `$ n3 y6 }. [ - / L1 _' j7 j" ~* L5 K+ V* Q/ [$ b
- S_WRITE:
, @' z7 ]: K- d - PHA
3 b5 D6 P1 q$ g0 u- _% ? - TYA
6 M3 P* a, s2 h7 M% D+ f+ M - PHA
4 u% k: u( ^ ?7 g, E - S_CMP:* P, W! a! P' J! X9 v
- LDA $00
. ?0 o, t/ `$ E2 }" ?8 B& } - TAY
2 r- |( u) T( N ~$ u, n - LDA $AA,Y ;读取武器值
5 ?, o, _' B: M$ b9 X1 {; u% H1 W - AND #$10
, J* u$ N' W+ P$ q, `2 W- Z" A - BNE S_WEAPON& D! U: G2 o+ w' p" q9 e/ P
- M_WEAPON: ;普通状态
- e" K! t5 U& [ - LDA #$26! |, @0 d0 A R6 Z
- STA $0201,X1 Z( y! _* U+ `
- BNE RETURN
" E3 H _% g7 r2 c - S_WEAPON: ;加速状态
4 g B* N. V0 q/ N# y+ h; F - LDA #$1C
( F- R) \* ^, d: e, @* g9 i - STA $0201,X
8 z) Y4 \# l$ `# t" e -
: q3 Y! B8 \4 { - * x Q. U. c: [' M; G- M. c
- RETURN:0 U, w8 T, h7 }: U
- PLA
- j: S; @* m0 Z- Y - TAY
# n" B/ y6 | X: a - PLA
! x8 o& {; M' F# x+ ^ - RTS: |' w6 ~. i' v! H
-
$ h, w, N7 s6 J$ j - ' y. I+ D) _9 a. u/ ~- M/ V3 m
- D_WRITE:
( o* T( A6 V( `1 b( D& J - PHA
]+ m U( L5 ^7 }0 X: Z5 D - TYA
$ u. C# d. o8 Y0 w+ C2 X: Q; ` - PHA' [3 {) z5 p% s5 Z7 Q
- WEAA:
1 q5 K; a0 k3 _: ?" }9 { - LDY $00
- h! k7 f' r1 M! g/ {& X; t! h - LDA $AA,Y9 ?! t' ~0 w* s8 j3 M- t
- AND #$0F1 [: O. _2 s1 A
- TAY5 g8 _' g3 e+ x7 v: Y- u7 Z
- LDA DATA,Y( c* p; c0 G0 ? Y8 e* j" O8 h% a* J
- STA $0201,X) t! f2 b* Y. L
-
# H7 F) N! T9 T$ X- o# C; b. ^ - PLA# m0 q: C/ l0 v' B/ A
- TAY
. V( V& f' F7 R- ^$ g% Q& N% S, r - PLA
% M8 m+ x# J8 [* z+ H" e - RTS
; Q4 ]$ b1 Y( h7 A. r9 p4 ]- \/ B -
0 _, P, [8 M4 Y4 x' l1 e' q( o - DATA: ;武器种类图块
" i9 K4 f6 ~' S/ \8 x# c - .BYTE $24,$26,$20,$1C,$22
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|