EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]7 r+ V7 l7 j+ v* r3 |+ o- h7 \
;作者:FlameCyclone 2017.4.1
$ z# j3 D/ |8 M5 d3 H# M
5 n" Z. G9 [/ c: ?4 Y) p4 |; r% ~( `% Y, l
;配置数据* Q! T- t! J0 G8 O" ~/ J
KEY_ADDR = $F8    ;按键地址! X1 K! z6 [5 r1 B, P
STAGE_TEMP = $6010    ;关卡临时地址- [+ }' p5 E7 t& W) C4 z" p- q
STAGE_MAX = $0E    ;最大关卡数
6 G# T& p  E5 A7 XTITLE_A = $20    ;标题条件A
+ J2 [' a: ~, U; t8 y# J  oTITLE_A_ON = $02    ;标题条件A有效状态判定
$ a9 i& b  u5 C7 fTITLE_B = $21    ;标题条件B: k* w9 b3 Q3 a6 f' \
TITLE_B_ON = $03    ;标题条件B有效状态判定6 f& S+ y, h0 r' n+ Q& c. g
PPU_END = $FF    ;PPU结束符
1 r; v! E2 t0 P1 [TIME_LAY = $4A    ;标题显示延时地址% }1 U" E" U  u& Y! h; c4 A, g
BUTTON_DEC = $42    ;关卡减少按键
0 Y& u. o6 K/ Y* e0 \BUTTON_INC = $81    ;关卡增加按键1 R& M# N; v8 `* F) \
NUMBER_A = $06    ;数字A距离STAGE偏移量
6 Z: }  V1 f5 wNUMBER_B = $08    ;数字B距离STAGE偏移量
) _1 X  ]9 X6 MPPU_ADDR_H = $23    ;STAGE写入地址高位
/ R2 Y$ O8 r8 X7 TPPU_ADDR_L = $8C    ;STAGE写入地址低位
; A  P( |. V* S4 z- |6 `CHAR_S = $A2    ;字符'S'
- m! N/ f" P) F& _& WCHAR_T = $A3    ;字符'T'
: g" M# o1 @5 X8 t2 `5 GCHAR_A = $90    ;字符'A'
& A' ]: M# `% NCHAR_G = $96    ;字符'G'
; a( |9 E5 |0 n% N1 b- gCHAR_E = $94    ;字符'E'
$ n$ a, R0 F4 S2 S1 x3 ?5 y& ]CHAR_SPA = $00    ;字符空格
) C* o( {: }( d2 i# \  r6 U4 o0 [CHAR_LIN = $AE    ;字符'-'
- E- Y' V# d9 h3 oCHAR_O = $9E    ;字符'o'
7 t8 C4 q9 d* [! rNUM_1 = $81    ;数字'1'5 Z. L4 _( L7 g/ I- K8 k5 H  }3 @
NUM_2 = $82    ;数字'2'/ f! Y. \3 X* M3 V4 d
NUM_3 = $83    ;数字'3'
  V2 d4 y6 A# E& a" @5 f" Z& `NUM_4 = $84    ;数字'4') y- s8 \9 b4 Q$ R/ O, x' }
NUM_5 = $85    ;数字'5'
0 u0 c( b/ K( d" BNUM_6 = $86    ;数字'6'
8 U$ ]. r( z3 V% D$ nNUM_7 = $87    ;数字'7'
: q# E6 C1 a" \& @4 CNUM_8 = $88    ;数字'8'
% q6 d" Y8 q4 FNUM_9 = $89    ;数字'9'
$ u: P7 d3 a) ?3 _) r" V( NNUM_0 = $80    ;数字'0'+ b. S# b3 o6 |1 I5 }, B
) \9 b. G6 V; v" r+ n5 e
.ORG $F82A6 ?: g4 R: V2 a% H: T' M. m
JSR $E700' E1 ?2 L9 A' j' ^
& J% h7 V# b6 M' l# |/ X
6 Y- D2 C, u3 c  m
.ORG $E700
+ i' F' a6 }3 P& P3 s  
5 Q4 i7 E5 e" J9 ^  X STY $4014    ;补上覆盖的精灵写入指令
8 k2 W( S2 j' p4 D, d' wPROTECT_DATA:    ;数据保护" M4 |- ]1 i) J" @2 m) a! [! W
PHA    ;数据保护开始: L  I/ h2 p1 c6 q8 U9 {! E& O7 U4 A
TXA
9 w% {8 u, ^' y$ e0 Z' W6 f PHA
+ y+ u6 H" K5 c% j TYA) J* m2 m4 L: o$ L9 V7 d4 c, ^
PHA    ;数据保护结束
2 f1 r/ Y' r7 A1 n1 g! I LDA TITLE_A
! U' v# Q1 X2 A8 r3 x0 l CMP #TITLE_A_ON    ;比较是否为标题画面
2 }1 {  `% O7 D( m9 T BNE RET; q4 b% \" [8 N2 ~+ f1 j# R5 I
LDA TITLE_B
( ]( ~% N% U1 X- B  D/ ~ CMP #TITLE_B_ON    ;比较是否为标题画面2 T7 y: ~2 ^9 e% `: N
BEQ PPU_STAGE; {$ V" s  p8 e" D4 }# O
RET:    ;恢复数据" t4 i! Q5 B( G0 H( u/ O
PLA    ;恢复数据开始
- V9 z2 t$ W7 [% Z  X6 K/ F" s3 d TAY+ V% Y  s3 U8 ~# L+ t  T$ i9 d6 m
PLA6 e3 {3 L9 y# w$ r1 z2 D& g, H
TAX: n$ ]. K. N# s; v" c
PLA    ;恢复数据结束( V, A% I2 H4 b$ o- L2 t5 G2 o( D
RTS    ;返回
; E% C1 k2 U0 Y' e) pPPU_STAGE:    ;字符STAGE写入程序
7 V4 p- @3 |4 X LDA #PPU_ADDR_H : b# N5 m9 f/ X! m" l
STA $2006    ;设置PPU字符写入高位地址
  ^; O" ~/ O+ Q: @  X5 q LDA #PPU_ADDR_L
1 n& A3 H  l/ O& c  d STA $2006    ;设置PPU字符写入低位地址& }5 p" q& L/ ?8 k( a: i
LDX #$00
5 l- @, T9 j6 ?9 P' F7 V) P- u6 q" HPPU_STAGE_WROTE:    ;写入STAGE字模8 l  C* F) m- C# @
LDA STAGE_DATA,X
2 I/ J% ^3 C' b$ v) r CMP #PPU_END    ;判断是否写入结束, k5 t' U- Q1 U  ]1 ?% J; ^+ \& j
BEQ STAGE_CMP" {: V! }- B6 k- `
STA $2007
7 \' M7 q  j8 k) b& e INX
& m& K/ P8 E/ {% l  y" I BCC PPU_STAGE_WROTE
9 Q2 r1 s! L- `! `0 B$ nSTAGE_CMP:    ;选关操作
' l$ n* f8 a0 C9 m0 W5 D LDA STAGE_TEMP
  L4 y+ {0 f) W2 | CMP #$FF    ;关卡数据初始化条件判断
1 t  i% Z  U  k( l5 a& e9 a' H BNE KEY_B, G- T& Y4 C8 A6 m
LDA #$00- g7 x, s3 Q* N+ ~
STA STAGE_TEMP    ;关卡数据初始化! e+ E) H  t& G* Q
KEY_B:    ;关卡减少
% E% f4 |" q- R5 H& c LDA KEY_ADDR/ I5 B/ B5 [9 }4 I$ o  B$ q
AND #BUTTON_DEC    ;按键B或左减关
1 Q2 u1 \$ y( F- Y0 ?8 S BEQ KEY_A9 C, |1 X& P" w# M% U4 s
LDA #$FF
5 S  p( [* e# C9 b  {$ M7 w; ~+ Q1 C STA TIME_LAY    ;重设标题延时1 I4 Q9 l2 I8 e  C5 |( c& n
LDA STAGE_TEMP
$ x5 y1 H' W" B- G  @& O% Y CMP #$00    ;关卡比较6 R0 ~6 J/ e& Y& F) m2 N4 I. {
BEQ KEY_A  c0 |( x! |2 U( `6 y/ o
DEC STAGE_TEMP   ;减关. U, y; R' ~1 }6 Q: y* [, |
JSR MUSIC    ;按键音效# `4 Z* }. {/ j" E, Y9 h
KEY_A:    ;关卡增加/ x; p: S% T3 r$ g! C9 `
LDA KEY_ADDR
' V; D+ Y! {* T8 F  g! b AND #BUTTON_INC    ;按键A或右加关
+ e/ r; X4 ]2 h0 T0 @. @$ | BEQ PPU_NUM_WRITE
$ I4 b- i! f( c LDA #$FF) Q- [# a8 w6 S/ B, x
STA TIME_LAY    ;重设标题延时
4 C& }# w, a4 b$ P: V* w LDA STAGE_TEMP
; j$ L! [- R( t: S( S5 e CMP #STAGE_MAX    ;关卡比较4 Y  y9 G7 o3 G4 {4 r# j3 a$ @
BEQ PPU_NUM_WRITE
$ @6 \- S' ?& j6 ^ INC STAGE_TEMP    ;加关: t3 Z) S+ o! s2 X+ N' r
JSR MUSIC    ;按键音效- s$ x/ p7 [3 B; j
PPU_NUM_WRITE:    ;关卡数字写入地址" @9 N7 p1 n- J( ^' ~& H
LDA #PPU_ADDR_H8 W7 O  j5 F2 d9 ~
STA $2006    ;设置PPU数字写入高位地址; ]/ w5 _, \8 g5 O4 B0 S
LDA #PPU_ADDR_L
) v8 B. ~0 n0 R7 D: Q: V0 | CLC- o9 l' q* Z, S% q; A) V) H) f
ADC #NUMBER_A
' j3 a9 ^2 B* O% w# c STA $2006    ;设置PPU字符写入低位地址, M) R+ S: O  n7 g3 {- U# C
LDA STAGE_TEMP' ^, L) c' y8 [  V3 B0 a
TAX1 l0 [' \6 `" ]/ V2 q
LDA STAGE_D1,X    ;写入数字
1 {: d$ n5 D% W STA $2007+ l8 ]: K3 R+ M
LDA #PPU_ADDR_H
" |3 a# C6 X# T7 d STA $2006    ;设置PPU数字写入高位地址- h/ J# Z- _5 ]
LDA #PPU_ADDR_L+ R5 e' a4 Q2 v) g0 }4 t
CLC
% K# b2 f: [) |! @7 d) L ADC #NUMBER_B! p* D7 ^' @3 \% ]3 _& u0 e7 Z* X
STA $2006    ;设置PPU字符写入低位地址% o  X  h! B' R" E. P; K
LDA STAGE_TEMP/ \; k2 I6 C& D: a5 L- y! L7 q" O
TAX0 i% l. u$ X/ k: Q: P1 \0 t
LDA STAGE_D2,X    ;写入数字
  q* D; P# [/ R" c2 O; x+ j, Q STA $2007
9 f' }, o8 T" j  i' [5 VSTAHE_WRITE:
. X" d4 d9 K$ T; v5 A1 g; _6 ? LDA STAGE_TEMP
8 w  q5 a$ |7 c. @( j0 }/ x. V& M STA $2D   ;初始关卡写入7 w( u. P$ ?+ Q1 c, A) M
PPU_RTS:    ;恢复数据7 s3 k, [! v8 S$ z0 h% p
PLA# b; e7 V# O! R# C, \3 G
TAY7 ~# q# D0 E6 ?! W  ~, M
PLA! K+ K3 a9 y$ W0 c5 r
TAX: H6 y5 O! ~4 O( g
PLA
) }- q- E' V! G" \* } RTS
) c" c, q) E3 y# T) j 9 I! f' |  U, r  x3 r  ?9 ^" R
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
  W$ I- U! L, w) C' d" n  P& r .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
' H8 f! T* x6 O9 q2 L( h& N1 K% e1 L$ r* Y, y7 y
STAGE_D1:   ;关卡数字
0 r) C2 R6 W; {/ t4 {0 Y2 g .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, }9 C! ^- p0 _# |7 i

6 M; F* g3 z) U$ w" QSTAGE_D2:   ;场景数字
$ L# @3 D4 B- r* `4 |7 t .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
5 s$ V1 n0 s( z7 o) ^& m ! W# ?6 P: o- X% `
8 n0 A" |0 ]% x- d5 G# ^
MUSIC:    ;按键音效
2 \- L9 q! ~( ~& R; i2 q, i% q8 Z LDA #$3B    ;音乐号
* S& K& }7 t. g JSR $919E    ;系统音乐调用
6 M9 \8 ]  ~0 Z: |2 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2716 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2026-1-16 08:41 , Processed in 1.093750 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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