签到天数: 1968 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。" ^) d6 _& n( x
+ U# i6 O4 V5 I! f2 q
修改内容:
5 W3 \/ E+ u4 s4 w( R1.P ROM由128KB扩容到256KB
& s. S8 W% ^- x5 W+ y2.按START+B武器数量为99
# _8 C; z- g& p6 u' K+ P3.按START+A补血8 J* ]2 M v& m* o9 S
+ v4 s' a0 a& B- w8 F% e9 B ?这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
7 m% J4 k( _- g/ ?% ~" o8 U7 W! Z; }6 @) c: J% z
从原单位滚蛋后就有时间来弄一下
2 R8 C& l: Z. {
- o0 n& n" E( o. ^关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚" `8 P) r* t5 ~" v! u8 r" D
+ `0 w6 n1 g0 T$ \7 l- J关于如何切BANK:请看相关mapper资料吧
3 i- i, f: j L" d% [4 e+ R! L V
1 H" X: B$ n- w) K w9 n说说我双截龙3 MPPPER 04如何切BANK:- & B+ y8 _1 M; }, p- l! s
- $xxxx+ d$ I+ g+ I" e+ K
- LDA #$07) J* r* a& E7 o% w
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF4 }. b- U1 V) t. P- O. }: u! K4 ^
- LDA #$0E
' j0 l; k- c- @$ Y! f- f. v - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
$ j6 _. o- H: s k! n4 z- v* A - JMP $A000 ;跳转到$A000执行
" B2 I1 a2 `4 a! W4 Y - 9 w; M/ W, I( g, A7 w+ H
- $A000:
4 {0 ?6 }0 `4 T* t; G - .# U" T3 H2 j5 F; Y
- .6 Z$ z9 g+ `+ @+ y1 s
- ./ k( i t6 o& i9 {. B$ z, k0 ^
- .8 `( c1 F- m5 ?- R e
- JMP $xxxx ;执行完自写的程式后跳回去
. y% c6 c: k! c: K
7 v6 } Y* U" z' z2 r- $xxxx:- V7 H9 I1 E1 ?% k! I2 ]9 j9 l
- LDA #$071 l5 ?" l/ W$ e+ x; x
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
2 I- c2 h; c; y - LDA #$0D
& G1 U) C- M6 S7 j# N! f - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
, H4 m3 m- T3 T8 M- o - % J9 c+ K& O9 \9 ~
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
" \. }% u5 y3 x; T; P+ a; y" ?2 p
3 {4 q0 L5 m; i9 F- R$ K
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式), W# ^6 |6 V2 y' T6 e3 q+ P P$ ^
* N% N. j, W \6 Q! O1 D$ K附:ROM 16KB BANK编号7 I+ H N) w9 J6 g$ Q
: |& T- X. e- Q6 e
ROMf地址 BANK编号1 k- J! x9 p: v/ n# ~5 P
00010-0200F 0- Y2 ^) Q. g7 w7 R% [
02010-0400F 1. Q& f6 w4 v' O
04010-0600F 2
( ?# \, G5 L$ \, K8 i06010-0800F 3* M% ^6 B( V2 D" R
08010-0A00F 42 Q9 u. N& k0 s$ P* X+ S! C- E
0A010-0C00F 5% u+ Q7 x8 ^* w
0C010-0E00F 6
" K3 x0 E0 Z, A4 T' d @0E010-1000F 7
: } `2 b0 x5 n3 V" e. y$ q10010-1200F 8
/ s$ A4 U4 |# D- @" F5 G5 y12010-1400F 9& s! g2 |" ]0 c; c$ R* ?
14010-1600F A
: @- R | c' t16010-1800F B0 R; z1 T' w$ Z6 G3 D( v0 R$ c6 c
18010-1A00F C X3 |# ? ]- V) g$ c w
1A010-1C00F D
8 o; o K' t" N& v! A1C010-1E00F E
0 R3 c, {5 v ^" y; X1E010-2000F F
4 M7 l8 \ O' a+ K9 D4 P1 ?.
9 f* {3 m2 \$ u8 z9 \.
* e; ^7 v, F2 q.% a. g6 A4 f: ^4 M$ k
( B$ p4 m4 c0 e) Y: H2 l- b7 p
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
& k8 L# f$ t9 ~ L2 m7 o! C, T3 P9 @3 x/ m; ~* Z9 ~6 L# ~+ o9 {* ^/ H: @
因为扩到144KB的话有的模拟器是不认,无法运行6 v% W7 b; u+ R: m* h5 N+ S
# ]! r6 m1 M- H
为了全FC模拟器能兼容,所以只好扩容到256KB
% n! Q) x* h1 D' k9 i* d& Y/ n7 p$ b$ B4 E
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机7 E1 E; \, H. B
1 ]3 c1 s7 m1 P2 d+ g- E* o8 {; o |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|