EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
; N% U6 S) t( L;作者:FlameCyclone 2017.4.15 V! N2 v  D4 I3 U7 X3 S& P

: t9 r0 I9 n+ L! F) b- ?, g: H$ p. d4 C) Z' L5 _) u
;配置数据, C, T) b& L& o" i
KEY_ADDR = $F8    ;按键地址
$ J6 b7 Y7 A& w2 m4 b5 FSTAGE_TEMP = $6010    ;关卡临时地址6 C! u# |2 x2 d/ }% c
STAGE_MAX = $0E    ;最大关卡数6 V% b: f- R0 u
TITLE_A = $20    ;标题条件A- |0 c7 r; A; [: M9 ^  s
TITLE_A_ON = $02    ;标题条件A有效状态判定. q( b3 A$ e+ R7 }! D& K& N- G9 b
TITLE_B = $21    ;标题条件B( u; o/ v6 f7 g, e7 _' w* R* _2 x
TITLE_B_ON = $03    ;标题条件B有效状态判定
: J% _% O2 M' WPPU_END = $FF    ;PPU结束符* l/ G- n; n, Q) _4 c
TIME_LAY = $4A    ;标题显示延时地址
) e, E' P$ `$ E7 T! l8 e' IBUTTON_DEC = $42    ;关卡减少按键
7 m1 H+ C% R' S9 |4 o; z" |BUTTON_INC = $81    ;关卡增加按键
, J% {5 y9 Q7 C" G& B2 `NUMBER_A = $06    ;数字A距离STAGE偏移量1 t; N# x  ?1 C; J
NUMBER_B = $08    ;数字B距离STAGE偏移量
0 }# Y2 ?1 G$ j" TPPU_ADDR_H = $23    ;STAGE写入地址高位! c/ ?+ l, }- _, A9 w3 \& `! E: b
PPU_ADDR_L = $8C    ;STAGE写入地址低位% [! D  n+ y$ I
CHAR_S = $A2    ;字符'S'
* Q* q1 X; J5 [: [0 OCHAR_T = $A3    ;字符'T'! g% y9 [. [+ @8 y
CHAR_A = $90    ;字符'A'
% f# {& B; j! Q# X$ [0 E6 dCHAR_G = $96    ;字符'G'# t) z- ]8 k1 u
CHAR_E = $94    ;字符'E'
1 H+ H/ g9 \' }5 KCHAR_SPA = $00    ;字符空格
) p8 N2 N% M6 E/ R2 O4 dCHAR_LIN = $AE    ;字符'-'
4 i" [* I* E7 _1 _6 T5 p2 Q* ZCHAR_O = $9E    ;字符'o'
$ n& N" O- ~8 J& m7 S) ]+ v  NNUM_1 = $81    ;数字'1'/ Z  P7 K- b) c7 C# |2 @0 ~
NUM_2 = $82    ;数字'2'
, R; I+ D  z! vNUM_3 = $83    ;数字'3'  w+ E& {: }2 A! I) o
NUM_4 = $84    ;数字'4': f8 L; z& j$ r9 C2 K' I- }, H- Z! |
NUM_5 = $85    ;数字'5') Q/ W5 p* M  Y  \2 Y0 `9 y0 m
NUM_6 = $86    ;数字'6'
+ c. _6 `5 G; lNUM_7 = $87    ;数字'7'
/ ~  ~+ b1 [/ @* ^1 bNUM_8 = $88    ;数字'8'
" ?0 \. T# R6 e8 w* rNUM_9 = $89    ;数字'9'5 Z$ o6 Q1 a8 w$ f
NUM_0 = $80    ;数字'0'4 B- A+ Q# \3 f
( ?( j' ~3 W+ ?, ^; B1 N, K# p3 F
.ORG $F82A
, L# G2 O9 s' S* j  E  J- T! T% v9 D JSR $E700
3 S- L( {' |" a9 s- P& O6 d : |7 S4 W7 H% C9 q7 ?# J

" ?! ?6 o( N; M$ ?5 b; u: Z4 V .ORG $E700# x* l% u! p  Y, f. _% V! t$ y
  7 B% G0 u6 H& o/ {5 S+ ?# P
STY $4014    ;补上覆盖的精灵写入指令' U* t; R; k: D. w
PROTECT_DATA:    ;数据保护
* `% N% T! j1 g* P& F" e. B PHA    ;数据保护开始
3 }9 \. U4 G" V  b TXA
) f- Z" R5 G1 E! I' M PHA
( g! r, }& u2 N. R TYA) g, D4 P2 j2 i0 f
PHA    ;数据保护结束0 P$ w! x* i0 Y0 y* ]  v
LDA TITLE_A& n; x! {+ `4 H! w: o
CMP #TITLE_A_ON    ;比较是否为标题画面
: t4 S0 |9 B/ \3 z BNE RET2 i6 T5 q3 |$ k+ z/ ~
LDA TITLE_B
* Y. F" h$ o+ g; i/ S9 t CMP #TITLE_B_ON    ;比较是否为标题画面
- a, D" e3 Q$ \( H7 y  p$ b BEQ PPU_STAGE
/ d- r) S- J3 e) }, @9 lRET:    ;恢复数据
  g0 f* C' R; e PLA    ;恢复数据开始% P+ ^, I* j0 o! F
TAY0 f" l+ f3 Q- ~. F9 N. X
PLA
* _+ z' H) g$ O5 m1 d) M+ L2 I) i TAX% v6 s( W3 W' ~! T  e, G% C1 j4 S
PLA    ;恢复数据结束- y3 c' ~5 ?8 U+ l
RTS    ;返回
8 g. s, H+ B' p* O3 N) ?PPU_STAGE:    ;字符STAGE写入程序  e8 \1 n4 t: ?' Q: {. p/ K* }
LDA #PPU_ADDR_H
+ c0 c6 W8 n) e STA $2006    ;设置PPU字符写入高位地址0 H; O2 L, Z% U. ]" @5 k; s# i
LDA #PPU_ADDR_L0 K/ l; K# G' V2 Q9 F$ c1 \; T8 W/ D
STA $2006    ;设置PPU字符写入低位地址
. [0 K0 n5 q- d0 q  F LDX #$00$ I6 z1 w. B6 k5 L& E# Z
PPU_STAGE_WROTE:    ;写入STAGE字模( a/ _, @5 x2 C
LDA STAGE_DATA,X4 z, p& D6 W7 E. Q4 }* \
CMP #PPU_END    ;判断是否写入结束
. F3 x+ Z5 _1 r4 }7 q$ H BEQ STAGE_CMP6 H2 n  z4 Q4 Y6 F( P3 J3 \
STA $2007
- W# I* w0 I! c1 }0 c( k INX  ?! ], @, t/ ]0 }' f$ G, K
BCC PPU_STAGE_WROTE/ c/ g& C3 @' f3 Y
STAGE_CMP:    ;选关操作1 N* }  t( d% T5 V; _
LDA STAGE_TEMP- a& k5 _  A0 S* h: p" [& g. B
CMP #$FF    ;关卡数据初始化条件判断% X- k# _  m5 z5 ?6 ?* G) G
BNE KEY_B. Z) n/ w4 ?) g& v" J; z* S
LDA #$00
7 H6 r" Y7 |$ G5 z! w STA STAGE_TEMP    ;关卡数据初始化9 J( o' G! W) u8 p  {
KEY_B:    ;关卡减少, ]# P8 O% ^9 S( `( e& v
LDA KEY_ADDR6 |% l0 w3 V3 v! F+ _  {
AND #BUTTON_DEC    ;按键B或左减关) J" J) ~; G' V3 ~: i: u3 L, `
BEQ KEY_A
0 H0 L" r6 }% O% _8 N LDA #$FF
! V7 l( J# |( ~( j9 F" }) t; X% N% j/ j STA TIME_LAY    ;重设标题延时
6 u8 i- Z. x* k, b' \( w) {( t. r  O LDA STAGE_TEMP& ], l& O* _/ e6 x% K$ L( Q' P
CMP #$00    ;关卡比较
5 c6 ]& v9 t4 _5 H( m BEQ KEY_A, [9 s1 P' V6 t
DEC STAGE_TEMP   ;减关
( n# }3 i$ K; P. E2 M JSR MUSIC    ;按键音效
) u2 k# z  c# X5 oKEY_A:    ;关卡增加$ Q$ \; q. a$ `/ F$ \$ d  x
LDA KEY_ADDR
/ H1 B  ~* c3 x2 _3 n' Z- ^ AND #BUTTON_INC    ;按键A或右加关- d7 c6 L9 G, \" {0 J6 S$ D7 T
BEQ PPU_NUM_WRITE  Q! n9 k% Q* K* o$ h  a% U7 a
LDA #$FF
6 x6 K1 ]7 E# R" R STA TIME_LAY    ;重设标题延时
8 h- a1 n' h* j. b2 A LDA STAGE_TEMP
7 ^0 Y& b* A6 M) S CMP #STAGE_MAX    ;关卡比较% K4 j9 C6 A$ x7 B9 N% a1 T! x
BEQ PPU_NUM_WRITE, M6 I/ H8 j, ?+ Q* Y. t2 `" q& @
INC STAGE_TEMP    ;加关. g( L5 L7 r* ]. y. F
JSR MUSIC    ;按键音效
3 S& V8 d% i( c. yPPU_NUM_WRITE:    ;关卡数字写入地址
8 H/ r6 M2 x% ]3 G1 U+ G LDA #PPU_ADDR_H# ?# h7 w7 \5 L* |  ~
STA $2006    ;设置PPU数字写入高位地址1 m" T# h. U; T) }* a8 Y9 I2 [/ x
LDA #PPU_ADDR_L: e8 m; J1 @: Z% v
CLC5 n  `( ?* _2 W  r' K8 g# m
ADC #NUMBER_A
! g8 X( U% Z$ ?" N! q0 F( D+ z STA $2006    ;设置PPU字符写入低位地址+ H" i( n! v  ~1 f. s# e- U9 J
LDA STAGE_TEMP
1 p. {: e7 }, r( ` TAX
, T5 N4 n5 j' l. j/ H LDA STAGE_D1,X    ;写入数字" v& m0 g" s- ^; k: ^
STA $2007" I* t: b5 O, g
LDA #PPU_ADDR_H1 v- g$ l- x0 u8 p  ]
STA $2006    ;设置PPU数字写入高位地址, ~6 _6 u8 ?( Q
LDA #PPU_ADDR_L: \9 k1 ~2 ~9 V7 l
CLC+ P2 m$ x, R. m, D: k
ADC #NUMBER_B
+ V% v9 ?- [" Y  i: F$ ^* k STA $2006    ;设置PPU字符写入低位地址
7 _- n7 f( a% H+ J- b/ t9 @0 l LDA STAGE_TEMP
+ Z# Q; L2 [" I7 E. i; [ TAX
! }  e, C8 K2 c LDA STAGE_D2,X    ;写入数字
) q$ D2 B* q! I9 G STA $2007
3 i/ y$ j0 f8 u3 OSTAHE_WRITE:
9 ]8 }" L# @0 }9 p! I  D. W LDA STAGE_TEMP* Y) T# z4 X& O: P+ ?1 j
STA $2D   ;初始关卡写入
7 p! w! M5 ^* N" l% t$ FPPU_RTS:    ;恢复数据
+ c/ @" }. u& c PLA
" ~1 Y$ \8 W; p& \& {0 W: U( p TAY5 X/ _6 j+ o1 @. L5 m7 V" S* c( y
PLA
! K! n2 L8 @2 q5 m TAX/ s( K% r4 g$ D' l
PLA1 S: {( f& j; i% M
RTS: H  A( {* y; n2 y! i1 |5 i

. q# Y8 a$ d& O5 P3 ^STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
/ \: A& @; b" O .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
/ Q4 u1 Y# p  T0 l$ p7 S- G" q4 _/ B0 s6 V. B' ]4 C' o
STAGE_D1:   ;关卡数字7 B* M, {. g2 D
.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' G! @6 R' _3 p) t
2 Y) z8 W' b8 T: V9 S5 j
STAGE_D2:   ;场景数字* S7 F- t9 f8 N  k0 b
.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, H( T# s; M% ^0 i5 N

" u3 f# R$ d; _4 ]& { , a& o1 O9 P3 C' @* z) a7 G
MUSIC:    ;按键音效
. z% X4 r: x1 g: Z/ A) Z+ w LDA #$3B    ;音乐号
$ D; ~: w1 b5 N0 v/ E& ~9 k JSR $919E    ;系统音乐调用
$ [! [1 W1 Y/ }7 F+ b  l: l: p 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2735 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2026-2-6 12:20 , Processed in 1.081055 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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