EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]& @# R7 j6 B3 x5 J* Z
;作者:FlameCyclone 2017.4.1
9 a- ~$ v( P* }: ~1 S& o! m
/ x- p# E+ ]* |3 b0 i9 @; A( ?7 l) j1 ?8 R% R$ J2 q' ?5 J
;配置数据/ N+ V  w6 a* z/ {- w& A3 F0 b
KEY_ADDR = $F8    ;按键地址) E" G, {% F4 I& h
STAGE_TEMP = $6010    ;关卡临时地址9 @/ Y1 ?" l8 t: P) x& J) W, W
STAGE_MAX = $0E    ;最大关卡数
4 O7 m: [. B4 ?5 c8 YTITLE_A = $20    ;标题条件A
$ P7 B8 i' S% M- b5 t" H: w' X& DTITLE_A_ON = $02    ;标题条件A有效状态判定) R& c. |9 q* o! g  c' Q# D  [
TITLE_B = $21    ;标题条件B
( z' Z6 ]  i3 C* P$ @9 KTITLE_B_ON = $03    ;标题条件B有效状态判定. ^- Y( @2 x3 H6 m! _' @" ?: V
PPU_END = $FF    ;PPU结束符
" A# B7 B# W2 ^, ^" b/ N) F& D# ~TIME_LAY = $4A    ;标题显示延时地址
9 J/ b! R6 W0 Q, a3 i5 L" E9 T0 VBUTTON_DEC = $42    ;关卡减少按键
1 S: ^3 [5 i4 W9 x4 hBUTTON_INC = $81    ;关卡增加按键, P3 T7 N/ w" g# ~" W
NUMBER_A = $06    ;数字A距离STAGE偏移量
8 c- j- E5 c" W8 r3 N/ S) c6 XNUMBER_B = $08    ;数字B距离STAGE偏移量
/ L) N0 j- k% e- d- R% ^% D# L# u+ UPPU_ADDR_H = $23    ;STAGE写入地址高位
& Q# r0 Z0 j7 w5 ?PPU_ADDR_L = $8C    ;STAGE写入地址低位
# a9 g1 t0 |5 b% Q, S' G' mCHAR_S = $A2    ;字符'S'5 {  D2 {: m* ~1 z" `3 F
CHAR_T = $A3    ;字符'T'
' M! {0 F: W. [5 g9 aCHAR_A = $90    ;字符'A'
4 l) K) P4 ]5 X9 \CHAR_G = $96    ;字符'G'
- ]0 q8 i+ h! N3 U0 jCHAR_E = $94    ;字符'E'8 a, |+ }0 A( @5 O9 j
CHAR_SPA = $00    ;字符空格
6 I& W0 m3 i5 V4 c+ ?" lCHAR_LIN = $AE    ;字符'-'
& n, q8 W. `6 m3 KCHAR_O = $9E    ;字符'o'( f- z" I1 B9 W9 n& n4 V( y$ k
NUM_1 = $81    ;数字'1'6 V4 @% I1 g8 h+ H6 M7 k
NUM_2 = $82    ;数字'2'. B5 h" n9 j! d0 b8 ^6 @
NUM_3 = $83    ;数字'3', `  f7 n) o$ H8 }
NUM_4 = $84    ;数字'4'
1 b4 e2 ]5 ~2 n6 m& s) B' ONUM_5 = $85    ;数字'5'
  L! V. u8 U, V% W& ANUM_6 = $86    ;数字'6'
9 H' w& z* r5 w  KNUM_7 = $87    ;数字'7'
7 C% X! Q) Z9 w1 g& ENUM_8 = $88    ;数字'8'9 O7 I5 h- D- p' Q( S
NUM_9 = $89    ;数字'9'5 ?. b( S2 A  B6 s
NUM_0 = $80    ;数字'0'  k3 ^' l5 B% B" U4 k
  I: D& T* T) U0 w
