В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
Можно просто словами, типа: "Проклятье!", "Чёрт возьми!".Даааа... только после
"Засранцы!" в конце концов .
И т. д.
Можно ещё "Гр-р-р!"Да, наверное так и напишем, но в игре полно таких "звуков", например "Aaaaaargh" - по сути как раз "Гр-р-р". Или разбить его на "Ааааа... гр-р-р!"?
140 000? Не верится что-то, что в первой главе текста на 70 полноценных страниц (без кучи свободного места)Преувеличил маленько наверное. Я просто нашёл адрес первого сообщения главы, нашёл адрес последнего сообщения главы, и вуаля.
Как жена поживает? Когда подглядеть перевод можно будет?Перевод идёт отнюдь не ударными темпами
Nick уже весь извертелся (я же знаю)
Извините, вы длину строки обсуждаете?Хочу сделать подсчет ширины (в пикселях) результирующей строки чтобы не проверять каждый раз запуская ром.
Где ж ты был, когда мы сайт писали? Столько добра пропало зря.
Я могу их дать, но они на Delphi.Знаком... хотя признаться Delphi - это самое малоизученное для меня. Отправь пожалуйста на insideone #собака# rambler #точка# ru ... Метки мне тоже попытаться сделать или не стоит так глубоко зарываться?
И они без комментариев - без вагона водки не разобратьсяВот к чему не привыкать - так это к коду без комментариев
К этому советую привыкнуть.Нууу... есть же блок загрузки таблиц? Таблица ширин по сути аналогичная была бы т.е.
00=0
01=4
...
39=10
3A=8
3B=8
...
FF=0
6 // число без указания байта задает ширину для всех не заданных в таблице символов
...
Если так оставить, то Круптар сначала выдерет все такие символы в виде ~, а потом при вставке заменит их на первый подходящий код, то есть на 00. В итоге игра не будет работать корректно.Да, понял. Это кажется называется необратимой таблицей.
А как ты этот перенос в таблице обозначил?В самом файле таблицы из которого я подгружал в Kruptar данные - никак. Но в самом Kruptar'е я в секцию "Коды окончания строк" добавил 00. А в коды разрыва строк добавил 0A.
Выясни что делает 03 и что делает 00. Вероятнее всего, что 00 - это конец строки, а 03 - какой-нибудь спецсимвол, например, это может быть символом, который выводит на экран мигающий курсор.Понял! Это знак игре "жди нажатия чтобы показать пользователю текст дальше". Без него диалог не дожидаясь игрока закончится сам
Чтобы точно узнать что делает тот или иной код, просто попробуй воткнуть его посреди предложения и посмотри что произойдёт в игре.
Верно. Если мне не изменяет склероз, Круптар пожалуется на нехватку текста и ничео не вставит.Уже заметил! Однако что-то вставил как ни странно. Может не вставил то что не влезает
Да, в таблице символов можно писать слова. Круптар их будет корректно кодировать.Уфф... это отлично!
В 99.9% GBAшных игр поинтеры именно такие. Других поинтеров практически никогда не бывает. Поинтеры в GBA абсолютныеСпасибо, в общем-то так и понял. Только я подумал что это не очень то рационально
В 99.9% GBAшных игр поинтеры именно такие. Других поинтеров практически никогда не бывает. Поинтеры в GBA абсолютныеУпорно хочу оставить английский
Но в новых версиях названия некоторых параметров изменились. Об этом читать в readme.Спасибо! Уже создал почти готовый к переводу. Только с таблицой непонятки есть, а почитать о них вроде негде.
У тебя же их две.Ну, не совсем так. Как я понимаю обычно приходится перерисовывать оригинальный шрифт (английский например). И тогда будут две таблицы - в них символы будут пересекаться. Например 1E в одном будет "r" а в другой "ш". У меня же таблицы не пересекаются, т.к. английский шрифт был не тронут. Другими словами я могу писать и на английском и на русском (к примеру: "Макс нашёл Chaos Breaker"). И для перевода мне как бы не нужно иметь два рома на руках, ведь 1 таблица символов позволяет мне видеть оригинальный английский и русский который в процессе
Одна английская (оригинальная), вторая русская (новая).
Гм... А зачем шрифт диалогов было делать шириной больше оригинала?Хм? Как было 12x12 так и осталось. Или как?
#include "stdafx.h"
#include <iostream>
#define FILE_LEN 4194304
#define TABL_LEN 5
int _tmain(int argc, _TCHAR* argv[])
{
// Таблица смещения адреса для каждого последующего сообщения
unsigned int arCheck[TABL_LEN] = {
121, 28, 61, 14, 73
};
// Считываем файл
FILE* file = fopen("F15.gba", "r");
unsigned int* arFile = new unsigned int[FILE_LEN];
while(fread(arFile, sizeof(unsigned int), 64, file));
unsigned int curFilePosValue = 0;
unsigned int curBatchPosValue = 0;
unsigned int pointerAddress = 0;
bool finded = true;
// Адрес предполагаемого поинтера
for(int curFilePos = 0; curFilePos < FILE_LEN; curFilePos++)
{
finded = true;
// Куда указывает предполагаемый поинтер (А)
curFilePosValue = arFile[curFilePos];
for (int curBatchPos = 0; curBatchPos < TABL_LEN; curBatchPos++)
{
// Следующее значение куда указывает поинтер (Б) который идет после предполагаемого (А) на X+curBatchPos позиций
curBatchPosValue = arFile[curFilePos+curBatchPos+1];
// Разница между следующей позицией и текущей должна соответствовать заданной
if ( (curBatchPosValue - curFilePosValue) != arCheck[curBatchPos] )
{
// Если не соответствует - помечаем что ничего не нашли и выходим
finded = false;
break;
}
// А = Б и ищем дальше
curFilePosValue = curBatchPosValue;
}
// Все тесты пройдены?
if ( finded )
{
// Запоминаем адрес поинтера и выходим
pointerAddress = curFilePos;
break;
}
}
std::cout << pointerAddress;
return 0;
}
А разве нельзя взять наработки (шрифт) из зачахшего прожекта?Ну, во-первых у меня его нет. Во-вторых автор думаю проект не забросил, просто пока отложил, поэтому отбирать его работу я не собираюсь
чтобы потом делать лишнюю работу и править шириныПоздно, уже поправил
(все... молчу, молчу...)
Там есть такая таблица. Адрес 7BE40 и до 7BEE8.Спасибо! Моя ошибка была в том что я "померил" восклицательный знак в 2 пикселя, а у них он за 4 идет. В 6 часов ночи и не такое намеришь...