签到天数: 2034 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。! u( ?+ K: k' e; Y9 \" G
' L5 d! I+ m) n/ T修改内容:' z6 Y* O- |% H1 ^# _1 T
1.P ROM由128KB扩容到256KB3 l/ G1 c6 h( @. g# a6 T6 ~
2.按START+B武器数量为99
( x0 R2 @. D% t, R* @6 ]8 h- S3.按START+A补血5 c# ]$ { v/ E4 @4 ]. v
) N8 z3 }) r1 A5 y9 A" C& Z
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来( j0 w g# \7 [# O+ d; a
3 d0 V6 O8 T9 `8 M! w
从原单位滚蛋后就有时间来弄一下
+ K+ O! b- `4 V4 T6 S& Q% _& X/ u N# u0 b/ R7 U$ B
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚6 \7 j* G) z+ |2 T3 G: g( W9 j/ [
/ d9 S; m, @4 T2 O t) I) V关于如何切BANK:请看相关mapper资料吧
! U3 l2 ]5 w0 x6 C5 S8 c6 r: y3 g6 e5 F! ]* {7 o
说说我双截龙3 MPPPER 04如何切BANK:
/ `" d3 L- @3 U8 y. z- V( R% U. Y$ n7 o- $xxxx
4 d, K; z* ^+ ^% t4 b- p - LDA #$07
4 B" `% X8 _; X: q - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
- C) M" E# \8 F6 s4 M" m - LDA #$0E! r! G- h6 @9 i5 |
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF; G. ~, L. {) D" K* X8 H% |( z h) L
- JMP $A000 ;跳转到$A000执行
) o1 H6 a1 Y( B3 p0 k* r! O - 8 \+ c$ x$ f) y7 v1 P" A
- $A000:
/ z& p; @& n, k& E! a0 {0 P7 G - .- a w5 i6 t2 H, w- q( J
- .9 V8 L) a0 T% ?) @3 D* K4 |+ E
- .- a& w4 j6 r1 O7 @2 X9 B
- . k5 ]1 x- x* i0 s0 C
- JMP $xxxx ;执行完自写的程式后跳回去+ e A, X: c# i& u+ }
& s) p* J& k7 ]4 n& _2 a7 e2 V9 ^- $xxxx:
6 k1 E7 A# i% K* p ~4 F - LDA #$07
/ e8 P& w; ]$ L5 Q - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF1 o" {+ F* M' e; I6 O
- LDA #$0D
- @6 J; J/ N4 ?; ^4 V1 S$ w - STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF3 r" O: g& c8 h [3 K9 K3 U
+ i: }- @) F, F- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议
/ e& k4 `, \& E) F' ~" ~. |* ~ - # z' [/ m4 G/ Y
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)
) m: u, u) Y# h! u# A- } b, Q7 k; x+ c. {8 i
附:ROM 16KB BANK编号( p/ d7 j( z" k P% l% S& p0 q5 ^/ M
) l/ y, k o9 e1 m
ROMf地址 BANK编号
% ?) ~$ R. r! C00010-0200F 0
/ u2 i v" [+ W4 g02010-0400F 1' P" D- O+ L$ [, C- J8 z
04010-0600F 2( K4 {9 c# r/ e
06010-0800F 3
/ i: p! I0 \! n) D# o) \08010-0A00F 40 I7 I9 h' `8 T2 ]
0A010-0C00F 5
* ~ b9 |/ V4 U7 v& k0C010-0E00F 6* e% m# \8 j V: S4 N( N$ I
0E010-1000F 7
* |8 _- s8 ~2 S3 M6 E ~, I10010-1200F 8
4 K2 ?6 t; }# z8 B2 @5 c# U12010-1400F 9' A! q* _& ^" s* C: F) G
14010-1600F A1 Y+ c5 L* x/ c3 `/ v+ H: x+ K; y
16010-1800F B. ?- u% G( V4 I0 Z8 Z9 x- J
18010-1A00F C6 y$ Q+ Z) D2 ^
1A010-1C00F D6 I( g+ k" P; Y9 W/ O
1C010-1E00F E
' L! G$ ^" x( S. O e; N" c1E010-2000F F
+ M# H f6 x; K( r6 r.
5 L9 \- j" y+ ?6 v+ s1 O" b.
. T2 q; Q7 D. }7 v.' r4 B- I, _# |% \) m
) M9 d- J2 M2 E解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?1 n0 X7 ~4 k0 l, W* ^: `: V
" W5 B1 N; C) |+ b4 u因为扩到144KB的话有的模拟器是不认,无法运行
9 p$ e0 A0 m9 P% L# z$ c
L5 }2 g/ `' ?- Z9 [+ v为了全FC模拟器能兼容,所以只好扩容到256KB; x2 P0 y6 [ L2 _- @
: [- p9 M$ L$ h- s3 {3 o补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
9 Y* {, @) z1 a
/ G0 ?' v3 j6 ~" q( H! ^" _ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|