签到天数: 1868 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。* T, O, l+ b' B- n' G
# L. O/ f2 H: y; `
修改内容:4 A; w% S. `; @! q3 b- Z% f
1.P ROM由128KB扩容到256KB1 O- s5 \$ r$ }( f" `+ P
2.按START+B武器数量为99
# u$ X/ @1 v3 J s8 }' U* I) X3.按START+A补血
$ @) t$ s. n5 P2 M3 Y+ a) G$ k
+ L, O% o. n( J }# k! ?/ R W这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
( Y" I7 _ i6 u: R+ E$ }- r! e4 [/ k- R v
从原单位滚蛋后就有时间来弄一下" C5 |1 q3 R2 O' \
' |; G# [: \" p4 T x2 N0 T8 ]
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
2 \8 J: G- K1 Y) F M# p1 }0 ^
+ j& ]. P4 [+ u+ w6 K关于如何切BANK:请看相关mapper资料吧; a0 U* R6 u5 `* j
) q3 v" z6 x) \! S3 e说说我双截龙3 MPPPER 04如何切BANK:
! k# ^7 w! p; s |- $xxxx# a& L$ k X; j8 f7 I3 V
- LDA #$079 F" n7 J3 l' o/ q9 [
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
: z5 S1 {# v k A - LDA #$0E: m. F! B! u9 Y' ~* ^& i, b% U+ g
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF1 P1 G7 {/ o5 e
- JMP $A000 ;跳转到$A000执行: d! @1 N+ b/ R! L
- % P& e- A7 R k) y a T
- $A000:/ W* L7 g$ P1 {4 ~3 X: J
- .( Y" E6 |2 e# S8 @) e7 y+ D
- .. Z3 b" u6 J9 Q7 `7 n R
- .$ q) j- b2 E: ~. Z- W% X
- ./ [2 }, X3 h/ A) {; {5 o$ J
- JMP $xxxx ;执行完自写的程式后跳回去
0 y* _( u4 l6 ` - " ~5 {( F; s4 i8 ^2 I1 ?
- $xxxx:
6 [2 H' g! r- w( Y - LDA #$07
$ ^, [3 p, B" d$ S; L - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
5 I% Q7 S, y+ o7 F N3 _: A: v9 ? - LDA #$0D
_: x2 s. Q0 l# I6 o8 @ - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
' G: B' G8 o2 _% P1 ?/ v9 r
9 d, {9 `6 u2 {6 D# ], b- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
: s: c; \& h& [$ I; ~/ Q - ( z8 R6 l) u' w3 \/ P$ K+ u
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
. E# K, [9 P. _7 w0 R* }% X% ]; }2 v& b1 r# A
附:ROM 16KB BANK编号
& A) W, k! c1 [1 A: f- w- o0 M8 R& S% J& A' g" F+ G
ROMf地址 BANK编号* E0 [" f1 g% c! k R
00010-0200F 0- S6 G( a2 n9 _ w4 ~; c5 D5 A
02010-0400F 1
) s2 u" p, C% ?' M! u04010-0600F 2% U; C6 r( f/ G+ ]$ m& T9 n
06010-0800F 3
' y3 G f/ d2 u. L" Y08010-0A00F 4+ U$ n! q& J3 c0 }3 T$ X
0A010-0C00F 5! }) L1 m! t1 q9 k
0C010-0E00F 6
/ C; z q2 k) Z+ B9 X0E010-1000F 7 I; }: j9 ]* ^5 Z% O
10010-1200F 88 ^4 f% h+ ]) Q1 U
12010-1400F 9& \5 b# Z. D8 P! [
14010-1600F A9 ^ U; e7 y! D: o6 h1 u( k
16010-1800F B
% o6 r% [+ t8 b- }+ b18010-1A00F C, A X1 F" k* z( J4 j4 H2 j2 b
1A010-1C00F D
( F+ j5 V' D" x3 u- J1C010-1E00F E
! M" S5 _' V7 L/ m. o( i1E010-2000F F
! E) X* l2 b0 E.
; K# I- n: j: _: q( `. {.4 i/ M) _* F; `% V
.
5 f9 M+ ^: z9 [' Q4 X+ d' W; b# y0 p( g4 e
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?/ F. n6 n4 |6 w9 M# p+ L) V2 I Z/ E! t( Q
1 [- Z% j6 x1 F1 p( Y& K7 s p( o因为扩到144KB的话有的模拟器是不认,无法运行
! v+ v1 g; w. y7 n3 a0 A8 q/ S# m2 \
为了全FC模拟器能兼容,所以只好扩容到256KB! A7 c& D% V6 Y/ ^$ H) C" T7 f, n
5 b) F( A1 P! O% c$ B补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机3 G" ^: L, C0 e! e6 N1 j( ?' p4 M6 x
( o) v! |! D2 w# p, o8 y, z' D
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|