签到天数: 1945 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
z" m* [- P, T) u) ^4 d4 k! K" A7 c6 U6 m
修改内容:
[, Z( _2 l& p1 Q4 s/ r1.P ROM由128KB扩容到256KB
. t! t6 J6 d7 T5 L4 n1 d2.按START+B武器数量为99. v: q; t0 O& C* ?2 _
3.按START+A补血7 A7 q3 [* i$ r+ Z/ @' c* O
3 K/ q" W" C0 i这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来+ C4 ~3 n; t( q( U7 J! U3 `
% T: B" w( i& T/ g* F9 E9 e0 g" u从原单位滚蛋后就有时间来弄一下$ x. n7 v" o2 |
( y) M1 R. Z) f1 \关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚( d# u E* e E) ]0 ^8 w" r
" \4 k) _+ K# @/ j( I关于如何切BANK:请看相关mapper资料吧1 M5 r* q8 s; _$ Q9 _% P; R
- T* ~' x; Z7 [9 W4 Q9 v
说说我双截龙3 MPPPER 04如何切BANK:
3 P* G; f0 \0 Y5 ^2 U8 |- $xxxx
/ u2 t, Q2 p. ^7 i - LDA #$07* x C# r1 b: B; s- M" m3 m* `
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF/ [/ b3 M! u$ X5 y7 K
- LDA #$0E! e6 }' M+ e3 e& \5 v& I
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
- s! d. f) ?! l - JMP $A000 ;跳转到$A000执行
+ C* k9 `1 \- v - . y! Z2 A5 B5 m4 s+ D4 h$ k
- $A000:+ Q; B0 {" P0 g: I0 j
- .
: J6 z2 G+ l7 j0 D3 ` - .% ? f K1 q, W r/ t9 z; B
- .6 I7 A- P5 q! r9 K& G2 N
- . ~% s( B- v% y8 V! l. r: x
- JMP $xxxx ;执行完自写的程式后跳回去
1 j6 D+ ^1 i2 j - 6 R) z) |8 G* G6 i
- $xxxx:
, ?2 I: n8 w" q3 B. { - LDA #$07
: V3 y3 M. t. ^; S, C1 Y - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF5 f# u1 a$ |+ |& q" F6 c) w* G
- LDA #$0D( n) E4 U0 u" ~
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
8 _0 s# J9 W8 G - 9 a1 g: a' k" G. `2 l& f
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议5 B) e2 H8 C* Z4 r
) m1 w; `5 F$ ~0 i
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
6 {. ]* I% u7 n+ |% e m- @, f4 {; |& X: H4 o) U6 e% q4 o- N
附:ROM 16KB BANK编号
$ [/ {! Q, _3 I3 s7 e
" x! X( I* M/ j, ]6 pROMf地址 BANK编号# V8 U) w: [1 U% K; E
00010-0200F 0
% l# K" V5 ?% D6 T02010-0400F 1
" j( {0 U+ ?- V: A; D) g7 |3 {04010-0600F 2
2 [5 }- m1 P. m7 V06010-0800F 39 R" M3 g1 b( T% H2 q
08010-0A00F 4
. \0 n' {0 l! G% a& c- R0 X! `0A010-0C00F 5
* R: h7 O6 ], E- {3 L% t0C010-0E00F 6
4 _- D& E5 W2 i; d0E010-1000F 7
% J3 B% e$ F! u+ d) B10010-1200F 8
! G6 e/ k. f$ x+ y12010-1400F 9
# _6 T: a0 y, b$ ?% q14010-1600F A
6 Q4 k$ I0 Q3 q1 j# o16010-1800F B, B# E* `7 N/ W A' Q8 e0 f
18010-1A00F C
D( u4 M. F: t. _8 ~ C7 z5 i( U1A010-1C00F D- J9 p% u! v6 U1 \9 j; \
1C010-1E00F E
* C# F2 ?. q% N- Q, j1E010-2000F F
4 k i, k1 `# ^; [.
* Q0 t; B1 ~ ~, [# w% d./ ]6 H9 ?3 u1 }# A3 F" Z
.3 |) S- S! R4 U3 b. [* C
& F5 V0 h4 T3 x6 a; G( [解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?& \" E0 }8 z- P, u5 ?. Y m6 L
2 n2 r' i; G$ r# c. f) v& R& V( n因为扩到144KB的话有的模拟器是不认,无法运行
% U" c( X! \# u; I2 C) D- Y& H" p2 g' i: s7 \4 I2 F
为了全FC模拟器能兼容,所以只好扩容到256KB" r% ? Y4 N' G; O1 w7 c
* n0 ]5 `( g2 E% E, Q [0 ~
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
& c! C' C7 I" t
( U( z1 y @3 M4 s; W |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|