Костыли и пиксели #4
Первая PlayStation вышла в середине девяностых и имела на борту всего 2 мегабайта оперативной памяти. Мне кажется сейчас этого не хватит даже на иконку приложения в смартфоне. Но когда вышел первый Crash Bandicoot, игроки и критики открыли рты: игра выдавала такую графику, количество полигонов и дальность прорисовки, которые казались невозможными на этом железе.
Как студия Naughty Dog (тогда состоявшая буквально из двух человек — Энди Гэвина и Джейсона Рубина) умудрилась это сделать? Они просто наплевали на все правила и хакнули консоль.
Дело в том, что Sony вместе с приставками выдавала разработчикам специальные библиотеки кода и строго-настрого запрещала лезть напрямую к железу и дисководу. Схема работы была классической: консоль грузит кусок уровня с диска в те самые 2 МБ оперативки, игрок его проходит, затем черный экран загрузки — и грузится следующий кусок. Красиво и масштабно при таком раскладе не сделаешь, память забивалась моментально.
Энди и Джейсон поняли, что официальными методами игру своей мечты они не слепят. Тогда они полностью выкинули стандартный код Sony для работы с памятью дисководом.
Вместо этого Гэвин сел и написал собственный сложнейший драйвер на низкоуровневом ассемблере. Его самописный код заставлял дисковод PS1 крутиться безостановочно. Пока Крэш бежал по уровню, система в фоновом режиме удаляла из памяти деревья и ящики, которые остались позади, и прямо на лету подгружала с диска новые куски уровня вперед.
Сегодня эта технология используется в любой современной игре. Но в 1996 году провернуть такое на 2 мегабайтах оперативки считалось черной магией.
Интересное началось, когда Naughty Dog отправили готовую игру на сертификацию в японский офис Sony. Японские инженеры просто офигели от увиденного. По всем официальным мануалам компании то, что сделали американцы, должно было либо намертво вешать систему, либо физически сжечь лазер дисковода от непрерывной работы. Sony всерьез хотела забраковать проект.
Но код Энди Гэвина оказался настолько гениальным, что игра работала как часы, не ломала консоль и выглядела на голову выше конкурентов. Sony пришлось пропустить этот жесткий костыль в релиз, а Крэш в итоге стал неофициальным маскотом PlayStation.


В итоге горел от игры не лазер , а пуканы игроков)
Даже играя сегодня можно подпалить пукан)
Когда умели в оптимизацию и код.
Недавно поиграл в крэша. Проходя 4 анчартед)
Слово "всего" здесь вообще неуместно. Для 1994 года 2 метра оперативки и 1 м видеопамяти были стандартными показателями. У приставок того же поколения Атари Ягуар и 3DO были схожие характеристики. Да и у N64, которая вышла двумя годами позже, было 4 мб на все.