EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
0 `1 m7 l( E* Z8 K" `;作者:FlameCyclone 2017.4.1
5 v8 F1 k/ G# _2 R4 E, Y
5 q0 t/ |) k4 _) o" f& B& u/ J
4 w) J# t. k2 Y* U3 _$ e/ Y;配置数据8 G3 B: H8 c$ V" Z2 z, z6 j! n
KEY_ADDR = $F8    ;按键地址
, f1 c7 T2 Z8 E# b% ]STAGE_TEMP = $6010    ;关卡临时地址
6 ^3 k+ G7 l) ~% a  g% }* D! ASTAGE_MAX = $0E    ;最大关卡数
8 D6 k" H2 X; {/ X/ }  g) _$ ZTITLE_A = $20    ;标题条件A
7 ]7 k; F% k& M5 w- \TITLE_A_ON = $02    ;标题条件A有效状态判定7 B; E* T' L! r- x3 C" n5 v  `
TITLE_B = $21    ;标题条件B8 g8 b/ i# J6 @  x6 j0 {
TITLE_B_ON = $03    ;标题条件B有效状态判定
- |& @$ Y' v; \+ e" f- XPPU_END = $FF    ;PPU结束符
' E% r& b+ J! B( V4 r) bTIME_LAY = $4A    ;标题显示延时地址
/ z5 e1 {: c8 O* rBUTTON_DEC = $42    ;关卡减少按键
+ p9 ?# S3 Z3 nBUTTON_INC = $81    ;关卡增加按键
+ E" E/ C& U* T9 W0 gNUMBER_A = $06    ;数字A距离STAGE偏移量
, Q) ?4 m7 [) k3 JNUMBER_B = $08    ;数字B距离STAGE偏移量0 v, U7 j9 {/ K$ t1 D. {
PPU_ADDR_H = $23    ;STAGE写入地址高位
- [* \1 x3 F: yPPU_ADDR_L = $8C    ;STAGE写入地址低位& o( \2 T+ A$ L$ P5 N& t5 `  \8 @- t
CHAR_S = $A2    ;字符'S'6 s2 q4 V% M: X9 o4 y4 B
CHAR_T = $A3    ;字符'T'
* t5 F% }) R5 R+ w% O, {6 y7 MCHAR_A = $90    ;字符'A'
0 x) K& }% F1 d+ Z% {CHAR_G = $96    ;字符'G': p) Z3 P: U' C% ?/ E/ {4 F
CHAR_E = $94    ;字符'E'3 p. E/ c; W6 @) R
CHAR_SPA = $00    ;字符空格, m4 u) d4 j3 Q& a9 @
CHAR_LIN = $AE    ;字符'-') \$ {& i! h9 c2 k7 ?# n
CHAR_O = $9E    ;字符'o'8 `: a% K) c6 {: V& J7 ~/ m
NUM_1 = $81    ;数字'1'
1 _! ~2 k. G( E" g) E& VNUM_2 = $82    ;数字'2'
: D. s" Q) }1 Y& TNUM_3 = $83    ;数字'3'+ w2 u- _  l. H# I7 K* L
NUM_4 = $84    ;数字'4'
6 |5 z0 O) I: D( m# W: @" TNUM_5 = $85    ;数字'5'9 v9 H  [3 P% R9 ^( C6 g: ~
NUM_6 = $86    ;数字'6'
' y$ O8 ]' L& `& LNUM_7 = $87    ;数字'7'
$ S0 N- j& T; h6 BNUM_8 = $88    ;数字'8'" U7 M9 q2 [7 D: q/ J9 J
NUM_9 = $89    ;数字'9'# `2 h" a  j2 d/ E* w  n# w- v3 I
NUM_0 = $80    ;数字'0'
3 ]& x. B, b. o
. E$ I8 J+ ~" [ .ORG $F82A8 l; w; J" }6 v% v+ M# X* w
JSR $E700
% V9 Z$ C' Y$ t
; |0 p  E# d7 Y0 w. u/ G
. y4 i/ M5 Q! [  S8 f1 E .ORG $E700
) y9 }0 s+ P5 _5 a- e. q2 Q& t. |- A  7 I3 Y! p$ B5 P, M  J' f) @
STY $4014    ;补上覆盖的精灵写入指令* h. ^$ M- E4 @" q5 G6 _* O. T$ L
PROTECT_DATA:    ;数据保护
6 T3 P  C& B3 x8 }# \0 }3 F7 o# ^ PHA    ;数据保护开始
6 m/ @1 e" [0 W TXA1 g! s8 V- q; [, I
PHA9 ^" \5 P. a2 C& a5 u
TYA* ~  x) j. l6 i7 t
PHA    ;数据保护结束
2 ?( [! Z/ C. @: n( a& a7 |: f LDA TITLE_A
/ D5 K6 ?* ?4 i) f1 _ CMP #TITLE_A_ON    ;比较是否为标题画面7 X. G1 {  X) |) \
BNE RET4 r7 f1 G. c' J0 c" W* N
LDA TITLE_B
9 J- p% H7 S: D" Z6 v CMP #TITLE_B_ON    ;比较是否为标题画面) N4 U1 M; C: R' R; @6 W
BEQ PPU_STAGE
  \6 z8 u9 M7 }7 _* q: URET:    ;恢复数据
9 K0 v) k  `* b% f6 ]  H PLA    ;恢复数据开始
7 s8 {! h6 a" L TAY) }" z; B' f, p/ d
PLA( C7 [1 d/ |+ t" L3 D/ A/ K
TAX
$ `/ H4 A/ V$ n& H! T- \ PLA    ;恢复数据结束
4 Z# Z: u3 h, M0 [' v. _3 N9 | RTS    ;返回( \+ B  q! w' b) b- L$ P" o
PPU_STAGE:    ;字符STAGE写入程序
( Q, _7 i6 r+ l) _, V+ L LDA #PPU_ADDR_H
/ Q9 K* `2 H; [9 Q2 j STA $2006    ;设置PPU字符写入高位地址6 f/ \8 R* W2 p( v: n
LDA #PPU_ADDR_L
% i6 B% s5 P" ` STA $2006    ;设置PPU字符写入低位地址
6 w4 Y) N! _6 N* {/ h8 F LDX #$00! U2 f4 M# C$ D* S0 a3 a( @* I3 d
PPU_STAGE_WROTE:    ;写入STAGE字模& Z; e, W8 k+ d" V
LDA STAGE_DATA,X
4 [# |0 |  ^0 Y$ n1 _0 t CMP #PPU_END    ;判断是否写入结束
) g) q+ B" M; }8 E1 s, S% _- V1 Y BEQ STAGE_CMP
& E% g4 x3 b! q: d. [6 \; { STA $2007; x' b" R' |" S& f* F8 [6 r6 r
INX
" O3 K9 w0 d9 M" q) t% \ BCC PPU_STAGE_WROTE; w: X+ V& \7 M
STAGE_CMP:    ;选关操作
! K% G! R  M( W  }: D' W LDA STAGE_TEMP
, d& R- F/ ^- `( l* ]4 T CMP #$FF    ;关卡数据初始化条件判断
, k" C! S  j" E* y+ N+ S BNE KEY_B$ E' i  o9 e* l  r4 x
LDA #$00
4 n( O' P" r/ V! T0 ] STA STAGE_TEMP    ;关卡数据初始化
7 h# K( i, t  d7 _KEY_B:    ;关卡减少6 Y# ~: P' ?2 |4 }
LDA KEY_ADDR
9 k7 J4 ?% F' {$ Y; z  m AND #BUTTON_DEC    ;按键B或左减关1 M+ G/ Z: B+ w: v
BEQ KEY_A- m" L: S5 K4 A/ V' }& Q
LDA #$FF* }8 q4 T' |2 q5 w1 r
STA TIME_LAY    ;重设标题延时
/ y: ^: i3 U4 H; p& D3 x LDA STAGE_TEMP  j3 z) W3 F* R6 W: h
CMP #$00    ;关卡比较
4 R# }, ?) O# d. X* B3 I; k- A BEQ KEY_A& {) g6 t/ p& L2 j5 h
DEC STAGE_TEMP   ;减关2 G6 O* G6 k' V) o( Q. ]7 b  I
JSR MUSIC    ;按键音效
- }, _6 b$ A' TKEY_A:    ;关卡增加
( i/ m$ _/ d8 A/ c( m+ | LDA KEY_ADDR% Y6 {8 i* M8 i& P' z( h- y4 M
AND #BUTTON_INC    ;按键A或右加关
* ]& f0 c7 T8 D0 ]* c, A* s BEQ PPU_NUM_WRITE; ?: X- s$ ~0 y7 G. B
LDA #$FF0 I; g9 o7 Y; Y: W, _: f
STA TIME_LAY    ;重设标题延时, r/ I# [" |: V6 F- y* m
LDA STAGE_TEMP, k, Q  Z/ L: Z1 w
CMP #STAGE_MAX    ;关卡比较/ U; e: c8 K* K7 M, k7 ^
BEQ PPU_NUM_WRITE
. f$ ^) E: R! J/ U INC STAGE_TEMP    ;加关5 E1 C) \/ T/ g
JSR MUSIC    ;按键音效
/ A+ d$ y; K* C2 jPPU_NUM_WRITE:    ;关卡数字写入地址5 n0 Y- b9 G+ B
LDA #PPU_ADDR_H, M- m# \7 g( v( S3 s
STA $2006    ;设置PPU数字写入高位地址! m' [! d: Q! t8 Q  H3 h' K3 L5 D
LDA #PPU_ADDR_L
9 r9 {" v; y6 L" g& Z4 l) z; ~ CLC
3 X, d4 g# Y! x9 c% U' Y8 f& I ADC #NUMBER_A
5 k1 u5 ^( a% |. H. _* D STA $2006    ;设置PPU字符写入低位地址
( n! R7 j* g3 }  v; t' {( N+ D  Y LDA STAGE_TEMP4 ^+ d; q, b# v8 h
TAX
& i4 h; l  G: \) w3 i8 _ LDA STAGE_D1,X    ;写入数字
, D4 m4 i0 z( X- q6 C' e  D0 }& x STA $2007
' F: J0 i4 B' B9 j5 J4 t$ z LDA #PPU_ADDR_H0 L' S7 N0 [+ f: {8 ~7 Z8 B
STA $2006    ;设置PPU数字写入高位地址
" }8 b- B2 e+ \* _ LDA #PPU_ADDR_L: ^8 l8 {4 t; n* _0 O
CLC0 d" q9 t9 o  @( X
ADC #NUMBER_B
& Q7 U  @# e5 _3 ]% X$ K STA $2006    ;设置PPU字符写入低位地址% d2 G3 s$ M: Q; Z; k$ J3 X/ N2 v
LDA STAGE_TEMP+ g' z& i& ^& ~) _
TAX
6 ?( _: `; c( b% U% h/ {2 o" `) I- N LDA STAGE_D2,X    ;写入数字( R" ]  j7 {- y0 S" K3 u
STA $20070 A& ~8 L# ~' |4 b; s  ~( p8 g* p
STAHE_WRITE:
. o9 R& ^6 p5 r& U LDA STAGE_TEMP) O, q) r  H1 `9 Z
STA $2D   ;初始关卡写入' t6 \5 z8 ^  M. z' N1 K1 H. |
PPU_RTS:    ;恢复数据
$ o' G- a5 z0 n6 W5 q: w PLA3 w  ~) r$ ]' p: n' P- Y
TAY" k' R) l6 a" a  J1 s: }1 Q1 r9 D
PLA
/ w( X1 w2 E0 z  Q0 J; |, T TAX
1 W8 }- J- L7 h! P; D9 ]1 [ PLA. f8 r; C9 S+ U% r( l7 {
RTS! x5 z* U. v) u
2 @6 t7 @7 {0 E; @# J& r
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据/ ^, R: s7 h- p) P0 M' r, w
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END. c* p2 @6 S% h* u) S+ X: K! _3 u' d

: c4 q: |; t& m1 V; P' tSTAGE_D1:   ;关卡数字) B4 r9 g0 a, W8 }' W
.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
# y$ Q. Z( J; Q. P) N) t* G5 P9 @+ G4 Y) Y1 ^1 N5 v/ N. b$ q
STAGE_D2:   ;场景数字& s3 r( o, W; B. r) |+ F
.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
# Q7 x/ ~) }7 Z5 L) i
1 j9 r: s) }/ `
0 a0 L5 k8 ?( I# DMUSIC:    ;按键音效! |# ^* O* _' i2 V) c
LDA #$3B    ;音乐号& k) m% W% z# @* w% p+ r' }
JSR $919E    ;系统音乐调用- ]( ^+ q, S9 j: b' e
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2363 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2024-12-21 04:16 , Processed in 1.054688 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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