|
|
发表于 2024-4-5 22:29:12
|
显示全部楼层
大佬您好,晚辈这边斗胆咨询您一个关于MD Hack的问题,如有冒犯还请海涵!
, f/ C- @1 X, U! N7 a) ?/ b; W/ A1 `- {4 E- O7 C( `# m( k, y6 m
有幸拜读了您的教程:
( p. U# X1 t; y8 J" Ghttp://2006.emu618.org:6180/thread-193604-1-1.html
+ y3 |$ u+ z* W h. P
, q+ U; l6 U+ K, s- Y跟着您的教程做了一遍,收获很大。% V# V& v Z2 U. R; P7 G9 k
: r, q8 u6 f3 M( @3 m' @不过我由此想到了一个问题:
. s) i: \7 H/ W例如《魂斗罗:铁血军团》体力值的例子
+ S- R2 q4 t% A' O- H: h0 {( l
, y* B/ O7 |! |, |! V$ r011DE8 7A01 moveq #$1,D55 E7 e$ y, D: }& O7 v: M
011DEA 932A000D sub.b D1,($d,A2)1 }( u, L: [ ]
011DEE 1C2A000D move.b ($d,A2),D6
; L! W i* e5 ~ w7 a' E
/ m, V- P$ v3 ^" r: W实测,在将932A000D改成4E714E71的前提下,再将7A01也改成4E71,不会影响无敌效果。/ U3 f; ~: I- i1 z2 w7 L
* }; C, g1 L* m
那么我想,如果像下面这样,将011DE8和011DEA处的命令改成JMP,跳转到某个空白处,然后在空白处重新写上011DE8和011DEA处的命令,最后再跳转回011DEE,是不是就可以恢复正常的受伤功能:
# o# O& v- ~% Y, M( p: w
% i" Z( ` m% q$ D$ Y6 r9 s011DE8 4EF9000801C0 jmp $0801C0.L
7 u8 I6 X# n9 N8 P7 N5 m' D Z
% ^& Y0 p5 N7 C; V N0801C0 7A01 moveq #$1,D5
- h! d7 o/ i& J! Q; \) s0801C2 932A000D sub.b D1,($d,A2)1 j0 s/ S: ^( H) J% _) o
0801C6 4EF900011DEE jmp $011DEE.L! N2 g J3 |% E' v0 e0 H k/ r$ g
8 k Z% F1 t% U011DEE 1C2A000D move.b ($d,A2),D6
' z( N7 w" r0 ?8 j h
" ]' Q5 ^0 T( K2 v! s$ k然而修改后并未达到预期效果。相反,游戏在角色受伤后立即死机。
4 M) m9 ^1 @+ ?7 j; ~! k( _5 _4 Z5 V6 w% b4 d$ b
请问这是为什么?如果想实现这种操作的话,正确的方法是什么?1 H' M& s- U! k8 C% S
2 S w! C+ C9 n& A
之所以产生这个想法,是因为最近在汉化的一款游戏需要对字库进行扩容。汉化已经几乎完成了,然而游戏中的一些小字体区域还存在一些问题,如果不改会很难看。7 N6 G% j, c4 C+ X* G4 K
, f% `% b M' @, K这些小字体由于只使用一个字节进行编码,游戏原本只能显示256个字符。我希望将编码方式改为00-EF为正常映射,F0-FF则切换VDP至相应页码。我认为这需要将原本的程序跳转至一空白处之后再进行自由发挥。 s, F7 p8 I6 K) s9 r: J
( Q% I# f7 ]' _我并没有任何汇编或反汇编经验,所以打算先从最简单的进行尝试。想不到一上来就遇到了问题。% s9 M# f P/ Q
9 P! A; U' | _; C1 w0 E
期待您的回复! |
|