Разработка и ромхакинг > Ромхакинг
RTHextion: новый hex-редактор для ромхакинга и переводов
road_t:
Посоны, привет.
Я тут запилил hex-редактор для ромхакинга. Когда-то в начале нулевых я сам использовал Translhextion16c, но где тот траснлхекшн и где нулевые...
Короче, называется он RTHextion (предложения названия получше принимаются) и лежит на гитхабе.
RTHextion доступен на всех основных платформах (под винду на ARM не делал, но если надо – соберем).
Редактор полностью бесплатный и с открытым исходным кодом. Пока выпустил бету версии 2.0.
Скачать можно тут
Буду очень рад предложениям/замечаниям и багрепортам (в идеале сразу в Issues, если есть акк на гитхабе).
З.Ы. Для модеров: надеюсь, что разделом не ошибся, если что – извинитесь :biggrin:
Беларус:
Респект за обесцвеченные нули. Не думал обесцветить их и в левой колонке адресов?
Также, не возникала идея добавить киллерфичу - перенос строки на новую в любом месте при нажатии Enter? Ну и добавление отступов Табом и пробелом. Был бы первым таким уникальным хекс-редактром. Я когда-то хотел сделать такой, но пока занят другим.
Guyver(X.B.M.):
Я пока не дома, запустить не могу. Как он работает с большими файлами (под несколько гигов)? Не глючит?
cl:
для ромхакинга это видно, а что здесь тут: для переводов?
Sharpnull:
--- Цитата: Guyver(X.B.M.) от 01 Апрель 2026, 04:04:36 ---Как он работает с большими файлами (под несколько гигов)? Не глючит?
--- Конец цитаты ---
Плохо в v2.0-beta1. Файл грузится полностью в ОЗУ. На 600 МБ у меня уже медленное переключение между байтами, при открытии 4 ГБ (было доступно около 10 ГБ ОЗУ) расширился файл подкачки на несколько ГБ, я принудительно закрыл программу, повторный запуск начал снова открывать файл, пришлось удалять настройки из реестра.
UPD: Для сравнения, 010 Editor после открытия 17 ГБ работает быстро как с маленьким файлом, занимает ОЗУ около 45 МБ.
road_t:
--- Цитата: Беларус учит русский от 01 Апрель 2026, 02:08:18 ---Респект за обесцвеченные нули. Не думал обесцветить их и в левой колонке адресов?
--- Конец цитаты ---
Цвета практически всего настраиваются, как и ширина адресной области. Реквест отдельной настройки цвета нулей в адресной области записал)
--- Цитата: Беларус учит русский от 01 Апрель 2026, 02:08:18 ---Также, не возникала идея добавить киллерфичу - перенос строки на новую в любом месте при нажатии Enter? Ну и добавление отступов Табом и пробелом. Был бы первым таким уникальным хекс-редактром. Я когда-то хотел сделать такой, но пока занят другим.
--- Конец цитаты ---
Звучит непросто с точки зрения реализации. А профит в чем?
--- Цитата: Guyver(X.B.M.) от 01 Апрель 2026, 04:04:36 ---Я пока не дома, запустить не могу. Как он работает с большими файлами (под несколько гигов)? Не глючит?
--- Конец цитаты ---
Попробовал на файле в 21 гиг. Сожрал 300 метров оперативки, но ничего тормозить не начало. Поиск или замены будут, разумеется, медленнее, чем для файла в 2Мб.
--- Цитата: cl от 01 Апрель 2026, 06:08:30 ---для ромхакинга это видно, а что здесь тут: для переводов?
--- Конец цитаты ---
Поиск указателей, поддержка нескольких таблиц перевода (в т.ч. для поиска и замены), импорт/экспорт скриптов (с автоматическим исправлением указателей) и редактирование скриптов на месте.
--- Цитата: consolegamer от 01 Апрель 2026, 09:00:04 ---Выглядит круто :thumbup: правда я еще не попробовал. Интересно, есть ли функции:
-выделять текст в редакторе, а то в translhextion выделяются только байты.
-fill with, то бишь заполнение выделенного любым символом, translhextion умеет
-поддерживает ли таблицы, в которых букве соответствует 2 байта
0_0, я как раз trinea ковыряю, ты делаешь перевод, или просто ради примера скинул?
--- Конец цитаты ---
– Выделение работает синхронно, можно выделять откуда нравится.
– Fill width добавлю, только нужно придумать, как это делать с точки зрения UX.
– Многобайтовые таблицы RTHextion поддерживает
– Trinea попала в примеры из-за того, что чувак с Romhacking.net пожаловался на некорректную работу предыдущего пункта))
--- Цитата: Sharpnull от 01 Апрель 2026, 12:59:09 ---Плохо в v2.0-beta1. Файл грузится полностью в ОЗУ. На 600 МБ у меня уже медленное переключение между байтами, при открытии 4 ГБ (было доступно около 10 ГБ ОЗУ) расширился файл подкачки на несколько ГБ, я принудительно закрыл программу, повторный запуск начал снова открывать файл, пришлось удалять настройки из реестра.
UPD: Для сравнения, 010 Editor после открытия 17 ГБ работает быстро как с маленьким файлом, занимает ОЗУ около 45 МБ.
--- Конец цитаты ---
Тут нужны детали. Какая ОС и сколько ОЗУ. Я сейчас спецом открыл кроме вышеупомянутого файла на 21Гб еще один на 3.7 и оперативки съедено всего 509 метров. Но месседж принял, постараюсь оптимизировать работу с большими файлами.
З.Ы. 010 editor у меня сожрал 200Мб только на этот один файл.
lupus:
Ещё не смотрел, но было бы интересно, как это умеет translhextion mod от чифнета:
1. Scan relative с возможностью составления таблицы кодировки по найденному
2. Поиск/скан с интервалом в указанное количество байт
3. Само собой, работа с таблицами 1-2 байта на символ
road_t:
--- Цитата: lupus от 01 Апрель 2026, 19:25:53 ---Ещё не смотрел, но было бы интересно, как это умеет translhextion mod от чифнета:
1. Scan relative с возможностью составления таблицы кодировки по найденному
2. Поиск/скан с интервалом в указанное количество байт
3. Само собой, работа с таблицами 1-2 байта на символ
--- Конец цитаты ---
1. Умеет.
2. В планах. Буду благодарен, если опишешь, как это должно, по-твоему, выглядеть.
3. Умеет.
lupus:
--- Цитата: road_t от 01 Апрель 2026, 19:27:09 ---1. Умеет.
2. В планах. Буду благодарен, если опишешь, как это должно, по-твоему, выглядеть.
3. Умеет.
--- Конец цитаты ---
На сайте чифнета есть мод translhextion. Он имеет опцию search interval, где выбирается количество байт, которые могут быть между искомыми символами.
Нужно один раз попробовать, наверное.
В ромах для GB, например, я таким образом некоторые строки находил.
road_t:
--- Цитата: lupus от 01 Апрель 2026, 21:46:02 ---На сайте чифнета есть мод translhextion. Он имеет опцию search interval, где выбирается количество байт, которые могут быть между искомыми символами.
Нужно один раз попробовать, наверное.
В ромах для GB, например, я таким образом некоторые строки находил.
--- Конец цитаты ---
Не, смысл я понимаю, но сходу не могу придумать, как это выглядеть должно.
Эх, когда-то я неплохо поработал над Translhextion, исправил почти все баги и добавил пару функций... но был молодой и глупый и исходники никуда не загрузил. Они, соответственно, не сохранились(
Беларус:
--- Цитата: road_t от 01 Апрель 2026, 18:42:23 ---настройки цвета нулей в адресной области
--- Конец цитаты ---
Наверно понятно, што все нули в ряд слева у адреса, не внутренние.
--- Цитата: road_t от 01 Апрель 2026, 18:42:23 ---Звучит непросто с точки зрения реализации. А профит в чем?
--- Конец цитаты ---
Ага, непросто. Зато хекс можно привести в человеческий вид. Вот пример:
000AA732C186E186000AAB56C190E190000AAF78C19AE19A000AB390C1A4E1A4000AB82EC1AEE1AE000ABCC0C1B8E1B8000ABFA0C1C2E1C2000AC4ACC486E486000ACDB4C49AE49A000AD6D4C4AEE4AE000ADBB0C4B8E4B8000ADFD4C4C2E4C2000AE474C790E790000AE93CC79AE79A000AD182C7A4E7A4000AF1FAC7B8E7B8000AF654CA90EA90000AFB1ECA9AEA9A000B0080CAA4EAA4000B0922CAB8EAB8000B0538CAAEEAAE000AC94EC490E490000AED54C7AEE7AE000B19B8C4A4E4A40000D5060000D5460000D5860026002C004E002C0076002C009E002C00C6002C00EE002C0116002C0026005C004E005C0076005C009E005C00C6005C00EE005C0116005C004E008C0076008C009E008C00C6008C00EE008C004E00BC007600BC009E00BC00C600BC00EE00BC0018001300050002000300100017000100000011001A0004001500090007000F001400120008000A0006000E000D000C0000E0180000E0300000E0480000E0600000E0780000E0900000E0A80000E0C0
А вот он же, но только с переходами на новую строку и пробелами:
000AA732 C186E186
000AAB56 C190E190
000AAF78 C19AE19A
000AB390 C1A4E1A4
000AB82E C1AEE1AE
000ABCC0 C1B8E1B8
000ABFA0 C1C2E1C2
000AC4AC C486E486
000ACDB4 C49AE49A
000AD6D4 C4AEE4AE
000ADBB0 C4B8E4B8
000ADFD4 C4C2E4C2
000AE474 C790E790
000AE93C C79AE79A
000AD182 C7A4E7A4
000AF1FA C7B8E7B8
000AF654 CA90EA90
000AFB1E CA9AEA9A
000B0080 CAA4EAA4
000B0922 CAB8EAB8
000B0538 CAAEEAAE
000AC94E C490E490
000AED54 C7AEE7AE
000B19B8 C4A4E4A4
0000 D506
0000 D546
0000 D586
0026 002C
004E 002C
0076 002C
009E 002C
00C6 002C
00EE 002C
0116 002C
0026 005C
004E 005C
0076 005C
009E 005C
00C6 005C
00EE 005C
0116 005C
004E 008C
0076 008C
009E 008C
00C6 008C
00EE 008C
004E 00BC
0076 00BC
009E 00BC
00C6 00BC
00EE 00BC
0018
0013
0005
0002
0003
0010
0017
0001
0000
0011
001A
0004
0015
0009
0007
000F
0014
0012
0008
000A
0006
000E
000D
000C
0000E018
0000E030
0000E048
0000E060
0000E078
0000E090
0000E0A8
0000E0C0
Сразу виден паттэрн.
--- Цитата: road_t от 01 Апрель 2026, 21:48:22 ---исходники никуда не загрузил. Они, соответственно, не сохранились(
--- Конец цитаты ---
Этот редактр прям проклят - Марат вот тоже потерял исходники со своими наработками прямо во время активной разработки.
road_t:
Так, я выложил beta 2 с кое-какими апдейтами, включая:
* настройку цвета нулей в адресной области
* Функцию 'Fill with' (только щас понял, что забыл переводы, в т.ч. и на русский)
* Немного поигрался с механизмом загрузки файлов, вроде большие теперь обрабатываются без тормозов
--- Цитата: Беларус учит русский от 02 Апрель 2026, 00:12:49 ---Ага, непросто. Зато хекс можно привести в человеческий вид.
--- Конец цитаты ---
я собирался сделать разбиение на секции с навигацией и цветной подсветкой... но над твоей идеей я подумаю. Отрисовка, особенно на больших файлах может стать лютым геморроем :wacko:
--- Цитата: Беларус учит русский от 02 Апрель 2026, 00:12:49 ---Этот редактр прям проклят - Марат вот тоже потерял исходники со своими наработками прямо во время активной разработки.
--- Конец цитаты ---
Блин, я пытался чуваку по имени Брайан Бенневиц написать на линкдине, но там вылетает ошибка 0_0
Беларус:
--- Цитата: road_t от 02 Апрель 2026, 00:37:46 ---настройку цвета нулей в адресной области
--- Конец цитаты ---
Быстро ты, но я лиш спросил о твоих мыслях-идеях - необязательно реализовывать то, што я спросил ;)
Тем более, если идея тебе не нравитса (цвет у нулей адреса по умолчанию не как у нулей хекса).
При первом запуске - малюсенькое окно, но это ладно. При каждом новом запуске окно не на весь экран (Win11, FullHD), приходитса раскрывать на полную - так и задумано? У меня такое странное поведение из всех програм на ПК только у Макса.
Тот массив значений в спойлере, который кидал тебе до этово - сохранил ево в блокноте, открыл этот текстфайл в твоём редактре, потыкал наугад нули и сохранил. Теперь в блокноте вместо значений - иероглифы. Тоже так должно быть? :)
road_t:
--- Цитата: Беларус учит русский от 02 Апрель 2026, 01:06:47 ---цвет у нулей адреса по умолчанию не как у нулей хекса
--- Конец цитаты ---
Я решил поведение стандартное не менять. Думаешь, лучше по дефолту сразу их делать менее контрастными?
--- Цитата: Беларус учит русский от 02 Апрель 2026, 01:06:47 ---При первом запуске - малюсенькое окно, но это ладно. При каждом новом запуске окно не на весь экран (Win11, FullHD), приходитса раскрывать на полную - так и задумано?
--- Конец цитаты ---
О как. Надо на винде проверить, я там еще ни разу не запускал.
--- Цитата: Беларус учит русский от 02 Апрель 2026, 01:06:47 ---У меня такое странное поведение из всех програм на ПК только у Макса.
--- Конец цитаты ---
а вот щас обидно было :cry:
--- Цитата: Беларус учит русский от 02 Апрель 2026, 01:06:47 ---Тот массив значений в спойлере, который кидал тебе до этово - сохранил ево в блокноте, открыл этот текстфайл в твоём редактре, потыкал наугад нули и сохранил. Теперь в блокноте вместо значений - иероглифы. Тоже так должно быть?
--- Конец цитаты ---
Тут бы поподробнее. В идеале – оригинальный файл и проект, чтобы видеть изменения. Ну и интересно, в какой кодировке он у тебя открывается при запуске (видно в строке состояния).
Беларус:
--- Цитата: road_t от 02 Апрель 2026, 02:07:55 ---Думаешь, лучше по дефолту сразу их делать менее контрастными?
--- Конец цитаты ---
Думаю, што единообразие всегда хорошо. А то "тут делаю, а тут не делаю" - это странно ;)
--- Цитата: road_t от 02 Апрель 2026, 02:07:55 ---а вот щас обидно было
--- Конец цитаты ---
Извини, по другому никак :biggrin:
Теперь мне понятно, што разрабы Макса не сидят на Винде. Они или как ты на Маках, или на Линуксе, поэтому десктопная версия такая корявая.
--- Цитата: road_t от 02 Апрель 2026, 02:07:55 ---Тут бы поподробнее
--- Конец цитаты ---
В блокноте Win11 сохраняю как UTF-8. Твой редактр внизу пишет ASCII. При пересохранении ничево не меняетса, а вот если какой-нибудь байт изменить на ноль, то сохранит как UTF-16 LE.
ndivision:
road_t, Шикарно! Буду разбираться с таким замечательным инструментом. И благо что под не последними версиями macOS - с виду работает нормально.
Благодарю! И буду обязательно следить за развитием проекта.
road_t:
--- Цитата: Беларус учит русский от 02 Апрель 2026, 04:08:34 ---В блокноте Win11 сохраняю как UTF-8. Твой редактр внизу пишет ASCII.
вот если какой-нибудь байт изменить на ноль, то сохранит как UTF-16 LE.
--- Конец цитаты ---
Ну скинь файлы. А то пока звучит, как будто это проблема блокнота, который пытается определить кодировку и не понимает, что это такое ты сделал.
--- Цитата: ndivision от 02 Апрель 2026, 04:11:35 ---road_t, Шикарно! Буду разбираться с таким замечательным инструментом. И благо что под не последними версиями macOS - с виду работает нормально.
Благодарю! И буду обязательно следить за развитием проекта.
--- Конец цитаты ---
Спасибо, замечания и предложения приветствуются :)
На системе до каталины не тестил, на монтерее и секвойе норм. Значит и на тахо будет ок.
Беларус:
Вот. Учитывая глючность Win11, проблема действительно может быть в Блокноте.
road_t:
Win11 – горе в семье :debile:
Ну, может 12 будет приемлемой.
Но тут дело не в ней, конечно. Блокнот, скорее всего, со времен XP не менялся особо. Он пытается кодировку определить по разным маркерам (если нет BOM). Собственно, RTHextion тоже пытается и тоже с переменным успехом. Реально дело непростое.
road_t:
Беларус учит русский, ты так себе это представляешь?
Навигация
Перейти к полной версии