EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
' Y& ~3 d+ C1 R; R;作者:FlameCyclone 2017.4.1
! s4 W' U- f% S2 ?1 V. ~/ b/ r# j

( y2 u( C* m/ g; o;配置数据
4 H  f3 j  A! @' Y! z) ?" eKEY_ADDR = $F8    ;按键地址
% [" W+ h; `. Z. ^9 t5 P; e5 u7 wSTAGE_TEMP = $6010    ;关卡临时地址* }! v5 X2 x! T9 n% t# @
STAGE_MAX = $0E    ;最大关卡数
& Q# i+ U; Q' x2 P0 eTITLE_A = $20    ;标题条件A1 l7 W. y+ Z0 v5 `9 D
TITLE_A_ON = $02    ;标题条件A有效状态判定5 r) j7 a/ k' l/ z5 L: S6 `
TITLE_B = $21    ;标题条件B
# s3 l# q2 \! r, |TITLE_B_ON = $03    ;标题条件B有效状态判定; x  r6 l. B' t- y
PPU_END = $FF    ;PPU结束符) P' ]- j, l( q: E3 ?8 R
TIME_LAY = $4A    ;标题显示延时地址% S0 k! p: x8 F" b% @* o; p2 f3 @
BUTTON_DEC = $42    ;关卡减少按键
9 w; w7 X2 p% M* q3 Z, O' `* qBUTTON_INC = $81    ;关卡增加按键
+ S4 [6 u: [2 m3 N% }; o- _0 `3 KNUMBER_A = $06    ;数字A距离STAGE偏移量
9 H9 o1 g$ x% H* i8 \8 F+ G. ^NUMBER_B = $08    ;数字B距离STAGE偏移量2 X# @1 v4 d6 r2 c
PPU_ADDR_H = $23    ;STAGE写入地址高位  S0 |# c; X. g: q+ r1 v* T, ?
PPU_ADDR_L = $8C    ;STAGE写入地址低位
# W2 F/ U$ @" sCHAR_S = $A2    ;字符'S'$ w3 q6 v6 h& t! a) |" Y) c7 W
CHAR_T = $A3    ;字符'T'
3 ^7 l  o( F3 \9 zCHAR_A = $90    ;字符'A'
: y6 c' @8 f0 y) n% H+ ~- N, xCHAR_G = $96    ;字符'G'' o; a# F# H) m3 j  }( ?
CHAR_E = $94    ;字符'E'$ T' W* t  Q5 m; A7 o* S) }+ P
CHAR_SPA = $00    ;字符空格
- j& A/ h7 I8 pCHAR_LIN = $AE    ;字符'-'1 P9 ^. R5 r" u+ d. [) a6 d5 U
CHAR_O = $9E    ;字符'o'
* \2 G% J" g; `9 B; D  ~) wNUM_1 = $81    ;数字'1'
2 r- F' J+ q( H7 ~; JNUM_2 = $82    ;数字'2'
1 Z1 @( |7 _6 J( S2 _1 U1 i+ NNUM_3 = $83    ;数字'3'5 m) q6 ]  m1 s
NUM_4 = $84    ;数字'4'. }' Z6 h6 C( |9 F/ g# p
NUM_5 = $85    ;数字'5'' ?) X7 B5 \" }2 M; Z$ ^! f
NUM_6 = $86    ;数字'6'
" Y* i4 Z) q6 JNUM_7 = $87    ;数字'7'
, p! R& p$ y) c5 Y: C  MNUM_8 = $88    ;数字'8'
" k. i5 ]$ ~7 S8 n, wNUM_9 = $89    ;数字'9'
3 B1 \; z/ q" e6 HNUM_0 = $80    ;数字'0'0 H3 K, ~% h! d& J: i' m; t. I
" m3 }8 J$ {" R1 J
.ORG $F82A
! U  {# b! ^& \0 }4 U3 Y+ p JSR $E700
# A4 Y$ T( l/ W' d+ O
- w5 _* J! j5 w1 R1 u! R/ ^& L % f9 T6 r+ k5 Q+ N) ^
.ORG $E700* Q/ i  g8 q$ d; ~, b4 k' S
  0 `/ ?6 {8 i  x2 u6 b. L# b1 ~* B
STY $4014    ;补上覆盖的精灵写入指令
$ {: j7 @2 R( d5 s& uPROTECT_DATA:    ;数据保护1 u8 O; S) Y# D  `5 l- s
PHA    ;数据保护开始
1 x) |& `& l2 m4 U TXA2 u. D# P, d4 ]+ w! a6 D
PHA; N+ @/ {( M: z
TYA
& X9 Z1 r3 V: o* f" ^, s% m PHA    ;数据保护结束
/ w! Q, m7 {9 o. X$ c/ \ LDA TITLE_A
& q% B* Y4 K" a: p CMP #TITLE_A_ON    ;比较是否为标题画面
$ N; X1 S- A# S! I2 u2 U6 `) Y& z BNE RET, \1 I& d, P4 b, R
LDA TITLE_B
0 X9 ^& \, b- w$ d6 W/ Q8 N2 } CMP #TITLE_B_ON    ;比较是否为标题画面
4 @. q7 I1 Q! J; K+ W BEQ PPU_STAGE6 s- D3 T* e8 r
RET:    ;恢复数据
. f* D5 z, [: x2 M. d" {( f PLA    ;恢复数据开始
  a) u! L' y5 h TAY
