Новости:

01.01.2017: Релиз испанской версии Naruto - Ninja Council (GBA)
02.12.2016: Добавлена документация по Kruptar 7
09.10.2015: Обновление перевода игры Battletoads (NES) [версия 1.3]
22.01.2015: Kruptar Open Source
18.10.2014: Релиз обновлённой русской версии Castlevania - Dawn of Sorrow (GBA) от Owls Group
01.05.2014: Релиз русской версии Taiyou no Yuusha Firebird (NES)
24.06.2012: Добавлена доработанная документация и инструкция
26.05.2012: Обновление ORITON [версия 2.050]
11.05.2012: Обновление ORITON [версия 2.048]
11.03.2012: Обновление Kruptar 7 [версия 7.1.1.17]
29.01.2012: Обновление LZ77Restructor 2 [версия 1.02]
01.01.2012: Релиз русской версии Drill Dozer (GBA)

Подробнее на страничке новостей.
Ознакомьтесь с правилами нашего форума.

Главное меню

Shining Force: RoDD

Автор JurasskPark, 11 февраля 2009, 12:46:57

« назад - далее »

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

inside

Цитата: Джинни от 02 ноября 2011, 06:24:29Шрифт в Shining Force на gba можно увидеть только специальными редакторами типа Tile Molester, Crystal Tyle.
Спасибо! А можно уточнить с какими настройками... Вот обычный шрифт опять же нашёлся легко. А второго не вижу :(


В Crystal Tyle 2 тоже самое, хотя заметно что программа более навороченная. Может там какую волшебную опцию надо поставить и я прозрею?... :)

Добавлено позже после небольших раздумий:

Наверное трудность в том что шрифт немоноширинный. Где-то прочитал что для таких шрифтов часто используется 2bpp, прочесал его по всем программам - ноль результата. Даже корруптером (Поганка) ничего не нашёл, хотя пристально не искал (ну всего то пару часов)

Сжальтесь опытные ромхакеры! Ткните скриншотом в шрифт :) Любые советы помогут...
I wanna be a romhacker

Джинни

В Tile Molester есть режим 2-dimensional. Его надо поставить и покрутить.

inside

Прокрутил все режимы (до 16bpp) с установленным 2-dimensional... Наверное остается корруптить внимательнее  :-|
I wanna be a romhacker

Джинни

Там 2 или 4 бит, точно не помню.
Где именно находится не могу точно сказать, но у меня в пометках есть какие-то адреса:
h57782C
h57bd7b
Во вложении уже извлечённый шрифт.

inside

Увы, 0x57782C-0x57bd7b визуально ничего нет. Смотрел и в европейской и в американской. После этого прокорруптил данные адреса - европейка виснет, а в американской шрифт не изменяется. Значит все таки он не там  :-|

Может пожато? Буду копаться дальше...
I wanna be a romhacker

Anton

Этот шрифт что-ли так долго ищется? )
Если внимательно почитать:
Цитата: inside от 02 ноября 2011, 21:48:07Где-то прочитал что для таких шрифтов часто используется 2bpp
и посмотреть выложенный выше Джином шрифт (где можно увидеть, что ширина тайла там 12х12), то видим, что режим: 2Bpp (возможно) и тайл: 12х12. Выставляем эти параметры и ищем:



inside

Урррра! :) Ох и ступил же я, и впрямь все логично оказалось. А этот коварный шрифт при другом размере тайла как мусор смотрится, я 12х12 не догадался проставить. Пойду перерисовывать :D

Anton, Джинни, большое спасибо за помощь!

ps. Надеюсь скоро вернусь с переводом первой главы
I wanna be a romhacker

Hatsuyuki

Не терпится взглянуть :)
Otium sine litteris mors est et hominis vivi sepultura.

inside

