Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Segaman

Страницы: [1] 2 3 4 5 ... 110 Далее
1
На SNES бы уже давно перенесли. Там проц понимает команды от 6502, нинка топила за обратную совместимость, но не дотопила.
Грустно, что продолжается разработка для выдуманной платформы.
Уже куча проектов по переносу NES игр на SNES, а тут всё топчется на месте :)

2
ChatGPT с трудом с ассемблером то работает, а вы тут полноценный ромхакинг продвигаете.
Для него предел это питон или С/С++. Остальное доверяй но проверяй.

Я как-то пытался ему скормить бинарник и сказал дизассемблируй, так он такого там навыдумывал, глаза на лоб полезли.
Еще пытался ему уже дизассемблированный код давать - результат тот же, не могёт он в то, про что мало читал в интернете.

Зато что он могёт, так это с тулзами помогать. Я вот с тайлами трахался несколько дней, а он мне написал парсер за пару запросов (правда править потом пришлось, но только несколько часов). Я пытался цепочки логики выстраивать, чтобы PNG-шка на тайлы нарезалась, а ГПТ через слоёнку из if-ов всё сделал. Ужасно, но работает а раз я слишком много времени потратил на свой вариант было решено забить - работает не трогай.

Так что это языковая модель и думать она не очень то и может, а вот задания с простой логикой выполняет на ура. Поэтому всем и кажется, что это магическая тулза, способная затмить всех программистов, а на деле она просто часто создает лишь видимость проделанной работы.  :)

3
Как бы так получше отконвертировать стандартный 8-битный PCM со знаком в 12-битный для Namco C140 (т. е. формата $xxx0), чтобы результат не засорялся шумами квантования?
Апскейлить качество такое себе. А вот если бы брал за исходник 16-битный и даунскейлил до 12-бит, вот тогда точно проблем бы не было.
Хотя я не звукарь, мне в детстве медведь на ухо наступил.  :)

4
Сделал бы всё в одном, просто аргументом чтоб переключать формат :)
Чо софтины то плодить одинаковые?

5
На ромхак плазу лей тогда уже.
Я лучше аналога ромхакинга.нет не нашел :neznayu:
https://romhackplaza.org/utilities/

6
Nemesis_c, ну так что - сможешь теперь ответить на вопрос, который я задаю тут постоянно? У одного игрока куча врагов на экране и всё тормозит. У второго только один, и этот один будет тормозить или нет?
Или все данные обновляются во время HBlank, поэтому память у обоих игроков всегда одинаковая и тормоза одного не влияют на игру второго?
Геймплей в игре очень простой. Если отключить рендер картинки то по ощущениям игра становится раз в 8 быстрее. Имеем это ввиду.
Далее игра-сервер вместо одного игрового поля работает (клетки вокруг 1 игрока) над двумя (клетки вокруг 1 и 2 игроков).
Далее игра-клиент получает информацию об обновлениях от игры-сервера: спавн врагов, урон и так далее.
Также игра-клиент отправляет информацию о том, что делает игрок на сервер, а сервер в свою очередь обновляет всё у себя и если надо отправляет клиенту свои обновления.
Игра-клиент просто рендерит картинку, дает управлять игроком и отправляет действия на сервер, а сервер уже решает всё остальное.
Из-за простоты геймплея задержки могут быть только из-за протокола, потому что он сильно зависит от смещения битов, а это довольно дорогая операция. Например если заспавнилось 6 врагов за один юнит времени, то их отправка клиенту может сожрать фпс 6-8, зато потом все снова плавненько, хоть и меньше фпс при игре не одного.
Вообщем сетевуха инновационная, работает весьма сносно и всё вполне играбельно.
Протокол можно подшаманить, чтобы работал быстрее, например вместо битшифтов зафигарить две огромные таблицы с готовыми результатами вычислений. Так можно будет сэкономить какоето колличество циклов процессора и выиграть 1-2 фпс, но врятли оно того стоит.
А ну и главное:
  • Если тормозит сервер, то тормозит и клиент, потому что не получает сигналы об обновлении (даже пустые пакеты)
  • Если тормозит клиент, то тормозит и сервер, потому что сервер ждёт от клиента сигналы (даже пустые пакеты)
  • Если кто-то из них просрал один пакет, то виснут оба незная что делать и спустя секунд 30 севрер обрубает подключение, удаляет игрока и не дает подключиться заново, потому что не заложено в код игры. Оба при этом остаются со снапшотом того, что было на момент отключения и игра продолжается уже отдельно друг от друга. Балванчик другого игрока при этом пропадает.

