签到天数: 2091 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
! ^7 o7 j4 S8 J) T; T% N- }! [2 Q7 B/ }$ R
修改内容:/ r& H8 l5 j$ d
1.P ROM由128KB扩容到256KB1 `1 @) S. S' [" a7 e6 g
2.按START+B武器数量为99
, r; A8 P1 n- j2 R( z2 s a- t0 x, k3.按START+A补血
% W5 j8 P( N' k3 W1 x3 }2 c! ^
- s$ V+ l+ x1 K/ r这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来: ~/ `' v2 Y" a) W
% V1 L* K/ k& r; \) |从原单位滚蛋后就有时间来弄一下4 [* s* b4 N5 T- F
) ?4 b5 Q( d8 v! b1 \+ A0 W3 {# @+ w关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚9 a; q" j& [ p }( l) J$ f) @
7 t+ D8 A8 A5 r9 w关于如何切BANK:请看相关mapper资料吧
1 M' \) b' y# Q( p6 L R" D. R2 g7 `' N( u$ ~1 Q! p \
说说我双截龙3 MPPPER 04如何切BANK:- ) o0 ^; l2 ~( w: g6 R
- $xxxx
/ G; g9 T0 s5 X8 X3 Y3 d; u+ Q8 p - LDA #$071 ?7 i; N% I! O( @+ k
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF$ D; V k3 l' B1 h; v, h
- LDA #$0E
" @) k7 V# K5 ^) V" Q: } - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
5 M0 E& W! t1 U% @ - JMP $A000 ;跳转到$A000执行. f* g, `1 l$ s! Z4 ]0 g
- D$ r A" }, ^* l# m* o% S! F
- $A000:
/ @7 x7 n/ s/ V7 a - .
" o, c1 p( t W9 f) p - .
: l8 E H j( H* H - .4 n! w6 l, a$ B+ j. ]* F" `# ^
- .
% Z2 s8 [# D H( D! K7 a0 A3 n - JMP $xxxx ;执行完自写的程式后跳回去
: v- h. X; ]& D% `1 t6 a3 C - 7 l, @, W$ W$ h, M
- $xxxx:
8 f3 }$ R( ]- O/ E - LDA #$07
5 r a* r3 t# j: U1 c* v - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF/ B! R- W! r) o: X
- LDA #$0D
8 h; O8 u- d; v* S- j$ B. z - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
4 z. a8 z0 ?6 z4 t - 3 V5 E6 B# x, ]2 ]
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
P! E I- D' ]3 Q( R3 Z - ; f% v3 @% o3 }* J" X2 j
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
4 j+ P# X9 Z* N
" l v5 G% }. q% q( S7 |( K3 F附:ROM 16KB BANK编号
# y/ Z8 B; V4 Z U
$ I3 e# ?& ^! sROMf地址 BANK编号4 z3 ?+ t; a! t$ \1 F. M
00010-0200F 0
" y8 T( u" Z& [4 r* U! M02010-0400F 1! d2 e' O/ U$ ?8 _! ]# e; B
04010-0600F 2, Y$ S/ t/ K/ z% f7 p' E0 A
06010-0800F 39 c- j0 M, `, y! s) V" Q' Y$ B7 {6 E
08010-0A00F 4/ z# |2 }$ q4 U/ N
0A010-0C00F 51 T# T& H' _& O" ` G% y) d* t9 E
0C010-0E00F 62 F0 J+ c7 p: @3 U4 p
0E010-1000F 7) w7 @5 X. [+ s
10010-1200F 8( J% {5 v- ]) e+ d! N! W
12010-1400F 9$ g! s9 B( {# ~3 u8 Q/ V1 L5 ?
14010-1600F A
' H$ U* T, e1 O. |# a4 V# H16010-1800F B
" x& i0 ]$ [$ A4 t; k18010-1A00F C
* d' ?2 t8 l; h9 x1A010-1C00F D
z& H/ y0 d; | L& D$ Q( S1C010-1E00F E
0 f& {; r" U9 D1E010-2000F F3 A. i0 ~" A9 {& R2 n
.
$ v+ v, K9 m' Q( z" \, _' D.
: Z, O' c5 S7 r! S' w.* Y! }- U% K' M! Y5 ~! @
4 B+ Y% L9 p Y) T O解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?% ^( B Y4 U# l3 k K: {
% |7 ?* K# c R' x% L" S& \6 H因为扩到144KB的话有的模拟器是不认,无法运行
1 A2 k' Q2 j: L# u2 B' _+ N5 d: Y- \& I. H; x% W& M
为了全FC模拟器能兼容,所以只好扩容到256KB6 n. }# o3 Y: h! r( W3 c
_5 f' R4 S; j6 @: [! i补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
. x. n3 m# e) x1 S6 T' J1 r
4 I* E% \+ q8 O! J/ ]' r |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|