签到天数: 1907 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。( q- g/ [' E1 o
! G& G1 `6 v* p, A* H修改内容:+ ]5 |$ |% p8 f; u4 P
1.P ROM由128KB扩容到256KB0 v3 }3 t+ x- }8 N1 @
2.按START+B武器数量为994 J( R( d! T( O2 [3 G
3.按START+A补血
2 c7 f2 ^4 ~! z. g% d$ [9 }: r& D1 S8 N
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来8 h; q0 e0 R+ n* x+ i2 y
& q. i! K/ F# p4 U; M& f& v从原单位滚蛋后就有时间来弄一下
% K' ~" k7 @" B+ n v Q6 a' ^" g! z% g- t1 w
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚# ?2 K) b/ n+ A+ A* Y) \# l
" F+ i& @1 G/ u5 v+ F) T关于如何切BANK:请看相关mapper资料吧8 d' D6 O5 F1 R3 D7 H& k
# w/ i+ a9 m4 i: ?& P说说我双截龙3 MPPPER 04如何切BANK:- 2 v4 e h3 u4 z( z* Q r
- $xxxx
8 O' l I2 R; y! c8 o/ \$ S - LDA #$072 b" q+ X: `+ |+ X, e& ^& g' _# w
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
* U% x/ ~0 I6 } - LDA #$0E- Y& s$ W( X! Q! N) M
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF* k- L% e; ^ o
- JMP $A000 ;跳转到$A000执行( h" }$ I3 @" } R
- ; T9 k! g) |; u
- $A000:7 @1 Y$ w8 R! l/ u, e, o* C
- .9 x R- [3 O) N9 P* q4 v/ W- A6 K
- .% F# `6 n( a* i8 S1 L/ t8 q+ r
- .
' Z' \* W2 D& o) M - . }8 e7 m2 a6 `. H y H
- JMP $xxxx ;执行完自写的程式后跳回去
, Z5 P% o9 |; S- q$ ?; y# Y - 8 v# b" u" z" D# `' s- x8 {- s. s
- $xxxx:4 p3 i& \# O2 C, a! A' u
- LDA #$07) R! R( y+ Y* g8 p
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF, y, a( I& V9 t$ Q+ w! C; U% u6 K
- LDA #$0D' J6 C$ ?* {4 b2 |1 }% }
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
7 u( M9 D- h0 X. S
1 `- T6 \. x4 B; A- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
6 |+ R9 @! W/ q& Y - 6 t7 f7 i& `& {* Y( L3 t/ h$ p& O- O
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
; d) M$ z; V" O; h, X1 c: F
( Y( p# h' K; k/ J) {) D9 @+ _7 c附:ROM 16KB BANK编号* v7 S( ?% _( ]8 w
9 m5 `; J) K# w* s) H1 \' D5 YROMf地址 BANK编号
9 z. _! f; ?) y7 j; R+ O) d00010-0200F 04 t& M. H" _' q% t V+ U' z* V
02010-0400F 17 ?, \9 ^, l* g+ U0 W) ^* E0 s
04010-0600F 2
9 {% Q: n+ r5 H$ X8 t$ B06010-0800F 3
+ C8 i) n) j! I: ]( z/ Z7 z08010-0A00F 4
7 |$ d6 M9 l0 F1 [. V6 s0A010-0C00F 5% y! ^( K0 ^& r7 y6 C3 D; p" Y
0C010-0E00F 6
1 C6 }, v: i' { R4 ] w3 l0E010-1000F 74 m0 k5 E2 \ g! J) ]: g; c8 ?/ V
10010-1200F 8
1 B% g: d/ D, u& \3 h12010-1400F 9
) ^. C) Z! r E8 K14010-1600F A5 ]2 A) w( M. I6 G) Y6 w$ f6 a- g
16010-1800F B
3 m, C. H6 b5 G W5 c' C6 b18010-1A00F C
3 o! U1 i3 E( V: ^4 z: N# F$ u1A010-1C00F D0 Y/ C" A4 O! n8 ^: F9 Y
1C010-1E00F E
0 }1 W" [% @! L* b7 A; e1E010-2000F F( _( o, k0 E! \! Q: d, n: T
.
: E: A# ]8 x2 m.5 S8 r- h' d; D$ @
.+ \! w8 ?; b/ g
( d3 D6 M1 f0 h# o. o8 g- b解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
8 z! @8 T# o) i! E, b7 w6 k! X# y
" F7 y- G& j+ z' d. p3 b因为扩到144KB的话有的模拟器是不认,无法运行% ?- Y4 o l' r, n% c0 U
& ~# P2 R1 J3 f为了全FC模拟器能兼容,所以只好扩容到256KB
# g! J, M! W: `* W8 Q7 R+ P2 H( Q0 R% P/ w! K2 W
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
5 q3 O8 d8 a1 [. s. @1 O3 p- z# Y
* j: t7 ?- b" {9 s& A. ?! I: B% n: | |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|