签到天数: 2133 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
$ ^" f" S. x1 Y2 l) K _& F& \* q5 z
1 Z# c) J% h O: X6 m修改内容:
1 L: p& _0 H l8 q. S5 `1 d9 u1.P ROM由128KB扩容到256KB
7 J: w. w* ?; x. V5 f9 l# r) ]2.按START+B武器数量为99
; H4 Q8 D2 Q5 @3.按START+A补血. n# v- ^% ` C8 H9 j: D
4 J7 p8 A8 ~3 x; B9 q这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来$ s8 P1 `5 h+ }1 R
9 ^: ^0 q! g, q. Y: e: U) ]1 G从原单位滚蛋后就有时间来弄一下
5 z) V0 C8 u% i0 o5 i. j/ Z, T! o0 |) Q
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚7 x$ ~, Q! Q8 q' x
, |" _) ] L# z9 N0 x/ F/ J8 S
关于如何切BANK:请看相关mapper资料吧1 O) r% a+ H- e3 j/ K9 i4 L& ^* o+ s
, g$ V5 s$ O$ l, i
说说我双截龙3 MPPPER 04如何切BANK:- " w2 k3 d3 E8 h7 J) S
- $xxxx
4 d! t7 Q! d; H1 _1 _2 X - LDA #$07
1 L. f ~! w6 x. u0 ^ - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF" g; l* }5 B0 ^
- LDA #$0E( {3 t- m9 y5 z
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF# p& t* U! U" T+ O3 u9 o" S0 a6 `0 k
- JMP $A000 ;跳转到$A000执行
) W D: q9 @3 ~) v& Z
4 K# t; m7 T& C) a0 f0 S- $A000:, I4 E7 d# C3 K( ?' k9 K
- .: y2 k$ c8 A0 X6 l7 m' ~
- .
& @; e& I& L; N7 e - .) D+ f, g* O" ?7 J; P2 z) c' N
- .
7 Z& f8 j$ S( p3 Z5 y - JMP $xxxx ;执行完自写的程式后跳回去
! M, M# H) K. P4 G5 T - & n# I+ ^+ z+ z/ e) x$ Y
- $xxxx:0 b, R/ D# {8 g
- LDA #$07
5 ^4 `, a [: }$ [! Q1 s; d - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
- s! J; ^1 t; `% m A - LDA #$0D
& G9 z" ^& W7 g, {& e - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
; V1 o6 _. D6 {8 h1 l5 A* H$ Q2 T - ! p2 ]1 d8 Q8 W( o! T
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
% z4 `; u: q% y4 {, x4 U
5 O5 J, j0 T: c+ }+ w
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
8 i# w9 `& z2 d/ j# I6 ?& Z& F, e
: e. \$ _9 Q- k9 Q L2 Q附:ROM 16KB BANK编号: Q' W* g! o6 b8 a, | H& h
9 Y6 p9 w: e1 v7 x, I0 W( F2 P
ROMf地址 BANK编号
3 i, @# c$ }. \0 V# Y I00010-0200F 0
# U* @- {, c2 u$ y- c# u02010-0400F 1
( \# Q/ J/ s" r/ [; f04010-0600F 20 p5 B! b+ ~/ k- G5 f
06010-0800F 3
# G9 E; H6 C& w3 K* [9 H8 C08010-0A00F 44 ]' s* x6 ]7 q! I
0A010-0C00F 58 w2 G$ h! F; A6 h# p' F
0C010-0E00F 6
9 _- W$ V6 Z4 r# r0E010-1000F 72 y+ T6 O1 i0 H, j; }+ M; e* _
10010-1200F 8; {8 w# M+ o4 F
12010-1400F 9
+ ^% t: M4 v) D3 j14010-1600F A
2 I4 F6 k% }: S& H2 B, C& }16010-1800F B
/ |9 \# G% M0 [, i4 y8 Y' i' s8 y0 C18010-1A00F C' F" U* I% M! x: a, C
1A010-1C00F D
9 Z4 ]: V4 h, D( ~1C010-1E00F E
9 `/ M$ M; x; J1 w' L4 v1E010-2000F F
4 f# R: g, w2 j# F, r3 M8 }& @& Q.7 i$ a) ?' T) f4 ]: o# F6 M
.
$ Z# M/ p7 k# H) N" a.6 f, P$ W q C) f( j+ y
7 Y b; B, o/ k; f {5 o3 S/ ]解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?0 k6 D. d% I% I& Z+ G
5 j$ f& Q* F9 V" w; l# @因为扩到144KB的话有的模拟器是不认,无法运行
6 z1 V5 \ j) F! p" M5 v, ~
; o. P/ E( p' k' B为了全FC模拟器能兼容,所以只好扩容到256KB& O) e6 n! j/ g6 d o4 J
) j+ w& b9 \6 a2 S& ~* y补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
2 [3 N1 V- F1 l3 e4 H3 z! |: c5 |- w) _5 p" M+ N. M8 [
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|