签到天数: 1806 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
# L' S: t' O9 O7 `
& Z& p4 ] A3 s% t3 o修改内容:: @7 V/ ~" q" H% Q
1.P ROM由128KB扩容到256KB
3 L( x! A" n$ b# r: g3 B/ F2.按START+B武器数量为99' {. h! h' _! ?8 u0 S
3.按START+A补血6 A& \) ~( ~: ~& ?" I4 d, \
* W2 u( O. ?8 S$ k/ p这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来( {9 W4 n0 w0 V! u$ u' t
; j: F3 A7 L- g4 W9 ]
从原单位滚蛋后就有时间来弄一下
|4 E: X$ q1 r V
* w% \- J( N; X关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
. n1 N+ I: w+ b6 N& u0 A$ g
) S& N B) a, l" Q, L0 t7 @关于如何切BANK:请看相关mapper资料吧
7 D7 X: d Z+ J9 v: i# E; |% q
$ s- ?: C: E' G说说我双截龙3 MPPPER 04如何切BANK:
]4 H5 [+ l% F& u% u6 u- $xxxx. N. w! M' j1 q( l2 A
- LDA #$07+ B7 k- B1 Z, r
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF C% {0 o! `5 Q+ n& w$ c- Q% f) g! J
- LDA #$0E) n1 ^& \) `6 w$ _/ ~1 D9 |
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
9 w9 c9 G* F }" _ j9 B1 L0 P6 V - JMP $A000 ;跳转到$A000执行# n6 B! i9 j' a' y
4 w2 L# U1 k1 N$ B( J/ e) N- $A000:
$ Z, n% u2 a/ R% B - .6 y9 L, M, T! W0 u3 l
- .
" Z5 \* O3 M9 f* E" Q6 T' K" | - .4 ^# H2 }) Q/ H3 @6 o& v/ i$ V
- .6 z- w5 \9 V- k2 I. a
- JMP $xxxx ;执行完自写的程式后跳回去
% [5 R2 E# o% A) k# L; x - 4 s, c9 ^' S! y! Q9 Q- w0 M' }
- $xxxx:" e) @ ~7 Y% e1 V+ k
- LDA #$07
& K: G2 j$ _' A& r8 t# R - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF+ n/ Q1 E8 c0 x9 Z. D) J; Z0 q- M
- LDA #$0D# M) i, ^8 H P" x# ^
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
3 D) _& o, o5 [( S+ E5 Q
# r( S: V: B% k- v- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议) |$ B! H6 i2 O' n! L
- . O& N" @8 i5 f
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)3 l* _5 V0 f5 S( q. ~
0 s+ @6 }4 { C附:ROM 16KB BANK编号2 k+ h: k t5 b
- t" p G3 t/ R) x0 |
ROMf地址 BANK编号
& K6 W E1 M' ?: f" |6 y00010-0200F 0
) s9 u$ F# `8 I1 P' u# ]02010-0400F 1
# D( I, i; i! g: K04010-0600F 2& N) w- o. z& K7 v
06010-0800F 3
9 o8 K+ o' p; ~" X/ n7 _08010-0A00F 42 B. t9 C* z, X# s1 ^) t. v
0A010-0C00F 5
' X5 w' |2 E: V0C010-0E00F 6 F4 L/ C3 m$ z: ?
0E010-1000F 72 V: Z7 ?3 u! |5 f. {5 v2 n
10010-1200F 8" ]% H9 p( s" P* w* p% @( o2 n' Y
12010-1400F 9
5 c3 Z. D G' M$ A+ i! ~2 B14010-1600F A
9 f2 q( b3 ], m o- i2 r4 m& Z16010-1800F B
6 f. a) v, w- t1 v18010-1A00F C" k2 K+ v' v7 T
1A010-1C00F D& e3 e' v9 E; ?/ @. E0 _0 K
1C010-1E00F E c% B$ z3 E/ w: u; P- L. Z* ]
1E010-2000F F
9 G: _, A2 h* @$ {$ e% @+ `& D, f" F.. y) i9 {' U+ Q7 p! H
.7 P/ @, h7 d* H
.
' ?! H p0 D: q% H' T& K; Y
1 `/ ^) f3 z# r: S解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
3 U1 j% W6 I2 h. T
( M$ Z4 t. t; z9 y5 d; ~5 R因为扩到144KB的话有的模拟器是不认,无法运行0 h/ k1 ?+ M# I6 ]8 t8 k) \
0 @1 Z s+ b; `* ~! g1 ~( x) M
为了全FC模拟器能兼容,所以只好扩容到256KB- e! ?$ {' U! u u) n& m8 w
) [: h( Q: g. J" U补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机4 r5 l5 c& A$ m! y% x
& y7 |6 Z- s1 J a, }) u
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|