EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]( c( ~( I& d* h2 P, f9 N1 v, w: d1 I
;作者:FlameCyclone 2017.4.19 [% h" o1 _! g$ ]3 p
, }5 H! l1 Z9 [* ~) e" {; `# h

7 O" A9 o# |$ I+ a8 g# b) D;配置数据& u# h6 x' c/ y2 n+ k
KEY_ADDR = $F8    ;按键地址
' @# {/ @5 s% K" kSTAGE_TEMP = $6010    ;关卡临时地址
' X0 R4 J( P; o" X0 f) qSTAGE_MAX = $0E    ;最大关卡数
* `1 q$ l  r+ C7 l( JTITLE_A = $20    ;标题条件A% t/ J( [8 e- Q1 J
TITLE_A_ON = $02    ;标题条件A有效状态判定
+ w* R8 a0 B/ J4 M( b, ATITLE_B = $21    ;标题条件B5 L4 O5 {* k! Q: P6 K7 Q+ H
TITLE_B_ON = $03    ;标题条件B有效状态判定. t9 u- V% N+ T% ]8 W
PPU_END = $FF    ;PPU结束符  e. u7 K, }$ U, Q
TIME_LAY = $4A    ;标题显示延时地址! I- _4 A' V, {8 a, b& l
BUTTON_DEC = $42    ;关卡减少按键6 C: b! a' {# A: B! G
BUTTON_INC = $81    ;关卡增加按键) A! R8 H, A% t- s( S$ S- ^+ M3 t+ P
NUMBER_A = $06    ;数字A距离STAGE偏移量- o1 V; P- b; v% T% @+ U, i: s
NUMBER_B = $08    ;数字B距离STAGE偏移量
+ J7 I: u; F! ^PPU_ADDR_H = $23    ;STAGE写入地址高位
. U2 M2 q" X" R0 T0 {, \' zPPU_ADDR_L = $8C    ;STAGE写入地址低位
1 f) q8 J0 R: }. h1 W$ `3 _' eCHAR_S = $A2    ;字符'S'
! ^2 \$ @9 {4 @' Z/ c7 ]CHAR_T = $A3    ;字符'T'* e. X# O" M" j, s
CHAR_A = $90    ;字符'A'" I) i& ?5 ]( \8 o, Y% a
CHAR_G = $96    ;字符'G'( D6 L9 y" f$ A/ c/ S
CHAR_E = $94    ;字符'E'
7 ]7 I7 C- }7 P+ d. J$ k) O. ]CHAR_SPA = $00    ;字符空格
, N0 z& v: n+ C: Q* {. b5 o7 _CHAR_LIN = $AE    ;字符'-'
! _0 y1 ]* m0 pCHAR_O = $9E    ;字符'o'
8 c" Y: }) q( z/ M9 o4 n! SNUM_1 = $81    ;数字'1'
& I  c# s1 o1 P6 Y  h8 YNUM_2 = $82    ;数字'2'/ S& r1 Z, Z/ r8 m
NUM_3 = $83    ;数字'3'+ k0 W* {6 Q, U' z. H
NUM_4 = $84    ;数字'4'
3 d0 b5 O) @# P7 }; SNUM_5 = $85    ;数字'5'
# B* {4 x, u& gNUM_6 = $86    ;数字'6'
, b" C4 {, c4 G. ~, E) N% p5 D+ cNUM_7 = $87    ;数字'7'" ^2 [6 e& j$ Y' I4 z4 q
NUM_8 = $88    ;数字'8'1 t  A; L, F* @7 x) L
NUM_9 = $89    ;数字'9'+ e' O- w  p. d0 q( m4 z# E4 M
NUM_0 = $80    ;数字'0'6 s. M/ `0 H) M/ v9 v/ L
: P7 N/ i% @' M& {  _4 }/ v
.ORG $F82A
) m6 l( d0 f  m1 f- U' y2 } JSR $E700! r9 o9 P0 b' J% h0 `% J, M
7 X& z% H/ ]! r2 |" a* G+ p3 G1 t( A
& A; p8 T9 T- v4 s
.ORG $E700
% D$ P6 \# K) l% e+ H9 I# ~3 I- D* u  6 `. o8 A+ w# i, A/ d- e
STY $4014    ;补上覆盖的精灵写入指令
0 n2 m2 d$ T- ]  Q  |PROTECT_DATA:    ;数据保护
1 L; w# b2 l" Z( c- |) l! S8 Z PHA    ;数据保护开始" g/ x1 w% i3 j+ ?# g4 Y
TXA
! n3 R' p$ ~8 g: _ PHA4 c% F6 y/ C1 q6 m9 I! p7 o: u+ F
TYA7 S# I/ x4 `  ?& v% j# S
PHA    ;数据保护结束: C% l6 f( Q. s* D$ [
LDA TITLE_A* w4 R' ]: L$ L: g2 @
CMP #TITLE_A_ON    ;比较是否为标题画面3 o5 D) ?5 v* _; k# F. E
BNE RET3 ?# P/ N; f/ W
LDA TITLE_B+ r! N- X# i2 o+ \
CMP #TITLE_B_ON    ;比较是否为标题画面, z. W6 ]" T+ B. [6 z
BEQ PPU_STAGE7 C" x6 |& i0 N- ^' J( v3 ]) T
RET:    ;恢复数据
  A- |! }) L7 d* P' \( a PLA    ;恢复数据开始
