EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
, A3 D1 R  w& @; m;作者:FlameCyclone 2017.4.14 _2 M& D, @7 [& ~& V

1 \( Z: |4 o" T( C: c% {) T' Q" q* {/ {! w
;配置数据
9 M9 z1 y" C. K1 Z0 e$ N. NKEY_ADDR = $F8    ;按键地址+ \2 ?( l+ Z- E( p7 v
STAGE_TEMP = $6010    ;关卡临时地址
/ n5 C) t7 p5 R0 ]STAGE_MAX = $0E    ;最大关卡数
1 A, z  @  r; J! |" |TITLE_A = $20    ;标题条件A
/ Z& o* _# \% [. [1 b# ]; OTITLE_A_ON = $02    ;标题条件A有效状态判定
4 ~7 n# k+ V* E: OTITLE_B = $21    ;标题条件B; @5 [; E: h2 f, e* u& @
TITLE_B_ON = $03    ;标题条件B有效状态判定
5 ?7 O8 J  o. v! D7 NPPU_END = $FF    ;PPU结束符
0 v& h+ P  r/ g! R9 gTIME_LAY = $4A    ;标题显示延时地址6 \( m8 |0 H5 L7 f! K
BUTTON_DEC = $42    ;关卡减少按键
* u, t4 j3 v; O) v9 F% ?* [  D: wBUTTON_INC = $81    ;关卡增加按键
/ q+ s1 k- L" p1 y/ w+ GNUMBER_A = $06    ;数字A距离STAGE偏移量9 n7 \8 n8 W$ b: K
NUMBER_B = $08    ;数字B距离STAGE偏移量4 \# N( f- r: N4 c- d8 r
PPU_ADDR_H = $23    ;STAGE写入地址高位
$ U( _* r- z  j# R9 vPPU_ADDR_L = $8C    ;STAGE写入地址低位+ U) b5 L6 O+ i( z3 {+ a% t7 t
CHAR_S = $A2    ;字符'S'
, M& ]2 I. j4 v. T( G* ICHAR_T = $A3    ;字符'T'9 h6 Y3 [9 ^% g2 E4 |, t6 L
CHAR_A = $90    ;字符'A'
$ g, D1 u- m$ r; H9 C0 r' h! mCHAR_G = $96    ;字符'G'
) r" i! v- q; y4 iCHAR_E = $94    ;字符'E'5 k$ A  C7 A; [5 o
CHAR_SPA = $00    ;字符空格- V9 q3 w' i& c' N) s: {! M$ m
CHAR_LIN = $AE    ;字符'-'# ?9 z; U" d5 A# b, i. I1 }7 p
CHAR_O = $9E    ;字符'o'
* c( o# i) ^2 `% T. INUM_1 = $81    ;数字'1'5 H$ C+ I5 @5 ^: p
NUM_2 = $82    ;数字'2'5 F" y) J1 C/ y  O
NUM_3 = $83    ;数字'3'  `! c: t: |6 c1 H2 T; j: Z9 ]
NUM_4 = $84    ;数字'4'
. b7 a5 L( _8 l7 X- P7 ENUM_5 = $85    ;数字'5'; M% b6 x2 l9 o$ q1 f
NUM_6 = $86    ;数字'6'+ d2 n3 t9 C) c# G# _( a' L3 l
NUM_7 = $87    ;数字'7'
# |# ^! `* r1 ANUM_8 = $88    ;数字'8'* |9 D0 h1 C# j% q
NUM_9 = $89    ;数字'9'/ v1 u9 w& [4 T. h( ?4 T
NUM_0 = $80    ;数字'0'- T8 b: Y( n( Y. b2 v5 w1 ]0 ~
* Q9 {, F% m! g  ~: N( _) u
.ORG $F82A
" v/ Q5 e: }5 s$ L; ^' \8 A JSR $E700
- G2 M+ {8 V! F' [3 Y6 r 6 o( _3 Q  G+ {, W/ L2 M) t5 V
. x, U7 V6 ?. y$ \" R
.ORG $E700
" m0 Y0 q8 ~. I4 k  
7 U: Z8 J! n) [; D* l STY $4014    ;补上覆盖的精灵写入指令
$ c+ N) N  h2 ^& o  e2 CPROTECT_DATA:    ;数据保护
, S4 y9 F9 K" E. l1 q: \& X PHA    ;数据保护开始) ~6 _% S7 W( u+ z" G
TXA* c7 w& J$ ^* ?; ~3 W8 E4 J" B
PHA
  i' O+ l- @) M8 V, w2 i' Y TYA% V1 W% j; k$ U* I- u7 }9 ~, K/ o& P
PHA    ;数据保护结束* j* X: a8 P, E3 P& {
LDA TITLE_A! Y% L8 f9 Q( Y$ v" \) A+ i
CMP #TITLE_A_ON    ;比较是否为标题画面- f3 x4 M4 ]5 e+ c) K$ Z6 x# C5 P
BNE RET( Z7 [% c2 M0 @. L4 T
LDA TITLE_B
5 F3 f3 X/ p: s* k$ @ CMP #TITLE_B_ON    ;比较是否为标题画面
8 W6 p2 a. Z  O' F BEQ PPU_STAGE# k' D$ U3 A2 t7 `% d" g0 o
RET:    ;恢复数据
3 Z- V) P. q6 S( l, \ PLA    ;恢复数据开始+ w  {$ i) ]; s' M$ e% s) ~
TAY
6 g  X5 G: {- x" V PLA
3 M3 ?- N8 c0 i9 N, K TAX. ~, L. y0 `+ E' t
PLA    ;恢复数据结束
7 \/ V6 w3 Y% ^# D. V/ J6 V1 g1 | RTS    ;返回- Z% w, t$ k6 ~) \/ a# |4 ^& Y* H
PPU_STAGE:    ;字符STAGE写入程序$ J) m8 C7 R3 ^. R; t+ p6 s. [+ S
LDA #PPU_ADDR_H 4 ?# i% Q+ Z/ ?' _' e2 C* r$ V7 F
STA $2006    ;设置PPU字符写入高位地址
% g+ j  B+ H4 S LDA #PPU_ADDR_L
- @2 `( N# t5 | STA $2006    ;设置PPU字符写入低位地址
+ F8 g3 c4 O& K$ c LDX #$00
8 z, a) ^3 T1 b9 i6 V) cPPU_STAGE_WROTE:    ;写入STAGE字模
( T9 O5 z+ F/ |9 {: J LDA STAGE_DATA,X
: c+ F& ]# p: [3 B" V" y* z CMP #PPU_END    ;判断是否写入结束
: l$ d7 {3 l! e( z6 P BEQ STAGE_CMP3 G# M6 ~0 Z1 W& F1 ~# y
STA $2007$ [. C' ~0 [2 y2 ]+ H" M
INX
+ l8 z% k9 I9 u: s4 I9 C3 P, O BCC PPU_STAGE_WROTE
0 j  u6 u7 C: e. p" z+ U. y# a  ASTAGE_CMP:    ;选关操作" _: p& F. ]/ @
LDA STAGE_TEMP
4 L' A! T& h& J, ?" O4 r CMP #$FF    ;关卡数据初始化条件判断
+ Q" ]$ [+ p7 H; g; u BNE KEY_B9 L! a2 _3 \+ m5 G- n
LDA #$00
  _( H; n) w  P6 P4 I0 d+ O STA STAGE_TEMP    ;关卡数据初始化
1 Y% O2 \- F5 B5 o) |' x) }  UKEY_B:    ;关卡减少6 k8 j* x! J7 ]& p5 Z0 Q
LDA KEY_ADDR
! Y! ~( R( |8 w5 w5 c. g( k+ c9 d AND #BUTTON_DEC    ;按键B或左减关7 F. g+ R( e) {- \" F: v# k" f$ y% s/ q; Q
BEQ KEY_A- y; x+ n/ G  C5 G. ~
LDA #$FF
+ B( _  T% h0 p$ P# B0 `6 C% } STA TIME_LAY    ;重设标题延时1 O. Z; T4 M' U; n/ v
LDA STAGE_TEMP
# T. s# F) j' A8 p( a+ K CMP #$00    ;关卡比较- w+ [5 v; C. Y1 j; m% j3 ?& n
BEQ KEY_A
4 v: l6 v: B3 Z DEC STAGE_TEMP   ;减关
* Z. Z) s& p8 l' j; t JSR MUSIC    ;按键音效
& P# \1 H  q2 ]( W; {KEY_A:    ;关卡增加* R- \7 ^6 m+ Q; x
LDA KEY_ADDR% R4 ?& q( J6 u' I
AND #BUTTON_INC    ;按键A或右加关4 T; V, T& ^3 a8 b, G
BEQ PPU_NUM_WRITE% b0 I9 H/ d$ e3 y  R1 D1 A( i+ k
LDA #$FF
7 e. ^; b  A( d3 P' Q- h5 c: b STA TIME_LAY    ;重设标题延时
9 `" g. K& j: x# K LDA STAGE_TEMP
& M" V/ [, e; u# P* Q CMP #STAGE_MAX    ;关卡比较9 b& S2 ~. e$ m4 G8 @8 c
BEQ PPU_NUM_WRITE
9 D* T- \' R" d5 {3 [# K INC STAGE_TEMP    ;加关
; W. T2 a6 z# f: i" E' R( E JSR MUSIC    ;按键音效5 f0 O' z0 ~  d$ }. O* h
PPU_NUM_WRITE:    ;关卡数字写入地址
+ d0 v% r7 g% u: L LDA #PPU_ADDR_H: {7 T0 _1 x  c' G+ ^
STA $2006    ;设置PPU数字写入高位地址
% [. {0 e( X7 {! h, x% O- {9 z1 Y8 N" q LDA #PPU_ADDR_L  {! M* i5 N4 E. F) u9 z
CLC* W$ f8 h) `  M$ _6 i
ADC #NUMBER_A
4 z2 m2 D0 ^, a% [% B+ n& G( Z# W STA $2006    ;设置PPU字符写入低位地址
; _" I; D; a& \5 {. k* { LDA STAGE_TEMP
# j9 M' ^" P7 S TAX
1 l% w  J; c  X, k* v5 p LDA STAGE_D1,X    ;写入数字
! M3 M7 i) Q3 a+ f STA $2007
$ _- c" T' h, e5 }  R LDA #PPU_ADDR_H
1 A8 M0 _+ }3 @7 U+ M  s STA $2006    ;设置PPU数字写入高位地址% d. A8 r3 |6 i- @% I; w1 R
LDA #PPU_ADDR_L! q8 W$ ^% D; x, c# |5 t; O# W
CLC
4 c1 f+ S5 f  k ADC #NUMBER_B6 v: h2 d+ H, z
STA $2006    ;设置PPU字符写入低位地址5 d3 a  y) U/ j" V4 c. i- ?4 K4 q. d! O
LDA STAGE_TEMP8 J* c) Y, H9 j0 G5 d9 b$ a
TAX! S) A- R* P7 Y
LDA STAGE_D2,X    ;写入数字
" U6 |/ C/ K9 b  J0 C0 Y STA $20070 I& r+ v" C9 }4 d* q' o
STAHE_WRITE:9 @; b! l# g3 b  i3 g/ a
LDA STAGE_TEMP
5 Q( u) v; g' X, C/ O1 k' m+ V0 w STA $2D   ;初始关卡写入
6 b& X5 b9 N+ X# H$ ]! P! NPPU_RTS:    ;恢复数据
% J' R; e8 W/ o" }% p' L0 x$ q* I# i PLA
, S( n' L/ \: l) {. `3 {; @ TAY0 Q* v9 \( p* t8 @6 t
PLA2 ^  M7 o+ ?4 s. ]8 l
TAX5 u$ B9 c2 ?' x5 z0 t
PLA2 K2 r- `* a( ]  H. F+ g
RTS
9 }' w0 M7 n  }8 S, W" Q ( V1 r1 `' t+ F6 c2 s% [3 a
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
3 [' B7 a% s2 \4 F7 x0 D- f) [ .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END, w3 g4 \9 Y6 S2 W7 m

) _0 d! @( n! g+ b' b$ YSTAGE_D1:   ;关卡数字# i/ u2 h+ T) G! r# {* r- C
.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
! U$ [3 G5 d: ]9 s/ ~. K0 V6 ~; }0 V0 T, B: Q
STAGE_D2:   ;场景数字
2 N. h# G2 _3 l! d .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
" q5 J& d4 \5 J) ?% k, r9 I 0 I) ]- l6 f$ N7 n! D

) {. k2 j0 \7 j) _; B% jMUSIC:    ;按键音效) q1 n& U; m/ g9 T
LDA #$3B    ;音乐号
! d; `' a1 f  _  i, |1 b6 } JSR $919E    ;系统音乐调用
" g& c/ d) I1 V- T$ q/ c 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2723 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2026-1-23 08:59 , Processed in 1.079101 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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