设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
8 |( ?" X) T  S;作者:FlameCyclone 2017.4.1) y) g5 O0 V  N" s5 k

2 |# d5 k  r6 ~! I" w7 {
$ q3 y' B% @' s( A. j1 F1 x;配置数据
( B; q; g5 ]+ CKEY_ADDR = $F8    ;按键地址
; h% ?( W$ k4 K/ GSTAGE_TEMP = $6010    ;关卡临时地址
. m$ r, l: d6 Q" x) FSTAGE_MAX = $0E    ;最大关卡数& V6 W  H9 V3 f! b; [' S& i; p& x
TITLE_A = $20    ;标题条件A
  K2 d) e& R$ X$ k- E, o* V( o) sTITLE_A_ON = $02    ;标题条件A有效状态判定+ \4 W; [+ L" H6 l) B- D/ g
TITLE_B = $21    ;标题条件B
" _3 z* U7 m* q4 @6 w: L  JTITLE_B_ON = $03    ;标题条件B有效状态判定
% h9 c9 i8 t% w1 jPPU_END = $FF    ;PPU结束符
% |) E8 {1 q3 ]TIME_LAY = $4A    ;标题显示延时地址
5 [* }4 A3 G3 l7 T& aBUTTON_DEC = $42    ;关卡减少按键9 ]' h5 L8 l% b6 V8 V! o
BUTTON_INC = $81    ;关卡增加按键, b( F6 b4 L2 A: y5 W5 f
NUMBER_A = $06    ;数字A距离STAGE偏移量7 A! Y' h5 I8 {& a& x5 o% y, E( w
NUMBER_B = $08    ;数字B距离STAGE偏移量
% h( {, s* P. mPPU_ADDR_H = $23    ;STAGE写入地址高位
- P8 Z* G7 q  C' f+ h; `PPU_ADDR_L = $8C    ;STAGE写入地址低位
0 D" Q" Y( F, G& T) X9 N: lCHAR_S = $A2    ;字符'S'. q" ?2 |/ t3 V: Y# R8 f6 V7 Z( x7 V
CHAR_T = $A3    ;字符'T'2 |5 f( a7 E; O2 ?* L5 r
CHAR_A = $90    ;字符'A'
) f: z8 S) l8 PCHAR_G = $96    ;字符'G'
2 F9 `1 i5 L2 t3 pCHAR_E = $94    ;字符'E'3 [  \0 f# f) }$ J) U# }
CHAR_SPA = $00    ;字符空格
% @* g- c5 Z5 S2 z9 nCHAR_LIN = $AE    ;字符'-'5 J: g1 D7 `9 ]6 J' i9 g5 R
CHAR_O = $9E    ;字符'o'
7 k8 w4 F) T2 _& a! ]% [NUM_1 = $81    ;数字'1'( m- J! t' }' b6 W; z0 ?
NUM_2 = $82    ;数字'2') i; \( O* V; l: L" j# d
NUM_3 = $83    ;数字'3'
* r( S1 [1 k8 g% o9 u& cNUM_4 = $84    ;数字'4'
; b/ `$ B) Z5 T+ I3 O2 v3 s) zNUM_5 = $85    ;数字'5'
5 x& Q: y* y8 d$ UNUM_6 = $86    ;数字'6'
. f: b2 `  V6 y; S) PNUM_7 = $87    ;数字'7'
* D; x* J1 P( x* bNUM_8 = $88    ;数字'8'
& [" ]7 b1 C# q9 |* P# B, GNUM_9 = $89    ;数字'9'; u! @0 q) Y9 _0 m2 n6 P
NUM_0 = $80    ;数字'0'
3 p0 h! _( B' X5 y9 a5 s* E
. v% W- S& N! _2 D8 Z .ORG $F82A3 d& N- D6 B# p6 U0 R; D
JSR $E700) t' t9 O. |( I' g; _+ N9 R! b

+ ^' S3 l, `4 ] / `$ K! w! S2 c  G6 J0 }4 ~
.ORG $E700
% U8 k5 Y, l3 Q: A5 C0 N4 k8 e; W* ?  
: }0 A- T5 l" o STY $4014    ;补上覆盖的精灵写入指令
& o5 b; S$ I4 \; JPROTECT_DATA:    ;数据保护
% ]/ ~  J  Q" H. k; j; Y! z PHA    ;数据保护开始* p3 a" i8 F( y5 C: a8 A
TXA) w* O5 }+ Z" U' J8 B
PHA
/ ~0 f) L( D! E% t0 ?" l+ y2 m# L TYA& J, z7 v' C$ D8 k8 d( @
PHA    ;数据保护结束
. V; B4 H4 o2 F, C LDA TITLE_A6 g1 \7 q6 I  z9 z+ d
CMP #TITLE_A_ON    ;比较是否为标题画面
9 k- V+ V& r8 Z4 @ BNE RET
( v4 S2 \0 D7 }5 ~/ ]( I LDA TITLE_B
$ D! }* I9 c+ ~( z2 F, G CMP #TITLE_B_ON    ;比较是否为标题画面
9 a$ I/ X: R+ o% t) Z BEQ PPU_STAGE3 T2 q* O$ j  ^( @$ b8 G
RET:    ;恢复数据
9 l6 Q9 h. W3 Q: c$ P PLA    ;恢复数据开始
; R! e% A* x- x, @+ B( ~ TAY
; J2 z: J. Q3 X: s# O- o; b. } PLA0 P/ j. j. V. Y+ U! _( {- v
TAX, ~" T1 R7 U, Z9 a
PLA    ;恢复数据结束' j# q) y+ D, I. r5 f
RTS    ;返回: u: k, C" j& ~1 K$ ^/ E* j& h
PPU_STAGE:    ;字符STAGE写入程序
  _% ^& G' f: ~8 D' M# V LDA #PPU_ADDR_H 3 T- s4 f# B# L" D
STA $2006    ;设置PPU字符写入高位地址
9 a0 }2 T) d" j) @. _ LDA #PPU_ADDR_L
( O" u9 Z# l  r: u6 @4 G: {' b STA $2006    ;设置PPU字符写入低位地址+ w5 z% `! j* K4 a% Y
LDX #$00
: E5 j1 T# p8 H; APPU_STAGE_WROTE:    ;写入STAGE字模/ b( B* @9 E. P' I  d
LDA STAGE_DATA,X
) w5 \! l4 y4 G CMP #PPU_END    ;判断是否写入结束
1 D+ ?! t4 a5 b" e% J$ P! U BEQ STAGE_CMP2 ?3 `$ J& O7 |% j% V) j
STA $2007
% T7 }# L9 n# h9 z, T INX
( N! p8 N; ?9 L( T BCC PPU_STAGE_WROTE; P; X* P* u5 e
STAGE_CMP:    ;选关操作, y! v0 ?, H; C6 P0 v9 [
LDA STAGE_TEMP; q* a2 o/ w) b: S- p
CMP #$FF    ;关卡数据初始化条件判断
3 L, d* I- F* k+ k" H' C1 A BNE KEY_B
6 y+ I: B  J1 f* K- L& X LDA #$00
" m# d) i5 E7 d7 w# L) g STA STAGE_TEMP    ;关卡数据初始化0 @& I  ]. E& o* }
KEY_B:    ;关卡减少# c6 J6 \# G$ s& C( Z# _" y9 Z
LDA KEY_ADDR6 h0 r/ ?* g  m" b
AND #BUTTON_DEC    ;按键B或左减关
3 \% @% e3 ~( C/ y5 M& D BEQ KEY_A1 R$ L- r" ]1 R( [) A) g  G* K
LDA #$FF! h) x& H: e: V6 k. c. o+ n
STA TIME_LAY    ;重设标题延时
' z) [2 Q# E+ _: Y. x6 I/ V1 B LDA STAGE_TEMP7 L! V+ c: y) g0 v/ x
CMP #$00    ;关卡比较
  l# e& c; ^5 `7 A! T9 A BEQ KEY_A
9 Q2 |- s! X' x& V! \' b; C: K DEC STAGE_TEMP   ;减关
0 f! g7 O& y( t JSR MUSIC    ;按键音效  {' ]" W" g& s! d% L/ S
KEY_A:    ;关卡增加
6 h5 M2 L6 V7 R- ^) }& Z LDA KEY_ADDR3 O( k: t8 N* \8 T5 i* u6 U4 c
AND #BUTTON_INC    ;按键A或右加关
2 F2 d, U6 A1 c2 w) h' K7 {( \+ @ BEQ PPU_NUM_WRITE
- N( P( h* L2 `3 o/ L1 w1 U+ u& |4 m5 w LDA #$FF1 p# e; ?1 h4 d
STA TIME_LAY    ;重设标题延时
& \' v$ g( h6 a, @- R4 p LDA STAGE_TEMP, [1 q# \* ^5 D) V
CMP #STAGE_MAX    ;关卡比较1 L' [0 M5 `. L# ^  a
BEQ PPU_NUM_WRITE
! K& T6 ^- H, O0 d3 {3 m' q& }! S; {2 ~ INC STAGE_TEMP    ;加关% `% O9 d# r0 w/ S& a) L% s+ q+ G
JSR MUSIC    ;按键音效
" l  _. a& U0 j2 Z& W+ m& I$ RPPU_NUM_WRITE:    ;关卡数字写入地址2 x- y7 T: v3 T
LDA #PPU_ADDR_H
2 S. ~+ k0 H, q4 b7 c5 O/ [& m  o STA $2006    ;设置PPU数字写入高位地址
/ M) \1 o0 I- m" p) t4 B0 } LDA #PPU_ADDR_L
  e" i3 k, b+ I& J: b3 F2 w" a4 E CLC$ j" {! u- _1 F3 i
ADC #NUMBER_A. a4 F) ?" d3 [  U
STA $2006    ;设置PPU字符写入低位地址: f1 P0 D: _, k$ y0 X
LDA STAGE_TEMP
6 ^7 s5 u. e1 O( H1 i( n4 Q TAX8 C9 o1 Q+ v0 A  x
LDA STAGE_D1,X    ;写入数字
2 Q9 f. ?: Y( h1 d+ @. u STA $2007/ L0 v: Q3 {9 }
LDA #PPU_ADDR_H
# o9 w5 M! O6 g0 i1 a6 Y" y/ R0 Z: y STA $2006    ;设置PPU数字写入高位地址3 s8 A- w4 B  H+ N$ f1 _7 m
LDA #PPU_ADDR_L+ U/ u0 a+ X8 [; h; t5 v. [( a# N
CLC
$ _! e: L$ n- f ADC #NUMBER_B
$ [- U/ ]5 S/ A+ c% K. q+ A STA $2006    ;设置PPU字符写入低位地址8 |- p+ ?: G) d4 s) p+ ~8 l7 d( i1 J6 H
LDA STAGE_TEMP
  h: @' |+ T  v$ F4 g+ m TAX  Z2 Z5 y5 _) c+ w
LDA STAGE_D2,X    ;写入数字) d  [! k! ~4 `% \# n
STA $20077 L6 g0 [0 Y' t: b
STAHE_WRITE:
6 o0 F$ _6 m/ p) j4 N7 u LDA STAGE_TEMP
( Q8 ^2 P, |% h: I6 P STA $2D   ;初始关卡写入' U6 X! I( X& d4 S0 M
PPU_RTS:    ;恢复数据' h9 q" A2 l  K
PLA
! m- i+ }, N4 r  f3 }1 `* ~ TAY0 i6 @( C5 c: \
PLA
% \" B5 r1 w) ?: P" C7 T TAX) }9 Z" B: h- @4 j7 V% L
PLA
; |% O$ R; l. Y  D RTS! e. ^# S, S% o9 _- ^4 }; D

3 R; B3 v. Y1 U0 GSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
  _' [  u0 u% X0 | .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END0 F9 @+ ?* S! J2 s1 p: |9 U

4 s/ ?) Z# X  E6 y) C4 _STAGE_D1:   ;关卡数字
# M3 j' K' L9 o3 U- u .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_8" U) O! B5 A# J/ y/ T/ ^' W

& L; j& z1 f9 I) f3 mSTAGE_D2:   ;场景数字5 |! _) u9 Y: d/ y5 f& R3 X9 I
.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_3
) n9 H; d( B! r0 b8 e: N* A$ l & }) \* G- {3 n+ E9 |
# S/ g, {$ {/ D8 h+ Q
MUSIC:    ;按键音效
" m, p( ~9 x7 F! t$ A LDA #$3B    ;音乐号
! r9 d( ]9 n4 ]( R JSR $919E    ;系统音乐调用
+ m+ _- S5 \; |$ ^! [( g! Q 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 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2461 天

[LV.Master]伴坛终老

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-27 07:55

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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