Почти все подготовил к переводу (с сохранением EN версии). Однако ром не хочет сдаваться без боя :)
Т.к. шрифт немоноширинный, оказалось что где-то задана ширина для каждой буквы. А т.к. я перерисовывал - куча букв не той ширины которой должна бы быть и буквы на друг друга наползают. Пока ищу где это в роме задается. Вроде было бы логично задать где-то рядом и по сути должен быть ряд малых чисел типа: 08 06 08 08 09 08 08 08 08 08 02 08 08 08 04 (по ширине букв в пикселях). Но такого нет :( Может у кого есть опыт в поиске таких мест (или конкретно для этой игры)?
I wanna be a romhacker

Джинни

Там есть такая таблица. Адрес 7BE40 и до 7BEE8.

inside

Цитата: Джинни от 05 ноября 2011, 08:35:38Там есть такая таблица. Адрес 7BE40 и до 7BEE8.
Спасибо! Моя ошибка была в том что я "померил" восклицательный знак в 2 пикселя, а у них он за 4 идет. В 6 часов ночи и не такое намеришь...

Джинни, как я понимаю Kruptar7 вполне должен справиться с переводом игры, с учетом того что таблица одна? Больно много настроек, пока во все въедешь...  :-[

И ещё я решил выкладывать наработки периодически
Shining Force - Resurrection of the Dark Dragon (E) (M5)
Заметки:
ЦитироватьМоноширинный шрифт: 0x77632C (GBA 4bpp 8x8)
Немоноширинный шрифт: 0x1765E0 (4 color 2bpp 12x12)

Символы на клавиатуре ввода имени: 0x1E206D / 0x1E20FD

Таблица ширины букв (начиная с пробела): 0x07BE3D

Языки:
0x178248 Английский
0x1E2284 Итальянский
0x250798 Французский
0x2B89E4 Немецкий
0x3277A8 Испанский

Спец-символы:
0x00 Конец строки
0x01 ?
0x02 ?
0x03 Конец монолога
0x04 ?
0x05 ?
0x06 ?
0x07 Числовой макрос
0x08 Именной макрос
0x09 Имя персонажа
0x0A ?
0x0B ?
0x0C ?
0x0D ?
0x0E Конец фразы (то из чего состоит монолог)
0x0F ?

Оригинальная таблица (~ - спецсимволы)
Цитировать00=~
02=~
03=~
04=~
05=~
06=~
07=~
08=~
09=^
0A=\n
0B=~
0C=~
0D=~
0E=~
0F=~
10=
11=0
12=1
13=2
14=3
15=4
16=5
17=6
18=7
19=8
1A=9
1B=!
1C=#
1D=%
1E=&
1F=(
20=)
21=+
22=-
23=.
24=/
25=:
26=<
27==
28=>
29=?
2A=@
2B=A
2C=B
2D=C
2E=D
2F=E
30=F
31=G
32=H
33=I
34=J
35=K
36=L
37=M
38=N
39=O
3A=P
3B=Q
3C=R
3D=S
3E=T
3F=U
40=V
41=W
42=X
43=Y
44=Z
45=[
46=]
47=_
48=a
49=b
4A=c
4B=d
4C=e
4D=f
4E=g
4F=h
50=i
51=j
52=k
53=l
54=m
55=n
56=o
57=p
58=q
59=r
5A=s
5B=t
5C=u
5D=v
5E=w
5F=x
60=y
61=z
62=~
63=...
64=~
65=~
66=~
67=,
68=~
69='
6A=~
6B=~
6C=~
6D=~
6E=~
6F=~
70=~
71=~
72=~
73=~
74=~
75=~
76=~
77=~
78=~
79=~
7A=~
7B=~
7C=~
7D=~
7E=~
7F=~
80=~
81=~
82=~
83=~
84=~
85=~
86=~
87=~
88=~
89=~
8A=~
8B=~
8C=~
8D=~
8E=~
8F=~
90=~
91=~
92=~
93=~
94=~
95=~
96=~
97=~
98=~
99=~
9A=~
9B=~
9C=~
9D=~
9E=~
9F=~
A0=~
A1=~
A2=~
A3=~
A4=~
A5=~
A6=~
A7=~
A8=~
A9=~
AA=;
AB=~
AC=~
AD=*
AE=«
AF=»
B0=~
B1=~
B2=$
B3=~
B4=~
B5=~
B6=~
B7=~
B8=~
B9=~
BA=~
BB=~
BC=~
BD=~
BE=~
BF=~

Новая таблица:
Цитировать00=~
02=~
03=~
04=~
05=~
06=~
07=~
08=~
09=^
0A=\n
0B=~
0C=~
0D=~
0E=~
0F=~
10=
11=0
12=1
13=2
14=3
15=4
16=5
17=6
18=7
19=8
1A=9
1B=!
1C=#
1D=%
1E=&
1F=(
20=)
21=+
22=-
23=.
24=/
25=:
26=<
27==
28=>
29=?
2A=@
2B=A
2C=B
2D=C
2E=D
2F=E
30=F
31=G
32=H
33=I
34=J
35=K
36=L
37=M
38=N
39=O
3A=P
3B=Q
3C=R
3D=S
3E=T
3F=U
40=V
41=W
42=X
43=Y
44=Z
45=[
46=]
47=_
48=a
49=b
4A=c
4B=d
4C=e
4D=f
4E=g
4F=h
50=i
51=j
52=k
53=l
54=m
55=n
56=o
57=p
58=q
59=r
5A=s
5B=t
5C=u
5D=v
5E=w
5F=x
60=y
61=z
62=~
63=...
64=~
65=~
66=~
67=,
68=~
69='
6A=~
6B=~
6C=А
6D=Б
6E=В
6F=Г
70=Д
71=Е
72=Ж
73=З
74=И
75=Й
76=К
77=Л
78=М
79=Н
7A=О
7B=П
7C=Р
7D=С
7E=Т
7F=У
80=Ф
81=Х
82=Ц
83=Ч
84=Ш
85=Щ
86=Э
87=Ю
88=Я
89=а
8A=б
8B=в
8C=г
8D=д
8E=е
8F=ё
90=ж
91=з
92=и
93=й
94=к
95=л
96=м
97=н
98=о
99=п
9A=р
9B=с
9C=т
9D=у
9E=ф
9F=х
A0=ц
A1=ч
A2=ш
A3=щ
A4=ъ
A5=ы
A6=ь
A7=э
A8=ю
A9=я
AA=;
AB=~
AC=~
AD=*
AE=«
AF=»
B0=~
B1=~
B2=$
B3=~
B4=№
B5=~
B6=~
B7=~
B8=~
B9=~
BA=~
BB=~
BC=~
BD=~
BE=~
BF=~

Таблица ширины букв (перерисованное)
          00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0x07BE90: -- -- -- -- -- -- -- -- -- 0A 08 08 07 0A 08 0C
                                      A  Б  В  Г  Д  Е  Ж
0x07BEA0: 07 08 08 08 09 0A 08 09 08 08 08 08 08 0A 08 0A
           З  И  Й  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц
0x07BEB0: 08 0A 0B 08 0C 08 06 06 06 05 08 06 06 0A 06 06
           Ч  Ш  Щ  Э  Ю  Я  а  б  в  г  д  е  ё  ж  з  и
0x07BEC0: 06 06 07 08 06 06 06 06 06 06 06 08 06 07 06 0A
           й  к  л  м  н  о  п  р  с  т  у  ф  х  ц  ч  ш
0x07BED0: 0B 07 08 06 06 09 06 -- -- -- -- -- -- -- -- --
           щ  ъ  ы  ь  э  ю  я


Перерисованные шрифты во вложении
I wanna be a romhacker

Anton

Цитата: inside от 05 ноября 2011, 18:35:36с учетом того что таблица одна?

У тебя же их две.
Одна английская (оригинальная), вторая русская (новая).

JurasskPark

Гм... А зачем шрифт диалогов было делать шириной больше оригинала?  *thinking*

GD

А разве нельзя взять наработки (шрифт) из зачахшего прожекта?

Anton

Цитата: JurasskPark от 05 ноября 2011, 20:41:44А зачем шрифт диалогов было делать шириной больше оригинала?

чтобы потом делать лишнюю работу и править ширины :)
(все... молчу, молчу...)

inside

Цитата: AntonУ тебя же их две.
Одна английская (оригинальная), вторая русская (новая).
Ну, не совсем так. Как я понимаю обычно приходится перерисовывать оригинальный шрифт (английский например). И тогда будут две таблицы - в них символы будут пересекаться. Например 1E в одном будет "r" а в другой "ш". У меня же таблицы не пересекаются, т.к. английский шрифт был не тронут. Другими словами я могу писать и на английском и на русском (к примеру: "Макс нашёл Chaos Breaker"). И для перевода мне как бы не нужно иметь два рома на руках, ведь 1 таблица символов позволяет мне видеть оригинальный английский и русский который в процессе

Цитата: JurasskPark от 05 ноября 2011, 20:41:44Гм... А зачем шрифт диалогов было делать шириной больше оригинала?
Хм? Как было 12x12 так и осталось. Или как? :) Кстати шрифт - унылый Arial, но другой не придумался :) Если с переводом закончим потом шрифт перерисовать не так уж и сложно



