签到天数: 1935 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。! B L3 T5 _+ {4 P, _
; [% w% i# i/ ?7 @6 N7 m修改内容:
' d) z. V$ B& u/ E$ ?0 q; O( f1.P ROM由128KB扩容到256KB9 P! F) W A/ f6 f+ @6 J- X
2.按START+B武器数量为994 Z8 _" r2 F8 a
3.按START+A补血; E4 Z9 a. [3 Q' X. j$ c
4 x; L9 _7 P/ s/ K, ~
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来$ W% `$ L$ M. h- }" p& e* W+ x# W
: c" I3 R- X6 |" q* R6 z, i8 A
从原单位滚蛋后就有时间来弄一下
. a+ ^: h; y, s! A8 n( R7 f( u
$ @% r* N: D( S8 ?关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
8 A& a) p- N6 g
) Q7 @* k7 U- {8 K0 W4 x$ V关于如何切BANK:请看相关mapper资料吧
+ D- l2 I# \; M o9 w6 H- y/ U4 Z$ Z. y+ e4 g& J
说说我双截龙3 MPPPER 04如何切BANK:
3 ^3 {' x: j) U, V% Q- $xxxx5 P4 Y0 C, g$ Q6 {0 u' V3 M
- LDA #$07$ `3 Q0 O7 I5 @3 c s1 t# H
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
8 R- O" n; ]1 a' e& x - LDA #$0E' q0 f3 }, O5 M
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF. w5 B! K- R o* L7 {6 D
- JMP $A000 ;跳转到$A000执行, {' e0 l! C; B8 M$ z/ V
5 g/ ?7 k, T6 I' V- $A000:( `5 `8 ?1 W3 ~7 p$ b: h
- .
1 h; r J1 t: ^% U) X - .. `2 s. D$ }$ X) u' Y
- .+ N" q; {- u2 z1 w
- .
% [% w3 g) \# e7 G {7 F - JMP $xxxx ;执行完自写的程式后跳回去8 a+ U7 z8 W `7 F5 N+ k
0 Y4 ?. J& F" T' x* c- $xxxx:
E" f: z8 v9 o1 c# F6 a& D - LDA #$07 Z! E7 s. q5 N; Q; l
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
E0 `+ m" C- L - LDA #$0D# O( i( c) K9 e7 u. i" G& j8 W! ~" ]
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
* }2 P: E- r5 ?1 u+ I - , `& y8 d. w' m7 Q+ y6 J, P, V4 g
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议4 n3 ]7 U% S8 W, d
- . y3 |# j f# u7 k, C+ |
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)3 {$ S0 v! W/ r; T ~" }# B
' i8 W P; ~7 X; a; s4 D附:ROM 16KB BANK编号
& q1 q; U/ t% d3 s" K
' X# G" g0 ^- D: x+ s# q- a3 `1 NROMf地址 BANK编号5 x/ k* W- K; s# M6 y
00010-0200F 0# ?, s! B- c* E; u V
02010-0400F 1
6 d6 `' O4 W* t1 r4 @! u! S, T04010-0600F 2# T/ C* S- B: o" F4 q
06010-0800F 3
: Z. C" I# T* R08010-0A00F 4
+ T5 I: m, s7 V+ J Q0A010-0C00F 5
. u3 Z. X3 p+ n6 c0C010-0E00F 6' h. B) ?/ [* R- V1 ]+ }5 q: c
0E010-1000F 7
7 a+ f& _5 J. f: ~2 a10010-1200F 8
- J+ Q* X$ a* X: o( I12010-1400F 9
5 W, Y# j) [ N14010-1600F A
# p# D! ~; W. G9 \( q) |% n# \16010-1800F B
2 b. @" l y F; o, U7 a18010-1A00F C4 J, |* p/ X4 o/ z! U* ]/ ?
1A010-1C00F D8 ?+ p; K B$ I+ }+ ]- o" y. d
1C010-1E00F E
+ H, }! |) C" j. T* q3 h1E010-2000F F) J) M, ~! q- o# g' {; b
.
2 M, r4 y4 L& @.$ g' {9 G+ ?" o2 }" O; N8 q4 m! ?/ O
.
- I i* Z4 F% R1 O* L7 _
* d: x+ r# Y8 ]( C解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
& g+ P; T9 H: X Z9 H8 y& Y0 D: b. Y- F7 g3 w# W
因为扩到144KB的话有的模拟器是不认,无法运行
Y: V" R" ]) e
! a, H: { S8 h6 Y, H: \为了全FC模拟器能兼容,所以只好扩容到256KB- ~# v2 ~4 ?1 N3 a2 P2 r
$ V: u9 L# a# Y# b$ f& ^8 n9 i, q, G补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
6 B% U v# C* b y8 {4 z
3 Y3 W3 o5 V* p |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|