签到天数: 1717 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
; @" ^: E% T n6 u
# N4 q* Y" m* g! z修改内容:1 S' |% u6 Y8 T1 |7 U/ L
1.P ROM由128KB扩容到256KB
; a& Q; f8 s) V" t2 h) j2.按START+B武器数量为99
- B2 P5 q" U7 q3.按START+A补血; i" e; o9 a# A7 b/ A% v4 R
7 c9 L$ O/ m$ U4 I
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来: s6 }, u2 Z$ [) D3 U- v0 C5 l
9 e) [3 e) W" c" W+ [9 Z, a
从原单位滚蛋后就有时间来弄一下
) o2 Y3 |7 D9 [* U$ h9 ]& Y# @# w( n5 B2 ^0 a+ _2 r* g
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
1 E& b: y7 z( H% m8 q8 O
6 F7 c2 b, P$ S6 S4 @; ~关于如何切BANK:请看相关mapper资料吧
8 Y' G Q0 O2 K$ I% V% R/ j5 ^8 F$ I1 O9 |* V! t3 [
说说我双截龙3 MPPPER 04如何切BANK:- : t9 q, I J6 J/ o, y$ b( D7 m
- $xxxx# X' A) [8 z2 R8 U% B
- LDA #$072 X3 K+ i5 u6 Z& I, r+ }5 n
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
: S+ ?9 @: {) _) E3 g8 m T4 Q |2 V2 P - LDA #$0E# e0 k/ ~. x" U& y% n( C8 T
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF$ ?3 q* h7 ~, ^- V* T
- JMP $A000 ;跳转到$A000执行5 o9 t5 z- ^. T0 {3 Z
) W5 Y% n" f; ^ b8 ^- $A000:! [$ o {8 Z8 b- d K
- .; y) L: R" ], Q- y1 n$ C
- .
+ x6 J7 A( H; h% K$ l - .
& j# Y! X* j1 ^ - .
, K. B T; o3 a3 Z z' @ - JMP $xxxx ;执行完自写的程式后跳回去
' g: T$ H3 h, K4 u4 G! s6 K - ) |- R6 |. C7 `8 P, v
- $xxxx:
4 E0 z, b3 r2 `3 u - LDA #$07
$ m$ U) ~" T. `% ] - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
m; T5 m, }9 F4 g - LDA #$0D
7 W! g, D/ X* c$ B8 M/ v2 E - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF7 g7 }4 C, y+ {! z" U
- 5 m0 q/ P2 e2 }, w. C
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
5 }$ x4 b. I1 U - 1 w# y, l! Q1 K4 o- `$ X
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
3 z U% f4 n0 h9 H$ v2 D- i m1 N7 n
附:ROM 16KB BANK编号- b1 k6 \& k# H
- d0 U# b5 s2 B, s* l8 EROMf地址 BANK编号# U8 Q [( z9 ~, G+ b- f2 u- }
00010-0200F 0* h2 J" [$ k( B; {& K7 T
02010-0400F 1& H* f. e+ B, o
04010-0600F 2
( d8 \3 k3 P4 ?9 r$ `4 g6 n o* Q06010-0800F 3 J3 O7 ]5 E H# d! q
08010-0A00F 4
( Q+ y# I$ e( A" O i' ~2 B' ^0A010-0C00F 5
! ]8 I. A6 t9 I0 f# T' P' N0C010-0E00F 6
' [7 m' U; l# G7 ^6 {4 j8 W0E010-1000F 7
: b% G6 ]- x( e10010-1200F 8% ~1 N6 Q6 N9 K: D0 g# @/ Z/ V
12010-1400F 9
( ]1 w$ ?" [2 w8 R+ |: v14010-1600F A
$ l+ w9 a" W& e" g) G @. q16010-1800F B
$ T# k2 Q: H& [3 B18010-1A00F C& L, M+ k/ a+ g
1A010-1C00F D) `* V. H1 U/ J
1C010-1E00F E
8 e2 I1 k& l# V- Z1E010-2000F F
. I" I' D; Q$ T.$ F3 b2 _' W0 C9 V+ w# A
.
& k) y: L# ^2 D$ t0 T.0 _1 O0 S# ]0 N) U- o
7 s5 q2 W0 U2 K+ d1 {: n
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?2 j; ?6 b5 z8 W" A( a- l+ g* ^
) C. c7 M% V' s5 u0 N$ y; ^$ R1 j
因为扩到144KB的话有的模拟器是不认,无法运行
5 s# J; u a% `4 a2 R+ C, f# l, {
! F# C$ E+ m/ W- v3 v为了全FC模拟器能兼容,所以只好扩容到256KB
6 H" @* F3 |9 ?' A' x: E2 N7 ]% ]0 x& f, F# {# s: [# E
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
2 U S# V+ ~+ g) |1 k1 ?$ L3 v& Z8 F |, F6 f1 h9 Q
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|