Для Атари на Мурмуляторе имеются целых три разных эмулятора: Atari 2600, Atari 800 и Atari Lynx.

atari800 на Мурмуляторе
atari800 на Мурмуляторе

Первый ограничен исполнением только 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, т.к. иначе всё не влезало.

Подключение дополнительной памяти типа Mosaic
Подключение дополнительной памяти типа Mosaic

Теоретически эмулятор поддерживает множество разных видов Атари:

Но больше половины из них никогда даже не тестировалось на Мурмуляторе из-за банального непонимания, чем они там внутри отличаются (кроме объёма памяти), как это должно проявляться, и какое поведение соответствует оригиналу, а что является багом.

Первое, что завелось легко и просто - Atari MEMO PAD:

Atari MEMO PAD
Atari MEMO PAD

Чуток повозившись, запустил и комплектный бейсик:

Atari Basic
Atari Basic

Дальше - больше... поддержка запуска файлов-игр:

Выбор файла для загрузки
Выбор файла для загрузки
АтA-Zone
АтA-Zone

Естественно, остался и способ запуска ROM-картриджей (файлов-имеджей)

Запуск ROM-картриджей
Запуск ROM-картриджей

Отдельным квестом оказался звук, который в Атари устроен крайне непросто, со специфическими чипами и сложным миксом каналов, но до базовой функциональности его допинать тоже удалось.

Настройки звука
Настройки звука

Эмулятор поддерживает пару Денди-8 или Wii джойстиков, клавиатуру, вывод в режиме VGA с эмуляций PAL и NTSC (разное число строк) оригинального устройства. При желании, его можно ещё долго улучшать, добавлять эмуляцию дисководов, магнитофонный вход и прочую периферию, но имеющийся результат уже приемлемый, а лучшее - враг хорошего.

Атари - это отдельный мир, почти такой же большой, как Эппл, но ещё более отдельный )) И, благодаря опыту портирования atari800 на Мурмулятор, я с ним немного глубже познакомился.

Релизы тута

Сам Мурмулятор

Пишите свои вопросы и пожелания, на вопросы отвечу, пожелания учту...

