Для Атари на Мурмуляторе имеются целых три разных эмулятора: Atari 2600, Atari 800 и Atari Lynx.
Первый ограничен исполнением только ROM-файлов для приставки Атари 2600, последний - это очень простенький хэндхэлд, который мало распространён на просторах бывшего Союза, поэтому сосредоточимся на среднем, который теоретически эмулирует Atari 400, 800, 1200XL, 600XL, 800XL, 65XE, 130XE, 800XE, XE Game System и 5200 SuperSystem.
Реализация для Мурмулятора основана на эмуляторе https://github.com/atari800/atari800 - который легко собирается под Линукс. Т.е. основная проблема - ограниченные ресурсы маленького RP2040. Конечно, пришлось повозиться, но удалось запихнуть всё необходимое, как минимум для вариантов оригинального компьютера с 48 КБ памяти. Дополнительные 16 КБ включаются, только если на Мурмуляторе установлена PSRAM, т.к. иначе всё не влезало.
Теоретически эмулятор поддерживает множество разных видов Атари:
Но больше половины из них никогда даже не тестировалось на Мурмуляторе из-за банального непонимания, чем они там внутри отличаются (кроме объёма памяти), как это должно проявляться, и какое поведение соответствует оригиналу, а что является багом.
Первое, что завелось легко и просто - Atari MEMO PAD:
Чуток повозившись, запустил и комплектный бейсик:
Дальше - больше... поддержка запуска файлов-игр:
Естественно, остался и способ запуска ROM-картриджей (файлов-имеджей)
Отдельным квестом оказался звук, который в Атари устроен крайне непросто, со специфическими чипами и сложным миксом каналов, но до базовой функциональности его допинать тоже удалось.
Эмулятор поддерживает пару Денди-8 или Wii джойстиков, клавиатуру, вывод в режиме VGA с эмуляций PAL и NTSC (разное число строк) оригинального устройства. При желании, его можно ещё долго улучшать, добавлять эмуляцию дисководов, магнитофонный вход и прочую периферию, но имеющийся результат уже приемлемый, а лучшее - враг хорошего.
Атари - это отдельный мир, почти такой же большой, как Эппл, но ещё более отдельный )) И, благодаря опыту портирования atari800 на Мурмулятор, я с ним немного глубже познакомился.
Пишите свои вопросы и пожелания, на вопросы отвечу, пожелания учту...
Комментарии (22)
Zara6502
12.09.2024 05:53PS2 Keyboard mapping:
F1 - UI
F2 - Option
F3 - Select
F4 - Start
F5 - Help
Ctrl + Alt + Del - Cold Restart
Atari800 не мой основной эмуль, но мне кажется там маппинг изначально другой, было бы разумно маппинг сделать таким же как в эмуле на ПК и мне кажется там было совпадение с Altirra.
mikeveng73 Автор
12.09.2024 05:53ну, я оттуда передирал. Ctrl + Alt + Del - это уже я добавил.
Zara6502
12.09.2024 05:53на F5 всегда был Reset, F1 для увеличения скорости эмуляции, тут не принципиально
mikeveng73 Автор
12.09.2024 05:53А вот ресет я мог и убрать (не помню), но случайно ресетить с функционалок - не, не моё )) Я ещё помню, что смотрел на корпус реальной Atari 65XE(?) и по тем кнопкам ориентировался, что ещё такие скошенные.
Zara6502
12.09.2024 05:53Help я даже не вспомню где и работает, его смело можно задвинуть на страшное сочетание клавиш, а Reset вполне себе активная кнопка, соответственно F2-F5.
mikeveng73 Автор
12.09.2024 05:53Точно, с этой картинки и делал, вспомнил - а ресет специально убрал, т.к. слишком часто его случайно нажимал..
Zara6502
12.09.2024 05:53Joystick 0 emulation:
Q / W / E - up left / up / up right A / / D - left / / right Z / X / C - down left / down / down right Left Ctrl - fire
Joystick 1 emulation (numpad):
7 / 8 / 9 - up left / up / up right 4 / / 6 - left / / right 1 / / 3 - down left / down / down right
RightCtrl - fire
--------------------------
не совсем удобный маппинг для одного игрока, коим будет 99% ситуаций.
Joy0 = "стрелки управления и левый контрол" для одного.
mikeveng73 Автор
12.09.2024 05:53по-хорошему надо делать динамическую настройку кнопок эмуляции. а по-умолчанию - можно любой набор зашить. я потыркал с кнопок - вроде норм - одной рукой можно играть.
Zara6502
12.09.2024 05:53самая суть игры на двух руках еще с 70-х, позже добавили кнопки на неоригинальных джоях, дублирующие основную, где была кнопка сверху и курок по примеру стика летчиков боевых самолетов, я такими всё равно не пользовался, так как можно совершить невольно движение во время выстрела, поэтому одна рука управляет, другая - стреляет. Три игры где от движений зависит всё (во всяко случае те что я играю) - Boulder Dash, Lode Runner, Mr.Do, на геймпадах никто не сможет в них нормально играть так как нет диагоналей (специально тестировал много популярных игр на NES, там поддержка диагональных движений минимальна, так как на геймпаде это делать практически невозможно). Диагонали на Атари важны потому, что в играх проверяют бит положения стика и если бит вверх например установлен, то в Lode Runner ГГ лезет по лестнице, в отличии от NES невозможно промазать по лестнице, вы просто давите право и вверх, ГГ добежит до лестницы и сам сразу полезет вверх.
Крестовин для левшей (NES/Wii) на атари никогда не было по понятным причинам и в мурмуляторе они чисто из соображений универсальности управления.
Zara6502
для большинства игр достаточно аппаратуры 800XL и 64К ОЗУ, для 130XE в которых 128К ОЗУ игр не так много и они как правило имеют версию для 800XL. Ну и демки, но это на любителя, я таковым не являюсь. В XE видеочип имеет поддержку еще нескольких графических режимов, но сколько проектов именно под них - никогда не изучал, так как пользуюсь всегда только XE, поэтому у меня там всё всегда работает. Кстати есть 65XE с аппаратным багом в чипе GTIA, но чтобы его увидеть нужно писать программу на Бейсике которая создаст условия для этого бага. В реальности увидеть баг будет сложно. А по приставкам 5200, 7800 - там всё своё, игр мало, пользы от их эмуляции никакой как и он 2600 и Lynx, так что если можно вырезать приставки, но сделать 64К ОЗУ, то это было бы куда полезнее.
mikeveng73 Автор
О! Скинь, пож., ссылку на игрушку, которая видит разницу между 48к и 64, и признаки по которым можно понять, что лишние 16к подключились. А то я там всё "наощупь" подключил, а как проверить - толком не знаю.
Zara6502
как я написал выше - у меня 64К 65XE и XEGS, поэтому я не знаю какая игра может требовать именно 64К, как вариант могу поискать игру которая изначально имеет размер XEX файла >48K.
mikeveng73 Автор
Не, по размеру я сам поищу. Спасибо за совет.
Zara6502
можно было бы еще в современных демках покопаться на pouet, но они как правило сжаты и файл в 16К может в памяти развернуться на 50К что конечно никак не отследить по размеру XEX, с играми тоже так может быть, но сжатием в 80-е мало баловались на самом деле.
mikeveng73 Автор
Не, демосцена - совсем плохо для эмулятора, т.к. они там выжимают все нюансы из оборудования, а эмуляторы редко могут похвастаться точностью воспроизведения всяких там таймингов и т.п. (т.к. обычно оно для прикладных программ-игрушек и не нужно). А игрухи я ещё посмотрю, как время будет.
Zara6502
я не мега прогер, сам наверное не смогу, но мне кажется для освобождения ОЗУ под 64К можно многое вырезать, например поддержку XEP80.
mikeveng73 Автор
Ну, пока вопрос не в том "как", а втом "зачем" ))
Zara6502
Ну начиная с 800XL всегда ОЗУ 64К, это стандартный минимум, так что важнее - эмулировать стандартный комп или поддерживать PBI, SIO, XEP80 и еще бог знает что? Я бы выкинул вообще все приставки 2600, 5200, 7800, Lynx. Никто не будет собирать мурмуль для эмуляции 2600, игр там полторы штуки в которые, вытирая кровавые слезы, еще можно сыграть. Притом что эти же игры уже в нормальном виде есть для XL/XE. Вероятной киллерфичей могли бы стать 4 джоя на 2600, но мурмуль это не умеет (а игры под такое есть? обычно это не кооперативная игра, а просто возможность не передавать джой из рук в руки, а игра происходит по очереди, с двумя джоями для совместной игры есть немного).
mikeveng73 Автор
2600 и Linx - это другие! эмуляторы, о чём написано в самом начале статьи. Список заявленных к этому: Atari 400, 800, 1200XL, 600XL, 800XL, 65XE, 130XE, 800XE, XE Game System и 5200 SuperSystem.
Тестировал я только режим 48к, т.к. точно знал, какие игры работают с 48к и требуют 48к. А модуль расширения Mosaic (16к+) я прикрутил, но толком не тестировал, т.к. надо знать как на какую игру оно повлияет, а я не знаю. Реальной машинки у меня нет, чтобы сравнивать. Могу только с другим или таким же эмулятором на другой платформе сравнить. Пока я до этого не добрался.
Zara6502
Перечитал, понял, вопрос снят, хотя 5200 всё же можно под нож в любом случае.
48К и Мозаик никакого отношения к XL/XE не имеют, это 400/800 модели 70-х, так сказать старьё и рухлядь )
800XL и вся линейка XE (исключая 130, где памяти 128К) имеет оперативку 64К без вариантов. Больше - можно, меньше - нет. Чип GTIA появился в XL/XE, эмулировать что-то без GTIA не нужно.
Отсюда очевидно, что можно под нож всё что не касается XL/XE и обязательно нужно 64К и GTIA.
Zara6502
Скрытый текст
Features
5200 SuperSystem.
o Axlon and Mosaic memory expansions for the 400/800.
o 600XL memory expansions to 32 or 48 KB.
o Printer support.
o Stereo (two POKEYs) emulation.
o Emulator video and audio may be recorded to AVI files for playback in
video players or uploading to YouTube or other online platforms.
o R: device (the Atari850 serial ports) mapped to net or real serial port.
o 1400XL and 1450XLD emulation
то что можно вырезать. думаю там еще больше можно убрать, просто я не знаю конкретики.
mikeveng73 Автор
Это всё до одного места, т.к. экономии с этой вырезки будет мало. Основная задача - найти тестовые игры, которые на 64к. Ладно, это всё - пустой трёп.