Касательно читов. Я простым анализом памяти смог узнать в Microsoft Train Simulator состав поезда игрока, его скорость, положение контроллеров, пройденный путь, давление в различных элементах пневматического тормоза (оказывается, в PSI), боксует ли он. Жаль, я не смог обнаружить привязку всего этого к путям.
Как я это делал. Через ArtMoney получал некие базовые адреса. Если адрес статический — ну, всё в порядке. Если нет — писал утилиту, в которую изначально вводился найденный адрес. По цифрам я прикидывал, где мог начинаться объект, и снова поиск через ArtMoney… Ну и так далее, пока не дойду до статического адреса. Вот так оно у меня выглядело.
TmstsLocalTrain = packed record
_mem0000 : array [$0000..$0061] of byte;
// 0062
HeadWagon : dword; // Головная единица ПС
// 0066
TailWagon : dword; // Хвостовая единица ПС
// 006A
LocWagon : dword; // Управляемая игроком единица ПС
// 006E
_mem006E : dword;
// 0072
Caps : dword;
// 0076
_mem0076 : array [$0076..$0091] of byte;
// 0092
Speed : single; // Скорость по скоростемеру, м/с
// 0096
Acceleration : single; // Ускорение, м/с2
// 009A
_mem009A : array [$009A..$00D5] of byte;
// 00D6
TimeSec : single;
// 00DA
ReversingOdometer : single;
// 00DE
end;
ПС = подвижной состав. Одометр реверсивный, потому что при осаживании (заднем ходе) считает назад. Байтовый массив _mem0000 — это память, которую я не смог опознать. HeadWagon, TailWagon, LocWagon, Caps — на самом деле указатели, но поскольку они не имеют смысла в адресном пространстве лентописателя (задачей было сделать аналог скоростемерной ленты), они Dword, а не указатели.
Вспоминал, что значат сокращения П, ПТЭ и прочее. Оказалось: паровоз, тепловоз, электровоз. Естественно, регулятор пара есть только у паровозов.