:-[ поинтеры не ищутся. На тему начитался, и вроде все очевидно. Накидал прожку:
#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;
}
Логика: берем предпологаемый 4 байтный поинтер. Берем следующий после него, проверяем разницу значений между ними. Если она arCheck[0] - значит идем дальше, и т.п. пока всю таблицу не просмотрим. arCheck задает разницу между сообщениями А, Б, В, Г, Д. Т.е. сообщение А = 0, а Б = A + 121, В = Б + 28 и т.п.

Или надо по другой логике искать?

Только не говорите где они лежат сразу, хочу разобраться  ;) А вот если логику поиска подскажите - буду рад :)

Цитата: GDА разве нельзя взять наработки (шрифт) из зачахшего прожекта?
Ну, во-первых у меня его нет. Во-вторых автор думаю проект не забросил, просто пока отложил, поэтому отбирать его работу я не собираюсь :) А вообще просто хотелось самому разобраться с самых азов. Но туго как то идет, сложное это дело  :-|

Цитата: Antonчтобы потом делать лишнюю работу и править ширины
(все... молчу, молчу...)
Поздно, уже поправил :) Да в общем-то ширину пофиксить не долго, а вот найти где оно лежало конечно не так просто. Спасибо Джинни за нахождение :) Впрочем я бы все равно нашёл бы рано или поздно с помощью корруптера и понял где тупанул (на ширине знака "!")... Ну а может бы и не нашёл... :))
И... ширину EN-алфавита я вообще не трогал. Переправил только ширину спец-языковых символов (всякие А с точками наверху и т.п.)
I wanna be a romhacker

