升级
  100%
签到天数: 1899 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
# {) O0 H2 ^9 h7 o* E- B9 t4 D' y- C4 v+ O# P0 t
修改内容:
# X# F3 N' q: B% }+ R4 H1.P ROM由128KB扩容到256KB
& \& Q, C$ r) A2.按START+B武器数量为99
. o$ J# p( ^% d8 n3.按START+A补血
, ]# l( e- d6 @' n) u% d$ f5 G% D* g& h
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来+ r7 |# q g; E% x( W# Z$ e
" d8 ?9 B! Y% n8 j4 f
从原单位滚蛋后就有时间来弄一下3 Y! z% A# l2 ] J) W: W+ @
1 @6 I& X# a9 F' l关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚1 `9 n4 }( h) a" U! y! M
5 P0 s+ g5 K5 m" ?: d! s" Z
关于如何切BANK:请看相关mapper资料吧* ~* W! ?. L2 u1 g9 z. v
8 y1 P5 k- T' r4 d
说说我双截龙3 MPPPER 04如何切BANK:- 5 M' S* q' b. o( F+ }; j' l
- $xxxx
* C q% G7 O7 e* n3 l4 E5 ^- x: \ - LDA #$07
- N3 F4 J( J& U C- w V! h8 k - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF: U2 i' r" E1 v: `
- LDA #$0E3 i7 k, |# S0 _/ E0 j7 P0 y5 i+ H
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF8 N' H3 l/ V! c: w5 U& E
- JMP $A000 ;跳转到$A000执行9 b! j' ]0 ~- G s! p5 |
4 N6 t1 N4 {) |! m- $A000:
: H+ {( ]& R7 [6 j$ F - .8 p4 w$ S$ ]7 a k6 _
- .* T' s& b8 d- p* E' D; B
- .; k, q. P# Q9 g8 d: r( D1 ]/ V& G
- .
# _/ E) p1 u* n2 n# O - JMP $xxxx ;执行完自写的程式后跳回去
' g8 `( h- E I; W- c
( A7 \/ `4 n' R' N: R( r( q- $xxxx:5 b) h9 M; E7 N$ v% c
- LDA #$076 T' p) E- a2 o$ g; a& U; }2 b J
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF5 z, t0 h/ R' @& V4 v
- LDA #$0D3 V. B) J8 x! t, @
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF+ A$ t1 c Q$ f6 r0 S
- 3 ] A9 k- N: a) D% q7 R" ^9 ]
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议" m1 Y, W4 q* f1 } w9 p9 v
5 R# b- H4 D( [. e; X1 u$ T
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)+ e8 B; ?4 \ @ N2 _& _
0 }& w o! Z- C, ^附:ROM 16KB BANK编号
% P+ t7 ^* l1 \4 c3 f1 r; @7 }1 ^
ROMf地址 BANK编号% f2 r* t' G, p' {
00010-0200F 0
0 U8 E; {& c% V; O' U- C: ~02010-0400F 1
! A$ g5 a7 p" u: m2 ~+ h5 f04010-0600F 20 b6 f2 L& o" p% {
06010-0800F 3
3 ^ g3 e+ K+ ]' e) q- p08010-0A00F 42 h( Z z& j. ?7 w& u
0A010-0C00F 5. u9 R0 i; s" q; y l5 a
0C010-0E00F 6
) I9 W: U8 H# k6 x0E010-1000F 71 a+ z4 m- Q/ c8 g; X! i1 ?6 Y/ B) A7 {
10010-1200F 88 K, y7 B9 }+ o6 e: g# r8 ^
12010-1400F 92 w6 Q& I& L. E2 J, _: c
14010-1600F A
0 m7 N6 x$ s, v$ W% _2 W8 X) C! S16010-1800F B) }4 I7 i3 j& ^5 @6 n
18010-1A00F C
+ N: {, {& n% e, B0 U1A010-1C00F D
6 ]! u; I4 _4 V6 w1C010-1E00F E
$ u, C7 W) j( l9 ?7 E- c2 P+ ^0 Z1E010-2000F F7 {) W' a2 Z+ b; |
." |0 O* R5 J6 z0 h# I
.
7 |" Q# F, ` K.- s8 q) z/ n, ~& Z6 b
. z' k& c8 E) M2 L
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?. D: t. d6 Y' y; x8 |% |
9 ]: n: S o( X2 r6 P) A
因为扩到144KB的话有的模拟器是不认,无法运行
# F# Q, E6 r( j! i4 D- @8 S% S% U9 P u: X( v0 H
为了全FC模拟器能兼容,所以只好扩容到256KB! {( A" p1 X1 k6 C4 Z
3 H: B; n2 h0 _' {
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
0 |5 z; p1 O0 _' q; D( T! ~) A5 O9 m. V8 X6 I0 X
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|