Как я понял, нужен формат этих трейнеров
Xbox Original ETM Trainers, которые используются в XBMC4Xbox. Нашёл первый попавшийся репозиторий:
https://github.com/rkalz/xbmc4xbox. Здесь формат:
https://github.com/rkalz/xbmc4xbox/blob/master/xbmc/utils/Trainer.cpp. Там не считаются первые 0xA байт, видимо это: размер файла (4 байта), 01 00 (версия?), размер заголовка? (4 байта). Там получают описания читов, но ETM_ID_LIST странный, по указанной позиции считываются 3 ID по 4 байта, но в файлах только 8 байт и последний залезает на другие данные. Оставшиеся байты между заголовок и строками - COM файл, как написано в Trainer.cpp, т. е. видимо обычный код, который я попробовал дизассемблировать в
https://onlinedisassembler.com/odaweb/ (i386) и похоже на правду, в конце возврат (байт C3).
Весь трейнер грузится в память здесь
https://github.com/rkalz/xbmc4xbox/blob/50f38fb2fce74f2d7679ffc14f3d5002b9c65b6a/xbmc/Util.cpp#L890. Причём памяти выделяется для трейнера 2400 (ETM_HEAP_SIZE), включая загрузчик 167 байт, но некоторые ETM больше по размеру.
Я посмотрел код читов и там везде проверка вида: cmp BYTE PTR cs:[ebp+0x116],0x0, где 0x116 - это смещение на область в трейнере (позиция на это в ETM на 0xA), где стоят нули и их как раз сколько читов в списке. Наверно это проверка, что активировано.
Может вы всё это знаете и речь была только про поиск кодов нажатия. Разбор трейнеров не поможет?
UPD: Оказывается есть программа для генерации ETM (
MXT Easy Evox Trainer Maker от 25-Nov-2004). Я сначала посмотрел ETM для Fatal Frame
http://ps2wide.net/xbox.html#xff, а там код лишний: две инструкции mov ax,0x1 в начале, после первой ax не изменяется, можно подправить ASM файл и произвольный код написать.