签到天数: 1927 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。5 S: M0 ?7 {( \! D& S
! P0 y! f5 J9 P, I# ^) d1 E修改内容:
: X( M0 a4 v7 |1.P ROM由128KB扩容到256KB
+ j) i7 I" T0 q: G, x2.按START+B武器数量为99
/ e- d2 d' }* L, E5 t3.按START+A补血
7 p* o$ b& F& w" {# D
* f9 W ^; N9 y/ d) |# l b. r这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
) h! f9 B8 M1 F! M
0 y, A+ F2 y. ]) A) D& ]! }从原单位滚蛋后就有时间来弄一下
9 [* V) y4 k3 v/ y5 S1 [2 ~# { _5 j; P7 C
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
% D7 y" ?. R3 S) M; T/ b0 d# g2 e# q6 m* R# U6 b3 p5 C
关于如何切BANK:请看相关mapper资料吧( X6 X( \% Q$ p8 a+ G
, |. S, h9 H& O, E3 b* {
说说我双截龙3 MPPPER 04如何切BANK:
+ R. f2 Z7 W7 f8 v0 Q: @9 G6 D- \/ w- $xxxx0 @) x8 ^ ^' u n( H7 ?4 `8 V% r- [
- LDA #$076 j' R, B: G; \+ f
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF0 p4 }* X) o3 A, I9 g/ O
- LDA #$0E
0 @+ \0 R. p( N: n* J - STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF# u0 D. v7 A: F' z; O: Z) J
- JMP $A000 ;跳转到$A000执行
}" `) R! {$ a
( F* m$ a4 M# W, F- $A000:5 m, z* e- H% r, F: }! {; `$ E, y9 @
- .
4 D# E9 g) \8 }* [1 K - .
, y3 Y* H" c: m0 A) P# E - .
, C p' |- Q; _2 e! W* C - .* e( O" [8 @ V) o& _" N$ C+ @( }
- JMP $xxxx ;执行完自写的程式后跳回去
2 h* [8 d* g, X4 y# z5 H
% `( N3 \! B0 M" L6 ?$ c! |% S9 F- $xxxx:
% J0 `% ^' f t6 ~$ _' p/ T7 W - LDA #$07$ P/ R8 X. \; L* E9 h
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF2 y. W0 K5 B& d2 E# m
- LDA #$0D
! A# j5 f" y2 _ - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
9 N, g! o, j a6 a K
" g) |' G; R8 Q' K/ S8 |- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
8 P* E% A* d" \; r2 \/ ? - 2 Z' A1 Y: {6 L5 Z0 [
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
5 L7 G$ E; ]5 c) d% o, H; P5 Y! N7 b+ K
: y) P# R- k2 h4 Z附:ROM 16KB BANK编号
+ V" n( C- J1 k6 ^/ @4 t) P$ q
& [% B5 |, @" Z- ?. pROMf地址 BANK编号, ~% B, J' S3 [6 s" \7 q
00010-0200F 0
7 c6 A4 |5 X& x02010-0400F 1" E) d+ z* M" b% Z
04010-0600F 2
' ` a" a1 G; ?! x( F06010-0800F 3
! V4 K, R* P7 K5 @08010-0A00F 43 h6 P( F& S2 W6 M
0A010-0C00F 5
6 I3 k/ y% ~: P; L `0C010-0E00F 6
R, c+ X- p7 s* Y& ?0E010-1000F 7
5 w' v5 S) ]3 ?5 l' m0 I, v10010-1200F 8
% }( J- b( n0 G$ k. f+ {+ x12010-1400F 9
2 d$ U$ @# K& g3 m3 r14010-1600F A# n5 Y O/ h& r& t& ]2 G
16010-1800F B
0 k/ @, c4 o" s18010-1A00F C
3 l: |1 r2 w" Y$ }. r0 N# ]1A010-1C00F D) c: P- ^: p: }% x" v' W6 D2 { y# y
1C010-1E00F E
* n% K! u2 D; j7 T( _/ v* ]1E010-2000F F0 o6 Y# Q) s0 q1 K7 ]
.
; _- `5 U% G+ u3 j.- o4 Y3 Q3 Z& n
.' W: ^2 ^8 |; g) u
( M/ O: w, I$ D% s" X2 a解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?- w/ |2 S! [3 X: z: l( S# ?+ ]
: N [ l: ]3 p; i8 J因为扩到144KB的话有的模拟器是不认,无法运行" z0 r+ n/ e$ @( Y
: t2 s& M8 m8 F2 l/ w
为了全FC模拟器能兼容,所以只好扩容到256KB
% L& M2 Q- [( Q2 U
* V8 E- {$ V( s4 {补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机2 ^8 s# k" E9 G- L
% @- s' V6 g2 A8 _0 Y% G |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|