签到天数: 2114 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。6 S+ E8 L2 [' x6 ?. u
2 R4 Q. J. d( y修改内容:
; D/ B/ a3 L- Y4 D1.P ROM由128KB扩容到256KB
( p0 l; F8 p8 B: d2 J. w3 ?1 r2.按START+B武器数量为99
+ x. a" v; M# s6 n3.按START+A补血' [, k( l4 B- R) [ u" b- o! N2 \
" l* a! H) e) y: W$ W* ?0 k这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来: ~ T, H% M2 f( K
" s* n" c9 |# ^" U) R* z
从原单位滚蛋后就有时间来弄一下
& d3 v; _$ J5 y! _- n/ v( k$ Q8 n5 z+ P/ g" H8 ] Q$ X
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚1 I0 f& R0 y6 a9 b3 c5 ]
3 [) Y ~# M- ]5 a n- G关于如何切BANK:请看相关mapper资料吧
* o2 e- W9 i4 |! o5 J5 `8 g! w, T: {5 {4 J4 g, B( P. u8 A* l
说说我双截龙3 MPPPER 04如何切BANK:- , ~+ P( r3 ^5 R" ^4 L# A
- $xxxx
4 {, E2 K4 [( J1 ~0 M$ V9 R( T - LDA #$07" m( c+ b) T. e3 q
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF- g3 P* @1 k/ K/ r: M; G- l+ j5 C2 L/ Y
- LDA #$0E
/ I# @5 Z3 z1 s% x - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF' R9 w1 C6 z8 S8 v5 m; s
- JMP $A000 ;跳转到$A000执行$ I+ ~* E' R$ g- p" a
, i8 j' V: q2 W, F$ ]2 U- c- $A000:7 Z8 Y/ k$ K5 b# @9 L$ y; o
- .
1 ^ ?, Q( r, Y6 ^' I/ R: t. c - .5 k# {" C- X& R2 q7 v+ }8 @& H
- .# @" ?: E% {- f+ w
- .
7 R G2 T0 z* D) ~% C% q - JMP $xxxx ;执行完自写的程式后跳回去
4 M7 ]! W6 r3 G& g9 L. {$ n# R - - h5 j. c; p+ U2 c. i+ s
- $xxxx:8 R4 u+ f4 V; q
- LDA #$07
' R) a: Q h: ]9 x$ [ - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF! {9 ^" N% W+ t! ?
- LDA #$0D" X/ \) a6 o( ^+ O
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF8 S' \ x) v5 ^ r! K
$ k. X" y- w- [8 z- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议: o1 Q& r# J! r% _
- / h2 h$ l$ G% u$ B6 z+ `' C
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
) f6 p- d/ L3 [: W! `% O% j1 h) V p' a
. j5 y# x- q+ C* w$ k附:ROM 16KB BANK编号
& v4 o& M. a4 [% D, V' _* W" |8 H, C1 [: w2 _
ROMf地址 BANK编号' i0 M) L! B, [+ X# ]# Y' L4 J' M
00010-0200F 0
; H& z. b+ r, @ B, O02010-0400F 1
4 | C7 C/ p, q' J6 S [ z04010-0600F 2
8 l% P: P9 G- d7 G: l06010-0800F 3
! I0 G* b/ G8 |, }& C. }* \08010-0A00F 4! o `" {8 i0 k4 F. l Z2 P* {: O0 j. i
0A010-0C00F 5
& P: z1 W, v6 I0 M( M5 [0C010-0E00F 6) ]7 V' L7 R1 X) X! S
0E010-1000F 7: ~7 k- k a" e
10010-1200F 86 }+ Z. V+ ~$ q$ ^
12010-1400F 90 H' R% J6 G/ [
14010-1600F A
5 h+ M$ z4 E* R0 L* r/ x16010-1800F B
3 W/ b, f+ E; m2 w& W18010-1A00F C% `* r$ O! ~2 m# s: ^0 w c" X
1A010-1C00F D" v+ Q& ]# s p1 U- u
1C010-1E00F E
1 W* Z/ Y/ u5 p5 S; _( R! t6 z8 c. N; j1E010-2000F F
9 ]! E4 S9 d `4 E0 ]( s.
) I$ E1 |" u& ]4 l; Z/ `/ ?* h" X.
6 {) M* q: o% Z7 i: L6 i.+ B5 {: p( _( C
7 @) C0 B) |3 c' S; S解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
0 B3 E, h) M2 Y1 Z. R8 f
( M" x% [( `7 P1 s因为扩到144KB的话有的模拟器是不认,无法运行5 H5 u+ \2 X# m$ P- z
. d8 a! L/ C: k! x" O4 n7 u: R* W
为了全FC模拟器能兼容,所以只好扩容到256KB
4 O- n9 @* l. K# |8 v$ A* J1 R$ c: J3 I; J- C+ T7 j
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
4 @: t; W3 G5 \# B T
! x6 }! b6 C# r: |) ^ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|