EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
: H! w, T8 p  f  c# \. N;作者:FlameCyclone 2017.4.1
5 W3 t( N* G3 @9 o2 v& {5 f3 k
7 o4 h/ ?0 C9 Y, `! B- m- T
$ x9 C! B( Z1 n;配置数据
& i. P) ]  ^' q% k8 AKEY_ADDR = $F8    ;按键地址9 X4 Y( j* I# I
STAGE_TEMP = $6010    ;关卡临时地址
8 C: Q0 H) b2 [( o0 l$ jSTAGE_MAX = $0E    ;最大关卡数% M( E3 ^- G2 Y8 S
TITLE_A = $20    ;标题条件A
# {4 v$ }+ ?# _7 y1 C$ NTITLE_A_ON = $02    ;标题条件A有效状态判定2 ^( O, `- H- q+ S' M
TITLE_B = $21    ;标题条件B
. H% x9 E1 _. fTITLE_B_ON = $03    ;标题条件B有效状态判定7 p5 [4 t% e1 A" X. r
PPU_END = $FF    ;PPU结束符
7 a2 ^6 l+ D; I* _9 U& KTIME_LAY = $4A    ;标题显示延时地址
" f. J# t6 p/ ?- K) T1 b4 IBUTTON_DEC = $42    ;关卡减少按键
  T# ?. |2 C7 ?! U* r" QBUTTON_INC = $81    ;关卡增加按键1 n2 d" b- S4 Z/ Z' c& W
NUMBER_A = $06    ;数字A距离STAGE偏移量1 O, i+ L/ M! N: T
NUMBER_B = $08    ;数字B距离STAGE偏移量
! G6 {, q- r& f+ C  R' U9 K5 TPPU_ADDR_H = $23    ;STAGE写入地址高位: U0 t6 ^1 [4 n4 \, k# f( X
PPU_ADDR_L = $8C    ;STAGE写入地址低位
1 m. }* D  K+ l: H6 kCHAR_S = $A2    ;字符'S'' |$ O6 N4 l2 x( ?. H- G' O+ R1 O
CHAR_T = $A3    ;字符'T'
8 t* e. W1 k! A( `CHAR_A = $90    ;字符'A'" j0 A7 }  s9 E4 c% a4 Z. ]
CHAR_G = $96    ;字符'G'
% _3 j$ R. d+ Y7 s5 f8 D: _CHAR_E = $94    ;字符'E'
) j4 d, J1 r7 x: P2 k) \CHAR_SPA = $00    ;字符空格
+ M$ ]$ q# e1 C  v8 R% X: [$ ?3 t) xCHAR_LIN = $AE    ;字符'-', J8 e/ \' Q# {% M8 f
CHAR_O = $9E    ;字符'o'
8 d# q4 Q, B) ^! h8 J; mNUM_1 = $81    ;数字'1'
" J& e2 J8 Q$ S2 }/ ~NUM_2 = $82    ;数字'2'
- E- f, E  B5 sNUM_3 = $83    ;数字'3'
, F& ]) P( c  X3 r2 G  gNUM_4 = $84    ;数字'4': J& q1 ?$ t9 I; D8 w3 x3 r1 D
NUM_5 = $85    ;数字'5'
6 @6 s" E! j4 M0 `' f  b6 ^NUM_6 = $86    ;数字'6'- W7 c) I* P0 k# i4 m. a
NUM_7 = $87    ;数字'7'
! R: ]% t. m2 I- n, wNUM_8 = $88    ;数字'8'
, R* y: ^' G+ d+ GNUM_9 = $89    ;数字'9'! ~2 O* F$ A5 r6 a' C
NUM_0 = $80    ;数字'0'' E8 l$ R$ q3 I

: V7 E" J) U' A! Y .ORG $F82A
- w8 O& c) l& x2 P, q JSR $E700, r: W) b1 D: Z
0 }$ c0 R8 e  R) e# |% l
) U. |1 t7 y7 m# l' n2 q* C
.ORG $E7009 `1 M: U! g9 r3 Q* k
    ]/ h: Z: w- N. Y0 R/ e! y. W8 t
STY $4014    ;补上覆盖的精灵写入指令8 I/ _$ o. J7 @$ g
PROTECT_DATA:    ;数据保护# w1 b6 e& \0 y% F
PHA    ;数据保护开始, B: N% U+ g, A4 h4 D9 @
TXA# Z2 }& r; `2 M2 {8 q& _" \
PHA
- n$ ?* x/ B0 M- i7 |4 G( C2 [ TYA# }5 [( a; `* q, r5 j$ T  F
PHA    ;数据保护结束
, ~( O# }- n" O LDA TITLE_A
7 e& }& E, x: y6 h( ^ CMP #TITLE_A_ON    ;比较是否为标题画面$ A5 o7 X$ K% x" A
BNE RET
! @, J+ j6 w( g" q LDA TITLE_B; E2 g6 m6 \/ H+ ^  A- h
CMP #TITLE_B_ON    ;比较是否为标题画面% p( B4 _3 w& J. j; j  f& S
BEQ PPU_STAGE6 }  {/ p2 o. m# B: N
RET:    ;恢复数据
5 r+ }: Q5 C: a8 B" U# G- X6 z PLA    ;恢复数据开始. I- `" E" p& E0 ?) D+ s
TAY
" g3 C* b  ]/ A PLA- U! _( t5 \  `( i
TAX
8 I) R1 v/ W3 D- T PLA    ;恢复数据结束2 B" q7 C/ o: b  B0 c$ R
RTS    ;返回
6 X. H# A# h" ~- m# Z+ H  `PPU_STAGE:    ;字符STAGE写入程序0 e- I( N* l! L5 p+ q# B( L
LDA #PPU_ADDR_H ! u5 J3 {( q' S1 ^; ~% L9 W
STA $2006    ;设置PPU字符写入高位地址
. p( G1 I* r0 {& y9 }! q$ M LDA #PPU_ADDR_L1 f8 j( x0 Q% i' }! ]/ [
STA $2006    ;设置PPU字符写入低位地址
: K1 ]$ v+ R. w* H LDX #$00
# U7 a" O' `3 ]5 _# P  A* N; F1 ePPU_STAGE_WROTE:    ;写入STAGE字模; o* q; \; `; `, Z/ \( X9 _1 [
LDA STAGE_DATA,X
$ I- B& D, R5 m( P# I1 X3 I3 h, X CMP #PPU_END    ;判断是否写入结束
3 K% M' p* ]# [1 W: q BEQ STAGE_CMP
) D, f  W& K" } STA $2007
; r+ Z) M8 Y: L0 T! i0 | INX
- m: d/ F2 i& r BCC PPU_STAGE_WROTE
) x& M# P8 t8 W- s, n5 uSTAGE_CMP:    ;选关操作3 l0 H3 C+ N& Q
LDA STAGE_TEMP
3 y( [1 i( [9 t5 d, b0 H CMP #$FF    ;关卡数据初始化条件判断
" f5 R, c  r9 V9 g BNE KEY_B& {0 O# M- _8 e* F/ n& W
LDA #$00
( }3 f8 o* W9 G: ^ STA STAGE_TEMP    ;关卡数据初始化& f% R. S1 {0 z/ e  T# `* [( r& q
KEY_B:    ;关卡减少
5 N0 B1 v/ z/ u8 K8 i LDA KEY_ADDR( |( a) q9 d& J9 q
AND #BUTTON_DEC    ;按键B或左减关
# C# ~7 P( d( L  ^! P BEQ KEY_A) W; c4 V- i% T0 L; [5 O
LDA #$FF
9 }% ~2 T" u2 E STA TIME_LAY    ;重设标题延时
; q6 V" y1 i2 q/ m! n$ t LDA STAGE_TEMP
) G- ~2 E) r0 p. X6 z CMP #$00    ;关卡比较/ J4 n+ |6 C! U; I& ^
BEQ KEY_A
) e& L) D$ `2 f* W$ f DEC STAGE_TEMP   ;减关
1 d  l. }' f' \* b& Q+ H7 f' e JSR MUSIC    ;按键音效" ]5 @; Z( n/ `. l  E) _; Z% G7 |. F
KEY_A:    ;关卡增加9 W2 [8 a% x' u% y7 G# k( l
LDA KEY_ADDR2 b# }5 s- C6 S+ L+ N# ~
AND #BUTTON_INC    ;按键A或右加关- p/ p; m2 K) ~4 f# X
BEQ PPU_NUM_WRITE, l/ l" U4 X9 L3 ^, u$ m
LDA #$FF
# p0 L3 k8 R0 F- Y STA TIME_LAY    ;重设标题延时* I/ _& {( m# D$ I
LDA STAGE_TEMP) ?( g  G' m& `" q3 t/ j3 R: p
CMP #STAGE_MAX    ;关卡比较8 ]* [% I$ m0 G( b' }4 U
BEQ PPU_NUM_WRITE4 U5 h7 f( c4 w% L/ F
INC STAGE_TEMP    ;加关
$ [. [2 D; G( x7 b- J" {6 _ JSR MUSIC    ;按键音效
; A6 [8 z: H6 Z, |4 p  |PPU_NUM_WRITE:    ;关卡数字写入地址' b8 T$ M  a' ?7 ?
LDA #PPU_ADDR_H6 t2 o7 ~' Q; S5 d/ g2 [7 t6 b8 T
STA $2006    ;设置PPU数字写入高位地址3 d0 g9 i( q; ]0 {! z& U* J0 z
LDA #PPU_ADDR_L
! a5 Q) K. a& f8 w  r( E CLC
" d5 N5 d7 T6 v  ?" ~* ? ADC #NUMBER_A
$ k$ `7 J/ h, A4 V+ Y0 T STA $2006    ;设置PPU字符写入低位地址1 n1 z2 i( Q+ W/ n$ L& `- ?
LDA STAGE_TEMP
3 u( D9 z* ^5 s; r2 B% q TAX# ^8 d3 \9 r: d4 x- m: G! ]1 E" r
LDA STAGE_D1,X    ;写入数字
* q2 T1 k  y' l7 K STA $2007. C! N5 [; Q% p: X
LDA #PPU_ADDR_H8 E; }* `! j( ]/ g
STA $2006    ;设置PPU数字写入高位地址3 p: Y& Y  a" n7 h
LDA #PPU_ADDR_L4 ~9 T5 k& g5 l9 V+ A3 ?
CLC; N* l; L5 N8 ]5 q7 r' `$ P
ADC #NUMBER_B5 L9 h) [5 J9 w
STA $2006    ;设置PPU字符写入低位地址
' h4 r- o; h2 a% w% k LDA STAGE_TEMP
) Q9 I# ~) E0 t7 I+ z TAX
7 F3 S% M# K0 c LDA STAGE_D2,X    ;写入数字2 |# V+ W+ W. q; _; ?
STA $2007" Q% y2 Z& C! J- c) B7 W* Y
STAHE_WRITE:
: v4 K6 w: ^& K$ l3 f LDA STAGE_TEMP, X% X% n! }7 }/ _
STA $2D   ;初始关卡写入6 ^. f. z7 M! h4 F. w+ O
PPU_RTS:    ;恢复数据
4 S6 }' ]' ?5 |6 X4 u3 x5 { PLA
4 c: k' R4 @; [1 i6 w6 Q, z) V6 U TAY
; J# L" b3 y7 B! _  } PLA9 A4 C4 }/ E2 l+ j* W$ l* N' y
TAX
2 Q" u7 v/ ?8 m, l* g8 o) v; A- ^ PLA
; j; O- X, M, G RTS6 o- n4 ?" O+ n4 i

" E, i6 d3 }" O" t( o$ D- USTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据1 f  g( S1 f: S! [" j! M% I
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
& d/ g' M+ l0 k( k  E
- B4 k- o& z+ Q6 f$ f( \7 S! ~STAGE_D1:   ;关卡数字
3 J! s$ {+ l, `- T" c  Y% n .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_87 X- I. x1 \; f' y- J- ~3 \
+ k2 v9 w. n% k  B: q2 ?, X6 e
STAGE_D2:   ;场景数字
( s, `3 [2 G2 g& O0 x6 o4 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) ^2 b! d% n( _' T
" N5 |1 n0 {% U( v7 P

9 x9 R9 l, B4 A! o1 G6 T. _MUSIC:    ;按键音效
' S9 _4 }' l2 d5 i; m LDA #$3B    ;音乐号7 W; M' {% c: ^& Q5 M
JSR $919E    ;系统音乐调用
# Y- S' }+ ?: k* J) X 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2585 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-8-26 05:38 , Processed in 1.058594 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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