签到天数: 1974 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。& Z- D7 j: r8 P0 a
7 {, d6 o6 ~7 k) I
修改内容:* @% m6 l' y. P1 ^* I5 W
1.P ROM由128KB扩容到256KB. h7 H- F" o, W& T+ ^, ?, n
2.按START+B武器数量为99
* N' V& I" h, a _# N' G; u3.按START+A补血
, M+ F1 B/ Y6 P1 w
; v6 @! t- Z6 }' Y3 h这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
+ C, L" I9 Q0 d) E) x4 v6 I7 t" c7 b" T! t
从原单位滚蛋后就有时间来弄一下' d+ ~ ~3 C5 {3 Z% z
& o' D' X. p0 T2 h2 Q1 J
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚$ I, M% _2 u! k+ L! E& Y- ^. m2 F: ^
% S. ^. @! o5 V0 u/ p5 r
关于如何切BANK:请看相关mapper资料吧
2 w) I* q% I% ]$ }: b
9 V0 E- O5 V' L3 ~7 a' y) |说说我双截龙3 MPPPER 04如何切BANK:- " G6 t9 E0 ~/ u2 K1 C
- $xxxx
/ Y @5 {; c; i6 Z; A' g - LDA #$07
# J* s( R+ u- k& t2 A, f1 u2 p - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF$ Q9 s8 _3 W' l- q+ O' A
- LDA #$0E5 w9 h, G; Y& K. ]7 j) n" R
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
# ^* Q3 t2 Q5 L+ K$ J# e( I - JMP $A000 ;跳转到$A000执行+ P6 o8 T+ N' R# k
- 5 F. N1 j/ c1 F3 x1 y- n- {
- $A000:5 p. e6 B, ^5 s, N+ \
- .
' Q1 M% T% s2 }+ z - .
) r E" P: \. X* x9 q6 {, G - .
) s" _$ s4 g0 t - .9 T( j: s4 y6 |2 B. r3 ?
- JMP $xxxx ;执行完自写的程式后跳回去
1 Q4 S7 ]7 P* l" c" p" Y - 3 R8 @% P! T% C% O
- $xxxx:/ Z3 Z! d3 @/ ~5 P+ V
- LDA #$07' L$ q8 m6 J2 w; c
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
5 B6 g( `! V* k. j$ g - LDA #$0D2 V- [: n- x3 u' Z
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF9 D" u2 J* e, A9 v' w4 i
- 4 d; k" ]( s3 j0 B
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
9 \0 @& `- `, f, x" e/ |! D
) [9 c0 |$ ~! O% m
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)" v) a) e5 S, B# F: [+ e& q" i
* T; D* e/ f3 f5 {5 D: W附:ROM 16KB BANK编号" K% f1 w* j z
- j0 N- [# p1 l
ROMf地址 BANK编号6 A2 |' a+ W( o0 C0 C" q& Y
00010-0200F 0
1 { |4 p: k5 `. H6 Z4 `02010-0400F 1
! E! F' C( V- E) o+ E; G( V& K04010-0600F 2
) l( z9 G, u9 P0 M! f' J/ `* g/ D06010-0800F 3) u; R3 g' V9 |3 J s* D3 y
08010-0A00F 4) j6 q* c7 z9 s& T o; I0 K; h; L
0A010-0C00F 5
+ C2 j- @' ]& g$ c$ ]/ [4 o( W6 J0C010-0E00F 6) f: @- P7 O+ q, N9 i( K
0E010-1000F 7* _( j/ L1 P' }$ v8 l
10010-1200F 8' X" C$ n; E! U* }; j
12010-1400F 9
1 L" o: s# t) V! F7 n) O14010-1600F A* A2 D# S. T# I; c! C+ R# ~
16010-1800F B
6 \+ n' p' T" H7 a18010-1A00F C
" \- y0 C k7 D/ Y1A010-1C00F D! x' g7 t T4 {4 A+ [4 R8 l
1C010-1E00F E
2 z0 n- {0 Y C. G8 q4 P0 M% A5 C1E010-2000F F* T' v j0 s8 v4 b8 g4 z
.
; l& W1 _8 y0 B- U) T! o6 N8 k.$ H5 R' i) {. H
.! \" Z T5 _9 n
0 r$ _1 f0 e' X9 m% {0 X0 S
解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?
5 N5 P8 m8 |: |: X
8 u; T. H# ?1 ? ]+ a# X# g6 |" N, f因为扩到144KB的话有的模拟器是不认,无法运行 {# Q9 `: j' I; i3 v- H! b0 F
$ @3 [" l6 r9 w3 r& z" v, w3 H为了全FC模拟器能兼容,所以只好扩容到256KB0 Q3 W# i) _- I: J0 q) w; b
1 Y5 y( V3 T: M( a# N, q9 p
补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机( c4 o/ f3 W _
: n" w- b$ k/ _$ X0 n' M |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|