签到天数: 1995 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。( \ J' s4 p: {$ ]
* ^- ]& h% o9 a. g1 E修改内容:6 R" M+ Z$ _. s
1.P ROM由128KB扩容到256KB
0 p8 [, J7 g/ y, n) W0 j, _2.按START+B武器数量为99' S/ `2 [% e- z6 y% ~, L2 ^- X, k
3.按START+A补血
5 d2 G0 Z. j) Y# X! z
8 d: n+ X" y7 N7 I! f7 v% [这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
9 }6 g) K( |; ^7 {+ c2 x5 L! }' z) X* A+ `
从原单位滚蛋后就有时间来弄一下
^+ a& O* } i G1 b! v) ]4 {& ?1 h# Y4 m' l+ L' t
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
$ `& C* Y3 \- Y+ v# r7 v0 y
% l9 A U* s3 R) l关于如何切BANK:请看相关mapper资料吧
5 E9 o/ \! u/ n- s6 W
' a, Y) x0 c& c+ {( t6 u8 m4 B说说我双截龙3 MPPPER 04如何切BANK:- 1 | y& @: n+ ~6 |% Z, }% T
- $xxxx1 ]8 ~8 {2 H& w9 L& u
- LDA #$07
3 O" z6 ^5 k* f, i+ V - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF9 X2 U" U6 r1 R; f
- LDA #$0E
( Q* _# X: e& ]# V8 [. @: J/ _% P - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
7 p# i4 b/ c9 {0 n - JMP $A000 ;跳转到$A000执行( }) y, B% N9 g
7 l1 @, E7 X- V- $A000:
& L% a! _+ ?6 n8 z" @$ O - .: f2 O: \3 q6 s0 B
- .
/ X0 C! _8 o4 s, C: j - .. C7 Y4 j/ b5 b( n9 f5 x# _ K, y9 H
- .
0 Q. m5 x& a D0 N2 u - JMP $xxxx ;执行完自写的程式后跳回去. ?. ]3 E( ?) v) d; C: a. d
) k* v7 ]" t p, `- ]: Z- $xxxx:
: c" Y" t7 B- Z P4 p - LDA #$07
7 R3 W- K7 b2 N4 F; I' | - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
3 ?$ [8 `; T' S9 r% H" k - LDA #$0D8 l' ]: Z. V8 E
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF; B- J' U: { l* O
- + B/ k1 N6 {: C* Z6 D
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议7 `! P+ @4 {( k. {! z9 l
- 6 u& o k5 b& y# u6 i# a* x% n) S
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
/ E! g" D6 V/ V0 F- z Y$ S8 a2 V y/ c" r$ }$ l2 d9 K
附:ROM 16KB BANK编号- C" Q: S: H9 s8 J& W1 D, ?4 p& O! @
3 f% [0 ^0 [/ R, D, YROMf地址 BANK编号
. X# V; b* b5 n3 j00010-0200F 0
, W9 _5 C5 ]) j- |02010-0400F 1# i; `, T8 s: @5 Z; k M% ^4 L
04010-0600F 2
4 d8 l6 C: H3 m5 ~& F9 u; g* _06010-0800F 3# M( i" s) l% e3 E! T9 _8 W
08010-0A00F 4! ] Z3 t7 q0 m6 P0 l
0A010-0C00F 53 p# ~! y; {# e. P( U) n$ P
0C010-0E00F 6
; h, ] k# F6 y0E010-1000F 7
) L$ G9 f3 T& q. Q7 o10010-1200F 8
% A$ A/ C/ s8 [, f- c12010-1400F 9. l% V1 D0 F) J2 r) z
14010-1600F A" E8 E! B+ c+ `! V. w/ b3 d6 [
16010-1800F B1 @( Y+ m8 b" p3 R7 v2 D
18010-1A00F C/ x6 T: O4 |& \' l
1A010-1C00F D; M: l5 Y7 B# f7 o
1C010-1E00F E- d# p+ Q8 Q$ }: `# m
1E010-2000F F- {3 q2 `) K3 }! U3 V
.
* I& @$ t1 a" E6 D.
: _' s2 _ {# Y7 [5 D% ?7 w8 @.
) V3 U3 w( ^( M$ L4 O! b& D/ }; ?0 n: J+ b- `1 B9 o
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
5 s5 p: \1 W" ^, A0 a
; ^8 a6 |/ }( t' T2 {因为扩到144KB的话有的模拟器是不认,无法运行
' H/ Y+ }$ K; t, ~" G) _ w6 o' x5 ^0 l% T: ?' P7 ^
为了全FC模拟器能兼容,所以只好扩容到256KB
. m8 ?7 @. H( D( L0 w. Q- r8 [4 @) U+ Z/ R# ?, o+ {1 X
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机% z3 |, ?( J6 D
- _0 @5 E4 e( \/ {6 h
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|