( r2 K6 ^% `6 G3 ~8 V9 u+ z TAY
7 x8 a3 h' X0 U6 z/ ~ PLA
6 j" n4 H& P/ N4 _ TAX
' z* l. M  Y+ N PLA    ;恢复数据结束
4 j1 o  P7 |) K0 D RTS    ;返回
& S& z. j: U) T- G2 K* GPPU_STAGE:    ;字符STAGE写入程序6 H. l- W) k: K. T
LDA #PPU_ADDR_H 2 W& I$ B4 f8 ^$ @& l1 V/ s2 \  p" P8 R
STA $2006    ;设置PPU字符写入高位地址
& m* d4 k3 N7 P. { LDA #PPU_ADDR_L/ {0 p) B  B0 [  x( P2 d; [+ B
STA $2006    ;设置PPU字符写入低位地址
( {3 Z% @# `* b! l1 S1 S  W LDX #$00
. K$ B( X+ ^- Q: _9 Y" uPPU_STAGE_WROTE:    ;写入STAGE字模; c- r7 ]  M0 W6 ]1 H8 x
LDA STAGE_DATA,X! a, J* Y8 w1 B- r% ]" v
CMP #PPU_END    ;判断是否写入结束6 X* r' P) ]) G2 r( a4 w/ \
BEQ STAGE_CMP( v# d/ F4 J2 y  H# ^
STA $2007
* b6 i5 ~5 n, \0 t! {0 t INX
& o; U: X; }9 r. }( O BCC PPU_STAGE_WROTE
+ ~( Q+ L1 W3 L; ~! s0 c& sSTAGE_CMP:    ;选关操作
* u' o' }9 |( W8 e% T LDA STAGE_TEMP4 E. j1 ]7 i$ T, `
CMP #$FF    ;关卡数据初始化条件判断1 v: |! n+ V' y% ~% l* H8 V2 e
BNE KEY_B
, x  w0 d7 U4 V  _ LDA #$00' |4 v# I+ ]0 l3 i4 V& P
STA STAGE_TEMP    ;关卡数据初始化9 }' \3 k4 \! o/ }
KEY_B:    ;关卡减少
  R( u+ C7 N2 P$ V, e LDA KEY_ADDR
6 e& U6 H5 L3 s2 ~" L& X( Q  n4 m AND #BUTTON_DEC    ;按键B或左减关5 ]1 w- r5 x  C& F2 J, i, X# `
BEQ KEY_A
* W1 k" u6 t: M4 f5 s. g LDA #$FF
2 Y$ M% h9 I6 T% e% p: N1 a STA TIME_LAY    ;重设标题延时
% ]) [  \8 B0 Q3 a5 H LDA STAGE_TEMP
; K8 E: O! \" J2 I+ M- @ CMP #$00    ;关卡比较+ g3 q; t# E4 y7 d3 S9 @7 t
BEQ KEY_A
1 E4 H# m: p5 ?8 M, k+ i' ` DEC STAGE_TEMP   ;减关" ?# W8 F" d/ F
JSR MUSIC    ;按键音效
/ z% V, d+ j6 S$ i! L3 `( |2 t/ hKEY_A:    ;关卡增加: C2 x" I, k  h6 F, p- ~' L0 {
LDA KEY_ADDR
; Z6 Q- h+ e/ K# n AND #BUTTON_INC    ;按键A或右加关
4 v( ~! H+ a( c- S1 \) \ BEQ PPU_NUM_WRITE: ^$ n) Q% S; |  c! j8 ]$ p
LDA #$FF
: @) X1 S7 P. h2 R' N STA TIME_LAY    ;重设标题延时% f8 f9 d' B1 @0 u: w
LDA STAGE_TEMP# j8 F4 S, N" G% b/ K4 j* V
CMP #STAGE_MAX    ;关卡比较( o! t' Z  o3 U# ]0 X. S
BEQ PPU_NUM_WRITE
; n& J0 J$ n" h8 p/ S* [6 \ INC STAGE_TEMP    ;加关( R1 e7 s' s/ o
JSR MUSIC    ;按键音效
1 |* }+ O6 O5 M8 F8 b9 G9 dPPU_NUM_WRITE:    ;关卡数字写入地址0 o+ O6 L2 m: u3 J1 x
LDA #PPU_ADDR_H
$ a4 G- x/ H* y. z7 [) Z) I0 _/ ~ STA $2006    ;设置PPU数字写入高位地址
3 Q: O/ Q2 G0 a$ T LDA #PPU_ADDR_L8 v' p8 _! G# v# @/ D1 F8 h: F
CLC  h+ [# B* C6 `9 Q( G2 D- c. ~  d
ADC #NUMBER_A' h0 O3 s' o! B
STA $2006    ;设置PPU字符写入低位地址
+ @+ G' T" t- @7 A- y LDA STAGE_TEMP6 j, d8 n. B3 o$ M% _
TAX/ h( ?( Y+ Y- A# x4 U3 I
LDA STAGE_D1,X    ;写入数字+ y$ Q* H1 ~, u7 g! `7 [
STA $2007
. E$ F  E$ n3 p( p1 S; G LDA #PPU_ADDR_H1 G1 q7 Y- j7 [3 `" Y% b8 q8 R
STA $2006    ;设置PPU数字写入高位地址
; u$ a; j1 \; ^: F LDA #PPU_ADDR_L
! C5 `- T9 C. i( ^ CLC
. A/ v) B. S5 `5 G ADC #NUMBER_B' j9 ?% s0 \8 S1 ]' h0 m5 G
STA $2006    ;设置PPU字符写入低位地址
) n' w2 a5 n5 \& V! j LDA STAGE_TEMP4 E# a* X- g2 ^# R9 G% [. m
TAX/ M+ Q$ h8 Z' S3 ], H2 O1 n* _
LDA STAGE_D2,X    ;写入数字  {1 d, U) j; ~5 K! _3 p+ s
STA $2007/ @9 S( Q( s8 ]8 f: x
STAHE_WRITE:! }; u4 e4 Z$ h1 e% d
LDA STAGE_TEMP) x0 K  t; a$ N8 r) \5 {/ @- }! |
STA $2D   ;初始关卡写入
4 S* }4 g8 |% S% |8 `8 m. q) wPPU_RTS:    ;恢复数据! K) d  h: R- m8 ~3 N
PLA* o9 j0 d; D$ {1 M% Y5 r) [
TAY0 s) y" `7 F' t/ {& q2 A
PLA$ H( j0 Q5 x% j2 ~% z# E
TAX
& r/ t, d. L5 S! Y6 r) l PLA
0 v2 T7 I1 C- t+ Z RTS
+ y, J3 |' a& |& r 5 k3 M; ?+ d9 t
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据9 A8 q8 S1 |  V$ n! L" I) L; }
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
( O; v9 T% p2 o) t% n. U
6 H6 E+ P) N9 c7 k' s4 c3 \- gSTAGE_D1:   ;关卡数字- S4 S( E5 d- F! Y* m; U& v
.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_83 T, J9 N' r0 ^* o6 `

9 k9 U- e/ ^3 T7 M% \$ u8 I1 X- @! \STAGE_D2:   ;场景数字9 k; Y7 N) z# t
.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
! e$ b0 v( T; q. ], ?0 F9 t 4 H$ [9 j7 ^% i

) |3 ^+ C& K, M5 _  Y! DMUSIC:    ;按键音效
) v' _9 S( [2 d; u' Z! C LDA #$3B    ;音乐号
; ]# E7 Y5 i6 i JSR $919E    ;系统音乐调用' [7 C" l  Z$ T. K( w. a# |; _
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2469 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-4-23 05:11 , Processed in 1.112304 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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