设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
2 y( B! E3 L3 p* M: j4 w5 \3 Y- o- |- ^;作者:FlameCyclone 2017.4.13 j3 z# S, ~. a0 B/ b
8 B; h9 j$ k7 c  v% V

" n' p" N+ m* v- f# i+ g. Z6 r;配置数据
  X8 T: r& f3 cKEY_ADDR = $F8    ;按键地址
- G1 X) U) d, O  b3 ZSTAGE_TEMP = $6010    ;关卡临时地址9 Y7 P( T2 O1 G8 m( c% `+ K6 A
STAGE_MAX = $0E    ;最大关卡数
- o* {- z8 |8 f- a4 h' L' HTITLE_A = $20    ;标题条件A
. N) l7 m8 x9 c8 xTITLE_A_ON = $02    ;标题条件A有效状态判定
7 v5 A+ Q6 ^1 u8 UTITLE_B = $21    ;标题条件B
) d  B- i* ^5 D. b% YTITLE_B_ON = $03    ;标题条件B有效状态判定9 J- B4 `: D; M- |# O
PPU_END = $FF    ;PPU结束符, E  y4 D- D  j, [. x3 c8 o
TIME_LAY = $4A    ;标题显示延时地址
# }9 r4 q( Q2 d/ fBUTTON_DEC = $42    ;关卡减少按键
% |% ?' y6 q2 Y! SBUTTON_INC = $81    ;关卡增加按键
% R0 a6 V' T. ^NUMBER_A = $06    ;数字A距离STAGE偏移量
# k5 G4 ?" u  [, kNUMBER_B = $08    ;数字B距离STAGE偏移量$ s. }' j0 Y7 p* _$ b# l
PPU_ADDR_H = $23    ;STAGE写入地址高位
: H) H+ t+ U# m$ aPPU_ADDR_L = $8C    ;STAGE写入地址低位
3 M& D+ U- U  T4 n. YCHAR_S = $A2    ;字符'S'
7 z$ c& m% r5 k1 `% t' {7 c$ N) VCHAR_T = $A3    ;字符'T'/ x. {! e6 {# a# e; Y
CHAR_A = $90    ;字符'A'5 c3 N5 O. ?2 h% D! I; c
CHAR_G = $96    ;字符'G'; E/ v5 ?/ q" R. E+ l; K
CHAR_E = $94    ;字符'E'
# N+ v$ v  B! G6 E# T4 V3 ]/ c6 [CHAR_SPA = $00    ;字符空格5 _: O/ t3 S8 S1 W! o5 j
CHAR_LIN = $AE    ;字符'-'
1 v2 {9 V" _5 B# r) vCHAR_O = $9E    ;字符'o'" M5 m5 M+ a. n/ S8 U/ U
NUM_1 = $81    ;数字'1'
: y2 i8 {9 s% D. q' v: i9 VNUM_2 = $82    ;数字'2'" j- S- c" n7 D7 m$ R# ]% A
NUM_3 = $83    ;数字'3'
5 \2 L8 y6 z7 b% cNUM_4 = $84    ;数字'4'
. u+ Y. ^" K( ~& V, `NUM_5 = $85    ;数字'5'
4 q( M% L, @; i9 A$ ]NUM_6 = $86    ;数字'6'
" Z+ G5 O" ~' [$ v2 D" ]NUM_7 = $87    ;数字'7'( g$ r$ C% N! l* H6 S
NUM_8 = $88    ;数字'8'
0 ^4 n) @  }# \- l4 C: H- `NUM_9 = $89    ;数字'9'
: b6 s% W' N# D4 gNUM_0 = $80    ;数字'0'
7 w' b5 ?# V$ p8 _; m* o" F
4 E7 }( F% i3 ^& c/ E9 U1 B5 K .ORG $F82A) X+ `8 l4 x4 u4 m8 T( ^% e
JSR $E700
: r& P$ Z2 W0 P  ` 7 m; j& s' P! G+ Z8 [* [
1 J5 W" b# ?+ I9 D
.ORG $E700  {" }+ `& U6 G9 O
  ) h2 L6 ^4 j: s; Y* X- y
