Автор Тема: RTHextion: новый hex-редактор для ромхакинга и переводов  (Прочитано 3716 раз)

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

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
переносы вроде корректно работают
Ну ты монстр :)
Я такой редактр планировал сделать через год-два, а теперь смогу пользоватса уже сейчас :thumbup:

Я сейчас ковыряю логотипы Марио и других игр, и мне приходилось всё долго рисовать в Пэйнте:


А теперь всё легко:


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

Но всё же ты, как програмист, чувствуеш, што эта фича принесёт много багов в будущем? Вернее, у тебя из-за неё постоянно будут баги и проблемы, т.к. надо постоянно учитывать такую структуру отображения. Поэтому я бы на твоём месте как-то отделил эту фичу, штобы легко её отключить, избавитса, когда окончательно психанёш :)
Например, включением #define или вообще отдельную ветку проекта.
Т.к. ты уже вступил в область сложных редактров и IDE.

Жду фидбек)
-выделяю байт, нажымаю Enter - происходит перенос, всё ок. Но если отменить с Ctrl+Z, то всё вернётса, но выделение уходит в начало файла, а не на начало разрыва
-если нажать Enter, когда выделен самый левый байт, то визуально ничево не происходит
-revert не сбрасывает всё это. Или как сбросить всё это форматирование?

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Ну ты монстр :)
Я такой редактр планировал сделать через год-два, а теперь смогу пользоваться уже сейчас :thumbup:
:blush:
Ну главное, чтобы продукт был востребован  :biggrin:

Я сейчас ковыряю логотипы Марио и других игр, и мне приходилось всё долго рисовать в Пэйнте:


А теперь всё легко:

А разве нет редакторов Марио на все случаи жизни?..
Выглядит так, как будто возможность добавлять отступы все ещё нужна. В этой итерации я не осилил, еле заставил работать переносы, но я вернусь к вопросу.

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

revert не сбрасывает всё это. Или как сбросить всё это форматирование?
Отдельные переходы удаляются интуитивно (как мне казалось) – бэкспейсом.
При переносе первого байта ничего не происходит, т.к. визуально менять нечего. Можно, в целом, проверять, первый ли он и добавлять два переноса, но, если расширить количество колонок, все станет весьма странным.
Удалить все форматирование можно либо выделив нужный фрагмент и кликнуть на соответствующий пункт контекстного меню:
311845-0
Либо из меню Edit (Редактирование).

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Ну главное, чтобы продукт был востребован
В ближайшые месяцы точно буду активно использовать, мне надо изучить много игр.

разве нет редакторов Марио на все случаи жизни?
Есть, я делаю редактр графики универсальный, а не конкретно для Марио.

возможность добавлять отступы все ещё нужна
Это не так важно, как переносы.

Отдельные переходы удаляются интуитивно (как мне казалось) – бэкспейсом.
Так и есть, я им и пользовался.
Удалить все форматирование можно либо выделив нужный фрагмент
Ага, помогло.
При переносе первого байта ничего не происходит, т.к. визуально менять нечего.
Т.е. ты не ожыдаеш, што должна появитса пустая строка? :debile:
Я понимаю, што код ставит на новую строку, хотя левый байт итак на новой строке. Но ведь по визуальной логике всё, начиная с этово байта, должно опуститса ниже, не?

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Т.е. ты не ожыдаеш, што должна появитса пустая строка?
Это стандартное поведение при переносе строки, когда длина совпадает с шириной окна. Так себя ведет любой текстовый редактор.
Если сделать, как я сказал, то при изменении ширины области отображения там внезапно образуется два переноса, вместо ожидаемого одного.
Из двух зол я выбрал предсказуемое.

Есть, я делаю редактр графики универсальный, а не конкретно для Марио.
Мультплатформенный? Ссылка на гит?

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
Мультплатформенный? Ссылка на гит?
Нет, для Винды. Пока не готов, нужно ещё несколько месяцев.

Удалить все форматирование можно либо выделив нужный фрагмент
Это удаление удалило оформление и из проекта, даже когда при выходе я выбрал не сохранять.
А ещё - нижние окна не сохраняют своё состояние? Я их закрываю, но они появляютса при каждом запуске.
« Последнее редактирование: 06 Апрель 2026, 23:33:19 от Беларус »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2807
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
road_t, о! а ты случаем дизассемблер не прикрутишь к своему редактору?

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
SeregaZ, ImHex чем не угодил?

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
road_t, о! а ты случаем дизассемблер не прикрутишь к своему редактору?
Если честно, я об этом думал, но превращать хекс-редактор в IDA – это, как будто, перебор. Плюс получается, что нужна поддержка модулей/плагинов, т.к. реализовать поддержку всех возможных платформ – это будет ппц, мягко говоря.

Это удаление удалило оформление и из проекта, даже когда при выходе я выбрал не сохранять.
А ещё - нижние окна не сохраняют своё состояние?
Это поправил. Пока не удалось побороть баг с неправильным сохранением положения курсора – он какой-то плавающий: то работает, то нет.
Ну и еще кое-что починил по мелочи.

