签到天数: 2049 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
$ d/ Z; a& Q* }" s
0 }0 M1 m) r2 n% S; u+ _: t修改内容:# g1 l# Z N" w- _' X. a' | H
1.P ROM由128KB扩容到256KB
9 N0 ?; b8 v& q B2.按START+B武器数量为995 r2 Y4 C; B( F" s
3.按START+A补血
! U1 P) t6 r% ]3 z( m8 X# Y% L; D4 s. G( X) S3 k
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来0 d* J. b8 \% x- C; Y& J
7 E+ ?( _9 D2 e) P- |$ k: u: R
从原单位滚蛋后就有时间来弄一下
+ M& u z+ @, I9 L- D
3 l" U- _/ _) n# s关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚- } R; N* Y1 X- ^0 j& ]
; L0 |( S( Y# K: t6 a ?) [+ b3 M关于如何切BANK:请看相关mapper资料吧
: r8 d+ R: X; k& V8 c. l4 z
( b% O. @' v; E( y) p1 }. g+ |说说我双截龙3 MPPPER 04如何切BANK:- 5 L% E" a9 ?: `0 z2 |! \
- $xxxx
1 p! P7 M" j3 L$ x: Q - LDA #$07
7 B! U, E$ H/ T9 b9 ]+ t. G - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF. W, |7 {: a( s* m+ E
- LDA #$0E
( D2 i: N2 n' c) ?8 }: Y" [ - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
& g9 h& N. u* s1 L2 j2 b - JMP $A000 ;跳转到$A000执行9 d4 ~2 r: Z9 K4 R9 V0 o
- 9 _* v3 c+ h7 g& A& O) i3 n* n
- $A000:* j2 [' {/ z3 a
- .
2 B A! ?* [# }# O* R' b1 s# r - .2 e9 {5 j$ o! u
- .
1 A) Z w5 E# }, i# C9 H1 Z% J, h - ./ r& ]6 ~" _- }
- JMP $xxxx ;执行完自写的程式后跳回去
) z2 P9 V. d- m) e- I - 9 E$ [' N1 d2 y) b8 Q
- $xxxx:8 X1 v0 g1 a0 T3 S& \* e7 n
- LDA #$07
2 c6 x) ~9 J* r$ O - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF. O: ]. L2 Z0 D5 p& J, j Z
- LDA #$0D
: [, V, j- A$ E8 V% R. A - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
, k5 X z( ^/ h C
w, z0 X+ D) a5 l- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议4 [! e3 @1 x) w
1 i2 N0 W- O6 R' z3 c) T) M5 \( P
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
8 d1 ?! \! g6 `4 k6 h
2 Y6 N! c) R; W( C) Z附:ROM 16KB BANK编号
- H! G& [& Y* M. T! u( P) Y" k
' O. ~0 P* P4 m' K5 a b* R5 zROMf地址 BANK编号
- g y+ G& B7 O' s ~* y3 a1 n00010-0200F 0$ H6 _* a q* R6 G0 u% d6 Z/ O
02010-0400F 10 v( ?" _' x- P$ c1 y. h* ]
04010-0600F 2
- f# B( l6 l3 p% I9 Z7 ]4 [7 y06010-0800F 3
. J, R: w4 X& J N08010-0A00F 4
& a" A+ b$ O2 g0A010-0C00F 57 c6 N! T% l0 _# X. \; C
0C010-0E00F 64 S' b' {, e9 _& c8 I' p0 h
0E010-1000F 7
' x8 j; y% ^+ }7 M6 f10010-1200F 8
, ~9 a4 {" q. f) O! W12010-1400F 97 z2 r/ {4 E; ~
14010-1600F A/ M) F/ D; s, j) G% r, q) w
16010-1800F B! g! ?# o( u- J% z2 |5 Y! b1 J; ?
18010-1A00F C
s+ B( h# e9 ]2 H. [1A010-1C00F D( [3 O/ E9 R0 T) G2 L8 D! c2 W5 p
1C010-1E00F E
0 I. l9 g' b% t: p1E010-2000F F" f, k/ d7 I% r* Y" y
.
: l, _, n8 U9 { T* v2 g) t, t.
/ s: E+ C/ D* Y4 {* O: `& P7 [.
3 ]3 F" B8 \- N* C0 Q4 U+ V {- z; A9 {6 x$ {% O4 ]$ q
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
# B2 l- [- v0 p7 @, G
, ]; m! ~% ?# @1 Q$ x# b因为扩到144KB的话有的模拟器是不认,无法运行
' O5 }! U2 _5 L
* g% p. l4 D1 P* V为了全FC模拟器能兼容,所以只好扩容到256KB; _: D/ E- X7 C" j5 P& H* M7 S+ {
$ a; L; ?0 k: C H; c% r8 h
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机! c2 h; t. e3 S) R
1 j( h& W! d) |0 _4 H) l: N3 _
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|