签到天数: 1932 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。5 n) h, z& s. ]
. q8 K' ^+ x1 i7 e3 N- @4 Q' ]
修改内容:# G- h& Q: v7 S. X
1.P ROM由128KB扩容到256KB6 ^& \2 `3 J. U, a% G
2.按START+B武器数量为99
/ k; L9 [. a1 B3 |& L7 `3.按START+A补血
& G- H3 t. P7 m, D( [. E( a. h( P2 r; N& A5 T* m- I2 x
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
- r$ A7 l/ `) h/ ?( {- A& F" O
7 {2 s/ y' C9 U! v4 t0 |从原单位滚蛋后就有时间来弄一下
5 m5 w3 a+ m. N1 E- J/ s& A" f# Y1 D* e
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚6 [8 \# D, L2 l9 b; E
0 e7 i' h- X; @( S
关于如何切BANK:请看相关mapper资料吧1 l# u. L0 }$ q3 s2 Z
8 i' k8 v* Y* \
说说我双截龙3 MPPPER 04如何切BANK:- # \7 v8 p: d& y6 m
- $xxxx
- ]/ Y. o+ b4 r - LDA #$07# X, P- _4 }2 }' f/ H
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
$ I, c% W# ~3 n6 n4 p; U* H8 ?. f - LDA #$0E: K; k' q7 x. @
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF$ {% Y/ E) `: } b m
- JMP $A000 ;跳转到$A000执行
N7 V7 P- k$ v$ M. X
, a& W" F; L k- p- $A000:
2 E R, p1 T: B% \4 {3 p. v" X - .
* t, G* @) z% h6 N7 |/ W; P - ." f/ h" o2 T& G, z5 W. m1 q
- .
" \: T+ Y# @! T4 e4 J/ G - .! \. w6 L3 b# f7 Q% B1 K
- JMP $xxxx ;执行完自写的程式后跳回去
, |8 u, e5 E0 L- Y& K4 t4 Q - & s1 r) _3 D/ H2 `9 S
- $xxxx:
2 ?& {0 i, V; \4 Z" o/ r2 S - LDA #$071 q( |* J0 E6 _# L4 }* x
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF& ]( E& p3 j: r% ~( W
- LDA #$0D
% g# |+ |2 t6 \8 m5 G$ x - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
& R# O. ~* q/ _( S: H5 W1 V$ M - ' Z" q6 F8 U3 Y P9 p
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
: F' ~& _9 C9 G6 m2 c" G' S9 c - ; s, y7 s$ j' |. Q, O( x) \9 F2 d3 T
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)) I' t4 n$ c" O4 o! [
5 T# V1 f8 V; {( h+ @$ A
附:ROM 16KB BANK编号3 G4 E8 e9 c7 J S
; ^, `* u' i: D1 H
ROMf地址 BANK编号3 D6 d& @* p& A5 ^8 T" Z A: y: M
00010-0200F 0% F9 W) O# b9 W9 k
02010-0400F 1
& K) u& N& S% |/ L3 X4 V) [) s; _04010-0600F 2
/ ?3 {/ {: S: k7 P; s06010-0800F 3
1 `/ @( P5 _. G% c4 q* @08010-0A00F 4
- }3 M0 r/ a' n7 b) _# a0A010-0C00F 5* }% T' J% @$ |- @: J; l: H' W
0C010-0E00F 6
n( t# }' k' e) Q+ |" @2 Q0E010-1000F 73 G/ K* q! n) i: B" `1 Q2 K
10010-1200F 8
" X% ^7 Q) _% ]# G12010-1400F 98 n# F0 H K7 E; b! _
14010-1600F A
8 W L T' [4 N+ r" U- O5 R8 k, E16010-1800F B9 V# j2 ?" G6 D o
18010-1A00F C; i1 h& ^3 x; [, Q! D- b- @
1A010-1C00F D
, h S# T8 [: `& D0 d1C010-1E00F E( }$ b" T; p0 Q7 K) ^5 k e* y% @
1E010-2000F F3 }% @8 W) g# m- s; @- H" A
.
4 N9 S7 m% k7 l% Y% U1 @' V- F/ S.
0 _ g8 _) a# n2 q! L9 P& ^& i.
1 z8 K p$ X) B6 j) \
$ X& \1 K' n7 ^' W+ r0 @解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
! P9 \* E( K3 d1 I
# f1 D3 I" V" ^因为扩到144KB的话有的模拟器是不认,无法运行
9 N6 _( U5 k! f+ Y/ E! X _0 G
# C$ x4 [8 D& d为了全FC模拟器能兼容,所以只好扩容到256KB
6 y# \' X( c! B# D0 _: {& h$ r3 ^& O8 z( M2 N$ r0 x: q m
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
/ N& @- W% p) M+ U
; ^- ^3 @0 {/ K8 Z1 Q' | |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|