EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]0 p5 s3 @9 i* Z- r6 ^* i
;作者:FlameCyclone 2017.4.1
' O+ ~- C" w. Z$ C! ]* S( b: ^' y0 F/ W* L+ H
1 V+ R6 M  V" O' ]: r
;配置数据2 o( C- _) U$ T$ l2 u
KEY_ADDR = $F8    ;按键地址
9 `  o# z# b1 r6 k. p6 XSTAGE_TEMP = $6010    ;关卡临时地址
( J1 W7 B6 Q, p4 Y7 tSTAGE_MAX = $0E    ;最大关卡数
: Y  p& U  q4 R# F5 b6 VTITLE_A = $20    ;标题条件A$ G" I& B1 E) u% R% A8 G1 u
TITLE_A_ON = $02    ;标题条件A有效状态判定
) E0 Y# c! Z$ zTITLE_B = $21    ;标题条件B: C! C8 n: a$ v1 q$ H, A5 V+ F
TITLE_B_ON = $03    ;标题条件B有效状态判定
+ a( o4 G/ z# x2 P, ~PPU_END = $FF    ;PPU结束符$ w; e, s" q; w
TIME_LAY = $4A    ;标题显示延时地址- o' J$ I) Z, @0 W. @8 ?! q) h$ i3 [7 g
BUTTON_DEC = $42    ;关卡减少按键( [% b; i$ F- o/ a; t
BUTTON_INC = $81    ;关卡增加按键/ {3 b1 m1 o5 ]7 Z; m! p
NUMBER_A = $06    ;数字A距离STAGE偏移量9 ^9 {: l5 J: D. B+ z3 p4 A2 A6 G
NUMBER_B = $08    ;数字B距离STAGE偏移量
' |7 D* i- q$ L' oPPU_ADDR_H = $23    ;STAGE写入地址高位
$ R. T! Z$ }( V/ m  C9 ZPPU_ADDR_L = $8C    ;STAGE写入地址低位; v8 ^# S7 `- F2 }
CHAR_S = $A2    ;字符'S'
1 d; m* C/ m; VCHAR_T = $A3    ;字符'T'& b. O2 v2 P. `
CHAR_A = $90    ;字符'A'4 W9 z" E8 H' V! B
CHAR_G = $96    ;字符'G'
" p/ }2 C2 G$ d; T# RCHAR_E = $94    ;字符'E'
9 e- j$ i% ~1 ^4 ?2 d  E! _. N4 eCHAR_SPA = $00    ;字符空格
( }, ~; s* w7 f9 K# O& SCHAR_LIN = $AE    ;字符'-'4 X! h0 ]$ a' [7 Z  ]
CHAR_O = $9E    ;字符'o'# m- e0 q7 b" a. j0 |$ c+ X" z
NUM_1 = $81    ;数字'1'; q2 e, h* n8 J/ Z) G) @3 R# p( y
NUM_2 = $82    ;数字'2'
. G) d; c  G1 v! U) X, }NUM_3 = $83    ;数字'3'
' M6 z8 {, {. d% L' c7 F5 LNUM_4 = $84    ;数字'4'
. W! x$ |* X/ y2 o. m3 w) SNUM_5 = $85    ;数字'5'0 d- o0 \$ I7 t' G
NUM_6 = $86    ;数字'6'
# g8 i' @# Y+ }7 `& P& mNUM_7 = $87    ;数字'7'
3 D1 `. O! x: W+ T* i# H. XNUM_8 = $88    ;数字'8'
7 {/ O. @% `: s/ S2 }7 fNUM_9 = $89    ;数字'9'
& h9 q& P6 w' S8 V4 h7 p* YNUM_0 = $80    ;数字'0'3 w$ c! K1 M7 z# ?
* ]- x7 S# {. u. U" L
.ORG $F82A
0 S. t; S+ u# @8 Y! z! x JSR $E700
1 V5 |& u+ J: p" \ 7 _* m) k: }! r

' {  l4 C) g/ s; O) b) P .ORG $E700& Q; J9 D8 ~0 \* X5 @
  
