1
Программирование / Разбить изображение на неповторяющиеся тайлы
« : 29 Январь 2026, 10:53:15 »
MapImage2, который лежит у нас на сайте уже лет 10, наверное, такое умеет делать.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
ну и так-же хотелось бы этот палетквант из коробки. но там опять из объяснений Марат тоже мало что понялУ меня есть готовая dll и код на паскале. Напиши мне, если нужен. Уже почти месяц валяется. Лень писать инструкцию. Но есть инструкция написанная ии Claude. После того, как ии написал мне код на Питоне, я попросил его переписать всё это на паскале. После этого исправил ошибки и довёл до ума. Теперь всё работает.хотя можно чатужпт попробывать будет скормить его порт из жавы скрипта в питон.
тем временем вручную с помощью tiledpalettequant и редактора сцен перегрузил все изображения, 18 сцен. каждую загрузи, квантизируй, выгрузи, выгрузи палитру к ней... печаль тоска. нужна dll, чтоб подобный результат делать с одного клика. уже 5 раз на рипите посмотрелВот полностью рабочий скрипт на Питоне. Конвертировал с помощью ИИ Claude. Некоторые функции правил вручную. Настройки надо задавать внутри скрипта в функции process_image_file. Дизеринг включается в классе QuantizationOptions. Скрипт довольно медленный по сравнению с ява скрипт. При включенном дизеринге совсем всё долго вычисляется. Если дебажить скрипт, то станет ясно, как генерируется палитра и класстеризуются тайлы. Скрипт запускается через командную строкукайфую!
Python TiledPaletteQuantizer.py Input.bmp Output.bmp
или же, к примеру 150 тайлов картинка. 10 по итогу попало в первый кластер. и палитра для этого кластера была взята из одного какого-то тайла. и значит остальные 9 просто перерисовываются по этой, выбранной как общей, палитре.Палитра берётся не из одного какого-то тайла. А берётся палитра всего изображения, и из неё удаляются цвета, менее значимые для этих тайлов. Какие цвета удалятся в итоге решает алгоритм квантования. МедианКат или Нейроквантование и прочии. В зависимости от выбора.
тем временем стал хотеть tiledpalettequant в виде dll еще больше
случайно раздуплил, что он оказывается реально пилит изображение на тайлы, а после квантит эти самые тайлы в одну из четырех палитр. а значит можно родить алгоритм определения какую именно палитру из четырех использует конкретный тайл. и когда в черновом коде убедился, что это действительно так... стал писать кипятком и хотеть этот tiledpalettequant еще больше и больше.
А через какой тайловый редактор надо bin-файл открывать, чтобы графику посмотреть? А то я сколько ни открывал, а там каша.YY-chr, например.
И кто какие проги использует для создания карты?Никто не создаёт в них карты. Эта программа была сделана для того, чтобы помочь ромхакерам вносить графические изменения в уже существующую игру.
Открыл Winhex 21.0 и там много всего разного.., но insert->insert bytes не нашёл. Специально переключил на английский.Эти слова шли же после после упоминания программы Translhextion.
Там также 16КБ создаётся и сохраняется (версия 2021/06/06). Они похоже так и не сделали опцию настройки размера файла, нужно самому разделять и объединять файлы.Не знаю, я всегда использую его, как просмотрщик. Когда надо что то по быстрому найти.
Я всегда считал этот редактор хренью, к тому же заброшенный, хотя пригодился однажды. В любом случае, всегда нужно уметь самому программно редактировать графику, даже если кто-нибудь осилит сделать удобный редактор пиксель арта.
Я использую эту программу, чтобы попытаться нарисовать спрайт персонажа, но в итоге всегда сохраняется файл .chr размером 16 кб. Но подходит только 8 кб. Что я делаю не так? Или эта программа предназначена не для рисования с нуля, а только для редактирования?Это такой баг в программе. Есть более новая версия написанная на c# yy-chr .net. лучше пользоваться ей. Либо хекс эдитором удалять лишние данные.
Reg = idaapi.get_reg_val('A0')
return Reg == 0x1A4Failed to retrieve register value
File "<string>", line 2, in main
File "C:\IDA Pro 8.3 (x86, x86_64)\python\3\ida_dbg.py", line 4278, in get_reg_val
return _ida_dbg.get_reg_val(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oops! internal error 40198 occurred.
Further work is not possible and IDA will close.
Would you like to create a crash dump for a bug report?
Я даже знаю почему.Потому что я весь необходимый код поправил для Friеndly режима. А остальные режимы я не трогал. Там тоже много чего надо менять.
Самый главный прорыв - это перенос форматов команд и лиг из 98 в 96, которые Марат пытался осуществить. Пытался, но, видимо, не получилось. При этом, какие адреса за размеры отвечают, он не говорит. Жаль, я бы сейчас больше сборных добавил.Слишком геморно, я потратил достаточно много времени и мне удалось лишь осуществить возможность выбора команд во Friendly режиме. Но при этом почему-то сломалась система чтения игроков. Хотя до этого было всё нормально.
Без нулей иксы или игреки встанут на нечётный адрес и Сега не сможет получить к ним доступ. Т.е. для выравнивания.Ну, ради справедливости, надо сказать, что Сега может и побайтно читать.
Это что угодно, но только не то, что мне нужно. Спрайт, который мне надо заменить, начинается в 12CB68, где 30 FB - отвечает за сжатие или чего-то там.Так это не тебе. Это для поиска вбрасывания мяча. Флаги бы я нашёл без проблем 100%. Искать графику дебагом это вообще проще простого. Гораздо сложнее искать функции движка игры.
Твоя таблица же идет после нужной мне графики, блоков с командами, с игроками, и чем только можно. Т.е. почти в конце рома. На что она может ссылаться - я не знаю.
Марат, а как ты это нашёл? Просто так прошёлся в хекс-редакторе глазами и зацепился? Таких списков указателей в роме несколько же?
По идее, достаточно найти список этих адресов. Глитчер будет искать такие структуры в будущем. А пока вариант - найти с ним один такой указатель и уже самому найти весь список в роме с хекс-редактором.
Привыкай сохраняться перед вбрасыванием, чтобы накопить несколько сохранений для всех вариантов: ближняя линия вправо, дальняя линия влево и вправо.Я вам открою один секрет, есть некоторые параметры и они используются и для ближней и для дальней стороны. Так что если вы исправите этот параметр и он будет правильно работать на ближней стороне, то тогда он начнет глючит на дальней стороне.