EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
# q- ?% t. Z' D7 L9 y' x% p& e! P$ V;作者:FlameCyclone 2017.4.1, ~! o) @( G+ K# U7 ~) }5 \1 ?
$ j$ i3 ^: |+ \' O

, ?! ~, k' k' q, e( n& q;配置数据9 Q1 N( y/ [+ z2 k+ I5 {
KEY_ADDR = $F8    ;按键地址& ]2 t3 G# m3 |( x0 G; h
STAGE_TEMP = $6010    ;关卡临时地址
1 N9 P7 Y6 L% h2 q8 Y/ `STAGE_MAX = $0E    ;最大关卡数
  `& d8 F' h* Y7 k7 ITITLE_A = $20    ;标题条件A% w2 u) \4 J3 H. g) U6 |
TITLE_A_ON = $02    ;标题条件A有效状态判定3 h: ~/ r+ E5 i" l/ ~
TITLE_B = $21    ;标题条件B( @; \# T$ U& z* T4 s
TITLE_B_ON = $03    ;标题条件B有效状态判定+ D/ Q. J& }; a) Y
PPU_END = $FF    ;PPU结束符
7 R5 K& b2 u# i2 i/ a! G& ^TIME_LAY = $4A    ;标题显示延时地址  ^( n2 M+ g. p6 n! o5 N/ ]. y+ N" F
BUTTON_DEC = $42    ;关卡减少按键+ s" e' ~* x) j4 h
BUTTON_INC = $81    ;关卡增加按键) x) j1 t) {* O, ?% `: ]) W$ K
NUMBER_A = $06    ;数字A距离STAGE偏移量( Z' Z: f" I3 \0 M3 h1 y0 Q
NUMBER_B = $08    ;数字B距离STAGE偏移量0 r! l5 I) n! ^3 \0 H8 V
PPU_ADDR_H = $23    ;STAGE写入地址高位8 ?5 C4 X' Y1 {5 }
PPU_ADDR_L = $8C    ;STAGE写入地址低位
0 }) A9 ^, r# h2 @CHAR_S = $A2    ;字符'S'2 f8 L! d  C  z/ _' E
CHAR_T = $A3    ;字符'T'
4 g# E+ T+ v8 YCHAR_A = $90    ;字符'A'1 E- o9 F8 o1 |& o9 Y) b
CHAR_G = $96    ;字符'G'# r9 d& ^! V( h" ]+ W
CHAR_E = $94    ;字符'E'  F6 |' k/ h9 E) M. l
CHAR_SPA = $00    ;字符空格& o( i7 J3 H' d3 j; C1 j. v# s
CHAR_LIN = $AE    ;字符'-'
( H5 k+ E5 T" ]CHAR_O = $9E    ;字符'o'
$ R7 \* o6 {  @) B* `NUM_1 = $81    ;数字'1'8 b) e4 c/ s$ m5 t1 p% X
NUM_2 = $82    ;数字'2'
; C4 n2 y6 \' Z+ D7 D. w9 f' bNUM_3 = $83    ;数字'3'" ^9 k6 \8 j* |4 G6 q
NUM_4 = $84    ;数字'4'
: G0 O  h* {0 A( yNUM_5 = $85    ;数字'5'3 }& \% u& D, a/ g( p( f
NUM_6 = $86    ;数字'6'' \$ G& T+ l/ M% _; y
NUM_7 = $87    ;数字'7'
9 A7 i8 |% N/ k5 P6 W2 uNUM_8 = $88    ;数字'8'& i2 _( `( m% s2 g* S2 O3 V+ o
NUM_9 = $89    ;数字'9'
) r9 D. W' q! p! vNUM_0 = $80    ;数字'0'" J7 N, e% n( C. k; V9 t; V
) ^. n# _6 l5 l1 F
.ORG $F82A2 ?' Z( g# C, w9 H( c: x0 j
JSR $E700  E, ^% R& o. E5 e- x+ e. {4 P

, D. T6 H2 G) K6 ~ 7 \8 B: {. r7 ?' y  H; s/ b+ o
.ORG $E700- ?& y* G# G; s( [# D) J+ e
  
' ~+ G& W1 E" [+ [ STY $4014    ;补上覆盖的精灵写入指令
/ N9 g$ y! f) L' \) Y+ z, T2 Q3 Y' ~PROTECT_DATA:    ;数据保护- c6 y2 ?* W2 G; A) A& a; v
PHA    ;数据保护开始
; Z& j7 r5 E* U: {8 X: ~7 j: k TXA; e- C4 W1 g. h. \
PHA0 e# i- \6 o, \3 ~: C; @# ]. v
TYA
' ?& i, t- d# |" N- L3 z/ | PHA    ;数据保护结束# x$ x4 q* F0 o6 R3 y) G; C
LDA TITLE_A
; t+ U$ Z. B: o- A; k: t CMP #TITLE_A_ON    ;比较是否为标题画面
+ G; e7 m! m" S7 } BNE RET- [0 I6 g" F6 H: r1 s- f7 R$ r3 L; I2 C9 R
LDA TITLE_B
+ Q! N# H3 E$ r" P: O CMP #TITLE_B_ON    ;比较是否为标题画面- h8 U* U+ e- q" x
BEQ PPU_STAGE
5 Q$ _1 i7 v% o0 `1 M" _RET:    ;恢复数据3 P* L, X$ Q6 |  ]
PLA    ;恢复数据开始& {4 A/ @- m$ p  W1 |  w
TAY
( b$ o( ?  @  t PLA
8 i, Z$ k; o" F$ M; e4 A& D TAX
3 A7 Z( k% O0 |- u+ C/ \, n& d- s' w PLA    ;恢复数据结束  m# O' e6 U/ t% N- E( o
RTS    ;返回
- w% }) X6 T) Q  y5 |1 q* o. VPPU_STAGE:    ;字符STAGE写入程序
  ~9 \, x+ b% x" F9 X LDA #PPU_ADDR_H
! l5 J: V; i8 X, \$ A. M7 P STA $2006    ;设置PPU字符写入高位地址9 P1 ?9 }2 a4 k7 B7 H8 i8 g
LDA #PPU_ADDR_L5 c: ]2 }  F+ W! F* ^! A" E7 _
STA $2006    ;设置PPU字符写入低位地址
  h0 Z7 n6 g& }7 q3 W/ ` LDX #$00* d- D8 x! p* O% T3 o
PPU_STAGE_WROTE:    ;写入STAGE字模
. d/ p1 v8 M. s' [4 p9 _/ T LDA STAGE_DATA,X
6 B" W5 Y( L! |) b  q CMP #PPU_END    ;判断是否写入结束3 Y, ]5 D$ v. _  }% N% L5 @4 s, W* ?3 f
BEQ STAGE_CMP# J& @9 G+ A  {
STA $2007  L# Y: U. _2 q3 l8 b' ~; e- L
INX. o7 C2 o% y; k* z
BCC PPU_STAGE_WROTE
+ G6 I  Y' W. J: a6 B% {STAGE_CMP:    ;选关操作$ _5 V+ |7 }/ L/ k, E/ C8 u3 _
LDA STAGE_TEMP$ c) U* I4 e1 ]. S8 r* p9 @" a
CMP #$FF    ;关卡数据初始化条件判断
5 F6 r) S' R' k7 e. J6 v: O. M BNE KEY_B" N7 D6 E, ^9 u
LDA #$00; _+ F4 o1 I; e% ~8 d7 s- H
STA STAGE_TEMP    ;关卡数据初始化
! j4 j" A8 n8 w0 s+ G5 J' q. pKEY_B:    ;关卡减少6 z1 U' ]" V! B6 T& e2 `
LDA KEY_ADDR) i! n! y- o2 {! T% g
AND #BUTTON_DEC    ;按键B或左减关
2 u5 v- {; K" b2 N BEQ KEY_A
, `4 H8 g( A% @& T LDA #$FF, h2 f' y- e/ s: F. W' x
STA TIME_LAY    ;重设标题延时9 ~$ s9 T( v$ f2 b& J
LDA STAGE_TEMP* u+ \( O- |" C( d* C
CMP #$00    ;关卡比较
: D* y+ s7 ^/ k9 ]1 _/ ]+ U% D& ~ BEQ KEY_A0 }" y! r7 N( M" x: V! N0 W
DEC STAGE_TEMP   ;减关
3 y. r; v% ]% W5 S' F JSR MUSIC    ;按键音效
* r  u. Z9 S! i1 v5 t/ yKEY_A:    ;关卡增加8 W# u% T3 |8 }) r8 [9 U
LDA KEY_ADDR
5 Z1 L9 U+ t! K8 e AND #BUTTON_INC    ;按键A或右加关
1 X, f0 |$ l- a. q9 Z BEQ PPU_NUM_WRITE
8 f8 @# O* I9 f& L1 |5 k# v# z  | LDA #$FF+ }5 T8 [3 w1 D) m- J% Y: |
STA TIME_LAY    ;重设标题延时& F. o3 F! m, Q& F# r5 v, |! I
LDA STAGE_TEMP
  ]  _- v: G: S6 y2 ` CMP #STAGE_MAX    ;关卡比较; s% ^/ g2 B* p; A
BEQ PPU_NUM_WRITE
! `% I6 N. S7 R9 z INC STAGE_TEMP    ;加关
1 _6 J- W( z: y- w* n6 A+ W9 ?- ~ JSR MUSIC    ;按键音效
8 Q. J; v8 n& j! X& W3 l1 VPPU_NUM_WRITE:    ;关卡数字写入地址
+ b, Y# B6 \# q' O; y7 I8 w( z LDA #PPU_ADDR_H3 E$ n. b, }9 X+ c
STA $2006    ;设置PPU数字写入高位地址
" R9 W7 W$ R) z LDA #PPU_ADDR_L. E) d# u- V0 J
CLC
% V2 Q- A  \  H! W ADC #NUMBER_A
# e( e! R$ `/ o  w4 E0 I STA $2006    ;设置PPU字符写入低位地址
0 w9 \; V% `5 l, L  P LDA STAGE_TEMP
/ r" @% K" A3 I/ R! _# [1 v! g TAX( L9 W# Y: k  B+ r& T
LDA STAGE_D1,X    ;写入数字
1 q( e( V: K# O' a( s STA $2007) K) F5 s+ x) W" y$ P+ p
LDA #PPU_ADDR_H
+ F) j( h! n# V0 @& o5 J STA $2006    ;设置PPU数字写入高位地址' v* v& o) ^3 Z( U( t
LDA #PPU_ADDR_L
# I" `9 F$ V; e5 T& V' m- h CLC( n- Y; }: Q9 ~4 L4 X
ADC #NUMBER_B& d" t5 Z& s6 t/ m" n, I1 x3 v6 A
STA $2006    ;设置PPU字符写入低位地址
0 `$ U6 |# D1 j1 [2 \' A) G9 v LDA STAGE_TEMP, R$ J" G1 l0 i! W, o. Q
TAX5 R  N8 r9 J$ E7 h
LDA STAGE_D2,X    ;写入数字* Z3 A9 q/ ?8 t' O2 c/ C  T
STA $2007: _2 X4 W2 b+ U- }9 Y
STAHE_WRITE:
6 c2 i2 M- V6 T* I LDA STAGE_TEMP
# R, X3 j7 `8 n1 O( C STA $2D   ;初始关卡写入( J9 R1 h5 e! x1 Q' k& T
PPU_RTS:    ;恢复数据, @% c/ j* O! U5 n. d  y9 |
PLA
/ S8 W4 z: C: X( r& E! A5 } TAY
) S2 r  s% E. [) h# x9 ]4 s& l PLA
, h5 I( x3 \: @8 A$ o( @5 h) [ TAX) y* G( p2 g* U+ B! p$ q- l
PLA
' d: r4 v* v6 a9 @2 }% N3 o8 l& X( ^ RTS" S* ?+ g- [( L4 t
6 `' b- U8 o' c2 k4 b( ^6 y6 B" F
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据& I: P% s% X4 R! N1 c2 e3 \( D
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
( O" r- q* l& E+ K4 F+ j. j
- q7 n- f1 T, l9 ~1 QSTAGE_D1:   ;关卡数字
0 L1 G$ ~- k% N+ d3 m+ |, ] .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
7 a2 m+ d+ I0 Z2 N# f2 Y& N0 k* u& p5 f: B+ r! ^; `
STAGE_D2:   ;场景数字9 @+ G' J( ^0 R8 N! ?* S
.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) i) I: R& n) O8 D& J% L

) ]# V2 |# Y: E! P: h- ?; f
" K$ F9 o5 }' `- ^3 n" P8 J6 Y! `MUSIC:    ;按键音效3 X# v- R# t8 D" L3 E% }& j
LDA #$3B    ;音乐号
0 }0 _( o, q$ W JSR $919E    ;系统音乐调用  w/ j) T9 ]' {& A0 S. b5 m, Z, M
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2566 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-8-4 12:59 , Processed in 1.102539 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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