5 q; w6 J' ~6 o8 c4 Y STY $4014    ;补上覆盖的精灵写入指令: M  L9 K- M  C1 d& t. h4 ~6 g  ~( K
PROTECT_DATA:    ;数据保护
; i- K6 k) y( Z6 \9 B$ X9 J4 m PHA    ;数据保护开始
. [: b6 }) b/ Q" g- i; E TXA
5 J. i3 L5 p* N4 s: S PHA. C% V$ K5 R) X  _' `$ b8 `0 I
TYA3 F: W4 c3 A. e! V5 w& ]) G& W: Z
PHA    ;数据保护结束6 S/ u" g3 k' \" `. m1 S8 Q
LDA TITLE_A( a: e+ Q. Y- W* _, b( Y: B
CMP #TITLE_A_ON    ;比较是否为标题画面( J1 _) v/ l/ A( G
BNE RET
$ a: Y( O5 j5 t" ?3 |* m LDA TITLE_B' O. c2 o" F8 {
CMP #TITLE_B_ON    ;比较是否为标题画面. C" _, F. ?$ T* I% H  [( p
BEQ PPU_STAGE
/ J: V; @3 ^1 T' MRET:    ;恢复数据
' S6 h$ z! z! x; x$ O3 O PLA    ;恢复数据开始
2 R' X) `% ]. e$ H* u7 _ TAY+ Z. P, Z: B* r+ D2 }$ t
PLA/ t. i8 b+ l( [/ i5 K2 B9 A  @
TAX2 A2 h3 V6 z/ c6 M- n
PLA    ;恢复数据结束
1 m  D$ e; w( d RTS    ;返回
1 J. F, X) G) F) E+ ^4 vPPU_STAGE:    ;字符STAGE写入程序. n2 v  v+ t" c8 u9 h5 n+ C/ r
LDA #PPU_ADDR_H
4 D2 `: C1 @# l" g# t! Z STA $2006    ;设置PPU字符写入高位地址
6 ^/ W9 T9 i; {4 ]+ L LDA #PPU_ADDR_L
' Z! v! p# ^0 d+ @ STA $2006    ;设置PPU字符写入低位地址+ l" }) I' K+ G; H4 o( h- E
LDX #$00
# \* G5 x7 J; ]# n1 ^% rPPU_STAGE_WROTE:    ;写入STAGE字模
+ a2 X1 ^2 y' A LDA STAGE_DATA,X+ w; _0 e/ v( D- c- n& n
CMP #PPU_END    ;判断是否写入结束
' K( q5 s* f& r0 R$ b BEQ STAGE_CMP) r! J4 S4 ?, d  M1 P+ s* A8 t" I
STA $2007. m6 E  @9 f; q9 S% T+ J+ A4 z
INX) U9 X. X/ D+ r6 _9 N
BCC PPU_STAGE_WROTE  r. C6 a4 o0 X/ \7 P; a, T7 d
STAGE_CMP:    ;选关操作
( `) q: n8 t6 ~6 z# Q! M) a LDA STAGE_TEMP
& }! W2 s$ K* g3 S+ D CMP #$FF    ;关卡数据初始化条件判断' Q/ e! t+ Q8 g
BNE KEY_B
# u% x. c" _, b: q9 y LDA #$00/ y0 N& t: B% r9 H' N( v% O; C
STA STAGE_TEMP    ;关卡数据初始化
8 R+ O6 ]+ k, A  f6 m. rKEY_B:    ;关卡减少  }. l( k1 Z; F
LDA KEY_ADDR4 e3 k+ b/ z6 |
AND #BUTTON_DEC    ;按键B或左减关
8 Q/ F+ @; e& S2 f  X BEQ KEY_A
4 Q, k8 d: G. P# `8 | LDA #$FF
: `( w% r, {) _5 c STA TIME_LAY    ;重设标题延时; w! C3 T- N4 a# c8 j
LDA STAGE_TEMP$ D2 ~: ?- k9 ?) T, b
CMP #$00    ;关卡比较8 q' j0 H+ v3 O9 f' Y$ W
BEQ KEY_A% V* k* n5 A7 H1 x) J
DEC STAGE_TEMP   ;减关
. g7 u% q% `1 ?& k+ O& h/ b JSR MUSIC    ;按键音效
5 \( p8 @6 Z; q5 p' ]$ aKEY_A:    ;关卡增加9 m% [/ Z% j7 }  z  N1 J' G
LDA KEY_ADDR& C7 M/ Z" }6 G
AND #BUTTON_INC    ;按键A或右加关& T% c2 ~( E# n; g
BEQ PPU_NUM_WRITE2 f9 A. ]  J- r
LDA #$FF
' I2 N3 v1 G: L' w$ X7 ?  I3 X' Q  i STA TIME_LAY    ;重设标题延时
1 s# h9 P: `$ u- d LDA STAGE_TEMP
; r$ L) _/ f& R CMP #STAGE_MAX    ;关卡比较
; h4 O/ [% _: [6 f8 F% W) K4 G BEQ PPU_NUM_WRITE
: L1 q9 w1 r1 B2 E, ]2 n INC STAGE_TEMP    ;加关
0 w5 r& j: j7 M) b, Z JSR MUSIC    ;按键音效
7 U6 O) [9 ~% mPPU_NUM_WRITE:    ;关卡数字写入地址
( u3 b4 Z4 Q6 {8 L: l LDA #PPU_ADDR_H
" A. |. h5 f: ?& i) t. Z* u STA $2006    ;设置PPU数字写入高位地址
$ A+ F8 X0 t- @ LDA #PPU_ADDR_L
1 m1 d+ `  r. k! ]8 y$ ^! i CLC: o) ?0 i. S) K6 b" Q, [
ADC #NUMBER_A% b; @7 @& ?, T4 D/ W
STA $2006    ;设置PPU字符写入低位地址2 }; S* y0 F" Z  l2 f
LDA STAGE_TEMP
/ [$ _8 l* W# h; k; L& |$ Z- | TAX
* h7 [. ]3 f3 _3 T3 R LDA STAGE_D1,X    ;写入数字3 \5 K* z3 t  E2 U& I3 k( G5 g- k3 D+ j
STA $2007
/ y4 r3 |, `) s. v" A0 c( n LDA #PPU_ADDR_H! n5 c* [0 V+ O* j
STA $2006    ;设置PPU数字写入高位地址* R6 G# t( F8 q
LDA #PPU_ADDR_L: y9 }5 X4 F# g0 }
CLC2 ?( F  a( q6 h
ADC #NUMBER_B4 ?+ Q" u/ w) \  o& v
STA $2006    ;设置PPU字符写入低位地址
, |" z$ }# m# y  r. S LDA STAGE_TEMP. v. E) _% b4 t: Z2 L* R. [+ y
TAX6 ~* [8 Z- V0 ]7 K  L" z7 r
LDA STAGE_D2,X    ;写入数字
6 j: `6 w0 i3 U6 i4 D1 C0 M STA $2007
  v  _1 S! b* i" ZSTAHE_WRITE:! S' {* ?8 ^/ z) j- W( u; f
LDA STAGE_TEMP! c6 `2 A% X  y& K4 B- W
STA $2D   ;初始关卡写入; v& U; L; Q1 f3 a& J) X! j
PPU_RTS:    ;恢复数据+ A# z/ n+ [! Z1 C
PLA
! n0 W' E4 n0 R% ~ TAY
% p' D" }! t/ A5 L3 N; f% v PLA- I6 P# A7 ^. }5 V/ y' U
TAX
2 K* f: N  V1 |, W& Z6 k1 h: m PLA
9 w3 i2 o3 w& s, F4 `( g8 n4 c RTS
% R8 c) \3 y2 X
  Q' Q( w$ o% `' ASTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据- \) t) e& i$ G, v/ x/ w, {1 r7 U
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END" G8 r, J. }' K

. q$ [' P+ V" {6 V' K  dSTAGE_D1:   ;关卡数字" w% G7 t" P- _/ b/ W( {6 Y
.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_87 j% a+ A* u. H
1 ]. A) H, ?* Q& f, `5 z1 T! X9 @
STAGE_D2:   ;场景数字% I0 j9 X; c; S+ R% a
.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
2 w# I: D+ m5 d$ m6 L$ ~7 h   P3 D) N0 _" a& U+ y

: l, T+ {. [/ X# h0 \- j. O0 M  RMUSIC:    ;按键音效
+ K2 ?7 m- ~7 E0 n' @0 X/ b" ~  f- V- b LDA #$3B    ;音乐号
( f7 j  w  l' \+ _9 x# t1 b: n& v. t# Z4 \4 X JSR $919E    ;系统音乐调用( j" p: r' |) `6 `' f* E
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2677 天

[LV.Master]伴坛终老

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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