EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
# c! U2 E% ^9 n;作者:FlameCyclone 2017.4.1* t* q5 ~; M' j* J: R, }; P
. K- k" ?- Q* q8 P  v

2 L9 p" ^( y% g1 }1 X! x7 w# X;配置数据
" Z: u+ K& B3 c( r7 C6 fKEY_ADDR = $F8    ;按键地址
- C( `  E- ^4 ^; T  _STAGE_TEMP = $6010    ;关卡临时地址4 T, i6 V) {8 f. N1 x& l7 Z* T
STAGE_MAX = $0E    ;最大关卡数
& B9 V# f0 J5 ^, v( ~: dTITLE_A = $20    ;标题条件A
9 E* F) F( h! v7 ]; s% a$ F, F/ pTITLE_A_ON = $02    ;标题条件A有效状态判定
! _; D, B" E2 l  ~3 ATITLE_B = $21    ;标题条件B7 h2 c7 M. y% o
TITLE_B_ON = $03    ;标题条件B有效状态判定
4 h7 u/ |* J5 g$ F% l# NPPU_END = $FF    ;PPU结束符
3 y' w1 ?+ _, ~5 r  ]! R4 OTIME_LAY = $4A    ;标题显示延时地址9 q* f( X# ]7 C, x$ j- d; c
BUTTON_DEC = $42    ;关卡减少按键
. F" P5 A  ^5 _' Z8 QBUTTON_INC = $81    ;关卡增加按键
: B- N( @) x2 `7 _. P+ N" tNUMBER_A = $06    ;数字A距离STAGE偏移量
  k7 W" C! Q" \& YNUMBER_B = $08    ;数字B距离STAGE偏移量
: Y2 w8 [/ ?0 X$ U4 PPPU_ADDR_H = $23    ;STAGE写入地址高位3 D: g9 w; T1 h& v: W7 g! ]5 P; @8 _
PPU_ADDR_L = $8C    ;STAGE写入地址低位' B( Q; `( Z5 h' z
CHAR_S = $A2    ;字符'S'+ H# J0 X) ]* q
CHAR_T = $A3    ;字符'T'
* e( J3 x& E* A$ FCHAR_A = $90    ;字符'A'
7 v$ B2 n1 {2 q8 v7 `CHAR_G = $96    ;字符'G'
4 t$ x" o  g- H  u  \7 T3 wCHAR_E = $94    ;字符'E'
) Z3 V4 O; C% ]$ q' E$ s7 oCHAR_SPA = $00    ;字符空格
$ ?8 ?5 z! a- U' nCHAR_LIN = $AE    ;字符'-': \8 R( M; d# Q
CHAR_O = $9E    ;字符'o'
1 t3 |7 L3 b7 E3 h, g8 ]* S1 s: PNUM_1 = $81    ;数字'1'& A% Z1 `- ?" ~5 [9 T2 X9 x9 b( p
NUM_2 = $82    ;数字'2'
5 O; \1 G" L# o/ j1 x8 NNUM_3 = $83    ;数字'3'9 I) _9 W* }& E1 U9 d0 |0 p9 f0 h
NUM_4 = $84    ;数字'4'- Z. \7 ?/ A, m: H# i9 f4 S
NUM_5 = $85    ;数字'5'
2 G: q8 [# r8 f8 ~) JNUM_6 = $86    ;数字'6'; \' i! I& ?' b
NUM_7 = $87    ;数字'7'
7 W0 K% {& Y. ^: B, R) R, l: ^NUM_8 = $88    ;数字'8'
, X, `; i/ ]  q; r6 g8 v' PNUM_9 = $89    ;数字'9'8 l1 `% W: b9 P7 ~0 T7 `$ s
NUM_0 = $80    ;数字'0'
$ S) k1 u% e" y; l  W
6 m, w( q# N. h0 f+ R( f4 n .ORG $F82A
0 V) E0 P9 _, _& I( @# | JSR $E700! e% L* I' u3 C$ v2 [0 `
9 Q3 j! D% h1 L: ?* w1 `

/ M4 z  K" a' ]4 W% e: B5 f .ORG $E700
$ w6 [0 i+ _9 E# i  
  S" J7 m7 p  s/ N" K' M& k) G STY $4014    ;补上覆盖的精灵写入指令
- X1 k' \' `7 B3 t4 I. lPROTECT_DATA:    ;数据保护
1 c: w: y5 Y8 N" C0 s! L$ e PHA    ;数据保护开始
$ k- `- V1 t; `' Z& |" D TXA
0 K+ [7 j) L6 J* k$ E: i PHA
, v3 L8 M+ O" Q/ A/ a TYA/ P' M4 l. F$ e$ G
PHA    ;数据保护结束
6 x1 \- m. b" S" H LDA TITLE_A
1 x. @" G* u( K; h" n3 G CMP #TITLE_A_ON    ;比较是否为标题画面
/ D4 e4 Y8 V% {. w/ v. L! R* d BNE RET( S/ Q" e4 {+ \% e" }: b
LDA TITLE_B
( Y' `) j6 Y  o CMP #TITLE_B_ON    ;比较是否为标题画面
1 M# V/ N# V* ~* q BEQ PPU_STAGE: K) S+ z1 f6 t% U( w9 G
RET:    ;恢复数据* w. ^. l* u* I5 q& e
PLA    ;恢复数据开始
8 N8 A( |3 L1 `8 S TAY7 j2 ^7 w* N1 ~
PLA; ~- N* V8 m  h8 j3 r3 E
TAX- e$ d8 M  U0 m" s
PLA    ;恢复数据结束( @. F, P7 h. Y7 ^
RTS    ;返回
1 ^' w$ ?2 c" Q: c) W+ t/ h2 zPPU_STAGE:    ;字符STAGE写入程序
) v2 W8 @* v. M% d5 Z* s) A LDA #PPU_ADDR_H
8 d* q9 V0 S9 f8 ?$ O% H STA $2006    ;设置PPU字符写入高位地址# H* e) H1 |& |8 ]' y
LDA #PPU_ADDR_L
& S. H5 j! t3 Z5 T/ I: p' q; s% w STA $2006    ;设置PPU字符写入低位地址
/ w3 Z9 u" K/ z. w8 ^* j8 ^ LDX #$00
! T, [& ], i1 T2 N: Y1 mPPU_STAGE_WROTE:    ;写入STAGE字模( ]% X% d7 T( Y& O; T
LDA STAGE_DATA,X
7 r2 O8 r/ D% U3 P CMP #PPU_END    ;判断是否写入结束+ `0 G/ n! W; G' R
BEQ STAGE_CMP7 F. N5 C  t8 d# p; x2 l$ x  x, ?, e0 P9 y
STA $2007
" k# x7 L( d! [& ]- m) X" j5 Q  B INX8 P: G. ^; D; {) z5 w0 {3 Y; s
BCC PPU_STAGE_WROTE
9 P& ]' k! c6 ~: S$ f$ J$ z" Y0 wSTAGE_CMP:    ;选关操作5 g4 Q& u/ @8 K6 a0 f
LDA STAGE_TEMP1 ^6 O! J! C# |3 \0 G  ~
CMP #$FF    ;关卡数据初始化条件判断( u1 g4 }: k( T8 R! v
BNE KEY_B
( _% D2 g8 J$ F; z$ K" D" |' C! ` LDA #$00
! P+ \  b2 t3 o5 ?  {2 n STA STAGE_TEMP    ;关卡数据初始化
; R- ?' A& Y9 n4 G) D+ iKEY_B:    ;关卡减少
5 t% k& w- Y  O LDA KEY_ADDR
/ h& K# {0 F4 O9 c  T/ a+ O AND #BUTTON_DEC    ;按键B或左减关
5 }+ h: w8 B) q( U* v5 c, S0 |+ S; L, F BEQ KEY_A# H( O2 A. E, s+ C; {6 R( C1 C, q- H
LDA #$FF) _1 x$ K1 c  ~/ A- C
STA TIME_LAY    ;重设标题延时
) T$ |5 b( g" S5 c. A) S1 |9 N LDA STAGE_TEMP8 R( n( q' C2 O- \1 g" \3 ^% z/ z1 u
CMP #$00    ;关卡比较
# ~: [3 L- S; L BEQ KEY_A
1 v5 v$ F% {! e DEC STAGE_TEMP   ;减关$ {) y* A/ e' z' Y* r
JSR MUSIC    ;按键音效
2 q% ?' G0 ~$ rKEY_A:    ;关卡增加
+ g6 V. y7 G. ?; J: `; v- U LDA KEY_ADDR
: n1 r% [1 @% s! J  c2 o  |0 y AND #BUTTON_INC    ;按键A或右加关# D: F; }1 i; x" A9 H
BEQ PPU_NUM_WRITE
, D' }# R( K3 [$ ~* Q- P$ _7 L LDA #$FF- L3 _: l( v4 g# F" w
STA TIME_LAY    ;重设标题延时( ]  Y  S8 g7 H; T
LDA STAGE_TEMP1 @& ?7 p0 [6 o: M4 \3 l  U: `
CMP #STAGE_MAX    ;关卡比较% o- d3 g  m6 \9 `# n- l
BEQ PPU_NUM_WRITE
- `! ~: f1 k7 e$ o2 }- x: K- H3 } INC STAGE_TEMP    ;加关
+ b/ R2 q2 C6 w# n; Y JSR MUSIC    ;按键音效
1 T* ]+ ^- g% h% n. t( f! h3 SPPU_NUM_WRITE:    ;关卡数字写入地址- G9 \0 h1 d; E0 m' C
LDA #PPU_ADDR_H8 I, N" u9 f" ~! ]) I( F9 E
STA $2006    ;设置PPU数字写入高位地址, o8 f% x: _! a$ y* Q
LDA #PPU_ADDR_L
* L1 C0 {1 W2 n) o' ^: r8 S CLC; _8 \! n" e3 e. @8 E- N3 P
ADC #NUMBER_A7 v. j4 G% Y- P4 t, ~/ L
STA $2006    ;设置PPU字符写入低位地址
) y$ J6 I+ N6 p5 q* {- s. r/ L LDA STAGE_TEMP/ U5 r, P; w8 E
TAX
2 w) U0 b) E+ e# S+ k5 v, D LDA STAGE_D1,X    ;写入数字  d) V/ [  e- z% X# T7 y
STA $2007
) I$ Z' E6 I* \. G LDA #PPU_ADDR_H
) a5 y; G: R8 y; |' q STA $2006    ;设置PPU数字写入高位地址& q3 Q+ S2 r" f% m/ V2 E+ O
LDA #PPU_ADDR_L
% H1 H& p$ @: R% p# b CLC; m7 l. ^. x$ E
ADC #NUMBER_B9 q( D7 T; a1 M& o4 \- B$ x6 ]9 L
STA $2006    ;设置PPU字符写入低位地址
# ^- Q  V& s% I% O LDA STAGE_TEMP
8 B: v( a; s" | TAX
. H* D0 q* A. D/ u7 {, q LDA STAGE_D2,X    ;写入数字7 b- `' z7 h. C' E$ x( g$ U
STA $2007
. o8 I. G/ W, b4 OSTAHE_WRITE:
+ r6 p7 }1 W" i7 ^' G! E- Q LDA STAGE_TEMP3 \% w+ M" F& e3 ~
STA $2D   ;初始关卡写入; {7 B4 F( @( f/ |. L
PPU_RTS:    ;恢复数据
' o# m4 o" `5 `/ S9 d! V- ] PLA
; o: D) U# f4 n. x" b$ y TAY% I* c" u% ^" S0 [' S. j( h
PLA
8 s1 Y  [/ E+ q. E TAX
7 E+ @4 T. w; c0 Y PLA
" r) I0 w( F) x$ O: ^: c5 k+ ~' x RTS" g. K% j' o+ w
" B# L! O' B, O& |/ i& K9 \2 D
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据) c7 d4 E. \5 m& S7 l  }
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END) W9 \+ E# p& [; F
% d, l! J5 k4 V
STAGE_D1:   ;关卡数字
0 h( E1 y- N, G3 M7 F* \7 D .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- z5 h6 b6 t) E' I- f, _
% D6 L6 \$ X6 Z
STAGE_D2:   ;场景数字, o/ V* ?! `& g/ g3 ~  a
.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
% ?. ]% X# Z7 p" t5 _1 ~
8 |  g' O4 e# w; x0 i
8 T+ w- W1 D' {' u5 `8 }MUSIC:    ;按键音效
$ K; R1 F, O* v, J! T9 b' p LDA #$3B    ;音乐号! W2 @1 u5 f8 |# [6 I& b
JSR $919E    ;系统音乐调用
! u8 Y" I8 ^; ]: V 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2431 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-3-13 07:17 , Processed in 1.092773 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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