签到天数: 2074 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。
4 B& F% @8 |: P$ J2 L& J! t1 Q h& x! O, a9 S1 a
修改内容:
+ G& A3 L8 J/ F1.P ROM由128KB扩容到256KB
- a7 X3 X) T$ l( N6 x2.按START+B武器数量为992 F7 W$ l- J. w9 l$ {$ R3 Y
3.按START+A补血* O4 S/ P5 Y* Y3 \
2 U! I. P) ?4 |8 F这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来- ~5 o9 T* v! K: F: J7 O
: d# d4 e/ s8 J+ b$ U1 @' n" k
从原单位滚蛋后就有时间来弄一下2 v: S+ S# e: e* W% p7 q
. p; ^* f: E" T9 P- M' V" M4 g关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚2 C8 \# `- x- u4 v P0 q
# p1 c, w4 v/ x! F关于如何切BANK:请看相关mapper资料吧8 k6 w5 ]; a4 O
0 g" Q J$ G* v0 X+ K! E说说我双截龙3 MPPPER 04如何切BANK:
/ I1 u7 @% ^8 z& {: w% Y- $xxxx
$ R' }0 [" w" v7 M - LDA #$07
; `5 ^( y% o; N( _8 w0 o1 C - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF1 P- B0 S( H R3 K0 w) o
- LDA #$0E X5 Z# S' v }% @8 A( l! Y9 w
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF9 w1 O* A8 ^$ ? r
- JMP $A000 ;跳转到$A000执行7 C) B4 U: _! V0 b1 k# I9 |) R
* `. h- h, Y- k8 V- $A000:* `; Q* c- r1 d E1 U: x
- .
0 q2 C3 B3 Z( K& s! J6 y% [ - .
) N+ Y4 o7 f! Q6 A - .8 M* F! y" w: _( Y
- .
+ ^& K* j- q/ j6 B - JMP $xxxx ;执行完自写的程式后跳回去
' A3 R1 a# I% g4 @$ E - 1 S* a1 I/ w1 K3 V( S" v [0 P
- $xxxx:( b2 |3 Z5 j- W7 S* M8 x s
- LDA #$07
+ L( D: e: a- A" o' F# | - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
C" [) }0 N, Q - LDA #$0D
# E5 E0 s$ p2 H - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
* i! I4 L2 D6 j! m - * M5 `# _3 K5 {3 O! D* w
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
0 O* u# H8 i1 \! n) `2 K& B+ y
7 I6 Z% Y6 T" x+ v
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
1 V# K; k. v: } W$ l. _. A1 e$ c. S1 {* T6 d: x- m7 A
附:ROM 16KB BANK编号
" x8 Q0 S+ w o( p
- U% D4 D3 y# h6 rROMf地址 BANK编号3 `0 {4 r* N( g7 \% I6 C) \* T
00010-0200F 0
: A/ i* a8 u/ j; p+ u02010-0400F 1* \; f: M5 @7 F4 B9 n4 F
04010-0600F 2
. q6 O, m1 g* W06010-0800F 3% s8 c; \1 y& C+ o" f) [8 s5 e
08010-0A00F 4
, B) ]7 a9 j0 j. I, z4 ^0A010-0C00F 58 [& j: O5 |* C2 P# ^
0C010-0E00F 65 b3 }. P6 Q# y4 O% f
0E010-1000F 7
1 W' n) D& d1 H1 Z0 t6 ^1 c# V10010-1200F 8" n7 v! c$ y+ j" A% P- P% k$ i: @
12010-1400F 9( M+ n# s p5 J& i; H
14010-1600F A) u( s4 d* L( T- k) _$ N# ^
16010-1800F B
5 W: y F/ z9 _- \* g2 S7 v# C6 u18010-1A00F C
+ P2 I1 l9 J! e W8 M V' U5 l1A010-1C00F D6 M p% N: v/ g3 a' h; |4 Q
1C010-1E00F E4 m% {3 [& s/ b
1E010-2000F F, B9 ?: u- g O. p! S3 W
.; E. P' g8 M* j! b
.
8 z1 y5 Z6 ^8 }* m g3 e& {. a1 A# Z% Z6 f9 v7 k
3 ]# Q, g. p- g+ ^0 t
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
3 B6 ?* L# Y& F, U. @8 h/ i
; I& w2 c, o+ }因为扩到144KB的话有的模拟器是不认,无法运行
. ^) X' R! C" w& [
/ W1 R2 K' [8 u, O/ x为了全FC模拟器能兼容,所以只好扩容到256KB( q& Q, @- L1 Y3 I, u* ~
8 z) T" O, t2 T( H4 d
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机& h, U. e% z1 V/ P
! {/ \+ l0 L+ g |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|