EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
& P; m$ o2 V, Z, }" Y3 {;作者:FlameCyclone 2017.4.1
# u: W3 A+ K6 H! p; O$ j) b, j/ w$ o% T- D& V. z
1 A; @1 y7 `5 t9 V0 A
;配置数据; u7 s3 |$ U3 {9 t
KEY_ADDR = $F8    ;按键地址
, P& X2 j0 d: V. LSTAGE_TEMP = $6010    ;关卡临时地址  t9 j' d- J: H; D
STAGE_MAX = $0E    ;最大关卡数
% h% I% C6 ]  L0 fTITLE_A = $20    ;标题条件A9 D% D9 h1 v% Y1 Z! p- g) V
TITLE_A_ON = $02    ;标题条件A有效状态判定
" O: A$ ?) B' {( I  U4 L6 WTITLE_B = $21    ;标题条件B' b' ]% l  J- f- T& B1 j: Y
TITLE_B_ON = $03    ;标题条件B有效状态判定* U6 G; @8 h- N# r
PPU_END = $FF    ;PPU结束符
* V7 A* D1 g1 x0 c7 HTIME_LAY = $4A    ;标题显示延时地址) ~0 e" D6 f2 [4 x" J9 w- k  B
BUTTON_DEC = $42    ;关卡减少按键
" P4 o) ~. e5 [% m$ rBUTTON_INC = $81    ;关卡增加按键
6 B+ b2 @) V; P! b" aNUMBER_A = $06    ;数字A距离STAGE偏移量
6 D; P% F+ P0 A  TNUMBER_B = $08    ;数字B距离STAGE偏移量
7 Q8 o& n+ ~5 l9 W! P) R) |( SPPU_ADDR_H = $23    ;STAGE写入地址高位) W0 A6 l. l( |& W, x
PPU_ADDR_L = $8C    ;STAGE写入地址低位
% B+ v4 ]  s) X" \% ?* q  CCHAR_S = $A2    ;字符'S'
# ^1 S. e' Z) y* ]: s' MCHAR_T = $A3    ;字符'T'
. w8 [% L" V: @) |) fCHAR_A = $90    ;字符'A'' O7 h% m) O) D1 e" X7 \* K: D
CHAR_G = $96    ;字符'G'
0 |8 |# r0 Q! B$ C5 ]5 NCHAR_E = $94    ;字符'E'0 M+ y/ f, S1 l9 T8 C) p
CHAR_SPA = $00    ;字符空格5 a5 V( ]& a6 t+ Z9 Z4 J8 o* p% E
CHAR_LIN = $AE    ;字符'-': o. J' H& c$ Q" w
CHAR_O = $9E    ;字符'o'
4 O; \. c9 _+ t' \NUM_1 = $81    ;数字'1'# j7 ]! T; E( P* _1 ]# B
NUM_2 = $82    ;数字'2'
& B/ ^1 k2 V# T5 c, fNUM_3 = $83    ;数字'3'1 g  ^; ^5 m- y/ E7 D! H2 h8 w+ {
NUM_4 = $84    ;数字'4'; Z0 G6 p. L6 @9 c9 R  O5 P+ R
NUM_5 = $85    ;数字'5'6 B$ ^7 |- M) Y, d
NUM_6 = $86    ;数字'6'9 g/ k5 ~7 X8 G
NUM_7 = $87    ;数字'7'
9 P) W2 W* o" Q/ }  Q& f3 GNUM_8 = $88    ;数字'8'
6 o6 E8 x; Y+ V% o2 c, E: e- LNUM_9 = $89    ;数字'9'# ?3 h+ O' {/ y7 c) J" y7 e3 G* W8 I
NUM_0 = $80    ;数字'0'
1 G9 J2 v( J: W/ z! w: k4 ^+ I* Z  r( g
.ORG $F82A- _* A3 r; e8 s0 w
JSR $E700
+ w/ b1 `" C- R0 A/ f3 Q8 j2 }+ E
! F; A. X' F8 q& K* @
/ q9 u% {" g1 U" X& y, R4 x0 ? .ORG $E700" [' M! O( Z2 z3 f. S) V  z. M9 p
  ) f) K$ V. C* \