.ORG $F82A; ~- ]6 s( \5 J$ x" X
JSR $E700
- s9 T& d9 {& l# E( r/ @0 n
3 h" B7 U; ^3 H" }/ ^$ K$ k
$ J* s3 c3 s- C8 z( k* U .ORG $E700
: A; [; t7 g, U. }  
/ }: e* z4 |# |8 G STY $4014    ;补上覆盖的精灵写入指令1 ]1 S  Y1 ~7 N$ \5 y  ~; i' P- ~
PROTECT_DATA:    ;数据保护
* o2 C- [( ]& d  t' ?7 `: F/ @ PHA    ;数据保护开始
( P1 }" J  F; O# Y) e TXA3 x, v/ |) c4 M4 r# K
PHA6 ^3 _1 x9 H/ R; J- r
TYA: Q4 h: V/ q7 A
PHA    ;数据保护结束+ v! F" N# C5 ?0 J5 D
LDA TITLE_A
9 z/ c' [0 o' @# I% ] CMP #TITLE_A_ON    ;比较是否为标题画面
9 l- R" A0 Q' c' i4 i' ^* V BNE RET# T/ `" R; g* \- r2 i
LDA TITLE_B
( s- |! R9 ?! H5 k CMP #TITLE_B_ON    ;比较是否为标题画面
6 L3 O. L% T4 `& e: Y# T& n BEQ PPU_STAGE  |; O1 k0 n0 i+ W) h+ M
RET:    ;恢复数据/ G2 N6 s3 X# M5 k  L9 v
PLA    ;恢复数据开始5 ]5 A& h1 a1 }) Y3 ~/ w4 ^0 }# ^
TAY. j8 s: f  Z2 j- w  U7 h6 m
PLA
6 i7 F* m! N& B9 ?) ?. @4 t. }4 ~0 p TAX5 M+ [: S5 @# v1 W% X
PLA    ;恢复数据结束' C$ @; U* i, ^8 h) ]/ f8 w$ j; v
RTS    ;返回
- K5 G  s% ]- s. P( U1 VPPU_STAGE:    ;字符STAGE写入程序: k+ K2 o( n, E3 [- M
LDA #PPU_ADDR_H
" l7 v) a- ?, K  O* U STA $2006    ;设置PPU字符写入高位地址
6 m" M# V0 K% _' y, X, {3 H, J LDA #PPU_ADDR_L
2 ]) C6 k" _2 h STA $2006    ;设置PPU字符写入低位地址
5 p( n0 K; v% @8 D LDX #$00
, ]- n, m. K% R9 pPPU_STAGE_WROTE:    ;写入STAGE字模  G) b) v9 l" e- x4 |8 ?! p" ?
LDA STAGE_DATA,X2 S4 I; y3 i2 r1 r9 S% b/ q" P/ ?3 q
CMP #PPU_END    ;判断是否写入结束
9 b( Z+ |- j) H9 b2 }8 l9 X3 Z BEQ STAGE_CMP! j! L$ q9 p0 z/ K
STA $2007
4 Q0 T+ r5 K. A INX
. [3 L. c. c9 j- e  K) V5 S* R BCC PPU_STAGE_WROTE! B/ `7 ?2 n* p1 I: O+ a. N
STAGE_CMP:    ;选关操作
8 q0 \+ U7 K* ?% R$ s LDA STAGE_TEMP6 y& H5 H7 z" O0 F' d( G% s
CMP #$FF    ;关卡数据初始化条件判断( g: h6 t0 D8 G/ h7 y* U5 f- {0 {
BNE KEY_B0 ^/ t+ e, K/ m4 o$ Z8 L) S
LDA #$00
( A' B, d% G# Y1 e7 R/ Z STA STAGE_TEMP    ;关卡数据初始化
9 N' F0 b: F& GKEY_B:    ;关卡减少( d! i  {( G4 [& d$ o
LDA KEY_ADDR
9 t2 k+ ]3 I' n0 n* a0 S* H( R) o AND #BUTTON_DEC    ;按键B或左减关
0 y# |1 X7 E( c4 o5 J; t BEQ KEY_A
$ p" D; ?4 R) J+ N LDA #$FF
/ [: a5 M7 g+ a6 U+ \9 p. @9 z) h STA TIME_LAY    ;重设标题延时5 I6 P) N& S' ^( P0 H+ U+ V
LDA STAGE_TEMP, O- {4 |  p; J7 Y8 {
CMP #$00    ;关卡比较
1 c5 V5 Q' J" z( R' W BEQ KEY_A
& V0 _' O* P' R4 K$ O) D DEC STAGE_TEMP   ;减关
9 O, ]5 l% @7 X. U8 b1 I JSR MUSIC    ;按键音效: W9 }+ T- i  g6 Q- G& v/ `: n
KEY_A:    ;关卡增加+ J% v0 D  i6 [/ ^# L5 d
LDA KEY_ADDR+ L! Q* d. Z& `$ v2 b( b3 G( j
AND #BUTTON_INC    ;按键A或右加关
+ z3 x- W% U/ Q: r# V* ]4 T2 k2 j; @ BEQ PPU_NUM_WRITE
7 z9 t3 v- Y7 @, u0 j3 k( i LDA #$FF
" l& r0 ?! K. S" U, p STA TIME_LAY    ;重设标题延时( ]" \" ~$ H. H) Q$ j8 a+ g
LDA STAGE_TEMP0 b! E% e* X; w1 W+ ^
CMP #STAGE_MAX    ;关卡比较& ], F& S5 e$ n3 V$ B
BEQ PPU_NUM_WRITE
) r6 F, N! \/ [; }5 }+ }) D INC STAGE_TEMP    ;加关
% R# ?8 \% u7 i! H& G: ?' f JSR MUSIC    ;按键音效8 j$ b/ _" {2 Z5 M$ h. c
PPU_NUM_WRITE:    ;关卡数字写入地址$ k5 v3 A7 v' x4 e  K* Y
LDA #PPU_ADDR_H! `# ^* @# y$ g% \
STA $2006    ;设置PPU数字写入高位地址8 X' C4 t. C+ M6 W  ~
LDA #PPU_ADDR_L% M- m* l9 g3 v; W/ U0 y4 I
CLC
5 z$ k. ?) e( z ADC #NUMBER_A1 m6 N. |" }( m; G( F5 N7 w
STA $2006    ;设置PPU字符写入低位地址3 i$ X  ~% `/ L& b; q
LDA STAGE_TEMP0 L& b, ]* c. v. y% R
TAX4 L" m( }& b3 c, j0 x/ Z5 Y
LDA STAGE_D1,X    ;写入数字6 {+ }1 `& T$ J
STA $2007
9 r  q8 y1 N' [" j LDA #PPU_ADDR_H
& m% @% e+ E$ h8 @- [7 y$ E& j- l; m STA $2006    ;设置PPU数字写入高位地址
. U' y  q6 Z/ X LDA #PPU_ADDR_L' T* O: ~7 `3 x/ w9 D/ N
CLC) a" H1 N9 G! K
ADC #NUMBER_B
( Q7 ~% Y; W1 E STA $2006    ;设置PPU字符写入低位地址
  l" x' z9 O; f. a! [3 o LDA STAGE_TEMP
% f& a7 Z! B: W3 s TAX3 W- ]( \! r$ y9 X6 b  j' Z; l
LDA STAGE_D2,X    ;写入数字
* b/ H/ i5 R( c/ G  X STA $2007
; d: M' @) w# D& ~STAHE_WRITE:
/ Y8 ?' K1 c) L LDA STAGE_TEMP
3 ]+ C, ~0 j" r! T( m" E STA $2D   ;初始关卡写入
# I8 Q7 X( p4 [- k3 iPPU_RTS:    ;恢复数据6 Y* o% m: l& g8 s& Y; q0 h
PLA2 W: o/ A5 A0 Y: V* M
TAY
" V% ]& b+ p* G$ y! T5 V PLA
2 ~' L. U8 e+ w# ^* v. z) y TAX
6 X  M& ^/ {. w8 L% n4 B PLA
5 ~9 H, c- v- j/ O1 V- P RTS' I8 H! v7 ^! ^6 A0 g

/ u) f% y, B: m! CSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据9 W. ~1 n/ N4 a; r$ z9 C
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END( ^1 e% B" |) ?! c

, b) o/ ^/ R, G: ?STAGE_D1:   ;关卡数字: j) E6 t7 x  G' Z
.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
0 B6 a' C- N7 O& g7 n( k8 r) u/ I
STAGE_D2:   ;场景数字
0 l6 B4 H8 Q$ g! y- F5 m' L% A# |1 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_35 X% U* M+ D" p& x5 }% Z" d6 U
! I/ ]- }, ^1 p0 F

4 ~2 n3 Z4 X* E" M' x( OMUSIC:    ;按键音效
) B  w! k) b" o LDA #$3B    ;音乐号4 w7 A" A) H* L0 f9 s; a
JSR $919E    ;系统音乐调用3 E" m- _+ J' m- K6 |$ 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2363 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2024-12-21 04:34 , Processed in 1.076172 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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