TrickZter

Цитата: inside от 05 ноября 2011, 21:17:18Во-вторых автор думаю проект не забросил, просто пока отложил
По-моему он его очень сильно "отложил"  ;D

Цитата: inside от 05 ноября 2011, 21:17:18А вообще просто хотелось самому разобраться с самых азов. Но туго как то идет, сложное это дело  :-|
Похвальное стремление. GBA - отличная платформа для учёбы, для неё написана куча утилит. Например, пожатую графику можно найти при помощи моего второго LZ77Restructor'а :) В большинстве случаев должно быть достаточно только его, реже графику сжимают Хаффманом, но при желании её можно тоже довольно легко найти. Кстати, у меня есть в планах научить Реструктора работать с Хаффманом, но пока что лень  ;D

Anton

Цитата: inside от 05 ноября 2011, 21:17:18Хм? Как было 12x12 так и осталось. Или как?

Не ширина тайла имелась в виду, а ширина символа.

Цитата: inside от 05 ноября 2011, 21:17:18И для перевода мне как бы не нужно иметь два рома на руках

Для круптара зато тебе понадобится два рома (оригинальный и изменяемый) и две таблицы соотв. )

inside

Подтолкните на мысль...

В игре размер текстового блока - около 0x217569. Соответственно размер поинтера - 3 байта.
Есть 2 сообщения по адресам
А: 0x178248
Б: 0x1782C1
Между ними 121 байт
Соотстветственно я предполагаю, что где-то в игре есть 2 поинтера, один из которых равен X а другой X+121. Вот исходя из этого я написал программу. Однако такого места в роме вообще нет. Чтобы это могло значить?

