设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]) o" s: U4 d- M# y
;作者:FlameCyclone 2017.4.1
' e- b+ `$ H8 {( z& f
: C/ k3 x1 c! H
, d7 J/ |( f0 `8 X;配置数据) k3 |3 V& I: w% s$ z3 c
KEY_ADDR = $F8    ;按键地址0 w/ ~7 r: Z+ g8 l  l" D2 W7 [
STAGE_TEMP = $6010    ;关卡临时地址
9 `' ?' _+ R& o! r, TSTAGE_MAX = $0E    ;最大关卡数, V) M- I! D6 @0 _2 g0 @
TITLE_A = $20    ;标题条件A  x. a3 B/ Q' X) y) M9 I1 I+ I
TITLE_A_ON = $02    ;标题条件A有效状态判定
7 S" c, x# g' UTITLE_B = $21    ;标题条件B
0 f6 D4 Y3 p2 T) C' N: uTITLE_B_ON = $03    ;标题条件B有效状态判定
& I$ s0 ^, K  S2 kPPU_END = $FF    ;PPU结束符& G3 C1 A: I' @% k' `3 e" v
TIME_LAY = $4A    ;标题显示延时地址. E( j# p& O+ z( U# w" P
BUTTON_DEC = $42    ;关卡减少按键
  d$ ^9 F6 S% g: l- Z3 KBUTTON_INC = $81    ;关卡增加按键
4 Q* `0 a( @2 N+ M) y$ r$ J3 WNUMBER_A = $06    ;数字A距离STAGE偏移量* c' z" F# t; |7 G2 D( u5 n
NUMBER_B = $08    ;数字B距离STAGE偏移量8 o3 i+ T# T% ~/ x1 T" `
PPU_ADDR_H = $23    ;STAGE写入地址高位3 f* P6 x0 n+ P# }
PPU_ADDR_L = $8C    ;STAGE写入地址低位
  i+ D  w6 S/ t3 GCHAR_S = $A2    ;字符'S'7 K! l, V$ s' n1 M# V5 Y
