EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
: x/ e) C2 B5 J. v;作者:FlameCyclone 2017.4.1
, C& g( }; V5 z1 h; V, Y) H9 m, Z  o# C* E- [9 h
6 w6 J5 I5 l, x6 Q3 Q4 v
;配置数据2 x( W5 Y" t2 Z5 g. y
KEY_ADDR = $F8    ;按键地址8 O3 {9 [7 p+ v6 ?3 v. p
STAGE_TEMP = $6010    ;关卡临时地址
' w9 ?$ C5 X  G! l8 j1 d* E- L) i- R& ESTAGE_MAX = $0E    ;最大关卡数4 L" E! `# L% _: S( p
TITLE_A = $20    ;标题条件A
, q" A6 q- y* E& K1 R9 pTITLE_A_ON = $02    ;标题条件A有效状态判定
" h3 I& K3 s+ I7 q, H$ zTITLE_B = $21    ;标题条件B
0 ^5 p- R1 @- [) k) N3 qTITLE_B_ON = $03    ;标题条件B有效状态判定
2 `! A4 I9 v2 K: C' PPPU_END = $FF    ;PPU结束符
5 s* x1 i% J3 r5 s, r2 j/ bTIME_LAY = $4A    ;标题显示延时地址
5 j) M" s# H  A" a2 H# h, x/ EBUTTON_DEC = $42    ;关卡减少按键
1 ?" s% L$ b& G3 o/ T& Z9 DBUTTON_INC = $81    ;关卡增加按键
7 N" V5 H" s& R5 J1 J5 bNUMBER_A = $06    ;数字A距离STAGE偏移量
, Y- Y- ]# e7 ?! Z$ E! [& PNUMBER_B = $08    ;数字B距离STAGE偏移量' P: |8 s# s0 |# Y% t- }! O; z
PPU_ADDR_H = $23    ;STAGE写入地址高位5 k* R$ i" Q, e. n( A; ?
PPU_ADDR_L = $8C    ;STAGE写入地址低位$ U6 ^" D2 ?& s( h
CHAR_S = $A2    ;字符'S'. q2 g' @( t* T+ E/ x/ d5 x2 p' j
CHAR_T = $A3    ;字符'T'
' ?9 d$ r& V0 H& i5 g) _) KCHAR_A = $90    ;字符'A'
/ _1 t5 G. u8 \& p5 A. }CHAR_G = $96    ;字符'G'
6 {, F" q' _4 T# l- @CHAR_E = $94    ;字符'E'
6 t: {; [+ M6 m" Y9 G0 MCHAR_SPA = $00    ;字符空格3 u% b! U* _$ }1 ~6 w
CHAR_LIN = $AE    ;字符'-'
, a6 i3 X: ]+ F8 D4 VCHAR_O = $9E    ;字符'o'
! g, H! d/ @0 u4 F1 kNUM_1 = $81    ;数字'1'
7 `$ S; I* W7 J$ h. tNUM_2 = $82    ;数字'2'" ^, F" N) M; w, w2 f
NUM_3 = $83    ;数字'3'
) N# C# S3 X3 }% v1 }" ONUM_4 = $84    ;数字'4'% p. u/ I" Z1 f4 x9 B8 F
NUM_5 = $85    ;数字'5'
( k2 @: l: z; b6 j1 n, y) oNUM_6 = $86    ;数字'6'1 Q- a: P3 H& a9 ~  c# Q4 u% A
NUM_7 = $87    ;数字'7'  g8 L& A/ x( w: y
NUM_8 = $88    ;数字'8'
4 V& r, b, u. C$ Y6 h8 lNUM_9 = $89    ;数字'9'
( w& f) Z3 p6 LNUM_0 = $80    ;数字'0'; k" Z5 }* |$ j

. F) E6 F. m+ b3 n .ORG $F82A
0 B2 C+ M+ [( C5 K- v& ~" E' \ JSR $E700/ M: ^# p( p& v, v

  B$ m5 S" Z6 ~- [# K , m  ?( Y5 o2 \% E2 Q/ T, @
.ORG $E700
! r( T( C4 f/ ?$ Y4 E& _  
/ v( k5 j, ^: _/ i; ~ STY $4014    ;补上覆盖的精灵写入指令
% H* o# }7 D  H8 x4 ]" m5 RPROTECT_DATA:    ;数据保护
3 X1 Y. ~7 E$ o& a+ n. K: h PHA    ;数据保护开始
% o3 x( l" {' i( V TXA
- q: H& r! W- o, f" j PHA
0 L8 s9 S& `$ u4 p' K  ?$ Q TYA
' P" ?  J: n6 G% ~. n1 x8 U PHA    ;数据保护结束
/ z1 O. i, C' |% C* r# W4 Q# r" N LDA TITLE_A
- l( t+ l1 ]: ^+ P" o CMP #TITLE_A_ON    ;比较是否为标题画面
4 ]5 W: O) s) s3 ` BNE RET
+ L$ f) ^3 n& W* r+ N* y# _ LDA TITLE_B
0 i" @4 x, T+ K9 i. p3 n CMP #TITLE_B_ON    ;比较是否为标题画面5 Y8 `5 n9 V' P% ~( P" \
BEQ PPU_STAGE
6 ~( k' B3 {$ M, F, rRET:    ;恢复数据
: b8 B4 _" r+ X9 u/ r6 n. O PLA    ;恢复数据开始
# ]; ~) i, W  M1 Y$ z7 n! d TAY. h4 d" U6 k" G6 y( p4 }8 d" p- O
PLA
! R0 `" @% \: K0 B TAX
7 j! C) k1 k1 o+ r; k8 ?* w% n* I+ L PLA    ;恢复数据结束4 q0 U  i8 x% U1 T' ^* y
RTS    ;返回/ L4 |0 A, _' K6 ^, y9 z! p" [& ^
PPU_STAGE:    ;字符STAGE写入程序
7 D3 O% {/ q! ^7 N5 X LDA #PPU_ADDR_H / X9 D2 J3 z* c5 M8 b
STA $2006    ;设置PPU字符写入高位地址: d& F* z. ?) f2 @8 _2 k8 H
LDA #PPU_ADDR_L/ T+ ?) z4 F; D% l  E2 I3 ^
STA $2006    ;设置PPU字符写入低位地址0 k1 J2 z' n; F; ]' o. }6 z# n
LDX #$001 I1 g; u! I7 p5 m4 N* q
PPU_STAGE_WROTE:    ;写入STAGE字模
$ D3 ?% \: G" i! Q2 s% a LDA STAGE_DATA,X
- G% z" y7 w4 a7 j CMP #PPU_END    ;判断是否写入结束- V: p" x3 o' \% v
BEQ STAGE_CMP
9 y  ?' p7 A' I3 W5 o: k STA $2007
$ K& P& [+ L/ Z* g6 K, \1 A INX; W" s( ^, ]! `' n
BCC PPU_STAGE_WROTE* |5 }0 f: `& h4 I" k0 u& e) Y
STAGE_CMP:    ;选关操作4 {8 m& ~' ~; X! w3 w: _% l
LDA STAGE_TEMP
5 P& k. O4 D) w; o% p CMP #$FF    ;关卡数据初始化条件判断
( i. ]8 M  {) S) }! F0 T BNE KEY_B# \1 D; q2 Q% {1 O+ U# v
LDA #$00- z4 r, ?5 X/ I6 h$ f* f
STA STAGE_TEMP    ;关卡数据初始化  M) q- v$ ^( ?  G8 @; W2 m
KEY_B:    ;关卡减少. O* K7 [* T% K' t2 S# G6 N( i
LDA KEY_ADDR7 L- V+ f2 T7 ^; @7 V
AND #BUTTON_DEC    ;按键B或左减关
/ T( y7 }  U" Q9 s. z. h/ K BEQ KEY_A
( T" ?0 Z, a5 {! n LDA #$FF0 h" e3 X% k/ @0 K! e1 j, ?& S
STA TIME_LAY    ;重设标题延时2 I4 r5 N. T2 i; l- D; ?
LDA STAGE_TEMP
8 {+ G1 q. e5 W. g6 T CMP #$00    ;关卡比较
) ^* y$ c) x7 E: r+ Y BEQ KEY_A
& l4 W0 t4 D2 X8 @ DEC STAGE_TEMP   ;减关, D4 E3 r5 m8 c7 D/ s" c! A  w
JSR MUSIC    ;按键音效2 H) R0 d) d! d3 I# C2 ^6 M
KEY_A:    ;关卡增加" K% G( Q1 p6 i: s' t; B
LDA KEY_ADDR
9 u" f; |$ p% Q/ f% ]  R8 b. U AND #BUTTON_INC    ;按键A或右加关
. @' [+ v" _9 t BEQ PPU_NUM_WRITE/ L  x/ t/ I/ H* \
LDA #$FF
( I+ w* s% n$ g+ c STA TIME_LAY    ;重设标题延时+ i, n7 }/ Y! k" n# |4 I' `
LDA STAGE_TEMP0 a$ A8 \; X5 \8 E! k* Y
CMP #STAGE_MAX    ;关卡比较
% [1 n( s9 D( ^  t" D3 o# H; e" l) Q: [ BEQ PPU_NUM_WRITE, X5 k% G$ c4 f7 J  t; G; T
INC STAGE_TEMP    ;加关
7 [0 T1 Q: e5 v: _5 C JSR MUSIC    ;按键音效8 _6 {* i: X( g1 v4 K7 e
PPU_NUM_WRITE:    ;关卡数字写入地址' v. |  z* Z* e3 k9 |" ?
LDA #PPU_ADDR_H% b" N/ c2 g" T
STA $2006    ;设置PPU数字写入高位地址
* {) b0 B& }2 T/ ^# a: e LDA #PPU_ADDR_L7 Y$ [1 t4 L& W5 w  O+ T
CLC. U& g( P, P/ h. c
ADC #NUMBER_A" ~9 a) W  v4 {- x( H* T; [
STA $2006    ;设置PPU字符写入低位地址, I- d7 N6 P3 Y. \
LDA STAGE_TEMP
, z! B; o4 |7 a$ f9 ~ TAX
0 t  s  d* K3 ]4 Q2 E/ }; m LDA STAGE_D1,X    ;写入数字
8 F+ v2 h/ S8 v1 Q1 i STA $2007% G6 X" G5 s( J* W8 r
LDA #PPU_ADDR_H$ l+ V0 |# V/ w3 R: v- Z8 d
STA $2006    ;设置PPU数字写入高位地址1 q5 I! a* Z9 v9 k- }1 Q. A
LDA #PPU_ADDR_L
. l' h" y) Y. O8 b CLC6 F& s  N% ?9 C* J2 d
ADC #NUMBER_B
1 x. w+ [0 F$ t STA $2006    ;设置PPU字符写入低位地址
! \  s8 B2 t7 ~* P LDA STAGE_TEMP
6 D2 M7 F- y% r) H) I! K" t# Z' S5 o" A TAX9 ]/ n. k# {7 X- ?0 x. Q
LDA STAGE_D2,X    ;写入数字
7 N7 c6 Y& C* s! J STA $20073 d% M- A& d: D" g
STAHE_WRITE:2 j! J$ @1 p' `/ }
LDA STAGE_TEMP% Z) w9 M: s) A" n
STA $2D   ;初始关卡写入5 v8 \/ Z& s5 D7 e9 r' H
PPU_RTS:    ;恢复数据
9 X/ w2 [+ n$ G, Q. t+ R' Y PLA# B3 }! V, `7 z8 x) B
TAY  i9 L6 e) Q7 x8 m2 x
PLA# G8 G0 ^& a& i9 [' ~
TAX+ z1 l; z% x" \0 b% c; D
PLA
% G2 ~  D; K3 ? RTS* a' a% Q% ~# Q$ p3 b0 p; G
/ ~+ X+ t3 o. h6 b* E0 \6 T
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
3 U: `+ m- N4 {; _ .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END( w; I9 U/ Z) {5 ~- w
8 h% Y8 E7 T) \3 f+ \1 s/ k
STAGE_D1:   ;关卡数字
, i+ P9 ^4 `1 w9 x7 C0 Q! @/ s4 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
9 H# R& ]" H" N8 a" I7 }% J5 R% R7 b+ A$ `/ G
STAGE_D2:   ;场景数字. ~* |  s8 j/ j9 U& 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
1 X5 a' b: j8 F( U! J" c$ i8 l) r - M# r" `9 X7 r0 x( C
' ?% W1 X5 q5 T! I
MUSIC:    ;按键音效
# D2 Y9 _1 f6 Z3 N LDA #$3B    ;音乐号- l/ c! h  D) X) R4 a
JSR $919E    ;系统音乐调用
. v$ p) G8 J0 d9 ^5 I# F 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2606 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-9-19 00:50 , Processed in 1.099609 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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