1
Ромхакинг и программирование / [SMD] хакинг Dune: The Battle for Arrakis
« : 09 Ноябрь 2024, 12:16:50 »
Там скорее всего надо с разогнаным эмулятором под большее разрешение запускать
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
сравнении байт в байт два рома - оригинальный и после разборки и сборки - будут различия. это меня огорчает.Да можно было бы так сделать, но надо все двигать, а чтобы можно было двигать, надо делать именнованные метки, в общем, все как обычно
и все равно когда начинаю думать как реализовать такую поддержку математики в качестве параметра - попаболь начинается такая, что думать сразу уже и не хочетсяДа, есть такое, надо написать свой компилятор в m68k asm, но Sharpnull, как раз предлагал проекты для высокоуровневой разработки под консоли, там вроде была Nes, и дженерик под 8-и битные процессоры, но есть же SGDK. Или идея делать свои хаки со вставками на высокоуровневом языке?
Реально ли в сегавской дюне удалить все миссии кроме одной, после прохождения которой, игрок бы снова попадал на экран брифинга и мог бы снова согласиться на прохождение этой миссии? и так до бесконечности?Может там можно найти счетчик или что-то похожее на то, какая миссия сейчас идет, скорее всего прям в коде брифинга найти, и получается заменить nop, этот кусок кода, который номер миссии меняет
Какая версия иды подойдёт?Последняя версия планига работает с 8.3 (Если точно Version 8.3.230608 Windows x64 (32-bit address size))
ну... я пошел из далекого далека в подобном пути благо что все данные были давно разобраны до меня r57shell'ом и мне оставалось только вникнуть. во первых нужны эмуляторы обоих чипов - ямахи и psg'шного. с ямахой товарищ Valleybell делал какую-то программу для тестов инструментов и для неё была уже готовая dll'ка. ей просто шлешь регистры и она звучит. с PSG было сложнее. благо отозвался товарищ Shiru и дал порулить сурсами, кажется на java чтоль... или это была флеш... блиииин. надо же забыл! помница это была эмуляция кода для проигрывания в браузере. дальше, поскольку сам я сирота, подключился один буржуйский товарищ wilbert и помог портировать из того языка в мой, но добавив еще ассемблерный код... я итак то не понимал что там творится в коде, а уж с этими вставками асма - вообще темнота он там докрутил возможность увеличить количество ядер. и что-то там еще поверх оригинального кода Shiru... возможно переключение стерео. забыл блин. причем с wilbert'ом тоже познакомились комично... пока у меня ядра для PSG не было - я нашел пример кода на своем языке с генератором тонов. а кто сказал что он может генерировать только одну частоту? вот сделал парсинг VGM'ки, чтение нот в нем когда стартует какая нота когда заканчивается... а чтобы получить хотябы два канала - а генератор был для стерео, то получается один канал играл в левом ухе, а второй в правом так вот по итогу у меня было два ядра обоих чипов. примерное понимание как играет драйвер у меня было и худо бедно крит через раз родил хоть какое-то проигрывание мелодий и спецэффектов. радости было полные штаны. а потом уже был Valleybell'овский GEMSPlayer и Sharpnull его портировал из одного языка в другой и из консольной программы перевел в дллку, которой можно просто слать образы в памяти банков GEMS и запускать проигрывание. тут уже играет на 99% точно и без вылетов, не то что у меня было весьма далекое по качеству звучания и тем более вылетов по итогу общими трудами у нас эпическая онлайновая база GEMS треков и спецэффектов из большинства GEMS игрДа, за это вам всем благодарен, у меня есть переписанная версия с поддержкой нескольких чипов одновременно, единственное, что можно играть несколько сиквенций только из одного банка (в смысле, текущего)
Сейчас нет нормального софта, чтобы расширить rom? Знаю, что можно самому с помощью хекса и блокнота, но хочется автономности, по кнопке. Ну или Хекс с такой функцией, чтобы по факту дописывать ром?Вся сложноть упирается, в портабельность, и куда бы подлезть в роме, чтобы не сломать текущие адреса. А в конец, сколько угодно можно писать, все зависит от нужд хака
Turbo2000, Хрен знает о чем вы и что вам нужно, но блад сортировал драйвер для Соника, можете ему написать.О, круто, видел этот хак. (Не сразу оценил, что это так классно)
Да и честно, хз как вы ищете, мне это видео сразу выпало.
https://www.google.ru/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.youtube.com/watch%3Fv%3DeV3c_W5lKfQ&ved=2ahUKEwiypLat15yIAxX-GBAIHb4uB_wQwqsBegQIEhAG&usg=AOvVaw3Vk9sxF53SieX5JB4SL1VV
походу там только две игры:Да, так и есть, в общем, скорее всего и не будет реализации драйвера, если только все это сэмулировать
Streets of Rage 3 (Bare Knuckle III) Ancient Music Driver MD v1.00 (Hideki Koyama)
Beyond Oasis (The Story of Thor) Ancient Music Driver MD v1.06 (Hideki Koyama)
Пальцем в небо - на пс1 видел Overboard, она же - Shipwreckers. Вики говорит, что выходила и на ПК.Спасибо, добрый человек, она, нашлась!
Mednafen - это аналог Retroarch, а не ядро для него.
в меднафене 2(17%) для фпс в районе 22, 3(45%) для почти стабильных 30 фпс, багов не видел, прошёл все игры на стриме.Спасибо
Ссылки на страницы ромхаков:
Road Rash Improvement
Road Rash 2 Improvement
Road Rash 3 Improvement
Road Rash (SegaCD) Improvement
Скачать готовые ромы
Сборки для RetroArch с каверами от Dean Harris Composer:
Road Rash Improvement
Road Rash 2 Improvement
Road Rash 3 Improvement
Turbo2000, выкладывай, если в интернете нетСделал либу https://github.com/DramaDesu/ym-smdtools
Лично не нашел, сделаю библиотеку:)
Добавлено позже:
Turbo2000, выкладывай, если в интернете нет
а что есть такого в оригинале, чего не разобрано в сборщике?Ничего, просто интересно, нет же исходников и инструментов, как это было разобрано, только результат и структура для сборки
о! а чо там в Дюне сжато? я думал там как открытая книгаВ оригинале много чего сжато, 100%: графика, маппинги (тайлы), если не ошибаюсь, то таблицы спрайтов тоже
В The Story of Thor / Beyond Oasis два метода сжатия, один как в Streets of Rage 2. Я когда-то писал медленный компрессор на Python для метода из SoR2, потом я писал на C компрессор метода из Тор с обоими декомпрессорами, но не добавил компрессор от SoR2. Там ещё алгоритм предполагает возможность работы с блоками. Для сжатия методом из SoR2 можно использовать https://github.com/hansbonini/lz_ancient, но разжатие сделано с ошибкой. Прикладываю мою программу для разжатия обоих методов и сжатия методом из Тора.О, спасибо, большое, если что, то могу выложить программу расжатия графики для дюны, вроде работает без ошибок, но не уверен, что кому-то надо
Декомпиляторы во что? О_оЛоадер, неправильно написал, у 6502 свой ассемблер.
Mesen очень крут, он может даже отматывать игру назад.Спасибо, буду пробовать его
Мапперы на Famicom, NES, Денди: откуда взялись и зачем нужны (часть 1/2)
Мапперы на Famicom, NES, Денди: откуда взялись и зачем нужны (часть 2/2)
https://www.nesdev.org/wiki/Mapper. Некоторые мапперы реализованы только в https://unlicensed.games/libg/static.php?page=NintendulatorNRS, поэтому его исходный код тоже. В FCEUX точности не хватает для разработки игр, там даже в MMC3 не учитывается особенность IRQ. Кроме Mesen, нормальных эмуляторов со встроенным отладчиком нет. В любом случае нужно проверять на реальной консоли, лучше на разных.Ого, вот это уже серьезнее, спасибо
UPD: В Mesen нужно в настройках эмуляции включить пункты для разработчиков.
https://www.nesdev.org/wiki/Mapper.Шикарный сайт, спасибо большое
Я в коде самих *парсеров не особо разбираюсь, но если у тебя уже есть апи и представление как оно работает, то посмотри на готовые *парсеры форматов данных в обоих модах опенра на дюну, вот напримерДа, поковырял на досуге, в целом ничего сложного, но там все форматы основаны на дос версии. И структуры более полные и понятные.
https://github.com/OpenRA/d2/tree/master/OpenRA.Mods.D2/FileFormats
нам как раз и нужны только адреса для начала чтения данных нужного типа, а потом дело математики?Да, на 100% еще не разобрался в структуре, но там некоторые вещи делаются по разному: кол-во сжатых данных читается из заголовка в месте с адресом, а например, размер окна или плоскости (А/B), задаются прямо в коде, в общем, надо что-то маппить адресами, что-то просто вписывать значениями.
Свой движок это круто, как минимум чтобы к этому прийти нужно немало информации знать, чтобы представлять, что именно он должен из себя представлять, простите за тафтологию, чтобы понимать с чего начать и выбрать как начинать.Игры пишу не в первый раз, это профессиональное, а с движками немного сложнее, но 2D движок не самое сложное (В целом, есть представление)
А на чём запускаешь? Ей по сути кроме нет фреймворка больше ничего не нужно должно быть, ну и драйвер на видеокарту любой, хотябы с поддержкой opengl, можно через start скрипт запустить, с указанием сразу нужного мода, а можно через OpenRA.Game.exe, тогда он спросит выбор мода после запуска графической части игры.Машина достаточно хорошая, Win11, сборку получилось сделать, твой мод пока что не получилось
сначала был афтор пкашной вариации драйвера SMPS, который сделал SMPSPlay. не помню ник.Да, я взял испраленную версию от Sharpnull'а, убрал от туда зависимостить от виндового звука, и все такая же длл, но надо только дописать куда играть семплы.
ValleyBell увидел сие поделие и сказал: я тоже так хочу, но для GEMS! и сделал GEMSPlay.
после пришел Sharpnull и сделал версию этого проигрывателя в виде dll, которую уже можно подключать в свои проекты как есть. без всяких там сборок, установок среды программирования, понимания кода, фиксов кода в случае если среда программирования обновилась настолько, что пяток команд поменяли синтаксисы... с одной стороны это прям хорошо, что упрощает вход в тему - взял готовую длл и вперед с песнями. с другой - все-таки лучше, когда программист сам вникает досконально в код и, в случае если надо, добавляет что-то свое что нужно. с этой точки зрения это плохо - типа пришел на все готовое и сам головой не думаешь сам то я конечно пытался сделать нечто по мотивам... но вечно вылетало, глючило и играло не точно рад был что вообще хоть как-то играло! а эта длл прям спасение.
Новых ментатов подвезли
Новых ментатов подвезлиА по какому принципу там так расставлены спрайты? у всех по-разному
сам то я конечно пытался сделать нечто по мотивам... но вечно вылетало, глючило и играло не точно рад был что вообще хоть как-то играло! а эта длл прям спасение.Да, конечно, это сложно, но очень интересно.
Вот готовый мод первого редалерта с примером добавления в него здания и юнита, версия старая, зато живучая в том плане, что хоть на старой винде работает, хоть через вайн на свободных драйверах.Кайф, вообще заменить все и поиграть на более серьезном движке, правда ощущения будут скоре всего как от ред аллерта, зато можно будет размещать пехоту в зданиях
Для теста выбирать надо RA мод, сторону dune и потом построить ремонтную площадку и можно будет построить mcv от сеговской дюны.
В их гитхабе есть ещё полностью готовый мод PC версии Dune 2, даже с парсерами всех ресурсов из оригинальных файлов, можешь в нём подсматривать как и что реализовано.Спасибо большое, это все будет очень полезно, буду смотреть.
Так же у меня есть почти готовый Dune2[SMD] мод для OpenRA, за основу его я взял мод Dune 2000 мод, так как размер клетки 1 в 1 в нём совпадает с сегавской дюной, заменил графику местности на сегавскую, музыку, несколько зданий и юнитов заменил на сегавские, но использовал я png и wav парсеры, что по сути не оптимизированный костыль + возня с конвертированием, не нашёл никого кто мог бы парсер состряпать и отложил на неопределённое время, а в принципе то там делов не особо много осталось, голоса ментатов заменить, если ещё не (не помню) да и юниты со зданиями можно методично заменять однотипово.Да, я так же примерно собирался, как-то все это рипнуть, музыку тоже в wav, потом появилась идея с парсером, музыка играется на сиквернсоре, который у Сереги используется, но немного модифицированный (я там сделал несколько чипов для микширования), графику еще всю не умею доставать, но там в основном надо понимать смещения (могу вытаскивать и распаковывать данные: графические тайлы, маппиги тайлов, спрайты), по поводу звуков, там вроде семплы несжатые, если неошибаюсь, их несложно вытащить. Могу попробовать состряпать библиотеку, только надо обрисовать формат.
А ты какой движок используешь?У меня свой, там SDL, SDL_Gpu, и собственное творчество.
[Resources]
rom[0] = rom_en
rom[1] = rom_ru
[rom_en]
path = Assets/Data/Dune - The Battle for Arrakis (U) [!].gen
locale = en
compressed = true
offsets = rom_en_offsets
gems = rom_en_gems
[rom_en_offsets]
sega_sign_header = 0x18CE
sega_palette = 0x1DA4
sega_animated_palette = 0x18D6
ship_anim_sequence = 0x1963A
ships_sprites_table_offsets = 0x1957A
ships_palette = 0xA6E98
houses_header = 0xA8B9A
houses_tiles_header = 0xC3AEC
houses_palette = 0xA6A18
[rom_en_gems]
bank[0] = rom_en_gems_bank_menu
bank[1] = rom_en_gems_bank_game
[rom_en_gems_bank_menu]
instruments = 0xD02AE
envelopes = 0xD0251
sequences = 0xCF970
samples = 0xC8160
[rom_en_gems_bank_game]
instruments = 0xFE2B6
envelopes = 0xFE185
sequences = 0xF6363
samples = 0xD06BF
[rom_ru]
path = Assets/Data/Dune - The Battle for Arrakis (E) [T+Rus].gen
locale = ru
compressed = false
font_pointer = 0x0FF000
std::vector<unsigned char> LoadCompressedData(const std::string& in_header_name) const;
std::vector<unsigned char> LoadCompressedData(uint32_t in_header_offset) const;
void FVDPAtlas_GPU::Load(const std::vector<unsigned char>& in_vdp_data) const;
auto&& uncompressed_sign = LoadCompressedData("sega_sign_header"); // Графические тайлы из VDP (32 байта на один тайл 8x8)
FVDPAtlas_GPU vdp_atlas; // Уже графическое представление, можно конвертировать в картинку, это это будут тайлы, понадобится маппинг
vdp_atlas.Load(uncompressed_sign); // Создаст битмапу, массив пикселей (глубина 8 бит, как раз для маппинга на палитры)
https://file.io/Bg6cXmxoB788О, только заметил, что это ссылка на архив, а не на картинку, спасибо
делай сразу ММО. чтоб два раза не ходитьНе туда воюете, товарищ
Turbo2000, Здорово, это, кажется, парсер, называется, если я правильно понял о чём речь, если возможно будет его встроить в OpenRA, то обязательно достану из пыльной полки мод дюны 2 для него, а то через костыли делать не очень то удобно и не оптимизированно, одни только картинки насколько жирные, по сравнению с оригинальным ромом