签到天数: 2028 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。+ ^6 j; e3 p( H, F n
; A. V3 N. |- {, v3 G) i3 E
修改内容:2 w2 [9 j* ]/ n! G' G
1.P ROM由128KB扩容到256KB
. j& ^$ C2 t! U$ z1 q0 B$ B: u2.按START+B武器数量为99' f/ J- a* f' ~1 f* T3 Y* O2 \
3.按START+A补血) W6 S& U% W' A% t# ~ V0 F* g6 g: r
! D2 k( l- H E; Q& @; O( r这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来. Z3 o2 ^5 H @* G4 `% B/ u
+ x+ k. e9 B" H从原单位滚蛋后就有时间来弄一下7 _+ |% j4 q3 E: U1 O
7 S; o8 K* G) ~; p3 e% U& y关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚1 y/ P; Z$ B. P2 \
1 w9 Y4 F/ Z P' ^0 E6 i8 j关于如何切BANK:请看相关mapper资料吧
0 `5 A9 D2 |* L& y4 z3 c F' U g0 O/ S6 u/ J3 \0 w, t* }
说说我双截龙3 MPPPER 04如何切BANK:- . c6 n# _: { v: n4 D: c) X
- $xxxx. s# q& F/ Z- S+ r: c: C/ I
- LDA #$07
0 {; A3 s S: L0 C7 p! @) [$ Y - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF% j' L0 n" @5 S/ t
- LDA #$0E( w' y4 \; J( m" }5 G ?8 Z
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
' P2 ~! N& c; r; K$ o - JMP $A000 ;跳转到$A000执行
1 m3 T4 u' q- t, V- T - 1 t( N: c( W) a
- $A000:
6 D% A. w1 ~- ?: g) }8 C; ^; J. ~ - .
# y7 b- u+ s' Z* Q2 J7 x - .+ L% G5 v0 _1 ]. ^
- .$ x7 M7 Y( Z# i& P
- .0 _" j9 L. M$ ~; p6 K
- JMP $xxxx ;执行完自写的程式后跳回去4 g' O0 v( \/ r
- % o+ K ]/ ]( v0 v1 ~; f: p% F# n
- $xxxx:8 d9 n: H2 n7 H# K+ W/ w% G9 q
- LDA #$07
9 J/ n/ y; C/ M+ x6 F0 w6 u - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
y# z% {5 D, H' w2 F - LDA #$0D
# U% Z& `. X g - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
7 Q2 V1 j& I- R/ Y% O$ `' E - 1 X0 n* ]; O+ V
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
, g9 X+ F* v n' r1 c
% I) Q. n$ W/ ^
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
/ F7 }9 C$ C" \7 H0 {' c# L4 Q! v# G- Q9 y+ [* H
附:ROM 16KB BANK编号- g7 C5 h( u/ ?+ [( e" I6 }
) o3 t0 a6 g3 r! n( ?ROMf地址 BANK编号- f& T% D4 x$ H+ h0 u9 {
00010-0200F 0' G& j% Y5 @/ L! c- u
02010-0400F 1
3 _9 G; [ t- C+ k3 M04010-0600F 2
4 x' r- h# x( V+ q' I! ^06010-0800F 3# b4 K4 k. C t# o1 @/ ?
08010-0A00F 4
: [/ Y* ?# I0 J/ m8 g$ W' x0A010-0C00F 5% @# z5 b3 ?) i9 n4 R
0C010-0E00F 6* |0 r: ?/ b3 _8 }
0E010-1000F 7- u) V) e" B7 k. {4 U) {8 N) I4 z! [
10010-1200F 8
( S) t R9 R' p; Y12010-1400F 9) w7 ]" l- `; b0 I8 {
14010-1600F A2 p( j( @' X# \ Z# {" [
16010-1800F B5 f% q% l7 m, ]9 O- G' \3 s% p
18010-1A00F C
7 a$ ~; k0 Q& N( M- w4 U- R" |/ O1A010-1C00F D
# e" G! v) C Q+ `1C010-1E00F E K, u3 c* L1 R
1E010-2000F F* M7 \7 V) a. z) P
.; i/ q u/ O& Q' Z) |
.
7 {" b3 c! X, E- N.
o7 v6 `3 A7 h' u8 o0 G' C
5 G4 R6 E3 U& L( G! Q: V* J b解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
; `0 n+ q2 P2 q3 \( M# R9 U! C+ b6 J$ @; C* I# F/ z- x
因为扩到144KB的话有的模拟器是不认,无法运行2 j% X" u3 u0 t- J5 K7 b$ v6 Y
7 H' X/ Y( m0 K" u z# v0 ~
为了全FC模拟器能兼容,所以只好扩容到256KB& M [2 T# U( E9 t* E/ v
& G D! d5 t% j( u- a补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机/ q& e ~+ F O
4 s3 a. b6 z& G3 B' E' y3 B5 N* [1 p |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|