EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
% u, B9 s! f) c- r; m# `) |;作者:FlameCyclone 2017.4.1
$ }  s$ j8 m0 v$ a. V$ E2 H  J/ D$ h" b. o9 a
2 B+ L2 d6 M# i. |/ c1 E
;配置数据
- N9 I% j. u5 A# WKEY_ADDR = $F8    ;按键地址
3 Q& |' O* l" R! \STAGE_TEMP = $6010    ;关卡临时地址
9 z2 `8 j+ H# ~. eSTAGE_MAX = $0E    ;最大关卡数. ?2 U* }; B3 B2 a& w; x
TITLE_A = $20    ;标题条件A% p1 w* i5 c; X$ p
TITLE_A_ON = $02    ;标题条件A有效状态判定  ]3 J2 P% v, {: L" P# i% l
TITLE_B = $21    ;标题条件B
1 G& N' z3 C4 E/ b! FTITLE_B_ON = $03    ;标题条件B有效状态判定
8 o# P! w# o8 Y  Z; l; hPPU_END = $FF    ;PPU结束符( x  |9 j4 r' s0 q% O
TIME_LAY = $4A    ;标题显示延时地址) v( P! @, A9 i$ q5 i4 F$ ~
BUTTON_DEC = $42    ;关卡减少按键- a; h, I" k) R( r$ F1 |$ g
BUTTON_INC = $81    ;关卡增加按键
4 I1 [# q3 q$ Z6 k# aNUMBER_A = $06    ;数字A距离STAGE偏移量
1 \) }% k; w1 u% p$ T0 D! uNUMBER_B = $08    ;数字B距离STAGE偏移量- D0 @$ @2 n: G. g* Y5 ?' ]
PPU_ADDR_H = $23    ;STAGE写入地址高位( _; d" z+ U! B9 V7 [
PPU_ADDR_L = $8C    ;STAGE写入地址低位
8 b9 \7 ~9 I5 r& B3 ]CHAR_S = $A2    ;字符'S'
! m6 d3 G2 U% ]. v# V1 d7 HCHAR_T = $A3    ;字符'T'7 A2 }4 V$ y% P* C
CHAR_A = $90    ;字符'A'
! f' j6 t  h: `1 u& P& ^CHAR_G = $96    ;字符'G'# w0 Q& U4 i9 g: V
CHAR_E = $94    ;字符'E'
+ i7 g3 O  U$ K% ]4 e/ V0 bCHAR_SPA = $00    ;字符空格* P! N8 m7 |5 H' R7 `
CHAR_LIN = $AE    ;字符'-'
/ R) c! j# o, bCHAR_O = $9E    ;字符'o'
; E% a  _, {* T  y+ Z0 JNUM_1 = $81    ;数字'1'; l8 g: U( ?; }5 W
NUM_2 = $82    ;数字'2') G8 f% I5 h! _9 O
NUM_3 = $83    ;数字'3'
2 i1 O' X' a/ m, h" aNUM_4 = $84    ;数字'4'
$ t- C2 @; Z) O/ mNUM_5 = $85    ;数字'5'4 M% j1 u8 `5 s6 b
NUM_6 = $86    ;数字'6'
: r( T2 r: R! p' C& |( ?8 L6 ?NUM_7 = $87    ;数字'7'/ z8 z( b5 H" _/ O2 A0 J1 ?' t  r: r
NUM_8 = $88    ;数字'8'; I6 M$ e' J8 d1 `7 T0 K# c
NUM_9 = $89    ;数字'9'
: V2 ~: l/ p) s$ T; Y0 `" g7 s& S% ?NUM_0 = $80    ;数字'0'5 F( `# X7 A4 V* X% H
: }" S: p0 z8 X6 f' p/ g+ g& c
.ORG $F82A
( U0 l  w; e# M0 L/ y JSR $E700' K% Y0 r7 M4 w1 o: k7 u5 o
( L8 a0 o1 H5 ^+ g
9 i2 k, R- M) H0 N9 V4 j" J
.ORG $E7004 d( U3 Z0 G/ G, Q
  
8 K* ^& _0 \1 G; d" F) a  z. B4 Y STY $4014    ;补上覆盖的精灵写入指令, R; G9 x$ c: K; ~9 E
PROTECT_DATA:    ;数据保护: ?$ f) V/ B8 B/ A2 @& }5 {6 ?
PHA    ;数据保护开始. d5 `- ^5 q1 [3 f2 G
TXA# d, M7 I9 \5 p6 s1 t3 @: O
PHA
1 f$ k0 |0 k/ C6 Q# G8 ]7 ^ TYA& w# q/ z( B; q8 i$ E/ j3 Y6 N
PHA    ;数据保护结束
2 O1 n. t& L! g' x: m( E4 w LDA TITLE_A0 d' J# F! Y8 Z7 x* T# P
CMP #TITLE_A_ON    ;比较是否为标题画面
; C# w+ ~9 t4 W( I" x BNE RET, N7 G0 k) P6 k/ K5 I
LDA TITLE_B
1 @9 f: w3 d' E. h CMP #TITLE_B_ON    ;比较是否为标题画面& ^1 K6 @: O/ n  l2 f- ]
BEQ PPU_STAGE+ Y) R9 x; b. [, {0 ~
RET:    ;恢复数据
3 ?, K+ K& y. a! d2 z& f PLA    ;恢复数据开始* C3 S- G) A  R9 U" z: F
TAY
. _7 ?) Z+ f5 {/ J+ p* O PLA
: k* \: \; P  y TAX
$ s; m* m5 X* ^- {( ? PLA    ;恢复数据结束
+ q' L+ h1 Q) ~5 j RTS    ;返回
3 J8 O5 |: b4 ~1 p% qPPU_STAGE:    ;字符STAGE写入程序
7 }, O0 @1 i! m$ n& j: y LDA #PPU_ADDR_H
( }2 B  k$ X! q* R/ W' I5 J STA $2006    ;设置PPU字符写入高位地址
8 z8 K, N7 N) C8 D' h LDA #PPU_ADDR_L
2 O6 h7 g4 f0 L STA $2006    ;设置PPU字符写入低位地址5 z4 J8 d  E6 f8 d
LDX #$00
! s; y9 _! x" HPPU_STAGE_WROTE:    ;写入STAGE字模
! p# j6 _. m7 v2 t% I/ p8 ] LDA STAGE_DATA,X
( g+ j; \  `6 x; x9 N- d5 \ CMP #PPU_END    ;判断是否写入结束
* w' g. g/ j4 c, Y BEQ STAGE_CMP
2 ]2 G, o' w3 |$ t) O STA $2007
0 B' b! H2 J& x( V: B+ k/ J INX
( ~* }! R2 W1 \2 K$ @ BCC PPU_STAGE_WROTE; i1 _4 |% i* A; t
STAGE_CMP:    ;选关操作
$ N: c7 r! L# y! a5 t( I+ a! ` LDA STAGE_TEMP
/ m# T* K1 F! m" r: y) X# _% a) s" R; X CMP #$FF    ;关卡数据初始化条件判断  z7 i: u, n* W* L
BNE KEY_B
7 W: @. W, C7 S! Y+ R/ g LDA #$00
2 @4 s1 ^% A( \. Y, n6 L9 k STA STAGE_TEMP    ;关卡数据初始化
1 [8 n* g* s) V2 ]9 eKEY_B:    ;关卡减少
1 U9 L- r& S" L LDA KEY_ADDR
- E2 G# h, d/ s+ [* Z- o AND #BUTTON_DEC    ;按键B或左减关! h8 v8 X1 Y. p2 X8 V3 g* ]! [
BEQ KEY_A
* `& h1 p2 m1 H6 T/ W LDA #$FF. t. c4 L4 v+ f
STA TIME_LAY    ;重设标题延时
. S5 d& d5 O3 g1 c LDA STAGE_TEMP$ @: W+ n+ M" @6 |1 |2 V
CMP #$00    ;关卡比较
) ~7 Q& V/ G6 w BEQ KEY_A' J8 ~5 z7 g) p0 {
DEC STAGE_TEMP   ;减关
- I$ L, E7 M6 |4 c# m9 }: H JSR MUSIC    ;按键音效
. a4 t' ^7 u+ x( J& \KEY_A:    ;关卡增加& a: j6 w% I: M$ E/ H
LDA KEY_ADDR
3 R/ s# r; L& L1 o( p- z2 m/ e AND #BUTTON_INC    ;按键A或右加关7 F& e8 M" h/ I3 O; m6 c
BEQ PPU_NUM_WRITE& H! W5 S* q7 H% u. f
LDA #$FF' T6 m8 N1 _5 H3 G, Y
STA TIME_LAY    ;重设标题延时3 u; A5 m& _& E/ a) G8 T  j
LDA STAGE_TEMP
7 w3 T# X. ?: a: z8 f' N  W CMP #STAGE_MAX    ;关卡比较6 R8 D1 J6 j8 |1 b
BEQ PPU_NUM_WRITE
" k7 |# y/ b% V6 C) G2 G) b! }* G INC STAGE_TEMP    ;加关7 _% b# ^: m# F3 a* D- S" W- @' k. h0 J
JSR MUSIC    ;按键音效# U% O2 _1 f3 G8 J# F3 i
PPU_NUM_WRITE:    ;关卡数字写入地址+ {( p# f% ?" j5 b7 h/ r
LDA #PPU_ADDR_H
' s$ I+ j$ o2 m- P STA $2006    ;设置PPU数字写入高位地址
& v0 k3 O8 t$ i. g7 x LDA #PPU_ADDR_L
) U! F) ?# ?, {( J$ s& W0 K0 w2 t) `# s CLC
3 x8 k& B8 J3 Q9 V8 Z ADC #NUMBER_A+ k9 ~: L; V6 l9 S+ i
STA $2006    ;设置PPU字符写入低位地址
! Y' c; C! u) L: G# ^( x8 t LDA STAGE_TEMP
3 ^% f7 o1 t; v; {0 U0 ? TAX
2 [( }% B% v/ g5 l! V LDA STAGE_D1,X    ;写入数字5 l! O' ]% U8 i7 i6 B3 x- R# a
STA $20075 p& T, n6 r6 u  H& Y) Z% S1 V
LDA #PPU_ADDR_H2 C% q; u# z# |* w. y! @
STA $2006    ;设置PPU数字写入高位地址
# f6 U) q$ ~! p# {  b3 O LDA #PPU_ADDR_L
0 @# e0 S9 A2 S0 ]0 P- a5 Z9 T CLC
" O( j& P7 B$ E6 N9 |  ]; n ADC #NUMBER_B2 r9 z+ f' Y  e' y$ V
STA $2006    ;设置PPU字符写入低位地址
! O! p! d2 L' b. H; U/ J1 x LDA STAGE_TEMP
" Y* G+ L3 g/ }$ G$ u; k1 R. |% V" ] TAX* I( A: o4 M* v, I
LDA STAGE_D2,X    ;写入数字
5 m- X. y0 Z/ G# D STA $2007
9 l+ E3 V3 m% hSTAHE_WRITE:" o( Y$ a/ a# U
LDA STAGE_TEMP- ~& c2 [" k$ \4 W7 t# ?* q
STA $2D   ;初始关卡写入6 T. B: @- y) S" l$ K
PPU_RTS:    ;恢复数据8 y6 {' Q' m1 j( q* O
PLA  r, U2 Y, N3 T& M5 b' E3 Q5 f
TAY
& R+ m+ Q, {7 U) y4 M/ a PLA
" k# c1 \7 `$ A8 R5 j7 S  D: _ TAX
# X5 o1 D9 ^) Q' F  Y$ A" G+ ` PLA
) R$ e# L4 v8 c# L, N RTS
4 y9 Z  X5 b, e# l9 m6 G* u ! o. h% ?7 ?+ a# w0 A0 |+ @5 B, X  }
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据7 z: g) ]  f8 Q5 ?1 Y
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
: N+ f5 G& T! ~2 e% p0 r
6 x$ T3 C8 p% g7 k7 y/ YSTAGE_D1:   ;关卡数字
: C7 }$ D, F$ Y3 ^" F5 m! ~6 \& 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
1 H7 v5 e! B" Z+ G* D. a4 w, r/ P9 S. T
STAGE_D2:   ;场景数字+ B2 q5 _: \, p
.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
$ }! q7 k: S9 f9 M  }3 C
. j8 y2 P9 M: ^* k8 b7 M 8 {8 o1 ]( i7 z) n+ `
MUSIC:    ;按键音效; M& M6 |/ J9 {
LDA #$3B    ;音乐号
4 g. L, F+ ]7 K. d9 C! e9 q JSR $919E    ;系统音乐调用
. b1 f  w1 t5 ?0 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2379 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-1-11 06:54 , Processed in 1.060547 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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