Mat*_*zuk 4 c++ assembly assemblies
如果我有一个旧的PC游戏,某些变量不能超过255而不会崩溃,是否可以通过修改Windows 95可执行文件将所有8位整数转换为16位整数?
我正在谈论的游戏是1997年的Total Annihilation.虽然游戏本身远远超过它的时间并且有能力被改编成史诗般的体验,(地狱,游戏是如此领先于它的时间,数据文件使用类似JSON的语法...游戏也支持4K,看起来仍然很神奇.)不幸的是,游戏中的武器总数有限.所有武器都有ID,武器的最大ID为255,如下所示:
[NUCLEAR_MISSILE]
{
ID=122;
name=Nuclear Missile;
rendertype=1;
lineofsight=1;
vlaunch=1;
model=ballmiss;
range=32000;
reloadtime=180;
noautorange=1;
weapontimer=5;
flighttime=400;
weaponvelocity=350;
weaponacceleration=50;
turnrate=32768;
areaofeffect=512;
edgeeffectiveness=0.25;
energypershot=180000;
metalpershot=2000;
stockpile=1;
targetable=1;
commandfire=1;
cruise=1;
soundstart=misicbm1;
soundhit=xplomed4;
firestarter=100;
smokedelay=.1;
selfprop=1;
smoketrail=1;
propeller=1;
twophase=1;
guidance=1;
tolerance=4000;
shakemagnitude=24;
shakeduration=1.5;
explosiongaf=commboom;
explosionart=commboom;
waterexplosiongaf=fx;
waterexplosionart=h2oboom2;
lavaexplosiongaf=fx;
lavaexplosionart=lavasplashlg;
startsmoke=1;
[DAMAGE]
{
default=5500;
ARMCOM=2900;
CORCOM=2900;
}
}
Run Code Online (Sandbox Code Playgroud)
这是否值得尝试?我对汇编语言不是很熟悉,但我听说使用C++,你有时必须在某些情况下在当天编写自己的汇编语言.
我想做的就是通过编辑.EXE将所有8位Ints提升到16位,这有多难以实现?
我想做的就是通过编辑.EXE将所有8位Ints提升到16位,这有多难以实现?
如果没有访问源代码,基本上是不可能的.用16位整数替换8位整数将改变包含它的数据结构的大小和布局.任何"触及"这些对象的代码或包含它们的任何对象都需要更新.识别该代码将是一个广泛的项目 - 很可能,它需要将大部分游戏手动反编译为C源代码.
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |