签到天数: 2071 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
/ c* `$ a! f$ N$ Y( t" x: P5 Z5 I$ n8 ]3 w% p9 L0 x0 P9 K
修改内容: i2 N( [5 H6 }% p* s! k. h
1.P ROM由128KB扩容到256KB6 ?( Q z1 ^- F5 l: F
2.按START+B武器数量为99$ [+ O6 b0 M: K9 G- f
3.按START+A补血
1 d. y6 z( x* A/ s3 M, {2 ?+ G1 S6 z: P- z8 x$ h, d
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
4 L9 L4 C. y1 E
2 p, u* ?0 W2 h, X从原单位滚蛋后就有时间来弄一下
% j: ?5 [/ ~7 F$ l5 G4 w9 t7 D4 o$ |! X; ?" c5 J$ W
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
) _% l/ K7 ^* U5 G' c+ a D- H" j0 _1 l+ A/ Q+ b! a
关于如何切BANK:请看相关mapper资料吧
# C3 m6 o, n- l( N/ m- W3 i o
' s& B, n% h* d# R2 Z. _# d% w6 Y, {说说我双截龙3 MPPPER 04如何切BANK:
/ [. K) q+ ], E& |- $xxxx
/ E- O& J9 p3 i& N* `6 l5 E7 ^ - LDA #$07
5 }. E& Q7 C9 r& ~/ m/ \$ K - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF8 a- n% ~ J: C# ^$ q2 q& o. I+ p
- LDA #$0E
9 P& a! ]0 g; L: U9 I4 v2 x - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF! \% a- }. {. x# f) h [
- JMP $A000 ;跳转到$A000执行: W8 T7 y$ c3 e9 c. C- m; e
- 1 ?" _! Q, R7 `% k* e8 b) l
- $A000:
* b1 x2 X9 T) t" J5 J/ k - ., C" s) R1 z5 d& x: K
- . A# W1 m% P9 E: `' A2 v2 L
- .
7 h+ F5 ]5 W' k m; K% F2 @ - .. S0 T m" I7 c, S7 A
- JMP $xxxx ;执行完自写的程式后跳回去
$ y; \; i9 d# V+ _
4 @7 U z, z `" O: J7 u; p+ t) ?- $xxxx:
5 P% G9 `% }1 a. Z! W$ e; H$ O - LDA #$07: l- _- c6 z: T3 y8 i& J: d O5 t
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF: H) t# {7 t9 F* ~& h' z% C) H, Z
- LDA #$0D
3 k. H+ h/ m! \) Y! u - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
" n- v" m X `7 m- P# u( ^- M0 i
* F' V& I" t% y" I6 j( J- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议+ V1 N/ I) d- x6 A8 F \
3 T+ } N' Y' y: N1 J
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
: n$ w0 }" C$ z+ {
, W* y1 \- X# q附:ROM 16KB BANK编号
$ s. m8 W* l- e3 q& J1 B# m
/ E# D7 B% D' t' R. m8 w3 |3 ^# }# eROMf地址 BANK编号: g0 x3 s3 n; m# a% K3 Q& v# P) J! u
00010-0200F 0, V& I9 d" E+ y0 O m6 ?
02010-0400F 1
& a$ A! D! r$ A! e; p04010-0600F 2; h9 ]+ b8 @8 T
06010-0800F 30 D, c3 B n: |+ {# g. O" s3 b
08010-0A00F 4 F' e5 N, T( ]' S6 r8 B2 |; s" m
0A010-0C00F 5
, y! |/ t' @& C, G: B( C6 b* \. Q0C010-0E00F 6
" {' d0 f/ j- O& k2 r0 T0E010-1000F 7
d$ k. d: y" q" c+ _10010-1200F 8$ ^+ C- _- X8 P7 c, n
12010-1400F 9( A. O( W0 H7 u+ L) ?( z( M
14010-1600F A3 c4 ~# }" E! N9 b, u' {% @
16010-1800F B7 V$ ?! m m5 A/ h+ v$ `& i4 f
18010-1A00F C0 g% _% h: P2 t
1A010-1C00F D
$ d! p) z0 S" o% J' J# S2 m1C010-1E00F E
( C ~4 q) F+ Z+ {6 W( q. f1E010-2000F F
' L& j5 x# W2 Z& o, f.4 [7 U! P& S+ X
.
( w8 W* Z+ u7 I/ Z4 @.3 R. h; `& i2 n
& c4 |" A. b- M3 P4 L解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
4 n( y, P; t5 {. k0 N h4 A/ W! D; a
因为扩到144KB的话有的模拟器是不认,无法运行* r% F, F0 e1 e* Y3 V
8 k. E" M6 j9 d. }' i5 [
为了全FC模拟器能兼容,所以只好扩容到256KB6 S% C# X2 S! Q4 D8 w
9 w/ c' |! N& j% b& e3 L
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
7 x& P0 z w, _* ]- R$ J
) D' c' y: o9 P- O. l |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|