EMU618社区

 找回密码
 立即注册
搜索
查看: 376|回复: 4

[原创FC/FDS-HACK] [FC][忍者神龟3代标题选关程序]

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]& Z: J7 x- M# P, K
;作者:FlameCyclone 2017.4.13 z& C8 G: b/ @5 `/ f

4 S& H! x9 k) j: S6 f
: Y8 v/ A2 ]" ^+ E& t5 p;配置数据
5 B8 n7 [8 X. j" _- t- s- A' aKEY_ADDR = $F8    ;按键地址7 M4 |' \  V7 j  U1 C  q) e6 u
STAGE_TEMP = $6010    ;关卡临时地址
& @; g+ ^  q! z* f# Z; [STAGE_MAX = $0E    ;最大关卡数
3 }$ {$ l7 E5 O; H* h8 MTITLE_A = $20    ;标题条件A+ {- v5 G) ?1 K
TITLE_A_ON = $02    ;标题条件A有效状态判定
  Z7 p1 b% A" S- UTITLE_B = $21    ;标题条件B# L( ^/ s& v2 b2 r
TITLE_B_ON = $03    ;标题条件B有效状态判定
$ }. a- E  F% a# J0 B. A! G. A( {% \0 HPPU_END = $FF    ;PPU结束符
8 q" ~8 P+ U, F' pTIME_LAY = $4A    ;标题显示延时地址
7 a) c# u  m# B5 GBUTTON_DEC = $42    ;关卡减少按键
, z# L* g  D7 m5 mBUTTON_INC = $81    ;关卡增加按键
- W  ^- L$ s4 u- _$ jNUMBER_A = $06    ;数字A距离STAGE偏移量2 g( f( ~% B4 t. ?5 h9 v# A0 q% q
NUMBER_B = $08    ;数字B距离STAGE偏移量; g+ _' ]1 m$ V) U
PPU_ADDR_H = $23    ;STAGE写入地址高位
& `  U8 p/ D3 d$ y# R* [3 LPPU_ADDR_L = $8C    ;STAGE写入地址低位9 Y5 N  D1 j" K/ q  S" J
CHAR_S = $A2    ;字符'S'
- U  j! O* C4 ?7 jCHAR_T = $A3    ;字符'T'
7 Y- q. D" P. \/ R8 c6 _1 C- E3 VCHAR_A = $90    ;字符'A'
, }1 w1 k! J( g% V# J+ Q: T+ BCHAR_G = $96    ;字符'G'' u- v' d6 w! z8 c$ u
CHAR_E = $94    ;字符'E'' j8 d4 X8 P* x$ y
CHAR_SPA = $00    ;字符空格
% a2 S* ~9 E7 b5 O; t5 @5 tCHAR_LIN = $AE    ;字符'-'4 ]9 R' \: U( P4 c* p' {
CHAR_O = $9E    ;字符'o'+ ]* s% g2 f4 B" D
NUM_1 = $81    ;数字'1'& ^' r) D. j$ N3 J9 V" }2 R& X: \, `8 W
NUM_2 = $82    ;数字'2'
1 y" Z& |+ u& o0 FNUM_3 = $83    ;数字'3'9 a! N  J/ p. ^( i
NUM_4 = $84    ;数字'4'
. B7 B2 _* s9 U7 ?* A. l  pNUM_5 = $85    ;数字'5'" C, S: R( h2 N/ f8 y6 Y
NUM_6 = $86    ;数字'6'" ?" D! R9 h9 M% `$ c3 S
NUM_7 = $87    ;数字'7'2 g; H( c8 H0 Q: p* y
NUM_8 = $88    ;数字'8'% R* r9 R  f8 D: \9 M( Q
NUM_9 = $89    ;数字'9'$ V7 x! _: F0 x, v! F" M
NUM_0 = $80    ;数字'0'
; L5 }) z/ I1 G3 A/ F% ~5 Z* H: w( i* x8 Q6 M
.ORG $F82A
4 g7 h) k; ~  N( j2 e" M4 I  D' N JSR $E700& F8 z" `- q. V$ H