Добавлено позже:
А ну и у обоих игр своя копия уровня в памяти загруженная из рома.
Уровни по кабелю не транслируются, только изменения этих уровней.
Например если запустить хак с измененными уровням и подключить к консоли с оригинальной игрой, у хака будут свои уровни, но спавны будут из оригинала прилетать от сервера.
Еще если подключить консоли разных регионов разницы никакой не будет. У игры все равно мало фпс, тайминги на уровне процессора у обоих регионов одинаковые, так что разница если даже и есть, то она пропадает ввиду малого колличества кадров на экране.
Ну и да, что на PAL, что на NTSC, одинаковое колличество кадров в игре  :)

7
Так что хоть он и чертовски умный, но балабол, и всё услышанное стоит делить на сто.
Я сконцентрировал внимание на никому не нужном порте Super Cyborg на сегу.
А сурсом сетевухи я могу и поделиться. Я помоему немезису давал часть исходников, чего он там не доразобрался и почему мне не написал? :)

8
Не сильно в код углубился, но ты походу пытаешь читать конец файла, а там уже ничего нет.
Попроси ChatGPT помочь. Он быстрее вкурит, что у тебя тут не так.

9
Очень впечатляет! Особенно что это из GEMS смогли такое хорошее звучание выжать.
Ты давай на GEMS не гони.
Музыканты не пограммисты.
Америкосы из сеги когда сделали GEMS нифига никому нормально её не обьяснили, вот некоторые музыканты, нифига непоняв, как всё работает, наклепали говнявого музла.
Чо смогли, то и сделали, главное что хотя бы работает.
Это уже позже GEMS оброс и внятным описанием, и нормальным обновлением GUI, и опытными музыкантами, разобравшимися в движке.
То что вначале GEMS там пердёж вместо музыки и звуков не вина движка, а вина сеги, что выпустила сырой продукт.  :)

Добавлено позже:
Короче, я  :(
Кому-то медведь на ухо наступил.
Может ты ещё и звук с эмулятора предпочитаешь звуку с консоли? :)
Куча людей отчиталась, что это лучшее, что произошло с этим портом (почитай коменты на утубе), одному тебе не понравилось и значит надо прикрывать лавочку?
Та не ;)

10
С возвращением :lol:
Я никуда не девался. Вон сколько хаков на RHDN залил

Какая версия gems использовалась?
В скриншоте написано

Хак совместим с другими хаками?
Не тестировал, но те хаки меняют ром не в тех местах, где я ковырял.
Врятли будут конфликты, если накатывать хаки друг на друга.

А почему именно Gems? Я считал, что современные движки куда круче его🤔
Потому что GEMS всё ещё актуальный и удобный движок.

12
Посидели пару месяцев с VLD над хаком.
Заменили звуковой движок, добавили нормальные треки вместо старых и полный набор звуков из аркады с добавлением недостающих.

279720-0

Info:

Name: Double Dragon Music & Sound Hack
Date: 17.08.2024
Version: 1.0
Original ROM: Double Dragon (U) [!].bin
Code: Segaman
Music & SFX: VLD

Features:

-Заменён движок на GEMS
-Добавлены все треки с аркады
-Добавлены все звуки с аркады
-Добавлены недостающие звуки в игру
-Мелкие правки палитры в главном меню
-Переделанный тест звука

Known issues:

-Не все треки использованы, потому что в игре представлен не весь контент с аркадной версии
-Игра иногда затармаживает музыку. Это происходит, потому что старый код постоянно останавливает Z80 и я не хочу потратить еще 3 недели на починку этого. Баг не блокирующий, оставляем как есть.

How to patch:

