EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]3 f- ~* [' t7 W- R
;作者:FlameCyclone 2017.4.1$ Q. Q3 s9 e5 u1 g
4 b8 D- {3 x7 @8 @8 h% q5 i

$ x6 {" h5 J8 N9 y. ~;配置数据
* e" c+ j3 M7 xKEY_ADDR = $F8    ;按键地址: T$ y: N! O, l6 k
STAGE_TEMP = $6010    ;关卡临时地址
/ Y) ]6 R% L, i$ `STAGE_MAX = $0E    ;最大关卡数
9 w$ M1 X& b7 j- \3 N- W) ^TITLE_A = $20    ;标题条件A3 |( |/ _! d0 v" _2 h; b
TITLE_A_ON = $02    ;标题条件A有效状态判定% O$ j" ~- U' u; [( _3 S
TITLE_B = $21    ;标题条件B. @6 l3 T3 [/ A  X! q
TITLE_B_ON = $03    ;标题条件B有效状态判定4 D; c# v" k2 ]! d& r
PPU_END = $FF    ;PPU结束符
' f+ m) y- M4 N$ Z& X3 |TIME_LAY = $4A    ;标题显示延时地址
0 B: K$ G  i/ x1 x+ U$ c7 W, iBUTTON_DEC = $42    ;关卡减少按键
. I9 [, t  Y* ?! Q9 D- J. xBUTTON_INC = $81    ;关卡增加按键( c' l8 v% g2 t
NUMBER_A = $06    ;数字A距离STAGE偏移量- J# o2 I& m( g
NUMBER_B = $08    ;数字B距离STAGE偏移量# O7 f% H2 ~& s
PPU_ADDR_H = $23    ;STAGE写入地址高位
. ^* q8 P2 p: r! o8 qPPU_ADDR_L = $8C    ;STAGE写入地址低位- w; O9 f( W. t) y$ h
CHAR_S = $A2    ;字符'S'
% }; o& U7 g& q- T% m% @; ?$ ?CHAR_T = $A3    ;字符'T'# P9 e( H! Z4 f. n7 o) {
CHAR_A = $90    ;字符'A'3 X, c, V" q! _, N
CHAR_G = $96    ;字符'G'
8 h2 N, P( X( S0 U" N: ~CHAR_E = $94    ;字符'E'
, B- E9 @- R' g2 c& q: C+ xCHAR_SPA = $00    ;字符空格6 N0 x! p, [. C. F
CHAR_LIN = $AE    ;字符'-'
2 m1 ~. T( n5 q2 Z5 G. vCHAR_O = $9E    ;字符'o') j* {) i- X4 R, x" F0 d3 [6 q
NUM_1 = $81    ;数字'1'
7 m: `/ A- i# s6 i" tNUM_2 = $82    ;数字'2'
  Y$ s9 r6 K6 c; s% ?NUM_3 = $83    ;数字'3'- l( t4 ^/ M( @, u! P( I
NUM_4 = $84    ;数字'4'; B. M1 R! X0 Y! m  E
NUM_5 = $85    ;数字'5'
6 k0 J6 |% L7 O8 wNUM_6 = $86    ;数字'6'5 w$ i! s4 Z' |) o# ?
NUM_7 = $87    ;数字'7'" c$ V1 Z5 f  k
NUM_8 = $88    ;数字'8'
! K2 g6 l2 P, S3 aNUM_9 = $89    ;数字'9'9 W" W- L: [4 D- k; F  S
NUM_0 = $80    ;数字'0'2 b% l6 \, n: Z7 _6 C  i: r( {
6 B9 [% i$ q! z' y
.ORG $F82A
6 t" z+ e, F, J2 V JSR $E700: O* P5 |1 @% m" n# U' v% @. P
5 {/ j) A5 X* j
* F: |9 C5 o; O- @  l! U  }
.ORG $E700. w! C; ?% v# t# @- y
  4 r$ A3 A( t/ e' I) o9 V$ M
STY $4014    ;补上覆盖的精灵写入指令  Z: i% r  N5 G
PROTECT_DATA:    ;数据保护
! v& }, D2 _8 n' _2 i9 X2 L PHA    ;数据保护开始4 ~/ I8 W" l; p
TXA
" t* l4 \, ?5 f  w PHA
& C2 U9 Z" B- P8 b TYA, M. R- S3 \: m% Q7 Y
PHA    ;数据保护结束4 q$ O5 e& O4 _! |7 o
LDA TITLE_A
2 j/ X8 E) F' y% M, v  m: q/ u7 z CMP #TITLE_A_ON    ;比较是否为标题画面
, y' V) a5 Q3 V1 @" j) f1 [ BNE RET$ _: P9 u0 W2 l% v' c9 z
LDA TITLE_B% \( u% c/ }5 w* B4 }
CMP #TITLE_B_ON    ;比较是否为标题画面; v4 B$ l+ I2 l5 N4 s. X* F
BEQ PPU_STAGE
: H8 G" f  L' [& z2 z& F6 uRET:    ;恢复数据
1 W3 L1 {; _* K5 u3 z, H& c: |) S- p4 z PLA    ;恢复数据开始+ r( B, E, j5 G  K6 d* E9 J* V
TAY& r0 G& t, q* X* E% K$ W
PLA- M# N4 v9 w" h0 y3 |# T8 M" S
TAX
. I6 {6 `- Z7 U1 Q, D PLA    ;恢复数据结束$ L# L, {2 Z9 N, |6 C3 X6 E
RTS    ;返回
3 Y; d  J! B; Q1 WPPU_STAGE:    ;字符STAGE写入程序$ Z2 e. T) N' {$ w
LDA #PPU_ADDR_H ( i6 U9 d4 v( T. i# Y1 \1 W
STA $2006    ;设置PPU字符写入高位地址. b" j+ |  \3 W4 ?* x0 J
LDA #PPU_ADDR_L
+ O2 {. @* ?9 K9 y( p# A STA $2006    ;设置PPU字符写入低位地址
$ M. |3 \) ]! m LDX #$00$ o9 r& ~, n7 R! G
PPU_STAGE_WROTE:    ;写入STAGE字模- w: f' Z! ^7 T8 {/ J
LDA STAGE_DATA,X
4 @% m. H) I8 D9 x. u+ H! w CMP #PPU_END    ;判断是否写入结束+ F; o. I  q4 w6 z, }* A1 @4 ~9 C
BEQ STAGE_CMP3 m/ d: q  _% p' r
STA $2007
4 N" V. q* p/ g6 o- n# k+ b4 e2 b INX& j9 |$ t/ h! b; |& R9 a
BCC PPU_STAGE_WROTE& Z8 N/ P0 p1 U- Z2 J  Z
STAGE_CMP:    ;选关操作4 |9 \' c2 O! H  J8 K
LDA STAGE_TEMP' C; t0 o# u( l/ }2 q4 S
CMP #$FF    ;关卡数据初始化条件判断0 ], X2 p7 e, @" O1 {1 [! S6 H
BNE KEY_B" c" z3 }3 s, W) `# X" J0 W( t5 V! X
LDA #$00# B; d! k4 N: P6 b0 d
STA STAGE_TEMP    ;关卡数据初始化
9 I; U3 ]" Z: ~. C8 i5 c" IKEY_B:    ;关卡减少/ m, F0 q2 y" _) J6 W' G
LDA KEY_ADDR* x6 K9 H0 I1 X) G$ T
AND #BUTTON_DEC    ;按键B或左减关8 {' z& Z" J& M
BEQ KEY_A$ M) @( |" L! v
LDA #$FF* b2 n9 i! n3 H5 b6 {
STA TIME_LAY    ;重设标题延时
: r0 }- S4 N) M LDA STAGE_TEMP1 r4 x+ h* e( n) T) |
CMP #$00    ;关卡比较
  u. l/ [/ O3 C6 r BEQ KEY_A  u: l2 B/ m0 D6 x: E
DEC STAGE_TEMP   ;减关
' {# o" i. B) S5 A  v$ a& g JSR MUSIC    ;按键音效6 Y, s6 }, q: Z. w- y7 k; M( P2 ^8 x0 w
KEY_A:    ;关卡增加
; w! b' \$ \' W3 N. }8 q LDA KEY_ADDR/ T$ u- Y3 S1 i% u1 q/ {& G# x) R: E
AND #BUTTON_INC    ;按键A或右加关
! j( d' D3 z. _, Q BEQ PPU_NUM_WRITE
% M$ q: ~8 j, I% s0 W LDA #$FF
& ]; \4 b7 I0 U, ?3 Y  M6 }) B STA TIME_LAY    ;重设标题延时; S. Y/ K- m: K+ |: X5 k5 U7 R' A
LDA STAGE_TEMP
8 W2 [( K: {+ _5 y CMP #STAGE_MAX    ;关卡比较
$ f! E" T$ z) @$ C8 B& j$ z BEQ PPU_NUM_WRITE
) p5 O& f5 z4 o INC STAGE_TEMP    ;加关- ~2 Y6 }" t5 a9 s
JSR MUSIC    ;按键音效" T) G9 D# H! p0 Z- ?
PPU_NUM_WRITE:    ;关卡数字写入地址) j# l4 k0 O/ I0 C; n. X7 X
LDA #PPU_ADDR_H# l5 T0 p* I$ n5 J
STA $2006    ;设置PPU数字写入高位地址
$ ~* Y  ~9 ^$ m7 v0 d( e4 N LDA #PPU_ADDR_L
4 R" y- \7 m8 I CLC
- W$ c! c. ]5 d0 y7 Q! x9 J& w ADC #NUMBER_A
; U/ g; b* j6 \3 i1 a STA $2006    ;设置PPU字符写入低位地址8 {7 y- O  W+ m* n
LDA STAGE_TEMP
* l$ U) T2 l  @2 A: @0 I TAX
9 ?6 ?0 Q2 S, x" z LDA STAGE_D1,X    ;写入数字( ~; j$ {. i  |7 v  Z4 x9 y# t/ b
STA $20076 c1 v) m. d! q: s
LDA #PPU_ADDR_H
; M1 x8 v, J7 u9 j" K2 n STA $2006    ;设置PPU数字写入高位地址
' v7 Z% y0 @  e$ N  q: { LDA #PPU_ADDR_L
( {! b* p5 y( }1 D# K CLC
# x4 u5 L' d2 s% } ADC #NUMBER_B% v# G5 Q, I: Q4 Y* {  C2 S( K
STA $2006    ;设置PPU字符写入低位地址
$ n. ^4 H( ^# P4 U6 W  \0 y; @% ~6 h- J LDA STAGE_TEMP) T9 {8 x/ r; P; s, W
TAX% x, s' Y# {, P
LDA STAGE_D2,X    ;写入数字; F/ R* t" F# Y0 Z
STA $20073 H1 \# x$ ?3 |# t3 @& v
STAHE_WRITE:
$ D. i6 C4 m3 P2 z LDA STAGE_TEMP# G' Q- d: V( `+ G2 w! r. L* D
STA $2D   ;初始关卡写入- h2 |+ m/ ]$ i) N% A* l
PPU_RTS:    ;恢复数据' S( a" {' F  ]& G
PLA
3 o( a9 Q* j8 \, ` TAY, K' }1 h* p6 \: B* F- o! [
PLA! @& l; A0 t* \2 C
TAX
2 t1 X- W9 g( E5 q  X8 { PLA
6 J1 E# z  q1 w1 }4 V RTS1 R1 k0 [4 b$ E5 j/ j& J' v
" ?3 J: I# p. Q; f
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据; G6 c( C' ?; s
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END8 v0 V- W1 z6 z2 C  A
$ U# X/ I, t$ ~" r8 S( q7 ^
STAGE_D1:   ;关卡数字1 x$ l' x6 Q1 Z9 k, e$ X& `/ q$ F/ Z. r
.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_83 A1 V! x# ?, Z* |' p
) l9 H- o( r4 B+ x8 r+ v
STAGE_D2:   ;场景数字
+ n1 _5 U5 K! m; Z. r9 S  _0 X* v .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
. N% u& _" @" ?: R1 O) [ 3 z. v' |# `% [' D! G# {

1 L% W  z' x" W' B7 C  ]MUSIC:    ;按键音效
& X8 G* i2 [% [+ v7 @" U LDA #$3B    ;音乐号+ {$ X3 l- X9 a  A" o. b+ @! X
JSR $919E    ;系统音乐调用) L2 H% i9 k9 _- H; h5 o
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2341 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2024-11-16 06:39 , Processed in 1.087891 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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