签到天数: 2211 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
) m& c" F5 Z- n- ^" u
3 d$ V* @% N5 ~! I修改内容:' |1 f9 @3 D8 Q( T
1.P ROM由128KB扩容到256KB
. o- R# H7 t Z& v f2.按START+B武器数量为99
& `3 L3 n7 H' O: w' x+ `5 T9 w& S G3.按START+A补血; m% r; g1 C3 L4 Q! K4 g
9 G: ^; I" {% K% B! d) T这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
2 m- {4 {- Q( L9 I0 a5 f; T6 a F2 B2 }$ y
从原单位滚蛋后就有时间来弄一下& f! I1 H8 o5 M
7 Z. ~1 m1 T6 e, K$ k关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
2 E/ r z" C! J* F& @: O
( i% Z7 O3 i+ _关于如何切BANK:请看相关mapper资料吧, O h$ ?% B0 E0 l" W
5 |# D+ l0 o x8 B7 T4 J# Y说说我双截龙3 MPPPER 04如何切BANK:- ) P$ }! X; ]9 `7 S* N- C3 a; b2 w- W
- $xxxx- K& n! X! y! j4 }6 q: V4 h9 T& t
- LDA #$079 I; i' l( z% G$ p' T5 P
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
/ ] G! K. I7 ]0 F1 _ - LDA #$0E+ C" s9 F3 Y! {$ P
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
' Z5 }8 d/ c+ E# [5 q9 i. z - JMP $A000 ;跳转到$A000执行4 d) c/ s3 }3 W8 k1 n. y; r4 V% A/ y! ~$ h
/ s* B; l( c" J0 m- $A000:
0 I( W$ Y4 }) m2 D T - .
: M6 B/ r a) t. Z: d - ./ G; `! ?$ R4 ^" ?) R% `
- .& F, P+ ^7 E4 j3 [ ^) }' m
- .
, f3 x8 {7 T* A- H - JMP $xxxx ;执行完自写的程式后跳回去3 B' G5 {7 `5 V3 U& h+ D
- + Q# y3 l1 t3 f8 u6 b$ J+ M2 H2 _
- $xxxx:+ b r# p2 n* D
- LDA #$07
( e6 E* w% @5 l( [ - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
% f* f5 E* u8 J: \ - LDA #$0D
2 f& ^3 H" A+ [ - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF$ i1 s" c- _' R! W U
- 5 D" z9 k; v Q- H* \$ [: _; S
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议+ c s+ N9 g" _; K+ W
- 0 w8 h- J! z. c# v
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
4 J7 X% u* `4 P8 k' E4 L/ @& c
r) ]8 H1 H; w$ F: i附:ROM 16KB BANK编号
( b. Y: o% P+ X% U+ h7 _. ?) y$ y( b7 H5 H
ROMf地址 BANK编号
( [9 D% q* O, Q6 F+ z/ Z00010-0200F 0
( Z1 O1 _! f* ]9 l02010-0400F 19 C5 ?4 A$ c3 g& |
04010-0600F 2
- z% A. f- \2 D, Y7 `8 O* e06010-0800F 3& n. x" t$ d; b" \* U
08010-0A00F 4
2 `7 K+ G& o+ c- j T2 R* }0A010-0C00F 5
# f5 E) k2 p$ {. u: M- O2 ^0C010-0E00F 6+ t2 H2 [9 g% Y' e% u( W; g
0E010-1000F 7/ g5 b) i G! q- r& Y' ?& C0 ]! p
10010-1200F 8; R1 l, f) [/ o" R0 I- p, Q1 m
12010-1400F 9% z0 X( E* b9 @# Q
14010-1600F A2 m6 z' {/ o1 \' c, p
16010-1800F B; R' Z5 w+ [% U4 g6 c$ G- v+ R. A3 P) J
18010-1A00F C
8 [" o* e' y1 |1A010-1C00F D& x) t6 s+ F/ z4 a
1C010-1E00F E" a2 o5 c- T; Y
1E010-2000F F8 Q9 ?, F! O3 a& e$ _' u: O
.
0 T7 l$ ?- Z N k.9 ^' R% u5 C9 M
.+ ?6 d2 J/ y# w
( p/ Y4 N9 \0 @, B# F/ J" ~0 G1 {
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB? y" X- X2 J: I+ \4 {# P
& ^0 I+ C+ ^6 x& n1 p因为扩到144KB的话有的模拟器是不认,无法运行
; G8 o4 ~ F2 T) ^% j4 O
# X# u1 E8 ^+ J L为了全FC模拟器能兼容,所以只好扩容到256KB
% Y) c. C+ k0 Q: [; Z
1 E% q) j- l: s6 w! C. K: c4 _补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
" _% W+ D i& Q" _' T% R/ x' I* H% R1 p" o; E- x
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|