签到天数: 2172 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。" W" e7 W$ s8 C& u; J! ?9 H
+ Q# R, U& Z( p1 J7 R. N j! d修改内容:9 G, v! ` |: x5 [. L
1.P ROM由128KB扩容到256KB1 o0 P- _1 ~, B# h& J( [
2.按START+B武器数量为994 Q' ^. w$ ]: V0 t. V& b
3.按START+A补血' ]0 O1 S/ h; j
; t, Q9 ^' @# U8 a7 q
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来! V1 \% Q9 R3 C: E
% R% X. b8 b! d( _( \
从原单位滚蛋后就有时间来弄一下/ t4 d0 R$ s/ o( f/ ~/ a6 ~; ~
: j4 Z& T/ t! Z; w/ f% s
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚% X: c# i0 T/ \: P, A9 `. }
: s( P" ?! p$ M* x, x E9 m
关于如何切BANK:请看相关mapper资料吧
2 ~: \$ _; q3 |) W1 P' Q
& |! x0 T7 P- I2 l1 K/ Z# z说说我双截龙3 MPPPER 04如何切BANK:- ! c% `8 t4 H5 W# h1 I* Q! z
- $xxxx
( _" U1 Z: |/ c/ Z - LDA #$076 w2 {* w, n' u" I
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF. ~$ T8 |# }2 c7 [
- LDA #$0E
4 |$ Z9 k- `/ s- C* q! t& V, U - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
( N3 z+ [% U# R( L% t! p( p - JMP $A000 ;跳转到$A000执行
1 l) a7 z' J. g- B e! g# X
' _6 r! p3 i" }! e/ Y) i3 k) S4 M- $A000:" c# J2 j) P' @
- .
# J( L! n' m& o* z9 B+ ^ - .3 {1 ?" `3 o* Y" I( @1 [/ i3 }. Y
- .' w) C; C0 [& g" d/ X
- .8 Y0 w& g: t ~- M; u8 ~
- JMP $xxxx ;执行完自写的程式后跳回去
0 j3 x6 k& v6 T7 E6 i, |
/ P+ m5 b4 h, [& P$ g. q; Z- $xxxx:: B1 \. U0 _6 ~
- LDA #$071 w# M; A/ @) ~, R- Z* H) T
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF. D/ x f, C4 o/ v+ ^9 J$ ^6 O
- LDA #$0D- k& R' W% |) h4 `
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF' Q* j& q; q+ U1 o: m
- 5 U, u ^# |2 {, N3 j. d' N4 V$ P
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
) m# z V! n6 y# x3 m l8 D! R0 Z, ] - + f1 f+ C t; k' L+ H; {8 h4 n( E& ?
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式): ~+ W9 N) ]7 Y1 @7 V) |* L1 Y
- }0 P; p+ \7 `2 e- g4 m3 [附:ROM 16KB BANK编号! c6 ~6 B# |5 U
0 F5 {6 E' w% d1 l1 z8 ~) h6 PROMf地址 BANK编号" `) E2 Y3 |6 i/ G! L
00010-0200F 0
/ s& r: V/ L0 P! l5 e9 B$ x02010-0400F 1: P$ n$ V% A0 g) h/ h! f( k
04010-0600F 2
: J# B# d ~9 n1 s* q06010-0800F 3
1 @0 G# d3 t- P/ g8 C! s, F4 d08010-0A00F 4+ `" ~: [, C5 b: d
0A010-0C00F 5
! Y. N, H7 U! c+ d% M7 z9 ]3 l8 w0C010-0E00F 6
( @' N/ h" n* C0E010-1000F 7
" `' V5 g# H8 P, G) R4 ^! R2 S10010-1200F 83 t+ `+ F& V9 P! S+ U
12010-1400F 90 R) `' F4 r9 Z! X" H; X6 G' J/ Y
14010-1600F A8 N5 ^ s! H1 I; g* R. ~" ~! @! |. t& L9 ]
16010-1800F B
9 V* Z; h0 d# R3 a2 G3 I18010-1A00F C. |) s2 ~ ]6 e1 J$ v+ u% x9 a
1A010-1C00F D, K3 @; F+ v% j! t* [8 o
1C010-1E00F E
) \' S" u; M4 h6 ~) B: Q1 T1E010-2000F F
/ `8 ?2 b0 Q0 _7 ~: B }( e* z.5 l7 u, x, F7 {5 U: b
.
% y7 ^5 S- i6 }5 E' P.0 v4 X8 w% S' P
3 U$ q& X! E. n- [9 a' y
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
7 Y+ N( f" E) v4 J a* M
- H( K+ G% i6 p! O因为扩到144KB的话有的模拟器是不认,无法运行
& g7 ^6 q( e& V, ~1 `5 n D3 `& X1 E4 L: @
为了全FC模拟器能兼容,所以只好扩容到256KB. i2 Q& }0 ~' N+ W4 C1 Y
7 e$ F3 h4 s1 p$ H M# L5 c+ H$ A
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
9 x( m; U9 d o
8 D2 _) z# M* o) }* p: R |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|