STY $4014    ;补上覆盖的精灵写入指令
" N5 o: I2 ~7 w% W, IPROTECT_DATA:    ;数据保护" ]! B9 i" Q# n( n  G& s
PHA    ;数据保护开始. B8 q" w) u2 d$ o/ m
TXA  D4 x* m8 s- I
PHA
+ X+ r3 W2 ^5 P" u! C2 G( N" O& H TYA
5 m2 a! v8 `9 d PHA    ;数据保护结束
1 j( _- q" ^: v/ X! a: l: n# u' B LDA TITLE_A1 ^: K  t, i) ~2 `  V, x9 C
CMP #TITLE_A_ON    ;比较是否为标题画面/ C( l* F: |8 o6 L
BNE RET) m1 D0 x% _& {$ ?
LDA TITLE_B
* y3 h& }+ ?( n7 u; o CMP #TITLE_B_ON    ;比较是否为标题画面
, j; Z( r* j% `% V: ~/ s4 n6 ~& a BEQ PPU_STAGE/ X; h( a/ c% c: Y5 D  s
RET:    ;恢复数据: ~/ Y6 a  Z+ u, h
PLA    ;恢复数据开始
6 u. n0 F1 S+ q& n: u9 r TAY  U  o& G4 H  y- w7 F# M8 }
PLA
) n- n5 W( O2 S- r2 O- [# R; ] TAX
  L! U* N3 R7 O( H8 h$ i$ C4 j) U PLA    ;恢复数据结束( a& k: Z" R0 J1 `
RTS    ;返回
5 J* P) f2 R. D5 JPPU_STAGE:    ;字符STAGE写入程序: ]* E" J) H6 z' y8 X: f' x
LDA #PPU_ADDR_H 6 w* U- ]1 F! Y
STA $2006    ;设置PPU字符写入高位地址
) z; M0 \9 H$ F2 e! g  _# j LDA #PPU_ADDR_L$ c' e, z+ T! j7 T4 C1 f$ R* U
STA $2006    ;设置PPU字符写入低位地址
( g+ g; b) v: b( i LDX #$00
6 p; ]2 v1 k7 q$ x! zPPU_STAGE_WROTE:    ;写入STAGE字模
. D: g- a9 M# `' c- H# ? LDA STAGE_DATA,X
; n: U1 |! \8 N$ l CMP #PPU_END    ;判断是否写入结束! u: R. v. `% Y+ \0 C
BEQ STAGE_CMP
/ Y1 {8 Q& J; |! h* M STA $2007% g" [! ]+ l5 S7 I
INX1 s7 L3 p' X2 o( a7 u1 c( B% S0 u( i0 l# r2 \
BCC PPU_STAGE_WROTE; [- }& O+ m) s8 M& F4 w3 t
STAGE_CMP:    ;选关操作
4 J, @: A* i3 t. G LDA STAGE_TEMP
2 d# s, c2 e1 r/ z CMP #$FF    ;关卡数据初始化条件判断6 r; p1 A0 ~6 z' i+ L2 x) u9 D+ O
BNE KEY_B
, x& P; ]9 I0 I, r LDA #$003 S2 v8 ^8 i5 ~7 F1 B
STA STAGE_TEMP    ;关卡数据初始化
; g  N' q& x5 q$ _4 Z2 l* v. mKEY_B:    ;关卡减少" _- W7 E2 D8 u+ q: V
LDA KEY_ADDR5 `# o1 y' U5 C9 O- S
AND #BUTTON_DEC    ;按键B或左减关# P* l; S3 p7 W' r/ M
BEQ KEY_A/ W! j9 ~6 R9 q& B* V" J8 S1 h
LDA #$FF
  |9 _& n! A& g: G* }9 G5 N STA TIME_LAY    ;重设标题延时
6 e0 U- |. {+ L" \* B7 m LDA STAGE_TEMP
, h, O9 }3 C* t9 J- U1 X9 ^ CMP #$00    ;关卡比较
6 V2 |" L: {1 `/ i BEQ KEY_A
4 D; i6 \# _- M+ Y% c! V0 n DEC STAGE_TEMP   ;减关6 @8 P/ j9 w: j; d# b1 n# z
JSR MUSIC    ;按键音效8 D; ]/ C4 ?8 R7 l# r8 v$ k
KEY_A:    ;关卡增加; c- I' z8 q; B( Q* C' }" G
LDA KEY_ADDR( x% a8 |6 A$ |
AND #BUTTON_INC    ;按键A或右加关4 O0 u: j* m; s0 G! f: y& S
BEQ PPU_NUM_WRITE; @$ A8 T& B: S$ ?* B2 O5 Z! I! ~
LDA #$FF
: X2 o8 g, m# G$ j8 h6 C5 c STA TIME_LAY    ;重设标题延时: y# d+ k2 ^/ _" l
LDA STAGE_TEMP0 g! G- c, z: {) v: Y
CMP #STAGE_MAX    ;关卡比较! b: _0 I9 C( n% @3 y+ ?
BEQ PPU_NUM_WRITE9 ?; m: t! K, a2 h# h  ^
INC STAGE_TEMP    ;加关- G+ d& N) _( }# h; K$ t1 c
JSR MUSIC    ;按键音效8 q0 \( M- ?$ z0 A6 k/ z7 p
PPU_NUM_WRITE:    ;关卡数字写入地址
" T% `# o6 |2 n: s+ E: }" c LDA #PPU_ADDR_H  U( i8 G! o8 c4 d7 l' t
STA $2006    ;设置PPU数字写入高位地址
. Z# ?% Z0 }# T3 M6 B LDA #PPU_ADDR_L
% f3 L! l! R) i% O( G+ x CLC
( ~- g- V8 d( t1 K/ `* s$ j2 N ADC #NUMBER_A! o" j( r- W% l( T/ Q
STA $2006    ;设置PPU字符写入低位地址
9 @3 J4 |0 Q, M: D- L# [0 a. x, e LDA STAGE_TEMP
( ]0 |- h* E1 V+ k3 [6 v$ ? TAX
9 ]1 r; l! \. Q: f LDA STAGE_D1,X    ;写入数字
. C  Z. _* F6 w STA $2007) Y# A, w' N* j' _4 [7 M
LDA #PPU_ADDR_H
2 Y0 a' l, P3 G# o# E STA $2006    ;设置PPU数字写入高位地址
3 J3 h% @0 a8 Z; q* ^ LDA #PPU_ADDR_L
0 H1 F7 E; @7 @+ S CLC+ n( J6 H! T  s
ADC #NUMBER_B
/ _' q, o5 d2 [  ?% z STA $2006    ;设置PPU字符写入低位地址; t  T9 s& {" |$ \! u
LDA STAGE_TEMP; u. V5 o5 h! ?6 S
TAX
. h& O2 G  |; H7 u% p9 z6 O LDA STAGE_D2,X    ;写入数字
6 l' q" g4 J* A STA $2007
1 |+ Q7 A& }; \+ QSTAHE_WRITE:
  g+ f: O, E# M6 m/ | LDA STAGE_TEMP/ _1 e7 l8 `9 x; d1 t
STA $2D   ;初始关卡写入
: s* E0 p: f* Q, }! Q8 i: s- v! H" PPPU_RTS:    ;恢复数据+ X$ d* ]* i4 u$ ]4 M3 W; e) R
PLA2 A) ^( M5 T4 o# S9 ]+ Y$ J
TAY: m8 v  ~& G: D9 ?$ n2 F, ]
PLA0 s! l: O- v* I6 S$ k7 n+ t
TAX
( s: m- ^# ^2 N1 u# f! G PLA& r2 a/ }8 [- G5 ?7 A$ V) ?
RTS/ C+ q" K- r1 [( w
0 P& U- m8 _( l9 v* l) x
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据3 D5 m% G$ N$ L" N
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
! ^* J! `4 p: s2 I, J
" q5 Z  w7 M  e8 qSTAGE_D1:   ;关卡数字
1 [, ^$ J! r) `# r* o9 Z2 _' j .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
! Z/ @1 j$ c% C: g# ~6 c& l3 F0 N# @- D% _6 k" E! v; Q
STAGE_D2:   ;场景数字% H7 c2 i" Y$ j5 r+ _
.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) w+ v* \; h& P! [  B

" n2 Y# n0 ~) {! S$ A. T 5 i0 n+ G$ _* h7 I% f4 \+ c# x
MUSIC:    ;按键音效
9 z4 g. X6 K5 |. i; Y! O' N. J* z9 ` LDA #$3B    ;音乐号
- t5 ~2 ?( `* F4 s+ |* K  V/ r JSR $919E    ;系统音乐调用
, [$ b+ e4 q3 Z) d1 x' i2 m) ? 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 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2527 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-16 15:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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