Описание: Совместный проект |
Поиск в теме | Версия для печати |
Mefistotel |
Отправлено: 27 Июня, 2016 - 02:37:27
|
Chief-Net
Покинул форум
Сообщений всего: 7127
Дата рег-ции: Окт. 2014
Откуда: МАГАДАН
|
Добрался до текста диалогов и приуныл.
Чтобы подключить несколько строк пришлось извратиться с указанием байтов окончания строки. Даже не знаю, возможно ли без плагина подключить такой текст.
Суть вот в чём. Стопбайт равен /00/00, если я не ошибаюсь, но такая комбинация встречается как в конце строк после команды [JMP], так и в их начале и в середине. То есть если указать /00/00, то текст будет некорректно выниматься.
Rus, можешь посмотреть это дело?
Во вложении текущая версия проекта для рома Megaman Battle Network (U).gba.
Сам ром не могу залить, так как инет на вахте вообще никакой (3 кб в сек.).
+ в названии групп указывает на их работоспособность, broken соответственно на неработоспособность.
----- "Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse |
|
|
Rus |
Отправлено: 04 Августа, 2016 - 17:56:09
|
Покинул форум
Сообщений всего: 28
Дата рег-ции: Июнь 2015
|
Mefistotel Чтобы сделать плагин, который здесь действительно нужен, надо чтобы была более-менее составлена полная таблица с кодами.
Здесь же даже алфавит не весь собран.
Чтобы правильно определить коды нужно точно определить начало и конец всех блоков с текстами и их указателей, тогда появится возможность удалить указатели и смотреть на чистый текст.
Полное количество блоков мне не известно, т.к. табличкой указатели на них не представлены, но их довольно много.
Шрифт
Моноширинная гадость в которой запятая сразу поставляется с пробелом.
Тут в разделе подготовка, довольно подробно описано как искать коды. Для трансхелл редактора, возможно, свои особенности, но вроде как Joker-символы в нём сделали возможность выставлять.
Прилепил кусок с указателями и текстами + слегка начатая экселька(2010) для определения всего нужного.
Возможный вид плагина, наверняка не полный, вероятно потребуется дописать то чего не будет хватать в кейсы и к илям в параллель.
Спойлер (Отобразить)
CODE:library MMBN;
uses
ShareMem,
Needs;
{$E .kpl}
resourcestring
SKPLDescription = 'MegaMan_BN';
Var
ROM: PBytes = NIL;
RomSize: Integer = 0;
EndsRoot: PTableItem = NIL;
MaxCodes: Integer = 0;
Align: Integer = 1;
Function Description: String; stdcall;
begin
Result := SKPLDescription
end;
Function NeedEnd: Boolean; stdcall;
begin
Result := False
end;
Function GetMethod: TMethod; stdcall;
begin
Result := tmNone
end;
Procedure SetVariables(X: PBytes; Sz: Integer; ER: PTableItem; MC, AL: Integer); stdcall;
begin
ROM := X;
RomSize := Sz;
EndsRoot := ER;
MaxCodes := MC;
Align := AL
end;
Function GetData(TextStrings: PTextStrings): AnsiString; stdcall;
var
R: PTextString;
begin
Result := '';
If TextStrings = NIL then Exit;
With TextStrings^ do
begin
R := Root;
While R <> NIL do
begin
Result := Result + R^.Str;
R := R^.Next
end
end
end;
Function GetStrings(X, Sz: Integer): PTextStrings; stdcall;
var
P: PByte; PC: PChar absolute P;
Len: Integer; Code: Byte;
begin
New(Result, Init);
with Result.Add^ do
begin
P := Addr(ROM[X]);
while P^ <> $E4 do //Символ которого нет (надеюсь, что нет его)
begin
Len := 0;
if (P^ = $00) or (P^ = $E5) or (P^ = $E7)
or (P^ = $E9) or (P^ = $EC) or (P^ = $EE) or (P^ = $ED)
or (P^ = $F2)
or (P^ = $F4) or (P^ = $F5) or (P^ = $F8) or (P^ = $FB)
or (P^ = $FC) or (P^ = $FF)
then begin // Считать 1 байт в строку
Code := P^;
Str := Str + PC^;
Inc(P);
case Code of
$E5,
$EE,
$F2,
$F5,
$F8,
$FC: Len := 1;
$E7,
$E9,
$EC,
$FF: Len := 2;
$ED,
$FB: Len := 3;
$F4: Len := 5;
$00: case P^ of
$00: begin Str := Str + PC^; break //Конец строки и цикла while
end;
else Len := 0
end;
end;
X := Length(Str);
SetLength(Str, X + Len);
Move(P^, Str[X + 1], Len);
Inc(P, Len);
end else
begin
Str := Str + PC^;
Inc(P)
end
end
end
end;
exports
GetMethod,
SetVariables,
GetData,
GetStrings,
DisposeStrings,
NeedEnd,
Description;
end.
Text_2_broken
Text_3_broken
+ тест
(Отредактировано автором: 07 Августа, 2016 - 23:09:15) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0) |
« Переводы » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|