EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
4 X8 L4 H' s" _9 A* x& u;作者:FlameCyclone 2017.4.1
4 M% N9 _1 X' D$ j
' O( @5 h& c& e2 \) j) }  \" X
. d* r, _6 j' u* j) `9 \;配置数据% N* O! I' Z# i' k3 ?* o
KEY_ADDR = $F8    ;按键地址
! K) a; P9 f/ G7 k* oSTAGE_TEMP = $6010    ;关卡临时地址
7 s1 ?. b/ m( r, K5 [; `; VSTAGE_MAX = $0E    ;最大关卡数
! c2 j7 t: g# N" w6 LTITLE_A = $20    ;标题条件A, c$ k. W5 Q8 U" Y& t$ d# J
TITLE_A_ON = $02    ;标题条件A有效状态判定
! g' ~5 S% k6 v5 Z2 TTITLE_B = $21    ;标题条件B
& u9 s% j: n1 e& QTITLE_B_ON = $03    ;标题条件B有效状态判定* {. F2 t/ o( T% b# f/ p* m
PPU_END = $FF    ;PPU结束符
# i+ ^! d7 C" z8 l5 DTIME_LAY = $4A    ;标题显示延时地址
. f7 q6 T* P2 ?/ N& O- D1 R$ uBUTTON_DEC = $42    ;关卡减少按键8 [4 t) G5 I  x' J% C4 a
BUTTON_INC = $81    ;关卡增加按键
6 r. R7 a: a1 a7 L" m5 vNUMBER_A = $06    ;数字A距离STAGE偏移量5 _: j) J% u+ j& {) j1 F* m0 g8 M: ^
NUMBER_B = $08    ;数字B距离STAGE偏移量
* e0 \. U0 B2 e5 ?- k- YPPU_ADDR_H = $23    ;STAGE写入地址高位
) B0 g( X' \3 x1 i7 B1 ]7 C' fPPU_ADDR_L = $8C    ;STAGE写入地址低位% n: F/ L1 G3 B' q
CHAR_S = $A2    ;字符'S'
; A* m: ~. k# hCHAR_T = $A3    ;字符'T'1 t- ?; y9 ?3 b' t% h* s
CHAR_A = $90    ;字符'A'
$ F5 w" D: B" e7 p7 LCHAR_G = $96    ;字符'G'
3 v4 C) ^$ k( z  M, J0 nCHAR_E = $94    ;字符'E', }" k3 L' W0 |& L# j9 N5 u
CHAR_SPA = $00    ;字符空格) M! o% q( V' |% u: G5 M
CHAR_LIN = $AE    ;字符'-'6 R  X3 u+ o' C; J3 p1 S1 ?
CHAR_O = $9E    ;字符'o'1 c; F4 M; o' M: r' [
NUM_1 = $81    ;数字'1'- G% d2 Q* V* k( [
NUM_2 = $82    ;数字'2'
) x" y6 m* ]" ^2 s# HNUM_3 = $83    ;数字'3'
9 S; x1 j  c, h0 ]& O! w$ _4 WNUM_4 = $84    ;数字'4'9 y1 B1 {% Y- q# L3 }% v
NUM_5 = $85    ;数字'5'- M# \, M& h2 v4 P9 f
NUM_6 = $86    ;数字'6'9 q" F4 P: g' X. y# p. O
NUM_7 = $87    ;数字'7'5 i4 _( X0 i( A: c9 m
NUM_8 = $88    ;数字'8'! o& \! m; o2 ^& A) N. Q6 ~0 ^
NUM_9 = $89    ;数字'9'
. c( n( Q* C9 f0 v% H" CNUM_0 = $80    ;数字'0'
0 _: u$ Q4 X0 F' v9 {) Q! t! Z6 c& R
/ _: l+ c+ F- E# v& K$ Y! q .ORG $F82A+ t% {( h1 d* y4 c9 I2 }
JSR $E700* F( j$ `2 W- q2 m% p. Q
- s: H) _2 p5 y
1 D) J+ c! B, [9 I  a9 P
.ORG $E700# Q. T4 x8 \! F0 f7 B
  + d& \2 u, z) [/ ~; f3 H
STY $4014    ;补上覆盖的精灵写入指令5 `5 [7 f. Z5 e2 y+ w
PROTECT_DATA:    ;数据保护0 }( z: N3 g, t/ V7 s
PHA    ;数据保护开始
  X' b1 h/ T. M TXA
) |7 a5 L' Z- o9 i( i- i! y PHA# V' z- J0 l' L+ S
TYA
& b+ L% a' Q' @# W PHA    ;数据保护结束% a/ o- t# J) R0 T3 w
LDA TITLE_A
0 m# `7 B8 T9 }& \# s CMP #TITLE_A_ON    ;比较是否为标题画面  j( @& ^' h* _0 W  X" m
BNE RET
3 W8 ^# y3 u7 U# } LDA TITLE_B
& c4 J+ @; o1 @5 s- t3 @+ u1 [" O CMP #TITLE_B_ON    ;比较是否为标题画面
8 C. r# ~5 e4 y, u( {" W BEQ PPU_STAGE
/ B* N- |4 c* l: URET:    ;恢复数据
& `% C+ ^6 X% d9 s- m/ ` PLA    ;恢复数据开始
! m! s1 R  p0 C  e$ }  q TAY- D; s# I1 R0 J4 H5 h( e2 }/ O
PLA2 \" s% P! h4 n9 ]( B
TAX
- `1 D; _1 ~$ ~, u/ r PLA    ;恢复数据结束
# p: b/ L' e$ P- e) ^ RTS    ;返回$ v% _5 f5 J- f4 J7 C) d
PPU_STAGE:    ;字符STAGE写入程序
( z) A) F! v: x& R; b: y LDA #PPU_ADDR_H
! H$ o5 ^; [/ ?) v4 [ STA $2006    ;设置PPU字符写入高位地址5 r5 B" d$ b" k- J* }' I, i
LDA #PPU_ADDR_L
- }8 h4 d, d: _* b. y0 v# F; ` STA $2006    ;设置PPU字符写入低位地址
! h1 [' ?5 Q9 H% i4 @9 r LDX #$00
0 _0 C6 g( r# H' d% q) pPPU_STAGE_WROTE:    ;写入STAGE字模
  g! H& _+ i6 k: @ LDA STAGE_DATA,X
. t% b# d( L# x9 b9 B8 [ CMP #PPU_END    ;判断是否写入结束4 Q% b$ f' E, `: V4 u& ^
BEQ STAGE_CMP" B- N1 {( f: U: t. U3 Z
STA $2007, Z, w4 `- M( {3 s; c" s7 H
INX
% T! m/ @( @( [/ g$ N5 _+ J BCC PPU_STAGE_WROTE1 `5 O* |( P  j4 j8 b7 z
STAGE_CMP:    ;选关操作
' r% z9 ?# h. z1 g9 h9 O LDA STAGE_TEMP
" o" F5 H5 Y; {+ `, g CMP #$FF    ;关卡数据初始化条件判断
" D4 w5 r1 E( A1 j* u. f; O BNE KEY_B5 ?  b( C6 b+ G  p  p: d
LDA #$00" S! k5 i' a0 A8 p8 a
STA STAGE_TEMP    ;关卡数据初始化5 L7 U8 w" R( [! s
KEY_B:    ;关卡减少* {! v" r+ y/ I1 I
LDA KEY_ADDR( N4 [4 V- k- x6 c& R
AND #BUTTON_DEC    ;按键B或左减关
. `6 `" z9 s: N6 W" a% F BEQ KEY_A
" }" M4 v! P6 C9 t: Q, Q# }5 s LDA #$FF" t! j2 p! o  a" W) m. s, S. s
STA TIME_LAY    ;重设标题延时! [  a' ~( J' p: D4 E& U
LDA STAGE_TEMP- C; ?5 H! K' u/ x: n
CMP #$00    ;关卡比较
7 ?- G8 g5 b8 j& ~4 G+ i6 F& }3 J BEQ KEY_A! Q: h6 M$ D+ T8 R4 X
DEC STAGE_TEMP   ;减关
$ @5 Q. B- R$ X0 Q8 N JSR MUSIC    ;按键音效3 ]5 U: ~2 D$ [3 I/ Q. ~5 E& K' k
KEY_A:    ;关卡增加; n6 F  _2 A9 z  s- i
LDA KEY_ADDR( n3 X0 u- d: o8 Y% [& x8 f
AND #BUTTON_INC    ;按键A或右加关
! E0 C- [4 K- O& y' f. k BEQ PPU_NUM_WRITE! H' z( ^% ?$ B  j
LDA #$FF
( f. a3 _' d0 n5 w1 }- P STA TIME_LAY    ;重设标题延时
  V  j3 }6 l& {, Z7 Y LDA STAGE_TEMP! O. }. K6 p, A3 q0 B; m. |4 o; q8 N
CMP #STAGE_MAX    ;关卡比较
) K# Q$ @  b) m5 v% y8 } BEQ PPU_NUM_WRITE
; [: y$ c4 ]( b1 v0 }% v- j INC STAGE_TEMP    ;加关& ?5 W- b- P7 f& ^* b; N5 b
JSR MUSIC    ;按键音效+ @  W1 D$ h7 U1 F( i0 c% z3 R
PPU_NUM_WRITE:    ;关卡数字写入地址" {9 w3 l( s( t2 O' K( |1 A
LDA #PPU_ADDR_H: j# y( d7 ]) V" F' R/ n
STA $2006    ;设置PPU数字写入高位地址" d% p; F9 _% g) W8 S! G
LDA #PPU_ADDR_L* j# |+ G1 H2 m+ X# c) ^) w
CLC( x4 q" _; j( h2 V" S
ADC #NUMBER_A% n2 V9 J0 @/ @, ~- k3 G" @
STA $2006    ;设置PPU字符写入低位地址* ]( W  b4 B* Z
LDA STAGE_TEMP
. x+ C$ p! v( D TAX4 k; [  }! T9 m
LDA STAGE_D1,X    ;写入数字
0 P) v0 X. }& ]* ~5 f STA $2007/ l+ I; }$ a4 H9 `
LDA #PPU_ADDR_H
5 d+ z0 \; p" O8 E* `. \( o$ W+ d9 M STA $2006    ;设置PPU数字写入高位地址6 E7 d2 D, N, X# M
LDA #PPU_ADDR_L
7 z  {/ P% ~9 [2 \ CLC
5 U* s5 u: \, k5 N/ t ADC #NUMBER_B) y. G/ P% A% B( M' X
STA $2006    ;设置PPU字符写入低位地址* p, l6 X5 A! T0 ?" G
LDA STAGE_TEMP& Q. ~: N7 Y! L+ k2 r
TAX: j* [  f. r4 E2 @% r' W% b
LDA STAGE_D2,X    ;写入数字
9 l/ u$ f) P' N1 D, T  F STA $2007) M, f' e3 X; K# ~8 V
STAHE_WRITE:6 Q- j% f; `/ Z8 z" d" I2 @8 g
LDA STAGE_TEMP
, \" X2 @$ G" _ STA $2D   ;初始关卡写入
$ P5 ]1 J- C: h1 B8 NPPU_RTS:    ;恢复数据
& Y8 M  U8 i7 u& g PLA$ ?. i& {/ }* u0 o9 T
TAY1 u- u+ u- B5 i  W' t8 H
PLA
$ t% m' Z6 Q% Z: k* l4 X" {8 Z' o TAX
7 F7 e8 ?- K- e5 [ PLA+ T# K/ K# Z- e+ b  L* b% s
RTS' }2 j% i! c% e* S/ Z$ O0 j" C( v

) ^- N! o7 V( x6 BSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据1 _: m7 j* f" h2 _: @
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END' `' d9 S/ ~. n# X1 M/ q0 \4 p

4 f/ ?* f0 `& oSTAGE_D1:   ;关卡数字
: ?+ V( n: {5 p. A+ f .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
" E) {7 E! b  V, b9 R: B4 C- j! l% B! D+ E% M. Q  o( f
STAGE_D2:   ;场景数字
, x% [" T/ q3 t$ E .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_30 [7 n' P& j7 Z

( v) n  h: v* g/ ~
0 r* T+ \& s2 j# }% T$ w. KMUSIC:    ;按键音效
& u& a1 ]8 d6 p( X4 V+ ]3 F: [/ I LDA #$3B    ;音乐号
7 A  G* Y2 t  }$ } JSR $919E    ;系统音乐调用; n/ K% \/ K9 D
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2554 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-7-23 13:00 , Processed in 1.071289 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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