签到天数: 1836 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
) t+ `+ H2 j y5 \. ^' L& k: r2 F, ~- y( [* S: i% N. G
修改内容:
3 S! Q3 u6 w- x* j- a7 _1.P ROM由128KB扩容到256KB7 ]: g2 y$ z6 \3 O9 S
2.按START+B武器数量为99
3 ?" F8 E: U4 j, ^2 ^: o) V2 Z3.按START+A补血
6 ~# Z% ~) ~* t% Q( ~& f3 t! z ^8 f+ G
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
- V7 G) H: l' Z$ @4 }" n- n* F' E2 |
( R u1 V5 ?* l2 ~从原单位滚蛋后就有时间来弄一下- w& X# W/ @3 b# h. e# i1 S, \4 p
% K% H) T/ Z6 K% B
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
* E/ {" u8 ^% r; T6 x4 x% n9 f6 M7 Z( w! ?0 u5 @) p
关于如何切BANK:请看相关mapper资料吧
5 R/ Z7 ?, Q- j
: P8 a) B! U# J% `1 m说说我双截龙3 MPPPER 04如何切BANK:
8 o% P) \) T3 k8 Q2 M- $xxxx+ n" T9 \6 c3 o/ w7 B
- LDA #$07' j5 F: l8 C% k
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
4 x3 ?* {5 t I7 Z- d' S - LDA #$0E) K( d9 M- ^( m$ o# t2 h* C
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF' J3 y7 D- ]& j6 I2 d
- JMP $A000 ;跳转到$A000执行6 \- T" S1 K6 x2 g2 W$ b: T6 L
7 Q2 }$ y9 ]7 o% j$ C( ]6 ]- $A000:
8 g" v1 C: x9 W+ f3 s - .; K9 G& B! x' R; {$ A( f
- .
8 Z* f4 n: Y$ G - .
* r6 C, g9 `' T- {+ p# U - .
: v5 a! ?8 w7 { - JMP $xxxx ;执行完自写的程式后跳回去
* [- z* g% m! E( }% f$ N' r: d, A
5 S" }5 J: G. B- $xxxx:, m. [: G! F7 @( u# H
- LDA #$07" j" v6 B' c6 L2 G" I I- w
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
$ h3 ~( _0 W& ~2 k - LDA #$0D% G3 K. G3 ?& u& m9 K0 B
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
+ C5 f1 y( {. R' H' t; s9 J3 s9 O
+ p3 T; ^6 N! i7 G8 V- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
5 G$ O, `- R$ O$ B5 ]# C2 d2 I
% }+ ^, K! |% K7 | Q4 m M
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
4 U: b, Y" o7 Q5 w, P# W. A. {, e; N L" D% f& a) H
附:ROM 16KB BANK编号& B* v. M" J: T9 N# c& `9 q
) T* V( J3 @) Q/ ?( x H5 Z
ROMf地址 BANK编号
) L5 J" M! q9 c8 I00010-0200F 0
$ Z) V! d7 z- t0 w02010-0400F 1
6 [1 B, }5 o' Y p5 K04010-0600F 2
4 E6 }. a# Y5 x7 B J9 v06010-0800F 3& `- L9 d% q. }8 e' y
08010-0A00F 4
# i$ V p) D6 k0 t5 p4 p0A010-0C00F 5
) }" X7 x; F* @* l! A- S% F# ?0C010-0E00F 6
. u7 M2 {0 J; W" E6 y- K# X0E010-1000F 7
* \6 ^( R/ W" ?( S( |10010-1200F 8
, d+ J4 X8 p! I2 ^' y, \- f12010-1400F 9( G. u8 A9 n, b
14010-1600F A
3 O) S+ Z" A. L" q" f$ \4 T' X& y16010-1800F B
/ }& h+ g2 C c4 ~* _; {' v0 d18010-1A00F C; ^! V8 V' U- G: m% r' K! k
1A010-1C00F D* E3 R1 P' \% P& L* C
1C010-1E00F E
) S$ x, l7 G% r0 B6 p5 Q7 e1E010-2000F F
+ T5 H% z0 q/ }* \1 w r& H* Q.- v4 z8 h% L& |+ h: A9 O4 `
.: I5 k' y+ {2 Q8 _- x- G& r
.
L4 N, }! r- F O `1 _5 T9 I4 h9 [7 s( o, ]9 Z% x& h8 e
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB? @# P: I* ?' C0 n( P, o
& Q, R2 `- m3 U0 N5 q% `( h( p# O
因为扩到144KB的话有的模拟器是不认,无法运行+ Q( {7 e) a% W2 {9 R9 F1 U3 E
, j6 J3 A* n5 q% P为了全FC模拟器能兼容,所以只好扩容到256KB2 i- [! J# G( C
1 R( I4 W) v; e6 a1 I9 n
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
: _& M" r9 {& s- h T5 d. ?& _. x& [ G; {. D+ \. r- P, A0 T! J8 a
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|