EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]6 N7 u8 f. v; p8 m+ a) w& I7 I
;作者:FlameCyclone 2017.4.1: F0 _8 q5 ?. j  c
1 U5 \: d& O, C5 |  Z% J' W
* C; I) O- B* t
;配置数据
6 s( {' B. N! X7 u3 UKEY_ADDR = $F8    ;按键地址( D/ o( t6 ^( q
STAGE_TEMP = $6010    ;关卡临时地址
1 |. x: q" M7 ~* U! N& HSTAGE_MAX = $0E    ;最大关卡数
1 A" k% Q: Y- |4 C) n; cTITLE_A = $20    ;标题条件A5 i# g5 `8 w5 b3 c/ ~
TITLE_A_ON = $02    ;标题条件A有效状态判定
9 m  _9 {  G$ W6 v4 ITITLE_B = $21    ;标题条件B' B& r+ f0 _( s' k* ?; q+ j
TITLE_B_ON = $03    ;标题条件B有效状态判定3 u+ @' R. v- B% x
PPU_END = $FF    ;PPU结束符
) w' l4 b- @0 z/ U( b& Y* S- q. HTIME_LAY = $4A    ;标题显示延时地址
, j" c+ U! E, U; D4 qBUTTON_DEC = $42    ;关卡减少按键
- L  q. N3 @* c/ F# ?1 d2 m6 KBUTTON_INC = $81    ;关卡增加按键* R. Q  N% x1 t. |% N- t
NUMBER_A = $06    ;数字A距离STAGE偏移量
4 L. u$ z2 n5 h+ \NUMBER_B = $08    ;数字B距离STAGE偏移量
+ \0 i& B# i- [. ?( o3 W: BPPU_ADDR_H = $23    ;STAGE写入地址高位, O& c9 `! _, {- S" P4 C+ H$ A
PPU_ADDR_L = $8C    ;STAGE写入地址低位
! p  ?) h) `3 ~CHAR_S = $A2    ;字符'S'
. Y3 d  n  t$ ~CHAR_T = $A3    ;字符'T'
5 h. ^( [6 K: ^/ n$ q& [CHAR_A = $90    ;字符'A'
; N/ W3 n0 G5 X1 \- y7 m" x4 ICHAR_G = $96    ;字符'G'
4 }9 k. i$ n3 D1 u1 T" ICHAR_E = $94    ;字符'E'3 N- `4 V% C. l9 g4 {
CHAR_SPA = $00    ;字符空格
$ ~6 H' Q( }  _CHAR_LIN = $AE    ;字符'-'
4 b: T* x; s9 K/ K) jCHAR_O = $9E    ;字符'o'! j3 d" e* C9 }: `; F# v) h  Y0 H
NUM_1 = $81    ;数字'1'4 q1 e) q* D3 u5 y; J, S- C0 v
NUM_2 = $82    ;数字'2'8 z" f$ t$ n) d  z# @
NUM_3 = $83    ;数字'3'
% S4 a$ `5 P7 e& f6 U4 VNUM_4 = $84    ;数字'4'" E$ k  n% W  g6 M5 `& |
NUM_5 = $85    ;数字'5'
5 P) n7 K: C! H& y7 q/ [NUM_6 = $86    ;数字'6'
2 S1 P' L9 }! W; c5 u0 _+ DNUM_7 = $87    ;数字'7'
- C" i& V, j$ b/ P! C! NNUM_8 = $88    ;数字'8'0 L  D9 M" M( j0 _
NUM_9 = $89    ;数字'9'
8 F! D/ f, f4 z8 ?: j0 `' Z) d  i, nNUM_0 = $80    ;数字'0'2 _0 P/ l9 I# K! L
# }  B/ w$ _: H" A
.ORG $F82A
& Y) b' e# [, @$ Q- S5 o1 n- \ JSR $E700
6 O5 r) Q8 j. s7 H ( o2 x$ X% A9 C) n( g/ l

" B& {+ M# V: p7 s; l$ y  G" G1 P3 s, y .ORG $E700
2 ^, `1 f9 v2 h6 c8 m  / v4 t1 U1 G9 k
STY $4014    ;补上覆盖的精灵写入指令
0 M# `/ Q, V5 vPROTECT_DATA:    ;数据保护
3 ^% W- C) P& L6 E' {: l' b! y PHA    ;数据保护开始
! `4 Z. m- E5 U4 J) }% L TXA
3 f: d. Q- H1 q2 I8 D2 ]# g: w) o8 E+ T PHA1 j$ Y- |9 [% f
TYA* e  {/ G& Q! l4 H6 M" r' _7 d
PHA    ;数据保护结束' C5 c) z" v, [% ~# b- O; Z
LDA TITLE_A
6 P, O) d# ?7 f' X4 R' c1 A CMP #TITLE_A_ON    ;比较是否为标题画面
7 t+ z( d7 M3 O/ R/ m BNE RET
3 C. _4 V* o1 N5 ~& w6 m% W0 d9 u LDA TITLE_B: m( S* |* b  H% D" E$ z- Z! R% Q
CMP #TITLE_B_ON    ;比较是否为标题画面
' k# u' U/ a( h, P8 v! | BEQ PPU_STAGE% B* {& A6 ~; U0 j! y
RET:    ;恢复数据
1 H& T- |" u6 f# S8 X3 w) ] PLA    ;恢复数据开始  e* N7 s5 c+ @9 f# z( F! y
TAY
& l" v4 A! P4 X# Y% R( o, E3 g PLA
' Z: Y3 C0 J( x+ w3 B TAX
6 V$ B( T6 V; `0 r4 F9 r" X& ]) p PLA    ;恢复数据结束- l3 v  \! x* e/ h, d9 {0 ?' y. j
RTS    ;返回/ w' H4 R; E: B' V% Z. o$ k
PPU_STAGE:    ;字符STAGE写入程序
& H* Y  U' v: [+ a LDA #PPU_ADDR_H
# E# o4 f( b; i, J6 o- t STA $2006    ;设置PPU字符写入高位地址. [, [1 O; s/ M, F# I$ a$ w4 V
LDA #PPU_ADDR_L0 p3 W! |# }+ _: `9 T3 Q
STA $2006    ;设置PPU字符写入低位地址
1 l& U! Z% ]! x3 \- D" N LDX #$00
3 ^8 A  b  C0 R9 Q5 ^* x% J( UPPU_STAGE_WROTE:    ;写入STAGE字模
5 B( n/ j/ X: q% W) g4 {: { LDA STAGE_DATA,X
) x/ g% @9 L5 }* w/ e CMP #PPU_END    ;判断是否写入结束
/ V& b2 \) T' n4 j" f2 [: Z7 f" c2 ^- { BEQ STAGE_CMP
6 B1 G! b( L9 k) Q STA $2007$ F" J$ H6 m. `# q+ {4 @
INX+ B' M$ r9 Y* t4 ?" d% q. n+ g  p$ E/ C* [
BCC PPU_STAGE_WROTE
0 G. l/ e% z4 i# @1 u; I' H' C7 USTAGE_CMP:    ;选关操作
3 L5 I5 C% J1 k, Q2 l2 @ LDA STAGE_TEMP
8 z0 G3 `) E: V! z CMP #$FF    ;关卡数据初始化条件判断
5 P3 M2 v7 ~9 ~9 Q( V* ~& f/ V- a BNE KEY_B: o1 O# t5 @. @6 ?
LDA #$00
5 B5 ]# p3 g# |- }6 ]5 }8 m STA STAGE_TEMP    ;关卡数据初始化4 t! I) d8 X  J6 u( r7 T
KEY_B:    ;关卡减少
0 k4 ?% b3 S4 n) T9 u6 c LDA KEY_ADDR
% U- s, j! c1 K. W. {4 N; r AND #BUTTON_DEC    ;按键B或左减关
4 l* t1 o' S2 p; g0 N BEQ KEY_A
- r7 `5 |4 V  \6 h/ S. {8 x LDA #$FF
$ z1 ]2 A. g, ]& R' x. s STA TIME_LAY    ;重设标题延时6 ^1 ?, b7 V& l+ f  f5 O
LDA STAGE_TEMP" w# @$ n8 Y, R' }5 G# q( @
CMP #$00    ;关卡比较
6 d% }0 Y' u, \, _' t# i BEQ KEY_A
" A* `& p9 b' {/ a1 e( Q! a" v; t DEC STAGE_TEMP   ;减关# Z- [1 P( O/ u4 H
JSR MUSIC    ;按键音效
9 r2 O7 O4 T: I1 p/ `; J( KKEY_A:    ;关卡增加
* H$ }5 v% S( F5 F1 Z/ [9 v LDA KEY_ADDR
  T% K" t7 I# F% C" C8 m4 b AND #BUTTON_INC    ;按键A或右加关( R( M/ H. a( h! ^; l& t, e
BEQ PPU_NUM_WRITE3 b: @( t) o, {
LDA #$FF6 m6 K/ c! ?) g% M
STA TIME_LAY    ;重设标题延时: [4 m+ M7 K) I* |2 ]3 s7 O
LDA STAGE_TEMP' _" }8 u& ~3 Q8 [% q: V' g
CMP #STAGE_MAX    ;关卡比较" [8 S# c  Q! @& U0 a
BEQ PPU_NUM_WRITE
: X2 [# z8 o% s2 a INC STAGE_TEMP    ;加关
/ o2 c8 C" u8 I7 K: V6 u- i& ]: Q+ X JSR MUSIC    ;按键音效
2 Z9 n# F# F$ v( k/ i: fPPU_NUM_WRITE:    ;关卡数字写入地址
! O! q1 X$ j& n+ P LDA #PPU_ADDR_H& v5 O+ `+ @  x9 H( n) V
STA $2006    ;设置PPU数字写入高位地址# O2 N, y# P' ?( \
LDA #PPU_ADDR_L& E$ c0 E2 ~! T: g3 h- {+ Z9 B
CLC
8 }$ ^( P: o" H* {+ Z  h% ~7 q ADC #NUMBER_A3 `# l2 N* y) }0 O% d7 q: t( T
STA $2006    ;设置PPU字符写入低位地址
% J. c  f* a) n9 P LDA STAGE_TEMP, a% x+ w! \' X0 x+ }
TAX4 p2 h% ^% L0 f
LDA STAGE_D1,X    ;写入数字3 R, H4 k2 p7 _
STA $2007; q7 m+ f% c1 }+ H# r4 f
LDA #PPU_ADDR_H
+ ]4 J7 Z. m; Q STA $2006    ;设置PPU数字写入高位地址9 c; `- L8 K% R* g& {
LDA #PPU_ADDR_L% O4 ~. M; K3 I
CLC1 }7 m7 ^6 A& q8 w. i) {1 V
ADC #NUMBER_B
2 R9 Q- d. e5 d4 T+ L2 |# ? STA $2006    ;设置PPU字符写入低位地址
1 e& |6 E6 i# u6 s LDA STAGE_TEMP
* V! _4 X. J7 \; r+ J6 ?/ c- O1 o! i TAX
9 d5 R2 c2 E) ^# ^( H6 k3 O" X$ d( B LDA STAGE_D2,X    ;写入数字6 Y+ @& Z3 ]; q) T  U% O
STA $2007
$ D0 W6 k# w) p. L# RSTAHE_WRITE:" Q: K# O# G- u! N
LDA STAGE_TEMP( {6 r! X9 X5 _" i
STA $2D   ;初始关卡写入
7 t- r" E2 l* a, lPPU_RTS:    ;恢复数据
4 I$ o5 N+ Y& O4 P* Z, J  b/ M PLA9 U/ b3 L; N3 ^1 O2 @- I$ @
TAY! y' V# j  n: ]' P" q
PLA0 i% B* G7 q' d( l; W
TAX5 q5 ]$ C+ a; V; z8 m
PLA
9 M; X, ?' ^& `8 C# Q* h RTS# ]% y- E6 Z! V$ G

: v; r# D2 m9 A3 w+ GSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据8 @2 @. m. y- `+ w: I+ \  {$ Z
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END+ t6 z2 i2 Z# i! L( `3 t( T

- ]! ?' m5 J; B. X3 z/ c! s( dSTAGE_D1:   ;关卡数字
( X' `  V! C( f$ L .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
4 r4 c& ^0 a2 f; P
" ~. O- H" C, f+ {4 {4 q, [STAGE_D2:   ;场景数字
4 T3 N- ?" ?/ D4 N .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- l4 ?# M+ i4 B6 k

6 J* @, q  X% }2 Q+ u 7 t5 q& j- B5 L5 v  B
MUSIC:    ;按键音效, P! o( Q2 g; ~  z5 F# M1 S2 Q
LDA #$3B    ;音乐号6 p6 w* u7 n4 E% @6 Z
JSR $919E    ;系统音乐调用- K# {! i/ k; O, o6 s
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2519 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-6-16 01:57 , Processed in 1.084961 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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