* y' M! t- B) R$ b8 j
1 w9 O! t% o5 V6 S9 N; J .ORG $E700
" f0 V& f7 [9 l7 r+ m) P  
0 f9 x* m2 d8 ^* r; M/ X% | STY $4014    ;补上覆盖的精灵写入指令
8 i2 n: M6 @) O. \( k) sPROTECT_DATA:    ;数据保护
% {1 A5 A- S, t, I" l, S PHA    ;数据保护开始
9 a. C( V* a) A TXA
2 P5 e" @% E' K  j6 L+ [ PHA2 C  X( a% ?4 K6 y* ?+ ]. r
TYA
; P5 b, k7 B* |- l2 n+ ?) Z PHA    ;数据保护结束* M+ {* o# ?! ?- ?3 Z9 Q
LDA TITLE_A. C+ G5 {! B( k+ M% S, w8 q5 U2 v
CMP #TITLE_A_ON    ;比较是否为标题画面  b) ~* Z- P% k7 ]8 C, I
BNE RET8 j7 K1 T( B6 b# |" z- Z
LDA TITLE_B
7 K7 J8 w' ?& i CMP #TITLE_B_ON    ;比较是否为标题画面9 }! B: n  o# m6 j4 r
BEQ PPU_STAGE0 |- K) N6 j9 H/ H
RET:    ;恢复数据
) O3 X, [& S$ g$ ~* @+ W PLA    ;恢复数据开始2 E# R8 X/ p7 _) \; \8 Y8 ?
TAY! W, ~( k& r/ r
PLA
+ N5 {8 t' _5 O3 v TAX
& f" ~3 Z8 X7 c! h8 m) Y7 y PLA    ;恢复数据结束
7 X9 ~7 V* L- n9 p$ b& w0 \ RTS    ;返回7 O0 b9 }: U8 d# O
PPU_STAGE:    ;字符STAGE写入程序1 ?, y3 E2 P5 y% _- I& k
LDA #PPU_ADDR_H * I* r& z1 \# A! u6 n7 c) \
STA $2006    ;设置PPU字符写入高位地址) X/ C1 u  T! P& l2 n1 z: W+ \
LDA #PPU_ADDR_L2 S- a4 I  O8 `; E, E. b" Z3 \7 z
STA $2006    ;设置PPU字符写入低位地址
- z$ ^) ~$ `/ O+ m LDX #$009 \2 F% N4 }8 u- a# B) `
PPU_STAGE_WROTE:    ;写入STAGE字模
, ]$ {* M1 F4 N& I9 j" }1 \1 W' q; ? LDA STAGE_DATA,X
* K7 k: ^! r& m8 ^6 L; j CMP #PPU_END    ;判断是否写入结束
/ A& b) V& Q- b# }6 E BEQ STAGE_CMP
5 m" |9 P; w* M& J6 z6 Q, G$ ? STA $20079 V- t# _6 G! S5 H
INX; ]0 }' I" `5 J
BCC PPU_STAGE_WROTE! D5 i2 Y" r5 k, g& g
STAGE_CMP:    ;选关操作
3 j1 [, G& D, O" Q. x. f; l) ?6 A LDA STAGE_TEMP% u$ U0 X4 o9 R/ o/ j# Z
CMP #$FF    ;关卡数据初始化条件判断
/ s. q$ k# @# k  \6 X# q BNE KEY_B
  b$ Z9 t% q3 p, b+ f- N LDA #$009 O- h5 M- B  j6 _$ J0 N" r& Z9 ~
STA STAGE_TEMP    ;关卡数据初始化+ ?4 I1 E" j" I0 i. ~" [
KEY_B:    ;关卡减少
( x& O3 m6 r+ r' N7 G% T! D+ ^; m7 o LDA KEY_ADDR
, x* t1 L4 E1 z7 A" _" r AND #BUTTON_DEC    ;按键B或左减关. P8 g7 a$ J6 c) b5 q9 K
BEQ KEY_A
; b* n/ ?2 \! t; V LDA #$FF1 x3 b2 z* W: ]1 ~$ J* C
STA TIME_LAY    ;重设标题延时' t( _! F" ~$ [9 j
LDA STAGE_TEMP- I8 ]0 x! Y' z" _
CMP #$00    ;关卡比较
  W5 W1 N2 I& s+ w' \ BEQ KEY_A  @/ V: v/ m- @2 `  z
DEC STAGE_TEMP   ;减关# Y- Q/ g% }+ ?4 J: u, ^
JSR MUSIC    ;按键音效6 {, a5 w( w/ o0 v8 |
KEY_A:    ;关卡增加' `2 |' D! k% ]6 B4 H) A& p
LDA KEY_ADDR
4 G3 [; \, z( b6 R) D AND #BUTTON_INC    ;按键A或右加关( k& a5 O6 c5 V6 f
BEQ PPU_NUM_WRITE% d- s" G; P! i
LDA #$FF# R5 `7 X# u& O' H& v' @
STA TIME_LAY    ;重设标题延时
6 ?4 f2 |) G6 D: J. Q9 j+ Z6 B; t LDA STAGE_TEMP0 f, n' k" b0 i3 _( p: ~# ?5 z
CMP #STAGE_MAX    ;关卡比较0 h5 t# Z2 Q% @$ L! j2 V9 O
BEQ PPU_NUM_WRITE
3 l0 J! C0 w1 G/ y, R INC STAGE_TEMP    ;加关
& T, p7 M2 _! ?3 W' p JSR MUSIC    ;按键音效
. a: i5 b0 l6 ]/ d: z; ZPPU_NUM_WRITE:    ;关卡数字写入地址
9 N$ g- i" u: Y! A& t8 ? LDA #PPU_ADDR_H7 k* f  o( a+ T* ]2 i
STA $2006    ;设置PPU数字写入高位地址
1 r' Y6 [( L% ]% g, x* ` LDA #PPU_ADDR_L
7 ?4 O% g" b: F0 p9 Z) Q4 | CLC8 G+ n) ?7 S" Z( v
ADC #NUMBER_A
0 y; ]7 U9 u; I) R# A  _ STA $2006    ;设置PPU字符写入低位地址
! \& q9 L& r; L9 N* r) Y4 s1 f LDA STAGE_TEMP
( B, Q1 u! [; a TAX( O. ~  }" I# b2 {
LDA STAGE_D1,X    ;写入数字
' j  }% ?* J$ [2 w9 t STA $2007
* p# @; J- j+ l/ w  d, K  b. ] LDA #PPU_ADDR_H/ C! W3 u( l- r, W, ^0 z( C
STA $2006    ;设置PPU数字写入高位地址
2 f7 V3 k6 w" g8 W" y- V" |2 q' N- O LDA #PPU_ADDR_L7 V! b& M5 \" N* f
CLC# i9 N& O! q7 ]4 m
ADC #NUMBER_B
- h8 u  m* S* k1 B  S4 K& M. j STA $2006    ;设置PPU字符写入低位地址
, s9 }% X  M; k+ e LDA STAGE_TEMP! ]/ }; |% `1 L' D5 R( i- I
TAX
( g5 q. x: p' k2 g LDA STAGE_D2,X    ;写入数字
# m8 m( j; V, q3 J STA $2007
2 T, S/ {7 A- [4 d3 tSTAHE_WRITE:
4 o4 {4 i" i+ @" R' R LDA STAGE_TEMP
5 _7 Q1 ?) h' g3 ~! V, ~/ b' E/ W STA $2D   ;初始关卡写入
* j6 ?& y: n1 F2 f7 K2 PPPU_RTS:    ;恢复数据
, I% h- a0 [) Q1 r) H0 N; G( ^" J PLA7 a7 N# n$ a: {! a
TAY
: u6 u9 u- K; b7 {( @4 F5 v2 U PLA7 ^4 C8 G0 ]& S% ?0 c6 B9 v
TAX
" _* M6 G2 G( l* e* |& N2 B" C PLA
  i8 u' W1 [0 j' G RTS
/ f: H. ^. S* `4 s6 z" g" [& |! J% G- S % I/ e& w$ j" r1 O* P4 z
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据. Y7 R1 y% Z. p4 N
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
$ u  j5 `) F3 K, @8 C; y) C+ g. s
" Q( e2 E& y- L  g' D6 I7 ~! w$ t' HSTAGE_D1:   ;关卡数字1 T4 h! @8 N1 `
.BYTE NUM_1,NUM_2,NUM_2,NUM_3,NUM_4,NUM_4,NUM_5,NUM_5,NUM_6,NUM_6,NUM_7,NUM_7,NUM_8,NUM_8,NUM_89 F6 T8 D4 X7 i

: ~& c& Y( A* X2 ^8 l* ]STAGE_D2:   ;场景数字
) M4 v- v. `; A* B2 J. { .BYTE NUM_1,NUM_1,NUM_2,NUM_1,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_1,NUM_2,NUM_34 a9 l: ]8 R! r& F/ p5 s; p1 T6 W2 T
7 X* \; c2 ?$ M! h* B" M

/ p0 b' ?& C9 l6 X! f( CMUSIC:    ;按键音效
- Q/ g5 l7 W7 w( a: H% E LDA #$3B    ;音乐号
: r  ?5 v2 J. }) M$ q JSR $919E    ;系统音乐调用/ a9 H8 g2 r# g
RTS
[发帖际遇]: 一个袋子砸在了 yandagui 头上,yandagui 赚了 4 个 柠檬. 幸运榜 / 衰神榜

签到天数: 434 天

[LV.9]以坛为家II

发表于 2017-4-1 21:01:26 | 显示全部楼层
对于一个小白来说。。。这都写的什么啊。。

签到天数: 2060 天

[LV.Master]伴坛终老

发表于 2017-4-2 00:17:11 | 显示全部楼层
完全看不懂哦、、、、、、

签到天数: 1418 天

[LV.10]以坛为家III

发表于 2017-4-2 07:46:47 | 显示全部楼层
天书{:4_112:}
[发帖际遇]: 文子萝卜 在网吧通宵,花了 7 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2435 天

[LV.Master]伴坛终老

发表于 2017-4-2 10:04:52 | 显示全部楼层
应该是代码吧,一般人看不懂
[发帖际遇]: cheap9003扶老大爷过马路,警察叔叔奖励cheap9003 3 个 柠檬. 幸运榜 / 衰神榜
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2026-2-25 05:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表