设为首页收藏本站

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]: x9 W: Q4 e1 p1 [% J+ k
;作者:FlameCyclone 2017.4.1
; R) J& N5 q8 }. j; `
1 ]* c, ?1 O' u) d( c; s% T4 [" I7 Q
$ z" q9 J$ a7 @  q/ r" g7 Q;配置数据
3 I$ U) q5 `/ V$ J) k5 \5 DKEY_ADDR = $F8    ;按键地址& v! |2 `- t( z
STAGE_TEMP = $6010    ;关卡临时地址
' R4 T3 w, v( l) W( dSTAGE_MAX = $0E    ;最大关卡数2 m8 t( J0 c+ t7 e4 N
TITLE_A = $20    ;标题条件A
- O4 B/ ]. I# H: g8 F7 lTITLE_A_ON = $02    ;标题条件A有效状态判定3 g8 `; v' r" S; |
TITLE_B = $21    ;标题条件B
3 {; x5 ~( X# r$ o3 ~. mTITLE_B_ON = $03    ;标题条件B有效状态判定
7 u8 K- x0 [' l* @- O; ]- jPPU_END = $FF    ;PPU结束符" o( Q1 f! ?0 w9 ~% m0 J/ B) r
TIME_LAY = $4A    ;标题显示延时地址
  S* A) V. y( |0 C3 |! k; A3 v/ [BUTTON_DEC = $42    ;关卡减少按键2 d6 i6 s; V; e
BUTTON_INC = $81    ;关卡增加按键
9 _# Q' d; G& r: H; hNUMBER_A = $06    ;数字A距离STAGE偏移量
5 y; i1 y8 X& U  TNUMBER_B = $08    ;数字B距离STAGE偏移量: X  [' m  r# }5 Z
PPU_ADDR_H = $23    ;STAGE写入地址高位
' Q; T$ {. ?3 I- BPPU_ADDR_L = $8C    ;STAGE写入地址低位
! L3 [$ \2 Z' u" z: T- ?CHAR_S = $A2    ;字符'S'
! W8 ], d* J! ]1 e+ UCHAR_T = $A3    ;字符'T'
+ [( v2 H1 _: Y1 [' w" I5 wCHAR_A = $90    ;字符'A'
/ j- c; u" ?, E' d9 K0 f4 z) Y0 v1 fCHAR_G = $96    ;字符'G'
2 t& D- g" F+ b( R9 ~+ ]CHAR_E = $94    ;字符'E'; @! D) @: @" k# {" \" J$ T+ ^
CHAR_SPA = $00    ;字符空格
4 F0 ^5 G% l0 E4 I7 MCHAR_LIN = $AE    ;字符'-'
. Z$ T7 i) F  r6 |1 E& Q4 u2 U) UCHAR_O = $9E    ;字符'o'
9 E8 s' f- ]4 JNUM_1 = $81    ;数字'1'
8 }+ c2 r: a. S. v9 e6 [NUM_2 = $82    ;数字'2'3 a: x1 v7 X1 [" k( H4 o) v
NUM_3 = $83    ;数字'3'
( {$ Y% _+ A6 C/ z* `* T* PNUM_4 = $84    ;数字'4'8 s+ {% j, R! P4 J% |  u' R
NUM_5 = $85    ;数字'5'7 w7 l4 q5 P! ]" S
NUM_6 = $86    ;数字'6'
4 L2 W9 R& @9 W. i6 N1 c" m# W8 @NUM_7 = $87    ;数字'7'
0 s  D# F" D& R& v" W6 _NUM_8 = $88    ;数字'8'
  G1 b7 F% {7 o, ^( p: B( ONUM_9 = $89    ;数字'9'
' b5 i' o7 J+ G; ~1 N$ m# mNUM_0 = $80    ;数字'0'
+ Z: o" A; [3 ^" m2 B( k# P: T* l# D" h9 Z
.ORG $F82A
; |) w' d0 U) d4 i; P JSR $E7003 O  X7 A* Z+ u/ ^
( D* b" Z0 ?! D5 ?; {6 B
: N2 e! b+ A! m
.ORG $E700# R  G. K5 c' O  v: U
  
. u7 [1 U" G5 h& _0 p' F STY $4014    ;补上覆盖的精灵写入指令% M6 }* r. [7 v2 F7 Q
PROTECT_DATA:    ;数据保护
# G$ t# T& x4 s1 n/ r PHA    ;数据保护开始
" F3 ^& o8 Z$ N2 G; u; h7 c TXA
2 k4 Y: f4 c' D" Q PHA3 i  C! ]' w2 {( a
TYA
; h+ e9 R8 U5 Q& n9 [( y# U PHA    ;数据保护结束* B4 Z2 j7 l4 o9 i+ t- _. d$ j* b6 n9 ~
LDA TITLE_A" C* }- Y2 G  z% _+ D$ K7 h" d) y
CMP #TITLE_A_ON    ;比较是否为标题画面
; C. ^, [6 k/ v2 `$ F0 m BNE RET
/ C1 h- a) O6 m9 s6 I LDA TITLE_B3 ]6 y2 T! P# }* p) y1 F
CMP #TITLE_B_ON    ;比较是否为标题画面. h" m( t2 H7 H
BEQ PPU_STAGE
7 z. a2 y9 O. n! h1 mRET:    ;恢复数据& q9 x/ g3 K; d! t$ I
PLA    ;恢复数据开始# }0 `% ~- {: ]( F9 Z
TAY) l# e1 G( P$ M  Q
PLA# [+ s( {: M7 S  ]6 H2 `
TAX
9 x- _6 z; ~8 u  ~ PLA    ;恢复数据结束. P# ]( S+ R4 i% x0 U" Q6 w- P* Z
RTS    ;返回
7 S7 h: @0 m5 H" Z9 |+ x# MPPU_STAGE:    ;字符STAGE写入程序; y  _  S2 N, s* ^
LDA #PPU_ADDR_H / o% ]) D3 ]0 U' J- U
STA $2006    ;设置PPU字符写入高位地址
2 C0 s5 n2 _# f LDA #PPU_ADDR_L
; R( p1 l+ j. w8 r8 j1 |4 ` STA $2006    ;设置PPU字符写入低位地址
) y/ {, X3 B7 o' v0 v) @: D LDX #$00/ H. p" q8 J; R' Q1 N
PPU_STAGE_WROTE:    ;写入STAGE字模2 V) i1 j  _+ z. d% a
LDA STAGE_DATA,X
- Y5 q. w' ]% T) a# q CMP #PPU_END    ;判断是否写入结束
3 v# I% [+ P6 N BEQ STAGE_CMP% ^' g  V1 \9 _! m2 F% p/ R1 ]) t
STA $2007
  _1 i" j0 ^7 y2 T. W7 \7 d7 |' F INX
* i9 B  o& [: r BCC PPU_STAGE_WROTE% [$ S+ F1 {) t7 O$ W0 y" o
STAGE_CMP:    ;选关操作
( X; ]- `) c5 u LDA STAGE_TEMP
4 \. J& k6 x* _7 N CMP #$FF    ;关卡数据初始化条件判断/ Y3 h2 D' l0 ?1 [
BNE KEY_B' E! F8 y# d, @) Y: \) m
LDA #$00
5 a# t0 z$ T) Q! C" g5 q+ g STA STAGE_TEMP    ;关卡数据初始化
' D3 G+ Z9 U& |: l3 |1 iKEY_B:    ;关卡减少
2 b6 f2 e# x" V6 C: l LDA KEY_ADDR
; M; @! W2 R8 Y8 `( O8 o- I AND #BUTTON_DEC    ;按键B或左减关, ~4 W/ \# {* k) P# ^% p- [7 k
BEQ KEY_A9 f" I% J! b+ M5 E+ m* n
LDA #$FF
' O3 v& v1 [. u4 v- a STA TIME_LAY    ;重设标题延时# p  m) D9 f" d+ V( t* b
LDA STAGE_TEMP* p3 ?+ P, [! e9 I# F
CMP #$00    ;关卡比较0 h; E$ C4 m. h* ]' h) x) C8 }
BEQ KEY_A. ^( q+ R6 V/ }, ^+ p& j8 j* R
DEC STAGE_TEMP   ;减关7 {, v( F' a1 j# R1 N' C/ `
JSR MUSIC    ;按键音效
+ j1 [! I  ^0 S) iKEY_A:    ;关卡增加) u& G* }! ]0 ?
LDA KEY_ADDR
7 D5 x) n3 ^1 f9 t; b AND #BUTTON_INC    ;按键A或右加关# r1 }' F, u7 N# n% m* s: H
BEQ PPU_NUM_WRITE
4 L% `; s+ P2 `- p/ _4 Y0 N! C LDA #$FF0 D* ?$ @# s8 U
STA TIME_LAY    ;重设标题延时
# l+ k* Y# E+ z1 C0 a6 d! {7 W LDA STAGE_TEMP2 N- c' O4 U/ p$ K
CMP #STAGE_MAX    ;关卡比较
& ]* Q' l* m. X5 A+ i4 y9 M+ o6 B BEQ PPU_NUM_WRITE
0 M" @7 N) u$ S INC STAGE_TEMP    ;加关6 \: j% a' j. u$ M
JSR MUSIC    ;按键音效8 O4 P+ Z  ?0 u. x  B2 S
PPU_NUM_WRITE:    ;关卡数字写入地址" O4 P- |. @5 V, E- m
LDA #PPU_ADDR_H
" e5 @7 e  m  F/ W( v& w STA $2006    ;设置PPU数字写入高位地址- z, B+ p, n" M
LDA #PPU_ADDR_L
! E9 |7 s9 x- d4 g CLC
  P6 N% \# E. L: E) B ADC #NUMBER_A9 x) l6 b- p+ E" {( ~