$ |) ^5 d" ?+ L! p% k9 y PLA
! z$ ^9 o3 o7 K+ m* k  G$ n! _ TAX
% A' w3 W. T) G% H8 B9 h$ h. u PLA    ;恢复数据结束3 _7 b. \, O+ @" `! e
RTS    ;返回- j& V" T/ Z# E: b1 M: E
PPU_STAGE:    ;字符STAGE写入程序" j6 p2 e: M2 M( [- f- i# V
LDA #PPU_ADDR_H ; k, q, L: A4 T# \) l7 v' V
STA $2006    ;设置PPU字符写入高位地址) `5 X  p- e. ?) x2 m( `2 }) U( f
LDA #PPU_ADDR_L
6 {7 B! A) H) z1 a& _3 p3 [ STA $2006    ;设置PPU字符写入低位地址) c! [1 X) h$ O2 r; |, K" _1 C! k& P( G
LDX #$00
) V, F4 V$ g6 @1 \/ QPPU_STAGE_WROTE:    ;写入STAGE字模
9 e  p- \7 h- g; V# A LDA STAGE_DATA,X; `  `% |2 \, `
CMP #PPU_END    ;判断是否写入结束7 l# @2 ~0 R1 Z# [0 F
BEQ STAGE_CMP
% k1 o3 s% ]1 l( e' ? STA $2007* N  m& J7 e3 h0 v
INX- O% C/ v) a" ~- r- y) e; W, z
BCC PPU_STAGE_WROTE. S1 j  A3 o% f% y' j" E. `
STAGE_CMP:    ;选关操作
8 v6 U, e4 h: \. U0 h LDA STAGE_TEMP7 ^1 T- S! N9 S
CMP #$FF    ;关卡数据初始化条件判断  W% e% y# v1 E  B' m8 C
BNE KEY_B
* }8 U/ T5 V6 C5 n LDA #$00: @& o# V+ o& Z. P; i
STA STAGE_TEMP    ;关卡数据初始化/ G) ^# h9 l4 s. t$ a9 E! |" p
KEY_B:    ;关卡减少% j- s) I2 ~7 O$ D; o( u6 N
LDA KEY_ADDR
7 x8 t, C6 W" M; A/ D: Y7 F+ N AND #BUTTON_DEC    ;按键B或左减关3 B8 x5 G6 P$ K+ \' o
BEQ KEY_A
& K5 ~- k' ^& d7 h7 }, s7 y LDA #$FF! e: O8 @& |6 @" S: ]
STA TIME_LAY    ;重设标题延时! [: Y* j0 y6 }. b! s. T
LDA STAGE_TEMP7 p9 _+ M# k8 W1 O
CMP #$00    ;关卡比较
% s5 D- c) M1 n' P6 r. }5 A) n BEQ KEY_A$ F+ h0 S5 u; ]
DEC STAGE_TEMP   ;减关
+ W% [7 m; K/ v- R! P4 R JSR MUSIC    ;按键音效
( \- [9 k& V) i5 K+ ], PKEY_A:    ;关卡增加9 L) b- a  n& Y+ G' i# b
LDA KEY_ADDR1 X9 V$ H* y$ s5 D! _/ e
AND #BUTTON_INC    ;按键A或右加关0 V9 d4 b, b7 f% B9 ?
BEQ PPU_NUM_WRITE  a" n- G0 T$ _2 Q  A& v6 w2 f
LDA #$FF
2 W) _8 q1 k1 I8 Z STA TIME_LAY    ;重设标题延时& J; G, t  n9 J) d, |: u* t, ]
LDA STAGE_TEMP
6 [7 p# r$ u9 A/ |% O CMP #STAGE_MAX    ;关卡比较
& g) n3 f0 S  L BEQ PPU_NUM_WRITE
' N7 r, g/ Z9 l! |2 d# Y4 [  ?- h INC STAGE_TEMP    ;加关
& T* e7 j6 q- R( z" e3 u3 ^ JSR MUSIC    ;按键音效2 ^: U) y. @! o8 ^- _/ q7 \7 x
PPU_NUM_WRITE:    ;关卡数字写入地址
( I5 O# h; K% [8 |* ^ LDA #PPU_ADDR_H
* T" y7 ?2 Y' V" _( }, k STA $2006    ;设置PPU数字写入高位地址
0 V' N. z! ~6 P* h LDA #PPU_ADDR_L
1 |& B, v$ i, t9 F CLC
- n* G% o* k' |1 r" C% G+ {% R ADC #NUMBER_A
# A  M7 b* l- a8 ~- u STA $2006    ;设置PPU字符写入低位地址
) K+ g2 R: L. V' e- A/ P LDA STAGE_TEMP
6 e% p( y% W4 x* R5 [, | TAX7 Y' ?* E! j, p
LDA STAGE_D1,X    ;写入数字
2 O/ s0 t3 u# a0 {) N STA $2007& i* E! G- H0 P- t* j
LDA #PPU_ADDR_H
" M1 {5 K+ O* n6 l0 s2 f' k; v STA $2006    ;设置PPU数字写入高位地址5 O" F0 n1 q" k* [( d; V1 S7 M3 T
LDA #PPU_ADDR_L# ]5 ~) u9 K2 {% G/ j, i
CLC% }" t3 K& s. y- |. k
ADC #NUMBER_B
6 b: M: f. y2 i+ _7 f STA $2006    ;设置PPU字符写入低位地址, G0 s. t& s  w9 O& V% T
LDA STAGE_TEMP
+ o* ~" S  `% b9 [. @, t TAX( t0 e9 ?) z+ H- i) ^7 T* y) D, F
LDA STAGE_D2,X    ;写入数字. l# y" E4 }' q# n0 C2 f
STA $2007% G4 \$ E* x8 Q* {5 n, [
STAHE_WRITE:
: @! Z' v$ p$ e; K/ C LDA STAGE_TEMP/ k! q" a* Y7 N2 w. [9 B
STA $2D   ;初始关卡写入( I7 [/ L+ L9 D! A8 z
PPU_RTS:    ;恢复数据
5 t6 V' A0 n& m) J9 | PLA
6 I2 ~7 H( g3 r4 ~. z+ a" g; m/ P TAY
( F( ?& n: O7 d/ y PLA
6 f) N" F3 g3 W! D  h3 w4 u9 p$ q TAX" h, p# s$ P7 _
PLA/ ^8 P4 h: s" F: V9 \5 _3 m: V
RTS* X, k6 [# Y' d$ b- j% G

) P  T2 @' E& G$ vSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据6 V+ s6 O3 ?0 l+ n( U! J" |
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
7 K" ^' D8 s8 f. q0 Y5 `: g' P1 i5 U$ F- k0 H( Q' z; I
STAGE_D1:   ;关卡数字' G. m( G8 c1 I) @9 e9 R
.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  v. X. G7 ]" t) ^' A

; c+ W; @1 h1 l+ g5 s! ESTAGE_D2:   ;场景数字& ^  d1 n1 z. o/ U3 @- b( `  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_3# [) M. e) [7 r1 E$ f5 i
* ]/ v9 _1 ?! e% I5 X

% M+ u: ~; P' Z/ z6 O) t+ J( }MUSIC:    ;按键音效2 x- y* J' W4 [; Z6 _) }4 R
LDA #$3B    ;音乐号
/ M! Q$ o* L- j# E7 q6 o) R& s JSR $919E    ;系统音乐调用; H( i& A- Q! I- \3 @
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2642 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-10-30 03:46 , Processed in 1.058594 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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