签到天数: 2029 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。; a$ D8 k% i+ A2 E
6 q3 [( I( s) i, v8 Q: r
修改内容:
6 i& a& o8 U, e# r3 X1.P ROM由128KB扩容到256KB
5 m% Z% I: ~% z2.按START+B武器数量为99$ l" y6 l6 L4 ^8 m6 U- O! a
3.按START+A补血! I5 i& K' b# L5 C$ ?
8 B8 ]: R. P$ W- [) h这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
! p( p. f) f* N) x$ l9 X! O$ p9 P/ y/ D+ Y3 [
从原单位滚蛋后就有时间来弄一下
# H1 i2 C$ N2 B0 n* \# r3 j1 Y- r" q0 @4 Z; c" h4 ^5 D
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚2 C+ ?2 Q+ J i
0 A {, P9 j) i& [4 ?$ d4 J
关于如何切BANK:请看相关mapper资料吧
1 M6 O0 v4 ~( `# W( |
8 C& T8 r8 B- n9 o# ?说说我双截龙3 MPPPER 04如何切BANK:
, p' K0 q: |& d" A4 p. l, P6 ^- $xxxx
+ X6 W3 u. u1 H2 Y7 i8 R( z; W - LDA #$07
$ J: y" x0 B9 [" U' r - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF, _2 h3 M; a7 O8 B9 z" ^
- LDA #$0E; K$ K7 `2 _0 s6 F* k( g
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF# Z- E6 X4 M) c5 K
- JMP $A000 ;跳转到$A000执行& r- b' t: _% r7 N5 V! y7 N
- + ?7 G/ q. B& N) O8 v
- $A000:
. x/ F/ k7 I H; D- M- F a - ./ S/ n5 [" [- m
- .5 H" y8 Y; i6 `+ `% Z) v0 O9 U
- .2 k; g) K' v9 z. Y: A o3 ^$ w
- . [' s; Y7 x; T& r3 G& u! H
- JMP $xxxx ;执行完自写的程式后跳回去0 P0 B+ x% n# V5 B# P, U5 R
- 9 H1 Q$ V n" M, N' F% ?
- $xxxx:
. r6 j. W1 A, [% f) M& Z - LDA #$07
6 _9 U( W% }) m0 R9 i! n7 y - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
$ M( J% a; f6 r& f) c - LDA #$0D7 u- t5 D: Z& O9 j1 B
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF3 o0 U# c! m' l( K0 W! [3 G
3 z: f+ M j) ^- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
6 b5 r7 g' i$ [3 G/ F x - ' c8 i, _! g) H/ B6 H2 e
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
/ y' f% O _$ v' H% p! o* l) x$ U" \: R$ v2 H& B
附:ROM 16KB BANK编号
4 D" F6 |3 |; W: x
( k' T( M- p3 L# B1 k" i% e( uROMf地址 BANK编号, P. L; I& Q9 f: p: I) I7 m
00010-0200F 0
* Q2 \ k. J+ `! k02010-0400F 17 I- Z' D7 ?0 x! L
04010-0600F 2
+ D7 H) |4 `& c' t& j06010-0800F 3/ x& {; L1 H1 [* {2 o
08010-0A00F 4
# i6 N) x. o4 k% w, {0 {, E0A010-0C00F 5( D) R2 U" t# H% T8 s0 D
0C010-0E00F 6
) G; @! E7 i4 O0E010-1000F 7: u8 _0 f, E- w v
10010-1200F 8
5 K5 _7 u* Y7 q& d) S& X! m12010-1400F 9! _) @" A X6 h3 A9 x
14010-1600F A
M9 @& D0 w% h4 Z, f, [16010-1800F B
7 P9 V/ y; `% J' ^- ?1 A9 B7 B18010-1A00F C9 B- c& T- G: ^" H% M. v
1A010-1C00F D* U3 {: Y% L/ d) g" q( ~; B
1C010-1E00F E
. b. b' J" l1 S- i1E010-2000F F5 @2 w% Z5 U5 }. ~$ M0 o
./ o6 f2 [0 M& F4 X
.& k4 \7 t* F' O) c
.3 a- V: c2 K3 U: p) M g% t
; f; x( i. I" j/ c$ m8 b解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?$ `8 {2 U" F& w$ U2 K# F2 w; z
6 U( g6 a* r9 j. q4 u4 C9 j因为扩到144KB的话有的模拟器是不认,无法运行
+ [( I* O& z" C+ { b* H: c0 k& y$ @5 X4 W# Z$ ~% `3 D0 G
为了全FC模拟器能兼容,所以只好扩容到256KB
1 r8 ~% w) V0 \5 R
$ M/ Q- N9 C0 W- X9 v. d8 h; Q补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机8 M+ ]; g! o& H. H, e1 |$ C0 Z- I
" [, U' r, ?9 N% f% O |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|