EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]$ d% L5 h" c2 Z/ y6 s
;作者:FlameCyclone 2017.4.1
* A* Z; _6 ?/ a0 ]
* S/ S& ~2 {+ ^
5 m) Q0 f/ w1 E  O0 m3 ~) L+ _;配置数据
. A% I: M9 C& w8 O/ V) sKEY_ADDR = $F8    ;按键地址  L) G5 J2 U# o( M
STAGE_TEMP = $6010    ;关卡临时地址
' I$ L: c) {: [/ e' J5 E6 CSTAGE_MAX = $0E    ;最大关卡数7 V; T" L+ l" f5 I5 d
TITLE_A = $20    ;标题条件A& X1 w7 T& A- ?3 p
TITLE_A_ON = $02    ;标题条件A有效状态判定
  S  ?6 Z% A( j2 v8 Y; Q" Z% nTITLE_B = $21    ;标题条件B* |/ g3 w& {  G9 ^  G
TITLE_B_ON = $03    ;标题条件B有效状态判定9 _" V8 `1 D* _, N9 O$ {+ d
PPU_END = $FF    ;PPU结束符' K- n  D: O  U+ {7 e
TIME_LAY = $4A    ;标题显示延时地址
9 I& l$ S  Z7 u* I( I6 L6 NBUTTON_DEC = $42    ;关卡减少按键# V; D, o1 X8 @' W9 t4 q: z! ?
BUTTON_INC = $81    ;关卡增加按键& e/ I1 t* U  m$ I' a6 `
NUMBER_A = $06    ;数字A距离STAGE偏移量2 c/ v& ~* S% N' ]% b% d
NUMBER_B = $08    ;数字B距离STAGE偏移量/ y( b9 Q( y4 q4 {9 i
PPU_ADDR_H = $23    ;STAGE写入地址高位
) y8 f6 ^9 S8 l9 S8 n: L& tPPU_ADDR_L = $8C    ;STAGE写入地址低位1 \' q  v+ N+ v$ e* W8 b% ]
CHAR_S = $A2    ;字符'S'7 J0 |+ Q' |. O( W+ W
CHAR_T = $A3    ;字符'T'
! K$ a( N/ M: R: w/ N, lCHAR_A = $90    ;字符'A'* E6 u& L% x) [( f, N
CHAR_G = $96    ;字符'G'
& i% @5 S' q- W  yCHAR_E = $94    ;字符'E'- S7 s2 g6 f, o/ B- l8 P' P
CHAR_SPA = $00    ;字符空格! M7 `* }( P) `4 e' s1 k  f! u
CHAR_LIN = $AE    ;字符'-'
. d/ E! y2 ^1 O4 \8 ?( ZCHAR_O = $9E    ;字符'o'$ R+ P* ]+ r! ]% J5 `2 N2 g, h
NUM_1 = $81    ;数字'1'
' Z; O% B" Z; l+ R4 U6 f5 ?NUM_2 = $82    ;数字'2'$ g' ?# T( E2 ]* L. Q; q. W
NUM_3 = $83    ;数字'3'1 s2 l& H4 m# Y/ n2 p+ G6 O
NUM_4 = $84    ;数字'4', s1 n; H  ^  B5 e. x, \# [( S2 U! e9 N2 Y
NUM_5 = $85    ;数字'5'( A) _0 Q" f7 A7 B+ a
NUM_6 = $86    ;数字'6'
6 q% J& M' a. D/ vNUM_7 = $87    ;数字'7'
) C4 b9 T( S! }+ X; d  a+ NNUM_8 = $88    ;数字'8'
& c4 {1 a! X: p" g# aNUM_9 = $89    ;数字'9'& i1 T  r! c3 y2 q8 C- F" a# x. g2 S
NUM_0 = $80    ;数字'0'$ @6 Q3 L" G; G1 U+ r
9 R* b$ n4 z2 n: D+ C& r7 D5 e
.ORG $F82A# Y6 B5 d" _, u2 o8 S+ t
JSR $E700
  T- L% c2 J+ g* |" q
, C0 T. s# B- m # j' L. m8 e, u( ?( ~, C7 v
.ORG $E700% t; R; R" z7 Z: e$ U8 F
  " G* [; u" w0 s7 n# Z
STY $4014    ;补上覆盖的精灵写入指令
8 t0 J3 X% S# g- XPROTECT_DATA:    ;数据保护
: C- y, Q) T0 u( @ PHA    ;数据保护开始9 @/ |, m: o+ D& H# @
TXA8 p- w# f4 @' M) s2 B2 V5 g
PHA' |; e. \7 a" |! K: l
TYA
) r# {: c6 x* {7 J: i* c PHA    ;数据保护结束
: R/ S) L6 M; V: u" Y" w0 h% t LDA TITLE_A! R" Y- I9 |0 a; \+ L
CMP #TITLE_A_ON    ;比较是否为标题画面0 y8 h0 L9 H2 {
BNE RET8 ~& {& _+ k, e! C# A$ |6 a) s
LDA TITLE_B
7 b5 _2 Y9 T. q0 k. V CMP #TITLE_B_ON    ;比较是否为标题画面
0 g( d. s7 A" }8 O BEQ PPU_STAGE
% h+ o* E$ q3 \, i: CRET:    ;恢复数据- Z  c7 J, j, A2 z/ K0 y  z4 f
PLA    ;恢复数据开始+ ?0 l, @8 X/ T7 s& M
TAY
% n' A* a9 b) } PLA
% l3 H. @, d% P  M# j  ]5 C TAX
* W2 N- x1 T9 Y! u/ @0 t) {5 C PLA    ;恢复数据结束# s" r& n- k% t) O/ a, S+ y" I) R
RTS    ;返回7 E  M7 z4 _" [* G2 g. I# F1 }
PPU_STAGE:    ;字符STAGE写入程序
. ^, S6 K8 v& `/ B+ \ LDA #PPU_ADDR_H / {6 l8 a# x" _) T; }* Q; F
STA $2006    ;设置PPU字符写入高位地址
. E% `. D# ^3 H LDA #PPU_ADDR_L
3 g$ q6 S6 Y6 C$ W; R0 [! Q/ Y STA $2006    ;设置PPU字符写入低位地址. S& D! d( B' r  p4 J
LDX #$00# o% k8 K- W3 S" h* u: F9 G
PPU_STAGE_WROTE:    ;写入STAGE字模* }5 L5 L: E3 w! L( F8 t
LDA STAGE_DATA,X
& f1 y( ~5 |: G% q. W# K- a! L CMP #PPU_END    ;判断是否写入结束
$ i* J  v& O+ M. y BEQ STAGE_CMP0 y2 S" k# x9 D) e2 C7 W/ x
STA $20078 T* k8 M5 V  d3 A; E/ V
INX( j. Z1 `& e" e$ U
BCC PPU_STAGE_WROTE8 ]1 k: F  _7 \! F! ^
STAGE_CMP:    ;选关操作  K. X8 a" q( V. H
LDA STAGE_TEMP
5 m- w+ Q& f( A( K- E CMP #$FF    ;关卡数据初始化条件判断) b# c1 F- b- `/ {4 @
BNE KEY_B
- c! P/ i' V: }, | LDA #$003 K! `3 ?+ i3 J2 x; b
STA STAGE_TEMP    ;关卡数据初始化
  S0 k& r2 C. J! P2 B, I/ cKEY_B:    ;关卡减少
/ T' i$ ]3 [( J0 N9 ^. z LDA KEY_ADDR: D1 v6 ?( D$ ~% Y2 F
AND #BUTTON_DEC    ;按键B或左减关- q5 l1 U3 c; [: |/ N
BEQ KEY_A
' Z( ~0 p, Q* t; ?# t4 B; f LDA #$FF
, r+ W4 Y: g, m STA TIME_LAY    ;重设标题延时
' `( i0 e) f. ]5 p& r LDA STAGE_TEMP
$ X1 C/ [( Z4 q1 D1 r( J7 M CMP #$00    ;关卡比较
! {! V1 M: n& T/ r BEQ KEY_A) c* G, N( U/ L: Q
DEC STAGE_TEMP   ;减关( z' z2 E  u* G1 P
JSR MUSIC    ;按键音效
+ _! d  u# D4 I+ w, bKEY_A:    ;关卡增加
9 o4 N1 @" ^4 \: x2 o3 F  [ LDA KEY_ADDR& c/ O& i4 u3 L+ i8 H( n4 ?& \! P
AND #BUTTON_INC    ;按键A或右加关
- U8 w6 Z, b- R" e' F BEQ PPU_NUM_WRITE
+ q: Y8 W, t5 x- X2 n LDA #$FF
$ \- |7 Z2 [& {- j9 l5 F STA TIME_LAY    ;重设标题延时0 A, V) }1 p+ C9 B
LDA STAGE_TEMP% }; w- U% u' n; B
CMP #STAGE_MAX    ;关卡比较
. s$ X# U( N: c: Q BEQ PPU_NUM_WRITE
5 n3 a+ F& F. v  a+ ^, X: { INC STAGE_TEMP    ;加关
4 @4 ^! W" B( I: l7 F% E" d JSR MUSIC    ;按键音效. ?: A5 X1 O. Z; [4 r
PPU_NUM_WRITE:    ;关卡数字写入地址
* c0 {  x9 q: j) T; {* f LDA #PPU_ADDR_H+ I6 O: [8 B% a& C/ e
STA $2006    ;设置PPU数字写入高位地址
/ ^; v% x" R- `/ K6 O1 j3 s LDA #PPU_ADDR_L
' k" e- a: c2 v2 O CLC% _) B) K' q: ~  h
ADC #NUMBER_A' T) [1 @9 q6 Y5 D; J8 o
STA $2006    ;设置PPU字符写入低位地址
8 ]/ ^* @, D& O LDA STAGE_TEMP
  s* r4 i+ G+ V% J. c) h7 H* h9 L TAX
1 v& b" w. y$ L8 ?" f% k$ g, V LDA STAGE_D1,X    ;写入数字  D2 g. v) Z7 t9 l' ~- k
STA $2007
: N" y/ ~6 [- z, a LDA #PPU_ADDR_H
9 j" w$ ]* i4 v% h0 f  k STA $2006    ;设置PPU数字写入高位地址
. O* W5 Y9 f* v5 N. k% ^ LDA #PPU_ADDR_L! C, ^1 E, t, g9 ]% n
CLC
* z' l) g$ J2 v. I0 K ADC #NUMBER_B
& g# C# w8 O, ^; E- }+ B STA $2006    ;设置PPU字符写入低位地址
; Q2 T  k2 K* N% R9 u4 i2 a3 ~ LDA STAGE_TEMP$ b7 J1 Z/ c3 f1 l& [' h1 N9 l
TAX% s5 S0 P8 L: ^0 n
LDA STAGE_D2,X    ;写入数字
! B/ a, t  T4 n5 b% ?. A8 f STA $20079 [9 p7 e# b% J& Z# K- ]! j
STAHE_WRITE:
3 G3 T- T3 b! m) _+ z, n5 [/ b LDA STAGE_TEMP9 l* w3 Z% l5 ?) h+ A0 t3 y" I
STA $2D   ;初始关卡写入
8 U! O+ o5 s9 C4 Z9 qPPU_RTS:    ;恢复数据0 M7 d8 W- \  G  i3 i. d5 U
PLA
/ X- Z! q1 H2 _6 H) O3 k TAY  Y/ b- Q( Y7 R$ ]7 b+ g) x
PLA* K0 M- P) g/ ^5 D) T
TAX
$ R- Z( N% I3 l( b5 u: S PLA2 i" Z+ g$ S$ [0 X! ?
RTS% ^0 a( i$ O( W/ w$ K$ x
/ V  i. h; }  i" y5 N9 x5 X4 w
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据
- m8 P4 B4 J' B& ~, m6 o1 _7 I .BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END( V2 e2 a; R- _1 k( W. W
! q0 r: Y$ Q0 a; T8 Z
STAGE_D1:   ;关卡数字2 S0 p& X' Y7 n$ M9 `8 w; q/ T6 I
.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
2 a* P1 U: a) v) O0 F2 c" Q' G' n) X% k/ W
STAGE_D2:   ;场景数字2 f. k9 t7 u3 J& F6 D$ C1 j; e
.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
  g& O$ @, v" ~7 n- q2 h; N 8 g% @7 B* Z1 y$ Q" k7 p

: N5 t) c: O4 V* _! ZMUSIC:    ;按键音效
# o4 L3 a# y- C LDA #$3B    ;音乐号
7 y: O, V0 j- g' h JSR $919E    ;系统音乐调用, a4 O$ m# F$ g$ d7 W" b: s: H
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2533 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-7-1 07:09 , Processed in 1.067383 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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