EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
/ i$ n8 |6 H2 R! n;作者:FlameCyclone 2017.4.1
  N- [6 k' O! s# L! M, A  O6 Y
2 P. C; y" R/ W
7 @8 s/ i; }6 M;配置数据3 k' O7 \+ U) T. T% G% c7 t/ }- W' P6 r
KEY_ADDR = $F8    ;按键地址
6 u) A4 ^+ V; J% [0 S6 F, n3 ^STAGE_TEMP = $6010    ;关卡临时地址
4 l: I% ?7 m9 [% z) S. jSTAGE_MAX = $0E    ;最大关卡数
5 z  g) `& h& p1 jTITLE_A = $20    ;标题条件A
$ \0 W! h# g2 ]1 d' z  VTITLE_A_ON = $02    ;标题条件A有效状态判定
. W' u& ]0 f, H( K' ITITLE_B = $21    ;标题条件B
: x% C0 F, @& e! a& _' T5 `8 ]+ y( gTITLE_B_ON = $03    ;标题条件B有效状态判定0 Y3 u0 s: w# n2 W8 P7 F. A
PPU_END = $FF    ;PPU结束符
+ C1 O8 u6 }) P1 ?& F' YTIME_LAY = $4A    ;标题显示延时地址
& O5 y! L- G+ c& p: s; q& `9 ]BUTTON_DEC = $42    ;关卡减少按键0 g7 i7 ^' b# O: j" e
BUTTON_INC = $81    ;关卡增加按键# R  w% ^0 p! X2 ]4 ~, ?
NUMBER_A = $06    ;数字A距离STAGE偏移量5 m! I% @' A/ C. W+ D0 U
NUMBER_B = $08    ;数字B距离STAGE偏移量6 r7 w9 |: |* g; w$ {5 R* l
PPU_ADDR_H = $23    ;STAGE写入地址高位% W# Q& Z. {6 z6 H* ?. d
PPU_ADDR_L = $8C    ;STAGE写入地址低位: {2 w+ c" }- c/ n7 A  m: K
CHAR_S = $A2    ;字符'S'
4 @5 F& F* Y( M4 f0 M8 S1 rCHAR_T = $A3    ;字符'T'
3 c3 t5 ?* A; t) lCHAR_A = $90    ;字符'A') E4 ~4 H5 R/ _& k- k% F7 L5 T8 @5 z. q
CHAR_G = $96    ;字符'G'
5 B5 X# I9 P2 p& W% U% u; ~CHAR_E = $94    ;字符'E'5 u+ ^4 i) X6 s3 F( w$ f7 L
CHAR_SPA = $00    ;字符空格, n8 ^' Z# v. I* S$ a
CHAR_LIN = $AE    ;字符'-'
* s* L/ i6 E5 m" h  D& o7 nCHAR_O = $9E    ;字符'o'
( T3 l& x# L2 F6 o" P0 MNUM_1 = $81    ;数字'1'
+ W, h. z2 ^8 LNUM_2 = $82    ;数字'2'/ y8 R& P1 k5 l- F: D9 I( ?5 ]
NUM_3 = $83    ;数字'3'* u: g8 Y& s  j+ r* F; t  h* A+ z+ }
NUM_4 = $84    ;数字'4'+ V+ h3 Z3 m* I9 P1 ]
NUM_5 = $85    ;数字'5'; v) n5 ~, y% O: r2 r
NUM_6 = $86    ;数字'6'
  p4 Z+ R. b: F% E- X2 J. X% nNUM_7 = $87    ;数字'7'
7 L6 ]( j; o9 j' ]4 E; uNUM_8 = $88    ;数字'8'
# m, g& }' ]) a1 Q; m* S# }NUM_9 = $89    ;数字'9'5 A' x7 J1 C& s9 G8 W
NUM_0 = $80    ;数字'0'
( h2 @& v5 `/ S! k3 G$ [$ p& E( i" I
.ORG $F82A
! v( w! G6 q' |9 B6 F JSR $E700
" u: W. ~1 x6 x) \' i1 J9 o 9 G5 ]' g# j& q, r* A( i1 n, H

0 z" A& a" I8 `% m% P .ORG $E700# Q! a0 X! m, M( b8 c6 n* @. t
  
# W# {; c5 Y- H, F2 H# w  ]  w3 e" f* a STY $4014    ;补上覆盖的精灵写入指令
4 t3 a. [) `8 QPROTECT_DATA:    ;数据保护6 ]8 Z& k; k, [+ {+ u
PHA    ;数据保护开始
+ x8 R5 R- S5 c  }3 A, U. I9 s TXA
  `4 o' R# l0 ? PHA& t) s/ [3 Q  [& X) o' J1 Y
TYA4 @+ Q+ u8 J3 K. ^$ t8 K
PHA    ;数据保护结束7 {: _4 v% v. p/ \, k) e+ `$ Q. X
LDA TITLE_A
8 }" V) w; d* P' G5 r/ q CMP #TITLE_A_ON    ;比较是否为标题画面
4 j; ]8 r2 |0 b# @  z5 b. I* ]$ Q BNE RET
; k* a& ?% S7 x. k5 f& l LDA TITLE_B
1 T% b/ U: f2 {4 V1 z0 D CMP #TITLE_B_ON    ;比较是否为标题画面
0 u  T& ?4 f; ]% l; y. G BEQ PPU_STAGE
2 g$ b+ N& [$ F% _( f2 ORET:    ;恢复数据2 N, P  I$ i6 B: U1 T7 {" w" S
PLA    ;恢复数据开始1 n4 \4 Y- O8 M; S
TAY6 p0 R5 q1 J# E5 x3 k
PLA- e8 v+ l: K- ?! P2 K/ i4 ?
TAX
& U* i5 c9 C( v- l6 u, S. y PLA    ;恢复数据结束# i& _8 o& j1 D$ _: g
RTS    ;返回
) ]' j- o$ F$ T1 C0 o4 VPPU_STAGE:    ;字符STAGE写入程序1 w) Q& P2 H) ^/ }% q) E# P
LDA #PPU_ADDR_H
3 r2 n! S) k8 c4 U! [5 L% T+ }4 y STA $2006    ;设置PPU字符写入高位地址% a& q4 K: X# Y: S( h( {6 r3 L$ ]
LDA #PPU_ADDR_L. f: M* o/ H. A' p* ]( U& I" P5 @
STA $2006    ;设置PPU字符写入低位地址2 K; F/ ^) ?8 n1 _& A" ?4 ^
LDX #$00' X( ]- L; p2 k( R: [9 F9 |: Y
PPU_STAGE_WROTE:    ;写入STAGE字模0 G; E4 s7 U# J  u  ]4 f. y
LDA STAGE_DATA,X
2 H' ]# @% g* W- ? CMP #PPU_END    ;判断是否写入结束; W( i7 q% C& y' B# |3 P) j, k
BEQ STAGE_CMP: o" W0 e+ Q7 ]' w$ q  K  @
STA $2007
1 ?5 [1 \/ I7 Y+ y INX) O& J; K; N$ I0 m- r2 l
BCC PPU_STAGE_WROTE8 c0 ~$ E) U( M  {& `2 @
STAGE_CMP:    ;选关操作
7 u2 R8 ~1 s$ j" `* Z LDA STAGE_TEMP: b& w. i! n1 N. @5 h
CMP #$FF    ;关卡数据初始化条件判断
3 Y4 b! I9 O* | BNE KEY_B
) @( O% v2 E, I. L9 p  O* W3 j LDA #$00  M) w$ r$ K; |" W, f
STA STAGE_TEMP    ;关卡数据初始化
+ ~+ ^; Y0 i7 ~1 ?* j+ c$ kKEY_B:    ;关卡减少
# s2 D/ s5 R9 R4 L1 L! R LDA KEY_ADDR
+ F4 X0 ?7 b: u' s+ f0 k" ~4 j AND #BUTTON_DEC    ;按键B或左减关
1 V. i0 M9 B# Y: u, y BEQ KEY_A1 t2 L8 _7 u$ I/ G/ T
LDA #$FF( r8 `0 ~5 A# U' i9 v6 O  K2 ]
STA TIME_LAY    ;重设标题延时5 C# P6 p9 x9 s/ j$ }* s
LDA STAGE_TEMP
. ~) ^! D+ E$ f  @8 N7 E CMP #$00    ;关卡比较* o3 f7 p3 y$ I1 d9 f
BEQ KEY_A; x, s5 \7 |5 X/ |$ ~/ @, I
DEC STAGE_TEMP   ;减关
6 u, o4 N+ h) q5 Q JSR MUSIC    ;按键音效  t3 m7 e& M5 Z
KEY_A:    ;关卡增加
6 O' C; V2 h' T6 `! ] LDA KEY_ADDR
1 R+ T. ?4 z# r) s* @" y AND #BUTTON_INC    ;按键A或右加关; g8 \# J# A9 K1 H, O2 a
BEQ PPU_NUM_WRITE
! X3 M! c, Q9 M) @ LDA #$FF3 b" W1 w. K2 W& b/ Y
STA TIME_LAY    ;重设标题延时
5 X+ g8 H. O% r6 X2 g LDA STAGE_TEMP
0 b- o8 H) J& d. X CMP #STAGE_MAX    ;关卡比较
9 i) \7 l" U' r2 r/ C BEQ PPU_NUM_WRITE
7 a, z+ f1 w. `2 X INC STAGE_TEMP    ;加关; K+ V$ ]- [/ j, ~9 o
JSR MUSIC    ;按键音效6 z% o0 Z/ \' z
PPU_NUM_WRITE:    ;关卡数字写入地址8 F+ ^* t- N3 n
LDA #PPU_ADDR_H, S' J7 u' E5 f1 ?, g0 U
STA $2006    ;设置PPU数字写入高位地址$ ?" K1 L5 K0 b1 S/ x/ ]/ x2 I
LDA #PPU_ADDR_L
) {2 u& {0 q0 e CLC
, H1 B' u/ h& h, A' {; K1 A ADC #NUMBER_A2 E, i- l" j* j
STA $2006    ;设置PPU字符写入低位地址
, o' l; F9 W$ z6 S5 o. m LDA STAGE_TEMP6 Z: }5 ?% x# x( e3 |# {7 ?' D; a
TAX7 ?' r( V7 z* h1 `, X
LDA STAGE_D1,X    ;写入数字3 ^( a4 ^* z& \- I! g* N
STA $2007
* [1 T/ Q- S6 `3 d LDA #PPU_ADDR_H7 R3 M- f3 \; O1 T/ e# s
STA $2006    ;设置PPU数字写入高位地址
0 g/ k4 G% ?) o! H1 z LDA #PPU_ADDR_L; ?% s, A9 U/ j* P* B
CLC  n) k6 N8 _2 j9 h. x2 W3 y' d- S2 [
ADC #NUMBER_B
1 t1 ?/ D7 \+ K1 r* V STA $2006    ;设置PPU字符写入低位地址
& L% D3 k6 P; S1 a( L0 R' p- C LDA STAGE_TEMP& P  ~& d8 Z8 @% V" Q( L
TAX) {8 ~: ]4 l" x
LDA STAGE_D2,X    ;写入数字
  q7 y# d2 [+ I. X+ \ STA $2007) P3 O6 K8 O- s  u) b2 I
STAHE_WRITE:8 h9 j7 u$ @3 U& d& o9 M
LDA STAGE_TEMP
* z+ V; V8 D" {+ ~ STA $2D   ;初始关卡写入
& E9 R" X( Y6 G5 n& ~) ?" BPPU_RTS:    ;恢复数据6 t  d& G2 C9 k- O/ i$ G. b
PLA' `2 S& A0 `5 M( x* ^4 G1 _7 n
TAY
" L- ~7 n% Y1 o! H* b! o% i, {5 g PLA
4 ?0 ^( k- E5 s# y1 e  p$ e; E TAX+ f  r/ ~" D! [" h; j: m
PLA# ?' P% |3 e$ g9 F& f& E/ M
RTS( ^. I+ N- y3 o, w8 E; O

3 O% I$ e& @: g  y# ?STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据. Y8 S' m1 K- T, g, M  z4 g
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END; K; ~, U4 n# l6 R5 M
9 C, q- H4 i5 K4 z4 ]* w
STAGE_D1:   ;关卡数字% i0 s' h3 h: p9 ^' ^2 w
.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
" Z( ], `9 j- L
& _: _- h7 B# M. Q5 JSTAGE_D2:   ;场景数字0 H& o; t" S0 L
.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 n$ w7 ?8 R3 f- A& ~; H

" j/ {, b1 ?+ n3 H; T; J4 _' u ; @. S* u& V! k$ `) I% E( `
MUSIC:    ;按键音效) r* n- i$ o2 H7 m9 d3 A1 q) c, A
LDA #$3B    ;音乐号
+ Z* X1 l% s" Q5 v* i" } JSR $919E    ;系统音乐调用; @& r9 h' j9 o! K
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2308 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2024-9-24 02:34 , Processed in 1.066407 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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