Может поинтеры этих двух фраз (которые идут друг за другом) находятся не подряд? Было бы странно. Или я где ошибся в рассуждениях?

Пока по этой технологии проверил 3х и 4х байтные поинтеры

Добавлено позже после небольших раздумий:

Нашлись поинтеры :) Причем самым банальным способом, поинтеры абсолютные, без всяких там смещений.
Например первая фраза игры (ENG) находится по адресу 0x178248
Если поискать 48 82 17 найдется 1 совпадение - вот и наш первый поинтер

Что интересно поинтеры 4-байтные, к каждому добавляется 08 (прим 48 82 17 08). Интересно зачем оно нужно? :) Ведь 08 явно лишняя. Это они что так одну операцию процессора сэкономили?

Впрочем не важно. Осталось разобраться с Kruptar7. Есть ли для него хелп по параметрам? Всякие ptReference, ptAlign...
I wanna be a romhacker

TrickZter

Цитата: inside от 06 ноября 2011, 01:10:02Что интересно поинтеры 4-байтные, к каждому добавляется 08 (прим 48 82 17 08). Интересно зачем оно нужно? :) Ведь 08 явно лишняя. Это они что так одну операцию процессора сэкономили?
В 99.9% GBAшных игр поинтеры именно такие. Других поинтеров практически никогда не бывает. Поинтеры в GBA абсолютные
0x08000000 - это самый первый байт рома
То есть, например, если адрес в роме у тебя 0x01234567, то поинтер на него будет такой: 0x09234567, в роме он будет записан так: 67 45 23 09

По адресам до 0x08000000 идут адреса биоса, оперативки, видеопамяти и прочее. Вот полный список:

ЦитироватьGeneral Internal Memory

 00000000-00003FFF   BIOS - System ROM         (16 KBytes)
 00004000-01FFFFFF   Not used
 02000000-0203FFFF   WRAM - On-board Work RAM  (256 KBytes) 2 Wait
 02040000-02FFFFFF   Not used
 03000000-03007FFF   WRAM - In-chip Work RAM   (32 KBytes)
 03008000-03FFFFFF   Not used
 04000000-040003FE   I/O Registers
 04000400-04FFFFFF   Not used

Internal Display Memory

 05000000-050003FF   BG/OBJ Palette RAM        (1 Kbyte)
 05000400-05FFFFFF   Not used
 06000000-06017FFF   VRAM - Video RAM          (96 KBytes)
 06018000-06FFFFFF   Not used
 07000000-070003FF   OAM - OBJ Attributes      (1 Kbyte)
 07000400-07FFFFFF   Not used

External Memory (Game Pak)

 08000000-09FFFFFF   Game Pak ROM/FlashROM (max 32MB) - Wait State 0
 0A000000-0BFFFFFF   Game Pak ROM/FlashROM (max 32MB) - Wait State 1
 0C000000-0DFFFFFF   Game Pak ROM/FlashROM (max 32MB) - Wait State 2
 0E000000-0E00FFFF   Game Pak SRAM    (max 64 KBytes) - 8bit Bus width
 0E010000-0FFFFFFF   Not used

Больше инфы по GBA можно найти там:
http://www.romhacking.net/documents/217/

Цитата: inside от 06 ноября 2011, 01:10:02Впрочем не важно. Осталось разобраться с Kruptar7. Есть ли для него хелп по параметрам? Всякие ptReference, ptAlign...
В ptReference нужно вбивать разницу смещений (<фактический адрес> минус <значение поинтера>), для GBA это F8000000

ptAlign - фиг знает, у Джина спроси  :D

Джинни

