Автор Тема: Софт для ромхакинга  (Прочитано 6743 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2461
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Софт для ромхакинга
« Ответ #30 : 05 Сентябрь 2018, 14:04:07 »
Да, код просто монстрический. Я попробовал ради прикола один из алгоритмов реализовать, но у меня картинка сильно тёмная получается. И даже если осветлить её - цвета на оригинальные не всегда похожи... Хотя сам алгоритм похож на твой, с выборкой...





П.С. Опять нас ждёт хак "Трамп против @#тина"?
« Последнее редактирование: 05 Сентябрь 2018, 14:20:32 от Guyver(X.B.M.) »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2538
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Софт для ромхакинга
« Ответ #31 : 05 Сентябрь 2018, 14:34:25 »
не :) просто более менее фотография Трампа попалась с нужным освещением, чтоб похожа, как освещение ментатов в дюне. а так у него глаза плохие - щелочки. анимацию рисовать для моргания глаз будет не удобно. оригинальные ментаты то с большими глазами, видно как зрачок влево-вправо двигается. а тут-же ничерта невидать :)

сам код из трех частей - моя криворукая часть, в том месте где я создаю палитру, как на приставке из 512 цветов.

после там код с асм вставками - это другого товарища, который растаскивает цвета на изображении к ближайшим разрешенным из 512.

третья часть уже сам код пастеризации второго товарища, с уменьшением количества цветов. вот видимо монструазность в виду подключения этого некоего фильтра или как он по научному - Dither. я думаю что с включенным этим Dither как-то квадратично. без него более плавно, а Sharpnull наоборот пишет что с Dither лучше.

по поводу яркости что-то я не знаю а будут ли соответствовать цвета, после такого изменения яркости тем, что разрешены? в смысле сеговские 512?

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2461
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Софт для ромхакинга
« Ответ #32 : 05 Сентябрь 2018, 14:46:00 »
Будут соответствовать, если изменение яркости происходит в пределах этих цветов разрешённых. У тебя в результате палитра получается отдельным файлом? В бмп 16 цветов же не включается палитра, да?

Имхо, Dither - это вообще шляпа. Никогда не использую в своих работах и стараюсь избавляться от этого шакального эффекта в изображениях...

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2538
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Софт для ромхакинга
« Ответ #33 : 05 Сентябрь 2018, 15:19:18 »
палитру выковыривает из bmp изображения. а дальше можно поступить как угодно. в данном коде не сохраняет. там для себя выводил лист получившейся палитры:
;For i = 0 To ArraySize(WK_Pal())
;  Debug WK_Pal(i)
;Next

сохранение у меня в других местах :) не в этом коде. там где сохраняются регионы, где ментаты, где экраны и где большие иконки. там цвет надо перевернуть, так сказать, и потом сохранять. для переворачивания сделал что-то типа такого:
Procedure.a Parse1Color(inp.a, pbtosmd.a=0)
 
  out.a
 
  If pbtosmd = 0
    Select inp
      Case 0
        out = 0
      Case 2
        out = 36
      Case 4
        out = 72
      Case 6
        out = 109
      Case 8
        out = 145
      Case $A
        out = 181
      Case $C
        out = 219
      Case $E
        out = 255
    EndSelect
  Else
    Select inp
      Case 0
        out = 0
      Case 36
        out = 2
      Case 72
        out = 4
      Case 109
        out = 6
      Case 145
        out = 8
      Case 181
        out = $A
      Case 219
        out = $C
      Case 255
        out = $E
    EndSelect
  EndIf
 
  ProcedureReturn out
 
EndProcedure

Procedure.l Parse3Color(inp.u)
 
  out.l
 
  r = GetBits(inp, 0, 3)  ;: Debug Hex(b)
  g = GetBits(inp, 4, 7)  ;: Debug Hex(g)
  b = GetBits(inp, 8, 11) ;: Debug Hex(r)
 
  out = RGB(Parse1Color(r), Parse1Color(g), Parse1Color(b))
 
  ProcedureReturn out
 
EndProcedure

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

Добавлено позже:
и у меня вроде что-то получается :) насильно засунул фиолетовый в просчитываемые цвета и в результате он всегда есть в выходной палитре, независимо от того, есть ли он на изображении или нет. теперь надо сделать вилку, даже тройник. три варианта развития событий - как есть, учитывать фиолетовый есть или нету на изображении, учитывать черный есть или нету на изображении. и то, причем не фиолетовый, а любой какой укажешь. доволен как слон :) НО! спасти красный цвет так и не получилось. слишком мало места красным цветом на Трампе покрашено и в результате у красного маленький рейтинг. не смотря что он ярче, так сказать, в палитру в итоге вошел более блеклый какой-то цвет, просто у него был лучше рейтинг.
« Последнее редактирование: 05 Сентябрь 2018, 16:44:26 от SeregaZ »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Софт для ромхакинга
« Ответ #34 : 05 Сентябрь 2018, 19:51:22 »
Имхо, Dither - это вообще шляпа. Никогда не использую в своих работах и стараюсь избавляться от этого шакального эффекта в изображениях...
Не знал, что такие люди бывают. Как же вы играете в игры для ретроконсолей, там же повсеместно используется Dither, невозможно ограничить цвета и чтобы выглядело хорошо без этого (для объёмных изображений, пихать везде очевидно нет смысла).
200892-0 200894-1 200895-2

