Исходная информация - это и есть ОЗУ. Из этого ОЗУ тебе надо извлечь данные, которые в будущем позволят игроку вернуться к такому же исходному состоянию. Ты не можешь перенести все ОЗУ в 8 кб. Тебе надо вычленить лишь ключевые моменты - это и есть шифр, код, пароль - назови как хочешь. Иными словами, внутри игры создается кодировщик, который способен создавать код текущего состояния ОЗУ, по которому в будущем его снова можно будет воспроизвести.
Исходная информация о прогрессе - это список параметров прогресса (прокачка, очки, инвентарь, деньги и др.) в данный момент времени. ОЗУ - это состояние всей игры (прогресс, код движка, положение врагов и игрока и др.) в данный момент времени. Игре достаточно взять параметры прогресса и записать их в SRAM, не парясь с кодированием всей ОЗУ. Даже если игра будет кодировать состояние ОЗУ, то на это уйдет огромное количество времени, учитывая скорость работы тогдашних процессоров. И на декодирование уйдет тоже много времени. Ни старые, ни новые игры не создают код состояния ОЗУ. В этом просто нет никакого смысла. Проще и быстрее записать в SRAM отдельные параметры ОЗУ, имеющие отношение к прогрессу в игре. Из-за этого, когда игрок загружает сейв на 16-bit играх, он видит не тот самый момент, который он сохранил, а, например, начало уровня, но с сохраненным инвентарем и прокачкой персонажа. Игра запускается заново, но с некоторыми сохраненными параметрами, связанными с прогрессом. Иначе игры на SNES не просто запускались бы с сохраненным прогрессом прокачки персонажа, но даже с сохраненной позицией игрока с точностью до "миллиметра", и даже враги находились бы в тех позициях, на которых они были в момент сохранения.
Ты пишешь о какой-то дичи. У меня такое ощущение, что ты судишь о железе консолей по поведению эмуляторов. Эмуляторы создают либо весь образ ОЗУ, либо они создают образ всего SRAM вместе с пустым пространством. Об этом я писал выше. То же самое происходит при создании образов ПЗУ картриджей и даже CD. А кодировать 64 кб ОЗУ в 3 кб SRAM - это уже 7z архиватор с ультра сжатием. Для консолей того времени - это фантастика. Можно закодировать количество денег и инвентарь в 32 значный код, но закодировать ОЗУ в код нереально. Это невозможно по законам математики.
Коды были придуманы не для оптимизации записываемой информации в SRAM, а для того, чтобы игроку было легче вручную загрузить игру и чтобы он не смог взломать прогресс.
С того, что используется всегда все пространство, какой бы информация ни была. Отличный пример этому - карта памяти пс1. Каждая игра обязана использовать весь блок в 8 кб и ни бита меньше, если хочет сохранить прогресс.
Если PS1 использует все 8 кб, значит информация о прогрессе весит 8 кб. Если же информация весит меньше, тогда остальная часть карты будет пустой или зарезервированной для других сейвов (если в игре несколько ячеек для сохранений), "заполненной" одними лишь нулями. Игра даже не будет считывать информацию, выходящую за рамки адреса определенного сейва. Для каждого сейва свое адресное пространство в SRAM. Поэтому, когда игра читает сейв в SRAM, она ограничивается в этот момент адресом сейва. Даже если SRAM будет объемом в 1 гб, игра все равно будет считывать только адресное пространство сейва в 3 кб. И запись будет тоже ограничена этим адресом.
Я не исключаю, что если в SRAM записывается только один сейв, то игра может считывать при загрузке прогресса весь SRAM, включая его пустые области. Такое вполне возможно и, скорее всего, такое было часто. Но даже в этом случае пустые области остаются пустыми.
Но если рассуждать философски, то да, даже пустота - это некая информация. Но я не о философии, а ты, походу, философствуешь))).