签到天数: 1776 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
; C& _+ u; H3 z* ^. L9 Y: K) h1 R
修改内容:
5 v( |5 B/ b) C1.P ROM由128KB扩容到256KB0 {1 J2 B6 _: {% A. i: c8 a. Z
2.按START+B武器数量为99
3 Q T3 K( r: W3.按START+A补血
: ] \6 a. Z7 z3 A
3 z" C% z/ s$ N+ A/ x+ M这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
9 d" w( x/ G6 u9 G
5 {7 R% u$ A4 r: X) S0 U从原单位滚蛋后就有时间来弄一下, `# a0 X5 l; S8 D" l1 L4 i1 i
5 A$ s$ f" u; y1 x1 x6 R7 U* V# B o关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
4 f% L) u6 y# K# ^# E
/ L9 ]) V1 P6 k6 T$ x" `: T关于如何切BANK:请看相关mapper资料吧
3 c0 a: c4 Q N; d7 |( U
* a3 Q7 |. C6 w- K$ ~8 g% u. ~说说我双截龙3 MPPPER 04如何切BANK:- - m, T4 j( M- k4 o# e9 a7 f, M
- $xxxx0 H; e6 O. W' ?9 h
- LDA #$07& H: x% H6 D( R" p1 S# w
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF9 A' k: F2 X! y. r, F3 Y4 S7 p& P
- LDA #$0E
( r6 i( V5 x# j - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
' {, T8 O( k7 `3 f- v, x - JMP $A000 ;跳转到$A000执行
% S8 a/ \' g" o! | - - H6 g3 V# l# G" R
- $A000:# H) e: W' H* C1 N0 m
- .
: z+ r+ y7 r7 S, P# u - ./ X. @2 Z" [+ @" m; R0 O# ]
- .! [" H) A" f' Z$ f# G( z
- .
) F$ x' t1 n# ~5 q0 B) v - JMP $xxxx ;执行完自写的程式后跳回去
* |( C( @) e5 ]/ r8 K8 { - ; v- d5 e( ]0 i( g/ ?- y. _' N
- $xxxx:
+ g! c- }# y( e - LDA #$07
- Z' S$ [- ?) g% q9 s5 d) T - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
2 _% |, i9 e5 k4 j - LDA #$0D
- N0 h- J4 C3 z+ { - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF$ E) E. t1 [+ {
" B5 |0 g1 S2 g% Q7 d1 F- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议1 N7 e( ^! j p: V$ ^
- 5 O7 e# `( V! l- O8 W! i5 s, j
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
4 g. w7 N( J }2 Y
e2 e0 u; c* C" I1 L附:ROM 16KB BANK编号
7 \% [0 j* |( _# z+ T+ T! z" v) f
5 @7 D4 ^) }# O; O# ]9 }; O2 UROMf地址 BANK编号+ R: ]$ j: C _& W* v% [
00010-0200F 0
$ n+ D- Q+ ~. _) a+ N! B4 q9 ]02010-0400F 1
- w* Z; z& `# Y5 i# V w+ N) o# `04010-0600F 2- K) |4 b( F( J3 |/ B$ z Y4 d: n
06010-0800F 3
5 k' l; M; o3 ^+ a2 S- J2 G* H08010-0A00F 4
0 ~$ V- A8 k" j! a% R' r. c0A010-0C00F 5
- S# E9 z5 @9 _, L9 s0C010-0E00F 6& p4 g! N0 f7 J- s/ [
0E010-1000F 7
$ m! s* n0 A3 a5 B4 Y- L3 o/ V10010-1200F 8, }6 I& b; i5 w7 D" G3 A
12010-1400F 9
. X" N/ u K* { C$ a: e14010-1600F A. _9 \( U% k5 N6 N
16010-1800F B
, G+ r0 f( f" x" I; y18010-1A00F C7 Z" t) Z P6 X9 W( R" O
1A010-1C00F D9 M! v& c }1 t! d2 d% t
1C010-1E00F E
$ c9 a% E' ?+ X3 N+ {# x2 P$ F1E010-2000F F
/ T' B- g/ \" N" o4 U! G.) A5 G+ e5 R8 C5 c$ G" ~
.. E* \* k/ E: [* {
.! X" t) N! E8 L5 O0 o" H7 i+ [2 w
7 `& j# H. R5 o解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?( q1 m( y: f9 h: h
0 N6 X7 c9 j$ z2 |: x
因为扩到144KB的话有的模拟器是不认,无法运行
6 j- f N3 b" N9 o& [. W
! {( c" n6 N8 P1 u. T为了全FC模拟器能兼容,所以只好扩容到256KB
& ?* v# @8 {$ c" y7 x/ L/ v1 Z2 k% d6 ^; s, k3 G. N1 z
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机6 C. f, P# V2 D% s7 ?! d+ g
# H% j! w5 s% o |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|