签到天数: 1772 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
6 o7 V9 V% h K$ c1 Q/ B" }% g
& N6 ?& i) ]8 p& E ]" }修改内容:
% f/ }% t6 H) f6 k$ }3 `1.P ROM由128KB扩容到256KB
0 g2 p; H+ s' v K3 Z: }2.按START+B武器数量为992 n% o ?2 P9 t7 f! E
3.按START+A补血 _+ T. H% ]2 Z1 N- ?
" R. @5 P$ d0 H: y7 F这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来; @( Z& ^# S+ X: i
8 A2 b) P$ d3 Q/ m+ d' `从原单位滚蛋后就有时间来弄一下" E( T. l, A/ Y. o0 W
9 X7 e' q3 y2 B. ], Z% Q
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
% M U! j: W* ^1 v# s+ h* S" r+ U& T- g0 v0 X
关于如何切BANK:请看相关mapper资料吧# z( }. l6 r; o0 k* E- A4 m# ]
$ C( i, v/ x+ }4 W Z9 Y* O- R' o
说说我双截龙3 MPPPER 04如何切BANK:- 9 @3 C+ T6 H$ d' P: \# B
- $xxxx: h% g( I9 q, V+ {$ k8 \
- LDA #$07
* r' L A2 {/ I9 D - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
: H+ z# ]% B. c5 s" Y! l - LDA #$0E/ B' @/ ]8 a6 `) f5 b# |1 `$ D
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF# f# }0 m0 t7 {9 m0 L: Y
- JMP $A000 ;跳转到$A000执行
$ t* [1 v# u: u - ) e7 N2 P& U' p! b6 V$ y+ e8 i) F
- $A000:! R u9 `# y3 B9 K9 k
- ., n" N2 V6 T1 t, h: J# c
- .2 \ z4 U( c' t7 @9 a' c3 Z7 K
- .& ~( U4 g! J! K, r! x5 M5 j
- .
! @, L, j+ O7 z7 _ - JMP $xxxx ;执行完自写的程式后跳回去. i7 m s: U" B1 X$ x4 s" Q2 t+ v5 V& T
- 6 l! p( o; X8 Y0 @
- $xxxx:/ e1 H6 d) f% }& g
- LDA #$075 B+ {! n q0 @- o w7 @
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
4 S: f9 G, m( u( [# _ - LDA #$0D* X6 W; B% V T# b" f# A8 U4 a
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
3 r% Z1 U: N) o' [; Z+ d
2 _5 h4 q; V8 c3 l. e+ v1 ?6 { l) o0 f- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议' _* {% u) _& O/ ^9 v3 p+ r! J( i
- # d9 H9 T0 T, N1 ]/ [
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
, M% ?) a1 G! u0 n# G1 ^; \3 e* F. R# Y
附:ROM 16KB BANK编号
) I( h& F, @6 v: k8 U6 v( U H# j8 h9 K' I) a8 F' l
ROMf地址 BANK编号 W5 O9 [, U7 W: ^/ @" p4 w' f. l
00010-0200F 0
, o6 Y* u! t) T6 W) U, V% V02010-0400F 1: Q1 B/ a' b2 i0 k
04010-0600F 2
8 K! q+ S' ?3 ~' s. N L06010-0800F 3
) R0 t; p/ u# v# G1 c08010-0A00F 4
) R z% e `8 q: w0A010-0C00F 5
+ q6 i; h0 ?! I+ \0C010-0E00F 6
! R! [/ ~" R5 {/ w. j( j2 @* M0E010-1000F 71 K8 L$ S- j X) y
10010-1200F 8
8 e6 m# z+ E. x2 J12010-1400F 9
0 \' B ?1 g8 o3 I# c( }14010-1600F A: T* i7 d* t0 Z; p& b0 {% a' C
16010-1800F B# q1 y3 y- D' u$ w7 ~
18010-1A00F C
5 w! h* M( h3 Z: \3 ]1A010-1C00F D
0 Y; {0 o( {3 I# n) g2 T% P4 c$ I. y1C010-1E00F E! \' [. B' h$ F K6 C
1E010-2000F F. N% ?" p# J m: T- O3 i7 z
.% u' Z: B4 H- w$ g$ ~
.8 S3 m# t: C0 M0 b1 ^
.
: M, k" h( g P# m+ ]9 }! O' e% F& c
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
+ X* h$ ]7 k+ z) E0 \
0 w5 b0 f, T# p& `) v/ M) q1 H因为扩到144KB的话有的模拟器是不认,无法运行
1 b$ s8 G8 C, W3 d, _: a% D! N% }3 ~& H( }' b! b& ?( i- }' q
为了全FC模拟器能兼容,所以只好扩容到256KB4 o0 D* P& Q: I" u3 l9 |; x' `$ g
5 A$ N" w5 X- N& R, z9 ^补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
1 x' B" k. ^2 @8 t
* e0 o6 s7 }: o5 K5 F# f0 ^6 @' s8 F |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|