Патчим (U) версию игры предоставленным ips-патч файлом


13
PS Что-то ты всё равно делаешь не так:

Правда, починил возврат в 64К:

Напомню, что 128К хак соника работает идеально. Так же Ньюк сделал на FPGA корке принудительную активацию 128К режима и Zero Tolerance так же работал без артефактов.
Я нашел у себя в сдк проблемы, из-за которых такое отображение: У меня проблемы в расчетах адресов слоев и их заполнением.
Правда это я для порта Super Cyborg исправил, но если очень надо, могу пересобрать тестер на новой версии сдк.

14
Хак на Terminator2: Judgement Day дла Sega Genesis
Заменён аудиодвижок на MDSDRV.
Написаны новые треки для всех уровней.
Заменены все звуки на новые.
Код: Segaman
Музыка и звуки: VLD
Скачать

Добавлено позже:

Добавлено позже:
Для сравнения, вот оригинал:

15
  0_0
Segaman, к сожалению,для меня это китайская грамота .
Всё-таки хочется хардварного решения....и,по возможности ,универсального для всех игр и хоумбрюшек...
   


думается мне хардверное решение обойдется сильно дороже.
надо отрезать процессор от шины и ставить посрединка между ним и видео-чипом.
надо парсить то, что получает процессор и что пытается писать и куда.
потом сравнивать с нужным значением и заменять в случае совпадения.
если ты хочешь потратить несколько месяцев на то, что можно сделать за пару-тройку часов на софтверном уровне, то рекомендую сильно задуматься.
алсоу нефакт что ты такими манипуляциями не прибъёшь консоль.
короче тут только ромхакер порешает  :)

16
  Ну если можно обойтись горстью мелкологики,я бы хотел попробовать...
 Платы клонов на серии ТА есть для опытов.
Видеопамять тоже есть.
 Дайте мне пинок в нужном направлении  :)
Такс. Судя по доке https://segaretro.org/Sega_Mega_Drive/VDP_registers
Тебе надо отлавилвать запись 0x81xx и делать ему логичекое или (OR) с числом 0x80
Говоря языком пограммиста:
if ((value & 0xFF00) == 0x8100)
  return value | 0x0080;
else
  return value;

Добавлено позже:
Но я бы предпочел написать скрипт на lua для генса, который отловит все записи регистра 0x81 и записал точки этой записи в файл.
Прошел бы игру с этим скриптом.
А далее прошелся по всем полученным местам в роме и добавил логичекое OR с 0х80.
Как правило даже при большой оптимизации таких точек в роме будет максимум штук 20-30.

17
Та мне бы самому такую железку.
Сам я хрен соберу ибо у меня лапки.
Так шо я бы купил  :)
Надо ж норм тестить. Я на 128к молюсь уже пару лет, но из-за лапок ничего поделать не мог

18
Добавил очистку всего экрана.
Я так полагаю, что новые 64кб нужны чисто под таблицы.
В игрулях с режимом 128кб попросту ничего не изменилось:
-проблем с приоритетами слоев нет
-проблем с палитрами нет
-проблем с врашением спрайтов нет
Если так, значит структура тайла в таблице не поменялась, а это значит врятли тайлы из новой памяти можно отображать.
Разве что найдется какой-то незадействованный регистр, где можно указать место с таблицей с доп. битом для тайлов в таблице и в спрайтах, в чем я очень силньо сомневаюсь.

19
Добавил пункт меню.
Включает режим 128кб, ждет vsync, обновляет шрифт и содержимое экрана.

20
Хорошо. Покурю код, сделаю, чтобы графика обновлялась.
Так то я просто бит 128к режима включаю и все, а надо и графен весь прогрузить. :)

21
Возможно, вопрос покажется очень странным, но не судите строго :blush:
Можно как-то эту 128кб VDP подсунуть сеге на карике, т.е. Что бы сега юзала её вместо стандартной?

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

22
А у меня есть самопальный тестер режима 128кб.
На обычно сеге, все в квадратную кашу превращается.
Посмотреть бы, как на 128кб сежке будет работать.

23
Вот опкоды в хексе.
Тут две странички с сортировкой:
1) по битам
2) по названию команды