CHAR_T = $A3    ;字符'T'
; E* h4 K5 y  \7 GCHAR_A = $90    ;字符'A'
. n6 `9 y2 L$ u7 T0 {CHAR_G = $96    ;字符'G'. F: j2 J8 }+ T7 E6 a, L; @: ]
CHAR_E = $94    ;字符'E'
, A7 q4 k1 k1 vCHAR_SPA = $00    ;字符空格
9 f0 Q7 s+ `) L! ]5 S, l3 p2 yCHAR_LIN = $AE    ;字符'-'
8 I6 |& r6 s4 o' J" e$ W$ k; yCHAR_O = $9E    ;字符'o'
. w6 t; @7 c7 f( o9 nNUM_1 = $81    ;数字'1'( p1 b# R2 m; T: ^
NUM_2 = $82    ;数字'2'( @' u; }( d$ A" r, t2 f. ^
NUM_3 = $83    ;数字'3'
. f& q0 D. {: |7 y' R6 [NUM_4 = $84    ;数字'4'
7 `3 r! ]1 L6 X" M6 Z0 [NUM_5 = $85    ;数字'5'
" H, Y8 k2 D2 r4 ?$ @$ Q0 {; ~5 wNUM_6 = $86    ;数字'6'( r) B* x4 ]& `6 J* q% y
NUM_7 = $87    ;数字'7'; S# a) {6 B/ x
NUM_8 = $88    ;数字'8'
) z& a5 w( F; }" `$ N7 M$ WNUM_9 = $89    ;数字'9'
+ x4 q5 ]1 g; J! Q4 |1 O# W: {4 ZNUM_0 = $80    ;数字'0'
6 ^* y  n+ G3 j1 [9 r: y) Q, @
: h5 W3 [* }0 u4 X4 q& A; l! C .ORG $F82A- |- K! F  Z1 b! q+ L6 [% ?. v9 u& K# L2 z
JSR $E700
) J- ~" q4 b; l! ^# d ( k$ v9 e7 m: Q+ a

0 `$ C% F0 U: g: U9 o+ u .ORG $E700
1 h3 i! n) {, x# t1 a  ^$ N  ! p6 W& b. J" W7 ^& m) C' H7 S( T) L# b
STY $4014    ;补上覆盖的精灵写入指令
" ]8 c3 s# j3 E' oPROTECT_DATA:    ;数据保护
; e- X8 Y7 b& W! q PHA    ;数据保护开始1 m- Q5 M$ k0 U
TXA+ @0 Z9 ?) w5 R1 Q3 F/ S& L
PHA
" T- W# K: m' @: e TYA
/ O# \! y! w( f/ x/ H PHA    ;数据保护结束' }; Q, V  F- d' {! B( F$ w
LDA TITLE_A* W9 w" l0 s  |& [
CMP #TITLE_A_ON    ;比较是否为标题画面
  \; \7 i7 g4 }4 f8 A! C2 a BNE RET, s& Y6 ?0 v; I4 z" ?4 q
LDA TITLE_B
6 W  }( F1 a8 e& a CMP #TITLE_B_ON    ;比较是否为标题画面' a) l9 e+ ]1 i% J& H
BEQ PPU_STAGE
5 ^4 u- ]0 v3 k- E8 I0 vRET:    ;恢复数据
  s8 I! G$ A9 ~' V- J4 W PLA    ;恢复数据开始% V- A- \4 t' N+ s0 W2 u
TAY
7 |9 V' r/ L1 ^* A3 ] PLA  `8 S% M. Z2 A7 L' r) c+ T
TAX0 {+ j0 D  c2 r0 K( |. Q4 Y
PLA    ;恢复数据结束
, x2 T/ q6 I/ X) E: P RTS    ;返回
$ f& \/ v7 S  l  r& ]PPU_STAGE:    ;字符STAGE写入程序0 Y9 E4 c' H$ k5 O, G) e+ J5 o
LDA #PPU_ADDR_H
2 v* ~; Z0 ?1 Q; C. c! u STA $2006    ;设置PPU字符写入高位地址  D8 p# ^: z% Z1 T: ~1 V& X* D+ a1 }
LDA #PPU_ADDR_L
1 v- f/ u  {9 N& y! G STA $2006    ;设置PPU字符写入低位地址
9 \" ^- C2 E3 n, t* D- x LDX #$00
6 h7 J$ \1 R" z2 Q: EPPU_STAGE_WROTE:    ;写入STAGE字模7 i% o( v! r: v6 _$ v
LDA STAGE_DATA,X9 @" u8 ?6 d. X, l. o
CMP #PPU_END    ;判断是否写入结束, d+ d: l# K$ f8 r% `
BEQ STAGE_CMP
/ @0 n/ ?' d5 Z STA $20077 r7 Q8 ~: Q7 L) j; A& O7 X
INX
/ ]3 r, K- v: n) y, F- P5 q BCC PPU_STAGE_WROTE" J; A0 t+ y: j
STAGE_CMP:    ;选关操作
( ?& @' R5 o& B4 P& h LDA STAGE_TEMP
9 f1 p) |1 i* v; `. C CMP #$FF    ;关卡数据初始化条件判断
4 e0 k: u) X  W; d, e2 I BNE KEY_B4 n9 I8 u' a+ M# ~) W
LDA #$00& p/ Z' {9 c: \$ h( ]( u7 D
STA STAGE_TEMP    ;关卡数据初始化' J/ _" n; l' V  r
KEY_B:    ;关卡减少) f' T# K% L5 n. Y3 W4 O; z
LDA KEY_ADDR
( ~+ G4 |4 k1 V AND #BUTTON_DEC    ;按键B或左减关
7 k  R& b  C' s2 X& j) Z9 { BEQ KEY_A3 b" l5 Y. s8 h: ~( W6 C
LDA #$FF3 `% [# c! i; K( t& P7 \2 b
STA TIME_LAY    ;重设标题延时
# @0 f. M# I) w" t LDA STAGE_TEMP4 t5 C5 E6 W$ v+ \* n% K
CMP #$00    ;关卡比较1 a* }5 P) r: V5 Q2 l& z9 J5 `
BEQ KEY_A
/ x- ~4 h" R) Y" H# g DEC STAGE_TEMP   ;减关. m3 S+ N, t' l4 a2 k
JSR MUSIC    ;按键音效! S/ y: f( n$ E7 T( ^
KEY_A:    ;关卡增加; Z& E9 E/ X& G" a3 ]
LDA KEY_ADDR& d  i  z( C  C
AND #BUTTON_INC    ;按键A或右加关5 P, o$ n) O; c) p
BEQ PPU_NUM_WRITE, e% G& d3 t% z' [: E8 p
LDA #$FF: e; d3 @0 r, ^5 _1 x  {+ |$ G
STA TIME_LAY    ;重设标题延时* d. {! _% Y$ |" O9 u6 J5 z% s; Y, n
LDA STAGE_TEMP
% b, l- Q7 r3 ^' g CMP #STAGE_MAX    ;关卡比较
2 J! F9 a9 _# \( { BEQ PPU_NUM_WRITE+ v. W8 W5 M% X7 J/ p! a
INC STAGE_TEMP    ;加关
. j$ V/ n  l, Y+ l JSR MUSIC    ;按键音效/ _% O5 h) y+ S
PPU_NUM_WRITE:    ;关卡数字写入地址) E: M1 b4 b) {/ s* W
LDA #PPU_ADDR_H& w, {: F: w/ ~) ^4 `+ J0 w
STA $2006    ;设置PPU数字写入高位地址) s2 d; F3 u- f
LDA #PPU_ADDR_L
; h0 f* {3 R& b- U CLC6 w7 J+ S3 E4 C) v% }+ W
ADC #NUMBER_A: b7 c' K  h: r: z' H
STA $2006    ;设置PPU字符写入低位地址
- [2 B, w7 X+ k! b LDA STAGE_TEMP
4 L8 p( r( y4 m% i& ? TAX3 G5 K, F, Y2 S3 k
LDA STAGE_D1,X    ;写入数字9 U8 m! h7 S3 x% Q# }7 y) F7 b7 [
STA $2007
" A% s+ h3 C( V1 V LDA #PPU_ADDR_H
; a" B. g0 T" d9 f+ L7 Q STA $2006    ;设置PPU数字写入高位地址
0 M1 A% @: m. S# T4 H LDA #PPU_ADDR_L% n- l- E8 R) g% C* v) J
CLC1 @" v6 u+ l+ m$ c7 E* G" `- U% g
ADC #NUMBER_B
" D( G" p/ V/ H! r# i# X! x STA $2006    ;设置PPU字符写入低位地址
% E( H$ z" X5 ]) ?8 z8 w. [ LDA STAGE_TEMP
3 e, q+ e0 V2 F; ]6 \ TAX/ u* J  w. I* d
LDA STAGE_D2,X    ;写入数字0 U4 A- n( u1 q0 b5 L
STA $20072 D- W: }6 {4 D) [; ?! T4 C
STAHE_WRITE:, X+ R) j; R8 j1 T  R
LDA STAGE_TEMP
* K( a- A1 ?, l+ c$ M: S8 f: R STA $2D   ;初始关卡写入, ], y: n5 S# u8 ?9 N4 ^( @  T
PPU_RTS:    ;恢复数据! @% \5 Z5 {: S5 J/ a: E% E1 r
PLA* L# S& K3 B- O  C6 J% b
TAY
1 H" \; C( M+ H4 I' t- o PLA
. X/ I  G% w2 t. ]* ?# n TAX; U' r# z& u' R& _! F, B
PLA& T0 v" a3 ^; s* C6 v, D, C7 q
RTS: k6 z9 ^  G  Z

$ e7 M, `0 Z! z3 q) k1 HSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
+ k" p# {# ~4 D. P8 A3 E .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END2 g9 p9 T" S; K. q

# e8 P4 O1 g6 I9 d2 zSTAGE_D1:   ;关卡数字
- l9 @) ]# @% B .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_88 q9 }" A- a7 P( P0 `/ F

! b; Q3 v% t' @9 ySTAGE_D2:   ;场景数字
, Z# q5 m, W: {$ r: J* y5 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
; ]3 W. R! `( B
+ q8 z3 p' q! C# t
. w' ?0 E* Y2 U% c; w& g& JMUSIC:    ;按键音效
' `: p$ `  \2 p6 E- @' x  Z3 i LDA #$3B    ;音乐号
2 Y; @6 f- f+ C0 W. k JSR $919E    ;系统音乐调用
' E! |8 ^; P- ?+ K/ X2 d 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 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2509 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-26 11:01

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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