EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
$ z: L) g5 m; N( \' N;作者:FlameCyclone 2017.4.12 R% M  k$ E! Z2 y1 J5 [

9 u8 r/ ^2 C$ L9 A" q6 a1 L" ^5 E" q5 u  q' o
;配置数据# z+ W9 h6 F! o* T. n( N
KEY_ADDR = $F8    ;按键地址
7 M/ a: f& y4 v0 {STAGE_TEMP = $6010    ;关卡临时地址5 X/ B1 b" s% q2 B7 A6 _
STAGE_MAX = $0E    ;最大关卡数0 R  v; p1 V* e' {; L: y
TITLE_A = $20    ;标题条件A
  h6 ]4 T* X3 {$ y4 e$ i7 vTITLE_A_ON = $02    ;标题条件A有效状态判定; A$ l6 g  D$ }
TITLE_B = $21    ;标题条件B
+ h4 G0 ?7 d) A8 u# dTITLE_B_ON = $03    ;标题条件B有效状态判定
1 q. l' w7 i+ u* o" u. _: gPPU_END = $FF    ;PPU结束符
4 C2 b0 r0 {% ITIME_LAY = $4A    ;标题显示延时地址# G  W, j8 Z) f7 ^
BUTTON_DEC = $42    ;关卡减少按键/ R* @% h7 \; M. N
BUTTON_INC = $81    ;关卡增加按键8 U/ T  x' {; e0 U$ Y' J) w
NUMBER_A = $06    ;数字A距离STAGE偏移量
/ ^& T5 ]( M- c% M0 n/ |NUMBER_B = $08    ;数字B距离STAGE偏移量- \4 E- G, j; q/ w( R
PPU_ADDR_H = $23    ;STAGE写入地址高位
* x0 |- r. R0 Q$ J& w: IPPU_ADDR_L = $8C    ;STAGE写入地址低位  r* |1 `" ?6 \5 p
CHAR_S = $A2    ;字符'S'
$ s$ Q( E3 S: q) O( E+ P8 z1 cCHAR_T = $A3    ;字符'T'
6 C9 v4 g4 T' f5 TCHAR_A = $90    ;字符'A'4 x3 {5 C: }  Z, e& K
CHAR_G = $96    ;字符'G'* s1 U3 X: v; T/ u, u6 M' E
CHAR_E = $94    ;字符'E'
7 f- ?3 Z; @' K2 _: ~: z6 B) ECHAR_SPA = $00    ;字符空格+ v: p3 M2 ]4 M1 |( \7 j
CHAR_LIN = $AE    ;字符'-'
. V% e' Q. u, H3 {7 d: m5 q  [" w" H. RCHAR_O = $9E    ;字符'o'6 C  g# d) @. C* @$ Y  U0 v
NUM_1 = $81    ;数字'1'
! R' x7 N% f6 t7 pNUM_2 = $82    ;数字'2'- m7 g! ~( ~; T- M: P1 p
NUM_3 = $83    ;数字'3'- u0 y2 X& D. _- D1 ?
NUM_4 = $84    ;数字'4'. m) I% B% o# }6 n  N
NUM_5 = $85    ;数字'5'! R# r4 J- S1 k  y- ^1 v
NUM_6 = $86    ;数字'6'9 b. @9 m8 [/ S2 a
NUM_7 = $87    ;数字'7'
8 J' X0 l# {$ P8 rNUM_8 = $88    ;数字'8'
8 P: \/ }  T+ H6 e, T4 YNUM_9 = $89    ;数字'9'; f5 z. e! Z% ]% a: ^3 `
NUM_0 = $80    ;数字'0'
4 d  o2 u( y8 N
8 @( T) P/ G7 g) n .ORG $F82A0 ^; a5 y- M, ~2 ?/ k% L( _
JSR $E7007 v6 o( U) G5 {. ~# n. w) s
* @6 A+ X% b6 v' _

) y; m; [) z% C7 _+ V9 S& T% Y .ORG $E700
( J: U, `* }& p4 V8 ~, x2 `' T3 ]8 [  " u; @3 z% H9 k- b( u
STY $4014    ;补上覆盖的精灵写入指令, A! V) F# Y, ?( h  x0 z
PROTECT_DATA:    ;数据保护' D' z  z& s$ e8 H( B
PHA    ;数据保护开始
5 W; m/ V6 G( j+ W5 {+ S* j- y TXA
1 O" B+ a1 K, _1 I( R" z7 L PHA5 ]0 b1 N9 W$ c& B. B; J
TYA
- `( a, w9 {0 \+ M9 d0 }7 q PHA    ;数据保护结束, `2 K9 \" S" `
LDA TITLE_A" M; N6 V/ {6 u0 G
CMP #TITLE_A_ON    ;比较是否为标题画面% A# j% l& y$ W2 s: C9 S/ a. O! j
BNE RET
4 E# R; p# }3 t7 V: t LDA TITLE_B1 X( G) \/ w  W+ X+ v& U: F
CMP #TITLE_B_ON    ;比较是否为标题画面
6 L( q/ {! \7 g" F" a BEQ PPU_STAGE
% L7 r* C" c" Q' ORET:    ;恢复数据
" U9 S4 A" I6 x/ H' s3 [9 M PLA    ;恢复数据开始
1 b) j8 r1 ]% o, A TAY8 X% Z9 d6 r6 F8 m2 w
PLA
1 P% q: j+ O$ A; E4 h TAX
: }# o' I# v0 x* y3 b* o* r7 C8 I PLA    ;恢复数据结束
  H0 L( I! F$ T2 C' J' C RTS    ;返回
# D$ R9 f, n+ b8 \PPU_STAGE:    ;字符STAGE写入程序7 d' J) J2 _/ M. K- W
LDA #PPU_ADDR_H
3 J$ @" [$ e4 q STA $2006    ;设置PPU字符写入高位地址
" j6 V! l  c5 S( |3 C  B& F9 C LDA #PPU_ADDR_L
& G" C3 r6 V2 O5 ^6 A! \ STA $2006    ;设置PPU字符写入低位地址0 J0 [9 \( _% X
LDX #$00
0 Z' G* ]! ^6 G- l3 {" ~: I& SPPU_STAGE_WROTE:    ;写入STAGE字模4 n' B' F& ~& X
LDA STAGE_DATA,X
- d& w) c& B- `% ?" f: t3 H; }9 h CMP #PPU_END    ;判断是否写入结束
6 @8 u* {% g9 `- J6 s# A6 t: R BEQ STAGE_CMP4 ^8 m$ O7 `/ z7 d8 [
STA $20077 c9 T; i7 s, P! s. G' B
INX
( r4 f) _6 `: ^0 Y" x BCC PPU_STAGE_WROTE! u5 s, U# z6 y% I2 U9 b! c7 r
STAGE_CMP:    ;选关操作
9 `, Q0 L" h9 h% d4 f; B1 G LDA STAGE_TEMP
- `& J" @  a+ [ CMP #$FF    ;关卡数据初始化条件判断' n( i, M7 N/ r* W$ j: }8 \
BNE KEY_B+ ]% l% B: L& r( U8 x8 z$ _8 v
LDA #$00# v8 \5 P2 c- ?
STA STAGE_TEMP    ;关卡数据初始化4 l! p: {3 m- `( R" p
KEY_B:    ;关卡减少
+ f) [5 h7 V4 W. ]' ~: N LDA KEY_ADDR' x# ^+ L- Z  r' y
AND #BUTTON_DEC    ;按键B或左减关
; o* K4 l3 Y0 W* `( C BEQ KEY_A
7 x! Y, C# w- u) u  Y LDA #$FF- ^/ Y7 P- D$ [; t3 q9 }  `
STA TIME_LAY    ;重设标题延时
/ \  h& P4 h" S6 m8 B  T! |7 Z, g LDA STAGE_TEMP
7 z; C5 q+ f# r3 J4 b CMP #$00    ;关卡比较8 T4 G( Y+ P$ k/ ?4 ?, B. D2 p
BEQ KEY_A
' a& C$ T7 T+ i DEC STAGE_TEMP   ;减关* m  i$ E9 y5 Y+ E
JSR MUSIC    ;按键音效
1 z' o1 h* D. Y" V7 X. i$ iKEY_A:    ;关卡增加4 n/ ^# Y, x% n. i! K
LDA KEY_ADDR
; h" D& F9 W5 w9 d( d$ C0 {- B AND #BUTTON_INC    ;按键A或右加关: a, Y! u( |- Q2 K% t, A! l
BEQ PPU_NUM_WRITE) t: M" j8 C2 f* l. g; g
LDA #$FF
, c' x: d1 v, b STA TIME_LAY    ;重设标题延时# I7 |' s* Z! _8 b) Y; C
LDA STAGE_TEMP
* r/ m. K4 r6 I8 c) @7 R, N+ Z CMP #STAGE_MAX    ;关卡比较
. W  N0 E; J* W1 u" m. q2 _ BEQ PPU_NUM_WRITE( b4 ~( c3 x" `" l2 g  [
INC STAGE_TEMP    ;加关
; h' N. P+ Z- [( N JSR MUSIC    ;按键音效
, x0 k1 n7 T1 `0 _" n& lPPU_NUM_WRITE:    ;关卡数字写入地址0 K. \2 U+ E& T2 Q" W
LDA #PPU_ADDR_H
/ k& t! C& x' f) V STA $2006    ;设置PPU数字写入高位地址
$ t* ^4 T5 h" M" h. e+ o  I3 ]* d LDA #PPU_ADDR_L
. O! h3 h3 E- j' I- O CLC
3 w: P  X* b$ B7 F) J2 ? ADC #NUMBER_A2 K! X6 P- n; Q" @: \2 ~
STA $2006    ;设置PPU字符写入低位地址& [( j; U. H: S% q; R, F1 e
LDA STAGE_TEMP8 ?/ y7 T' Q: x- k- K
TAX
: c/ e/ ?2 b$ U/ a$ _4 K LDA STAGE_D1,X    ;写入数字" W. ]2 K+ ]5 x
STA $2007+ \1 ]& K7 {2 n. v) b+ {% W& m
LDA #PPU_ADDR_H0 d6 F7 }1 U7 f4 U
STA $2006    ;设置PPU数字写入高位地址
% W, S9 P) Y, B# \ LDA #PPU_ADDR_L
$ m1 f" z: ?7 N1 A! q! y  `0 S CLC* l9 |8 b' d, n* H
ADC #NUMBER_B0 k% ^9 h: t8 e5 p
STA $2006    ;设置PPU字符写入低位地址
6 z. ^7 l% z, I5 @ LDA STAGE_TEMP
# S' d1 ?& |* Q3 S TAX
  P' b4 ?7 O4 m3 B/ R/ |% j: k LDA STAGE_D2,X    ;写入数字
" ~9 O" e3 H% |4 B STA $20074 r" i0 w+ S9 i6 H8 j; `
STAHE_WRITE:% V- R( t# w4 w0 r8 g
LDA STAGE_TEMP
; s. X7 i/ T! x* `& w" T STA $2D   ;初始关卡写入  C5 K4 o! x. t6 Z! {
PPU_RTS:    ;恢复数据
2 W4 s8 `3 B6 M) i& | PLA
) }( H8 x& W! U; p% G6 ], Q9 l TAY
* s3 x! S, W4 Z9 A PLA6 p1 ^8 W# D. f% \$ {# ]
TAX! S* D5 C% N3 Y3 L% f
PLA
2 p; |  z- U$ R9 ^$ Y% h% f RTS
( ]  p8 M( p9 X7 f! M1 Q . L8 [0 Q3 ~; o6 Y5 h7 M+ q
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据2 N( ~3 l* v  Q, x4 r3 d# S
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
5 Q7 u' P' |% q3 Z6 W( Q" k# `6 p& h. J& Y' u: U7 H$ ~1 A. w! i
STAGE_D1:   ;关卡数字
/ ^0 }% H5 B7 o% @/ S .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+ r' y5 w/ M: o  }  W) Y

8 \/ W" |$ j4 x3 G7 ?) zSTAGE_D2:   ;场景数字: I0 u: D) ]) X7 A/ w5 p
.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_39 ]5 I( C  @9 I! q/ ?( Y3 d

  J7 k' ]1 Q7 M: v; _. Q% ?! O' u & \( ~& Y0 D, R1 ?% E( o$ ?, h& [
MUSIC:    ;按键音效: h8 M; x$ A  r9 J6 ]/ n; ^
LDA #$3B    ;音乐号9 M8 Z* @; v0 L$ N. k9 Q
JSR $919E    ;系统音乐调用8 |5 S+ b' N, `0 p8 |
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2622 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-10-7 01:14 , Processed in 1.108398 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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