EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
# a3 l7 t7 R" E9 x1 g0 x. l* f;作者:FlameCyclone 2017.4.15 Y+ y3 V6 k1 d

! z' p% v4 i. r8 h; x4 L6 e5 K' U1 y. Z9 n8 r
;配置数据% ]% }6 w# }+ A3 z* h- \
KEY_ADDR = $F8    ;按键地址
. `. s5 u2 d& T" cSTAGE_TEMP = $6010    ;关卡临时地址0 M2 o; C, k: I# R
STAGE_MAX = $0E    ;最大关卡数. ~1 [1 W9 ~3 t: `
TITLE_A = $20    ;标题条件A) ]* y8 u' W$ {- B
TITLE_A_ON = $02    ;标题条件A有效状态判定7 X! L5 ^; a2 T% R# l- d
TITLE_B = $21    ;标题条件B
  o; j# l, @$ O' C1 o( uTITLE_B_ON = $03    ;标题条件B有效状态判定8 y6 ?% z' s/ u. f+ N. v
PPU_END = $FF    ;PPU结束符
" j' @" X3 `. `% L+ jTIME_LAY = $4A    ;标题显示延时地址
3 [& v$ ^+ M8 E/ H9 Q) d- s0 ~BUTTON_DEC = $42    ;关卡减少按键+ f5 Z, T* O" f
BUTTON_INC = $81    ;关卡增加按键% l  B# Z7 P) t) @
NUMBER_A = $06    ;数字A距离STAGE偏移量2 a0 R" @# O" H  d1 P
NUMBER_B = $08    ;数字B距离STAGE偏移量
1 A# F* S5 k8 [* G7 qPPU_ADDR_H = $23    ;STAGE写入地址高位7 ^5 h$ _2 H/ i. J& h
PPU_ADDR_L = $8C    ;STAGE写入地址低位- k* K1 Z: f$ h$ k8 H
CHAR_S = $A2    ;字符'S'+ X1 c" z& F2 Y% }: V* [' }0 F& B0 b
CHAR_T = $A3    ;字符'T'
" s/ w2 R" q2 o/ C, a7 ?5 ~CHAR_A = $90    ;字符'A'0 Z5 x- i5 X% C, ^! R- c/ c' ]% ~
CHAR_G = $96    ;字符'G'8 J8 S6 Y/ `4 [3 ^, l( d
CHAR_E = $94    ;字符'E'9 _$ L4 k8 C7 y8 v3 j/ W& c
CHAR_SPA = $00    ;字符空格
5 w6 j4 K7 n5 ?) YCHAR_LIN = $AE    ;字符'-'( l; n) w7 a- A6 m
CHAR_O = $9E    ;字符'o'
1 M0 e8 D" e2 R. s) s  LNUM_1 = $81    ;数字'1'
5 M# C+ ?$ V  t) L! U* Z( w" SNUM_2 = $82    ;数字'2'
7 N3 e% c0 x! {; v- P, u& {- WNUM_3 = $83    ;数字'3'
% S+ {: V, x! N$ GNUM_4 = $84    ;数字'4'7 _$ o6 W7 A) u
NUM_5 = $85    ;数字'5'
, s# o0 I1 g7 ]$ u9 G" hNUM_6 = $86    ;数字'6'
4 w$ n6 t: i6 R6 N5 UNUM_7 = $87    ;数字'7'
. ^- x! K$ w; K8 w0 D! A6 `NUM_8 = $88    ;数字'8'
" o2 v/ l, d' x, v: v& u, hNUM_9 = $89    ;数字'9'
- b2 h- p+ h& L$ o, U8 }* @: f% sNUM_0 = $80    ;数字'0'
6 l# g1 P9 n! P3 v3 L# l- ]: k" }% l, ?# J2 }, b* ~
.ORG $F82A, ?' U9 a5 T% V/ ]! k; H1 G
JSR $E700
" T( }( ?" X3 Z( x8 I" |" ]
, {5 i1 P' O; {+ [3 G + T3 M+ A9 G( d
.ORG $E700) _  W8 T( U. k& n' @2 i8 @
  
# o. s2 U. o0 G+ @5 D# Y' H$ _* `* C STY $4014    ;补上覆盖的精灵写入指令; E1 O( e9 ]; ]7 Q+ }% Q- t
PROTECT_DATA:    ;数据保护( V& b$ V' ?. f$ G
PHA    ;数据保护开始- S3 s+ Z- j  U% U, B
TXA6 }- p1 ], _  e& w6 }7 m. N
PHA) `. {  y3 I7 V1 @+ r% _
TYA
: M0 u7 f* U+ F+ _( L* b8 a3 g0 L PHA    ;数据保护结束
' X# f5 }9 a' }( n  X  ]$ \ LDA TITLE_A
( U6 M" h8 X; C CMP #TITLE_A_ON    ;比较是否为标题画面3 p* w6 N! j9 i
BNE RET* Y4 m- W0 ^( E
LDA TITLE_B
' M% M1 ]. m; K' G- a% P* W0 b CMP #TITLE_B_ON    ;比较是否为标题画面* a/ s6 ~2 o+ y' S2 O% m: r
BEQ PPU_STAGE
$ e/ ]) k- S% N5 X  s* v  tRET:    ;恢复数据- p: X6 x" D( v, w9 r( {! [
PLA    ;恢复数据开始2 ~6 }. c$ }0 D; e. p' {- B: Y
TAY/ N6 K/ u( q5 e9 a  J6 A# Q. I9 t
PLA
; y) n9 S% a; m1 E% S TAX
3 A7 U5 d% u8 J/ w2 X PLA    ;恢复数据结束0 D# h0 U. P+ r( O+ c- g- S, M0 B( M
RTS    ;返回
4 e, F% g( \' }, M0 S- aPPU_STAGE:    ;字符STAGE写入程序
  L7 D, K+ ~" i1 x& u8 @( K0 I( N LDA #PPU_ADDR_H " [. c$ D( D8 F
STA $2006    ;设置PPU字符写入高位地址
1 D: p1 i  M% M: q* \; k) @ LDA #PPU_ADDR_L: W& z; K+ j' j" H* T
STA $2006    ;设置PPU字符写入低位地址
! D5 T1 z  m% T" U2 J1 l& M. e: y LDX #$009 H  h; V# a! S+ k
PPU_STAGE_WROTE:    ;写入STAGE字模7 c# y4 v0 ?) C! g! [
LDA STAGE_DATA,X( p) W. Y0 T5 }( [8 F# {, a
CMP #PPU_END    ;判断是否写入结束
/ r0 a/ m6 J$ A! Y! f; \4 P- w BEQ STAGE_CMP
' c$ t" Q6 w' q2 e STA $2007
1 n' \4 b3 T/ f* I& D, j INX% W6 x4 Z; x' g
BCC PPU_STAGE_WROTE
. K- J- I$ H0 a: S. k" s: |STAGE_CMP:    ;选关操作
' w' O) V' E' D8 v LDA STAGE_TEMP
2 u( r; G  M* @, H: I; U$ h CMP #$FF    ;关卡数据初始化条件判断' K' _4 i' q. i/ A) ]3 K6 k
BNE KEY_B
  o+ X- a! y* N* p9 K. k2 o LDA #$00
* V5 z! D& O4 U, ~ STA STAGE_TEMP    ;关卡数据初始化
7 N/ J6 H4 q# M4 P; b4 {KEY_B:    ;关卡减少
3 q, p; Y* `8 P( z. F% p0 ` LDA KEY_ADDR0 Z7 _# h9 Y( q9 S) j- ]* A* N: ~: V
AND #BUTTON_DEC    ;按键B或左减关
# Q% F+ i" f! a+ l BEQ KEY_A
+ ^" U" c4 A$ `2 C: Z LDA #$FF
5 C% l0 R7 ~/ ]7 d) l2 \ STA TIME_LAY    ;重设标题延时
3 \. y' k1 U& k0 v7 l LDA STAGE_TEMP4 ~  H& j' ~% U- k
CMP #$00    ;关卡比较
4 E1 c6 s# r0 @: J% W BEQ KEY_A
& `5 `& i6 N5 k9 s3 O' L DEC STAGE_TEMP   ;减关
& Q+ L  Q. H9 p4 A+ U JSR MUSIC    ;按键音效
2 L6 p7 I5 w& B/ x2 Q/ C! iKEY_A:    ;关卡增加1 p* W8 N8 y. x; q
LDA KEY_ADDR
' m) f" w6 H! @% z$ @ AND #BUTTON_INC    ;按键A或右加关
. L2 S0 U1 G: W. e" h BEQ PPU_NUM_WRITE2 _8 b9 M" H, O7 G$ D
LDA #$FF
4 ?" S% C7 }3 V: {3 t# l STA TIME_LAY    ;重设标题延时
+ |( }7 q4 l: @% c7 k LDA STAGE_TEMP# f! c0 k5 l% r; g
CMP #STAGE_MAX    ;关卡比较  ^$ U+ D3 A" z; Q* Z0 Q
BEQ PPU_NUM_WRITE! h2 ]+ s$ n( V; J' E) w& u! m
INC STAGE_TEMP    ;加关3 \$ b+ X5 y6 z- r$ E1 O! o4 v: }% E
JSR MUSIC    ;按键音效
' u$ _' Y7 @1 N; ~) _PPU_NUM_WRITE:    ;关卡数字写入地址
. I6 p( m# `; t+ h LDA #PPU_ADDR_H. l; ~, R+ R9 t7 K- O
STA $2006    ;设置PPU数字写入高位地址" z# C2 t; e% y$ [
LDA #PPU_ADDR_L
; `# U% Z" x; E  K0 k( a CLC
/ K  h4 ^8 y3 D. {1 y2 O6 h ADC #NUMBER_A& {) p- i2 `+ i/ L% V) D
STA $2006    ;设置PPU字符写入低位地址
' a+ Y8 l9 D* E* [% ]. l  m, @ LDA STAGE_TEMP, l# }( P) @5 R2 p7 X. A
TAX# p, [# W6 S: }0 c7 O$ i6 p
LDA STAGE_D1,X    ;写入数字
. D0 z/ `2 J5 t1 t& U! n STA $2007
2 e3 ^8 L" T3 z0 T1 m) W: I$ `, | LDA #PPU_ADDR_H, r+ A4 W8 }  e
STA $2006    ;设置PPU数字写入高位地址' G0 i" M! Y1 ?6 a
LDA #PPU_ADDR_L
  ?* W7 A" g$ Z' y) d CLC
