сборка — если бы я взял старый Windows 95.EXE, написанный на C ++, и хотел бы преобразовать 8-битные целые в 16-битные, было бы сложно?

Если бы у меня была старая игра для ПК, в которой есть определенные переменные, которые не могут превышать 255 без сбоев, можно ли было бы преобразовать ВСЕ 8-битные целые в 16-битные, изменив исполняемый файл Windows 95?

Игра, о которой я говорю, — это Total Annihilation с 1997 года. И хотя сама игра была далеко впереди своего времени и обладала способностями превращаться в эпические переживания (Черт, игра так сильно опередила свое время, файлы данных использовать JSON-подобный синтаксис … Игра также поддерживает 4K и выглядит потрясающе.) К сожалению, общее количество оружия в игре ограничено. У всего оружия есть идентификаторы, а максимальный идентификатор оружия составляет 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;
}
}

Стоит ли вообще пытаться? Я не очень знаком с языком ассемблера, но я слышал, что с C ++ вам иногда приходится писать свой собственный язык ассемблера в некоторых случаях в тот же день.

Все, что я хочу сделать, это просто увеличить все 8-битные Ints до 16-битных, отредактировав .EXE, насколько сложно это будет осуществить?

4

Решение

Все, что я хочу сделать, это просто увеличить все 8-битные Ints до 16-битных, отредактировав .EXE, насколько сложно это будет осуществить?

По существу невозможно без доступа к исходному коду. Замена 8-разрядного целого числа на 16-разрядное изменило бы размер и структуру структуры данных, которая его содержала. Любой код, который «касается» этих объектов, или любые объекты, которые их содержат, должны быть обновлены. Идентификация этого кода была бы обширным проектом — по всей вероятности, это потребовало бы большей части игры вручную декомпилирован в исходный код C.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]