签到天数: 2211 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
& T6 Q, T, {( }- R5 H
2 f; E4 H* a. g. D* i: \/ H修改内容:
. D& o' w% Z" Z6 Y e9 {9 b" g% Y1.P ROM由128KB扩容到256KB8 g, `' b& N6 N. M3 V5 D/ p
2.按START+B武器数量为996 A( G/ F& B7 I% s, F0 w. m% T8 w$ V
3.按START+A补血$ N" u3 B. x, [! S" R9 \
( i9 Q- l4 |3 x6 h/ Y
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
" r, y; D$ r4 k9 w+ b$ }7 S; [8 E! ^1 [: S! `# Z
从原单位滚蛋后就有时间来弄一下6 g* o, l" R; E
* B0 y( h8 \2 y( ^
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
- R# q7 J5 _4 l9 i2 K
* s: [: c, q+ D3 K |# p* P! G关于如何切BANK:请看相关mapper资料吧. J- R# m8 Y( H! ^' j6 R
) F1 d9 \, f& d! r4 u0 C* @
说说我双截龙3 MPPPER 04如何切BANK:
5 h0 e5 D! G0 R5 s' J3 g" M- $xxxx
: O) l. t' J; m7 N7 J+ G( J% a( k - LDA #$07& a# D; ^/ @+ m3 f6 N8 m
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
; i! I$ a0 w$ v2 d$ R - LDA #$0E v% ^" f8 {4 u/ W2 d. }% V
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
; J; ^* b2 J! x [% h% u& M - JMP $A000 ;跳转到$A000执行1 ~5 T; ?; o. O6 }" ~! z( R
- + O1 _4 L: @( `9 t( G. x
- $A000:3 R( `- @" D* [# L
- .. U, F# i6 D; B, D$ f& B
- .8 F7 |+ f8 B e1 {) K- t
- .
! c) @1 M+ x$ Z - .
% Q0 o& P( l6 Z$ W# C3 Z+ ^0 Q - JMP $xxxx ;执行完自写的程式后跳回去% r& o/ S3 B, d- x
- ) X, ]* t1 m- _$ S* f4 Z7 k; m
- $xxxx:
% \- K: r9 ^: z+ V Y7 u- U - LDA #$07! A- g, `, x- h; ^1 k# x
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF2 c% K& J$ d. b* I4 Q
- LDA #$0D2 H, v c& ^8 q/ H5 l ~1 z
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF) z9 J: {- P3 W& \ Q
& Z' _; n9 z N: G! H- J" M' y- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议* a6 ?1 T8 w1 A+ w9 n+ \& J7 a
- ' G" o5 o I+ H) i/ `
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)' z. D5 p( {" J! n E$ l
1 ~" p2 b$ K: D1 S
附:ROM 16KB BANK编号
; O, R! s( R& }+ ^; ^9 r
1 k3 u3 a8 X/ Q4 T' F& J- qROMf地址 BANK编号. z- B; r* Y* B
00010-0200F 0
2 ^' d: l" b( W0 e* C02010-0400F 1% ^+ a! U9 P9 k5 E) i( O& T
04010-0600F 2
+ H7 C0 ?& Z' z! I Y+ {06010-0800F 3' K" C# |* ]# B
08010-0A00F 49 ]# {, ?1 Y" Q# F
0A010-0C00F 59 q0 G. s* g6 `4 v+ d4 P" P% ]
0C010-0E00F 6) x' j* d* H6 i0 ^
0E010-1000F 7+ @1 F% T G5 C0 Y2 i1 D: [3 m
10010-1200F 8. L) q3 V% H; ~% T. z: a: t
12010-1400F 9
4 K6 D' }1 E8 d1 I. \; ?( B, X14010-1600F A5 Q5 K3 v4 H4 s' s. A' s. d# R
16010-1800F B, _: U2 k; _# B. _; y- |
18010-1A00F C
" B4 ]5 T- P% H! t. f5 B+ x1A010-1C00F D
( G/ t) Z+ E2 ?- Q6 N$ d: T1C010-1E00F E
: N, m; N9 r& W# ]8 ~1E010-2000F F( o! {& H$ L# d9 ]9 n# L& o
.
1 S' j0 ?9 B2 ~." u: j; ~9 W* N8 v" J
.
( t$ x1 _, J6 } q C8 P- b0 m5 Q- }* j; U& t: K" M
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?5 ?0 h% l+ D2 Z: E) y" X
8 o, G% s, \& V( T+ W
因为扩到144KB的话有的模拟器是不认,无法运行
! J0 }$ B& T7 ]% g1 L" p; `- s' b5 B6 @7 }( `" ?- U
为了全FC模拟器能兼容,所以只好扩容到256KB$ A- N4 k. G' ~' k- K0 z% x+ w7 X
4 r+ t6 Q1 y7 g, `! {
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机 f) ?6 f& U. \. ?+ I
% |/ k4 ]5 n* _; }
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|