$ X/ z6 Z# t5 |# t1 P ADC #NUMBER_B1 u9 t7 }+ Q2 c
STA $2006    ;设置PPU字符写入低位地址
% k9 J/ `! G( @! k3 `+ V LDA STAGE_TEMP8 Q, H. U. \: t+ p
TAX
0 S" B  v* D; s, D! L LDA STAGE_D2,X    ;写入数字; H$ c7 q3 U$ A# S
STA $2007( c8 i& }' H" m: C. @! W
STAHE_WRITE:  u9 ]$ f$ ?: P/ @1 ^
LDA STAGE_TEMP
6 }; u- y0 v, N STA $2D   ;初始关卡写入
: V' S: D! l3 ?/ DPPU_RTS:    ;恢复数据
3 O7 l# F& f5 b9 Y8 o PLA
# A- Q: x* O9 @( G2 C TAY
4 _, _3 v; X" i& k# n( | PLA
0 ?" O: W+ F$ D# Y9 D6 X TAX7 q( C  v' G4 }3 w9 Z- `7 A0 t4 H! l
PLA
! u/ ?( u! L/ l% M. i: a! N RTS5 d9 q9 J* D+ R1 q$ x3 L
9 k5 j" _' C/ F6 b
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
2 Z! u& x  w: l8 _6 W" K" Z .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
. ^) F) a5 w4 K( z5 f
0 Y  z+ w" `9 O" Z; K8 TSTAGE_D1:   ;关卡数字
/ O1 f, O9 j6 v6 k .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_82 U4 G* p( o8 Q" E
; Y& k3 a* Y: K" b  C+ x. C7 ^
STAGE_D2:   ;场景数字
) O. d5 h# m; V+ K/ }9 O* r: Q .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! k8 v% V1 V4 {! h3 ^( M( G
8 l- o' A4 \2 @4 [+ r$ n+ f
2 g2 f1 p3 i2 G
MUSIC:    ;按键音效( Z6 {; J7 Y3 }" C. P% O6 Z
LDA #$3B    ;音乐号7 l$ i+ s' h, G
JSR $919E    ;系统音乐调用1 {+ c+ I- h- f7 t
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2606 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-9-18 14:20 , Processed in 1.086914 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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