签到天数: 2050 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。2 f- ?5 s5 e: t2 M
( {0 _+ |/ f7 u6 z; Z
修改内容:# J7 }! f3 k1 W" ^" I/ _; K
1.P ROM由128KB扩容到256KB
H) s9 D9 M0 V! S; _4 _2.按START+B武器数量为99
% e$ d# t5 |( X3.按START+A补血8 ~- ]+ q: x, {1 }0 v
0 e9 N) f4 }+ `0 F$ K) ]& Y/ y# Q
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
1 e! L2 a' ~9 E3 q- T" N" e$ _: J7 Q* _' ]' n' ?
从原单位滚蛋后就有时间来弄一下
F: h& M8 o% t( e: t" z
2 r4 r0 p4 d! j# p& I- I, E关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚6 `. Q+ q/ X3 e* \5 \0 |
% {$ z0 |9 ]3 R, J. C. A
关于如何切BANK:请看相关mapper资料吧
# m- k$ E; E$ T+ ~7 y/ c" r! M
8 i4 d% w) M8 [说说我双截龙3 MPPPER 04如何切BANK:
4 {7 X) T/ D6 t! D# u1 [- $xxxx
, Q/ x8 u7 ~( d& x - LDA #$07/ o: |7 i3 P" q# Y5 z
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
8 r5 i) V9 m* o3 T/ ~* y9 {, O$ N- b - LDA #$0E; E) m6 S3 a+ @- h1 X
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF# s6 [+ g; t4 i6 U& S& f
- JMP $A000 ;跳转到$A000执行% X, r" G* I* c1 z
4 t+ C8 T, n) `9 g" O- $A000:! }# N: @! i1 N' h
- .( A- y, ?0 `- Y0 v" b5 d
- .
5 B3 D9 z1 ^0 ^: y) w' {3 V - .
) f8 B2 y {* Q T2 {/ y - .2 b; W8 ^) _( T. O" {2 v
- JMP $xxxx ;执行完自写的程式后跳回去8 y1 k, i6 p0 B" j& @# z
/ W4 C7 _: r- p9 }; F- $xxxx:
- B# }2 q/ u+ |4 `3 V - LDA #$07
" K, u* E2 F% F - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
: G u/ ~0 H; H) _% _$ \% f - LDA #$0D
; ?0 u" M! a2 q4 Q+ o/ M5 W - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF1 u) J8 ^1 H+ O. {3 R$ z6 z
- 8 [8 Z. M6 K, S, Q. A
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
% U& F' T/ t' a% Z
' p0 f8 b& u0 L
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
) t, Z9 v- U7 [+ g9 t
& ]+ l5 v- Y9 ~6 u附:ROM 16KB BANK编号9 e9 F" O" G, J- P
7 v/ M3 ?; `& I/ T, HROMf地址 BANK编号
2 l8 i9 ^" [" F3 m9 x& {00010-0200F 0
! a: t" K0 b! K3 m' X2 I. s02010-0400F 18 z' P9 S- F5 q5 R. M
04010-0600F 2
3 t2 z5 J' b7 {6 ?1 \+ U06010-0800F 38 G# }' s% h5 ^
08010-0A00F 4$ K: ~( F6 F2 w& |
0A010-0C00F 5
" L" i1 y# ?( T7 a% d/ R/ T0C010-0E00F 6
& l) J* W# X1 n* b+ P6 @0E010-1000F 7
g$ y- {& P) U t3 }10010-1200F 8
! n! F5 ~8 u6 [# ^12010-1400F 9' _- ~0 ]8 u( c: F% j
14010-1600F A
; h$ f7 q+ N' K3 C9 c6 {+ `16010-1800F B
" X# y) e* w4 `* h7 b18010-1A00F C
- B* c7 p1 q9 f- B1A010-1C00F D
1 m- I" K" L2 b6 z0 F1C010-1E00F E
2 z4 H" Y$ N, n+ L, x4 A1E010-2000F F5 c$ C, C9 b' w* k2 A6 ]! d x
.
$ [, \$ D* n4 G+ d8 e/ U.
+ P( ]8 a* |$ T7 k0 x." F& P2 S: l$ B. K
$ g' [* p# x+ W$ e
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?7 Q% v4 K! I/ n: ]! B7 {
- x1 c7 `! z! v# N R4 S# u1 ~
因为扩到144KB的话有的模拟器是不认,无法运行
% q# ]3 \2 e) O( C$ L0 _ N# Q8 I2 j$ d* p1 U. m9 t0 z
为了全FC模拟器能兼容,所以只好扩容到256KB
. e9 ~4 `' j2 B! B) F
9 e" ?8 q& a( T补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
5 B& Q' ]5 M5 u4 C! ? f% z3 h: J% Q/ D
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|