EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
" n2 z, g0 M/ `2 X$ Q+ _/ Z;作者:FlameCyclone 2017.4.16 x  }  l4 X3 V5 s( S7 p8 g- A4 ]

) A8 F) t# I8 R" M2 h1 ?
. b* E9 _4 q6 s# a( b+ v;配置数据( K) C: U( I( D- F/ Y$ l
KEY_ADDR = $F8    ;按键地址
" |8 U- P& p. ~STAGE_TEMP = $6010    ;关卡临时地址
+ E9 @% }3 u1 w5 ]+ [" D+ O8 s2 A$ WSTAGE_MAX = $0E    ;最大关卡数/ x$ _6 p: A# U; u& p/ ?
TITLE_A = $20    ;标题条件A* s9 k) w7 p/ q: d5 {! G& Q
TITLE_A_ON = $02    ;标题条件A有效状态判定
4 [* ?" n6 X4 |7 J* hTITLE_B = $21    ;标题条件B
! R; u, m5 O' L6 vTITLE_B_ON = $03    ;标题条件B有效状态判定7 \3 A2 o' u' U0 f
PPU_END = $FF    ;PPU结束符' q1 |: H* c+ K5 V
TIME_LAY = $4A    ;标题显示延时地址5 y3 G. c: i! r, W2 C# S
BUTTON_DEC = $42    ;关卡减少按键
& g$ t" M( D$ T+ f3 z. wBUTTON_INC = $81    ;关卡增加按键3 @8 }) E2 D9 F' @  E- Y& `4 N- i0 C
NUMBER_A = $06    ;数字A距离STAGE偏移量1 S% v) @; p+ Z2 L
NUMBER_B = $08    ;数字B距离STAGE偏移量
; y8 f  F2 A1 O# o1 [6 z* DPPU_ADDR_H = $23    ;STAGE写入地址高位
3 Z+ G: H3 N, e$ x6 p# l$ e+ KPPU_ADDR_L = $8C    ;STAGE写入地址低位
1 }# R* b# ], m) J1 B* R9 F: n0 kCHAR_S = $A2    ;字符'S'5 e$ C8 g1 W2 Q' f% z9 Y9 Q
CHAR_T = $A3    ;字符'T'* C& y3 }7 R1 ?  C
CHAR_A = $90    ;字符'A') }& `3 X% j0 R6 r% Z) m
CHAR_G = $96    ;字符'G'
* [7 ~! s7 \" s+ P9 A/ yCHAR_E = $94    ;字符'E'
' _! \$ @% A7 z, A( v; @CHAR_SPA = $00    ;字符空格
6 k; J2 Y; c2 D3 a5 sCHAR_LIN = $AE    ;字符'-'
' a! q# F5 Q; lCHAR_O = $9E    ;字符'o') g8 F6 w6 Y. {+ B$ r$ f' ^
NUM_1 = $81    ;数字'1'
( c/ m, ]  g9 @& P$ w, c, PNUM_2 = $82    ;数字'2'+ w# U6 a5 S) k3 U* [+ a5 r4 G
NUM_3 = $83    ;数字'3'
$ H3 Y: _& z+ H# oNUM_4 = $84    ;数字'4'
2 S/ ^7 y; ~  Z' o$ O0 K8 NNUM_5 = $85    ;数字'5'
7 d( g6 l  x5 SNUM_6 = $86    ;数字'6'
* H- E  F+ [9 |1 eNUM_7 = $87    ;数字'7'
4 f: r, y9 k8 ^# BNUM_8 = $88    ;数字'8'4 t* X. X& _1 }/ n
NUM_9 = $89    ;数字'9'' \2 \0 d( T3 @$ H
NUM_0 = $80    ;数字'0'! i4 _& T) d3 w6 p2 G

* l; P% S0 \: ~ .ORG $F82A
/ H# s1 F" e5 p+ T1 ?3 S JSR $E700
  w; ]6 h7 O' B( z  J# ]
9 ], t3 a9 n" s$ d  w- o0 Q
: c3 `& }- _, y  \) p1 {% E2 F .ORG $E700" D# \$ e: F5 B. _6 V1 P
  
5 Z! X6 s  |& j4 q. h$ N* p STY $4014    ;补上覆盖的精灵写入指令0 @% f2 N% V% a
PROTECT_DATA:    ;数据保护
# N& |) p8 d6 f5 V PHA    ;数据保护开始* }0 v% F0 M& A1 x+ q: H) p
TXA: j& J1 S& U/ \& K+ z5 M
PHA/ d8 d* M* S6 T
TYA+ l  K6 \  B* R: A
PHA    ;数据保护结束' y8 u. z) W1 E8 T: {) g' T- [& ~. Q
LDA TITLE_A: x& c- i3 J! {9 Y
CMP #TITLE_A_ON    ;比较是否为标题画面
) n: g, p/ j8 H3 T4 @* p" m. l BNE RET
8 q+ v0 B0 c5 W7 o% h6 N) ] LDA TITLE_B2 T2 k4 S7 t0 I6 h8 T$ ?: I# K2 L7 p
CMP #TITLE_B_ON    ;比较是否为标题画面9 \5 N7 q2 u: k- |: W% w+ v* g* e
BEQ PPU_STAGE3 M  I, U) d; t* T, K/ i
RET:    ;恢复数据- k2 K1 ~2 T" |8 T, k& A
PLA    ;恢复数据开始
2 g. u' W; t. q% S. n( G! ` TAY4 p+ N0 b  u% q8 |9 b
PLA
* ?% m* f/ ~  f. {/ ?, S6 Z TAX' R9 f. n4 t2 b& u+ x
PLA    ;恢复数据结束
8 m) j. c/ I) b RTS    ;返回+ q! l1 G) {: H0 o
PPU_STAGE:    ;字符STAGE写入程序& \+ o$ o/ b2 A  {
LDA #PPU_ADDR_H 6 `3 \* x! {. I
STA $2006    ;设置PPU字符写入高位地址/ Y# D* e) }- a% Q/ A
LDA #PPU_ADDR_L
1 Z" I3 N# R4 c1 p0 G, y! J STA $2006    ;设置PPU字符写入低位地址
# U' S! h1 ?% J& W+ U+ x LDX #$00
4 M; o5 @) ?7 |' e# VPPU_STAGE_WROTE:    ;写入STAGE字模
- ]5 w) q0 k$ L) F$ E: O: c2 F6 n LDA STAGE_DATA,X2 n6 k, \( c1 W6 g  t! w( U& E
CMP #PPU_END    ;判断是否写入结束7 K& q5 v* W$ w7 Y  D- |- |. z
BEQ STAGE_CMP8 W* h8 O. L0 f! M- y
STA $20074 d8 c; T0 p* ^8 }" s
INX" |" s. D; C* u9 S' Z; A
BCC PPU_STAGE_WROTE
- b/ n* E9 |2 c2 @! X# M+ WSTAGE_CMP:    ;选关操作7 L, G1 d* Q/ F6 V; x- U9 D: ?) t
LDA STAGE_TEMP
2 O3 ^( [% ?& _. { CMP #$FF    ;关卡数据初始化条件判断) ?. D7 C3 @5 }/ ~3 b. K
BNE KEY_B
; p' r+ t2 o$ J3 N) R7 F( }- b, ~ LDA #$00: P  J0 i+ {; A5 W& Y
STA STAGE_TEMP    ;关卡数据初始化- |6 m) J! W' U0 F# z# c6 B
KEY_B:    ;关卡减少
  a- V( Q" n3 i0 x- b/ x" }. P LDA KEY_ADDR
1 R9 l3 P9 o! y0 o9 t; v" A- m3 j AND #BUTTON_DEC    ;按键B或左减关8 M: P+ d& g( v" [, P
BEQ KEY_A
$ N9 X4 R& x- O* M LDA #$FF
( ?5 A* D/ k% z STA TIME_LAY    ;重设标题延时
9 }5 z4 P3 l) W3 I1 O$ _ LDA STAGE_TEMP
7 F/ R1 e7 T; A+ [ CMP #$00    ;关卡比较
& [. q! s. ]. U% d* i BEQ KEY_A
8 G' k' e. v2 _. E* O DEC STAGE_TEMP   ;减关8 j% ~8 g0 c* S5 j! o, W/ P6 N
JSR MUSIC    ;按键音效
( f! ^& k) r& ~" u0 [' [KEY_A:    ;关卡增加: D6 C& e6 N: W& s# T* n
LDA KEY_ADDR
  p/ V! P( u3 l0 L4 z/ m1 w! ]; t, C AND #BUTTON_INC    ;按键A或右加关4 R/ |, K. W4 P/ ?
BEQ PPU_NUM_WRITE
9 {/ C( ?# t" n$ o2 A7 r LDA #$FF* r4 h9 |. `- [" o' Z, ~
STA TIME_LAY    ;重设标题延时
, P+ u9 Q) S! T5 _/ `. g: a; a LDA STAGE_TEMP
  y0 `" v$ z7 Y# c CMP #STAGE_MAX    ;关卡比较
! H! ^* A: H% X4 q7 T4 S* H7 W BEQ PPU_NUM_WRITE
! O$ F# @1 e5 B' [. N4 d2 L INC STAGE_TEMP    ;加关
0 q3 d8 o- O% Y8 p8 \1 o+ Y JSR MUSIC    ;按键音效* p- C! p" v9 r: a+ r# [! o
PPU_NUM_WRITE:    ;关卡数字写入地址5 Y( K$ S- l: A! [% q6 M- d. @5 P
LDA #PPU_ADDR_H, z* J8 ^. t6 _# P0 ?+ _4 W7 d3 M7 q
STA $2006    ;设置PPU数字写入高位地址8 n7 J' v' n% I- ^0 h3 P- G# @
LDA #PPU_ADDR_L
! q" g, ]5 m3 s0 B, Y$ K CLC( |+ {; ^! S4 p2 F: x5 c* f9 E
ADC #NUMBER_A" q8 k$ q# Z; ?1 c8 T  O0 V6 t
STA $2006    ;设置PPU字符写入低位地址/ F4 V" i* A2 b' X5 m- z% @2 b
LDA STAGE_TEMP- s. o; ?% ?6 |$ a; ^
TAX
& [' G  T( [" [; c LDA STAGE_D1,X    ;写入数字" b" t# E/ j  d
STA $2007
2 O7 r( r3 A+ Z4 ~* f* z/ X LDA #PPU_ADDR_H" S+ Q& ^3 Y- A9 ?; ]+ R6 ^6 Z
STA $2006    ;设置PPU数字写入高位地址5 _# @* a3 L' E; s7 L0 Z
LDA #PPU_ADDR_L4 \1 |  I6 z1 y, i
CLC" z( ?% q7 c# v8 Y; v9 u( j
ADC #NUMBER_B. u3 L( [' X% @1 o
STA $2006    ;设置PPU字符写入低位地址: C, k0 T8 J9 ^; A
LDA STAGE_TEMP- K% q# Y9 z* ?# |
TAX
& f0 u& i2 v" n LDA STAGE_D2,X    ;写入数字1 O4 w( C, O8 P1 C& }
STA $2007+ b% N' w/ k% g  d/ {2 C2 t
STAHE_WRITE:# U3 |- z$ c- f
LDA STAGE_TEMP
. M" Z+ f# h0 i+ i1 K5 f STA $2D   ;初始关卡写入
3 p% }4 Q! {  {6 }, T1 X4 u' FPPU_RTS:    ;恢复数据; @" W4 B, g2 R- S$ s, S$ A1 k
PLA" Q- ~- W5 {  M
TAY4 \+ f; T. ]) T6 d
PLA& H$ C# s, r2 }
TAX
  s. u  h3 O. e# P2 \( f7 P PLA7 e8 I; z( D% f- o3 {
RTS
) D! f7 A7 _- R- l
. j7 s: \1 x2 c0 |8 o0 v- sSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
* b* s! B# N& j/ Q9 a1 b .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END& Y0 b, w$ J9 V% J! [
, W, U5 t6 i5 `, j% H9 p9 E! n
STAGE_D1:   ;关卡数字
& L' ^/ b% o$ o& C/ { .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
6 S( z. z' ?( `$ ]7 y+ `
0 e; ~" N4 z6 r4 [2 ~! \8 ySTAGE_D2:   ;场景数字$ K& g; }9 S+ p9 C& H% m5 ]
.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
8 E; `, n. E! |! t& N. z
& N( d' u9 n# G! {6 n - Y, F+ j; f  d. E# q
MUSIC:    ;按键音效% q* q- m% e' c0 [8 A5 S/ p$ q1 _
LDA #$3B    ;音乐号
6 T( w& U( q1 h JSR $919E    ;系统音乐调用- s$ F0 K7 [0 Q" x1 [4 Z2 \" 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2642 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-10-29 22:47 , Processed in 1.073242 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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