签到天数: 1941 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
: e/ e7 J9 V+ }3 S
. b# F6 I, M# D修改内容:
/ w J# [* ~) T! ?, m# N1.P ROM由128KB扩容到256KB& c/ m4 Z- n. S/ r/ N. P
2.按START+B武器数量为991 l4 H. u7 i( j2 P! u
3.按START+A补血
& T# D. |8 ~1 a# u+ ~& S1 P1 B |: ]* N& ]2 R) W- g
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
& b' x0 _ R3 c
: ?* T. `( E H9 X5 e. b. m7 ]: _7 v从原单位滚蛋后就有时间来弄一下$ ]# K- \! `6 X4 O
2 {% g: h7 E: b$ q: p+ ]3 b9 Z2 G6 q, O
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚( x7 [/ M8 r: V! h6 C: m
e; o5 O6 G3 w2 U, U
关于如何切BANK:请看相关mapper资料吧# A8 a7 F. F& x9 j) i4 o$ H
" j" @4 M/ I2 I. n% \1 X8 a
说说我双截龙3 MPPPER 04如何切BANK:- 4 ], W2 d9 G- w& ?: f! I
- $xxxx
+ j& V$ }# j, E/ c - LDA #$07! v ?4 o5 Q2 T# p" y9 f
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
% F7 q# o6 x/ T; u0 P - LDA #$0E# U# L" c1 N! c* p, }; `( S* K: |
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF3 a+ y1 w+ I4 ?7 X E
- JMP $A000 ;跳转到$A000执行
$ c( Z+ g& f8 L; g0 E: `7 X - % D4 b8 ?1 y/ v
- $A000:2 J+ _ j0 ~1 p8 W
- .
- ~ M+ U8 O2 h, k( X: w1 N - .
' U7 C+ o- v' c: {# D: Z8 I1 h - .; ]" @. ~2 p- x" @
- .! T! _# R! S* Z% U a- I& G
- JMP $xxxx ;执行完自写的程式后跳回去
4 D: W' O0 f$ F7 P# ]: c8 d
* {" ^% E$ v4 H3 `0 N- $xxxx:% y# D( J, Z( S/ R1 f
- LDA #$07
/ _! ^) i6 g+ |9 v f0 S$ e- [ - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF& U1 `- h5 o; ]: R) W% X
- LDA #$0D
% r) S" x, ^7 {" `9 @, w - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
, `: N$ s% L$ u1 K) \% o5 C* v) z( _ - 7 O$ b: }2 `$ P* @
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
4 V2 Z; D' W$ m1 j0 J% k. a% B* I+ v* A: h9 |
; O7 b$ u8 }4 Z+ j/ T
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
' x2 m- z$ o' W i6 t: X; K# Z( b3 s
7 [- I/ H0 o4 K附:ROM 16KB BANK编号
) q! d2 j6 V; A, e' }
; u3 b; t0 @& tROMf地址 BANK编号1 [, {; n- q/ U* U* n. F- x; ?8 H/ h
00010-0200F 0: O" Z# W3 r; I. G
02010-0400F 1
' Q" \6 n" y/ c- V+ F8 g# O( T9 ]* d04010-0600F 2
; \1 ^* p1 \1 V% V* Q6 x) q# o06010-0800F 31 d2 l8 x# y- t q+ x
08010-0A00F 4
+ h# }6 @- E5 w( H& K0A010-0C00F 5
3 n {3 s% A" }) s* F0 V0C010-0E00F 6
, {- W. R3 u( _- H5 S0E010-1000F 7( |" j' B* g1 p; q- v Q" ^% u
10010-1200F 8$ Z& y3 i9 V. G: Q, B
12010-1400F 9
$ n: z# c" ~3 w14010-1600F A! ?8 z+ {9 Q2 s+ J! e
16010-1800F B
; g- _: R$ H- L. j18010-1A00F C5 @) ]. S0 q9 F$ U: p6 I. N r* k
1A010-1C00F D
* n& R) z! ]. J5 h1C010-1E00F E
& ? y/ ? X2 x/ D1 R4 H1E010-2000F F" `* Q K9 w8 b; r
.% k" i; Q# B- W; T% O+ z: }3 _- a- w: h
.
0 r! ]( a( L7 o0 r* [./ c+ M' C1 d6 V8 _
2 R0 D4 }6 T3 m9 s# g
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
$ s' G) n" e* i" K$ O. C
- |5 F) d9 G [+ ?0 E因为扩到144KB的话有的模拟器是不认,无法运行" ?# e9 v6 `, f5 [# S3 y
* Z# L, ~4 n- l& w' E% p, Q# y
为了全FC模拟器能兼容,所以只好扩容到256KB
0 I% F% j- h8 a+ J, o8 }, J
9 Z- |7 O0 k" O& H5 i, N$ p- O补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
4 {! p$ K- B. s& F8 c$ W( } ~# s' ~! {* S0 c4 w0 [
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|