签到天数: 1954 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
2 p6 V4 U) h* x D6 `' J, ~7 p3 N5 j, p7 A
修改内容:6 Y" b( U, {+ O6 v
1.P ROM由128KB扩容到256KB: R( [6 c/ L( }4 z* w
2.按START+B武器数量为99
3 D! A9 d& O' {6 {3.按START+A补血
# @" s' w3 A! v/ N" f3 U3 w/ }' d% d( _5 [
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
/ H; `% @! R2 C+ c$ E* s9 O6 R# Y! F v
从原单位滚蛋后就有时间来弄一下' Q: s$ ?# x% m3 e
. N4 V0 ]" k) U4 C! T, ?8 [
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚9 c0 a4 e' ] V2 ^
. N/ [2 b" |/ r0 l, y4 s
关于如何切BANK:请看相关mapper资料吧( e' Z) R; ^8 U
p) V1 o0 M, j# B说说我双截龙3 MPPPER 04如何切BANK:- 5 K1 `# V, t$ E1 \' z v9 Y2 O
- $xxxx
9 c9 c }, N: w+ b; E6 G, y - LDA #$07
, W, m) n6 K$ ]- _, Z( r1 h* E" P - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF- g7 _8 G0 } D' {9 F4 I
- LDA #$0E
2 o. [: `( _- W+ Q5 } - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
8 |- c6 \ i4 I% Y. }/ J - JMP $A000 ;跳转到$A000执行8 C/ h' G8 d: @7 x( G( l
# B% a, G: W+ O6 \4 i" H( k- $A000:' o9 _" e1 T) m2 f+ D5 S& c% Z- w$ T
- .
' r% F* o) w; ~' A8 W* A - .
/ X2 a: l5 u$ u% F - .9 m* \1 ~- I" v; n9 b
- .
/ \& a# ]6 e# A+ P' @- l9 d8 O - JMP $xxxx ;执行完自写的程式后跳回去
|- O2 ], l5 K; {+ D% z/ [
. j7 ]. [9 n* V+ P, T% s- V+ P- L- $xxxx:
% K ^4 b8 H6 _, H5 } - LDA #$078 {5 L) c+ b2 K6 w( a& {
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
! U2 T- w9 X2 X2 @9 \ - LDA #$0D& u% Q% D- u$ v7 ?; k* C ^
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
$ x; m' F$ a8 A( W' V9 B' C% t, M6 d - ; y# |6 D+ p: t5 p% q2 k! @
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议5 `4 ~2 b! |2 E8 W9 y* ?. S
- ( T8 C/ J6 N( _0 |( n* |% V
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
. a$ f/ s. }5 I* [8 V+ S6 ^
! W; F4 d- U, C附:ROM 16KB BANK编号' @! v0 n& }$ T- y$ w- `
+ j" s; g, ^' w, J9 o! K4 v
ROMf地址 BANK编号
1 V' n" u5 o0 G4 j00010-0200F 0' ~8 I d7 [' `7 @" W8 q2 z7 H
02010-0400F 1 y( ?5 e9 G, D' x
04010-0600F 2
0 G2 P, ~3 o0 T N5 T06010-0800F 36 Y$ q) E8 e0 ?) ?5 c4 U
08010-0A00F 4$ l* J! Q# Y9 O5 R' D0 D2 k
0A010-0C00F 5
\$ D5 `+ V: j0C010-0E00F 6
6 |: j$ P3 P" Q$ P0E010-1000F 7$ E: U9 @2 Z* v, j
10010-1200F 8
V2 S5 I! e0 U' I4 }7 n+ @8 K12010-1400F 95 L4 `9 d9 g' g) ]2 |# e
14010-1600F A% U5 k' s3 ~! V; o& @
16010-1800F B
2 d; o% I: \; [, q18010-1A00F C w5 @0 H" U# u+ h
1A010-1C00F D
. o+ ^9 O* M6 C. p: I% V! R1C010-1E00F E
! j. W! @, p* }1E010-2000F F% b3 j( B& x+ J& ~
.8 `. p( I2 h% B# }
.
# a- g9 x. z: h0 q.- E" B' E" @ w
; d( n& A3 n2 M" A* a% y# x7 t解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?% M1 Z# G9 U8 E/ f3 p( ]
/ f' Q3 Q9 s7 k# g' C/ d ?% B因为扩到144KB的话有的模拟器是不认,无法运行7 ]) ]' U3 s( \0 g$ P/ l4 _0 n
$ L* S( W s, L为了全FC模拟器能兼容,所以只好扩容到256KB
f. |' y* _' s! E$ N% j7 w& a- Y1 g. a' f4 _* c0 E
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
9 H1 B! j. `% G# X5 W, b, d# n( ~( b
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|