签到天数: 2136 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。& d3 M) n, k5 e2 z3 `6 {, Z
1 B/ s8 H' Y X/ M% ^修改内容:! _0 v; `7 D* Z) o/ q
1.P ROM由128KB扩容到256KB
3 B$ s- }2 }# i0 |2.按START+B武器数量为99, k+ Z# p; n _( ?- A. _+ J" c
3.按START+A补血- |2 l+ y6 `* Q9 G( U( O0 `+ x
8 @& k, Z' |6 Y- \$ u }
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来* O. f0 J" t- U9 b) d
f2 ]( b0 {' {% Q- Q% e/ z
从原单位滚蛋后就有时间来弄一下
/ P* p8 [! \5 l, O0 Q% e5 T/ d* A3 X* u J+ u
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚* M0 M" m2 L( l/ i8 H; f% X$ F2 X
, I1 n* h) d' y* E关于如何切BANK:请看相关mapper资料吧5 r- X) q- Q5 V
7 k1 R' C4 V: e x, g5 ?9 B- e说说我双截龙3 MPPPER 04如何切BANK:
# C' I. m4 a# ~+ h. i- $xxxx
3 h6 O" T, h4 ]. [ c - LDA #$07; c6 a) G/ U- y z$ e1 r
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF/ T/ Z1 F/ f3 B7 j
- LDA #$0E9 N! ?' }9 d8 I# Y
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
3 S5 I T: n; Q: ^! X" F - JMP $A000 ;跳转到$A000执行
+ I o/ K2 P: i9 I2 Y2 i) G3 e- E
, ?7 X" ?0 e0 v( c& u j* i2 Y- $A000:4 z+ C5 f. P; _9 O5 f0 ]) ~1 t* p
- .+ f' v* L5 H6 M1 Q7 U
- .: @) U6 I% M) C* {# ?$ M
- .( w% j4 o& `0 T
- .+ c. [8 j4 y4 M5 X$ L
- JMP $xxxx ;执行完自写的程式后跳回去0 s5 p; }' r$ V5 B
- 5 p/ r: g- {' F) M! L2 L; A
- $xxxx:5 G3 L1 x0 r, H
- LDA #$07
# X: D" s7 \" u6 P! n* S - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF% q2 \, F* s6 l! ^
- LDA #$0D
; g$ {- m, v' s0 N2 S, q - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
& K1 m3 A& o( n- f - K1 I/ i7 [2 @' d5 P# I
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
% R& | Y: ?/ n9 u, I
3 X7 I; e4 J# y+ F$ R8 e
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式): [3 N, A/ f5 o1 r' h; a2 ^2 j6 o
! L" i' j; ^# {+ h6 Q
附:ROM 16KB BANK编号; D# O6 X- k8 y4 N1 q+ J
1 {% y, I) X1 M" c3 F) k3 P' m
ROMf地址 BANK编号( G! X8 S3 d0 i
00010-0200F 0
8 a8 \, ~0 a' [( x02010-0400F 1
, [+ C1 U' O& q( Y- m04010-0600F 2
! @$ t& y+ _" ?' R$ |5 x5 K06010-0800F 3
! D6 |' S) Y+ f T" I08010-0A00F 4
- A$ t6 T3 w- u# X0A010-0C00F 5
2 @2 d n0 K U: a6 T0C010-0E00F 6
# m2 }5 f! z, @; j2 N2 F0E010-1000F 7
0 T* Z V2 ^& _. g- U2 ~10010-1200F 8: [6 N0 H. N' [8 b+ }# q( l2 x# x
12010-1400F 9/ G* e9 i& }6 W2 B6 ~. d9 W: n
14010-1600F A. N0 r: d1 ]- v, b- I$ i
16010-1800F B; x( u( K/ [$ X" \' o) i; f
18010-1A00F C
7 ]; T; w7 ]$ [' c2 E1A010-1C00F D6 Z- [) N; q& P3 g# i+ k
1C010-1E00F E
$ w3 l3 H, |* v* o5 u; _1E010-2000F F. A! X: T" L$ g( {: ^
.
U- {* w/ L0 m. a% a; b( Z" f- b* X' E
.
5 `* Q1 Q. O2 p" g" g0 w3 H! t l2 T- Y
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
' A( _6 ]5 x' M/ `' s9 G( ~3 B. {4 p
因为扩到144KB的话有的模拟器是不认,无法运行! R9 c- P! |0 `/ e0 w; l# e
; b! B1 |6 |% \# K
为了全FC模拟器能兼容,所以只好扩容到256KB
$ v& A m6 Z& B+ R- u0 W3 {
; H8 Z9 I+ R+ g5 Z- C4 N补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
& ? x% _* R! w2 s7 R4 E/ U, t
( O# S+ K+ E l u |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|