EMU618社区

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

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

[复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2017-4-1 18:08:07 | 显示全部楼层 |阅读模式
;[FC][忍者神龟3代标题选关程序], F( r- {, r' h1 @$ b
;作者:FlameCyclone 2017.4.17 `4 Z! R# Z1 w7 ~
0 l+ V4 Y) t' j' P7 S! r
5 m, \4 i* t4 y7 ]4 u& K' }# {0 C
;配置数据4 Z6 ^. K3 m. a# `8 d0 w" w* A: @
KEY_ADDR = $F8    ;按键地址
+ }" Q" V6 _& t. q% V* \" F' l! F  WSTAGE_TEMP = $6010    ;关卡临时地址
; T8 h; ?( ?( w: |: a, [STAGE_MAX = $0E    ;最大关卡数
6 l  O6 k9 }7 bTITLE_A = $20    ;标题条件A
! L% Q1 y0 K0 \" E* h) [TITLE_A_ON = $02    ;标题条件A有效状态判定
% X% J- F9 q+ n$ `; ~, fTITLE_B = $21    ;标题条件B8 w9 `+ E+ H6 O( t5 L
TITLE_B_ON = $03    ;标题条件B有效状态判定
  P% K% B3 C8 z6 X" M0 MPPU_END = $FF    ;PPU结束符; B( e1 N6 _1 M* ~/ f& {1 w! E
TIME_LAY = $4A    ;标题显示延时地址- }5 ~) N: M; O' G# ]2 B9 C& C
BUTTON_DEC = $42    ;关卡减少按键) R2 n* \+ x: b, c) D# x' k! |1 ~
BUTTON_INC = $81    ;关卡增加按键
, t: N- l) s  u: V* JNUMBER_A = $06    ;数字A距离STAGE偏移量5 V# i: x5 f& G% S8 x' u
NUMBER_B = $08    ;数字B距离STAGE偏移量8 G4 R# |; Z' V/ y, O+ K
PPU_ADDR_H = $23    ;STAGE写入地址高位
: K; G+ ^8 i8 c# TPPU_ADDR_L = $8C    ;STAGE写入地址低位: q% }" _* o! f
CHAR_S = $A2    ;字符'S'
: N" \4 I8 W( ZCHAR_T = $A3    ;字符'T'. |0 V) C( s# h2 {$ @
CHAR_A = $90    ;字符'A'
, R0 ^' T0 M0 }CHAR_G = $96    ;字符'G'! L. \7 r, v6 I* A" k% L/ G
CHAR_E = $94    ;字符'E'
7 c' x5 R7 P7 z) L  qCHAR_SPA = $00    ;字符空格
( V# R7 [! O) Y7 h) Z; JCHAR_LIN = $AE    ;字符'-'" J$ V" d6 c) N1 ?" w, \- q
CHAR_O = $9E    ;字符'o'* U, _* f( o7 d$ U/ B4 F4 i
NUM_1 = $81    ;数字'1'
  P9 O9 R4 H+ i- cNUM_2 = $82    ;数字'2'% l, \" c/ d; |% A7 A5 t8 ^- J
NUM_3 = $83    ;数字'3'! O8 N3 K2 i6 l
NUM_4 = $84    ;数字'4'
% D9 v5 F, O% u. G: V& FNUM_5 = $85    ;数字'5'
: G, E) Z5 J8 L" FNUM_6 = $86    ;数字'6'% ]6 r2 h8 e) B1 N* W
NUM_7 = $87    ;数字'7'
/ }4 ^; z9 ^2 T0 WNUM_8 = $88    ;数字'8'
1 w9 ?* I, G/ vNUM_9 = $89    ;数字'9'
5 g) {" t: |3 ^: K8 D2 R' h1 s' |2 `6 gNUM_0 = $80    ;数字'0'
! u7 }: T  Z0 R1 G6 @1 P9 D8 L) L' H; e, I
.ORG $F82A: X9 b  i( r6 a* \5 M- G! @
JSR $E700: Y. \# u0 F- I- S4 G6 f

4 J& j) t( ^* T! L% B& ?1 @, d 5 T, A, B3 i1 S: u' ^3 T7 K
.ORG $E7006 q- f! ?# q0 |/ \! W
  1 ^: L5 a# q$ y* t1 [5 f9 o6 A1 ?- W; D
STY $4014    ;补上覆盖的精灵写入指令$ d" S  [$ v+ f/ R/ q1 x" t7 ~: s
PROTECT_DATA:    ;数据保护
8 a( a7 o% c% F' w6 w6 W1 ~1 Z) C PHA    ;数据保护开始$ m7 k% D9 R0 c, ^9 L# f
TXA
/ G4 J- e6 \4 l2 O, D0 B/ f% f8 ` PHA" U, H, H' C  E$ ^
TYA
+ Q% b( [- S) @ PHA    ;数据保护结束
" o* A- T, o1 [8 Y4 c. R2 c LDA TITLE_A9 G- R9 v/ F2 C; f, O0 ?6 A
CMP #TITLE_A_ON    ;比较是否为标题画面  A8 X  P% P3 Q) j" H( \
BNE RET
/ y% |3 d: Y( H: z: | LDA TITLE_B1 L% c! ?/ F4 S' U- ^& F, }
CMP #TITLE_B_ON    ;比较是否为标题画面
1 Y3 _6 ?5 F7 H2 \+ A- t BEQ PPU_STAGE4 G$ j$ R2 T5 m
RET:    ;恢复数据# Y- O( @5 p6 ]1 v% ?% [% j7 Z
PLA    ;恢复数据开始9 }4 V5 b: r% y
TAY* |& a/ f; W8 C: ]
PLA4 Q/ _+ g: V. A
TAX
% d9 E5 \: e* S7 |/ m8 J, q; M, a PLA    ;恢复数据结束4 h7 o+ o7 R1 {& b. E$ b
RTS    ;返回# b( F8 I% R2 L
PPU_STAGE:    ;字符STAGE写入程序( R  P+ d0 h' T
LDA #PPU_ADDR_H 2 j4 k3 q, M- X5 `
STA $2006    ;设置PPU字符写入高位地址/ [2 D/ U+ r+ Z+ x
LDA #PPU_ADDR_L0 c! v2 u) }& H/ S# d6 G
STA $2006    ;设置PPU字符写入低位地址4 a* N5 I7 m# I" _4 i7 {
LDX #$00  h* e" H4 V% ^8 q0 y9 W1 U6 k, e
PPU_STAGE_WROTE:    ;写入STAGE字模! t8 D. g! ?1 v7 \1 e
LDA STAGE_DATA,X
+ R; M- O: ?8 E1 J( i CMP #PPU_END    ;判断是否写入结束
7 e1 K9 \2 |0 `9 m" | BEQ STAGE_CMP0 B  k+ v, `. M
STA $2007% G& P4 i- [/ ?, f& K8 E% [
INX
6 j5 C. c9 N) |. I( ?, W BCC PPU_STAGE_WROTE
" U) }  D8 b8 _" l+ X( KSTAGE_CMP:    ;选关操作3 ~% ]" g0 [( u. I" q
LDA STAGE_TEMP
3 V! R7 J6 v. d. D CMP #$FF    ;关卡数据初始化条件判断
/ r* I: b6 j% u( Z1 T4 y BNE KEY_B
2 _: f5 s; Q, c% j8 ^3 t LDA #$00
. {5 q. b0 t  f0 M  R. g" c1 q. _7 n STA STAGE_TEMP    ;关卡数据初始化( z# _0 {  I/ B- K) i4 D5 O
KEY_B:    ;关卡减少- R0 q& W, J; n7 q, T
LDA KEY_ADDR/ N) Y# g. e2 X/ V; e. L
AND #BUTTON_DEC    ;按键B或左减关
$ x; _( w' l) t2 C7 c' D% `. y8 T BEQ KEY_A) w- T4 d9 G# K
LDA #$FF5 W5 z: t5 O# _0 s
STA TIME_LAY    ;重设标题延时( r9 S; y: R$ ^7 p( ~
LDA STAGE_TEMP% w5 W* Q0 v. Z) Z1 P4 {
CMP #$00    ;关卡比较
" R7 t; [+ `6 P/ \3 j BEQ KEY_A
" Q* W8 s' Z3 ?8 | DEC STAGE_TEMP   ;减关
' y  N( U! R: H9 Q0 P JSR MUSIC    ;按键音效
3 L& e& E% r1 FKEY_A:    ;关卡增加
* m( B& M* t: @7 i LDA KEY_ADDR* Q8 Z% }" M# q& A: d6 n+ V2 u
AND #BUTTON_INC    ;按键A或右加关
: ^* l: k! J" H( |- _  ? BEQ PPU_NUM_WRITE
8 A1 G+ x. I! C& Z- G& a" s+ ~ LDA #$FF
* x* _+ m% I- a! S) J STA TIME_LAY    ;重设标题延时1 q7 g0 {, J! o; K! j# ^. ?6 S5 s& m
LDA STAGE_TEMP6 p+ o2 R% K5 q5 J3 s# n! [
CMP #STAGE_MAX    ;关卡比较2 S- ?' g: y5 [- l1 ?
BEQ PPU_NUM_WRITE
3 v" i: W1 o: a- R" I5 h. L0 V INC STAGE_TEMP    ;加关
3 a/ D* U/ H0 _. N JSR MUSIC    ;按键音效0 j1 O9 {; }8 j' Y% Z; P3 s+ E
PPU_NUM_WRITE:    ;关卡数字写入地址
2 v5 ^# x6 I$ L  W' r: g LDA #PPU_ADDR_H
+ V" P+ ?( ~9 \' s0 I+ w) q, ` STA $2006    ;设置PPU数字写入高位地址
+ ?0 {; M# U* a2 J- I LDA #PPU_ADDR_L. e0 M- A8 s# g( {  z% P% s
CLC1 \% b- J" t- Q
ADC #NUMBER_A$ L* |+ e9 i2 @  o9 w9 k5 E% r
STA $2006    ;设置PPU字符写入低位地址6 S4 M! ~5 U) o* W4 T2 x
LDA STAGE_TEMP
6 [1 k: q% A& z# p' ` TAX: a$ N' F& q2 r
LDA STAGE_D1,X    ;写入数字- {% J1 M  z/ V* p4 P6 P
STA $2007% I: j$ m9 q* i8 K& W
LDA #PPU_ADDR_H
. M! N% b3 N  o0 B5 R+ q8 R  Y STA $2006    ;设置PPU数字写入高位地址8 @1 g' [( b/ |( P% r' r9 [
LDA #PPU_ADDR_L: E. {8 E7 y% q% M4 T( t9 A
CLC
% S5 S/ g# M# w6 [- \ ADC #NUMBER_B
" w3 R7 i  ?* j7 I, k STA $2006    ;设置PPU字符写入低位地址
9 C; u) u1 |& A2 S3 J2 K9 ] LDA STAGE_TEMP
1 {* ?- c0 D0 Z# j: a2 b5 V TAX: @- D/ C/ k- w
LDA STAGE_D2,X    ;写入数字
; V' i' V2 t( h4 M/ ^0 d" d. J; S STA $2007: S+ O" f* h8 S, }5 o0 @+ V' n2 P
STAHE_WRITE:
- o' `* {8 R. W+ ? LDA STAGE_TEMP
+ m0 n! @$ p  p STA $2D   ;初始关卡写入
! u+ p3 }1 C# h1 o: z2 ePPU_RTS:    ;恢复数据
. n  H' j5 K. t; {4 j' s- T, k6 T PLA
" p$ w/ x* ~4 q' G/ k8 F1 Z: e TAY
& {( n5 M  w' M PLA1 t4 d! H( G$ z' `$ B
TAX8 f; h0 e2 o2 @0 a, k+ }# H! G0 Y
PLA* U+ U4 H3 L' ~- t
RTS
9 n( W# d, i  O3 s* L' D . o% `+ s: n& q( h/ _3 v
STAGE_DATA:    ;关卡文字S,T,A,G,E,X,-,X字模数据# n; H' w& r( O3 a
.BYTE CHAR_S,CHAR_T,CHAR_A,CHAR_G,CHAR_E,CHAR_SPA,CHAR_SPA,CHAR_LIN,CHAR_SPA,CHAR_SPA,PPU_END$ v" z% v* @& u$ }1 f- H9 Z
8 e9 k7 Z5 P& I8 _5 q! t
STAGE_D1:   ;关卡数字$ I' f! D: R# d' S0 w3 E9 {8 \
.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_86 r+ A4 F: C: T. v, e
5 T" p" J! j, U& ]  t4 d
STAGE_D2:   ;场景数字! ^& o( L1 ]$ F( R9 B" O
.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% h5 `! N$ ~/ n: u
' a% L1 V& i% p1 m  o* T

8 Q( `. l, }5 i+ Z# qMUSIC:    ;按键音效
8 D- ]: g  C% i+ I LDA #$3B    ;音乐号5 X: v$ m" u2 f8 x1 z( J
JSR $919E    ;系统音乐调用
" w. v4 U' l1 S3 x/ E' D( M 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 个 柠檬. 幸运榜 / 衰神榜

签到天数: 2714 天

[LV.Master]伴坛终老

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

本版积分规则

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

GMT+8, 2026-1-13 06:09 , Processed in 1.102539 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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