Тизер два...
Тизер два
Внимание на версию
Для самых смелых и отчаянных - файлы беты прилагаю:
Тизер два
Внимание на версию
Для самых смелых и отчаянных - файлы беты прилагаю:
Тизер раз
Порт с NES на Sega Master System - в работе.
Вообще на Sega Master System уже есть порт, но не Tank1990, а оригинального Battle City, и к тому же с урезанием игрового поля по высоте. Тут вообще печальная история - у SMS разрешение 256x192 - это меньше чем у NES, и в теории надо все карты в игре переделывать под уменьшенный размер - вырезать пару горизонталей. На скриншотах хорошо видно - на первом порт игры от old-pirate (https://old-pirate.itch.io/battle-city-sms), на втором оригинальная игра:
Но выход всё же есть, хоть и компромиссный. Есть вторая ревизия SMS, в ней новая версия видеопроцессора VDP с поддержкой расширенного разрешения. И в это разрешение игровые карты как раз идеально ложатся. Я хотел сделать порт полноценный, без вырезания хоть чего-либо, пусть и ценой худшей совместимости с железом.
Очередная змейка от Квена 3.8 27b. Хотя не совсем очередная - она под MS-DOS.
Три дня и три ночи пыхтел Квен и всё же выдавил из своих кишок что-то рабочее, хотя я уже потерял надежду и сон. Это первый случай у меня когда локальная нейронка смогла сделать для MS-DOS что-то как минимум не падающее сразу на запуске. Раньше так получалось только у Кодекса. Качественный скачок случился когда на второй день я устал после нескольких десятков тестов кидать скриншоты с ошибками и сказал Квену - на тебе exe-шник DOSBox, долбись сам.
Промпта особого не было, но делал в два этапа. Сначала подсунул компилятор openwatcom, библиотеку allegro и попросил сделать hello world на ней. Второй сессией я просто сказал сделать нормальную змейку с красивой графикой и музыкой.
Небольшой анонс. Сделал свою вариацию Мурмулятора - Мурмулятор.1010: плата размером 10x10см для корпуса Gainta G738 / G706. Мурмулятор (https://murmulator.ru/) — это одноплатный DIY микрокомпьютер на базе Raspberry Pi Pico (не путать с “большими” Raspberry Pi), предназначенный для эмуляции популярных 8- и 16-битных платформ, таких как ZX Spectrum, NES, IBM PC и т.д.
Пока пусть полежит-настоится, потом закажу, соберу, по результатам выложу в open source.
Кому ZiFi для MiSTer FPGA? Забирай :)
https://github.com/UzixLS/ZiFi/tree/master/_Current_version_executable
Для работы нужно в меню MiSTer по F12-стрелка-вправо выбрать UART MODE - MODEM.
Портировал на MiSTer FPGA свежую версию TSConf с некоторыми доработками. Отличия от официального ядра TSConf для MiSTer:
Ссылка на исходный код и бинарники: https://github.com/UzixLS/TSConf_MiSTer
Сдул пыль со старого проекта - PCI-OPL3. Полтора года назад остановился на том, что в некотором софте карта определяется через раз. Как работает алгоритм детекта? Код записывает значение в регистр чипа OPL для запуска таймера, ждёт некоторое время, а затем читает регистр статуса - переполнился таймер или нет. Чтение и запись регистров на карте работают стабильно и без ошибок. Но, как оказалось, слишком быстро. Чтобы не реализовывать полноценную задержку на системном таймере, авторы некоторого софта полагались на то, что длительность инструкции чтения/записи регистров будет фиксирована, и для создания задержки просто делали несколько чтений в цикле. Для ISA это работало, для PCI уже нет.
В своей карте я применил PCI-ISA мост CH365P. Он довольно примитивный и не умеет растягивать I/O циклы, а значит это придётся делать софтово. Для этого вместе с кодексом я набросал простой драйвер, который через EMM386 перехватывает обращения к портам карты и вставляет дополнительные циклы ожидания.
На первый взгляд это работает нормально. Попроверяю ещё - и можно релизить.
Нейронки, оказывается, вполне умеют писать ассемблерный код для ZX Spectrum.
Есть у меня плеер MIDI, и в нём есть драйвер FAT32. Дал бесплатному Codex простой промпт: “Это проект плеера для ZX Spectrum, написан на sjasm. Для проверки и сборки используется команда make all. В src\fatfs.asm находится драйвер FAT32. Добавь в него поддержку FAT16.” - никакой другой настройки, никакого дополнительного контекста. Задача так-то не сложная, но мне всё время было недосуг вспоминать/заново разбираться с устройством FAT (правда, всё равно пришлось чтобы сделать ревью). К моему удивлению, нейрока не просто справилась, но сделала это с первой попытки, написала вполне пригодный код и ничего при этом не поломала. Нашлось пара мелких косяков оптимизации, но спустя пару промптов нейронка всё сама и поправила. Ну и комментариев маловато оставила, их я уже сам добавил в процессе ревью.
А вот с локальными моделями этот же эксперимент, к сожалению, провалился. Все три опробованные модели - Qwen3.6-27B-Q6_K, Qwen3-Coder-Next-UD-Q4_K_XL и Qwen3.5-122B-A10B-UD-Q3_K_XL явно не понимали что здесь происходит, почему при сборке всё время мешает какой-то там ассерт на размер структуры, и вообще за что им всё это :)
Коммит для любопытных.
Давно сюда ничего не писал. Последние месяцы почти всё свободное время я уделяю ковырянию в нейросетях. Про них сейчас пишут на каждом углу, и на каждом виртуальном заборе в интернете кто-то уже нацарапал три буквы - “LLM”. А чем-то интересным или уникальным я поделиться не могу за неимением такового.
Хотя есть кое-что. Оказывается, существуют майнерские GPU, которые на барахолках продаются чуть ли не на развес. В теории - это древние убитые карты которые уже ничего не могут. Но на практике оказалось что они довольно неплохи как входной билет в локальный запуск LLM - чтобы понять надо ли оно мне вообще не тратя большие суммы. Я приобрёл пару таких GPU: P102-100 и CMP 50HX (она поновее, но, как оказалось, хуже) по 10Гб VRAM каждая. Чтобы вместить три (вместе с уже имеющейся RTX 5060 16Gb) карты в корпус - пришлось немного поработать дрелью и метчиком, и добавить дополнительный слот с помощью адаптера M.2 - PCIe.
Что по результату: получившая конфигурация запускает с удовлетворительной скоростью Qwen 3.6 и Gemma 4 - лучшие сейчас нейросети из небольших. Это, конечно, не Codex или Claude, но для типовых простых задач кодинга они вполне пригодны.
Прямо сейчас я с помощью Qwen полностью переделываю свой сайт err200.net. Вёрсткой я никогда не любил заниматься, и без нейронок скорее бы его удалил чем переделал. Но когда можно написать “Сделай мне сайт на Hugo”, “Сделай переключатель светлой/тёмной темы”, “Импортируй записи из моего блога в Telegram” или даже “Что-то тут криво выглядит, почини” - а затем просто наблюдать как нейронка сражается с километровыми манускриптами CSS и JS - то почему бы и нет :)
Таких схем я ещё не видел, не мог не поделиться.
Это из проекта клона Famicom OpenFC - https://github.com/starlightk7/OpenFC