Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Необычное дополнение к шрифту

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Ср Июл 21, 2010 12:57 am    Заголовок сообщения: Необычное дополнение к шрифту Ответить с цитатой

В процессе хакинга Metroid Prime 3: Corruption (Nintendo Wii) дошло дело и до шрифтов. Формат оказался не из самых простых, но и не особо ужасным, дался довольно легко, но не без рутины.
Растр шрифтов хранится на полотнах (2 или 4 полотна), координаты символов - стандартные float-rect'ы - 4 текстурных координаты от 0.0 до 1.0 (пользуясь случаем, передаю привет OpenGL!). Плюс всякие ширины в пикселах, отступы и т.п. Вроде всё хорошо, вроде всё ковыряется. Но... В конце шрифтов есть странные дополнения - смысл их мне пока не ясен. Суть вот в чём: у некоторых символов есть нечто вроде списка - ему сопоставлены другие символы и значения (обычно от -2 до 1).

Вот пару примеров (соответствия символов одинаковы минимум в двух шрифтах, а вот значения - разные). В каждой строке - символ, сопоставленный ему символ и неизвестное значение. Одному символу может быть сопоставлено множество символов/значений, что прекрасно видно из списка (формат строки: "символ1 символ2 значение").

3D964165578C3990.FONT, полотна:


Упорядоченно:


Таблица:
Код:

1 0 0
1 4 -2
1 5 0
1 6 0
1 7 -2
1 9 0
A D -1
A l 0
B e -1
C E -1
D D -1
D e 0
E A 0
E T 0
E X 1
G e 0
I c 0
M M -1
M U 0
M a 0
M c -1
M e -1
M i -1
N E -1
N O 1
O D -1
O J -1
P E -1
P h -1
R D -1
R E -1
R I 1
R O 1
R e -1
S E -1
S T -1
S c -1
S e -1
S t 0
T A -1
T E -1
T R -1
T S 0
T U 0
T Y 0
T a -1
T e -1
T o -1
U D -1
U I 0
U L 0
W e -1
X E -1
Y a 0
a c -1
a d -1
a g -1
a s 0
a t -1
a w -1
a z -1
b d 0
b e -1
b j -2
b o -1
c B 0
c C 0
c e 0
c h 0
c l 1
c o 0
c q -1
c r 0
c t 0
c u 0
c y 0
d i 1
d l 0
d n 0
d s 0
d y 0
e e 0
e j -1
e l 0
e m 0
e n -1
e t 0
e y 0
e z -1
f a -1
f e -1
f f -1
f i 0
g h 1
g i 0
g l 0
g n 0
g o 0
g u 0
g y 0
h a 0
h e -1
h i 0
h t -1
i c -1
i d 0
i e -1
i f 0
i g 0
i z -1
j e 0
k e -1
l a 0
l d -1
l e -1
l f 0
l i 0
l t -1
l w 0
m a -1
m e -1
m p -1
n a 0
n c -1
n d -1
n e -1
n f 0
n g -1
n i 0
n j -1
n t -1
n z 0
o a 0
o c -1
o d -1
o e -1
o f -1
o g -1
o i 0
o j -2
o l -1
o s 0
o t -1
o w -1
o z -1
p a 0
p e -1
p t -1
q u 0
r a -1
r c -1
r e 0
r i 0
r s 0
s c -1
s e -1
s s -1
s t -1
s w -1
t a 0
t c -1
t e -1
u c -1
u d -1
u e -1
u g -1
u l -1
u s -1
u t 0
v a -1
v e -1
v i 0
w a 0
w h 0
w i 0
y c -1
y e -1
z e 0
© . -1


FC1BE4F13D86CE52.FONT, полотна:


Упорядоченно:


Таблица:
Код:

1 0 0
1 4 -1
1 5 0
1 6 0
1 7 -1
1 9 0
A D -1
A l 0
B e -1
C E -1
D D 0
D e 0
E A 0
E T 0
E X 0
G e 0
I c 0
M M -1
M U 0
M a 0
M c -1
M e -1
M i -1
N E -1
N O 1
O D -1
O J -1
P E -1
P h 0
R D -1
R E 0
R I 0
R O 1
R e -1
S E -1
S T 0
S c -1
S e -1
S t 0
T A 0
T E -1
T R -1
T S 0
T U 0
T Y 0
T a -1
T e -1
T o 0
U D 0
U I 0
U L 0
W e -1
X E -1
Y a 0
a c -1
a d -1
a g -1
a s 0
a t -1
a w -1
a z -1
b d 0
b e -1
b j -1
b o -1
c B 0
c C 0
c e 0
c h 0
c l 0
c o 0
c q 0
c r 0
c t 0
c u 0
c y 0
d i 1
d l 0
d n 0
d s 0
d y 0
e e 0
e j -1
e l 0
e m 0
e n 0
e t 0
e y 0
e z 0
f a -1
f e -1
f f 0
f i 0
g h 1
g i 0
g l 0
g n 0
g o 0
g u 0
g y 0
h a 0
h e -1
h i 0
h t -1
i c 0
i d 0
i e 0
i f 0
i g 0
i z -1
j e 0
k e -1
l a 0
l d -1
l e -1
l f 0
l i 0
l t -1
l w 0
m a 0
m e -1
m p 0
n a 0
n c -1
n d -1
n e -1
n f 0
n g -1
n i 0
n j -1
n t -1
n z 0
o a 0
o c -1
o d -1
o e -1
o f -1
o g -1
o i 0
o j -1
o l 0
o s 0
o t -1
o w -1
o z -1
p a 0
p e 0
p t -1
q u 0
r a 0
r c 0
r e 0
r i 0
r s 0
s c -1
s e -1
s s 0
s t -1
s w -1
t a 0
t c -1
t e -1
u c -1
u d -1
u e -1
u g -1
u l 0
u s -1
u t 0
v a 0
v e -1
v i 0
w a 0
w h 0
w i 0
y c -1
y e 0
z e 0
© . 0