STA $2006    ;设置PPU字符写入低位地址4 }5 E) D0 G, i, H% x
LDA STAGE_TEMP
& ^$ r: I) \7 k3 `+ t TAX; O% R8 `, `! R* A  A
LDA STAGE_D1,X    ;写入数字+ p" f# `2 M% Q5 q* P5 K
STA $2007; T, p! n  G# _5 X* i8 S) R
LDA #PPU_ADDR_H
! P- E, V+ V: s# l! O# `! F STA $2006    ;设置PPU数字写入高位地址
5 O8 F$ a% P8 i+ `& J7 L+ l LDA #PPU_ADDR_L& ]+ k4 M( \2 E4 d# m  Q" z/ v6 d
CLC, t3 [& `  z: v: L
ADC #NUMBER_B3 q5 U0 J( V* B1 G6 N( u1 o( z
STA $2006    ;设置PPU字符写入低位地址% E8 M3 t4 ^6 Y0 [
LDA STAGE_TEMP+ Z: Z. o5 L2 o: L/ N1 W
TAX: Z" k' U  s* b" @$ {7 J
LDA STAGE_D2,X    ;写入数字1 K/ z2 Z3 O6 l4 L% E/ i' l
STA $2007
% Z% C9 {( S, s8 I8 DSTAHE_WRITE:
9 A7 Y. `7 y# |2 M$ z LDA STAGE_TEMP
1 s1 \/ I) G: l, U! F STA $2D   ;初始关卡写入; N. A7 T, P" r$ E8 K) s& i
PPU_RTS:    ;恢复数据
; J$ V2 X; {- o8 h; h) N PLA
! n. b1 m9 a( d4 E' }4 H8 ~ TAY
8 J3 ~* J  |; G* D' i) m! b PLA- v) V8 C$ B1 q% L" I+ S
TAX3 O& p  x# e  t# l
PLA% ?/ c- i5 G8 B
RTS
# \2 H" Y5 d$ @5 O 2 E% m; N& P5 _, B. T
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据4 s# c0 D, @$ C4 P( {2 a
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
0 ?: n  D( N  s0 _0 m% j. Y4 g  c0 K' M. f1 d7 p
STAGE_D1:   ;关卡数字
9 q5 Q  A0 d0 E+ x: ~ .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
, k: k" I. j) U) I( U+ }1 y7 j! l2 Z4 o& Z, ~
STAGE_D2:   ;场景数字6 v: m# m1 Z( y4 e( d6 H
.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
- q' s4 A5 T% N5 [& s$ H/ I ' o8 u- t2 Y, o7 H" {

+ Y7 E2 r- O) `: IMUSIC:    ;按键音效. s' X+ N1 P+ e5 \
LDA #$3B    ;音乐号8 e, {. C$ c% B8 c, }) \9 M
JSR $919E    ;系统音乐调用
9 \3 \+ S) a. l/ 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 个 柠檬. 幸运榜 / 衰神榜
回复

使用道具 举报

签到天数: 2527 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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