Смена региона НА ГОРЯЧУЮ (Sega Mega Drive)

Поделиться
HTML-код
  • Опубликовано: 28 ноя 2024

Комментарии • 1

  • @nicolaysmirnov4542
    @nicolaysmirnov4542 2 года назад

    Я думаю, всё так получается потому, что математический расчет и отрисовка фрейма происходит в привязке не к реальному времени (как это можно было бы реализовать на ПК, благодаря чему между было бы свободно менять fps), а к тактам процессора, что является более оптимизированным вариантом. В итоге получается, что расчеты и вывод изображения искусственно растянуты по времени так, чтобы органично выполняться в нужном fps. А если fps попытаться принудительно сократить, то на экране появляются артефакты - это то, что не успело выполниться в отведенный алгоритмом период времени. Спасает ситуацию то, что математика обычно выполняется раньше, чем отрисовка, соответственно, потеря 10 Гц затрагивает только графическую часть. Однако, стоит только усложнить алгоритм, более тщательно отслеживая прерывания контроллера управления на всём времени формирования фрейма (включая конечную отрисовку), по ходу дела внося коррективы в поведение персонажа - и тогда начинаются глюки с физикой этого персонажа. Поэтому при смене 60 Гц на 50 Гц других глюков, кроме скорости работы, и нет, а наоборот - есть. Также очевидно, что эмулятор выполняет свои вычисления не так, а как раз привязываясь к таймеру (ну, иначе пришлось бы как-то подстраивать скорость игры под разные ПК). Соответственно, эмулятор делает расчеты гораздо быстрее, чем это делает консоль, а затем делает паузу до следующего фрейма. Отсюда и меньшее количество глюков у эмулятора при переключении региона по сравнению с реальной консолью. Однако, чем лучше сделан эмулятор (более приближен к консоли), тем больше будет и таких глюков у него. А что касается программной реализации запуска нужной версии игры, то тут могут разные варианты - в зависимости от того, что захотел разработчик. Понятно одно: при запуске программы, записанной на картридже, алгоритмом запрашивается из памяти консоли номер региона. А дальше либо программа просто меняет параметры по номеру региона и продолжает работу уже в соответствии с ними, либо при старте запускается что-то типа програмы-загрузчика, которая в зависимости от кода региона запускает одну из основных программ, которые отдельно друг от друга хранятся на картридже. Реализовать можно и так, и так при желании. Тоже самое касается и выбора языка: можно в одну программу напихать текстов на разных языках, а можно несколько игр сделать и выбирать загрузчиком при старте.