签到天数: 1757 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
! P- M. N U$ i5 Z4 t9 |4 j" i" L
修改内容:. W1 U- S; P$ R" X
1.P ROM由128KB扩容到256KB& I) e& J( R2 z6 L
2.按START+B武器数量为99
) X/ C* @2 o: H3.按START+A补血
7 z) h3 P K3 g
6 u5 f+ h- C# D# T3 W这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
/ e. T/ ^3 g0 Y! `; E
" o8 B; ^$ [/ r ]: s7 c- F6 t从原单位滚蛋后就有时间来弄一下
$ c/ j- U1 S! c: u R2 ~' ~7 P7 M, d6 C V5 f) {$ Y/ {* {
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
! P0 N% G/ a$ D& ^/ E+ c1 D i- N/ [: c
关于如何切BANK:请看相关mapper资料吧
8 L: _$ y) J k7 C; o4 F9 O8 g
- p+ I' ?0 R& V9 _) q2 D说说我双截龙3 MPPPER 04如何切BANK:- , P! S3 c( U: ^3 G
- $xxxx! m5 }5 [! y9 K2 x
- LDA #$07
/ R K! i% z: D. i% X7 i: g6 J - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF) e# r+ S1 S$ }' t. h1 N5 i
- LDA #$0E1 V& L5 }* L; P, n6 Z. w" v
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF3 `( ?) e7 f: |8 v$ f r
- JMP $A000 ;跳转到$A000执行
! A! B% P5 e: O0 i
, R0 |9 S4 P7 A& G8 B- $A000:
% Y" ] {* a3 p - .- ?8 B- n( x b# \! w
- .
/ b0 E" d$ n1 n# D" Z9 a - .
9 R9 W- y8 h0 z1 m6 U$ `* { - .
* y9 X4 _! e- c8 z3 l9 Z* x - JMP $xxxx ;执行完自写的程式后跳回去
1 q g( ~$ J& p/ | - 4 n7 Q+ y4 ^ L5 m) [" w: i
- $xxxx:1 I, v$ K, L9 M' q5 S7 W
- LDA #$07' J; p6 I, \: [ e3 j9 @2 \
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF, n% i; ]# n% e' a: w8 M& U) ~
- LDA #$0D, l. V) q" \5 V; x( u
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
. R: N1 M$ i3 W( y P/ k2 f - # w, k0 |( a: p# P$ J
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议" p$ d7 ~) p4 _! `
- ! ~+ i4 P# t& L6 [8 Y( b
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式). S& ]! p2 B8 r4 z
4 |7 \5 t5 K8 P+ D- q' l
附:ROM 16KB BANK编号" ^7 P8 F2 I" ]4 X
% ^7 U; X% b+ b+ F, w, a
ROMf地址 BANK编号
% M/ C. [* A: `& q, S6 k00010-0200F 0! r. ~% ?3 L! H* C0 J
02010-0400F 1
" ^, g! a3 B2 g7 n* d04010-0600F 2
0 u7 \ a3 L; |! k06010-0800F 3% z' Y; q' h. t4 X* t0 n) O1 j' M8 l
08010-0A00F 4/ V$ q2 e6 A [8 R
0A010-0C00F 5
3 o$ S% L- F& t) b+ f1 w' |0C010-0E00F 6, U4 x6 q! \ q7 _# U2 |1 w/ t
0E010-1000F 7
) v- T! x4 y8 T10010-1200F 8
~4 t X( o3 W: Z. g+ D( l12010-1400F 9
( \! b2 ]/ i" o14010-1600F A
7 \/ o; W* C0 z2 K16010-1800F B+ z: n" i' N- J, Z# l* \* J
18010-1A00F C
* Z( T; N0 [# J( y8 q- p1A010-1C00F D
5 a! `9 W4 Z4 F2 g0 Z, K. ]: q1C010-1E00F E
" ^! q" m$ j! q( I- D- s1E010-2000F F
) ^% B( M$ s6 ], j9 m.( x- c* R* T# p9 a. i! p2 P7 U6 A
.
4 S& X5 V$ U$ W.9 W6 J( K# A' l+ j, i
& ?5 ]1 V" O7 i* ]. E) s6 B, Y1 o
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
6 q6 ~7 v8 a3 e* m( R( J
) b$ s6 U9 I/ m因为扩到144KB的话有的模拟器是不认,无法运行3 X' ^$ N* _0 z' f' V" X
* g5 k/ }, r8 F# [& |# D4 L
为了全FC模拟器能兼容,所以只好扩容到256KB: S; B! v2 M& \# l7 y, k [9 d2 [
" o; X1 z4 c3 s# w1 r补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
) A6 G, d4 q7 w5 M* |0 {: ~2 W
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|