EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
% C8 G5 [; ]. `/ \; |% k;作者:FlameCyclone 2017.4.1
. l- `0 T' s9 v2 f4 F. }3 I) o( x
, z# I. ?2 r$ X( m. n
- l/ H5 F# J# H  M7 ^6 U;配置数据* j- G; H! [; i6 E9 w: Q7 n% @
KEY_ADDR = $F8    ;按键地址' r1 V3 p/ m# H3 ]/ S( S7 u5 M
STAGE_TEMP = $6010    ;关卡临时地址! u  \( W1 x/ l* u( R/ Z
STAGE_MAX = $0E    ;最大关卡数
6 O, J! M4 m% n* l( KTITLE_A = $20    ;标题条件A
$ A* o: ~4 T6 t' X$ KTITLE_A_ON = $02    ;标题条件A有效状态判定2 u; g' e8 k& b/ o1 Q
TITLE_B = $21    ;标题条件B8 o: f1 x! S4 N( f4 U& e6 M- ]
TITLE_B_ON = $03    ;标题条件B有效状态判定6 }# D2 N, F2 m4 |' l; D9 p
PPU_END = $FF    ;PPU结束符/ a+ u& K( J8 A6 g+ V2 w1 S
TIME_LAY = $4A    ;标题显示延时地址
, d5 u* a) k3 C1 m8 sBUTTON_DEC = $42    ;关卡减少按键
; L" X5 B) Q& D* kBUTTON_INC = $81    ;关卡增加按键
+ j2 E7 ], b- U4 |  t" R0 Q# A9 HNUMBER_A = $06    ;数字A距离STAGE偏移量, N9 @* h# `2 `
NUMBER_B = $08    ;数字B距离STAGE偏移量9 x1 C: L: d9 P. t6 F7 Z/ @
PPU_ADDR_H = $23    ;STAGE写入地址高位
: w4 W1 `+ n0 U3 ^PPU_ADDR_L = $8C    ;STAGE写入地址低位
* F# v1 y7 O' sCHAR_S = $A2    ;字符'S', Z3 D# E9 E) n$ ^( f3 s( P
CHAR_T = $A3    ;字符'T'
6 b2 ?! z* Y! e5 V8 V; W4 UCHAR_A = $90    ;字符'A'! D) s/ R# k& Y9 O, [
CHAR_G = $96    ;字符'G'# P1 `, E" V, ~
CHAR_E = $94    ;字符'E': h% e5 M. O9 L
CHAR_SPA = $00    ;字符空格
3 e: e0 t- f! S" DCHAR_LIN = $AE    ;字符'-'
, e+ E" ~, C! ]( s9 NCHAR_O = $9E    ;字符'o'
: A) b) W( _- |NUM_1 = $81    ;数字'1'6 ~9 I5 v# O; W7 _, ~
NUM_2 = $82    ;数字'2'; q, o1 F' x' J
NUM_3 = $83    ;数字'3'
. J, C: E: d! C. g4 A7 XNUM_4 = $84    ;数字'4'+ b- q' w& o9 H" h/ V5 g
NUM_5 = $85    ;数字'5'
& e, q" j( `: q9 eNUM_6 = $86    ;数字'6'
5 m0 @% Y9 e8 ?% e' ~/ ?NUM_7 = $87    ;数字'7'
- Z) c/ |5 j1 ^, ZNUM_8 = $88    ;数字'8') q' ~# Y; ?3 e
NUM_9 = $89    ;数字'9'$ h' I% Z) L4 m4 A9 g2 M! Z+ X  ~
NUM_0 = $80    ;数字'0'
0 ~  |% v1 o: k; B" a' Z0 @
4 }. M/ T. x/ E8 T .ORG $F82A' u/ X; i: [' W! E, m& n5 n
JSR $E700
% f5 O( ?  u3 b9 s
: @  l+ c, y( t* y5 x' P1 D: m3 A  o
, ^# Q* F/ b. v4 G6 q .ORG $E700
& u+ n# R( R. B: h' n- w  
8 Z& J6 k5 {  q6 P5 L STY $4014    ;补上覆盖的精灵写入指令4 W' Q0 ?& J* U6 z$ [, Y9 l
PROTECT_DATA:    ;数据保护" c$ y. d, w1 D* i0 N# L! d
PHA    ;数据保护开始, x' y! ^8 ^( V2 l( r9 T9 }
TXA
2 L$ y- {: T0 R PHA" V" d: T. K+ ^  @( |, q, w3 o
TYA
2 z4 O  _9 a: u+ ` PHA    ;数据保护结束
. I, v( q5 K" `" K* s LDA TITLE_A" `- H# h& a8 s" B$ O
CMP #TITLE_A_ON    ;比较是否为标题画面
! d3 z  p- z0 c! I+ }2 X BNE RET
. w9 I1 l; O3 p3 q LDA TITLE_B- K5 |% H. F' g, C' c- K+ G; u
CMP #TITLE_B_ON    ;比较是否为标题画面1 y" W! t8 q; j+ d' j' T" a+ K: O
BEQ PPU_STAGE1 J4 W/ l0 c. f+ o+ ~0 Q
RET:    ;恢复数据, d, B. R# n9 I
PLA    ;恢复数据开始/ Y2 b$ B/ z5 o- j' A8 N% G+ o! l
TAY; D2 X3 G  {& [. h
PLA( T8 y4 \6 O  Y! M  b
TAX
6 a9 P3 j, T  p: P6 O9 w* m( b2 O: B PLA    ;恢复数据结束& a, L( q; u" N- j. [% \2 q
RTS    ;返回: Y. G( b0 v. v) v& u; I
PPU_STAGE:    ;字符STAGE写入程序
1 d" c& A5 W* ]7 s. k- W4 i3 Y LDA #PPU_ADDR_H
( S4 j, N4 b+ U2 H9 j- a STA $2006    ;设置PPU字符写入高位地址2 g2 |: p; M* b* p
LDA #PPU_ADDR_L
6 ^8 T& _6 g0 w: |) D STA $2006    ;设置PPU字符写入低位地址4 c# S9 P( ?8 Y# X) h7 m
LDX #$00
5 J2 ], D8 x. O' D* ?8 ?3 ZPPU_STAGE_WROTE:    ;写入STAGE字模
  \0 [5 X! Z$ v LDA STAGE_DATA,X
/ P4 m. g& _8 k& ^/ L CMP #PPU_END    ;判断是否写入结束. d$ D  _# L1 k& K8 N, K
BEQ STAGE_CMP( \( z- c5 _) c( ^+ B9 `
STA $2007
( G! B- u8 @. a8 a5 h! s INX
# M- S  b8 @" B1 e! }" J BCC PPU_STAGE_WROTE& b" I: d( t: t
STAGE_CMP:    ;选关操作+ |9 y; d% m& U8 i- W0 a
LDA STAGE_TEMP: O7 c* N4 e9 p' [! Q! j/ {
CMP #$FF    ;关卡数据初始化条件判断4 B2 s9 ~9 {8 z& e0 z' u
BNE KEY_B
4 ~2 v# K. b* J, t0 u& m LDA #$00
  C) U+ l  o5 a9 S/ W STA STAGE_TEMP    ;关卡数据初始化' }: W$ s/ r; ?
KEY_B:    ;关卡减少4 N- J0 E) B2 m
LDA KEY_ADDR
4 }+ U* O) P2 Q AND #BUTTON_DEC    ;按键B或左减关
% A$ x& t5 o8 B0 d8 ? BEQ KEY_A
( o7 ~1 j$ X  M  a. d7 \8 A LDA #$FF
9 j1 D3 P2 d6 v6 H! a" |$ m  i STA TIME_LAY    ;重设标题延时; W$ }) R- \+ k6 G
LDA STAGE_TEMP. {- z- A/ I. O  ^- I" W
CMP #$00    ;关卡比较8 I8 |3 N1 w/ q1 [, l  i# L
BEQ KEY_A
+ P; u% \! x. j2 U( r* S: c DEC STAGE_TEMP   ;减关, b8 z) c0 I" q) I" U$ p
JSR MUSIC    ;按键音效
5 u6 c6 `' K! b" b) G6 R& }; _KEY_A:    ;关卡增加
; E# G9 h6 B# D$ A  u% j1 u LDA KEY_ADDR
7 d5 x6 i9 S5 R, @: h AND #BUTTON_INC    ;按键A或右加关+ N9 `& V3 {# V7 k) ]: n
BEQ PPU_NUM_WRITE0 [0 a% E  T) I" _( }' i) S" ^
LDA #$FF3 Y; [  J" W( G
STA TIME_LAY    ;重设标题延时
  \/ L' s# u. Q) T4 u3 s! u% z, i* Z  i LDA STAGE_TEMP( f" p7 w! \- v
CMP #STAGE_MAX    ;关卡比较
8 c) L$ d' V$ P4 e( M BEQ PPU_NUM_WRITE
8 Y) A# B4 C4 v- F- U& g' { INC STAGE_TEMP    ;加关: n' u" x! D8 P$ `& T, l( q2 [
JSR MUSIC    ;按键音效3 g( R. a" Y% S6 l
PPU_NUM_WRITE:    ;关卡数字写入地址
' r2 H4 q8 I5 D& @* ]* e LDA #PPU_ADDR_H
( l5 p: e* [) @. i, W STA $2006    ;设置PPU数字写入高位地址4 v) m" t" ^9 O: q0 d% x8 x
LDA #PPU_ADDR_L  f2 m- j" |7 }2 J: `* h3 P
CLC
0 Z, Y( t4 X3 S1 X- h; i ADC #NUMBER_A
+ u' W0 `2 \/ Z6 f STA $2006    ;设置PPU字符写入低位地址' G7 Z& x* W1 j" k
LDA STAGE_TEMP8 U7 u6 [# F- Y2 R( V# w& B7 ]
TAX
. @8 D2 j- g! j5 g LDA STAGE_D1,X    ;写入数字
! s0 }$ f1 D( _' \8 _, @' ~ STA $2007& ]8 |' n5 X3 E& Q$ y9 X
LDA #PPU_ADDR_H- I; \+ s5 j' `1 S/ ^2 N
STA $2006    ;设置PPU数字写入高位地址
! H; h' }% \) ?4 ~+ A. v LDA #PPU_ADDR_L2 h- ~- j! G8 t4 M9 I
CLC, _7 ?9 a1 e0 W: ]2 Z$ Z! y8 Z
ADC #NUMBER_B
4 u1 Y9 ?3 V, [3 J* ` STA $2006    ;设置PPU字符写入低位地址
. l  @/ g: A6 _2 `$ t LDA STAGE_TEMP
0 p  L; J3 c1 R. w TAX1 t. L- R3 B# s' X; r' F7 k, G* P2 m
LDA STAGE_D2,X    ;写入数字: h7 @: ~) ?0 r  S- O5 A$ S, e* ~! Q
STA $2007& z+ M+ t* S6 m( B
STAHE_WRITE:
7 C/ _3 C  z0 C" B; U% i6 m. q3 v( J LDA STAGE_TEMP0 l! c: o3 L4 o
STA $2D   ;初始关卡写入) Q# x. z6 H; o- d) K# [. {
PPU_RTS:    ;恢复数据1 {6 F7 t: M# C3 t; |9 ?5 I5 U' c
PLA6 i" t* o) N+ b* _# ~( ?2 U- r$ u
TAY/ w: g, x4 h' M; U& o: @* ^- ?
PLA. T) H) X. k; D# H% x% }6 N$ j
TAX2 }" H' u0 d% i3 M1 X# d
PLA
; ]: t" o' b9 H. x1 V- A& ? RTS: o' |4 V/ z; x

. G0 u$ J3 |3 r9 A9 J) m  M, `STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
" i. g/ I$ ^' t2 H .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
+ o, {1 g8 w9 F5 |9 N2 {& D7 U  ]. ]+ w0 k  L" h
STAGE_D1:   ;关卡数字
6 ]3 R8 ]$ K( B  d" S9 Y .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
# p! v- W4 W/ e, O3 U( h
  V+ N6 |4 q: \$ [- K+ F0 NSTAGE_D2:   ;场景数字
1 I0 a9 c7 F0 ] .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 v9 E, \7 m+ W* ?" I
0 `' w" {/ u3 w3 x

: G4 C% C9 `2 L* e& l. m; lMUSIC:    ;按键音效+ s! Q- x; J* @- T  `4 `! p
LDA #$3B    ;音乐号) i7 u# Q4 X% _* s+ A* I
JSR $919E    ;系统音乐调用8 ~4 n) s' h; c
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2308 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2024-9-24 02:24 , Processed in 1.070313 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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