EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
7 |) M8 l9 Z2 S" G( C. ^' l1 _;作者:FlameCyclone 2017.4.1' }: u% c. y7 }" y) J7 F
, @6 S$ b1 ~! {
) b* U" l8 z& |; p4 R
;配置数据! b. r2 _9 m0 k
KEY_ADDR = $F8    ;按键地址
8 c% P" v' p* ]" f" T9 |% S3 `STAGE_TEMP = $6010    ;关卡临时地址
* D8 ~% J  t: a+ \% r, `3 \1 jSTAGE_MAX = $0E    ;最大关卡数& @7 u. G) W8 r4 v6 i
TITLE_A = $20    ;标题条件A/ N" _( Q3 G) T+ N0 r1 m
TITLE_A_ON = $02    ;标题条件A有效状态判定0 \( z0 i+ Y, |/ t
TITLE_B = $21    ;标题条件B0 {& i3 E! e& h7 u4 i2 C
TITLE_B_ON = $03    ;标题条件B有效状态判定
0 l" I  R( Z9 S5 nPPU_END = $FF    ;PPU结束符
& P. @2 |/ Z3 c9 ~. c  XTIME_LAY = $4A    ;标题显示延时地址
5 {! r1 ^1 H: NBUTTON_DEC = $42    ;关卡减少按键
) g) S6 a, g7 p* ~" lBUTTON_INC = $81    ;关卡增加按键
/ _6 E& I, c9 x" w7 Z7 T8 }3 |NUMBER_A = $06    ;数字A距离STAGE偏移量0 ^& ?, U: O# J) ]0 d+ v2 F
NUMBER_B = $08    ;数字B距离STAGE偏移量. a' G7 E, R. _% R6 S5 u2 l
PPU_ADDR_H = $23    ;STAGE写入地址高位6 X# c# i3 R$ \
PPU_ADDR_L = $8C    ;STAGE写入地址低位: q! ~$ U4 n* E9 r4 }4 D; U6 G
CHAR_S = $A2    ;字符'S'
( b' P! `1 s) N) [0 aCHAR_T = $A3    ;字符'T'
2 b" G$ Z2 S. `3 J: }CHAR_A = $90    ;字符'A'
+ C4 W$ {- n9 Z) m: A8 LCHAR_G = $96    ;字符'G'7 V( ^+ T6 `/ M) ]" ]7 U4 I
CHAR_E = $94    ;字符'E'( U5 ~- Z# ?0 S; e" \4 u
CHAR_SPA = $00    ;字符空格
3 w5 [/ ~- ]0 h8 U3 uCHAR_LIN = $AE    ;字符'-'$ Z/ V$ G# j- v$ o
CHAR_O = $9E    ;字符'o'( R( Z* O- D# ^" y' M2 U/ F2 G
NUM_1 = $81    ;数字'1'
# j+ W) D- w- @/ yNUM_2 = $82    ;数字'2'
: N5 ^2 e+ g/ g: q5 X6 sNUM_3 = $83    ;数字'3'% J7 A1 w9 L8 o- W! A
NUM_4 = $84    ;数字'4'1 [- y# A- @2 g; J
NUM_5 = $85    ;数字'5'
2 R( |6 `- y9 ?& G6 E( d) v: aNUM_6 = $86    ;数字'6'$ x9 q& }( x4 A, t! X6 u
NUM_7 = $87    ;数字'7'
4 o# T: {# @% V8 Y  D+ O# S" V- S2 lNUM_8 = $88    ;数字'8'
, c7 P/ R' E7 Q7 bNUM_9 = $89    ;数字'9'
/ I4 l$ ~* [0 INUM_0 = $80    ;数字'0'
4 n8 [+ @& L; q+ L/ Y0 v4 @
8 k! w  X6 u7 ?$ [9 P6 b- @9 c .ORG $F82A
- M% o# R6 B4 T. h+ t  H. M JSR $E700
/ Z6 [3 E5 [( Y) z4 G
9 W/ a2 ?5 z, n8 a6 I / v4 B, o* I2 N2 u% o
.ORG $E7003 {/ B5 B. z9 t5 Q) K
  7 S5 @9 p% m" O6 _, i
STY $4014    ;补上覆盖的精灵写入指令
. q" _/ s- k# f/ aPROTECT_DATA:    ;数据保护
  a/ w: v( z! _6 r2 Z$ C PHA    ;数据保护开始
: U9 b  r% I9 e' x% C+ Q TXA
4 D. J) F* K# [ PHA
' t. [& o$ [, p+ c$ T3 c1 w' c3 x: W TYA
& T+ {( j0 R) g( V  q- Z$ r PHA    ;数据保护结束
- `1 P- o% c8 v LDA TITLE_A
# p* Z) `, f' }' N CMP #TITLE_A_ON    ;比较是否为标题画面7 r9 u7 Q& ^5 }4 E
BNE RET5 O8 R7 `/ x) W& G
LDA TITLE_B
8 b! n. k+ O) A0 X3 z CMP #TITLE_B_ON    ;比较是否为标题画面' h: G6 O: U) ]9 p; m
BEQ PPU_STAGE
( k% x0 `& p" @0 Z  D) f4 tRET:    ;恢复数据, Q* O+ J; n( g1 S# ]5 F8 a
PLA    ;恢复数据开始* m: |* F: U9 D- A$ B- Z
TAY  k( B5 E$ q, m" b6 }6 p1 h! ~( u
PLA
1 z3 `$ K" v# c9 ?# I  o TAX. }/ J4 d" u) J5 |. n, u- B
PLA    ;恢复数据结束
* G0 n1 a& k. z1 W2 O- r1 B! U RTS    ;返回
. S2 ~4 _7 i0 D) kPPU_STAGE:    ;字符STAGE写入程序6 q& H) F3 q7 m5 q% v0 r
LDA #PPU_ADDR_H - S) ?" j2 i2 @* i+ Q3 G% Z
STA $2006    ;设置PPU字符写入高位地址
) E% C5 d4 b: A4 U9 ^ LDA #PPU_ADDR_L) [3 H4 U% d! ]: |5 e3 ?; z
STA $2006    ;设置PPU字符写入低位地址% c" I) Z2 f; }+ N/ k6 W+ r
LDX #$00
* k: K$ R$ L) _5 v& T' F( X7 S* gPPU_STAGE_WROTE:    ;写入STAGE字模
+ U8 B/ L" h0 F. e LDA STAGE_DATA,X
) b" w: Y0 ^1 U CMP #PPU_END    ;判断是否写入结束5 J  F) W2 `2 l: u# r- ?
BEQ STAGE_CMP
" P0 y% G. o0 l3 ?+ i! n, u8 a) B STA $2007
5 K& o. t9 @$ X* l, _ INX
( U! {; P6 o8 Y2 \ BCC PPU_STAGE_WROTE
4 f4 v) E5 e- i  ~( X3 f: _STAGE_CMP:    ;选关操作
2 q, H' U# Z5 E/ b9 M# C# j LDA STAGE_TEMP
  C# v- R7 ?+ V/ J0 ~) _ CMP #$FF    ;关卡数据初始化条件判断/ p# o! f2 S5 w( J5 c
BNE KEY_B: ~! Z9 a2 i6 Q4 r7 F3 ^. N
LDA #$00; v7 P* M9 ], E7 V1 u0 ?5 [
STA STAGE_TEMP    ;关卡数据初始化! ^! j9 t% M: |3 R: s% k5 \" _
KEY_B:    ;关卡减少# w/ O1 C) z. K: y, ~( c1 J4 e
LDA KEY_ADDR
2 O( e$ |8 J- ]% ?2 X: Q" B AND #BUTTON_DEC    ;按键B或左减关
& K+ f; z) F: q+ R* A) P! m BEQ KEY_A
* C1 v# o& ^6 a; P LDA #$FF9 }+ l5 `" C2 X& D- @8 K# s
STA TIME_LAY    ;重设标题延时
+ z, Q: }2 P; P. Q) _" l6 T  O LDA STAGE_TEMP
5 t- j# h8 S" [7 z$ D- Q CMP #$00    ;关卡比较
/ ?1 [$ \6 ?3 i+ q BEQ KEY_A
8 S/ \( C+ `$ P DEC STAGE_TEMP   ;减关* |2 }5 G9 A/ X3 m2 j
JSR MUSIC    ;按键音效& J% B% ]  u, j
KEY_A:    ;关卡增加
2 V. b2 S8 h( k9 x. _. O LDA KEY_ADDR- t8 N/ S# f  g# x
AND #BUTTON_INC    ;按键A或右加关
, z0 t, X" ]! Q. I2 h BEQ PPU_NUM_WRITE* w. S/ Y  E9 C
LDA #$FF
" K) F( Q' K6 w) B STA TIME_LAY    ;重设标题延时+ i* i7 f2 E: C- d# w0 d: @
LDA STAGE_TEMP
2 J: m2 o4 a6 k' B* `* J CMP #STAGE_MAX    ;关卡比较8 V, |$ B; d+ Q6 d+ M- @/ @
BEQ PPU_NUM_WRITE9 i5 r2 O* _9 H$ B9 p( a9 q" ~
INC STAGE_TEMP    ;加关
+ r: Z$ s) K/ c$ p# [* K* Q0 O JSR MUSIC    ;按键音效2 e( [2 c2 w6 {- ~9 w  y2 m6 [
PPU_NUM_WRITE:    ;关卡数字写入地址
: e! z$ Q) P: m$ W% D9 ^ LDA #PPU_ADDR_H  N0 A0 j* Z5 [8 {' \
STA $2006    ;设置PPU数字写入高位地址  V8 i3 S& |" J4 V9 N. D' C
LDA #PPU_ADDR_L
1 B4 ~3 g% ]4 U8 U) X0 O3 j CLC8 B) Q5 L8 [0 y# `
ADC #NUMBER_A
9 b  v/ [( H) u/ |3 z STA $2006    ;设置PPU字符写入低位地址3 e& J7 |2 |' }) }. l4 q5 s- a2 U
LDA STAGE_TEMP( O* ^! d5 Y# A1 H2 Q
TAX
" G8 W" G0 }% Y1 A LDA STAGE_D1,X    ;写入数字
  ]3 u% d; {2 C3 D% c0 q8 h2 M STA $2007
7 }, D% n5 ]1 }6 C LDA #PPU_ADDR_H1 Y! I6 n, E, X1 D' [7 O* E. ?
STA $2006    ;设置PPU数字写入高位地址
! z/ T' W+ P; B& |4 {4 |( d/ I LDA #PPU_ADDR_L4 X5 Y- M" M- B4 p" u
CLC) y+ y4 @6 Z! z8 P8 t5 g+ W) P' ^2 K
ADC #NUMBER_B+ C! v5 g; O3 s0 Q: J
STA $2006    ;设置PPU字符写入低位地址3 K! N* I! Q1 E. [/ ~
LDA STAGE_TEMP" ~; J* Z- l  z- v  ^
TAX4 I$ d$ i3 J5 j- Y; r) a' Q* f
LDA STAGE_D2,X    ;写入数字
& r9 n, k6 ]/ S: z' c9 H STA $20077 Y: @" ]* q8 o, L# V
STAHE_WRITE:5 S3 b$ d7 F( W# H
LDA STAGE_TEMP
6 \6 [( z7 E5 R! a STA $2D   ;初始关卡写入
" U! A$ Z( P1 CPPU_RTS:    ;恢复数据( @: z& Q' X- L  L. }6 F3 s
PLA/ g4 C; |) K# a8 i% u9 u# _/ o  c
TAY( X# V4 o- h: q1 c/ m8 G8 g. u. x
PLA
, {6 W$ X+ ~8 O% j1 L1 n  J5 z! k TAX: J- W9 e9 b# L' G- C) y) i
PLA
$ _; \  y- h: z% \ RTS
/ v2 c7 L3 {8 u/ C1 F
% a0 Z4 e7 [4 D& vSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
0 z; }3 p. ^) c7 I- f8 S; J .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END. y$ c" O# p" R: M! j8 m

! n$ X& |- M0 X% m8 R7 SSTAGE_D1:   ;关卡数字
# E' h4 K! ~% L; \8 Y0 g$ \; T .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_88 S& p, M, q4 ]& k% U
; V7 B! x: {/ h" I
STAGE_D2:   ;场景数字
/ l1 A. V" {, _8 s- H .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% ?9 \3 A# e3 c" c/ G2 ^
* p* E4 ~+ F0 M( M: ?

7 s/ w- I" v: B0 R0 z7 oMUSIC:    ;按键音效9 `  w2 B4 j* I
LDA #$3B    ;音乐号
  n7 B5 k& m6 G# \; e/ d JSR $919E    ;系统音乐调用
6 p, v! p& y# U& j# F 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2663 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-11-20 00:03 , Processed in 1.093750 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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