EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
) O/ Z9 L, K8 A;作者:FlameCyclone 2017.4.1
! r/ S! h" c% j# `, R2 i4 J$ ^" h% D0 p. M# D/ \: t; P  u

5 X3 Y2 X0 [* ]( C;配置数据
! V/ X0 }# c* _/ t) B' P2 @KEY_ADDR = $F8    ;按键地址4 l) v# |/ P1 y2 w5 A
STAGE_TEMP = $6010    ;关卡临时地址
* ~: Y; j' l. B9 m9 FSTAGE_MAX = $0E    ;最大关卡数
2 T0 H6 G9 x& v# {" o% ]9 lTITLE_A = $20    ;标题条件A
$ n' s. r- W( M( D' oTITLE_A_ON = $02    ;标题条件A有效状态判定
# L0 a) G6 [' @( ^2 F7 h0 YTITLE_B = $21    ;标题条件B: o8 Z* E, N( X5 m0 ]/ a6 f
TITLE_B_ON = $03    ;标题条件B有效状态判定
' Y9 u9 W$ s8 g' p. _PPU_END = $FF    ;PPU结束符
9 G+ q* X5 W- b6 z7 ]% r, c9 j! uTIME_LAY = $4A    ;标题显示延时地址% m1 U6 M" j( O% W1 I0 g
BUTTON_DEC = $42    ;关卡减少按键5 W( C6 ]$ }% v4 i
BUTTON_INC = $81    ;关卡增加按键
  ~6 e4 F- L, R* t: U' _NUMBER_A = $06    ;数字A距离STAGE偏移量
