签到天数: 1710 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。7 t p4 Y) N$ p9 @! y0 x
: l8 l# j; v; t7 A+ M修改内容:
) ^6 p1 v" w5 @1.P ROM由128KB扩容到256KB8 H) |+ S/ l3 M C' N
2.按START+B武器数量为99
: T) i% R% H u- s3.按START+A补血
5 f) [6 {/ e, b7 K3 w2 e" m( L$ Y: X
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来( Y2 [" n" d* j' j9 F, A
* t) p. Q$ e, W8 {/ |- J- S' h/ f从原单位滚蛋后就有时间来弄一下! F7 p/ W1 ^1 p1 }+ D+ J Q
3 r6 Y* ?6 A6 E% m V, b0 A
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
3 i2 E1 G R* x4 w* Q" d/ [3 ?9 y2 J Q
关于如何切BANK:请看相关mapper资料吧9 @& l! G" |2 v$ J4 n
4 o% a4 ?' D. c- h3 [1 u; [- r
说说我双截龙3 MPPPER 04如何切BANK:
* I) m8 P& A3 i \$ r% z5 Z! f- $xxxx
0 `8 ?- C4 l" |2 D1 j. F - LDA #$07 Q" d; {6 @" t0 [3 t. ]
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF( A/ X8 d0 z# y
- LDA #$0E# p' a8 [6 A Q6 m
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
" b/ m1 [' q) S" f, }) F8 m/ h - JMP $A000 ;跳转到$A000执行$ a2 S5 ?% [( D) c
$ s2 n6 w6 u. z. v$ r A o- $A000:
' k: T. b! y" m. l' z4 c1 a# r- s - .
: u1 c- E: h! A2 g) U4 c - .
6 D. U+ O( Z9 o) j. g; |: w - .
2 h2 }6 I; z3 E7 C! Y - .
5 H/ U( `& l1 i: E5 S4 G4 t V - JMP $xxxx ;执行完自写的程式后跳回去
! {0 I, @8 b9 X* n8 m - . y. F f2 b2 D
- $xxxx:
7 g. m* c: b0 G# y& x - LDA #$07
. u& ~! k9 v# N' ? - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
9 v, _& Z4 x: D0 n6 `8 s* K - LDA #$0D( w! D+ E H8 o0 E
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF" F2 x5 i2 X* {2 I5 g
3 N$ ]) {: E# f! l9 ?9 p- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议; W1 q, H* Q( ^( o1 d1 Y- r9 Z7 |
- ) e3 P3 t+ G& J0 N8 C" ~$ V
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)- F0 r* S: M' ^3 h. r( j
$ B4 ]! W6 h- A附:ROM 16KB BANK编号
4 O1 e' N' N5 l1 h L' A; ]. Z+ G4 v( O6 M
ROMf地址 BANK编号! y7 t2 C: L' z+ u* ?
00010-0200F 0, e. ]2 {4 ^. ?$ n* s
02010-0400F 1
( d$ l" K, v& S$ B! ~; e04010-0600F 2: r8 H0 Q3 g" a
06010-0800F 3
- u: p6 N9 P# C w4 y& ]! I08010-0A00F 4
. e$ Q7 p! K! f: E0A010-0C00F 5
' G2 W6 {7 R1 @& F- o0C010-0E00F 6
' l. I" M4 [/ A& p0E010-1000F 7% ^: S$ L. v: O& e4 I
10010-1200F 8
1 y8 n+ t: L* Y12010-1400F 9* a1 E# Q8 j9 [7 c' B
14010-1600F A" U7 F" h8 e5 c$ m, k
16010-1800F B
- X5 T+ W2 a, n# A; K2 Q18010-1A00F C
) X8 A" u; q B, T1A010-1C00F D
' Q. Y% v9 Q7 X# U0 U" H5 [1C010-1E00F E
3 ~6 N1 S' ?3 P* c; s/ v R1E010-2000F F
2 y' {& I( C" _/ M.
4 E/ [/ h( r, c9 i$ p' f0 A0 l.. Y N" u/ r! S- U9 p
.
3 a C$ u! @/ p1 Q' `+ p, P9 x0 a
" T4 l0 W" C+ }+ L( n7 `3 A解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?: g |6 e/ j+ Z; d
7 a# ^. \+ @2 v4 h5 N& a因为扩到144KB的话有的模拟器是不认,无法运行
: }: N) }# J# @2 t( y2 a% L5 o9 [( Q3 v* s1 i# @8 M. t# s
为了全FC模拟器能兼容,所以只好扩容到256KB
' `( P$ m6 p9 m; `& Q( }; v
, e: N# O4 ?- e- H' o" |, f; o补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
7 o; K1 }0 V" Y
( ^ o* n: g) m& u( \1 z3 p& N |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|