签到天数: 1915 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
8 J0 U8 Z( u+ k+ Y! j
6 H C5 [0 n0 l; C修改内容:/ B. ~3 X3 _4 c8 ~
1.P ROM由128KB扩容到256KB
, H; M. s; _' @* w2.按START+B武器数量为99" G; |) H6 W1 m% X, Q! P' C4 U
3.按START+A补血5 m5 U* m( _7 Q, c' L* A! K) Q
t( L2 Q4 F! D' z! S/ s7 {, W2 o" T% q7 h
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
$ a/ J" I e; E; e' u2 y/ T: M8 ?0 C5 Q
从原单位滚蛋后就有时间来弄一下
' H8 r3 {0 M# ~0 U/ b6 F
' p' S. o! w$ w( \ U8 Q6 X关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
8 ^; V0 }8 B, V% a1 m! X
+ u- {' \2 j4 x; m1 Y关于如何切BANK:请看相关mapper资料吧4 J V x' S% ?) c- j" |$ q
1 ? J- d% M7 D Z: u. t8 X$ R说说我双截龙3 MPPPER 04如何切BANK:
5 h7 m- t+ Z6 `6 W+ S2 ~- $xxxx0 l$ z4 f& \5 A4 E8 U* s; l. D
- LDA #$07/ Y& l) E6 Y* D, M
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
6 ^2 p* o% f: G5 Z5 V - LDA #$0E
& k" v7 w/ j0 o" g& Z/ E! H8 E - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF: `5 |% T3 a* `4 n) c2 q" N
- JMP $A000 ;跳转到$A000执行+ u5 p) C/ U& \# h) }
- % O' P& x' W; R8 h4 B& I% o
- $A000:
* o' h5 B+ C) E" B3 g - .
3 r* `5 \6 C9 c/ e) i. @ m - .4 h( ]* e! L. g, m) ]6 ~
- .& L2 [. B# K s! b0 ~0 @
- .+ Y+ C' t" q; @
- JMP $xxxx ;执行完自写的程式后跳回去
/ F& `3 C* i1 @+ g( V5 [1 o - ; p1 B1 C" g* { k. Y' z6 z
- $xxxx:8 X: R7 S# ?3 I) S d, W
- LDA #$07
9 e' w, H: Y5 l6 k W5 J - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
7 a' f# e- c, N \0 y$ Z+ m) b5 N - LDA #$0D) v3 U* Y! W2 ?' ^- ]# |3 H# v+ G
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
. ]9 ^/ l/ A7 L9 ]) S
0 O; J" K4 C# f7 e- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议9 h% d% {. I0 s( x' b5 T) k$ j. E' \
- 5 X% a, F% W: S( V4 @* G
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)# x+ S, [# a g+ f
$ E7 m- u$ c2 Z$ x. E V; D7 g
附:ROM 16KB BANK编号' B6 s$ t( }" h. Y5 w8 z: ~2 m
r, F; @5 j; p' i% wROMf地址 BANK编号
- O9 d: v/ J' t/ U00010-0200F 0* n1 M' R) h8 V( q& ?& ~9 e; B: T
02010-0400F 14 e2 r0 g; M: T- w
04010-0600F 2
4 \8 m- t( P- H3 \) p$ e% k' `06010-0800F 32 p1 M# P+ l# P2 t6 t# u
08010-0A00F 4' g! r9 u- V7 o' t. }& [
0A010-0C00F 5' l- t0 ^) ?) v/ d0 g
0C010-0E00F 6
# F' q+ g( X/ _" D/ k E' h3 n+ S; R0E010-1000F 7/ i" P% P" p, N
10010-1200F 87 O6 W6 M+ Z d3 P
12010-1400F 9
0 ?8 J& ?1 n0 i5 ?' N0 d' b14010-1600F A. A+ c; a3 B6 e, o7 V$ Q
16010-1800F B2 W: I8 r L& M" ^
18010-1A00F C2 l; `& S* }! v+ g& u" U
1A010-1C00F D7 [# c" ?+ a1 l
1C010-1E00F E
7 R X* R9 \. w$ R1E010-2000F F# s" m5 d8 R4 f& t* d* ?* X
., z! [9 |/ \/ q5 y3 {. V8 ~8 C: y; D
.9 A9 I& B. M: Z5 k; l# b4 L
.. J {) _/ [: b5 Y( ~2 Z
* _: O: f4 S" \ D: Y8 n解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?# L; |) y( E2 o2 h! l
/ e( p. l4 U- e: j. t
因为扩到144KB的话有的模拟器是不认,无法运行. ]) n" j0 ^) P+ U
0 ~% d f" Y4 E: Q( o$ ]1 A
为了全FC模拟器能兼容,所以只好扩容到256KB( b5 p( b# }1 h$ I( z+ G: u4 u
! X# b( I8 Z7 ]& j. B7 S. w
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机1 W* \% t. Z7 B0 _
! U) v% E% `0 h; _
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|