签到天数: 2214 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。1 A1 i1 q* M4 [$ J' x; N2 M
; `3 Q1 l" T" p8 i1 y修改内容:
$ g1 v1 N# _9 Z! A3 o1.P ROM由128KB扩容到256KB# \; ~5 ~5 ]. v9 y! H4 Z3 C
2.按START+B武器数量为99
7 O* u9 ^+ h( }5 e3.按START+A补血
2 Z# \( Q; V7 c7 p9 M) y" i: ^( h) R' i' T3 W
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
f( T: @0 n3 A$ n
( X. \+ s, \4 Y# _从原单位滚蛋后就有时间来弄一下
5 M+ O* W% Y5 D8 Z4 q: [
. B; }% p- a8 W/ _( ~: k关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚+ ^0 u% _4 z5 }4 V
6 |# q' v5 n i9 E2 ]. Y1 K
关于如何切BANK:请看相关mapper资料吧! `5 U- j- C2 J* s! Y
( o5 s# `- S" t9 G/ t" y. [& f
说说我双截龙3 MPPPER 04如何切BANK:
+ ^; G. v' j5 b: D8 F5 d9 w4 O- $xxxx
7 y& }; v. h- J - LDA #$07' u( ^1 Y; D! {) J2 h
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF0 ]1 W9 M2 k0 p" p( J# O. [
- LDA #$0E9 {3 S5 X2 y/ F! a) m6 n: Z2 g
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
8 i3 ]7 |: i$ R0 @4 Q: o - JMP $A000 ;跳转到$A000执行
$ c: G% }& M0 E; y8 p; ?' n - 2 p$ J3 Y0 x* H- s
- $A000:
2 \% d! l. O% R8 ~+ h ^; O; p, Q - .* n9 E) P' {# q# Q6 m' Q h
- ., t# b7 \: a! ~; V6 \# |- c1 I
- .7 ]# x9 q6 u6 v v/ d/ U
- .1 ~" v4 D: r4 Q" R
- JMP $xxxx ;执行完自写的程式后跳回去
. L& D7 }) Y9 D! x - , @2 N3 ^3 D* A
- $xxxx:
- f) V! V' U# _5 N; o5 ` - LDA #$07" `- D4 G1 D+ |( I, ^6 R
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF1 p% [0 J, `, u" N/ f D2 B
- LDA #$0D: [ W* u9 @2 x+ q- y
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
/ |1 h8 E1 z' I& w- _
' N+ A) l5 ^6 S/ u# P8 { W- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
6 ~9 p7 s2 }( ^
) u) e0 y+ M6 I
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)+ L% M2 h7 x& Z6 e# ~6 R; L& o
+ t! {' o6 K. G/ F附:ROM 16KB BANK编号
) O3 N" `" l+ w% }) e, E) ~- j* Q, x2 I' v
ROMf地址 BANK编号
. x8 _8 R: n7 V* Y5 d- y$ M, G00010-0200F 0
- c! }* ^. i2 ^: E: R' C: d02010-0400F 1
2 h5 A; u# S h* S6 c* U04010-0600F 2
2 a+ a3 e$ q* {0 v06010-0800F 33 n" {! F5 B) W! x1 x
08010-0A00F 4) f$ f& q B; b/ j7 ? ]1 e5 _
0A010-0C00F 5
- P) }3 g: V, S# ~0C010-0E00F 6
# z7 i$ [) y# ~. v; ]5 {& a" Y0E010-1000F 7
! \7 I3 K! f7 p( X; v5 l4 j+ F$ S10010-1200F 8
. t0 v j9 s$ Z. a1 q5 D12010-1400F 92 _) p7 Y) C/ M# n: T
14010-1600F A
3 ~7 e- X. k3 x- a1 V7 t16010-1800F B
e$ e- u; W8 x1 a! }! `3 \; y2 U. d18010-1A00F C
4 i1 P9 o) a* c( s6 O4 O/ {- f: j( z1A010-1C00F D& [ {% a- r( t- d
1C010-1E00F E; T2 ~1 m5 t* g: f* O
1E010-2000F F( i& W# ^7 E* d: z+ ?& m$ n! I
.
+ }7 w5 |; \% n* Q.
+ C7 a- J. }# q8 K. e.1 ~5 w* c# ? i! z$ a
5 d7 o+ f/ i4 ^( _/ I: n5 R n解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
% u+ h+ u# Q2 p2 K- f: L/ S
* P# C: E4 G; \6 _因为扩到144KB的话有的模拟器是不认,无法运行' K% y8 z( }3 g0 i% `# A& Q
& |) s' ~4 y6 q! X1 ]; S9 S
为了全FC模拟器能兼容,所以只好扩容到256KB9 \$ d. i5 X8 b5 w8 ^$ C: M
" l. d ^+ E7 ~& @# r! N
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机& l, |4 Y# e5 g9 g% J
2 F" p# D! S) S# K, N! Y M N. V |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|