签到天数: 1935 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
8 T: t/ J6 o, Y8 |& w6 y
* V# }) O, t; r- n修改内容:
8 o* I; W. U! v5 U, i/ e3 L1.P ROM由128KB扩容到256KB$ D3 e/ U: x Z
2.按START+B武器数量为99' \1 P3 H5 c3 G# }0 k" {% G
3.按START+A补血
6 _! {; _' \6 ~6 S; j' }+ v5 j: i Z) v5 @* F5 P9 C
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来& k- R$ ]5 a* L2 E+ f9 Q3 X
+ N# _: w0 f# o6 r. c
从原单位滚蛋后就有时间来弄一下# z. J0 x a* l/ M
1 A/ U( k1 \0 O- L }; O5 \5 K
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚! _5 [! ]& Q& _& b3 f
) X! G* ~1 S4 g* L# |关于如何切BANK:请看相关mapper资料吧8 L2 C* h" B- V5 u' C+ ~
& j5 W2 o% r \$ g* K
说说我双截龙3 MPPPER 04如何切BANK:- ! d" U c/ f) M1 ]- B; J
- $xxxx
% j8 w- |5 q- {0 Q4 E/ l+ U4 Y& ~ T - LDA #$07
, l ~5 O$ M) K7 ~1 B: ] - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF, C7 k8 I3 Z, c4 |; X# s% B
- LDA #$0E- A7 p4 }* ^! h: h
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF7 _7 J/ t" x/ h. {' |/ o
- JMP $A000 ;跳转到$A000执行& `' k( |& M0 n# `/ V% ?
1 }, d+ Y( P3 G/ q/ ~/ X7 x- $A000:+ p9 J. N+ O: O/ k' ?
- ./ g4 M: F. E" z3 P& {# l0 V- y
- ./ n6 h- A' K5 L7 ?2 J& }
- .7 e, n* x/ A: Y2 j1 s2 I
- .% d/ ~+ X- U$ u: `% k
- JMP $xxxx ;执行完自写的程式后跳回去
8 x0 m1 e- H9 ^% ~/ ~- {1 ~/ b - ; K" i" r# r5 G8 z, Q
- $xxxx:
1 {. ^1 m, G& m9 X } - LDA #$07( Y9 z$ ~8 m; c e
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF% ] w t( ] K& J9 ?/ @, g: d
- LDA #$0D( P2 }6 f3 ~& @" j K, ^+ v
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
- @9 N I' g/ {
# x; A. w- V8 x- V- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
2 `) @7 Q- D' x0 k
+ q& Z! | G. O
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)/ |) i' ~8 k2 o0 h8 V# x( b
# c( R1 c7 n6 q
附:ROM 16KB BANK编号 o) V2 o; \7 K1 @$ g" K2 X
$ O' x% V, X ]
ROMf地址 BANK编号' S+ U6 f, n( f( f6 X2 I
00010-0200F 0+ a4 D! ?! G/ |2 \) t4 E
02010-0400F 1
) ]' t/ T9 ]2 o& i I6 t) n8 G04010-0600F 2
2 [: t; {* i/ d) W6 t& I06010-0800F 3
9 c K4 e' ^4 j8 Y08010-0A00F 4
* c' M/ @# p1 j0A010-0C00F 5
1 [5 c7 i7 v P9 U0C010-0E00F 6
! m# q. A/ t" h! `$ M3 P0E010-1000F 7" I: v3 Z# B3 l" r. L# [" T
10010-1200F 8 D0 k. K+ I* R! h- u }% @
12010-1400F 9# q" C, v# F9 k3 C- i, R
14010-1600F A
- Z8 e" b* r5 d/ Z, q16010-1800F B
' k2 M$ d# s8 K- T) S18010-1A00F C' H: A0 f4 ^5 e- h- y Z g& y
1A010-1C00F D$ O2 l, j( v7 r* L6 n1 l) y) T
1C010-1E00F E
! f3 @9 i8 {8 g: ~6 @- `1E010-2000F F
1 q6 v% B: |- M! V." P( y* C2 }* d1 G& ^
.& ?4 \* ?6 B* ~( x- {
.
& ^) S+ d2 ?( ^4 S- V* |; Z6 I) M+ t5 C7 H4 i4 c+ J$ r- O& F9 u4 ~0 I9 s
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?" ], u9 \& `: j6 f3 d
/ ?& E" }" i7 J5 N6 Y
因为扩到144KB的话有的模拟器是不认,无法运行
0 O/ O4 O- f3 J, U b. `4 r }' ^9 L- d5 \7 V
为了全FC模拟器能兼容,所以只好扩容到256KB( w% c, R6 A7 p- ]4 y
; q# d9 m3 O8 A8 A6 m! v0 R补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
- n V5 h* n0 w6 t* v: [* ?& b8 U# H$ W
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|