Скачать RTHextion 2.0.1

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2807
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
рассказываю: это должен быть софт мечты, то есть и хекс редактор и дизассемблер и ассемблер и эмулятор со всеми возможными окнами дебагов (оперативка, видеопамять, регистры, палитры) в одном флаконе. чтобы все происходило в оперативке, без создания внешних файлов. сейчас же херня творится: сначала дизассемблер создает асм файл, после ассемблер создает ром файл, после эмулятор загружает этот ром, после смотришь эти окна дебагов с дичайше неудобным интерфейсом жопой деланные и опять сохраняются файлы трассеров к примеру на диске, находишь мутные места, правишь, повторить с начала. я конечно понимаю что сообщество ромхакеров это сообщество мазохистов, но не на столько-же! в наш век, когда всякие артемиды бороздят просторы вселенной и мотаются автостопом к Луне и обратно уж можно было бы придумать что-то адекватное и современное, а не эти все калечные инструменты.

Добавлено позже:
и кстаааати! про калеченный софт... никто не знает в шелловском моде эмулятора Gens есть ли возможность как-то в коносоли для запуска эмуля указать название для файла "trace.log"? а то каждый раз он перезаписывается. точнее дописывается в существующий. хочу задавать внешне название для файла трассера.

Добавлено позже:
гыгы... а кто сказал что ромхачить можно только ромы? эмулятор тоже можно. заменил в хекс редакторе trace.log на trac1.log и вроде работает :) костыль, но мне сойдет.

Добавлено позже:
не долго музыка играла. почему-то при подобном старте трассер съедает начальные команды и пишет откуда-то с середины  >:( а ежели мышкой ром на эмулятор скинуть, то тогда нормально - пишет с начала. пойду думать как пофиксить. видимо нужна задержка перед стартом.

Добавлено позже:
ну все. наши победили. логика по итогу будет такая:
запускатор берет свое имя - RambR.exe - читает это самое имя RambR
сносит файл имя.log, то есть в данном случае RambR.log
запускает эмулятор RambR.exe из папки Emul (в этом эмуле вшито название файла RambR.log как имя файла для трассера и dmpR.bin для файла дампа памяти)
запускатор дожидается окна эмуля, выдает ему флаг "поверх всех окон", а так-же посылает нажатие клавишь ctrl + shift + ? - включение записи трассера
запускатор еще чуток ждет, и "скидывает" в окно эмулятора файл рома, который опять таки формируется исходя из названия самого запускатора RambR + ".bin".

костыли? костыли!  :lol: но а что делать...
« Последнее редактирование: 08 Апрель 2026, 09:49:08 от SeregaZ »

Оффлайн Беларус

  • Модератор
  • Сообщений: 1450
    • ВКонтакте
    • Steam
    • Просмотр профиля
реализовать поддержку всех возможных платформ – это будет ппц, мягко говоря
Упомянутый мной выше редактр просто использует Capstone - он поддержывает все архитектуры. Очень простая для подключения библиотека.
Но зачем делать очередной обычный хекс-редактр? Лучше искать уникальные фичи, выделятса. Вот твой уже выделяетса, поддержывая Enter.
Тебе надо бы это отметить на ГитХабе как первый в мире такой хекс-редактр :)

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
Да ладно, неужели никто не догадался еще?.. покурю capstone, но разве редактор графики не важнее будет?..

Добавлено позже:
рассказываю: это должен быть софт мечты, то есть и хекс редактор и дизассемблер и ассемблер и эмулятор со всеми возможными окнами дебагов (оперативка, видеопамять, регистры, палитры) в одном флаконе. чтобы все происходило в оперативке, без создания внешних файлов. сейчас же херня творится: сначала дизассемблер создает асм файл, после ассемблер создает ром файл, после эмулятор загружает этот ром, после смотришь эти окна дебагов с дичайше неудобным интерфейсом жопой деланные и опять сохраняются файлы трассеров к примеру на диске, находишь мутные места, правишь, повторить с начала. я конечно понимаю что сообщество ромхакеров это сообщество мазохистов, но не на столько-же! в наш век, когда всякие артемиды бороздят просторы вселенной и мотаются автостопом к Луне и обратно уж можно было бы придумать что-то адекватное и современное, а не эти все калечные инструменты.
Звучит, конечно п-то, но это явно работа не для одного человека. Это уже тянет на очень коммерческий продукт.

Добавлено 10 апреля 2026 года:
Посоны, сделал базовую поддержку секций. Пока только работает как подсветка и навигация, но дальше будет больше.



RTHextion 2.1
« Последнее редактирование: Вчера в 15:18:55 от ghostdog3 »

Оффлайн Chaotix

  • Пользователь
  • Сообщений: 1713
  • Пол: Мужской
    • Просмотр профиля
А как включить "Mini Map", как на скрине? В смысле, узкую полосочку предпросмотра возле прокрутки слева.
Она не отображается. Вроде бы была когда-то в первых версиях, после этого больше никогда не видел. Как включить не понял, на View -> Maps не реагирует.

