EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]' a( N  M8 i% Q% a
;作者:FlameCyclone 2017.4.10 I3 D& @- h' T" |8 R% s5 E

* E2 `6 V; N. U8 {1 u- E3 S: S
% }+ `0 i, q/ A6 ];配置数据; h3 G8 \/ N$ ]1 H  M
KEY_ADDR = $F8    ;按键地址
% i' @/ D( x$ o9 tSTAGE_TEMP = $6010    ;关卡临时地址; I9 \+ y' t7 M  N$ H
STAGE_MAX = $0E    ;最大关卡数
2 w6 V; P9 Q  Q! [! v7 UTITLE_A = $20    ;标题条件A4 H# G) ]8 T2 w1 ^' B
TITLE_A_ON = $02    ;标题条件A有效状态判定( D7 B% G, i2 y
TITLE_B = $21    ;标题条件B1 f+ b0 s0 i' `! h! b
TITLE_B_ON = $03    ;标题条件B有效状态判定" s/ Q' f4 b# ?  S+ Y* J
PPU_END = $FF    ;PPU结束符
% s# a( D# a2 mTIME_LAY = $4A    ;标题显示延时地址
; Y. m# Z) a9 [BUTTON_DEC = $42    ;关卡减少按键; q/ I$ K# J* T4 |
BUTTON_INC = $81    ;关卡增加按键
4 P5 k. f+ S5 b+ H/ LNUMBER_A = $06    ;数字A距离STAGE偏移量3 [5 a; V6 O  k0 L, S
NUMBER_B = $08    ;数字B距离STAGE偏移量( \3 V2 }: S# V2 u! v/ ~
PPU_ADDR_H = $23    ;STAGE写入地址高位
* S$ \" l7 c1 [/ _# FPPU_ADDR_L = $8C    ;STAGE写入地址低位$ i' v7 C( [0 p9 M! A1 R3 h
CHAR_S = $A2    ;字符'S'
% f) C! I8 R5 w+ f- q$ T: A+ FCHAR_T = $A3    ;字符'T'
7 P4 Q- c& K4 X/ NCHAR_A = $90    ;字符'A'+ P, N( p$ X% x$ s8 q' d9 b) C
CHAR_G = $96    ;字符'G'. i9 ]& k/ a) C$ d0 x5 d
CHAR_E = $94    ;字符'E') U7 d" v, }* z& K5 v4 ~
CHAR_SPA = $00    ;字符空格" V9 w4 Z. W0 C/ d! Z4 h. r
CHAR_LIN = $AE    ;字符'-'$ L* N. C1 d  d% X# _- F' H
CHAR_O = $9E    ;字符'o'/ M3 b( d( I+ [& x' U3 I
NUM_1 = $81    ;数字'1'7 h, u# |' O- F0 m! l, T
NUM_2 = $82    ;数字'2'/ s5 e1 y, E; d3 q3 V9 [
NUM_3 = $83    ;数字'3'+ ^- S0 M1 ~" M: L9 h
NUM_4 = $84    ;数字'4'! Z) O- W. V" d" l8 Z
NUM_5 = $85    ;数字'5'
* t: d7 H* u- p# G4 ?NUM_6 = $86    ;数字'6'
' @# S0 a# X% h+ Z  f/ l8 VNUM_7 = $87    ;数字'7'3 x$ `  A$ L  p0 i/ `
NUM_8 = $88    ;数字'8'0 q  m' p# n: r2 _' w+ E
NUM_9 = $89    ;数字'9'
9 _' x' l) J# I4 Q4 W/ m" bNUM_0 = $80    ;数字'0'
. n9 Y- P2 G3 o& x# z0 O, r) k3 ^- U* n
.ORG $F82A
* u7 t. l$ Z0 U" r# [+ w6 K. Y5 d JSR $E7000 P+ J  o' m4 T5 S
# T$ r! y7 r0 W& M* e
; @% i" x9 t6 j3 ~4 x! N( ^
.ORG $E700' ~! l, T! M) ]3 i
  
  j' R% S  `: S5 {& d# l9 z! X STY $4014    ;补上覆盖的精灵写入指令
4 i3 V0 _9 a5 A0 i2 {/ mPROTECT_DATA:    ;数据保护# ^1 s: p7 W, c8 o
PHA    ;数据保护开始0 p) @; Z, p% _3 q* Z
TXA
0 C: ~# X! |* T% Y. ] PHA
# y' U, ^1 a8 L TYA
5 V% b! d  O$ ]# e) {6 Z PHA    ;数据保护结束; C; h- h4 C# ~6 X0 N" R; I" Q
LDA TITLE_A( T1 Y) o9 V; b9 [) b7 u6 H+ B
CMP #TITLE_A_ON    ;比较是否为标题画面
6 y2 k7 v4 e7 }: o, k, Q- T BNE RET
7 O* `( i4 C4 ^7 A  V: |  G' Y) Q4 P LDA TITLE_B
) J$ s  ]3 }* |5 ]5 p$ }# f CMP #TITLE_B_ON    ;比较是否为标题画面; e. @8 ]! B/ }0 g/ W0 g1 V0 X
BEQ PPU_STAGE) N8 M8 S5 ?7 b) R1 P- k& u' m
RET:    ;恢复数据
! i+ ^) u/ t$ T. A0 g PLA    ;恢复数据开始
) P6 P+ j4 c; P" K$ c; A7 n TAY5 }( I9 _1 w( i7 L5 F% ?. \
PLA! y  R3 l8 S: g
TAX
# p4 A6 b' G3 O4 N2 Z PLA    ;恢复数据结束' b( \' M9 u0 t+ [  D6 [8 R7 k0 X; ~
RTS    ;返回
: K& L$ d7 k( S/ q+ h$ LPPU_STAGE:    ;字符STAGE写入程序. j  E; J0 h4 B6 A6 {! k+ ~
LDA #PPU_ADDR_H
3 r7 ^* H. Q5 T/ ^+ `/ Y9 \" A STA $2006    ;设置PPU字符写入高位地址
  j" p; Y) K' |# s% W, y LDA #PPU_ADDR_L* m+ o: J9 E6 k  `' Q" R( n
STA $2006    ;设置PPU字符写入低位地址1 b+ x& n9 j0 h* H' L- f1 q5 T
LDX #$007 I0 ~& n1 x5 Y, G
PPU_STAGE_WROTE:    ;写入STAGE字模6 p9 H& I1 p* m7 S
LDA STAGE_DATA,X
+ I' U* V3 K( M CMP #PPU_END    ;判断是否写入结束5 w) n* U$ \- q  i* I
BEQ STAGE_CMP/ j# X- D5 V$ e! M& I
STA $20075 Y8 P6 G4 X5 ]! O2 U. B  p: S
INX! A# [% l! x3 W
BCC PPU_STAGE_WROTE
. x! _: m1 `1 m! LSTAGE_CMP:    ;选关操作
# R. X3 n9 j6 n6 D2 U8 E LDA STAGE_TEMP
3 k2 r6 k* B, P1 J- l2 j3 y- u* q) W CMP #$FF    ;关卡数据初始化条件判断/ i- @) z2 A3 ]) B: p
BNE KEY_B
8 }5 t; g$ \& S  k1 H5 h LDA #$00, G) d0 ^+ z! i* G) z
STA STAGE_TEMP    ;关卡数据初始化
1 C, A) C- _& r( u/ E9 tKEY_B:    ;关卡减少6 u0 Q0 a0 P1 M8 ?* p: C) z: L. u
LDA KEY_ADDR! H/ [2 w; n" O% ~2 O" J
AND #BUTTON_DEC    ;按键B或左减关' P, Z; q, I+ J+ t8 ^# E
BEQ KEY_A1 l; {2 J4 @% G
LDA #$FF
' [+ r) d6 _/ D+ ]8 m STA TIME_LAY    ;重设标题延时' c( W+ R$ D% \! b7 C5 [9 _0 b
LDA STAGE_TEMP; e' _& y  K8 {6 A2 a
CMP #$00    ;关卡比较. q7 U( p# L8 @8 X6 s! T: C/ P
BEQ KEY_A
9 {; T  I" W6 k; r DEC STAGE_TEMP   ;减关
1 i- |+ r5 w6 z0 s JSR MUSIC    ;按键音效* A# _) i! @, i3 h8 a  k6 Y6 b
KEY_A:    ;关卡增加
1 m) @! b5 l/ y8 C; w- u8 v% R LDA KEY_ADDR
3 p* _9 g( _7 x9 Y5 i AND #BUTTON_INC    ;按键A或右加关
1 B7 r4 s: M1 J9 K& t, W( o BEQ PPU_NUM_WRITE
8 F2 l" i  _& m. [ LDA #$FF5 H* e5 f+ C) A1 ?
STA TIME_LAY    ;重设标题延时
' b% m+ e; _- t, } LDA STAGE_TEMP
( N% t/ B  |2 x$ ~- p" n CMP #STAGE_MAX    ;关卡比较
" n7 W% l1 O% f9 E- l: U9 X5 s BEQ PPU_NUM_WRITE
; p7 _# F% t2 R1 S+ E& @0 q3 c1 v6 m INC STAGE_TEMP    ;加关
) D! t* H" `; R2 W8 { JSR MUSIC    ;按键音效
5 K9 O0 G7 w0 |1 a& q+ SPPU_NUM_WRITE:    ;关卡数字写入地址2 V3 Y; D" B# @( b6 m4 Q, Y. \1 o
LDA #PPU_ADDR_H, [( M4 Y: k/ w; v) h
STA $2006    ;设置PPU数字写入高位地址
6 l! s  p6 W) F9 g4 K; I LDA #PPU_ADDR_L
) P  n% m1 s. @; b CLC
' A! S  u0 F/ X3 p# z# G ADC #NUMBER_A0 P$ m; C$ f+ b3 }# E" I3 e
STA $2006    ;设置PPU字符写入低位地址1 A# g: A7 Q- r, k/ s
LDA STAGE_TEMP; Q* q! V  W8 O1 }5 M  Q# W
TAX
6 X5 m0 ~  p4 ]2 j6 w/ `7 O LDA STAGE_D1,X    ;写入数字9 r+ C8 a3 t3 X% s8 c& ]5 D
STA $2007
2 ]) E- ^- l4 `! s/ j LDA #PPU_ADDR_H! X: }; ]3 g. D9 k# Z6 ^) \
STA $2006    ;设置PPU数字写入高位地址3 H# q8 {# @! y" A, g
LDA #PPU_ADDR_L0 @& h, {1 L: H% o( Y  f" L
CLC
; ~" W0 R& z& D2 u ADC #NUMBER_B/ D, Q% \  f# m% m
STA $2006    ;设置PPU字符写入低位地址) P4 [. d4 j$ }1 e6 d" P8 K
LDA STAGE_TEMP+ |: h% @" g# q" W8 V$ C# w
TAX# ]: e* W" e$ h; R+ R3 F
LDA STAGE_D2,X    ;写入数字, Y* l% v, m0 N' }& S1 S
STA $2007
2 n" c2 |1 L) t; W' w( V7 F- {5 y* WSTAHE_WRITE:1 O0 z& e9 O( ^
LDA STAGE_TEMP; o6 A3 a- m# g1 i( d8 A
STA $2D   ;初始关卡写入
( D3 g' j% q& @4 i: A+ D/ |PPU_RTS:    ;恢复数据
0 B! [* o0 ?' e- [, [" T PLA
- M7 H5 \: M7 h TAY
: G$ e' q' R5 `* W# {' ? PLA
+ N' G/ w8 ~" i- A7 y TAX
( g) C$ q* |% X, [* z1 p PLA
' y) s$ F  K$ g) X RTS8 E% W. R1 r# w, ?  a! G  R

& Y& _) B% g* A  o. _, }STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
% T. f/ S4 M; G3 N/ F3 ^ .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
  _# x( r: f6 A! r7 M* t$ c7 c. L3 x7 g1 I7 |7 B5 L1 w% W: S0 g: Y
STAGE_D1:   ;关卡数字; _7 y* s5 {+ ?) a! [! X  D+ u/ v
.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
$ W, ]0 Q7 [$ I+ P) O0 e
8 u8 i6 G$ p! q& x5 |& F6 ASTAGE_D2:   ;场景数字
7 c% [+ Z/ Y8 J  P# d  U .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_34 M. t( K" S$ \. h! a

. Y& Y. b5 P0 g. [( T5 ]
' A9 z# G" N+ o" R5 G, W% l8 eMUSIC:    ;按键音效
1 @: A9 w. z5 S9 a, d2 [+ u, U LDA #$3B    ;音乐号
6 o' C9 Q  X* c) H; S  ]4 | JSR $919E    ;系统音乐调用9 I& D' e  B- x+ c0 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2604 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-9-16 17:49 , Processed in 1.120117 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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