STY $4014    ;补上覆盖的精灵写入指令# N$ D* n7 E0 Y8 k; r
PROTECT_DATA:    ;数据保护
% a. ], h1 K: Q  r4 p PHA    ;数据保护开始
( K- ~6 S5 T& y, l+ E, y6 B" Z TXA
% ^  z* B) _" ` PHA
4 Y2 Q! w) F. d9 s+ P: Z TYA0 m0 \/ m/ b+ E9 k, ^
PHA    ;数据保护结束
1 M& y$ ~: g4 j7 K* E; g3 W0 e LDA TITLE_A
; Q3 h, h, B6 [6 G$ C" g CMP #TITLE_A_ON    ;比较是否为标题画面
" L. T. M& H- b BNE RET2 S7 R, m2 ?; t; Q. l$ z( T
LDA TITLE_B3 D5 A* V8 n5 q5 ?% X
CMP #TITLE_B_ON    ;比较是否为标题画面
, K, z! a. a5 Z( G9 p BEQ PPU_STAGE/ Y! C. v2 ?. Z7 O* u* y: o* {- Q6 D
RET:    ;恢复数据
0 c" r1 B: d: T0 O2 {9 n* x7 f0 S PLA    ;恢复数据开始- V0 [4 O; @/ Q2 F9 _/ E
TAY$ b- |! b3 L/ g7 y
PLA
- }% W; J2 N, h* p, t TAX; Q# N) I: E' d$ n0 {
PLA    ;恢复数据结束  |8 X4 o( K9 l
RTS    ;返回
' C, q( T& I! nPPU_STAGE:    ;字符STAGE写入程序7 E9 v# ?, \4 Z. R* j4 z
LDA #PPU_ADDR_H ( S: ]6 J+ q; Y: ^, U
STA $2006    ;设置PPU字符写入高位地址
1 M/ j8 j5 A0 E: L7 s6 T LDA #PPU_ADDR_L. O  l* i* J! H# {$ }' u3 p
STA $2006    ;设置PPU字符写入低位地址7 n. O# O4 t( b$ ]
LDX #$00% S1 ~4 w9 i, m  i! E- [
PPU_STAGE_WROTE:    ;写入STAGE字模% i3 `3 [! t9 R' _! W
LDA STAGE_DATA,X2 Q7 H7 H$ H: `7 m
CMP #PPU_END    ;判断是否写入结束
# H# T! ]/ w$ D: [ BEQ STAGE_CMP0 \: T* ^3 b" v3 c/ U+ ^3 C: ?
STA $2007
' U( }5 ]7 U4 p4 b! r INX; ]2 ]+ ]2 t" I/ a3 g
BCC PPU_STAGE_WROTE
8 W: q4 }$ z) t& h  Z( r( {STAGE_CMP:    ;选关操作
  J8 w0 M9 g0 _% v% m LDA STAGE_TEMP! ?- F; m$ O( h9 e
CMP #$FF    ;关卡数据初始化条件判断
  c) J+ h7 ~# T3 x. l, G BNE KEY_B
1 X* ~& H- ^# }6 d4 w; o LDA #$00: a. Z, a4 `: X: d9 W. i0 i7 W9 e
STA STAGE_TEMP    ;关卡数据初始化
; G& _" _: ?( }2 D$ h) B1 ]$ F# @KEY_B:    ;关卡减少
5 R: E6 E6 k. n+ z) @; {: p, ]" e LDA KEY_ADDR
; y) K8 w; g; b8 O! u% R AND #BUTTON_DEC    ;按键B或左减关
/ [3 Y4 P# e5 o BEQ KEY_A
  L% P7 O+ N' W5 D4 ?* y LDA #$FF
0 `% C. e8 j5 K7 ~" x STA TIME_LAY    ;重设标题延时
  M( t; X* ]/ |  }7 n4 Q1 t' X$ a LDA STAGE_TEMP2 u) t5 P( \7 y; W8 i5 s
CMP #$00    ;关卡比较
* a: X* _9 Y/ X. Y* Z7 q, y% O, l BEQ KEY_A
; V$ F6 w* S1 b; b2 T# U DEC STAGE_TEMP   ;减关% g% }# z1 w: B- X( R$ X8 P  D
JSR MUSIC    ;按键音效
- R0 x( {9 M+ s7 a' CKEY_A:    ;关卡增加% Q% A# i( |. H
LDA KEY_ADDR
7 R+ g( S% k& Q AND #BUTTON_INC    ;按键A或右加关# \& w- S. U! ~6 m* X4 i
BEQ PPU_NUM_WRITE( R. t7 \9 ?1 a3 _: R4 n* o
LDA #$FF/ }: O9 @% r& {, f$ B
STA TIME_LAY    ;重设标题延时
9 f; e( I% d: r1 T6 f LDA STAGE_TEMP1 [/ m  R/ \) {8 y. g
CMP #STAGE_MAX    ;关卡比较
4 \8 R0 g& `' X4 g/ ]1 r& J. a BEQ PPU_NUM_WRITE
/ K+ n* \2 }/ _% M; `" w INC STAGE_TEMP    ;加关- Y! {* K# n5 |$ H7 H0 {
JSR MUSIC    ;按键音效
9 ]3 n/ h$ ]4 Q/ q& ?PPU_NUM_WRITE:    ;关卡数字写入地址+ `$ k( o3 D) I# P, u2 u$ d
LDA #PPU_ADDR_H) _4 s* l  I0 X8 i' k
STA $2006    ;设置PPU数字写入高位地址
( P+ G7 {8 W- |  c4 x$ ? LDA #PPU_ADDR_L
5 a5 \% H% G& G CLC9 o* G7 X4 h; x9 D! b4 S
ADC #NUMBER_A
2 P! v6 [% r# v0 J* |' P STA $2006    ;设置PPU字符写入低位地址" @% f: e! N5 Y7 A' N
LDA STAGE_TEMP
% ~0 w3 R* Z, k" q+ L6 l. r, Q TAX
4 |* U* m: y$ W) B( p LDA STAGE_D1,X    ;写入数字
! b7 C; X" p$ |" q2 ~6 j! m7 K, o" ~ STA $20078 o5 A; C1 K: \1 N' s$ G# e
LDA #PPU_ADDR_H
  M4 X" ^' R( E STA $2006    ;设置PPU数字写入高位地址, |# U/ m1 ?- I7 m4 D
LDA #PPU_ADDR_L
) Z5 g1 K2 E. D- W/ y$ e4 f CLC
; Y( x" e+ l0 l ADC #NUMBER_B
& s' `1 w; ]( E0 [9 ~/ U) g STA $2006    ;设置PPU字符写入低位地址% E: H' d( Z( h
LDA STAGE_TEMP
/ o2 A) n- _' c/ M TAX
1 B" t/ E  D1 u0 q) l7 ~! l/ g LDA STAGE_D2,X    ;写入数字  w$ K  X: `& D( U- \# P
STA $20078 ?- a5 q# o+ O
STAHE_WRITE:; @# l4 y. I0 I
LDA STAGE_TEMP6 ?- \0 i( j. U" u# n5 ?5 g- Q
STA $2D   ;初始关卡写入
6 p+ M# t0 p" I+ y# S- s3 t. qPPU_RTS:    ;恢复数据
# a8 b6 n9 A) q- {: w PLA! p0 E  s, K1 d. f/ Z" ?
TAY
* g) B  m5 G( g( ~4 b PLA
+ a* b  Q9 T: x& S TAX3 R/ e, N" w! \4 Q  D# S& W! l
PLA
' ]  o9 X2 X1 e" k! U RTS$ H3 |, |: D7 W4 j& e* I6 q
9 M: m* q; X3 R5 y. U
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据+ B- {& O# c- z8 m5 [
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END
' e6 S2 z9 _. r0 l1 r; T0 l
5 ?! W& \7 M% n: kSTAGE_D1:   ;关卡数字
% }" l; i: L9 c/ U  p .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
+ a& d+ P' {/ f6 ?. `( \( m  Q- _  Y' B4 \6 ]5 q  P7 L& V
STAGE_D2:   ;场景数字
% H0 e. r0 ~6 G) V# Y& O/ Z .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' A1 Y& _- _$ q, d, Y& S

& b. M" I) C. S! G: Q4 c
* P3 t% `. V5 K( R" ~MUSIC:    ;按键音效
; K" V- U5 Z0 k& V& L$ S  o LDA #$3B    ;音乐号8 z1 j5 [- A* A9 m. q* l/ n3 L3 K4 i
JSR $919E    ;系统音乐调用
! L- R; Q% z8 @' u- K' {; v 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 14:38 , Processed in 1.061524 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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