EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]' H3 g& r7 H9 ~+ u0 ?, N; W' O
;作者:FlameCyclone 2017.4.12 i* J% C5 ~3 w

, t# i% I, C+ h) G% h1 |$ w% h8 ~1 \% ?. z4 u( {
;配置数据( n: G! N6 a; V
KEY_ADDR = $F8    ;按键地址
  i/ ?7 t' k% JSTAGE_TEMP = $6010    ;关卡临时地址
$ D; F1 ~1 w( U) k; o' W5 BSTAGE_MAX = $0E    ;最大关卡数' t% ?& O: u; X- j4 _
TITLE_A = $20    ;标题条件A) e0 _9 K2 f# j* I4 K* @4 s* L
TITLE_A_ON = $02    ;标题条件A有效状态判定
5 f3 C7 [% v6 o& n! `9 O# _TITLE_B = $21    ;标题条件B
( k3 w# _  E9 l3 q) ?' ^TITLE_B_ON = $03    ;标题条件B有效状态判定, q( s  X0 D$ m& h
PPU_END = $FF    ;PPU结束符
& s; t2 N; w- y7 K1 ]/ j  ?8 \TIME_LAY = $4A    ;标题显示延时地址! }! [+ A$ V8 t; K7 o% D
BUTTON_DEC = $42    ;关卡减少按键7 P: t6 c3 G( x- R- C$ k; p* F
BUTTON_INC = $81    ;关卡增加按键
3 ~& Y3 e$ z( _NUMBER_A = $06    ;数字A距离STAGE偏移量8 m) p) x% o5 z- @  J5 F* B
NUMBER_B = $08    ;数字B距离STAGE偏移量: @( K! j2 C0 W# \3 W
PPU_ADDR_H = $23    ;STAGE写入地址高位
% v3 z" {2 w( Z% ~: U5 FPPU_ADDR_L = $8C    ;STAGE写入地址低位
' {$ N/ [) _$ I& z3 x! m/ Q) |" M, bCHAR_S = $A2    ;字符'S'
" ~* x7 S: p9 Y3 m# c3 DCHAR_T = $A3    ;字符'T'
! x+ ]& q# H4 |3 hCHAR_A = $90    ;字符'A'
- k) U7 i0 ?1 e: YCHAR_G = $96    ;字符'G'& t& P3 k. N/ ^, s* w# W2 `
CHAR_E = $94    ;字符'E'
% e- b" r/ v9 UCHAR_SPA = $00    ;字符空格
7 d  \& O# r+ h- {5 X4 \2 m8 GCHAR_LIN = $AE    ;字符'-'/ ~" i9 a2 ~* c; u+ h+ F
CHAR_O = $9E    ;字符'o'
3 D& B" R; ^- rNUM_1 = $81    ;数字'1'
1 h) i5 V- ~3 LNUM_2 = $82    ;数字'2'
; N: }# L  t) p1 v( sNUM_3 = $83    ;数字'3'0 u) \& T$ u- @: N
NUM_4 = $84    ;数字'4'
& q: ^, W- t( n; U( `9 ?& q, w$ @NUM_5 = $85    ;数字'5'8 y8 o' t  `: y) F2 v
NUM_6 = $86    ;数字'6'' {$ @  L3 v- h* x
NUM_7 = $87    ;数字'7'
: b. i+ C' |( l& w* dNUM_8 = $88    ;数字'8'( G/ l- W" S/ Z
NUM_9 = $89    ;数字'9'# T2 t8 o/ y1 E  b8 f+ U# U
NUM_0 = $80    ;数字'0'% ^2 u; S3 r2 p1 ~+ {
! H$ V: R0 l( _* f5 F
.ORG $F82A1 t# |) E* J3 l  |' C% K/ |
JSR $E700
( s* P% r3 U3 ]$ ^& C5 ?
" t8 a9 y& ]# `9 n3 C; G
- p5 D% g! l; n3 i) V& z* o .ORG $E7003 y3 j& y) F% ]  [3 G  t
  
5 }# I4 t; I+ k8 X" q; B STY $4014    ;补上覆盖的精灵写入指令
' F4 \) F8 {' T+ sPROTECT_DATA:    ;数据保护" N# i$ X5 f- v, o/ M' h! |/ S
PHA    ;数据保护开始' s/ u9 d$ [* e5 v* h) i% |- p
TXA' D! l+ \( W# |6 i/ x4 U7 P1 b9 U) `: F
PHA
% B! {8 o; a# m$ r3 v( h. Q6 d0 G TYA' k1 W7 @; K& D) ^( H
PHA    ;数据保护结束6 t1 Q6 j9 h. w! ]+ @4 u
LDA TITLE_A4 `. i& i3 S+ b1 `9 }# K2 A
CMP #TITLE_A_ON    ;比较是否为标题画面; c0 M( U9 b/ I8 b7 M8 l! p
BNE RET
1 K' s, X6 E! w6 y  f3 w LDA TITLE_B
& ~- n; ^3 G: Y4 H# } CMP #TITLE_B_ON    ;比较是否为标题画面6 z' w0 w! f2 s2 R5 I( C
BEQ PPU_STAGE
9 \5 {$ @5 W9 m5 ]: p* ^- {# _RET:    ;恢复数据0 D5 F+ @& d) A: p5 t
PLA    ;恢复数据开始
9 o9 A4 b) x; a TAY
, s9 u0 I% b7 w8 ~! S PLA( e2 w" P  J# i7 v
TAX% X% ]% f% K" H+ I" Z) C9 d- R
PLA    ;恢复数据结束0 y; G! [( Z6 {& m& i: c) n
RTS    ;返回! h: K* F2 q5 _) U5 w; Q" }9 _
PPU_STAGE:    ;字符STAGE写入程序
3 l8 ]7 B, `6 q3 b3 k: d8 z6 Y LDA #PPU_ADDR_H
6 P* h! C. {7 U# T7 E, E STA $2006    ;设置PPU字符写入高位地址* y% k7 B* C; ?" a; j0 R  |
LDA #PPU_ADDR_L
: ?# Q0 S  }7 K8 ?# q; q, @! O STA $2006    ;设置PPU字符写入低位地址5 V0 S- K# h( L, v) X
LDX #$00
/ r9 k  x3 g2 ?9 [PPU_STAGE_WROTE:    ;写入STAGE字模/ y' p% M) g# u3 x8 k& f1 e
LDA STAGE_DATA,X  b/ H0 |2 q2 v' h4 I
CMP #PPU_END    ;判断是否写入结束4 M' \3 h# R3 u
BEQ STAGE_CMP
) ^$ }0 H& r; V3 B  L STA $2007
  C- C1 U0 t4 P3 p4 ]" z# Q; i INX
: v4 P% `# t; c$ W BCC PPU_STAGE_WROTE+ N* I3 l. d# `5 w/ X7 o" x& m
STAGE_CMP:    ;选关操作
/ u' @: n2 L! z6 {- y$ A LDA STAGE_TEMP
( K7 L: A; n- N5 m2 t! M6 o( j& ~ CMP #$FF    ;关卡数据初始化条件判断
7 K# h% a: g5 }5 V3 ?4 }: Y BNE KEY_B  ]' F* d  }3 v$ [
LDA #$00
" B5 Q6 b1 O' k' _' f; j STA STAGE_TEMP    ;关卡数据初始化
% [+ s, U' l  o  Q3 w; K: k' \  |KEY_B:    ;关卡减少
0 U2 g" d. s$ Q LDA KEY_ADDR% x/ T. L1 `. ~2 D5 X
AND #BUTTON_DEC    ;按键B或左减关! {% J+ w  c  k& j9 A" P( E0 @
BEQ KEY_A( {3 M& M, G( q
LDA #$FF
) M+ n" j  `* `! H STA TIME_LAY    ;重设标题延时6 w8 O) U; k* L' o+ o
LDA STAGE_TEMP+ }% l$ J9 {' r1 }+ M- o: V) Y- _
CMP #$00    ;关卡比较+ \; _9 m0 h8 q1 i4 M  O, ?6 P9 R
BEQ KEY_A! E! D" g: B$ _* @" ~
DEC STAGE_TEMP   ;减关
' a" u! G! w- X8 e JSR MUSIC    ;按键音效. y  U- T6 T  A5 p
KEY_A:    ;关卡增加2 R/ E  l: S# L6 R. D1 R
LDA KEY_ADDR
6 d) h3 l0 B. K0 R AND #BUTTON_INC    ;按键A或右加关$ g4 ~; z" z6 y2 \, Y
BEQ PPU_NUM_WRITE, X+ f+ G9 b/ W
LDA #$FF6 }6 B- B  z7 ~* W: j
STA TIME_LAY    ;重设标题延时
/ j1 k* K& `6 z+ F; M5 @. p LDA STAGE_TEMP
* i& ?) N$ g! F/ g( }( }* d CMP #STAGE_MAX    ;关卡比较: Z1 W$ L8 y4 a2 I
BEQ PPU_NUM_WRITE$ D# n# H" B- d; n$ O
INC STAGE_TEMP    ;加关
. d% I7 K8 M' v JSR MUSIC    ;按键音效3 a/ W& R5 R1 I) e) ]
PPU_NUM_WRITE:    ;关卡数字写入地址$ Z; f7 u+ r) W) P, G% P/ _
LDA #PPU_ADDR_H% Y. R/ D/ b# Z5 U- P' ^- z7 O& T
STA $2006    ;设置PPU数字写入高位地址
5 V4 }4 a  S" {4 Y( I  w, m' S% g8 [7 {; R LDA #PPU_ADDR_L( i% z/ [' _8 I0 `2 J, P
CLC- H( J; `3 l1 p5 m8 ~* p
ADC #NUMBER_A. Z( M8 c: Y( d' Q, m& ~
STA $2006    ;设置PPU字符写入低位地址' C. C" _6 H7 o, |! U, T$ j
LDA STAGE_TEMP' h9 Q. p  {' x% i8 A2 m/ F
TAX1 f. g0 P, v3 N; t5 o% T
LDA STAGE_D1,X    ;写入数字/ b  t, x" L& w- d( N" N$ @/ T
STA $2007
% s1 y) [: J# `1 g& s9 G7 n$ G" @8 j" K LDA #PPU_ADDR_H
- Y0 u' c0 v. @: ? STA $2006    ;设置PPU数字写入高位地址
& _7 w/ d4 p/ L* w$ h( i# |, E+ b LDA #PPU_ADDR_L3 m% e0 g0 h8 c; l! A5 Y: Q
CLC0 v+ M- H) S% ?2 X
ADC #NUMBER_B
2 D7 ~/ h. [6 c( m  T4 R, A! H STA $2006    ;设置PPU字符写入低位地址
9 S* }, ~5 Y+ p9 i LDA STAGE_TEMP
/ d* @* l  E2 A- Y" {4 m8 K TAX: }* ?& P' U& @% m
LDA STAGE_D2,X    ;写入数字
/ c# o8 q) b/ z STA $2007
( x5 w' X/ w3 W: h+ u+ G/ BSTAHE_WRITE:& f. |4 j" ?" l3 W+ E
LDA STAGE_TEMP
, g/ z: {1 ^8 v STA $2D   ;初始关卡写入
+ v+ P- }, ^) X& i" f- t; I# sPPU_RTS:    ;恢复数据3 n' ?$ l$ `0 o9 ^# W; `: L
PLA
1 n) Z: o0 w' J5 O TAY
# t. Z" J$ V4 M. L PLA$ b7 J# ?! r. n/ Y/ i' c0 ^9 M
TAX
& r- y" W1 `8 N- ]7 J4 a0 R PLA
$ O5 E  o  O8 z( ]( i7 L RTS7 s* D: ?3 Y0 K
& z. S- o# @% J, Z5 `' G
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
5 G. m+ _% E  a# x- Y .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END7 n+ Y; P; |3 i4 \9 ~% u

: }' q1 N# q. f( ~+ A7 M+ wSTAGE_D1:   ;关卡数字- b) f9 {2 v' T. w+ T: d& m: `6 E6 G$ m
.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
( F5 z9 B% A% N' w% P6 a+ r  E' q1 H( E8 y1 H4 x
STAGE_D2:   ;场景数字3 ?. D) H! G; |  ~4 V' \
.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 g% g5 |, X& k8 a: ?: u: H
, U) u5 V( t* g5 X; F
  k3 H) d7 D, ?4 m# aMUSIC:    ;按键音效
; }; C% ~+ u1 ^$ m9 z2 E5 B LDA #$3B    ;音乐号
) A4 r* |2 Q. l/ D JSR $919E    ;系统音乐调用
5 L; n3 V, O, h4 T! ` 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2699 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-12-25 21:33 , Processed in 1.080078 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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