EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序]
% t+ W6 H9 n7 q8 Q9 h' m' Y- G7 T;作者:FlameCyclone 2017.4.1& n% Q) W9 p3 U$ t0 I  Z
; Q. Q: i0 l0 Z! [

5 k& W( g/ b9 i1 J% g- G: l;配置数据: {( G3 t0 `7 }$ x7 F! ?
KEY_ADDR = $F8    ;按键地址
  d2 z7 O4 o2 w4 ySTAGE_TEMP = $6010    ;关卡临时地址: f2 Q  V3 T/ t
STAGE_MAX = $0E    ;最大关卡数
/ J7 m; q  e- x4 [TITLE_A = $20    ;标题条件A
/ {. H. H$ _2 p5 D% q" t( NTITLE_A_ON = $02    ;标题条件A有效状态判定
2 J; e0 b0 N- nTITLE_B = $21    ;标题条件B' g& B" D  o6 s+ z' B( o; R
TITLE_B_ON = $03    ;标题条件B有效状态判定
5 D8 |" k; s( KPPU_END = $FF    ;PPU结束符# s. R/ I# r) z6 |! x8 s
TIME_LAY = $4A    ;标题显示延时地址
5 p4 E# r# d5 j3 ^7 _# iBUTTON_DEC = $42    ;关卡减少按键" Y% P8 ~7 f( u$ |) B# O
BUTTON_INC = $81    ;关卡增加按键. ?. v$ C. r6 ], {3 B: K
NUMBER_A = $06    ;数字A距离STAGE偏移量: P! \1 B. W( ]. c
NUMBER_B = $08    ;数字B距离STAGE偏移量
; V: J. ]0 T2 uPPU_ADDR_H = $23    ;STAGE写入地址高位# c# j% {: J8 u2 K4 \
PPU_ADDR_L = $8C    ;STAGE写入地址低位
# y! g4 K% I+ b# f) `" I( _, WCHAR_S = $A2    ;字符'S'
1 u6 x  c+ z/ B8 wCHAR_T = $A3    ;字符'T'3 i. e' K% R, X# c5 A% z
CHAR_A = $90    ;字符'A'- r; A  Z, i! w% D2 k7 G
CHAR_G = $96    ;字符'G'
1 F" [7 o8 ~  y2 ?CHAR_E = $94    ;字符'E'; j  E  }8 o( e5 e' P9 ]
CHAR_SPA = $00    ;字符空格
# S6 I& \, M$ }1 `+ E4 t+ vCHAR_LIN = $AE    ;字符'-'
( _0 Y5 ?$ o5 I3 G; H% C7 yCHAR_O = $9E    ;字符'o'/ D0 n$ b+ x( ]& J# _( [
NUM_1 = $81    ;数字'1'$ Q5 ^( g/ x6 ~4 E$ `. I& s
NUM_2 = $82    ;数字'2') h& f# S& W6 F
NUM_3 = $83    ;数字'3'
+ T/ p4 S) i* INUM_4 = $84    ;数字'4'" e/ b8 t& q' a* F8 a/ k$ ]% W" g
NUM_5 = $85    ;数字'5'
5 h0 W9 h: h& T8 NNUM_6 = $86    ;数字'6'
: x4 l# i. Z) g/ \NUM_7 = $87    ;数字'7'
9 y, S% f5 M; @1 J# `. qNUM_8 = $88    ;数字'8'
6 S: X" V% K0 {3 d: K+ o! \* t- {. F' S7 CNUM_9 = $89    ;数字'9'
5 O$ {2 @2 K+ w" ~0 jNUM_0 = $80    ;数字'0'0 q! X+ T5 a/ L; K7 \4 M' D
* w7 l) X( q0 b0 X  s  S. `$ u
.ORG $F82A5 t, d  d) N* D0 b' ]
JSR $E700
& ^8 y' f/ v! \. o: x! ^) _, L
* X" I" c5 {( F: }. L" Z* N * V$ `; M# N: q7 ^7 v% |! L8 k$ V
.ORG $E700
6 w3 J9 e+ ]" P1 D  
+ b5 T/ C( o* C% ^$ y. l$ o- T% Z5 W! I STY $4014    ;补上覆盖的精灵写入指令
) j/ d4 A+ t9 I+ oPROTECT_DATA:    ;数据保护
) @3 ^/ |  m4 ] PHA    ;数据保护开始
7 x: R. {3 [; u  q5 d TXA9 k  L& }2 |: @& T; J
PHA
, U/ A6 C) v5 W/ i9 U8 `& m TYA
3 m9 w) ^+ v6 i  [. E0 _ PHA    ;数据保护结束
' h' v  @4 w& o( z) z2 n LDA TITLE_A/ d/ b( J9 c0 k0 A  f. d
CMP #TITLE_A_ON    ;比较是否为标题画面
  f/ Q; K* i& @6 N8 s BNE RET
% f; Z- u1 B  `2 N' g8 t LDA TITLE_B$ i7 y+ t8 c: Y$ ~% w9 d) @( w
CMP #TITLE_B_ON    ;比较是否为标题画面
' p1 v8 _3 P' W: H BEQ PPU_STAGE$ D- m9 K  ^( v4 m$ p$ y
RET:    ;恢复数据, x: ^( R" o2 ?1 _7 |& |
PLA    ;恢复数据开始9 `& ?' R* [: o
TAY
9 Z; y) R6 J: A* C PLA0 P. z/ m, r1 [) R
TAX
' P/ _7 E) M6 G9 o1 w0 n+ u) Z PLA    ;恢复数据结束2 {0 Y' J; j  T/ I* X: f( y
RTS    ;返回6 W; _+ M$ Q' u5 }- M
PPU_STAGE:    ;字符STAGE写入程序  a" I+ O% p0 A% @3 d, r
LDA #PPU_ADDR_H # O5 d: Q+ y& s, f: n
STA $2006    ;设置PPU字符写入高位地址  C2 b- C3 T0 @* a
LDA #PPU_ADDR_L. A( `+ J+ R/ }
STA $2006    ;设置PPU字符写入低位地址
9 @. A! ]; R) m9 E6 A1 k. B" r LDX #$00
5 @( M6 M0 K7 |: D4 q% i( xPPU_STAGE_WROTE:    ;写入STAGE字模
9 K# n% ], C4 H) B, r( H3 b LDA STAGE_DATA,X, Y+ t5 ^3 ^: G0 U+ W1 }) C$ p
CMP #PPU_END    ;判断是否写入结束
5 J  i5 l; V" x) k BEQ STAGE_CMP# e: i# n; u$ W
STA $2007
1 j* r7 s: P' Y/ R- ~- u0 b& V$ N INX7 Y9 q9 J& r: z: W! ]/ T( i/ y3 M$ U
BCC PPU_STAGE_WROTE6 I* x' X  @5 O9 d+ \2 z! Y
STAGE_CMP:    ;选关操作
3 m+ y" F2 n7 V. \& y; _ LDA STAGE_TEMP2 _: j  Z6 T, b( G* w7 D$ \
CMP #$FF    ;关卡数据初始化条件判断
' v' M% G- W# _1 }* M) ? BNE KEY_B
! s$ ~6 B4 S+ N( n LDA #$00
6 P8 {, k3 J  I) I4 H! m6 F STA STAGE_TEMP    ;关卡数据初始化
7 U! k1 \1 G" F' X8 ^5 QKEY_B:    ;关卡减少
- B6 S0 A/ S: c1 j2 u LDA KEY_ADDR
+ p# ^1 b* A( ~3 t AND #BUTTON_DEC    ;按键B或左减关' z& [0 [" z% n* O" i; S
BEQ KEY_A
/ D! T  h$ a- q LDA #$FF* t& j* `3 A+ b! I4 ?& c2 G
STA TIME_LAY    ;重设标题延时$ L7 t; k' n$ _- u
LDA STAGE_TEMP
' P* V4 a$ ]0 ~ CMP #$00    ;关卡比较
2 J$ ~7 K. G) _, q+ v: y$ r BEQ KEY_A
& E& i. R) p* M) C% M DEC STAGE_TEMP   ;减关
$ g5 M" B. O7 J0 M" K JSR MUSIC    ;按键音效
2 P! w" J. b$ N) x6 ~3 `& rKEY_A:    ;关卡增加
0 S4 `  v: i6 Q6 T4 K LDA KEY_ADDR
" o& J1 v3 d5 W, W AND #BUTTON_INC    ;按键A或右加关
8 Q* [7 S: n3 N* U0 _/ j( X BEQ PPU_NUM_WRITE% Y% y4 B" S" @# S% s
LDA #$FF! B( R; b5 u/ b7 W5 K/ T
STA TIME_LAY    ;重设标题延时! w9 a8 }. Q# J; ^/ e$ l
LDA STAGE_TEMP) r5 V( F% [" c% y8 V. ^
CMP #STAGE_MAX    ;关卡比较. R1 N+ e6 A' d. [' U4 Q/ g
BEQ PPU_NUM_WRITE
- q: m' d: v0 U: R INC STAGE_TEMP    ;加关
" c1 `/ u% l/ r3 L JSR MUSIC    ;按键音效1 T* g0 M0 a! ]; O1 o( @2 v3 x
PPU_NUM_WRITE:    ;关卡数字写入地址
$ [( b4 G: K+ q. a LDA #PPU_ADDR_H) T3 O0 |7 D" ~
STA $2006    ;设置PPU数字写入高位地址
/ N2 M" M" r9 [( x LDA #PPU_ADDR_L6 }4 m2 p! S$ L* C5 `
CLC( y) k- @2 M4 p( F1 U' P1 |
ADC #NUMBER_A! _2 E$ z/ W# R0 ~3 v. }9 O& a5 k
STA $2006    ;设置PPU字符写入低位地址
" K# {4 S6 }  z4 r, S2 i# t LDA STAGE_TEMP
8 ]! ~: y# g/ V% j TAX
# O6 @! S. T, n. _' L LDA STAGE_D1,X    ;写入数字
; a9 X+ Q" ~& U4 R' T2 G STA $2007) p/ \" L* {1 g$ t7 \- A* k5 R
LDA #PPU_ADDR_H
' g) v4 Q. N0 W" a9 y! h1 ~ STA $2006    ;设置PPU数字写入高位地址/ b' s' f) {6 S; L7 p* A! m2 ]
LDA #PPU_ADDR_L2 [# `1 |( D8 h1 w
CLC
" @/ R; [9 u( ?+ Y) Y5 _ ADC #NUMBER_B
7 c1 O: ?8 v* w% \; l STA $2006    ;设置PPU字符写入低位地址
7 j/ g% |0 j# [) p' G( }7 Z0 V LDA STAGE_TEMP- j3 ]% D( L9 U: k6 k; `* Z
TAX! D0 p2 Z# P% i! z4 O
LDA STAGE_D2,X    ;写入数字  d& s9 o7 w7 e7 v
STA $20076 [2 D5 w4 T% M5 h$ x$ g8 p: G- B
STAHE_WRITE:
4 _4 k, F$ E  W% X4 g5 \4 z LDA STAGE_TEMP: f+ \. T* x2 c+ e2 Q
STA $2D   ;初始关卡写入, d9 U" _5 P  a" W" j
PPU_RTS:    ;恢复数据
% ]5 Z- k+ t$ t/ Z) I. X PLA
: J, u4 m3 h% f6 {9 @ TAY$ }9 y4 k5 |% M: E+ n+ L
PLA$ c! v8 ?- |6 H, Z1 F$ R! N* k
TAX
( n- x5 t3 n$ b0 M. a" Y6 e PLA# ~; m5 m% B2 @7 f
RTS
8 O/ k5 z1 Z' z& K1 h6 V
' n$ G4 |( k$ K* P( @# V& kSTAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据7 I0 O: U- ~8 Y5 i( b
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END$ i/ G+ v# m. J7 ]9 A, o
% R2 G5 ]$ A1 g0 Y( u9 x, T# j
STAGE_D1:   ;关卡数字3 J4 a& \) ]' E( G6 P4 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_8
- W* U+ ^2 p  W  `. [% e, c4 x+ T; c- J# ~5 J
STAGE_D2:   ;场景数字
1 V& o6 D( r. y& a9 \/ _; | .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; P4 p' o! e; U+ E. A! ~$ h
9 P) @- U) Q0 E+ L

) ^( a. `+ z' F8 J0 l; e7 C* ~MUSIC:    ;按键音效
" L- w$ N* s5 ^! x( V; P6 u LDA #$3B    ;音乐号3 H2 |9 Z4 H" ~; O: h
JSR $919E    ;系统音乐调用3 y' }9 J! G+ d# p% j
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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2491 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2025-5-15 19:54 , Processed in 1.133789 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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