签到天数: 2193 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
( r* P, x/ ?: j
2 l8 E, K8 |# U @% w8 a) u修改内容:! I) g: `% _2 [& a7 J
1.P ROM由128KB扩容到256KB
G1 L. q: m3 O/ j* q3 h2.按START+B武器数量为99' _* _" f0 H- K$ O' w; I9 y
3.按START+A补血
# \6 m9 O' k$ C T1 x% X& ] b% g2 M @# y; v. @' ?! e
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来/ N& P6 p/ A' g
7 P' Q( d: e, k8 x* b0 Y: L% D1 Q从原单位滚蛋后就有时间来弄一下1 b: [! @ D" n( T9 P' Y
* y2 D6 _% a$ D+ S7 h% _关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚1 \7 e3 G6 K9 |/ L; j1 M
0 a( }) _. Z) I/ Z' x) f; J/ ]# R7 U2 B关于如何切BANK:请看相关mapper资料吧
# m& b& G( { d) D& n2 T4 @
0 e2 {& h& _% G6 o7 n7 ?说说我双截龙3 MPPPER 04如何切BANK:- & o% C1 v; V% }: e4 {& C6 @
- $xxxx% Y- P7 G- Q0 r
- LDA #$07
8 V- c3 d$ [) n3 B$ @, f- k7 U$ r - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
$ @$ ~/ k1 d' D8 H - LDA #$0E
- m( _" p/ h/ S& `! p - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
% | E/ g# w& U1 m8 x: i3 F, Z - JMP $A000 ;跳转到$A000执行
" v' W1 T( D5 C2 R
/ W; ~2 L" Y. y, u8 J( W, Z) o- $A000:
' N, `/ X# O' z/ q d - .
9 g' p8 ?8 x' ?% l- y - .
8 B6 U, c7 ]2 H+ O2 n - .
8 |" Q" Y5 G+ q) o6 f2 p6 r1 E - .2 O: D0 ^8 U: r# X) t* N% b
- JMP $xxxx ;执行完自写的程式后跳回去7 s% f) Y& Y* S4 S4 C/ n* {; ]
. V) m6 Q) V/ c3 [) S [1 B% i5 \- $xxxx:
: Z& b# L2 Z7 Z( I7 F+ A - LDA #$07
0 N. G" H( \9 O - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF$ p. Y6 C! Q; \1 z
- LDA #$0D
. I) L1 ~* o; }5 y) n - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF+ v5 N' M c- @, O
9 _, q+ c2 B+ J# a, U! ^3 e( m! R- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议: c5 [& ?& R/ J7 B
4 ^+ D* L; m; @, O% W
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
) c6 V/ _) R. K G' U/ f8 u* l. i+ [" K/ G5 n
附:ROM 16KB BANK编号
( F4 u; A) r8 g2 A1 W0 A
6 h1 f0 D# n! TROMf地址 BANK编号
% v+ f' `& W6 K6 {$ s. G00010-0200F 0
: o$ ~3 t5 c$ w4 X02010-0400F 1
8 x- s" a9 n7 P y/ o* s* u04010-0600F 2, g, _7 [ H5 F/ B" z% {$ F; \" Z
06010-0800F 3& E' j8 A0 ]! [( \3 l X) g/ O( z
08010-0A00F 4( Z4 t2 b" ^% {
0A010-0C00F 5
1 h0 Z" l; Z5 }/ k0C010-0E00F 69 t* W$ Y$ O9 `. P: d% }- a
0E010-1000F 7. y6 d2 L% g5 ^' o4 {
10010-1200F 8
1 _. R! i3 g& ^; }9 l2 Q12010-1400F 9
2 E5 S/ W6 r8 A" h& K$ f Z14010-1600F A
j s' _ O1 k6 u16010-1800F B
' _2 @0 T, x4 y: [5 ?: q8 p% m18010-1A00F C
% r& U( g, \/ ?' ]6 \: j1A010-1C00F D
; q% u$ A% o+ g; b: @1C010-1E00F E
: p8 c3 m" q. f1 j. T/ ^' r1E010-2000F F
. v, u& q2 }9 V' _$ P.
S: `0 u' _: \7 U6 t6 i3 T5 [." v2 R0 P3 w4 h: P/ r
.( _8 W& i' y# S l$ U" I: }0 | @
, ]% Y( k/ p) x
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
) w( h P% J: f' w! d' i
: K3 G$ D5 E& B. _5 T2 X因为扩到144KB的话有的模拟器是不认,无法运行: @/ B p% S& H- M8 l( }" j
- f0 L* `( L/ D5 f! A- E% `. A
为了全FC模拟器能兼容,所以只好扩容到256KB' g! z. p* A2 d9 G
, {$ b6 F1 Z6 F3 b补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机+ q0 d/ T' A* J( J2 V. G8 \! ?
9 p% K- N1 \1 K: d- o) }% J1 A- V* j
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|