Кроме того, каждый символ ссылается на элемент таблицы, с которого начинается цепочка его соответствий. Т.е. 'M' ссылается на "M M -1" и т.п. Символы, у которых нет соответствий, ссылаются на конец таблицы, т.е. в пустоту (условно NULL).
У японского шрифта такой таблицы нет.

Может кто-нибудь догадается и поймёт смысл этих таинственных таблиц... Впервые сталкиваюсь с подобной избыточностью данных (ну вот всё на руках есть, вроде ничего больше и не надо, а неизвестные данные остались). Можно, конечно, просто ничего не менять, но как бы потом не выскочило где-нибудь, ведь подобная халатность часто бывает чревата последствиями.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Ср Июл 21, 2010 1:32 am    Заголовок сообщения: Ответить с цитатой

Появилась теория, что это каждая запись таблицы - инкремент расстояния между данными парами символов. Звучит вполне правдоподобно, надо будет проверить. Смущают разве что нули - если так, то это лишние записи (разве что если этот набор соответствий - не стандартный "конфликтный", когда эти пары символов с обычным отступом обычно смотрятся некрасиво). Так что всё-таки не факт...

И ещё - никто не знает алгоритма оптимального расположения прямоугольников на прямоугольной плоскости? Другими словами, надо запихнуть все символы в ограниченное двухмерное пространство. Такие алгоритмы совершенно точно существуют, узнать бы только их названия...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2801

СообщениеДобавлено: Ср Июл 21, 2010 3:10 pm    Заголовок сообщения: Ответить с цитатой

HoRRoR писал(а):
И ещё - никто не знает алгоритма оптимального расположения прямоугольников на прямоугольной плоскости? Другими словами, надо запихнуть все символы в ограниченное двухмерное пространство. Такие алгоритмы совершенно точно существуют, узнать бы только их названия...


Не оно?
http://www.gamedev.ru/pages/coriolis/articles/Packing_Lightmaps
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Ср Июл 21, 2010 3:14 pm    Заголовок сообщения: Ответить с цитатой

Думаю, именно это мне и надо. Спасибо большое.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lupus



Зарегистрирован: 09.08.2006
Сообщения: 484
Откуда: Украина, Крым

СообщениеДобавлено: Ср Июл 21, 2010 4:27 pm    Заголовок сообщения: Ответить с цитатой

Ух ты! Миха за wii всерьёз взялся ))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Ср Июл 21, 2010 4:28 pm    Заголовок сообщения: Ответить с цитатой

Ну дык... На том же консолгеймз в проектах уже хрен знает сколько висят Сайлент-Хилл и Метроид Прайм 3...
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lupus



Зарегистрирован: 09.08.2006
Сообщения: 484
Откуда: Украина, Крым

СообщениеДобавлено: Ср Июл 21, 2010 8:00 pm    Заголовок сообщения: Ответить с цитатой

СХ видел, а МП3, как-то не замечал...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Чт Сен 23, 2010 11:30 am    Заголовок сообщения: Ответить с цитатой

Кстати, если кому интересно - это "дополнение" называется кернинг. Странно, что за столько времени я встретил столь банальную вещь впервые.
_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2801

СообщениеДобавлено: Чт Сен 23, 2010 3:06 pm    Заголовок сообщения: Ответить с цитатой

Shocked Продвинутая система вывода.

Я когда-то на SNES в Super Mario RPG хотел реализовать кернинг обычной таблицей ширин символов - к примеру, в знакогенераторе было две прописных Т, и для второй Т ширина была на 1 пиксель меньше, так что следующие за ней строчные буквы располагались ближе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
HoRRoR
RRC2008
RRC2008


Зарегистрирован: 21.06.2006
Сообщения: 2341
Откуда: Ростов-на-Дону

СообщениеДобавлено: Чт Сен 23, 2010 5:29 pm    Заголовок сообщения: Ответить с цитатой

На самом деле, в данном случае кернинг почти не даёт результата, на мой взгляд.



_________________
Работаю за деньги
KILL ALL HUMANS!!!!!111
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Марат



Зарегистрирован: 08.01.2008
Сообщения: 211
Откуда: Казахстан, Астана

СообщениеДобавлено: Пт Сен 24, 2010 9:03 pm    Заголовок сообщения: Ответить с цитатой

Я тоже впервые. Встретил её в игре Twinkle Tale на smd. Видимо, она туда была добавлена переводчиками m.i.j.e.t.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group