签到天数: 1981 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
, B) b1 C9 M, ~* _6 J4 n. x( H; C! _. c. n
修改内容: h* s% N+ s# E1 k" b0 {) c
1.P ROM由128KB扩容到256KB' e4 T- I. C7 Y( i
2.按START+B武器数量为99- H+ l* I; W3 W7 f
3.按START+A补血. x! x5 J- i6 n% J" ^) w
: i8 n; i% ? @; t1 e5 T; D X
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来4 l# \9 @8 b! d$ o: V
) l( U; Q6 @/ A( {
从原单位滚蛋后就有时间来弄一下2 ` o: g$ X+ m: ~, p
4 |0 V3 D I1 k( d6 U2 A3 Q关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚" f- ?: k9 ?# N$ x, ?2 a8 G+ V- R
) L" v% u" i( `' t+ J+ o, }
关于如何切BANK:请看相关mapper资料吧
! S: O7 b( ~- c$ a. e) i/ l) o
& P" F. {/ ]4 H4 ~说说我双截龙3 MPPPER 04如何切BANK:
9 x# N9 N: z* \& z4 I: h$ I% ^2 j- Q- $xxxx
4 g- q* h' @; i( h$ C4 X. |1 M - LDA #$07) m& [) K0 O( O' m3 v
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
& w% j i1 @. S - LDA #$0E
9 B' |9 h' g) v8 O7 a9 M: L& \ - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF. X1 U1 H) H% p/ z/ H: b
- JMP $A000 ;跳转到$A000执行
6 T5 Y- t6 G% p
5 S4 B% W0 o# S3 A$ b: u+ j- $A000:
2 ]% h5 R5 p6 b, b, N - .
, O: n D8 ?; c" j/ c - .
$ G, h8 d: R+ R/ t$ P- H - .( D0 w. a: y, @/ ~' ]4 V" ^& d
- .; u9 h9 _+ w/ r, \+ f l( T
- JMP $xxxx ;执行完自写的程式后跳回去* g0 w5 O( F6 l! D G. c$ c* ^
2 z( e; e( S. m9 k4 M( Y3 K6 Z- $xxxx:& N" m4 @7 I. V. B3 |* |
- LDA #$07; H5 Q* t7 O/ z
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
7 x) e" s' [" K2 Z - LDA #$0D8 D. x. h' N* [1 ]
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF5 S& f0 g- q1 ^( Y; k+ ~" E
- * o% v, n; h3 N7 w
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议& e1 [& V# Q; N* n( ? {
g' R# s. k' D
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)0 y9 j& X) L% [( q1 o( t3 }
, A0 m- o1 y5 X, t: r& Z* m6 C+ s
附:ROM 16KB BANK编号
# I2 K7 `7 U2 J! \: R6 i% { E( y
# Q" C$ f8 f! r' x+ ~: t; qROMf地址 BANK编号1 @, p) B7 {$ r; Q% g
00010-0200F 0( {# g3 W1 z& Z c2 c
02010-0400F 1
4 n5 `8 {/ _0 ]3 X, {2 Q; w04010-0600F 2
: ~( P/ \5 w# i& d2 J. l/ o& v06010-0800F 3: k: L1 d$ J& a: x0 M7 o8 @! X
08010-0A00F 4
5 A- U0 a- e; @% v0A010-0C00F 58 G3 @& }% [0 \* I; h9 z% W! v" v
0C010-0E00F 6
% T1 _, G6 z1 E0E010-1000F 7
# {: { O+ D W: D$ A% R10010-1200F 88 ]6 {# ^+ ~; M) _7 ?
12010-1400F 9
1 F! U4 c& `* d5 C! l4 N14010-1600F A
9 @4 K% M% B( t2 l u- C16010-1800F B$ q1 o6 g( u* K3 x% i7 D, L1 Q
18010-1A00F C
, p8 N3 W& P* l) H0 n& k1A010-1C00F D
J. F* s g. j/ D1C010-1E00F E
1 @, S |; f) n7 h4 p3 }" n$ I1E010-2000F F- ]# `# i4 R& }0 u0 T [0 N* A
.) r; {) G0 Z ^- o9 K
.8 O1 _: ]7 i% D7 q
.5 b% d. V- S5 o. W: h- [. M- m, I* F
5 X" H3 q1 I, D* ~! T, P解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
' ]6 f6 M0 w4 e
1 Q7 O: R! q; j( f7 d因为扩到144KB的话有的模拟器是不认,无法运行/ A9 x9 F+ e. Y+ k: P
+ l4 x. l v8 f% D6 l
为了全FC模拟器能兼容,所以只好扩容到256KB
9 }, p+ ]" d/ U v" k1 r R& V7 p
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机$ v$ Y2 E, ?5 v' n* L; R
5 r" N6 M, k' H, U
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|