签到天数: 1834 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
0 B4 H) X: H& \( h
% w' M7 T! T+ [; i/ x5 ^修改内容:
8 s' O( B2 `3 r3 v1.P ROM由128KB扩容到256KB
3 `6 y# ` c6 ?8 s5 e7 `2.按START+B武器数量为995 u$ ]) L( J) ~1 v: B
3.按START+A补血
0 {/ P8 a/ C2 g
" ]- w, B/ Z) z& A9 A; ~% L# I" }这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来1 ]5 G1 b2 h, X* ~
" x1 M$ l4 I8 d, c
从原单位滚蛋后就有时间来弄一下
+ K6 w Q( M, O4 w# l4 c. J2 F
9 k; P3 F) r7 f& Q9 U. g关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚, b; S& f$ T) ^3 L! `6 Q
! }; a/ q& s8 A+ S+ f( z! ]关于如何切BANK:请看相关mapper资料吧- g& s' m2 A `9 |- }5 ^$ q! Z
% i Y" Q& u6 p9 j. x4 [) z
说说我双截龙3 MPPPER 04如何切BANK:- 4 M" o: M4 }( ]0 Q2 P' R
- $xxxx
/ \! T( [4 ]' Y9 @" I2 t, z3 q - LDA #$07
X( ^+ J) a. L( ?+ t& z - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
/ t& k. [! L+ _1 F3 O9 h - LDA #$0E
- _& `2 L4 g X' h: L - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
! A: E' a& o h, _, w - JMP $A000 ;跳转到$A000执行" Q1 N K4 i# m( ~' A
- 0 X: g% } ^4 H; [: D( c7 o. B
- $A000:9 u; R1 ?9 m+ ^$ A9 v% x
- .% k8 t H5 Y# S9 d8 d7 S7 [) W
- .2 G1 c7 [3 u! w. X5 a8 E! a
- .
O& j6 M' d' U - .
4 ^2 z) z6 Y" M: \& D3 C8 U - JMP $xxxx ;执行完自写的程式后跳回去. i; s/ }$ G4 s$ `- ]5 ^( K: E0 @
- 9 n& o7 H* s, |4 k3 `
- $xxxx:
* K7 n9 I: {* }4 D/ B7 S- n E - LDA #$07
- l/ t8 }2 l- P+ m - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF- g0 b$ X; |9 a) w' O6 n3 U! @
- LDA #$0D3 v) W. J9 N- [* x1 q6 r: H
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF% T9 Q* x6 Y! M- Q9 }/ |& t
- & d$ ~1 H: D4 _) z/ I6 I) J! W
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
7 ^7 A0 Y/ B# l9 [ - 1 W$ p0 s' Z' l& z0 n( L7 p% D
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)/ u+ \+ _7 L1 ~0 i; J
+ Z* a. U; ~, I6 B3 Q附:ROM 16KB BANK编号/ Z2 I) p4 j8 w
' w- U, {3 {/ YROMf地址 BANK编号
5 ~: T; p6 v; H1 D7 Y00010-0200F 03 S8 G/ a) s1 P" j
02010-0400F 1
) S1 [& i0 p3 M4 {7 ~$ Z) {2 c04010-0600F 2" h- V5 y; S( i. u2 f* `/ \! D
06010-0800F 3
2 `- g' ^. v* B' E4 z, t% K08010-0A00F 4
8 E) S% D2 e R# P0 |0A010-0C00F 5 J' [; y6 r+ \' A A) s
0C010-0E00F 6
r4 Q/ W8 A" J$ F0E010-1000F 7
9 N' u# A( X8 d6 m+ R6 b: H& L( d10010-1200F 8
5 n" Q% \9 [9 g5 K9 t: s12010-1400F 92 ^; d3 v. G& x
14010-1600F A3 N+ X! O; w: z
16010-1800F B
' x& C" ]. {) l4 p& Z- }18010-1A00F C: `. c/ T3 `5 Z1 u- V' G
1A010-1C00F D+ U- W- ?+ ~; T. o$ v. \$ I/ t
1C010-1E00F E% F' P1 P- g% B+ A
1E010-2000F F
& [. {* V, P2 j.
2 H! E& k0 i+ m+ @8 [.
4 o+ ~: @/ m8 Q5 n.
2 m- ]2 |" C- V c. B- y+ D
) V6 ~7 L" i6 H' G. m2 b$ s解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?0 U( j! j3 h6 O0 z) v% l5 Y7 @
2 D, E3 y5 C% O' x- r9 S+ p" p因为扩到144KB的话有的模拟器是不认,无法运行5 o" @3 e. M' e+ J, w7 S' ?+ R
) i& s. h) r ~" N3 Z1 O
为了全FC模拟器能兼容,所以只好扩容到256KB$ \9 h9 ]" a3 a0 M
0 l" v4 X+ M; I( T |& Y补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机 S1 C- ]; z `8 G; r2 A
: ~" Q4 O! T k& s) n9 X2 {
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|