SeregaZ, я бы на вашем месте не возился из-за одного цвета, а почему с маджентой проблемы не понял, в хорошем алгоритме можно задать что считать прозрачностью и он не должен считать его цветом, а просто отметить отдельным индексом. Если вы управляете "популярностью", то можно занижать мадженту (цвет прозрачности) до минимуму, чтобы никогда не попадал в палитру (так в конвертерах и происходит), и после обработки тупо в те пиксели вставить индекс прозрачного цвета. (UPD: Глупость сморозил, можно же просто игнорить пиксели с прозрачностью.) Хотя наверно я неправильно понял и вам именно маджента и нужна в итоге...

Галстук никогда не будет таким, какой вы хотите. Выход из конвертера нельзя назвать пиксель артом, потому что пиксель арт - это когда художник ставит в определённое место определённый цвет. Я к тому, что красиво автоматом не получится.
--------
И опять же  пастеризуют молоко, а картинки постеризуют.
« Последнее редактирование: 05 Сентябрь 2018, 20:13:06 от Sharpnull »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2538
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Софт для ромхакинга
« Ответ #35 : 05 Сентябрь 2018, 20:24:35 »
ну вот... неожиданно развязал холивар :)

этот код не различает прозрачный или нет. ему подавай количество выходных цветов и все на этом. поэтому я и делал не в 16, а в 15 цветов постеризацию (гугель хрому не нравится через о), всегда резервируя 0 цвет как фиолетовый. однако если в изображении был фиолетовый - в итоговой палитре оказывалось два фиолетовых. то есть 1 цвет терялся. теперь же, добавив обязательное наличие в выходной палитре фиолетового, я могу делать в 16 цветов. просто в конце нужна будет сортировка палитры, чтоб сдвигать фиолетовый (либо какой другой цвет) на 0 номер. этот же трюк буду проворачивать и с регионами - добавляя обязательно черный, независимо от его наличия на изображении. он должен быть под 15 номером. 0 фиолетовый, 1-7 постеризация может изменять, 8-14 опять фиолетовый, а вобще пустые не используемые и 15 черный.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2538
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Софт для ромхакинга
« Ответ #36 : 06 Сентябрь 2018, 14:19:44 »
добавил в опциях галку для этого самого Dither и во всех четырех местах, где у меня импорт добавил эту переменную.
CheckBoxGadget(#OptionsDither, x, y, 915, 20, "Use Dither for import images | Использовать Dither для импорта изображений")
ну и... пофиксил глаза для Трампа :)))))


Оффлайн morskoyzmey

  • Пользователь
  • Сообщений: 31
    • Просмотр профиля
Софт для ромхакинга
« Ответ #37 : 17 Сентябрь 2018, 23:42:44 »
Не знаю, актуален ли заголовок топика, но внесу свои 5 копеек.

HxD

Удобный хекс редактор. Есть кодировки, сравнение файлов, чек сумма, настраиваемая тема.
Русский язык можно найти в гугле.
https://mh-nexus.de/en/hxd/

famiROM
201188-0
Удобный сплиттер ROM файлов (NES-> PRG BIN, CHR BIN).
Сам обрезает iNES, наращивает до нужных размеров. Один клик и можно прошивать флешку.
Также есть и редактор заголовка, и еще куча всего, чего я пока не понимаю.
Ветка автора: http://nintendoage.com/forum/messageview.cfm?catid=22&threadid=63070

DISASM6
201190-1
Хороший дизассемблер. Работает с CDL файлами статистики Code/Data Logger эмулятора FCEUX.
Красиво оформляет код для ASM6.
https://forums.nesdev.com/viewtopic.php?t=7466

Извините, если это очевидные тулзы, но мало ли кому пригодится.

Оффлайн Omkommersind

  • Пользователь
  • Сообщений: 34
    • Просмотр профиля
Софт для ромхакинга
« Ответ #38 : 02 Октябрь 2018, 12:20:40 »
Эмулятор FCE220 имеет потрясающий набор встроенных инструментов для интерактивной отладки, есть ли какие-нибудь схожие аналоги для ромов SMD/Genesis?

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9390
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Софт для ромхакинга
« Ответ #39 : 02 Октябрь 2018, 14:01:37 »
Omkommersind, вагон - Exodus, Gens Kmod, RegenD
или Smd IDA Tools

Оффлайн Omkommersind

  • Пользователь
  • Сообщений: 34
    • Просмотр профиля
Софт для ромхакинга
« Ответ #40 : 02 Октябрь 2018, 15:10:23 »
Omkommersind, вагон - Exodus, Gens Kmod, RegenD
или Smd IDA Tools
O, отлично, спасибо

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1618
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Софт для ромхакинга
« Ответ #41 : 28 Октябрь 2018, 03:16:32 »
Dino archiver v0.1
Платформа: PlayStation.
Программа сжатия\распаковки файлов для игры Dino Crisis.



Оффлайн Mr2

  • Пользователь
  • Сообщений: 1618
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Софт для ромхакинга
« Ответ #42 : 19 Май 2020, 06:27:35 »
SlowR3KA
Платформа: PlayStation.
Современный PlayStation(MIPS R3000A) дизассемблер.




Оффлайн Mr2

  • Пользователь
  • Сообщений: 1618
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Софт для ромхакинга
« Ответ #43 : 06 Декабрь 2022, 18:07:02 »
Apply PPF GUI
Платформа: PlayStation.
Программа вносит в игру изменения, содержащиеся в PPF файле.