Ещё настройки, они сохраняются в реестре. Можно сделать портативно, что бы сохранялись в settings.json в директорию к самой программе? Ну или в ini, смотря что удобнее заинклюдить.
Это должно быть просто сделать, просто подключить либу и перенести эти настройки в конфиг. json просто подключается, одним инклюдом.
Почему в реестр? Обычно никто не любит, когда проги пишут в реестр (еще со времён ePSXe), потому что удаляешь прогу, а в реестре остаётся мусор и относительно сложно вычистить или забэкапить. Было бы даже лучше и правильно ложить конфиг в Appdata.

%APPDATA%\<AppName> (Roaming) для пользовательских настроек и %LOCALAPPDATA%\<AppName> для кэша/больших данных по стандарту же.

"базовая поддержку секций" - удобно. Но разделяется абзацами, было бы лучше что бы это можно было опционально включать/выключать. Не понял, как это сделать. Иногда удобнее посмотреть монолитным кодом, иногда когда разделено. Но, лучше бы был выбор. В смысле, что бы цветами сохранялось выделение, но отображалось как обычно, пока не включишь разделение.

Еще как пользоваться "Virtually Format" не разобрался. Вроде бы, вообще ничего не делает. Точно не то, чего от этого ждешь. Я думал, что это "Fill Selection", но нет. Например, в HxD просто выделяешь, нажимаешь правой мышкой и выбираешь "Fill Selection", пишешь каким кодом заполнить, например FF и заполняет эту область, удобно.

Здесь "Virtually Format".. Может лучше бы было назвать тоже "Fill Selection"? Это было бы логично. Что такое это "виртуальное форматирование"? Указываешь количество линий. Ставлю 8, Hex, Character = FF, жму Ok. Ничего не делает, ничего не меняется, просто курсор прыгает куда-то вниз.
Хотелось бы просто Fill области, которой выделил, как в HxD. В линиях непонятно как считать. Ну или по оффсету хотя бы от 1E7C485 и до 1E7C4EA допустим или в байтах, 66 байт например.

« Последнее редактирование: 11 Апрель 2026, 11:34:37 от Chaotix »

Оффлайн road_t

  • Пользователь
  • Сообщений: 19
  • Пол: Мужской
    • Просмотр профиля
А как включить "Mini Map", как на скрине? В смысле, узкую полосочку предпросмотра возле прокрутки слева.
Она не отображается. Вроде бы была когда-то в первых версиях, после этого больше никогда не видел. Как включить не понял, на View -> Maps не реагирует.
Ты о которой? Их там две: карта изменений и карта поинтеров. Первая отображается, если включить отображение изменений в доке изменений. А вторая, если есть найденные поинтеры. Но можно выключить через View->Dock.

Ещё настройки, они сохраняются в реестре. Можно сделать портативно, что бы сохранялись в settings.json в директорию к самой программе? Ну или в ini, смотря что удобнее заинклюдить.
Это должно быть просто сделать, просто подключить либу и перенести эти настройки в конфиг. json просто подключается, одним инклюдом.
Почему в реестр? Обычно никто не любит, когда проги пишут в реестр (еще со времён ePSXe), потому что удаляешь прогу, а в реестре остаётся мусор и относительно сложно вычистить или забэкапить. Было бы даже лучше и правильно ложить конфиг в Appdata.
Приложение мультиплатформенное, построено на Qt. Соответствено, сохранение настроек унифицировано. Реестр – это дефолтный способ хранить настройки в винде. Во времена, когда я виндой пользовался, 99% приложений их там и хранило. А в чем суть проблемы? Настройки не редактируются через окно настроек? Для пользователя разницы, как хранятся настройки, быть не должно вообще.

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

Еще как пользоваться "Virtually Format" не разобрался. Вроде бы, вообще ничего не делает. Точно не то, чего от этого ждешь. Я думал, что это "Fill Selection", но нет. Например, в HxD просто выделяешь, нажимаешь правой мышкой и выбираешь "Fill Selection", пишешь каким кодом заполнить, например FF и заполняет эту область, удобно.

Здесь "Virtually Format".. Может лучше бы было назвать тоже "Fill Selection"? Это было бы логично. Что такое это "виртуальное форматирование"? Указываешь количество линий. Ставлю 8, Hex, Character = FF, жму Ok. Ничего не делает, ничего не меняется, просто курсор прыгает куда-то вниз.
Хотелось бы просто Fill области, которой выделил, как в HxD. В линиях непонятно как считать. Ну или по оффсету хотя бы от 1E7C485 и до 1E7C4EA допустим или в байтах, 66 байт например.
Блин, сорян) это вообще другое.

Ты ищешь 'Fill with':
312289-0

А виртуальное форматирование – это автоматическое добавление виртуальных переносов с разбиением по определенному символу. Количество строк – это количество добавляемых переносов.

Выделяем фрагмент, кликаем правой кнопкой:
312291-1

Выбираем virtually format:
312293-2

Результат:
312295-3




З.Ы. Прикладывай по возможности скрины: не факт, что баг проявляется у меня и мы можем просто не понять друг друга без картинки.