签到天数: 2008 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
6 i( L7 H" u; |0 m! t
7 ^. Z' g0 B5 K+ Q9 c$ H* S修改内容:* p/ q3 ~% D" B7 [7 Y1 g
1.P ROM由128KB扩容到256KB2 X, J7 q2 e, }$ d2 i8 N F
2.按START+B武器数量为99- g; e& Q% J8 g( J1 {! y7 S( X
3.按START+A补血
$ w1 o% t0 @" N. b9 P( E ~: E$ Q; f4 X( C4 t8 y c% X7 T
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来; s8 h; H" Y$ R
6 _% q$ k3 K# s7 N
从原单位滚蛋后就有时间来弄一下
! @( W+ n0 V# b3 h
9 y" [+ `. Q: P关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
( Q, W [8 R7 }+ p* \* T Q7 }9 z9 P, G# P
关于如何切BANK:请看相关mapper资料吧
: K% C) k) k1 }/ o5 \
9 i* q$ s8 Z1 J" U* |+ q说说我双截龙3 MPPPER 04如何切BANK:- 7 s2 `2 {! T; I! n, a' M; D$ t
- $xxxx0 R! |0 X8 I5 j5 K
- LDA #$07
; `. ]) [ g& W1 {0 X) k) x( e: u% k- V - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
2 v$ Z5 i- ~) p - LDA #$0E
8 }) j6 T! Z7 n1 k. ?, L' R0 u _ - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF( v0 S3 U4 H9 y' ^7 e
- JMP $A000 ;跳转到$A000执行/ e0 s$ [" c5 O4 z% H7 W/ H; h
; q" J! w' j1 S7 J; a% `0 i- $A000:
) O: j5 j+ w3 E, D% S - .0 s2 K- ?3 |! i5 N) Z
- .
3 k$ |. E# s) K; n - .
6 o/ [0 H7 S8 w& F - .
: a+ \, j( r- L5 f- |( F* v - JMP $xxxx ;执行完自写的程式后跳回去' h" h8 @3 ]& t r
- + H) i1 @9 i, P) g" Q# O3 w
- $xxxx:2 i% Y# ]( `2 R3 ^8 f. D) A
- LDA #$075 K/ B3 u. ]5 n1 s) h
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
( f0 c# O f$ T4 L - LDA #$0D
8 R2 f1 F7 c' i( o: r% C - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF# f9 F; L1 O8 h Q2 M8 V7 G" r2 i
- - P0 p. }& ~" B& L- w' [% Z B% Y
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议4 |4 g9 X* y1 ?
{* b. Y, C; O- P! [
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)- ~. G, y4 p$ K3 Q& D
2 ?( T! G$ `7 E f
附:ROM 16KB BANK编号$ R2 ~6 B2 o7 E% y
# x' I* f4 Q9 w. AROMf地址 BANK编号& X* q& i1 ~8 Y% c/ I
00010-0200F 0
8 r# M7 O, m: D/ B02010-0400F 1
; D% n% ^/ O6 [! m. ^# A% j h04010-0600F 2
% }4 m& r4 d' { q; N8 u06010-0800F 3
" }: F% c3 D }5 P* G08010-0A00F 4: m0 i; Z2 C+ H" N
0A010-0C00F 58 g9 H& g4 l _# N' L4 ]; w' q, i! P
0C010-0E00F 6
: c0 Y v; Q$ m0E010-1000F 7: k: G% x! m" m3 @0 U& G
10010-1200F 8( b( @) O: @1 N5 B9 n6 N" i
12010-1400F 91 K0 N, Q% w ?. C; [2 D ?
14010-1600F A
& M7 U+ m. ~" I& l8 A16010-1800F B( J" B- T8 ]" S
18010-1A00F C
" x; u2 x, g/ h% m. d5 r1A010-1C00F D
5 T) e" x3 Y0 X9 W/ W4 _1C010-1E00F E
; z8 ~, |+ z' d; C& c4 w1E010-2000F F
& o& i+ R0 x5 w.% S# @7 b' w1 M- @
.# b- h3 E( z" r0 e, D* t
.
+ w w; G( Q) O, _
& o; U7 t1 _3 u/ o8 u) t, N, R解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
* r( N$ a* b8 ^# l+ \7 k( d
2 D" z3 d0 `- \4 `/ Q2 ~" J因为扩到144KB的话有的模拟器是不认,无法运行6 {$ j7 l. Z- r8 n v& i9 X
4 M+ U C5 {7 K" @: @+ b& O0 w为了全FC模拟器能兼容,所以只好扩容到256KB
: f Y5 ?! F% k' V. t# ?& n: t% W L9 e/ w# s9 _
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机; F, q6 ]. I8 L* X: I3 o/ _
* l+ i5 j4 E b$ C+ A1 \0 a
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|