Комментарии (22)


  1. Zara6502
    12.09.2024 05:53
    +1

    для большинства игр достаточно аппаратуры 800XL и 64К ОЗУ, для 130XE в которых 128К ОЗУ игр не так много и они как правило имеют версию для 800XL. Ну и демки, но это на любителя, я таковым не являюсь. В XE видеочип имеет поддержку еще нескольких графических режимов, но сколько проектов именно под них - никогда не изучал, так как пользуюсь всегда только XE, поэтому у меня там всё всегда работает. Кстати есть 65XE с аппаратным багом в чипе GTIA, но чтобы его увидеть нужно писать программу на Бейсике которая создаст условия для этого бага. В реальности увидеть баг будет сложно. А по приставкам 5200, 7800 - там всё своё, игр мало, пользы от их эмуляции никакой как и он 2600 и Lynx, так что если можно вырезать приставки, но сделать 64К ОЗУ, то это было бы куда полезнее.


    1. mikeveng73 Автор
      12.09.2024 05:53
      +1

      О! Скинь, пож., ссылку на игрушку, которая видит разницу между 48к и 64, и признаки по которым можно понять, что лишние 16к подключились. А то я там всё "наощупь" подключил, а как проверить - толком не знаю.


      1. Zara6502
        12.09.2024 05:53
        +1

        как я написал выше - у меня 64К 65XE и XEGS, поэтому я не знаю какая игра может требовать именно 64К, как вариант могу поискать игру которая изначально имеет размер XEX файла >48K.


        1. mikeveng73 Автор
          12.09.2024 05:53
          +1

          Не, по размеру я сам поищу. Спасибо за совет.


          1. Zara6502
            12.09.2024 05:53

            можно было бы еще в современных демках покопаться на pouet, но они как правило сжаты и файл в 16К может в памяти развернуться на 50К что конечно никак не отследить по размеру XEX, с играми тоже так может быть, но сжатием в 80-е мало баловались на самом деле.


            1. mikeveng73 Автор
              12.09.2024 05:53

              Не, демосцена - совсем плохо для эмулятора, т.к. они там выжимают все нюансы из оборудования, а эмуляторы редко могут похвастаться точностью воспроизведения всяких там таймингов и т.п. (т.к. обычно оно для прикладных программ-игрушек и не нужно). А игрухи я ещё посмотрю, как время будет.


          1. Zara6502
            12.09.2024 05:53

            я не мега прогер, сам наверное не смогу, но мне кажется для освобождения ОЗУ под 64К можно многое вырезать, например поддержку XEP80.


            1. mikeveng73 Автор
              12.09.2024 05:53

              Ну, пока вопрос не в том "как", а втом "зачем" ))


              1. Zara6502
                12.09.2024 05:53

                Ну начиная с 800XL всегда ОЗУ 64К, это стандартный минимум, так что важнее - эмулировать стандартный комп или поддерживать PBI, SIO, XEP80 и еще бог знает что? Я бы выкинул вообще все приставки 2600, 5200, 7800, Lynx. Никто не будет собирать мурмуль для эмуляции 2600, игр там полторы штуки в которые, вытирая кровавые слезы, еще можно сыграть. Притом что эти же игры уже в нормальном виде есть для XL/XE. Вероятной киллерфичей могли бы стать 4 джоя на 2600, но мурмуль это не умеет (а игры под такое есть? обычно это не кооперативная игра, а просто возможность не передавать джой из рук в руки, а игра происходит по очереди, с двумя джоями для совместной игры есть немного).


                1. mikeveng73 Автор
                  12.09.2024 05:53

                  2600 и Linx - это другие! эмуляторы, о чём написано в самом начале статьи. Список заявленных к этому:  Atari 400, 800, 1200XL, 600XL, 800XL, 65XE, 130XE, 800XE, XE Game System и 5200 SuperSystem.
                  Тестировал я только режим 48к, т.к. точно знал, какие игры работают с 48к и требуют 48к. А модуль расширения Mosaic (16к+) я прикрутил, но толком не тестировал, т.к. надо знать как на какую игру оно повлияет, а я не знаю. Реальной машинки у меня нет, чтобы сравнивать. Могу только с другим или таким же эмулятором на другой платформе сравнить. Пока я до этого не добрался.


                  1. Zara6502
                    12.09.2024 05:53

                    2600 и Linx - это другие! эмуляторы, о чём написано в самом начале статьи

                    Перечитал, понял, вопрос снят, хотя 5200 всё же можно под нож в любом случае.

                    Тестировал я только режим 48к, т.к. точно знал, какие игры работают с 48к и требуют 48к. А модуль расширения Mosaic (16к+) я прикрутил

                    48К и Мозаик никакого отношения к XL/XE не имеют, это 400/800 модели 70-х, так сказать старьё и рухлядь )

                    800XL и вся линейка XE (исключая 130, где памяти 128К) имеет оперативку 64К без вариантов. Больше - можно, меньше - нет. Чип GTIA появился в XL/XE, эмулировать что-то без GTIA не нужно.

                    Отсюда очевидно, что можно под нож всё что не касается XL/XE и обязательно нужно 64К и GTIA.


                  1. Zara6502
                    12.09.2024 05:53

                    Скрытый текст

                    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

                    то что можно вырезать. думаю там еще больше можно убрать, просто я не знаю конкретики.


                    1. mikeveng73 Автор
                      12.09.2024 05:53

                      Это всё до одного места, т.к. экономии с этой вырезки будет мало. Основная задача - найти тестовые игры, которые на 64к. Ладно, это всё - пустой трёп.


  1. Zara6502
    12.09.2024 05:53

    PS2 Keyboard mapping:

    F1 - UI

    F2 - Option

    F3 - Select

    F4 - Start

    F5 - Help

    Ctrl + Alt + Del - Cold Restart

    Atari800 не мой основной эмуль, но мне кажется там маппинг изначально другой, было бы разумно маппинг сделать таким же как в эмуле на ПК и мне кажется там было совпадение с Altirra.


    1. mikeveng73 Автор
      12.09.2024 05:53

      ну, я оттуда передирал. Ctrl + Alt + Del - это уже я добавил.


      1. Zara6502
        12.09.2024 05:53

        на F5 всегда был Reset, F1 для увеличения скорости эмуляции, тут не принципиально


        1. mikeveng73 Автор
          12.09.2024 05:53

          А вот ресет я мог и убрать (не помню), но случайно ресетить с функционалок - не, не моё )) Я ещё помню, что смотрел на корпус реальной Atari 65XE(?) и по тем кнопкам ориентировался, что ещё такие скошенные.


          1. Zara6502
            12.09.2024 05:53

            Help я даже не вспомню где и работает, его смело можно задвинуть на страшное сочетание клавиш, а Reset вполне себе активная кнопка, соответственно F2-F5.


            1. mikeveng73 Автор
              12.09.2024 05:53

              Точно, с этой картинки и делал, вспомнил - а ресет специально убрал, т.к. слишком часто его случайно нажимал..


  1. Zara6502
    12.09.2024 05:53

    Joystick 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 = "стрелки управления и левый контрол" для одного.


    1. mikeveng73 Автор
      12.09.2024 05:53

      по-хорошему надо делать динамическую настройку кнопок эмуляции. а по-умолчанию - можно любой набор зашить. я потыркал с кнопок - вроде норм - одной рукой можно играть.


      1. Zara6502
        12.09.2024 05:53

        самая суть игры на двух руках еще с 70-х, позже добавили кнопки на неоригинальных джоях, дублирующие основную, где была кнопка сверху и курок по примеру стика летчиков боевых самолетов, я такими всё равно не пользовался, так как можно совершить невольно движение во время выстрела, поэтому одна рука управляет, другая - стреляет. Три игры где от движений зависит всё (во всяко случае те что я играю) - Boulder Dash, Lode Runner, Mr.Do, на геймпадах никто не сможет в них нормально играть так как нет диагоналей (специально тестировал много популярных игр на NES, там поддержка диагональных движений минимальна, так как на геймпаде это делать практически невозможно). Диагонали на Атари важны потому, что в играх проверяют бит положения стика и если бит вверх например установлен, то в Lode Runner ГГ лезет по лестнице, в отличии от NES невозможно промазать по лестнице, вы просто давите право и вверх, ГГ добежит до лестницы и сам сразу полезет вверх.

        Крестовин для левшей (NES/Wii) на атари никогда не было по понятным причинам и в мурмуляторе они чисто из соображений универсальности управления.