签到天数: 1995 天 [LV.Master]伴坛终老
|
原帖丢失了,重发一份。' Y# D% t$ X- _* v0 M7 M
, R5 E6 u/ ?5 D; R修改内容:
# m% ~8 P+ E/ J. H% }7 Y+ w1.P ROM由128KB扩容到256KB
% l" G9 }& H4 T- m2.按START+B武器数量为99
; l+ z! P5 l3 R) R9 f3.按START+A补血5 ]0 D( r* p. U7 F
^3 z9 `/ T N& |# E7 G, R4 m
这个HACK ROM本来以前答应某人做个例子给参考一下,因工作忙以及以前用的切BANK方法不完善的关系所以没放出来
; F4 H0 M0 B: U, e1 Y
& D6 _3 [& \0 C9 @ G/ @3 ^从原单位滚蛋后就有时间来弄一下
# n8 N! Y+ ]- `4 R' F1 v: x: b- g, ^0 r9 N: G9 V
关于如何扩容:在文件头后面或驻留体前面添加一大量0xFF或0x00,有可能或在程式中间添加,在哪里视游戏而定吧,有何规律我也不清楚
" o3 L I) v" k% j* C1 M- t. i" Z
关于如何切BANK:请看相关mapper资料吧/ T1 \& M8 i2 b0 m [
c! |: v8 e/ W- Z v, E
说说我双截龙3 MPPPER 04如何切BANK:
& s6 Y9 G" P, Z# X a. |) o- $xxxx+ Y+ R9 i, `# ]0 u, E' y
- LDA #$07# R `; h3 R- X* N
- STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
$ g# m3 l: f) Q$ c - LDA #$0E% D& C b/ _, a1 \/ k. {
- STA $8001 ;把0x0E写入8001端口,把ROM的$1C010-$1E00F地址内容写入内存地址$A000-$BFFF
0 N5 Q: a, Q# i. I$ U2 g' ~ - JMP $A000 ;跳转到$A000执行6 w- V1 g' A0 t7 W. {
. D* j- h) h+ }( D) a: z6 `- $A000:+ t$ v8 q+ d) _ R( M) X: p
- .$ C' a; [: T x, \* I
- .
1 q, `% Q, x4 M' |% ?9 g - .9 m8 O% d" E8 P0 y, f$ U- G; B6 s2 V
- .
d+ V" ^; q5 q; [/ W - JMP $xxxx ;执行完自写的程式后跳回去
3 f/ j* t! Q0 \* j* ]6 W8 m6 ] - 5 `/ \3 l5 z2 o- t: ~3 M
- $xxxx:
/ \! w3 q1 M: b, ~6 | - LDA #$07
1 w5 B6 u( r- d7 ~' c) a - STA $8000 ;把0x07写入8000端口,选择要切BANK内存地址$A000-$BFFF
9 [& Q3 i. D/ |7 s/ ]& w - LDA #$0D" h4 c5 W0 c6 N6 L3 G
- STA $8001 ;把0x0D写入8001端口,把ROM的$1A010-$1C00F地址内容写回内存地址$A000-$BFFF
; D* i. `6 F5 N - y4 z& H9 H1 p
- 切BANK前建议做压栈操作保护寄存器数据,当切换完BANK后出栈还原寄存器数据,这只是建议. z" J( N7 w7 w5 t5 S% v% H
- 5 [; v0 m2 Y6 M. k# e( K8 r/ ]
复制代码 关于什么时候切BANK:用NMI中断来切BANK吧(在NMI中断程式中插入切换BANK程式)* r6 T2 a4 ~3 X P" Y" Y( Z% r5 r
: Z" ]6 h& _6 Q1 p: H- g* f3 h
附:ROM 16KB BANK编号
+ G$ b0 G' `7 x; a, F& d, C
( ^6 z- P" ?& o& \ROMf地址 BANK编号5 I1 f+ [, q4 l' G5 Y
00010-0200F 0
- E1 s0 x: ]5 \+ U& e# K4 A" d02010-0400F 1. P+ [( }2 x3 s. ]; z
04010-0600F 2( x8 }1 {( q- P! w9 B
06010-0800F 3
/ j8 [ ?0 @+ `+ ?% Z! F6 W08010-0A00F 4. p4 N) `- w0 r; H B: b3 ]* x* H1 u
0A010-0C00F 5
8 C% Q% E. u" M |0C010-0E00F 6+ a+ q$ @: ]0 {3 [
0E010-1000F 7) p1 I( i$ C' F) I5 I1 c' e
10010-1200F 8
( A7 p( K F! `5 A# U12010-1400F 9
5 f8 Q+ j/ @" j3 a; K14010-1600F A; c+ X/ \& S. ^- W; C) L; s
16010-1800F B" R8 \3 m4 p" w% g( @' q( G* a
18010-1A00F C
- v' ^% g# f B" P9 g1A010-1C00F D
* J. `' x( _: K% S+ E1C010-1E00F E
. C8 x# P' R m/ i8 n1E010-2000F F
1 [( H! `7 u; Q7 ~+ r& Q1 p." N2 C- M. a; ~/ q* P
.( g9 Z5 r# S: p
.; {1 V4 o0 m D. H5 M
& @5 `5 y- S6 i8 O8 I. ~解释一下我为什么把P ROM 128KB扩容到256KB,不扩容到144KB?# a2 W# s2 p8 M
$ T6 z8 P6 ` e: o2 O3 U
因为扩到144KB的话有的模拟器是不认,无法运行
% O/ c; z5 x2 G8 i% v
* Z- N1 u2 x- G为了全FC模拟器能兼容,所以只好扩容到256KB
# u0 E' n: B6 U
6 V( z: z2 l8 X; b% z补充:扩容后记得修改ROM文件头P ROM 16KB数目(地址:0x4),不然有可能引致载入ROM失败或死机
' x' |8 X# k& g6 l! G
: M. }8 t2 f- N7 x |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|