签到天数: 2112 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。: y8 m( b& [" k" u% u* W9 w2 n+ W
% s2 X6 V' k4 K! e5 |7 I: Q1 z修改内容:
9 |% }: x2 D" q1 o2 q5 C! X" L1.P ROM由128KB扩容到256KB
/ G( Z8 b7 [- x$ d2.按START+B武器数量为992 k# {1 J( K4 g' ?9 H
3.按START+A补血* @& e& y9 W Q7 i( t# W, L
% q. @ W2 Q# V
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来. O" x( ?: I/ s4 @
& c" I- I! O6 c! b! V' F% Q0 {从原单位滚蛋后就有时间来弄一下- y' y2 @- F' N9 |5 ]& }
2 y' G) x" G; Z3 Q$ P) {" c. |关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚! y% q+ Q, _; e1 W8 s
. {+ y E4 _& [# m& O; T( u
关于如何切BANK:请看相关mapper资料吧& x3 \1 U8 `! {. [9 U
8 c- x, A) ?$ l! T p- B
说说我双截龙3 MPPPER 04如何切BANK:
- z$ C! F: Z# b# N4 t$ f# ]- $xxxx0 S+ _& L$ H& E
- LDA #$07& u& A5 I; d0 [
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
- f: m3 `- h9 Y6 r - LDA #$0E7 }( C! a/ v2 w( I t' H
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
7 \/ H: b; Z* p ] - JMP $A000 ;跳转到$A000执行4 W, h& K6 r4 u! U) s
9 X' D! P! g; M' M- $A000:
$ L! }6 g/ C0 x" h1 A, L& n3 ?% Q - .# n+ w! {3 t2 `' Q0 f' C' Y5 s2 a% j
- .
0 \$ L, K$ h8 c3 d2 Z - .
6 R7 g+ a1 S! f - .; ]3 u1 U8 F4 ^* S; W
- JMP $xxxx ;执行完自写的程式后跳回去
8 _ s% z, x5 G8 ^' O# ?# x
3 g8 r. T& a: H( M) g- $xxxx:" }. m1 z. d- c& Y# Y3 o0 @
- LDA #$07; |% H3 U/ A. Q2 m, H0 {
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF0 c4 K1 ~& Y: e3 V2 v
- LDA #$0D
6 B. k' o+ X7 H: D, h - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
9 ^8 C! o P/ N9 l" a& N- s# z - 7 g; z) d# y- C; I V3 v& W$ Q! a
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
9 i: Z' c5 i2 T2 ]6 `
2 X1 B8 K; s7 ?9 S- c
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
; f P( J9 m" t, |. b! D; T9 e% ?; @) n
附:ROM 16KB BANK编号
3 m9 ^$ h6 m j% w/ V8 [! }6 d& d! l# _
2 {: ]% _, G. g9 ` X2 D$ H6 d, f7 sROMf地址 BANK编号
, z+ S1 J' T1 c4 R! Q& `00010-0200F 0
! `4 F6 m" f3 T* H02010-0400F 1 m! C! z+ G( ?' H) J1 W
04010-0600F 2: j2 G5 G0 M/ @) C- A
06010-0800F 3
! g6 M( y, E& h6 b. `08010-0A00F 4
S( M7 ^ m$ _3 Q3 d- a& B0A010-0C00F 54 j6 w; a. }5 N: B5 p: s, ]
0C010-0E00F 62 t. |- |" I9 J! B5 g, o. Q
0E010-1000F 7
$ |1 S# K. U0 g' X8 \2 T10010-1200F 8
5 q' v* o X" s L( M4 T" s12010-1400F 9. f' c/ z" B' s0 Q
14010-1600F A
# d# n3 l- x$ ]16010-1800F B3 i/ U! F& S0 y# @# f
18010-1A00F C0 `" P) M& a; l1 K# e
1A010-1C00F D
5 C8 I: P# r1 e1C010-1E00F E5 V" M+ q+ O) U$ E1 g4 F
1E010-2000F F8 m Z/ K6 Z8 l- x% [
." q- R% y0 t. s6 @; k
.
9 l4 w3 w: U* q3 `( E( [.6 ]2 _! S! S3 X0 _8 j8 i( p* l2 l
5 T" ~" T8 d! L0 ^. e$ h. b; l. e
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?$ A2 I( V2 D& h4 A
F6 m9 M4 E6 ]% L1 `5 _" A' V因为扩到144KB的话有的模拟器是不认,无法运行& L! @( J. s8 V+ ^9 Z: E& i0 t, e
8 r. P7 X4 F* B' Z为了全FC模拟器能兼容,所以只好扩容到256KB
( Z3 p6 t' G3 A
1 h; i* m) {/ t3 {+ a7 u补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
: m! D! D( v5 F9 P( K! O; ~: b5 w' X/ u9 j6 {
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|