8 j; l% k$ s. F1 g/ w; s9 ^; G9 HNUMBER_B = $08    ;数字B距离STAGE偏移量3 t1 m% q; R# n0 e; O" D* E0 p! C
PPU_ADDR_H = $23    ;STAGE写入地址高位4 s; O. E& J1 g! h
PPU_ADDR_L = $8C    ;STAGE写入地址低位6 U+ @1 X0 }6 p$ d
CHAR_S = $A2    ;字符'S'" N5 i' t+ Q( ?$ F' J0 w$ F
CHAR_T = $A3    ;字符'T'
! M3 F/ i% i( O: ?% ^& vCHAR_A = $90    ;字符'A'9 Z$ c- a( H9 y; ^* T
CHAR_G = $96    ;字符'G'0 Z2 _/ k5 F$ G: L
CHAR_E = $94    ;字符'E'
/ k3 h0 Y/ [+ ~5 t5 aCHAR_SPA = $00    ;字符空格
/ G* d; j9 p4 h% I* oCHAR_LIN = $AE    ;字符'-'
- Z6 \2 J0 k) QCHAR_O = $9E    ;字符'o'5 J, o2 x. l; O: w
NUM_1 = $81    ;数字'1'
( `% R8 {! G1 l+ M: s% cNUM_2 = $82    ;数字'2'" M2 N3 G# h  ]9 c5 u; J; q; e: S2 o
NUM_3 = $83    ;数字'3'' E* i. B  G* v
NUM_4 = $84    ;数字'4'
0 l; s- f4 Z# a( \, BNUM_5 = $85    ;数字'5'
* i  Y7 t2 L, Z: [+ O& I4 BNUM_6 = $86    ;数字'6'- U$ e6 z6 B' n, m$ G( s4 F
NUM_7 = $87    ;数字'7'# i) |( K: r2 l$ Y
NUM_8 = $88    ;数字'8', k* Z) A* n* F6 q6 F) i
NUM_9 = $89    ;数字'9'
7 o9 @# S  ?& o/ gNUM_0 = $80    ;数字'0'
0 K5 s( Y# v4 Z0 |. h& f3 z8 c. |9 F2 x8 }1 {' n
.ORG $F82A
6 v9 z: U( y0 x0 H; Q/ a& Q1 Z JSR $E700
! R; l3 B2 n: X* h! X# E
2 w& W- ^- u2 N% C* p5 X% X" S
6 w8 m% L% Q+ a. P* L .ORG $E700* F" g# E6 l7 M* U- u/ c
  
9 R! {' Y0 q' H! T0 e STY $4014    ;补上覆盖的精灵写入指令
) ^5 y" }/ `1 ]3 HPROTECT_DATA:    ;数据保护5 F0 s4 t/ S+ g3 d
PHA    ;数据保护开始
$ L% G" _9 n+ D  N) B$ ]3 N& w0 l TXA4 |& p% o/ T8 B/ C! Z
PHA
+ Z3 t; H; W6 o TYA  K. i) F1 R9 U; e+ f5 O
PHA    ;数据保护结束
( _; Z) k# c& ~' v- c+ z* V LDA TITLE_A
' ?6 N) @  \% K9 a, g/ ? CMP #TITLE_A_ON    ;比较是否为标题画面8 |: p! v5 V! _) |- _4 B4 d
BNE RET
- i" k. ~5 a; j5 E+ U) [! ~ LDA TITLE_B+ E: ^3 C7 ?8 c. y0 Q  U
CMP #TITLE_B_ON    ;比较是否为标题画面1 M4 ]5 V) |3 \& n3 d; L: |9 I0 ^
BEQ PPU_STAGE$ }& u! h1 ~, `3 C7 b
RET:    ;恢复数据
4 W2 {4 b9 M3 s" n1 M PLA    ;恢复数据开始7 c5 d9 J! |- g& w# b4 u; U
TAY4 P$ o9 q) B% l, ^' z0 K/ r* |
PLA
4 C1 x( z+ U) V& [1 \- _" \+ m# ? TAX) f; ?% Q5 ~0 m6 O/ [- C
PLA    ;恢复数据结束
7 L2 q6 ]2 m' U$ m1 k RTS    ;返回3 @9 @% R# q; L: j! E) |; n6 o
PPU_STAGE:    ;字符STAGE写入程序
+ u9 X; r$ I# s0 z. Y+ n LDA #PPU_ADDR_H " S; |, I0 n0 h5 U: \  |$ }
STA $2006    ;设置PPU字符写入高位地址
/ [8 d/ y  S2 Z/ w0 q6 S5 ~ LDA #PPU_ADDR_L
, Y$ E" f8 |7 }) S2 y% R" O$ B: H6 | STA $2006    ;设置PPU字符写入低位地址4 m4 c, [, `7 q) l8 a
LDX #$00
; E: I( J# S. U0 x% APPU_STAGE_WROTE:    ;写入STAGE字模$ v. W% G5 ]3 G1 h4 n) t, C
LDA STAGE_DATA,X
6 ]# i% |, a6 s8 n CMP #PPU_END    ;判断是否写入结束
/ X. _. [- l8 j! a/ F0 d) K9 f7 S BEQ STAGE_CMP
! r1 g* Y1 d8 Q. N STA $20079 z" S; K+ s0 l" F2 o
INX, L- s$ U; f3 X
BCC PPU_STAGE_WROTE: B; {: _6 i6 {  a8 J2 O
STAGE_CMP:    ;选关操作% |& x4 ]) \. t  A. V
LDA STAGE_TEMP
3 G4 @- G9 F* i* N! r& W, S8 D CMP #$FF    ;关卡数据初始化条件判断1 g6 ?* w# [, @0 S! f0 b
BNE KEY_B2 @1 F0 E4 O- q2 o# a3 W% {+ i8 u+ K$ O
LDA #$00
' W. w  G1 e. m7 G) y2 `4 Y9 Y( z3 p STA STAGE_TEMP    ;关卡数据初始化1 d( n5 \  h* g  U3 t9 Q1 E9 p, j
KEY_B:    ;关卡减少$ Q0 s- g/ y/ m! C" y$ G
LDA KEY_ADDR7 |7 H6 G# M6 [. P, P& n2 E+ m
AND #BUTTON_DEC    ;按键B或左减关
& X, |3 F, o" c( p( f, Q BEQ KEY_A
( m* r2 z8 Y9 z. _' N( J) U/ } LDA #$FF& A" C9 ]; Z1 Y$ I' K& k/ C5 O
STA TIME_LAY    ;重设标题延时
3 ^% G; w& B8 }8 W LDA STAGE_TEMP8 v9 U+ ^3 V2 [6 P3 K, |5 a2 n) c
CMP #$00    ;关卡比较0 E* X. W% ?. Z8 \& d  X$ D7 C# v
BEQ KEY_A
4 }. w& w2 O% N; V' p; V& c DEC STAGE_TEMP   ;减关
$ S7 S! [5 y% A3 q( L; | JSR MUSIC    ;按键音效
* T, T: f( P: m! iKEY_A:    ;关卡增加% W, n. p* i  n  ~  T  O
LDA KEY_ADDR
2 D, I' L( f. {/ G; s AND #BUTTON_INC    ;按键A或右加关& M5 F* ]9 H8 }# n
BEQ PPU_NUM_WRITE
: Q9 t1 z& [: _ LDA #$FF4 E2 r2 C2 F3 f9 W! k: h, n9 o1 B& v
STA TIME_LAY    ;重设标题延时) }8 B5 [  b8 \
LDA STAGE_TEMP
2 h; D" k; f' O4 \/ d* R CMP #STAGE_MAX    ;关卡比较1 n/ M' R5 W$ J
BEQ PPU_NUM_WRITE
$ O! A9 G+ {+ u! U+ r  r INC STAGE_TEMP    ;加关
, K9 R) }6 }/ I) Y# s% w- m4 _ JSR MUSIC    ;按键音效
: l2 M7 x  M1 @; fPPU_NUM_WRITE:    ;关卡数字写入地址2 X. `! K0 w* S
LDA #PPU_ADDR_H
8 |/ H1 y: S! U$ J" O STA $2006    ;设置PPU数字写入高位地址: o# D' z# J: X' C) Y
LDA #PPU_ADDR_L
  u0 _: v$ I; { CLC
* ~* W$ p5 ?( \. ~2 d) Z# z" N7 W ADC #NUMBER_A
4 i0 F* y% w) B2 V STA $2006    ;设置PPU字符写入低位地址- V& b, A6 {0 d# n: @' b2 q/ K
LDA STAGE_TEMP
0 a% ]- i5 T; F, w; d# i& E/ S+ X: [ TAX. H/ Y3 ?3 l  X
LDA STAGE_D1,X    ;写入数字
3 d$ {3 H2 K* A STA $2007
# W" L7 \5 I& h LDA #PPU_ADDR_H  Q. P' X) _2 z: N8 I, v+ d
STA $2006    ;设置PPU数字写入高位地址
) R: x; R5 {; q, Q LDA #PPU_ADDR_L- t6 V! p- u8 L, B# K
CLC) i0 A. q3 L2 j2 w, S# q) h
ADC #NUMBER_B
; s' i+ g" H: A1 q4 N) q: ^ STA $2006    ;设置PPU字符写入低位地址4 a; @/ u$ s% z+ H
LDA STAGE_TEMP8 A2 t, s: `% u* ^2 V- y) D$ q
TAX$ E# a  L( {; T# T: m
LDA STAGE_D2,X    ;写入数字
& ?5 Z* R/ w$ j STA $20073 U6 d* V$ R$ u) T- N+ ?# D8 u/ [
STAHE_WRITE:3 z1 L) W( C8 \2 |, ]+ Z! j6 H$ d
LDA STAGE_TEMP9 g0 G. t4 }" O6 i! [
STA $2D   ;初始关卡写入
$ u, A  z& H0 l. ]$ y: Q& {& ^PPU_RTS:    ;恢复数据
9 R3 \; }: ~: K  H" I# Z PLA6 T8 C( ^% w$ c$ a: n$ h* v' D! d
TAY
/ q- i' b6 p5 {) \" i5 n4 j0 K PLA' a7 o- m$ M- b* P  C: [! D
TAX' r2 E+ l% x3 Z8 ]2 b+ G1 ~# J
PLA+ Z$ a  @; \  ~7 ~- m8 ^8 \2 n
RTS
% N, s* L! c  a0 C 5 m% M$ U2 k* x8 G) a
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据% a. ]. `  c( B3 J
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
2 U' [+ C6 ]- U0 p, p& g5 C9 `
; m* i8 Q- Q+ ASTAGE_D1:   ;关卡数字
% a( F0 m7 |2 ~0 Q; n8 T2 Y+ C .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
! D7 I+ V" N$ D- G$ @* M
& |0 f, h' g2 w8 ?9 jSTAGE_D2:   ;场景数字3 D4 k5 |7 S- `1 c
.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_38 q' A5 E* c' |' G9 S% W
+ H) V1 B# n# C) d$ F! w: \$ G" e! O
8 ?" h  k+ Q7 Q7 v; ?
MUSIC:    ;按键音效
- t0 X$ z6 e3 S: t LDA #$3B    ;音乐号$ O7 ?! b, P0 d! Y! G% x
JSR $919E    ;系统音乐调用" T/ m7 g( q0 Z7 w8 f, N4 [: f
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2684 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-12-11 06:04 , Processed in 1.081055 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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