签到天数: 1868 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
+ g y2 n8 X) t# P6 Q9 a7 P/ V0 U) h; ?$ p0 f& j0 K; v6 e0 h
修改内容:0 Q7 T. x' ~- R9 |* n6 y0 u( b1 ~
1.P ROM由128KB扩容到256KB
) ]- a* s4 g0 p4 h2.按START+B武器数量为99
2 l) M; M) ?5 V3.按START+A补血; }/ i6 k2 L" @& E% B8 ^3 h! S
; v4 A v* K6 g5 x. ~这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
- R5 G7 K% Y' c' J! F! H* S3 l @
% t, \% m7 O& }7 C* i% f从原单位滚蛋后就有时间来弄一下
3 {0 J* h" U/ q
1 l- b. J! I4 u/ M2 r关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚2 L; z2 Z* M/ T8 _3 V
1 z6 X+ W3 V0 U$ }8 }. _
关于如何切BANK:请看相关mapper资料吧# q( B1 c# Y0 n
' X; e, S' m3 u# o0 n
说说我双截龙3 MPPPER 04如何切BANK:- $ Z: K' ]% H* D; E) v" g
- $xxxx' s7 e$ m1 {5 N& X# ]% Z
- LDA #$07
9 e3 [. v+ `* X: ?! J. N% U2 X4 ]- C* ? - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
6 M/ [: R- y3 t0 H" B4 t- B - LDA #$0E
$ D# }* Z8 z# ^: M, D' }. r - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF# Z* A0 k; H% l; v G
- JMP $A000 ;跳转到$A000执行: p6 t9 T" }& _; y$ M
- 0 k+ O4 [4 r: c: ?- T5 y) W7 v
- $A000:) |. J, `" A7 Q O% q0 k9 g7 y6 ?
- .% g% n3 u# i5 } }: [. o
- .
# {2 x4 p. A } k7 a - .2 k( I+ A) c# b8 a9 Z' I
- .1 `; N2 _, O7 H# c* p: T6 ~) H
- JMP $xxxx ;执行完自写的程式后跳回去
6 }4 s1 h8 B6 C - 0 M9 z0 v' c3 h( a
- $xxxx:7 W) S' N$ d2 T5 I
- LDA #$075 N& `) b& q' S O6 f9 `7 U8 r
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
# O9 v: L# t! N- k - LDA #$0D
w. L0 O" v+ U8 g& Z% D1 n& u, E - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF5 p. Z4 z1 ^( B% l; E) {) D
- 4 v, C1 Y |2 L7 E" z
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
e# q3 d) P! Q8 q - 9 F% |& Q" z8 U$ U3 Q
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
' J: K& u7 ?" e/ @+ A" C; d( r, q( L5 {! I3 T4 D- e
附:ROM 16KB BANK编号
- }+ J: X0 z+ k# `, ~
% O9 M* z% w2 X9 L+ j7 y" TROMf地址 BANK编号
, M" B1 q; t. o7 q00010-0200F 0
# @* h9 t. }8 N! O02010-0400F 1/ o6 C3 w3 q0 s" O# L4 N \' v. x" i
04010-0600F 2
( T7 ] i' ]9 |8 u/ \2 z06010-0800F 3
9 g* O% @3 U5 s2 k08010-0A00F 4
) R( |' j. X2 Z0A010-0C00F 5
$ x* N( F. M" E9 U7 I) `$ [0C010-0E00F 6
6 V9 F4 O2 ?$ e% b6 c# \0E010-1000F 7
$ r, K9 H+ ~: n* r. x- ?10010-1200F 8+ F7 R# m; H7 V n
12010-1400F 9
# | u+ z b" d, `" c& |: J ^14010-1600F A& U9 _0 E9 X' S! [7 ]5 q- b; |
16010-1800F B. w& [- {4 v2 ~, L* A' D
18010-1A00F C
7 Z3 I6 L i. \- k: {; ?1 ~2 l8 f8 V1A010-1C00F D
! f3 N0 [( |; R: Q+ K. t2 s' i1C010-1E00F E
' ]) T K2 d( c( A A4 [0 o1E010-2000F F$ G2 W8 P; r! F- C+ I5 a8 S
.
D% K) Q9 t# i; d) D.
* \+ v4 g, B: p., t! V, p; f {1 O K
& }+ j: a9 |8 @4 O8 @
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?& x) i0 ?) L1 J* M; F+ b2 d+ F
; b2 t) {7 x/ e
因为扩到144KB的话有的模拟器是不认,无法运行
2 ^& B$ g( G/ I* Q, r) G* s4 g/ N6 o7 d
为了全FC模拟器能兼容,所以只好扩容到256KB
% _ m7 F+ |4 Z# Z8 Z5 w" d- O' o, o( U, g$ G% v
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
* l) N' Y* N$ U; T5 T) m% X0 w8 [3 i$ G( W& u9 u8 o
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|