(14.01.2020 16:25)megavolt85 писал(а): (14.01.2020 11:13)SWAT писал(а): Помоему можно CDI собрать под 45000
единственный софт для сборки CDI это cdi4dc, audio/data он собирает под 11702, data/data под 0, так что для сборки с lba 45000 придётся переписать код cdi4dc, готовых решений нет
Я имел ввиду возможность самого формата. А то что из коробки это не сделать это да. Но не думаю что сложно поправить cdi4dc, благо есть исходники.
(14.01.2020 15:21)111 писал(а): (14.01.2020 11:13)SWAT писал(а): Ну хорошего уровня да, не получится, только мелкие поделки. И дело там не в асме мне кажется, тот асм волшебный уже давно выдернули.
Проблема скорее в корявом и очень обрубленном драйвере для GPU. В KOS много чего нет.
для отрисовки в кос вполне достаточно сделано. Две главных проблемы:
1) софтварные трансформы (я не знал, что дримкаст в этом плане днище т.е. что нет нормального TnL-юнита (даже в PS1 был GTE, например). Это, на мой взгляд, самый главный "bottleneck").
2) отправление вертексов на gpu
В первом пункте все понятно, т.е. учитывая, что каждый кадр делаются десятки тысяч перемножений, сложений и пр. логично такое писать вручную, а не надеятся на компилятор, например так:
https://dcemulation.org/phpBB/viewtopic....4#p1054104
А вот со вторым пунктом хз что и как делать. Не знаю, возможно ли такое, но нужно как-то не по одному в цикле отправлять каждый вертекс, а пачками за меньшее число раз.
Т.н. "direct render" т.е. макросы для использования "store queue"ов (я хз, че это такое, но не суть), вроде как и отсылают по 32 байта за раз т.е. вертекс целиком (pvr_prim(), предположительно, отправляет по одной переменной т.е. по 4 байта, поэтому и медленней). Может быть для этого и нужно использование DMA, но нигде нет примеров использования и сравнений.
Еще один из примеров:
https://dcemulation.org/phpBB/viewtopic....7#p1034137
но я не вникал, как оно работает.
Кроме трансформов нужно еще и делать "near_z clipping" т.е. "резать" треугольники, которые слишком близко к "камере". А это тоже лишние расчеты и проблемы с организацией кода (который нужно весь переделывать с учетом вышесказанных особенностей).
Короче говоря, ничего готового для пользования нет, и нужно делать все самому то, чем для сеги занимались профессионалы за деньги. Вот только мотивации для такого геройства недостаточно, ибо слишком нишево.
Вот, например, для мегадрайва есть SGDK, и как следствие, обилие новых игор последние несколько лет. Кос в этом плане даже близко не является аналогом sgdk для дримкаста. Когда я только начинал, то KGL мне казался этим самым аналогом, но разочарование было жестким, и у меня до сих пор бомбит (я реально надеялся заработать на этом всем, а тут такие подставы).
Наверняка это все было известно до меня, но хотя бы выговорился немного.
Я об этом и говорю, о вертексах и клиппинге в первую очередь, а так же там есть еще всякие sort list для вертексов и прочие штуки завязанные на DMA. Это как раз и не позволяет сделать все по взрослому.
Частично это вроде как реализовано в новом GL драйвере, который писал Фантом, но там есть еще куда расти да и не все там опять же есть и вообще хоршо оптимизировано.
Тот же DMA, на который все завязано, используется в KOS через одно место, отголоски реверс-инжиниринга так сказать. В ASIC есть готовые регистры для всех этих функций, где DMA обоих чипов подружены, но типа знание о них равняется тому что ты пользовался официальными доками. Вот кто мне объяснит чем отличается в этом случае G1 ATA драйвер
)) Вот он написан с использованием этих самых регистров в ASIC. Я в свою очередь их использовал еще в эмуляции CDDA для отсылки данных в звук память по DMA, там все очень удобно и просто, в отличии от того, что понаписано в KOS.
Store queue это процессорная штука, что-то между DMA и memcpy так сказать, для копирования во внешнюю память в общем без DMA, но при этом и не грузить проц лишними ожиданиями. Но их нужно грамотно использовать, чтобы получить их приемущество полноценно мне кажется.
(14.01.2020 15:21)111 писал(а): (14.01.2020 11:13)SWAT писал(а): В лоб продавать конечно нельзя такое.
Но мне кажется если скрыть все копирайты в коде, которые слишком красноречиво говорят о том что это KATANA SDK и не говорить об этом на каждом углу, то не думаю что кто-то будет проверять это
выше уже упоминал подобное. Проблема тут в другом - сектанты наверняка спалят т.е. 100% найдется "герой", который решит поковыряться в 1st_read.bin'е и громко разоблачить мерзкого пирата.
Хотя для одноразового срубания бабла (без выкладывания демо-версии) это может и сойти, наверное.
Но будет уже поздно, а правообладатели я сомневаюсь что будут наезжать
(14.01.2020 15:21)111 писал(а): (14.01.2020 11:13)SWAT писал(а): Помоему можно CDI собрать под 45000, так не делали лишь для экономии места мне кажется. Хотя я на 100% утверждать не могу, я точно не помню.
ну ты говорил, что это зависит от размера трека (т.е. "заполнителя" первой сессии?). Но если не помнишь, то ладно, не сильно это уже и нужно.
Ага. Только в случае с GDI там 2 трека.