Цитата: inside от 06 ноября 2011, 02:35:36Языки:
0x178248 Английский
0x1E2284 Итальянский
0x250798 Французский
0x2B89E4 Немецкий
0x3277A8 Испанский
Возьми лучше U версию. Зачем тебе столько языков?

Добавлено позже после небольших раздумий:

Цитата: inside от 06 ноября 2011, 09:10:02Соответственно размер поинтера - 3 байта.
Пойнтеры там 4-х байтные. Little endian. Значения от 0x08000000 с начала рома. В байтах выглядит так: 00 00 00 08.
И это во всех играх на GBA. Бывают относительные пойнтеры, но всегда или 2 или 4 байта. 3 байта никогда не бывает.

Добавлено позже после небольших раздумий:

Цитата: inside от 06 ноября 2011, 09:10:02Впрочем не важно. Осталось разобраться с Kruptar7. Есть ли для него хелп по параметрам? Всякие ptReference, ptAlign...
http://magicteam.net/index.php?page=documents&show=Написание плагинов для Kruptar7
Но в новых версиях названия некоторых параметров изменились. Об этом читать в readme.

inside

ЦитироватьВ 99.9% GBAшных игр поинтеры именно такие. Других поинтеров практически никогда не бывает. Поинтеры в GBA абсолютные
Спасибо, в общем-то так и понял. Только я подумал что это не очень то рационально :)

ЦитироватьВ 99.9% GBAшных игр поинтеры именно такие. Других поинтеров практически никогда не бывает. Поинтеры в GBA абсолютные
Упорно хочу оставить английский :)

ЦитироватьНо в новых версиях названия некоторых параметров изменились. Об этом читать в readme.
Спасибо! Уже создал почти готовый к переводу. Только с таблицой непонятки есть, а почитать о них вроде негде.

1. Спец-символы (звездочки, стрелочки) которые не будут использоваться для перевода - не нужно оставлять в таблице вообще?
2. Когда я делаю перевод строки в просмотрщике строк видны два квадратика на том месте где есть перенос - это нормально или я что-то не так сделал. Странно как-то :)
3. Можно ли в таблице символов задавать правосторонние значения в виде нескольких символов - вроде
09=#HERO#
Типа макросов для замены. Будет ли это корректно обработано? Или если в переводе написать #HERO# то каждый из этих символов заменится соответсвенно и в игре вместо соответствующего байта будет прям так и написано "#HERO#"?
4. В игре каждый монолог заканчивается на код 03 (а после него сразу идет 00). Как мне его при переводе отображать? Или убрать его из таблицы чтобы он был /03 ?
5. Для чего нужны "Диапазоны адресов" при создании группы. Как я догадываюсь - там задаются адреса тех мест на которые Kruptar'у разрешается записывать; вне этого диапазона он ничего не подпортит. (Кстати как он поступит если результирующий текст по размеру больше чем оригинальный и не влезает в условленные рамки?
I wanna be a romhacker

TrickZter

Цитата: inside от 06 ноября 2011, 15:49:181. Спец-символы (звездочки, стрелочки) которые не будут использоваться для перевода - не нужно оставлять в таблице вообще?
Спецсимволы надо либо по-разному обозначать, либо вообще убрать из таблицы.
Такого
00=~
02=~
03=~
04=~
быть не должно.
Если так оставить, то Круптар сначала выдерет все такие символы в виде ~, а потом при вставке заменит их на первый подходящий код, то есть на 00. В итоге игра не будет работать корректно.

Кстати, если, например, у тебя нет места под все буквы русского алфавита, но ты боишься случайно напечатать букву Ё, для которой не хватило места, то можно внести в таблицу нечно подобное:
61=Ё
61=ё
61=Е
61=е
Если так сделать, то любую из букв Ё, ё, Е или е круптар будет заменять на код 61.
Цитата: inside от 06 ноября 2011, 15:49:182. Когда я делаю перевод строки в просмотрщике строк видны два квадратика на том месте где есть перенос - это нормально или я что-то не так сделал. Странно как-то :)
А как ты этот перенос в таблице обозначил?

