签到天数: 1895 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
, z0 X) k6 v) U: ]4 R* @0 D# O
修改内容:
* b! q7 k6 S0 Z/ S. q1.P ROM由128KB扩容到256KB- D* Q5 Y! j5 ] ~3 B0 m- s
2.按START+B武器数量为99
& E" [0 @& G; }' V6 s$ p, C" K3.按START+A补血7 \1 ?* L B* s! }
+ O. K1 ?$ E* X7 @7 E这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
/ P; c# }5 p+ @4 S$ [7 @9 O: e8 h; Z) N, t* J5 D1 O
从原单位滚蛋后就有时间来弄一下# M/ T/ e9 g0 \' O) a7 I
+ a, @$ i1 s+ o f8 l关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
1 Q! q, V8 G+ F( z0 n# M1 s% u6 V
关于如何切BANK:请看相关mapper资料吧
. a$ B6 }, y9 G
5 w! G& v* J/ \1 d( S说说我双截龙3 MPPPER 04如何切BANK:
+ @1 l* O( Y. b# |% I4 L- $xxxx7 T" [7 t; ~, ?6 M B
- LDA #$07
7 y9 T" m3 [. k7 `$ K - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
' ~/ A! p" T. r. @$ j; H3 | - LDA #$0E; t& x& A3 Q* ^& ]9 ~
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF9 F/ ^0 R' }) j
- JMP $A000 ;跳转到$A000执行
3 c' Z0 H7 A9 B5 v# D6 H
* Z! h. Y4 l6 h+ M( W- $A000:! q/ t; J3 D3 T. f8 E- B
- ." F( o: T0 C4 q% q; k
- .
8 h! S! Y( L# h6 _8 C) b" V/ s - .9 F0 n) k- Z; C- T K5 Z. e9 i
- .
' j: \4 A: ^3 _7 z, W+ U# @# K - JMP $xxxx ;执行完自写的程式后跳回去. p( H4 _/ S* J+ ]$ ]) c) D: d; _
- 9 ]. M1 D: B" j3 g' P8 R
- $xxxx:; R* U3 ^& K, `; b
- LDA #$07- g9 ?& C1 y; h! w) H4 W
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
! m3 Y% z; k+ m/ ^- _8 r - LDA #$0D
9 i4 h: j/ s( A% D7 u9 k( q - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF R) ^$ V3 J5 z* ^) F, E
+ t' h3 V/ q' N, L" y- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
) N; v4 V; R! a+ P, z2 {
1 o. z. z* G! F2 _4 C6 H" F1 O
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式); G) W! V" x9 n7 l) N6 t& D1 `' x9 ?
3 k- `! {% T8 n7 g" B附:ROM 16KB BANK编号, w7 n" B. b2 U* C9 n
/ {; D3 q+ l8 @: H2 b. O5 S7 `
ROMf地址 BANK编号
i: R- {4 `$ M2 O) k1 z00010-0200F 0: \/ C6 j, G N( c8 r9 L: Z
02010-0400F 1( U3 M: M/ }$ G% v* B! O4 ?
04010-0600F 2
/ l4 ^& m# }, Z1 Y0 h. G06010-0800F 3
5 }: Y2 Q* l7 ~, e# ?2 h08010-0A00F 4% n) T) h! W1 J9 _- E
0A010-0C00F 5
/ t0 Z. z. m0 J% `3 l2 N0C010-0E00F 6
/ _, }" m2 D; F* ^* r0E010-1000F 7: C- ^4 }& k( u& k
10010-1200F 8
2 R4 L8 w+ P5 z$ B. G12010-1400F 9
: O8 W, V( s! ?! G5 D14010-1600F A
! i. h6 ?& o0 k4 K16010-1800F B G4 J# w$ t8 v9 T& f* R& a
18010-1A00F C
6 M- }6 { q" B4 |8 s8 d8 b) d6 @$ u1A010-1C00F D
# ~: D" t# J3 C# ~3 w, x1C010-1E00F E
|( _+ ^8 H$ r6 y; |# J: x# x1E010-2000F F
: \8 n* @9 Y: u' a0 N7 k.
' V8 I" S% ^* ~5 E; A.# }0 {- o6 D2 V: K' }; T
.* f7 L; n4 V) R! y, Y& ^5 G
' N! E, a5 L$ L* i解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
1 x1 L2 y! X# y. A8 r5 C, h' C+ F$ j6 } a, N9 E* ^" R/ c
因为扩到144KB的话有的模拟器是不认,无法运行
) ?5 g0 t2 \3 \ F5 X* \9 ^: ^# w+ O' a
, ]4 }- U- G( x/ G为了全FC模拟器能兼容,所以只好扩容到256KB9 w5 F0 t, N$ i( g# p5 B/ S
9 m" j: \" {1 L8 `" s补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机1 z; m+ l1 F: {, f1 p/ v- |
+ }4 z. h0 U% k: W) H4 R& \9 k |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|