На счет отличий MOVE от MOVEA:
  • Размер данных: MOVE автоматически определяет размер данных, основываясь на размерности операндов, тогда как MOVEA работает только с адресами и не учитывает размер самих данных.
  • Расширение адресов: Когда MOVEA копирует 16-битный адрес в 32-битный регистр, она расширяет адрес, добавляя ведущие нули, чтобы заполнить оставшиеся биты. MOVE не выполняет автоматического расширения адреса.

Расширение адреса крутая штука, потому что адрес можно записать как 2 байта вместо 4, но адрес должен быть в диапозоне с $FFFF8000 до $FFFFFFFF
Тогда адрес можно записать как ($FFFFC400).w и в роме команда будет содержать 2 байта адреса $C400 вместо $FFFFC400

24
perfect_genius, я все время говрю, что работаю над дебютом новой модельки для стримов.
будет дебют, сразу сажусь заниматься геймдевом.

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

25
Вообщем один человек задонил за сливки, так шо огромное спасибо.
А так акция великой щедрости закончилась.
По идее никто ничего не прохавает :)

26
Сложновато всё это понять не видя самому. Короче, опрос кнопок не привязан к отрисовке кадров, поэтому строгой синхронизации не потребуется?
Т.е. если у одного частота кадров нормальная, то его игра не будет спамить второго "тормозящего" игрока сообщениями о нажатой кнопкой выстрела?
Будет отправлять это сообщение строго, условно, 20 раз в секунду несмотря на тормоза или их отсутствие.

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

27
perfect_genius,
  • Расчет на то, что ромы одинаковые
  • Все этажи эпизода хранятся в ОЗУ
  • По кабелю передаются только события (выстрелы, передвижения, урон, подбор предметов и тд)
  • Код у игры максимально простой, чтобы неперегружать рендер кадров
Насчет последнего, я отключал рендер фреймов и по ощущения было будто поставить в эмуле фреймскип на 5 или 6.
Настолько игровое двигло мало ресов жрёт, что без рендера кадров выдает столько действий за секунду.
Так что мультиплеер для игры особо ненагружет всё хозяйство, самое тяжелое для игры это фреймы.  :)

Добавлено позже:
Добавлю, что если запустить бейонд в коопе с оригиналом, сначала все заработает нормально, а потом резко сдохнет из-за разницы в игровом процессе.
А вот если андеграунд запускать в коопе с оригиналом, то тут все отлично заработает за тем лишь исключением, что у второго игрока будут карты из другой игры.
Если у первого игрока заспавнится враг, то он заспавнится и у второго там же, но вот наоборот это уже не сработает.
Вообщем расчет на то, что стейджи у обоих игроков идентичные, иначе ломается и\или глитчует

28
Картриджи / диски / [Sega Mega Drive] Life On Mars (dump)
« : 01 Февраль 2023, 18:04:24 »
lupus, тут на лицо все признаки чистого SGDK без наворотов.
Так что все что есть сжато средствами самого SGDK, так шо пережать не проблема.
Но вот засунуть обратно это уже совсем другое, размер то разный получится архивов.
Так что имхо проще в несжатом виде грузить новый шрифт, чем париться со сжатиями.
Я тут больше щас мучаюсь с разбором очереди DMA, чтобы докинуть графику для HUD.
Вот тут реально боль отловить, хоть и вполне реально.

29
Да даже не в этом дело, а в том, что игру стало возможно пройти вдвоем. В оригинале это было невозможно из-за постоянных фризов. Как только игроки доходили до третьего уровня, брали спортивные байки, игра начинала тупить, не вывозя динамику на обоих экранах
меня с друганом вообще не пускало дальше третьего уровня без особой на то причины.
у нас у обоих были места первое и второе, а игра оставляла нас на второй год.
так и не прошли.

30
Картриджи / диски / [Sega Mega Drive] Life On Mars (dump)
« : 26 Январь 2023, 10:53:01 »
lupus, шрифт есть? давай затолкаю на место старого и выдам сурс для сборки рома :)

Страницы: [1] 2 3 4 5 ... 110 Далее