签到天数: 2164 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。5 N3 q2 A! ~7 d4 B7 g6 E
# d% w; ?0 B( w
修改内容:
. R6 U3 c* y& X8 i( G1.P ROM由128KB扩容到256KB
7 W5 O$ M/ @' U. Y8 B9 d/ V' g2.按START+B武器数量为99
, g% A9 ~. i d/ P3.按START+A补血
( T* v* |* z0 r" E% V
4 l' L( B5 k; ?: i4 y这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来) _% F% v# K _1 Y
@/ V8 q9 O# C. X# r从原单位滚蛋后就有时间来弄一下! ]/ t1 o+ t1 K8 ^" E
7 y1 e e; [" |关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
7 t& G7 }- t1 Q
. w: c& ]0 H8 r4 @% o5 n3 {6 Q关于如何切BANK:请看相关mapper资料吧7 K/ E8 X3 k- E! h) [$ [2 U# E. @7 S
; v0 C) F. Y. W' A2 s说说我双截龙3 MPPPER 04如何切BANK:- , `- _+ y+ S3 t1 `4 F
- $xxxx# }' V' u) k8 W9 ]8 A1 n$ w( ^
- LDA #$072 D8 _6 N4 @+ m; I. j: T$ D
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF/ Z7 a4 J6 k9 k+ A! N6 B
- LDA #$0E( P$ }# U E6 y$ T+ H
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
! V$ X- |: ]: J' N* c5 T - JMP $A000 ;跳转到$A000执行
# m* h- Y( o1 s: s2 Z( T - 0 ^- K! R/ ]7 J/ _) r- Y
- $A000:
z. m2 G( \6 ?, B% e5 v - .# f) @/ A( D$ v& S
- .
: S* \: H7 _% @1 A. @+ Z7 s6 M1 \ - .
) ]" S* {4 v' ~$ i& \/ N - .: q7 C/ l1 l5 o
- JMP $xxxx ;执行完自写的程式后跳回去0 J! j" u3 ~& `; ~( Z0 m' X
7 P) O* q, ?7 O I; H5 Y) O- $xxxx:
+ @1 Y/ g, M& R: V G. m3 G - LDA #$078 K, \. y- d: h3 \# x3 w9 x& @
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF; ~: o4 g0 y% N/ Q
- LDA #$0D
" a7 x, V% x# u& i9 ^1 I2 @ - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF8 j: k* _( I4 b$ z4 S7 ~
- ; D% d& q' O+ T5 ^3 {9 I
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
6 W. C) G7 f3 x
1 I. j+ f+ L# E$ p" L% P
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
$ @# ]0 \/ H) E N+ w; t3 z# a; Q5 J2 \7 c3 o! ?
附:ROM 16KB BANK编号; g- h! A, r4 h( e, B
9 b" c2 m! ?' \6 y. N9 H, D8 J
ROMf地址 BANK编号
6 \0 l1 a) g/ k8 p00010-0200F 02 p6 ^6 o4 O4 h& f5 P
02010-0400F 11 ^) [- y7 a$ |% B6 i! C
04010-0600F 2$ H {1 Y) |& c
06010-0800F 3 z h& H8 s7 A/ d8 E2 G
08010-0A00F 47 f) W) b1 u- ]. s/ W; j& y
0A010-0C00F 5. J: f9 k) L3 Y* R) Y
0C010-0E00F 6* g# D7 a s7 p4 o. }! v# b" k
0E010-1000F 7
" Y& S! O0 l3 q3 Y4 g10010-1200F 8- S) ~6 o( L/ w! q5 ?% n
12010-1400F 9
# s$ I2 K! U3 T% f+ Z* |14010-1600F A
/ a P7 t* U- @2 t' w16010-1800F B
7 U2 s6 m! k. v3 F- l! C3 d7 ^18010-1A00F C1 f# ]1 U* ~3 k
1A010-1C00F D+ E( c/ \2 i# a. g7 [( A
1C010-1E00F E
- _& h& r* X1 `* l% A1E010-2000F F
' ?, y+ i- k- [* L.* K1 F; `: }, \! A' i7 W
.& o& k; _( b- O6 b* R) x
.
# y1 q! v" k4 ^. Z* }; e4 K7 i" ]: f+ L2 H @. y Z- x. U
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
" o# U3 l3 S* a: K/ }+ ?' G" |4 z& ~- ^. u {
因为扩到144KB的话有的模拟器是不认,无法运行) ?: s" L( {8 E; F
2 z; q5 Y) F9 C, ]/ E0 |) l为了全FC模拟器能兼容,所以只好扩容到256KB
! t$ r1 G% g9 F" \3 C
{6 N# Z y$ N: n补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
1 x6 X8 i" ?! s
8 j8 l; t+ q" L ? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|