签到天数: 2055 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。/ v& J, a0 ^/ u8 x2 X
0 D# m! b: ^% ]1 L修改内容:
$ V' a4 v- G5 C6 X4 u0 q w5 m$ n1 H m1.P ROM由128KB扩容到256KB9 `3 U* m& x, g* B. \0 E" W* E! `3 B
2.按START+B武器数量为998 Q+ Y' [0 W/ P. W
3.按START+A补血
; Y5 O# j. s( q1 \7 R3 Q3 b' F# h" j2 n* A# Y
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
* \5 }9 d" `( y$ g3 d* O
* D3 h% ^! d( U7 z从原单位滚蛋后就有时间来弄一下$ l) T/ q. {8 ]0 r2 U
" y( i& I# L5 C' g& p2 ~
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
r- c0 u9 p! v7 L: W0 {2 k/ F$ J x0 G- M4 S6 f
关于如何切BANK:请看相关mapper资料吧/ s1 \ F0 Q; B' e' o# p; m3 e
7 G* g) `2 u5 ]$ ~6 b* j7 d8 ]说说我双截龙3 MPPPER 04如何切BANK:
0 U+ G9 w) P4 r4 c- Q2 O) ?# F- $xxxx
: r# s3 y( M, }, U- B - LDA #$07
( S: F: z$ c% m" L, @- X9 Z% z - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
1 a/ z. d6 ^+ y, K - LDA #$0E
! l5 ?/ r, d! l - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
+ e9 }% {/ T/ M' B F. e - JMP $A000 ;跳转到$A000执行+ x( @) O: y( k
* P9 L! w3 }/ q0 S- $A000:3 K0 T7 X, L/ O& B
- .3 l9 L, C% e4 r' s& ~: }
- . W- C( _ ?7 N+ Q: f h4 b2 L' s
- .
. v8 i6 u" P3 Z. C- ? - .4 f$ W& @) O8 W1 B6 H$ ^' k6 G
- JMP $xxxx ;执行完自写的程式后跳回去
7 @' v+ N7 I o/ ^# a( r r; H - 8 s C& k. H% k! c
- $xxxx:: x: _1 j& J( Z5 w
- LDA #$07
0 Q% X3 `) x t1 {2 \ - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF; f) X5 {9 O0 V9 V& |0 u
- LDA #$0D# L. T) ]: s# k3 L3 f9 S
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF* c. X) x: t% J$ i9 E
- $ n9 y: x$ S8 t) e
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议3 Y& {& P7 y3 v/ H* }; q
' k; A; L7 C( R0 q
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)1 B. N- s' _) F& a6 q7 R' J/ y
: J! o; y% f4 z8 A' Z) D& H
附:ROM 16KB BANK编号$ h1 X0 `+ p! y4 Y$ H% y
& [) @6 j( A& |1 A$ ]ROMf地址 BANK编号4 g T8 f0 t' I! y9 L
00010-0200F 0' r" I. n. M/ }( {, Z& e
02010-0400F 1
, x; ?6 l" w7 X) |04010-0600F 2' ^ {6 Z$ y* T# R
06010-0800F 3
7 L; ~) {2 W$ \. Z0 }9 \) H08010-0A00F 49 F3 s: x3 ]. y g; f
0A010-0C00F 5+ x7 R; D* C: N) u7 U
0C010-0E00F 65 N- I7 ]- s2 l, k
0E010-1000F 7
7 W% a- |# m& H* L: l10010-1200F 8/ ]2 j# [1 I1 g" a% s6 Q, O( w
12010-1400F 9
% b; o2 z- G! V: l/ s14010-1600F A
9 c( h8 d% w: j9 r K; j16010-1800F B6 k& ]6 S" T1 F3 S* W0 m
18010-1A00F C
" }" u, v, g5 D5 A1A010-1C00F D
; h1 e( x5 E) g) C1C010-1E00F E
. q6 V! z+ a- q% ?1E010-2000F F
1 v; @4 I9 M' r( Z' U* v; |- _6 M8 `1 b.
6 `+ d. E- }. M F9 h8 @3 ].: Q/ C7 C3 I& Q2 ~/ l) b* b7 S, y
. D* T8 X4 z# q6 Z; A: s1 J! I, @
( c% Q) E0 Y+ p5 u! `% C! ^
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?+ `1 |% _0 Z; r# M
7 |% h2 \0 H1 H, v
因为扩到144KB的话有的模拟器是不认,无法运行% t& [. v7 P, t0 |
M! R1 L. K9 X. k为了全FC模拟器能兼容,所以只好扩容到256KB, M* v/ d8 i' M
8 t8 N1 Q8 t, u- W补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机! o+ R- ~& C) h% I
! o' ^5 |5 T. {# U: W& ]7 p |7 @ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|