签到天数: 1987 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
, I5 M' {/ M9 ], u& B* H, u8 ~4 p7 ?# ]" }
修改内容:
* M- @; c/ E) ] b/ v9 T2 |1.P ROM由128KB扩容到256KB8 E' b5 g( ` F" q6 I% x
2.按START+B武器数量为99
/ ^- u# e% q+ ~* {' u3.按START+A补血0 K4 h+ R5 C# e c: C
! p5 k* J, t; `
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来; q7 P2 m* M( |( q% J: o Z% f% b
9 [6 [ k( b* T5 A
从原单位滚蛋后就有时间来弄一下2 X) i8 {& y" _! I0 S" E
1 x2 ?8 S& J' r' \$ l
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
( U1 P. @% R4 e5 e0 f! Q# A
2 [; l, [2 u2 C; K3 t q关于如何切BANK:请看相关mapper资料吧
, M2 Y; u$ R7 H, ?5 e* i% |2 b& ~
9 G/ X' l6 g* V* w3 i6 n* N说说我双截龙3 MPPPER 04如何切BANK:
& P: v& p# s5 M( n" {6 u Q7 m! Y$ p- $xxxx
- K/ y5 e3 t. |( d: F - LDA #$07
# n. j; W# M B3 _" l; ~; X - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
* |2 ?! ^ g$ F& i# y( m - LDA #$0E2 c0 e# O+ U& r- Y) _, `( X
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF2 M/ Z- H# Z$ N3 X" g
- JMP $A000 ;跳转到$A000执行. N& Z" J: u, S6 z+ m7 B
- 1 m2 I& ]2 P6 O1 u3 R* B/ p
- $A000:
, m3 ]1 i) Y, ?0 H) I6 H1 q @ - .* n- b6 N Q5 |: b4 t G; e
- .7 C A. i* h. i# R- k5 }; s
- .
+ q6 t7 Z7 s. \, \9 {6 E - .
?# j, b; @# F* _- ^3 \ - JMP $xxxx ;执行完自写的程式后跳回去
9 O, U3 ~) H. B; V& ]) c9 i - . }* W. Z7 H' j4 z4 X% c- K- W
- $xxxx:
! L# b! _ A+ b+ V+ O; F - LDA #$07
# _0 j$ k5 u9 \. T9 B; y - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
9 m! n8 @* _' s$ W - LDA #$0D
+ t% n! j, M5 K' y- G3 e- p2 X- Y - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
5 g2 G$ B( \* M7 L% e! _
9 s/ F( }7 z) Y+ }8 w0 @9 ?& M- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
' n5 v. j$ b' h2 R
, x8 W# a( M( I
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)1 U h$ F! b4 l' K
: @) u+ N; V$ |3 i$ k
附:ROM 16KB BANK编号9 w9 g1 ~$ m" z: F. h. b
' K: o& w P' v, p, `+ ?: oROMf地址 BANK编号
. F( y r! q" U1 y! `8 L00010-0200F 0, Q- g4 q" {: F0 {7 L! A
02010-0400F 1* A8 v% M% I3 X/ ^( M: n
04010-0600F 2
, a. A# _- }7 a# v06010-0800F 3! a# h! Y( W& b, [
08010-0A00F 4* h5 N* W) Z, C
0A010-0C00F 5" t, L6 v$ H2 c9 p0 h) z6 d5 e
0C010-0E00F 6. ]' h$ {( [1 M/ R3 G/ \$ f0 r
0E010-1000F 7
& v0 i P2 b8 w9 N+ I$ N10010-1200F 8
8 M& Y+ q4 |0 H5 v3 L( J' p12010-1400F 9+ W. M- y& s1 R6 ]# |
14010-1600F A1 E) p- z' g) M; R5 O& \
16010-1800F B
; d& S5 R$ ?! R- x4 I/ b* N) d. |5 Y18010-1A00F C) w0 n4 D9 Y% t+ ?, ~2 ~0 f% N, @
1A010-1C00F D
* R+ j0 h5 ?- m& K0 V. ]1C010-1E00F E" \* ?7 X' ^- L' L
1E010-2000F F* H0 v8 S4 `/ p5 T$ R" C1 C
.: f0 V0 t5 r$ _, m% a
.
4 B6 T! [1 v. d: D7 e8 F7 ].
' z8 y! h$ u( G! N+ \
9 p$ w5 B. T6 x5 [2 Y, z解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?' Y! F0 y7 H" x; S8 l
$ K3 {$ |* C {. s因为扩到144KB的话有的模拟器是不认,无法运行
% B! D: q6 V5 Y1 p7 y9 G: F/ v) c+ n
为了全FC模拟器能兼容,所以只好扩容到256KB3 K3 [$ \1 d" X! I
, c, ~3 L+ J5 B _9 X* P8 v* b
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机$ W/ ?* `7 j4 w
; U1 u9 a! C8 B
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|