EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
' |4 C% {" p% e;作者:FlameCyclone 2017.4.1% {; C/ n! y+ v* N0 w

* M; j1 |" m+ F! d/ E0 R
+ ~$ Q& t  C( D* k! z4 m* M" \;配置数据
5 c, j) r/ o7 y. kKEY_ADDR = $F8    ;按键地址( m% a* n& T. g" z5 k
STAGE_TEMP = $6010    ;关卡临时地址
/ O/ ]6 o/ t* }STAGE_MAX = $0E    ;最大关卡数1 E7 @. @& u) F4 `6 P. k4 C# b8 w! r
TITLE_A = $20    ;标题条件A
7 ~" M6 f3 M6 l$ a0 ^* [TITLE_A_ON = $02    ;标题条件A有效状态判定" A  r5 P$ _7 p9 ~" |& L) ]
TITLE_B = $21    ;标题条件B6 J  v4 g* r2 T$ }+ l* J, y
TITLE_B_ON = $03    ;标题条件B有效状态判定
+ C5 D5 d5 ~; }  Y. DPPU_END = $FF    ;PPU结束符7 w* R" u4 W8 U' u
TIME_LAY = $4A    ;标题显示延时地址- D2 b6 O6 }- `8 V$ O7 e: D' `8 O
BUTTON_DEC = $42    ;关卡减少按键
# A6 c* Y0 S5 N3 M- OBUTTON_INC = $81    ;关卡增加按键
$ b& {4 s7 i* {NUMBER_A = $06    ;数字A距离STAGE偏移量
  A2 H+ m$ t% K- R0 d9 a9 lNUMBER_B = $08    ;数字B距离STAGE偏移量
7 T- n4 r2 r4 N, i& Z+ w( [3 `# vPPU_ADDR_H = $23    ;STAGE写入地址高位
5 s* E& t1 B0 Z% ^PPU_ADDR_L = $8C    ;STAGE写入地址低位
8 q3 p: k! ~& V. f0 hCHAR_S = $A2    ;字符'S'# X. x* f5 ^- u8 _$ h1 M
CHAR_T = $A3    ;字符'T'
8 s5 S3 D+ d5 j9 T4 k6 N- n. P4 \CHAR_A = $90    ;字符'A'1 o* x% d! C9 e8 j6 J" a- r, s
CHAR_G = $96    ;字符'G'7 r" s3 {4 Q6 Z
CHAR_E = $94    ;字符'E'
& v& H) h( ?7 ?+ ~3 gCHAR_SPA = $00    ;字符空格, `1 T) k& B- C7 W: y( ~, T$ D
CHAR_LIN = $AE    ;字符'-', }  a7 o( ]  I! I  y# A8 i+ m
CHAR_O = $9E    ;字符'o'- ?, G: x: H8 K* Z+ ^& e4 L
NUM_1 = $81    ;数字'1'
& m5 J5 R) W. y4 `+ PNUM_2 = $82    ;数字'2'3 ^9 n3 t3 c  ?9 ]  z3 ~" L
NUM_3 = $83    ;数字'3'6 w( D( }/ T+ X) t
NUM_4 = $84    ;数字'4'
0 I* }+ T3 E4 w" n7 P) L% w& Z2 `NUM_5 = $85    ;数字'5'# t# D. T  x" \' ]& m2 A
NUM_6 = $86    ;数字'6'
/ _7 ~1 @! `+ g* j4 Y5 VNUM_7 = $87    ;数字'7'. }7 x# _! G0 h# E5 }
NUM_8 = $88    ;数字'8'8 p, u) m) M6 O
NUM_9 = $89    ;数字'9') [( ]2 x5 a+ G8 d# i0 `
NUM_0 = $80    ;数字'0'. {3 T0 c' X9 k6 b; i

: F# c" i3 h! ]7 z5 ~) u6 u .ORG $F82A
6 E: h# h  V1 Z7 U JSR $E700, L3 m9 h3 x3 u; |$ I

3 S3 b# X8 O2 r& g, f
' a$ d% q" a! E/ J+ s$ g7 P, _ .ORG $E700
: b, n5 E, b8 b! h4 \8 ~; ^* d  
3 v) T( U' ]& t- I STY $4014    ;补上覆盖的精灵写入指令
0 V3 |* G. V9 e3 E. R6 ]) ]! _PROTECT_DATA:    ;数据保护5 i" T) W2 n6 w$ E3 S( F
PHA    ;数据保护开始
4 k9 x7 Q. j+ Y. W& h TXA* T4 P7 W& d! \  s, Z& x) x
PHA
9 O, c6 o- m3 c" L TYA
' z8 p! f2 U& D4 q& U% s5 m" z PHA    ;数据保护结束# b: u4 F' q6 }7 X
LDA TITLE_A
, M; Y/ V1 M% {2 t) ? CMP #TITLE_A_ON    ;比较是否为标题画面# W8 o' P8 D! K% v  w0 \' m
BNE RET- a& W0 R2 l& d$ q' w# `6 ~6 z
LDA TITLE_B7 l4 M6 I* r4 G; A4 H, v
CMP #TITLE_B_ON    ;比较是否为标题画面
. }+ U& Z( x' M' h$ g9 O1 Q7 W9 l BEQ PPU_STAGE& C) e; Y0 e4 {  [, M1 d9 v  @
RET:    ;恢复数据9 B: x8 a& r1 ]$ W8 z1 p. v
PLA    ;恢复数据开始0 K/ Z$ _* @3 B. p; Q  U
TAY
* b6 F$ o- O7 y+ Y PLA7 Y  M6 I% c2 a0 h" R/ _
TAX
, k- |' t/ ~9 Z* y& o7 D PLA    ;恢复数据结束" ?$ l+ A3 j- k# h. i: m
RTS    ;返回, |, o7 I( ?% {3 M% _+ {
PPU_STAGE:    ;字符STAGE写入程序
* M' p3 V1 q$ D LDA #PPU_ADDR_H
* D, z9 R9 v- [ STA $2006    ;设置PPU字符写入高位地址
& }$ w! k  D5 l LDA #PPU_ADDR_L
/ }, q; _- A# r: K! F STA $2006    ;设置PPU字符写入低位地址2 [1 a- r  E9 t
LDX #$00
  W! z' A1 I1 {& E( yPPU_STAGE_WROTE:    ;写入STAGE字模
( T, V/ @6 t$ r8 f$ t LDA STAGE_DATA,X
& l1 r5 B) x5 Z/ n+ o1 d CMP #PPU_END    ;判断是否写入结束
2 Z2 r! @  C3 f6 v2 V) H9 u. e0 \4 k BEQ STAGE_CMP4 H+ l! c. n/ L* H/ o9 [
STA $2007& K/ i" n% b9 l: b- S
INX! \1 H4 L, n5 b4 ^& N& {  Q! Z& @
BCC PPU_STAGE_WROTE5 o4 J3 r# _4 \) w9 y
STAGE_CMP:    ;选关操作
: I# M' m% R2 T LDA STAGE_TEMP8 d: L/ V% t, d( Z' R
CMP #$FF    ;关卡数据初始化条件判断  T$ [7 E7 s/ e# j7 r9 L+ j. Y
BNE KEY_B. M0 w1 ~) b' D, \+ X1 o, [" _
LDA #$00' @/ o9 P7 N# h. b
STA STAGE_TEMP    ;关卡数据初始化5 f9 N/ S, @' x6 }( K
KEY_B:    ;关卡减少+ C4 i1 ]7 I8 Z: ~% j% H5 m6 J) P
LDA KEY_ADDR* N; A# ^: C4 C$ p
AND #BUTTON_DEC    ;按键B或左减关
% `9 k6 d9 L* M8 ` BEQ KEY_A
9 t' j1 v. l" L- ~ LDA #$FF
  U8 E% S+ C% |; o6 k8 K& y3 a. w. v STA TIME_LAY    ;重设标题延时/ ?  D6 }4 |6 a8 [2 N
LDA STAGE_TEMP
# s; Q; F. L( l3 @2 {9 F CMP #$00    ;关卡比较
! N! T5 n- F' g" |; Z$ Q BEQ KEY_A
5 r4 D2 h' [8 J0 { DEC STAGE_TEMP   ;减关7 s& C# Y! ^4 k
JSR MUSIC    ;按键音效& i1 ?# R8 c- _: |# ?
KEY_A:    ;关卡增加( D9 H+ r# X/ V/ W; {# @: _$ @
LDA KEY_ADDR
; |% J8 |0 P7 ^7 q9 M/ Q; r# m AND #BUTTON_INC    ;按键A或右加关
8 C4 h/ a5 n" x" E BEQ PPU_NUM_WRITE% U4 z+ O, r- Q& ]1 p
LDA #$FF
. m! n5 E+ l" n% q8 l. U5 g% M STA TIME_LAY    ;重设标题延时
; x0 g2 C% f+ N8 [" b5 Z8 M3 ?; G LDA STAGE_TEMP, f+ B8 y+ Z5 w2 K' b
CMP #STAGE_MAX    ;关卡比较1 N" i8 T; ]: v. X& Q7 P7 k0 d$ U% ^
BEQ PPU_NUM_WRITE- d: X! {; Z8 n0 D+ M/ w
INC STAGE_TEMP    ;加关) C/ Y0 C; C8 j% v% X
JSR MUSIC    ;按键音效
* e$ ?% W' ^. _; ]PPU_NUM_WRITE:    ;关卡数字写入地址
7 p3 p4 @+ ?$ [  _ LDA #PPU_ADDR_H- j3 R( I  h( g, c& m4 ]
STA $2006    ;设置PPU数字写入高位地址, ?, q2 U. ]" i. x' b2 N3 E
LDA #PPU_ADDR_L2 Z  z0 I; ^2 d& F1 ]9 X
CLC' L) z* @9 p2 U, T# z' t
ADC #NUMBER_A+ N( H" O+ p4 Z) r( z
STA $2006    ;设置PPU字符写入低位地址# @+ A! v0 Y8 `4 Y+ M2 g# P; _
LDA STAGE_TEMP4 b# B' w% N8 }" A* T6 W9 \. o
TAX
0 Q. C6 q* J) a6 A  [' e, c* ^# U6 c- C LDA STAGE_D1,X    ;写入数字0 z' I- _5 B$ J) C* ?; l3 n
STA $2007
& \6 F; K* |* H4 ?% O( L) [ LDA #PPU_ADDR_H  B1 S9 ?& O" i% q3 c3 H3 s
STA $2006    ;设置PPU数字写入高位地址
8 G8 w6 ~/ P& a' u6 A; f LDA #PPU_ADDR_L
+ _% P7 r+ r; K+ _ CLC
' ^" g) i( m5 B+ Z; z5 b+ u# d ADC #NUMBER_B( M: ^$ v: v% w5 U1 A( d
STA $2006    ;设置PPU字符写入低位地址8 [* O( `& y0 O+ Q
LDA STAGE_TEMP
# u# g+ }, t4 q  l& N- r TAX
& g7 \9 f% p1 g8 Z6 o. X LDA STAGE_D2,X    ;写入数字1 n- Y/ \* o# U" M- K
STA $2007
* `- k' k. W5 c/ _! Q" c" b1 ZSTAHE_WRITE:
4 I/ j' k9 p6 g4 X2 F7 p LDA STAGE_TEMP
- K- n* p$ V, u' |1 L) r% x STA $2D   ;初始关卡写入
0 w0 u5 h% l& u/ oPPU_RTS:    ;恢复数据- c- j/ W: t: f- H
PLA
9 Y. B$ E- m) v5 _" Q, u% J6 l& w TAY
; p$ P! X3 A4 h PLA
+ e# i# {- a+ p- ~& A# r% d TAX
' I8 n$ O0 O# a0 q; z PLA
/ l1 n4 H. P2 A- Q0 S  d# j RTS' ]/ \9 F6 U. q: R8 b7 j  b. v. A
' N6 S5 w! Z" |4 V9 ]9 `; Y
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据3 u9 s1 R8 H% j+ e  t
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END' [" I, ^4 k& k6 {3 g
& S3 G7 n; C9 E; Y. }* g
STAGE_D1:   ;关卡数字; e' }6 P" n+ _( t1 u1 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_89 d# ~' t! a; K, T0 V

9 D+ R, b$ _. cSTAGE_D2:   ;场景数字
+ S7 f  {; L6 n* P) B2 X3 H: J7 j .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; f6 t1 e# d% m5 B- d
0 {" E& O9 @0 F( s3 l

0 G  h9 Y0 l  ~3 r! b4 Y& qMUSIC:    ;按键音效8 G1 k8 p9 O1 J
LDA #$3B    ;音乐号8 @) T) T3 y) c9 K' D3 Y# }
JSR $919E    ;系统音乐调用. [% a$ g. w  p# S
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2435 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2026-2-25 07:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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