Описание: может быть добьём? |
Поиск в теме | Версия для печати |
lupus |
Отправлено: 14 Марта, 2020 - 16:20:53
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Всем привет, давно не заходил, но не буду разглагольствовать и перейду к делу. Сразу.
Был порыв перевести эту игру, поэтому имеются некоторые наработки:
1.Есть игра про черепах на ч/б геймбой. Чистейшей воды метроидвания (довольно хардкорная, если играть без квик сейвов).
2. Есть таблица для текста (en)
3. Есть адрес шрифта (да и сам шрифт, по большому счёту)
4. Есть вынутый и переведённый скрипт (с оглядкой на длину строки, которая вмещается в экран)
5. Есть желание всё это объединить и получить на выходе русскую версию
Чего нет:
1. Проекта к круптару и опыта поисков поинтеров на гб.
В связи с чем, я решил поделиться имеющимися наработками здесь, возможно из этого что-то дельное получится.
В приложенном архиве:
EN.TBL - таблица с помощью которой Pokeperevod вынул мне скрипт
h018041_font_en.png - шрифт, вынутый с помощью tile molester
script.txt - текст, вынутый покепереводом
Teenage Mutant Ninja Turtles III - Radical Rescue (U).gb - оригинальный чистый ром
TeenageMutantNinjaTurtlesIII-Rad icalRescue-Map.png - подробная игровая карта с vgmaps от нашего соотечественника
таблица и текст.xlsx - кроме всего прочего в этом файле содержится перевод интро, немногочисленных диалогов и прочего.
Понимаю, что текста в игре не наберётся и 5 кб, но жалко всё это хоронить...
Прикрепляю архив и дублирую ссылку на мегу:
https://mega.nz/#!Ek0Q2QKY!gDdmSbCXErfhxx_P_YyQqSdZU1sPpyGUYCuBQWvBSBQ
|
|
|
lupus |
Отправлено: 15 Марта, 2020 - 17:50:09
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Если вдруг кому интересно:
несколько часов поковырял и перевёл руками часть интро. Определил, что перед началом строки есть байт указывающий смещение строки по горизонтали и количество символов в ней.
Также, есть управляющие байты, отвечающие за то, сколько строк будет выведено на экран.
С поинтерами не разобрался, но меняя длину строки и задействовав освободившееся место, вставил текст в том виде, в котором он лежит в прошлом посте:
Цитата:прошёл год
с тех пор, как
шреддер был
повержен…
трое черепашек
отдыхали в
своём тайном
убежище.
внезапно, их
любимое телешоу
прервал срочный
репортаж эйприл
о'нил.
'мы ведём свою
трансляцию из
тюрьмы, откуда
сегодня ночью
произошёл побег.
преступники,
ответственные за
…а-ай!!!'
изображение на
экране пропало.
'парни, мы
должны спасти
эйприл!'
Имея подходящий софт, это всё можно было бы сильно ускорить... |
|
|
lupus |
Отправлено: 16 Марта, 2020 - 15:55:28
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Griever пишет:
Можно найти все поинтеры и прописать их в Круптаре, если дашь мне сейвы перед каждой заставкой в BGB.
Тоже думаю над этим. В игре система паролей сделана таким образом, что можно респауниться в любой комнате с заданным набором предметов в инвентаре.
Судя по всему, придётся проходить игру и записывать пароли перед каждым местом, где выводятся диалоги и прочий текст.
Griever пишет:
Другое дело формат сообщений. Я не эксперт в Круптаре, но чтобы командные байты вошли в скрипт и последний байт учитывался как длина, нужен отдельный плагин. ShortString.kpl не подойдет.
По мне, проще написать свой дампер-инсертер.
Это всё я тоже понял. Суммарная длина русского текста интро у меня получилась меньше, чем у оригинала, поэтому перебив руками все значения длины строки/количество выводимых строк и т.п. Мне удалось вставить перевод в отведённое для него место.
Это большая часть всего игрового текста.
Диалоги хранятся отдельным блоком в таком же формате, как и интро. Думаю, их получится перевести так же, как и текст интро.
Реальная помощь нужна с переводом титульника и экрана "game over".
Тут у меня две загвоздки:
1. Те самые поинтеры
2. На титульном экране подгружаются не все тайлы, использованные мной для шрифта. Заметил я это в vram viewer уже после того, как перевёл интро. Дело в том, что я решил сохранить латиницу, поправив некоторые глифы для большей схожести с кириллицей, а недостающие символы отрисовал поверх иероглифов, тайлы которых, как оказалось, не подгружаются при выводе титульника. Тут у меня затык и получился :/ Пока отложил это в сторону, буду проходить игру и добивать перевод остального текста.
Если есть желание/возможность помочь с пиксельной графикой, то я буду только благодарен. Она не пожата, лежит в районе h0100020.
Пока, получается как-то так:
Прикреплено изображение
|
|
|
Griever |
Отправлено: 17 Марта, 2020 - 21:43:40
|
VIP
Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015
|
lupus пишет:
Ты не совсем верно понял. Не на начало, а на текст.
В титульнике это, как минимум, “new game” и “password”.
На экране геймовера тоже куча строк.
Титульник:
CODE:ROM0:0ABE A8 4B dw $4BA8 ; ptr to TM
ROM0:0AC0 40 01 dw $140 ; offset from map start
ROM0:0AC2 08 4C dw $4C08 ; ptr to new game
ROM0:0AC4 A7 01 dw $1A7 ; offset from map start
ROM0:0AC6 11 4C dw $4C11
ROM0:0AC8 C7 01 dw $1C7
ROM0:0ACA F3 4B dw $4BF3
ROM0:0ACC 20 02 dw $220
ROM0:0ACE FF FF dw $FFFF
Game over:
CODE:ROM0:1F34 BD 4B dw $4BBD
ROM0:1F36 45 00 dw $45
ROM0:1F38 D9 4B dw $4BD9
ROM0:1F3A A5 00 dw $A5
ROM0:1F3C C7 4B dw $4BC7
ROM0:1F3E E1 00 dw $E1
ROM0:1F40 1A 4C dw $4C1A
ROM0:1F42 C5 01 dw $1C5
ROM0:1F44 24 4C dw $4C24
ROM0:1F46 05 02 dw $205
ROM0:1F48 FF FF dw $FFFF
|
|
|
lupus |
Отправлено: 18 Марта, 2020 - 13:10:06
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
О, за поинтеры спасибо!
Интро, диалоги и титры я перевёл.
Буду разбираться с экраном геймовера.
Открытым остаётся вопрос с титульником. На этот экран не грузятся некоторые нужные мне тайлы шрифта, а именно: Я, Г, П, Л, Ь.
Они нарисованы вместо иероглифов.
Просматриваю VRAM в BGB, вроде бы свободного места полно, но как раз по адресам этих глифов лежат куски логотипа.
Можно ли как-то добавить загружаемые в память тайлы и поменять карту, чтобы и титульник нормально отображался и глифы шрифта загрузились на свои места?
upd:
Экран геймовера сейчас выглядит, как на приложенном скрине. Пока, не трогал только "password" по указанной выше причине (на титульнике не все нужные тайлы подгружаются для слова "пароль".
Появилась новая задача: сдвинуть "игра окончена" и "продолжить?" влево. Как найти координаты? )) Прикреплено изображение
(Отредактировано автором: 18 Марта, 2020 - 14:28:56) |
|
|
lupus |
Отправлено: 18 Марта, 2020 - 19:16:46
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Похоже, что я перевёл всё, до чего дотянулись мои руки. Спасибо Гриверу за помощь с поинтерами, с оглядкой на его подсказку, я нашёл остальные, которые нужно было исправить.
В процессе успел сломать и починить вывод данных о рекордном количестве очков на экране геймовера. Пожертвовал одной строкой с копирайтами для того, чтобы впихнуть другой нужный мне текст.
Всё, абсолютно всё, было сделано руками в translhextion, калькуляторе, экселе и тайл молестетре.
Что осталось без перевода:
Текст:
MAP (на карте) и LIFE (возле полоски жизни) - тут, кроме того, что строку нужно удлинить, ещё и сдвинуть координаты нового текста на 1 тайл влево. Здесь я уж совсем бессилен
BOSS - не трогал, пока не будет переведено LIFE.
NEW GAME и PASSWORD - выше писал, почему.
Графика:
Табличка KEEP OUT, стрелка направления с надписью ONLY в местах, где дверь открывается только в одну сторону и плашка SCORE. Их я просто не могу разглядеть в тайловом редакторе.
И, неплохо бы подвигать текст на экране геймовера...
Ром для экспериментов могу расшарить в личку.
(Отредактировано автором: 19 Марта, 2020 - 01:07:40) |
|
|
Griever |
Отправлено: 18 Марта, 2020 - 22:42:34
|
VIP
Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015
|
Цитата:Спасибо Гайверу за помощь с поинтерами
Володя незримо с нами!
Цитата:Открытым остаётся вопрос с титульником. На этот экран не грузятся некоторые нужные мне тайлы шрифта, а именно: Я, Г, П, Л, Ь.
Они нарисованы вместо иероглифов.
CODE:18000(6:4000):
4041 - src ptr to copyright and trademark
02 - tiles copy count
9010 - dst vram ptr
40d9 - src ptr to main font
17 - font size in tiles
9290 - dst vram ptr
...
Попробуй поиграть с этой областью - длиной или src-dst указателями вытащи свои иероглифы в нужное место.
Цитата:Появилась новая задача: сдвинуть "игра окончена" и "продолжить?" влево. Как найти координаты? ))
В предыдущем сообщении я показывал, что сразу за указателем на строку идет смещение в видеопамяти, куда скопировать. Считай, что координаты.
Цитата:тут, кроме того, что строку нужно удлинить, ещё и сдвинуть координаты нового текста на 1 тайл влево.
CODE:ROM0:11AB 21 E7 4B ld hl, $4BE7 ; src
ROM0:11AE 11 41 D6 ld de, $D641 ; dst - shifted 1 tile right.
ROM0:11AE ; 0x11AE 41 -> 40
Цитата:Табличка KEEP OUT, стрелка направления с надписью ONLY в местах, где дверь открывается только в одну сторону и плашка SCORE. Их я просто не могу разглядеть в тайловом редакторе.
SCORE находится по адресу 0x10071, но надписи сжаты, как и остальная графика. Посмотреть формат?
(Отредактировано автором: 18 Марта, 2020 - 22:45:00) |
|
|
lupus |
Отправлено: 19 Марта, 2020 - 09:19:16
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Цитата:Володя незримо с нами!
Блин... очень и очень неудобно. Сорян.
Цитата:Попробуй поиграть с этой областью - длиной или src-dst указателями вытащи свои иероглифы в нужное место.
Буду экспериментировать. Сообщу о результатах.
Цитата:В предыдущем сообщении я показывал, что сразу за указателем на строку идет смещение в видеопамяти, куда скопировать. Считай, что координаты.
Супер. Всё подвинул
Цитата:ROM0:11AB 21 E7 4B ld hl, $4BE7 ; src
ROM0:11AE 11 41 D6 ld de, $D641 ; dst - shifted 1 tile right.
ROM0:11AE ; 0x11AE 41 -> 40
буду пробовать.
Цитата:SCORE находится по адресу 0x10071, но надписи сжаты, как и остальная графика. Посмотреть формат?
Да, буду премного благодарен. Похоже, с надписью "EXIT" мне просто повезло?
Почему-то кажется, что я ещё когда-то надпись "HELP" перерисовывал. Но это не точно.
Mefistotel пишет:Конечно смотри и утилиту пиши)
Лучше не консольную, чтобы на сайт закинуть, но я не настаиваю.)
Ага)) Прикреплено изображение
|
|
|
lupus |
Отправлено: 19 Марта, 2020 - 15:55:24
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Guyver пишет:Сложно сказать что-то без русского рома... (Отредактировано автором: 20 Марта, 2020 - 06:42:02) |
|
|
Griever |
Отправлено: 19 Марта, 2020 - 22:27:21
|
VIP
Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015
|
Графика сжата LZSS. Сначала флаговый байт: если бит выставлен, то байт копируется из исходного потока в буфер.
Если бит ноль, то LZ копирование. Следующие в потоке два байта содержат в себе смещение в буфере и длину копирования.
CODE:ZZZZZZZZ ?XXYYYYY
XXZZZZZZZZ - lzDistance. Unexplainable: buffer ring starts from 3DE and wraps to 0 at 400.
YYYYY - lzLength - 3
Например, для score:
CODE:gfx at 10070 (4:4070)
FF - 8 uncompressed bytes
00 00 1e 1e 30 30 ff 1c
7F - 0 1 1 1 1 1 1 1 Uncompressed 7 bytes first:
FF 06 7F 06 3C 3C 00
Then 2 LZ bytes: EC 60, meaning lzDist = 3EC - 3DE = E bytes from unpack start, lzLen=0+3=3. Outputs 00 00 00 to buffer.
DF - 1 1 0 1 1 1 1 1
...
Попробую написать инструмент, но это небыстро.
|
|
|
Griever |
Отправлено: 20 Марта, 2020 - 21:53:09
|
VIP
Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015
|
lupus пишет:
Посмотри ещё слово MAP, плиз. Такое впечатление, что его и первый экран с копирайтами тоже сжатием «зацепило»
Ты прав, тайловая карта на экран карты сжата тем же LZSS.(Отредактировано автором: 20 Марта, 2020 - 21:53:47) |
|
|
Griever |
Отправлено: 24 Марта, 2020 - 22:13:52
|
VIP
Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015
|
lupus пишет:Win 7 home premium x86 лицензия.
На этом мои полномочия всё. У меня семерка и восьмерка обе 64битные.
Можно собрать самому, если есть желание.
Качаешь репозиторий , затем качаешь и устанавливаешь 32битный Haskell stack .
Затем выполняешь в распакованном репозитории
CODE:stack update
stack build
stack exec -- t3gbLz -v |
|
|
lupus |
Отправлено: 25 Марта, 2020 - 15:37:28
|
Покинул форум
Сообщений всего: 1056
Дата рег-ции: Июнь 2015
Откуда: Simferopol
|
Griever пишет:lupus пишет:Win 7 home premium x86 лицензия.
На этом мои полномочия всё. У меня семерка и восьмерка обе 64битные.
Можно собрать самому, если есть желание.
Качаешь репозиторий , затем качаешь и устанавливаешь 32битный Haskell stack .
Затем выполняешь в распакованном репозитории
CODE:stack update
stack build
stack exec -- t3gbLz -v
Так и сделал. Спасибо.
"SCORE" перерисовал и вставил назад.
Карту тоже поправил и вставил.
Теперь новые вопросы:
1. Как мне самому найти сжатые куски, чтобы перерисовать оставшиеся надписи "HELP", "KEEP OUT" и "<<ONLY>>"?
2. Как распаковать текст первого экрана с копирайтами для его правки? А лучше, вообще его пропустить и начать сразу с заставки KONAMI? На этот экран грузятся не все глифы шрифта, поэтому хочется избавиться от него совсем. Чтобы поправить текущий шрифт и перевести оставшиеся LIFE/BOSS/NEW GAME/PASSWORD. Прикреплено изображение
(Отредактировано автором: 25 Марта, 2020 - 20:04:10) |
|
|
Griever |
Отправлено: 25 Марта, 2020 - 22:14:15
|
VIP
Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015
|
Цитата:"SCORE" перерисовал и вставил назад.
Карту тоже поправил и вставил.
Молодец, что разобрался
Цитата:
1. Как мне самому найти сжатые куски, чтобы перерисовать оставшиеся надписи "HELP", "KEEP OUT" и "<<ONLY>>"?
0: 90B - начало функции распаковки. На входе в неё в HL - srcPtr, DE - dstPtr, BC - targetSize (размер тебе также покажет t3gbLz после распаковки).
Ориентируясь по dstPtr поймай момент записи в нужное тебе место в VRAM и увидишь в HL нужный тебе srcPtr. Банк сможешь узнать, перейдя в хексредакторе bgb по этому адресу в момент останова.
Ну или давай мне сохранения перед загрузкой этих надписей, я тебе скажу.
Цитата:2. Как распаковать текст первого экрана с копирайтами для его правки? А лучше, вообще его пропустить
CODE:0xBDC D8 -> D0
0xBE7 C0 -> C8
0xBF4 D8 -> D0
|
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): [1] 2 3 » |
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0) |
« Переводы » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|