1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Игровые автоматы

Тема в разделе "Приставочный уголок", создана пользователем mai, 16 мар 2008.

  1. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Да, в старом варианте графика нужных тайлов заранее программно копировалась из ПЗУ кода в ОЗУ знакогенератора, примерно как в Sega Genesis или SNES. А тут, похоже, графика тайлов просто лежит в ПЗУ, как на NES и в большинстве аркад. Только непонятно, общее ли это ПЗУ с ПЗУ кода, или разное (общая или отдельная шина). На платке ПЗУ группируются как-то странно, и есть пустые места. При просмотре в тайловом редакторе вроде бы нет такого банка, чтобы там были одновременно и тайлы и код, так что там может быть и отдельная шина для ПЗУ графики фона.
    --- добавлено 16 июл 2016, предыдущее сообщение размещено: 16 июл 2016 ---
    Похоже, палитра теперь на портах $e0..$ef, а не $a0..$af, как раньше.
     
  2. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    а рамы спрайтов видимо теперь на портах 00-3f вместо 40-7f
    --- добавлено 16 июл 2016, предыдущее сообщение размещено: 16 июл 2016 ---
    а регистры Bx судя по всему - BC -> F0, BD -> F4, BE -> F8, хотя на счет последнего не уверен
     
    Последнее редактирование: 16 июл 2016
    shiru8bit нравится это.
  3. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    С учётом этой информации у меня получилось увидеть спрайты шагающего кота, а также некую разумную картинку в тайловой карте (для теста просто вывожу блок 32*32 пикселя с цветом, зависящим от содержимого карты в $f000). Только почему-то после сброса при включении игра висит, а вот при сбросе в тестовый режим происходит описанное выше. Но уже прогресс.

    kot_wip_1.png
     
    IgorR76 и MetalliC нравится это.
  4. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    таж фигня, надо tracelog снять да поизучать на чем она затыкается
     
  5. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    И даже вот так. Беру графику тайлов просто из области кода (ПЗУ загружены в том порядке, который я примерно предположил ранее), со смещения $5000, и интерпретирую точно так же, как раньше работало ОЗУ знакогенератора. Похоже, тайлы не 16-цветные, либо смещение их битпланов отличается (идут не подряд, а с промежутком?). Игра дальше выводит ещё несколько картинок, там совсем мусор, но на каждой прослеживается надпись РАУНД в правом верхнем углу. Видимо, есть регистр, задающий смещение в памяти тайлов, и он меняется между экранами.

    kot_wip_2.png
    --- добавлено 16 июл 2016, предыдущее сообщение размещено: 16 июл 2016 ---
    Вроде бы регистр $f8 задаёт смещение набора графики.
     
    nop, MetalliC и IgorR76 нравится это.
  6. IgorR76

    IgorR76

    Регистрация:
    29 июн 2016
    Сообщения:
    76
    Хороший прогресс! Главное не забывайте, что существует опасность неправильного считывания ПЗУ. Мусор может быть из за этого... При поисках делайте на это поправку. Если что-перечитаем!
     
  7. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Это да, но пока видно, что это просто наложение разных битпланов графики. При просмотре одного битплана всё чисто, символы шрифтов чистые, без случайных пикселей.
     
  8. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    можешь напомнить в каком ? 850-853 - спрайты, 846-849 - тайлы ?
     
  9. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Я пока загружаю так: 854 855 856 846 847 848 849 в ПЗУ кода (по очереди, от 0; так, потому что в 854 явно начало, в 855 и 856 явно код, дальше графика тайлов); спрайты в 850-853 (от 0 по очереди), кот отображается в корректном цвете, так что с порядком битпланов вроде угадал.

    Но касательно ПЗУ кода это может быть и неправильно (может и обратный порядок), а по плате пока ничего не понятно, ПЗУ все натыканы вразнобой, никакой логики их расположения не прослеживается, какая была в старом варианте.
     
    Последнее редактирование: 16 июл 2016
  10. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    ясно, я так и понял.
    по ПЗУ кода (854-856) точно правильно, первое что я сделал их слепил и загрузил в IDA, дабы глянуть абсолютные адреса в коде и проверить на предмет каких-то банкингов - во всех 3х ПЗУ адреса абсолютных переходов как раз те что и должны быть.
     
  11. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Ближе к успеху. Если взять содержимое регистра $f8, сдвинуть на 7 (т.е. *128) и считать это началом смещения от первого ПЗУ с тайлами графики фона (846..849), при двух битпланах (смещение второго +$2000, объём одного ПЗУ) получаем чистую картинку на всех экранах, какие показывает код (он показывает несколько уровней, сразу же их пропускает - не могу успеть снять скриншот уровня целиком), но в неправильных цветах.
    --- добавлено 17 июл 2016, предыдущее сообщение размещено: 16 июл 2016 ---
    Если предположить, что тайлы фона в этой версии 4-цветные (два битплана), а ПЗУ с ними на своей отдельной шине, а не вместе с ПЗУ кода - то получаем максимум 4096 тайлов, при установленных 64К ПЗУ тайлов (но реально стоит 32К и есть место ещё на 3 по 8К). Но всё ближе к совпадению с той информацией, которую я цитировал выше.
    --- добавлено 17 июл 2016 ---
    Всё же тайлы 16-цветные (четыре битплана). Я открыл все четыре ПЗУ тайлов в Tile Molester, расположил окна рядом, и увидел, что первые 16 тайлов - это все возможные комбинации битпланов, дающие 16 тайлов, залитых каждый одним из цветов палитры. Теперь удалось получить чистые картинки при корректных цветах.
    --- добавлено 17 июл 2016 ---
    kot_wip_3.png
    --- добавлено 17 июл 2016 ---
    Прикол, оказывается, бит кнопки тест инвертирован по сравнению с оригиналом - при сбросе запускается тест, а при попытке входа в тестовый режим запускается игра, но так как кнопка считается зажатой, все экраны пропускаются. Если инвертировать, игра начинает работать, правда вроде бы перестаёт входить в тестовый режим. Но совсем не работает управление, а на титульном экране и инструкции присутствует мусор. Сами тайлы в порядке, видимо не учтено что-то ещё.
    --- добавлено 17 июл 2016 ---
    kot_wip_4.png kot_wip_5.png kot_wip_6.png kot_wip_7.png
    --- добавлено 17 июл 2016 ---
    Мусор на экране победил, моя ошибка в реализации. Остальные проблемы пока остаются - не запускается тест, не работает управление.
     
    unp, SMArt, kreol и 6 другим нравится это.
  12. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    там не только сервис, а и другие еще инвертированы, по крайней мере порт D2 бит 7 (0x40) так точно - в тесте код часто ждет чтоб ее отпустили.
    я думаю другие кнопки могут быть тоже инвертированы, но не монетка - она так и осталась

    еще обрати внимание, что тест при запуске суммирует память от начала и аж до 0xDFFF, в том числе и "пустую" область 6000-С000
     
    Последнее редактирование: 17 июл 2016
    shiru8bit нравится это.
  13. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Спасибо! Как раз об этом подумал, прочёл пост, сделал инверсию, плюс поправил ещё одну свою ошибку - и управление и тест заработали. Игра полностью работает! Свой эмулятор скоро выложу, только причешу до приличного вида.

    Есть одна мелочь. В тесте есть плавное стирание фона, построчно, не потайлово. Наверное это сделано через программную задержку и какой-то регистр разрешения-запрещения отображения. У меня в эмуляторе рендер не скайнлайновый, это я проверить не могу. Подозрение, что это управляется нулевым битом $f8.

    Суммирую, что мы, в особенности MetalliC, выяснили, и что нужно знать, чтобы заэмулировать игру.

    Карта памяти:

    0000..bfff - ПЗУ кода, до 48К, в Коте только 24К (микросхемы 854, 855, 856), остальное пусто.
    с000..cfff - основное ОЗУ, 4К
    d000..efff - пусто, наверное дублируется основное ОЗУ
    f000..f3ff - карта тайлов, так как микросхема на 2К, вероятно реально это f000..f7ff, а далее дублируется, но Кот использует только 1К

    Спрайты:

    Всё как было, 32К (микросхемы 850, 851, 852, 853), 256 16-цветных спрайтов 16x16, только другие порты

    Фон:

    Вместо ОЗУ знакогенератора - 32К ПЗУ (микросхемы 846, 847, 848, 849), в котором лежат непожатые 16-цветные тайлы, битпланами, по 8К. Это 1024 тайла. Отображается только 256 тайлов, смещение задаётся через порт.

    Порты:

    00..0f - Y-координаты спрайтов
    10..1f - X-координаты спрайтов
    20..2f - номера спрайтов
    30..3f - атрибуты спрайтов, такие же, как были
    e0.ef - палитра
    c0..c3 - ВИ53 для звука, только одна штука, схема смешения выходов видимо та же (так в документации на версию автомата с одной ВИ53)
    d0..d3 - вероятно осталась ВВ55
    f0 - вертикальное смещение экрана
    f4 - горизонтальное смещение экрана
    f8 - смещение набора тайлов фона, надо отбросить младший бит и умножить на 128, чтобы получилось смещение в байтах от начала каждого ПЗУ; младший бит возможно разрешение отображения

    На чтение - порты ВВ55 по старым адресам. Линии всех кнопок управления и кнопки тест инвертированы, но не линия монетоприёмника.
    --- добавлено 17 июл 2016, предыдущее сообщение размещено: 17 июл 2016 ---
    Кота уже можно поиграть (этот мой эмулятор всё ещё без звука): http://shiru.untergrund.net/15kop/kotrybol.html
     
    unp, Grongy, SMArt и 6 другим нравится это.
  14. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    а как можно посмотреть эти схемы и документацию ?


    ps: комплектик из МАМЕ и всех игр на этой платформе http://rgho.st/6t4zhRWnx
     
    kreol, IgorR76 и shiru8bit нравится это.
  15. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Эта документация в бумажном виде сейчас лежит у меня дома (плюс на Чемпион-М). Пока думаю, как её переснимать - альбом формата больше А4, в сканер не влезает и плохо гнётся, а если фотоаппаратом, то надо придумать, как обеспечить приличное качество. В скором времени придумаю и сделаю, потом сразу выложу.
     
  16. tuliss

    tuliss

    Регистрация:
    24 фев 2014
    Сообщения:
    5.975
    У меня есть A3 сканер.
     
  17. IgorR76

    IgorR76

    Регистрация:
    29 июн 2016
    Сообщения:
    76
    @MetalliC, отлично! Рыболов и Городки работают в MAME. Красиво и очень похоже на оригинал, который я недавно видел. В эмуляторе лишь заметна "неплавность" движения, результат отображения 50Гц картинки на 60Гц мониторе. В оригинале всё идеально плавно.
    И почему-то кнопка ТЕСТ не запускает игру, а работает, когда "кидаешь монету". В оригинале достаточно просто нажать ТЕСТ.
    В остальном-один в один. Звук, надеюсь, заработает.
    Спасибо за оперативность!
     
  18. MetalliC

    MetalliC

    Регистрация:
    20 апр 2009
    Сообщения:
    698
    точно ?
    Кот-Рыболов (как впрочем и Горбунок тоже) опрашивает бит теста (8й на порте D1) только на самом старте и во время игры, а вот Городки постоянно.
    так что я хз как он может запускать игру, если только не замкнут через диод на с сигнал монето-приемника, или вы что-то путаете.

    увы "само" ничего не заработает. но, под шумок, пока есть интерес к этой теме хотелось бы запрячь буржуев более разбирающихся во всяких МАМЕвских pit8253 сделать его, потому я и спрашивал схему.
    именно часть со звуком, в хоть как-то разборчивом виде.
     
  19. IgorR76

    IgorR76

    Регистрация:
    29 июн 2016
    Сообщения:
    76
    Точно не путаю. Во-первых, сам нажимал и играл, во-вторых-представьте техника-ремонтника с пятнашками, ремонтирующего автомат :))

    Вроде бы в первой версии было два ВИ53? Городки ведь со звуком работают? А тут одна. Она же заэмулирована в MAME?

    PS И вроде мы на "ты" были? На эмуленде с Нупогодями.
     
  20. shiru8bit

    shiru8bit

    Регистрация:
    24 июн 2016
    Сообщения:
    57
    Со звуком всё должно быть очень просто. Он уже реализован в MAME для старой версии, в тех же Городках. По хорошему, надо его упростить для Снежной королевы, Бильярда, Городков и Кота, но он должен работать и так (и работает во всех играх старой версии).

    Вот схема первой версии, от Конька - файлы old_1.jpg, old_2.jpg. Два ВИ53 каскадом, OUT'ы каналов одной идут на GATE'ы второй, на OUT'ах второй логический микшер на элементах 2ИЛИ-НЕ (155ЛЕ1) и 2И (155ЛИ1), и с него на транзисторный усилитель. Это уже должно быть в MAME, хотя по факту ни одна игра этих заморочек не использует, они просто пищат одним каналом, и если просто брать его выход, без логического микшера, звук будет.

    Вот схема другой версии - файлы new_1.jpg, new_2.jpg, из документации, которая вроде как шла с Городками, но в ней не упоминается аналоговое управление. В ней ВИ53 уже одна, первой просто нет, остальное точно то же самое.

    На фотке платы Кота мы видим, что усилитель теперь на микросхеме К147УН7, но рядом с ней есть ЛЕ1, а в другом конце платы (в углу) есть ЛИ1, в направлении которой по лицевой стороне платы идёт дорожка от 17-ого вывода ВИ53. Так что скорее всего эту часть схемы оставили без изменений. И похоже, мало кто среди разработчиков автомата вообще понимал что-то про генерацию звука, очень уж он примитивный в реальных играх, при таком железе. Вполне логично предположить, что разработчики новой версии решили звук не трогать.
     

    Вложения:

    • old_1.jpg
      old_1.jpg
      Размер файла:
      624,6 КБ
      Просмотров:
      408
    • old_2.jpg
      old_2.jpg
      Размер файла:
      717,4 КБ
      Просмотров:
      355
    • new_1.jpg
      new_1.jpg
      Размер файла:
      621,2 КБ
      Просмотров:
      401
    • new_2.jpg
      new_2.jpg
      Размер файла:
      742,5 КБ
      Просмотров:
      381
    Последнее редактирование: 17 июл 2016
    unp, sev_, nop и 2 другим нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление