签到天数: 1976 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
6 a3 E4 b: |! _- `/ J2 I0 w, \; B; t
/ X. C3 T5 R/ ]/ N2 C修改内容:
s' ~5 U" m6 E) Z: w/ I7 v1.P ROM由128KB扩容到256KB
) f y% ^: W3 ?+ W p0 ~$ g* f2.按START+B武器数量为99
: V. ]: K* U4 _- O3.按START+A补血
9 ~+ J. x# T0 y8 y# ^& ?- |0 Q; }# ]2 N: F
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来3 l( u0 M' ^! E: c# }% c
0 L6 p4 ]6 R5 j1 S C从原单位滚蛋后就有时间来弄一下+ ]7 V* l5 ]. p; f* m+ t3 j
% A D5 T; T: e6 z7 T7 v% d关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚& g: D. o" o5 w5 V! y4 T5 s
% M: ~! ]5 i: ^9 B) a7 N关于如何切BANK:请看相关mapper资料吧1 n6 m3 P# ]/ b, a* T. _2 O
( j O r0 V& Z$ a$ {; T说说我双截龙3 MPPPER 04如何切BANK:- $ {# ?; A( y. {; z* T( `
- $xxxx4 m; w6 P" G" O3 q; C% J8 d
- LDA #$07
, W% M) |5 B6 d' j - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF$ H" {6 R+ ? n' J6 g
- LDA #$0E- k5 e _% r; X9 G
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF3 x- J' V. Z* S1 w. ^6 _
- JMP $A000 ;跳转到$A000执行
7 v: D" J9 W: ?1 D4 X
8 B* c9 }2 d; ?% d2 T' _2 o+ h4 ?: t+ c- $A000: J: V! L5 H( s. ]0 M
- .
5 }6 p( s5 l1 u! _3 |- o2 B1 c - .( G3 \: }& Z* ~! x- ~
- .
4 I9 h' D+ {! s - .
8 D2 Y% m& O! M. g' W3 ` - JMP $xxxx ;执行完自写的程式后跳回去$ P$ l7 e9 k+ q Z x/ c# ]' B
- & D" L3 w0 e( R5 d
- $xxxx:& z/ v6 L" z5 R2 J+ P4 u9 ^
- LDA #$07
" i6 d- D9 n% o+ [! r - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
& L: ~2 q! X9 X* l( Y4 q - LDA #$0D
- `4 \/ f6 R8 U% B, ]1 F - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
" |" E u% b% j6 i
9 h! A/ r8 {2 P, I- M7 H0 d- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议 A2 h/ F1 r# s: q7 e0 O
- ( ~( i6 p* `1 D j/ v
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
' ^$ ]' L `0 ]
' z! D0 j: |8 `/ t4 B* N& X4 H# V附:ROM 16KB BANK编号 p3 o! h" {; j3 `' c2 Z
: O# x$ R& A. ^ROMf地址 BANK编号
; p. L) Z/ a3 p x00010-0200F 0
) d$ G0 _. P1 A/ B- N02010-0400F 1
( W" _, F% t2 t0 Z$ \% L04010-0600F 2
2 y/ c \3 p8 A' K) p+ v+ D06010-0800F 30 x% c6 s: m/ H+ }. M! D
08010-0A00F 4
2 K2 z6 O! h/ F9 R0A010-0C00F 57 S! p1 S! a& n2 I+ ^
0C010-0E00F 6& S6 l( o3 K6 L# K) x0 O
0E010-1000F 71 v5 \1 ?8 h" x/ b& M
10010-1200F 8
) z5 F; B) e- |8 J12010-1400F 9
! m, i6 @; R) e, `) i14010-1600F A
0 [$ d8 l D7 d& j! D! a! O16010-1800F B2 x; g1 g/ }& v0 [
18010-1A00F C/ @9 U9 ~6 r5 b
1A010-1C00F D6 |( v2 g* h. h% a' ?
1C010-1E00F E* M l2 C7 V7 s. b1 q5 y' u% y4 L
1E010-2000F F
1 u: ~7 |. x; o) I.: `6 s; {' V+ X: ~, N u4 c
.9 g; k% Y6 m- K9 |# h+ _+ h, {
.
0 _9 f: Z) |% @
% o" [$ f9 b- C1 I8 @6 E3 w解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
$ f. Q" x7 t# |' E; {& a" \ h
- L v: G: ?) J( X+ F因为扩到144KB的话有的模拟器是不认,无法运行
& N* O' ~; g6 H, j; |+ Q: j* ^' B7 @- \
为了全FC模拟器能兼容,所以只好扩容到256KB) v; t% `0 _1 D' F$ M9 V1 x
9 ]$ c7 I- D# q3 b
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
! ~ z* D/ }$ j! {, d; v* b1 Z, J$ @6 B& g
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|