Должно быть что-то вроде такого:
41=А
42=Б
43=стопицот
02
03
ends
00
01

02 и 03 будут восприниматься круптаром как переносы строк
00 и 01 будут восприниматься круптаром как концы строк
Перед концами строк обязательно должна стоять строка ends

Цитата: inside от 06 ноября 2011, 15:49:183. Можно ли в таблице символов задавать правосторонние значения в виде нескольких символов - вроде
09=#HERO#
Типа макросов для замены. Будет ли это корректно обработано? Или если в переводе написать #HERO# то каждый из этих символов заменится соответсвенно и в игре вместо соответствующего байта будет прям так и написано "#HERO#"?
Да, в таблице символов можно писать слова. Круптар их будет корректно кодировать.
Например, если у тебя в таблице есть такая запись:
60=слово
То там, где будет встречаться кусок "слово" (без кавычек), Круптар автоматом подставит байт 60.
Цитата: inside от 06 ноября 2011, 15:49:184. В игре каждый монолог заканчивается на код 03 (а после него сразу идет 00). Как мне его при переводе отображать? Или убрать его из таблицы чтобы он был /03 ?
Выясни что делает 03 и что делает 00. Вероятнее всего, что 00 - это конец строки, а 03 - какой-нибудь спецсимвол, например, это может быть символом, который выводит на экран мигающий курсор.
Чтобы точно узнать что делает тот или иной код, просто попробуй воткнуть его посреди предложения и посмотри что произойдёт в игре.
Цитата: inside от 06 ноября 2011, 15:49:185. Для чего нужны "Диапазоны адресов" при создании группы. Как я догадываюсь - там задаются адреса тех мест на которые Kruptar'у разрешается записывать; вне этого диапазона он ничего не подпортит. (Кстати как он поступит если результирующий текст по размеру больше чем оригинальный и не влезает в условленные рамки?
Верно. Если мне не изменяет склероз, Круптар пожалуется на нехватку текста и ничео не вставит.

Джинни

Цитата: TriсkZter от 07 ноября 2011, 00:18:273. Можно ли в таблице символов задавать правосторонние значения в виде нескольких символов - вроде
09=#HERO#
Можно.

Цитата: inside от 06 ноября 2011, 23:49:182. Когда я делаю перевод строки в просмотрщике строк видны два квадратика на том месте где есть перенос - это нормально или я что-то не так сделал.
Так и должно быть.

inside

Цитата: TriсkZter от 06 ноября 2011, 16:18:27Если так оставить, то Круптар сначала выдерет все такие символы в виде ~, а потом при вставке заменит их на первый подходящий код, то есть на 00. В итоге игра не будет работать корректно.
Да, понял. Это кажется называется необратимой таблицей.

ЦитироватьА как ты этот перенос в таблице обозначил?
В самом файле таблицы из которого я подгружал в Kruptar данные - никак. Но в самом Kruptar'е я в секцию "Коды окончания строк" добавил 00. А в коды разрыва строк добавил 0A.

ЦитироватьВыясни что делает 03 и что делает 00. Вероятнее всего, что 00 - это конец строки, а 03 - какой-нибудь спецсимвол, например, это может быть символом, который выводит на экран мигающий курсор.
Чтобы точно узнать что делает тот или иной код, просто попробуй воткнуть его посреди предложения и посмотри что произойдёт в игре.
Понял! Это знак игре "жди нажатия чтобы показать пользователю текст дальше". Без него диалог не дожидаясь игрока закончится сам

ЦитироватьВерно. Если мне не изменяет склероз, Круптар пожалуется на нехватку текста и ничео не вставит.
Уже заметил! Однако что-то вставил как ни странно. Может не вставил то что не влезает

ЦитироватьДа, в таблице символов можно писать слова. Круптар их будет корректно кодировать.
Уфф... это отлично!


--
update спец-символов:
03 - ждать нажатия
05 - пауза



ps. Перевод начат  (:
I wanna be a romhacker