Вход

Просмотр полной версии : Ищу программера для помощи в модификации PSP-движка (Never7, Ever17, Remember11 и тп)


Страницы : 1 [2]

Yoti
07.02.2015, 14:50
ErikPshat,
а как по мне, то нет =) Буду дома - проверю на консоли.

ErikPshat
07.02.2015, 15:10
Ну вот, например в файле есть такого вида смещения. И я вижу в этих же позициях в файле EBOOT.BIN именно эти же записи значений.

10648

Последняя имеющаяся секция в файле = 0x0014D5D8. Там нет столько байт, как 0x08804000.
Вот так показывает его смещение:

10649

Хотя, по аналогии со всеми другими смещениями, должно отображаться loc_0011A38C, потому что именно по тому адресу в EBOOT.BIN он прописал кнопки.
Но не на loc_0891E38C. Хотя PSP видимо считывает и так и эдак.

riku.kh3
07.02.2015, 15:48
Ну вот, например в файле есть такого вида смещения. И я вижу в этих же позициях в файле EBOOT.BIN именно эти же записи значений.

10648

Последняя имеющаяся секция в файле = 0x0014D5D8. Там нет столько байт, как 0x08804000.
Вот так показывает его смещение:

10649

Хотя, по аналогии со всеми другими смещениями, должно отображаться loc_0011A38C, потому что именно по тому адресу в EBOOT.BIN он прописал кнопки.
Но не на loc_0891E38C. Хотя PSP видимо считывает и так и эдак.
Да, как-то не гуд выглядит. Может с совместимостью проблемы потом возникнуть в каком-нибудь из эмуляторов. Может другим ассамблером попробовать этот опкод собрать?
:scratch_one-s_head:

ErikPshat
07.02.2015, 16:06
riku.kh3, да в принципе лучше оставить, как есть. Работает замечательно.
А вот мой вариант я проверил, и не работает :) У меня рассчёт на смещение вроде правильный, там прописывается адрес 4-байтными шагами на байт.
Просто номер функции MIPS видимо не такой. Но вроде верный.
Там 1-ый байт 0х08 берёт адресацию 0х00000000, если 0х09, то адресация 0х04000000, если 0х0A, то 0х08000000ю

riku.kh3
07.02.2015, 16:20
riku.kh3, да в принципе лучше оставить, как есть. Работает замечательно.
А вот мой вариант я проверил, и не работает :) У меня рассчёт на смещение вроде правильный, там прописывается адрес 4-байтными шагами на байт.
Просто номер функции MIPS видимо не такой. Но вроде верный.
Там 1-ый байт 0х08 берёт адресацию 0х00000000, если 0х09, то адресация 0х04000000, если 0х0A, то 0х08000000ю
простой джамп, видимо, не принято на psp использовать. jr и jal повсюду только вижу :scratch_one-s_head:

насколько я понимаю, надо еще инструкцию добавлять и через регистр по правилам делать джамп, а места там нету

ErikPshat
07.02.2015, 16:45
riku.kh3, да не, джампов там полно, они в конце все. loc_000B6268: ; Refs: 0x000B6278
0x000B6268: 0x0C03FCBF '....' - jal sub_000FF2FC
0x000B626C: 0x00002021 '! ..' - move $a0, $zr
0x000B6270: 0x0802D866 'f...' - j loc_000B6198
0x000B6274: 0x8FBF0004 '....' - lw $ra, 4($sp)

loc_000B6278: ; Refs: 0x000B6170
0x000B6278: 0x0802D89A '....' - j loc_000B6268
насколько я понимаю, надо еще инструкцию добавлять и через регистр по правилам делать джамп, а места там нету
Scorpeg вроде всё нормально сделал, и инструкцию добавил и return на следующую функцию. Он всё это встроил вместо сообщения об ошибке и туда направил прыжок. Просто я не пойму, почему стандартный мой отсчёт не работает, хотя по всему файлу виден явный отсчёт без всяких прибавок 0х08804000.

Scorpeg
07.02.2015, 16:59
Хакеры, вашу мать :)

Scorpeg добавил 07.02.2015 в 16:59
Да, как-то не гуд выглядит. Может с совместимостью проблемы потом возникнуть в каком-нибудь из эмуляторов. Может другим ассамблером попробовать этот опкод собрать?
:scratch_one-s_head:
Это у Erik'а задвиг не туда. Всё четко у меня. Ты ж видишь что работает, нет? :) Был бы косяк - оно бы не работало.


Короче ликбез нумер два для Erik'a и сочувствующих.

Во второй раз говорю (как уже ранее я писал и недавно писал Yoti) в память PSP Eboot грузится по адресу 0x08804000. Не каждая программа, но в 99% случаев это так (там прописано в общем-то в ебуте куда грузить).

То есть eboot грузится по этому адресу в память PSP, принимай это как факт.

Что происходит далее? Далее происходит применение релоцируемых данных или как их там по научному зовут. Суть их в чем - существует где-то в ебут табличка, где отмечены адреса с переходами (джампами). После загрузки проги в память PSP пробегает по всем адресам и относительное смещение (вот это вот j 0x1111 которое вы видите в других джампах в PRXTool) преобразует в абсолютное (в j 0x8804000+то число).

Поэтому, если вы например вместо любой инструкции (кроме джампа) воткнете например j 0x33333 она у вас так и останется неправильно j 0x33333 потому что она отсутствует в таблицу-указателе на релоцируемые адреса.

Поэтому Erik пошел вообще не туда. У меня код не имеет релоцируемых адресов - поэтому там указывать надо абсолютные адреса для джампов.

riku.kh3
07.02.2015, 17:04
Это у Erik'а задвиг не туда. Всё четко у меня.
Ясно-понятно. Но все-равно, мне тоже интересно почему другой дизассамблер один этот единственный адрес по-другому показывает. :)

Scorpeg
07.02.2015, 17:17
Да потому что bne - это относительная инструкция. Там адрес считается в пределах +0xffff и -0xffff от КОМАНДЫ.

Поэтому ее загрузи в любое место - будет одинаковые результат. Она относительную адресацию использует. Поэтому все бранчи будут отображаться правильно, куда угодно их загрузи. Можешь для интереса кусок этот сохранить с бранчам и загрузить куда-нибудь еще - он все равно будет тебе правильные адреса показывать.

То есть на деле оно выглядит как "прыгни на адрес, который равен текущему + сколько-то (но не больше 65535)".

Ну или доку по мипсам прочитай, там ровно то же самое написано.

А джамп использует абсолютную адресацию, поэтому там пишется абсолютный адрес. Бранчем нельзя же адресовать больше 65535 байт вперед и назад, а у меня он явно дальше ушел.

Scorpeg добавил 07.02.2015 в 17:17
ErikPshat,
а как по мне, то нет =) Буду дома - проверю на консоли.
Можешь не проверять, на ней тоже работает :)

ErikPshat
07.02.2015, 17:28
Поэтому Erik пошел вообще не туда. У меня код нерелоцируемый - поэтому там указывать надо абсолютные адреса.
Ну теперь-то понятно. Я так и понял, что у тебя адрес без релокации оказался, потому что новую функцию дебаггер не видит.

(но не больше 65535)А это почему? Я вижу, что адресация кругом подсчитывается 3-мя байтами, не обязательно до FFFF. Вот примеры: 0x000B6270: 0x0802D866 'f...' - j loc_000B6198
0x0011104C: 0x08044346 'FC..' - j loc_00110D18

0x0802D866 --- loc_000B6198 = 745880 : 4 = 0х02D866
0x08044346 --- loc_00110D18 = 1117464 : 4 = 0x044346

Как бы больше, чем 65535. Первый байт 0х08 - указывает на функцию джумпа в 0х00000000.

ErikPshat
07.02.2015, 18:09
Можешь проверить все смещения и этот алгоритм будет во всём файле применим.
Существует ещё правило, когда номера функций идут строго 2-байтные, то оставшиеся 2 байта значения пишутся младшими байтами(ессно до FFFF(65535)), а старшие байты просто отбрасываются.

Scorpeg
07.02.2015, 19:05
Ты по диагонали чтоли прочитал? Я про команду branch (bne например), не про jump. У джампа 3 байта + 2 бита (26 бит) под адрес, у бранча - 2 байта под указатель смещения (16 бит). Еще раз отсылаю читать доку по mips, а не спорить ради спора. А лучше в Never7 разбираться :)

Scorpeg добавил 07.02.2015 в 19:05
Ну теперь-то понятно. Я так и понял, что у тебя адрес без релокации оказался, потому что новую функцию дебаггер не видит.
Давай не путать терминологию. Дебаггер - тулза, которой можно отлаживать код в реальном времени (собственно отлавливать баги). PRXTool не дебаггер, а максимум дизассемблер - программа, которая разбирает код на ассемблере в человечитаемые инструкции. Так что нормальный дебаггер мою функцию как раз увидит, скорее всего. И IDAPro точно увидит, хотя она тоже дизассемблер, только интерактивный. Но это не особо важно, я думаю, что там увидит дебаггер, просто ты не теми терминами оперируешь и меня это путает.

ErikPshat
08.02.2015, 10:01
Я про команду branch (bne например), не про jump. У джампа 3 байта + 2 бита (26 бит) под адрес, у бранча - 2 байта под указатель смещения (16 бит). Еще раз отсылаю читать доку по mips, а не спорить ради спора.Ну так а я про джампы веду разговор. Это ты же читаешь мои посты про джампы, а отвечаешь про бранчи. Бранчи-то понятно, что там там другой алгоритм и математическая формула. Там 2 регистра и значение, где в значении указывается смещение, относительно места расположения этого самого значения и расчитывается по формуле: значение - offset : 4 - 1.
И по ходу дела, я смотрю структуру кода и сразу выписываю формулы, чтобы закрепить знания в постах. Тебе может это не надо, но другие люди тоже могут искать ответы на подобные вопросы и им может помочь информация, каким образом эти цифры появляются и генерируются в файлах.


Короче, я просто посмотрел твои формулы и заметил, что ты использовал абсолютные смещения, хотя в EBOOT.BIN кругом используются относительные внутренние смещения. Поэтому подумал, почему бы не воспользоваться стандартами по аналогии с файлом, и вынес этот вопрос на обсуждение. От тебя просто хотелось услышать пояснения, почему был избран такой путь, а не то, как "у Erik'а задвиг не туда" или всякие ликбезы.

Ладно, признаю, что я полный лох педальный.
За твою реализацию хитрого плана с кнопками, присваиваю тебе звание Про-Геймера http://www.pspx.ru/forum/images/pspx/progamer.png ;)


riku.kh3, почитал ещё раз твою ссылку: http://bbs.blacklabel-translations.com/showthread.php?tid=35&pid=84
В первый раз как-то не так дошло и я не туда полез выполнять шаг 2. Сейчас наконец допёрло, что это относилось всё к тем же строкам. Там помимо смены $zero на регион, чтобы не было глюков, надо было ещё сменить функцию move на li. После первой правки было так, с move: 0x0000C7D0: 0x00002025 '% ..' - move $a0, $zr
0x0000C7D4: 0x0C045016 '.P..' - jal sceImposeSetLanguageMode
0x0000C7D8: 0x00002825 '%(..' - move $a1, $zr
Чтобы сменить регистры, нужно поменять регистры move: 2025 и 2825 на li: 2404 и 2405 (для 10-тичного формата) или на 3404 и 3405 (для 16-ричного формата) 0x0000C7D0: 0x24040008 '...$' - li $a0, 8
0x0000C7D4: 0x0C045016 '.P..' - jal sceImposeSetLanguageMode
0x0000C7D8: 0x24050001 '...$' - li $a1, 1
Я сделал смену языка в десятичном формате. Если в первой строке поставить 1, то будет надпись на английском языке, я поставил на 8 для русского языка. Готовый файл, с правками кнопок от Scorpeg, во вложении...

riku.kh3
08.02.2015, 10:41
ErikPshat, это (http://www.pspx.ru/forum/showpost.php?p=1093298&postcount=67) не то же самое? :)

Scorpeg
08.02.2015, 12:05
Ну так а я про джампы веду разговор. Это ты же читаешь мои посты про джампы, а отвечаешь про бранчи. Бранчи-то понятно, что там там другой алгоритм и математическая формула. Там 2 регистра и значение, где в значении указывается смещение, относительно места расположения этого самого значения и расчитывается по формуле: значение - offset : 4 - 1.

Да в том и дело, что у тебя на скриншотах как раз бранчи и написаны http://www.pspx.ru/forum/attachment.php?attachmentid=10648&d=1423310816. ruki и не понял, почему бранчи правильно показываются, а джамп нет. Я ему и объяснил, как это делается (там первая же фраза в сообщении "Да потому что bne - это относительная инструкция. Там адрес считается в пределах +0xffff и -0xffff от КОМАНДЫ." - то есть сразу понятно, что я не про джампы). А ты эту фразу не заметил или еще чего, начал спорить на пустом месте непонятно с чем :) Пояснения я написал, почему "не туда" в ликбезе, вроде понятные. Если непонятные, то еще раз скажу, что я косноязычен и мне сложно объяснить, если с первого раза не получилось, поэтому тут лучше всего обращаться к доке по мипсам.

Вообще есть такая вещь как armips https://github.com/Kingcom/armips собственно ассемблер для мипсов (может кто не знал). Я в нем писал. Мож кому-то будет полезно. Kingcom правда загрузку ELF'а в нормальном виде не прикрутил, так что придётся как я писать пока что.

ErikPshat
08.02.2015, 19:11
ErikPshat, это (http://www.pspx.ru/forum/showpost.php?p=1093298&postcount=67) не то же самое? :)
У-ха-ха, да, именно тоже самое :xDD:
Я чёта не допёр сразу. Это вчера только боги спустились с небес и мне во сне объяснили что к чему.

Только в тот раз я move не трогал, а просто сменил zero на 1 и у меня высвечивалось по-русски. В этот раз я поменял на li и всё стало по-английски, пришлось поменять 1 на 8. Но ты конечно изначально уже всё это сделал. Бывают у меня заскоки, когда глаза видят одно, а мозги вычисляют по другому. Просто когда до мозгов сразу не доходит, то они думают как-то иначе :)

ErikPshat
08.02.2015, 19:25
Да в том и дело, что у тебя на скриншотах как раз бранчи и написаны http://www.pspx.ru/forum/attachment.php?attachmentid=10648&d=1423310816
Ну так опять же, это был только пример, где я хотел показать, что оффсеты указываются без прибавки 08804000. Где относительные смещения указываются относительно самого файла. Только и всего.

А за армированные мипсы спасибо. Было дело я когда-то в Mars-e умудрился написать программку на асме, где на кубике Yoti что-то там плавало. Да там собсно не С++ писать, это как батники рисовать, просто смотришь спецификацию и рисуешь. Но конечно в асме и мипсах я ничерта не шарю, всё держится только на логическом обосновании.

Scorpeg
08.02.2015, 22:56
Ну так опять же, это был только пример, где я хотел показать, что оффсеты указываются без прибавки 08804000. Где относительные смещения указываются относительно самого файла. Только и всего.
Так и я не тебе, а riku отвечал. И ты опять путаешься в показаниях, до этого говорил, что ты про джампы, теперь ты про оффсеты заговорил, хотя оффсеты только у бранчей, а у джампов - прямые ссылки. Короче замнем это, не суть, а то можно долго докапываться, кто чего хотел сказать :drinks:

И ты может начнешь уже Never7? Я тебе даже план уже написал, тулзы тут есть (вообще почти все тулзы подойдут отсюда, и формат графики тоже наверное). Осталось только скрипты повыдирать и присоединить. Ну и init.bin разватрушить (я не осилил пока что его целиком, только 75% гыгы) :crazy:

Scorpeg
03.04.2015, 11:26
Кстати по поводу картинок. Всё не так :) Это просто такие удачные картинки попались с одной колонкой.

А на самом деле оно выглядит так: http://psp4real.ru/_tr/kb_0.png

И где-то там, в хедере, находится информация, как из этих квадратиков собрать нормальную картинку.

dreambottle
18.02.2016, 20:39
Всем привет. Проект еще жив? На неделе разбирал ресурсы Remember11, пытаясь адаптировать перевод (заодно узнал что psp сцена почти умерла :( ). И столкнулся с некоторыми трудностями. Возможно, здесь мне кто-нибудь сможет помочь. И, конечно, готов поделиться всем, что обнаружил сам, если это окажется полезным.

Я, по возможности, реюзаю код комманды из tlwiki, которые занимались pc версией, попутно допиливая нужные изменения.
С картинками много не заморачивался, т.к. пользы от этого мало. Зато разобрался со шрифтами, осталось только нормальный конвертор в bmp/png и обратно написать.

Набросал скрипты для распаковки iso, распаковки AFS, декомпресии упакованных lzss-ом ресурсов, и переупаковки всего этого добра(или зла - зависит от восприятия) обратно.
Ресурсы пока не модифицирую, не считая некоторой работы с BOOT.BIN руками, т.к. для начала хочу убедиться, что все правильно пакуется и сжимается.

Все работает, с одним досадным исключением: если разжать и сжать обратно init.bin, то игра будет крешиться при загрузке. Через эмулятор тоже крешится, при чем сам эмулятор. А разжимать файл надо, т.к. туда вбита большая часть текста. Кто-нибудь сталкивался с такой проблемой? и как ее решили?

Подскажите, можно ли как-то "дебажить ассемблер"? Подключить gdb к запущенному iso не знаю как, но мне нужно как-то определить где оно вылетает.

riku.kh3
19.02.2016, 05:59
dreambottle, нетронутые файлы после расжатия и обратного сжатия побайтово совпадают? Т.к. должны.
http://www.pspx.ru/forum/showpost.php?p=1092812&postcount=14
Если да, то скорее всего не в самом сжатии дело. :scratch_one-s_head:

dreambottle
19.02.2016, 13:20
Побайтовой идентичности нет, конечно. Но в том, что сжатие работает правильно уверен. На всякий случай, попробовал даже применить "фейковое" сжатие, которое ничего не сжимает, просто раздувает файл контрольными байтами - результат такой же. Да и на остальные файлы не жалуется игра. Я бы предположил, что игра сверяет контрольные суммы, но по симптомам выглядит будто что-то крешится с треском и ошибками.

Разобрался как пользоваться дебаггером в ppsspp, попробую что-то раскопать.

riku.kh3
19.02.2016, 22:31
У меня побайтово совпадают, попробуй мою сжималку.

riku.kh3 добавил 19.02.2016 в 22:31
А вообще, в jpcsp есть расширенный лог, и в момент крэша там можно узнать точную позицию. Потом уже в ppsspp на это место брейкпоинт, и будет видно что в этот момент идет не так. Еще можно подцепиться к памяти процесса ppsspp.exe, например winhex'ом, и сдампить в момент крэша. Там внутри песочницы точно такой же дамп будет, просто отрезать лишнее начало. И там внутри посмотреть свой распакованный файл. Если он обрывается - значит при распаковке на этом месте и крэшится.

dreambottle
20.02.2016, 15:24
Хвала дебаггеру и мемори дампам - разобрался. Ошибка была у меня в коде - при разжатии. Очищал буффер не нулями, а пробелами (0x20), из-за этого смещения в файле получались не в духе 0x00001140, а 0x20201140.

dreambottle
23.02.2016, 23:44
Перенес английский текст сцен на PSP!
Мои наработки на гитхабе: https://github.com/dreambottle/R11-psp-english
Буду рад любой помощи!

Scorpeg
28.03.2016, 18:30
Тоже мне невидаль. Про инит.бин - не заморачивайся, воткни в конце новую секцию и всё.

И да, проект не умер, всё как бы перенесено, я даже авто-переносы сделал (да, именно то, почему у тебя виснут длинные тексты), но как-то надо всё причесать красиво, протестировать, а до этого не доходят руки, да и в разъездах я последнее время.

А с чего это PSP-сцена умерла? Вроде нормально, живенько на gbatemp, все время че-то там хачат.

Как можно было накосячить со сжатием меня тоже берет недоумение. Вот же https://oku.edu.mie-u.ac.jp/~okumura/compression/lzss.c 100% идентичный код (проблемы тока на нули поменять) и он 100% работает для сжатия и декомпрессии. Скомпилил и в путь.

dreambottle
29.03.2016, 00:12
Тоже мне невидаль
Давай без этого. Я занимаюсь проектом по фану, а не чтобы кому-то что-то доказать.

Насчет сжатия, если прочитаешь пост повыше, то увидишь, что именно с пробелами и был косяк. При чем, не в сжатии, а в разжатии.

Про инит.бин - не заморачивайся, воткни в конце новую секцию и всё.
Ты наверное про eboot говоришь. Если есть софт, чтобы добавить/расширить секцию, то выложи куда-нибудь. Руками делать не вариант, а писать под это скрипт лень.

Что касается psp'шного init.bin, он у меня уже перенесен почти весь (кроме хронологии и песен). Не знаю пока как создать дополнительные страницы в tips'ах, но это не приоритетная задача для меня.

Моя идея в том, чтобы не расставлять переносы, а уменьшить шрифт. Шириной текста управлять достаточно легко через сам файл шрифта и сделать его тоньше не составит труда. С высотой строк сложнее - интервал не зависит от высоты глифов, и я не нашел тот кусок кода, который за это отвечает. Если сможешь найти и рассказать как контролировать высоту - буду тебе благодарен.

Авто переносы у тебя только для полноэкранных текстов, или для 3-строчных боксов тоже? Если есть для боксов и оно правильно их детектит, то тоже буду благодарен за исходник. И он окажется весьма полезным, если с размерами шрифта ничего не выгорит.

Scorpeg
29.03.2016, 01:51
Давай без этого. Я занимаюсь проектом по фану, а не чтобы кому-то что-то доказать.
Логично. А кто кому-то что-то собирался доказывать?

Насчет сжатия, если прочитаешь пост повыше, то увидишь, что именно с пробелами и был косяк. При чем, не в сжатии, а в разжатии.
Ну а если тему прочитать, то там я уже про это как бы и писал на первой странице темы. http://www.pspx.ru/forum/showpost.php?p=1092736&postcount=11 Мог бы тоже прочитать сперва :p

Ты наверное про eboot говоришь. Если есть софт, чтобы добавить/расширить секцию, то выложи куда-нибудь. Руками делать не вариант, а писать под это скрипт лень.
А я решил не расширять (хотя могу, но я не программист, так что скрипт мне писать вообще очень сложно, а в хекс-редакторе секции менять - та еще радость. хотя есть hfe, можно наверное им поменять, но я не пробовал). Я воткнул после шрифта свои доработки, игра их спокойно засасывает вместе с файлом шрифта. И вообще моя не понимать, на кой нужны расширения ебутов, когда можно тупо загрузить файл вместо этой развлекухи, воткнув загрузчик (там всего-то вроде байтов 12 + имя файла) вместо какого-нибудь сообщения компилятора. И там уже развернуться.

Что касается psp'шного init.bin, он у меня уже перенесен почти весь (кроме хронологии и песен). Не знаю пока как создать дополнительные страницы в tips'ах, но это не приоритетная задача для меня.
Я видел твой гит. Это не весь, а только нужные секции, насколько я понял с моими ограниченными знаниями.

Моя идея в том, чтобы не расставлять переносы, а уменьшить шрифт. Шириной текста управлять достаточно легко через сам файл шрифта и сделать его тоньше не составит труда. С высотой строк сложнее - интервал не зависит от высоты глифов, и я не нашел тот кусок кода, который за это отвечает. Если сможешь найти и рассказать как контролировать высоту - буду тебе благодарен.
Рассказать смогу, искать - уже нет, я всё забыл. Идешь в графический дебаггер (игра выводит буквы друг за другом) и смотришь куда записаны размеры глифа, ставишь брейкпойнт на запись в эту память и вуаля - выпадает собственно кто запихивает высоту. Но я тебе не советую менять высоты (собсна и ширину не советую). Почему? В хистори будет ад и израиль скорее всего (сужу по аду и израилю в Шарин, где рику тоже хотел как и ты уместить в существующие боксы). Я не осилил переписать так, чтобы работало - причину понял, но чтобы это пофиксить надо все буферы переписывать (где строго нужная ширина онли), а где и как это искать и можно ли - непонятно, я рыл дня три и не нарыл.

Авто переносы у тебя только для полноэкранных текстов, или для 3-строчных боксов тоже? Если есть для боксов и оно правильно их детектит, то тоже буду благодарен за исходник. И он окажется весьма полезным, если с размерами шрифта ничего не выгорит.
Для абсолютно всех текстов. Я использую движок игры :) Он сам за меня выставляет разрыв на нужном символе. Короче, в игре есть список непереносимых глифов, у меня сейчас его нет под рукой, чтобы ты поискал, но суть в том, что туда можно тупо добавить все английские буквы и он будет рвать строчку автоматически на тез символах, которые ты не добавил - именно то, что и надо, в общем-то. А вот добавление нового бокса на случай, если не влазит в три строчки - надо писать скрипт, чтобы брал ширину из шрифта и считал, влезет-не влезет и добавлял по надобности.

dreambottle
29.03.2016, 02:26
О, значит я не правильно понял насчет переносов. Думал что ты сделал как раз переносы на новый экран текстов, которые вылазят за экран/бокс. За инфу про непереносимые символы спс, не был в курсе. Когда появится время, поищу их и добавлю. Они в eboot вбиты, или в init.bin?

Еще завтра доотпишу. Отвалился интернет у провайдера, с мобильного писать трудно

riku.kh3
29.03.2016, 02:52
У меня была идея высоту у глифов не трогать, а Y-позиционирование у вывода текста в окошке найти. То есть сделать чтобы по высоте они друг на друга налезали, а по факту все смотрелось как надо и вмещалось по 5 строк в каждое окошко.

Scorpeg
29.03.2016, 09:18
О, значит я не правильно понял насчет переносов. Думал что ты сделал как раз переносы на новый экран текстов, которые вылазят за экран/бокс.
Ну вообще хотел такой сделать (там есть же символ для нового окошка), на основе собственно шрифта, но мне стало лениво делать таблицу символов-соответствий с данными шрифтов, а потом закончилась лафа и началось море работы. Так-то это написать (без таблицы) - 10 строчек кода, ничего сложного. Но рику например не нравится то, что в таком варианте не прокатывает авто-режим - то есть в авто-режиме игра время вывода символов подстраивает под длину голосовой озвучки. Когда там поделено на две части - такое естественно фейлит.

За инфу про непереносимые символы спс, не был в курсе. Когда появится время, поищу их и добавлю. Они в eboot вбиты, или в init.bin?
В ебут.

Scorpeg добавил 29.03.2016 в 09:18
У меня была идея высоту у глифов не трогать, а Y-позиционирование у вывода текста в окошке найти. То есть сделать чтобы по высоте они друг на друга налезали, а по факту все смотрелось как надо и вмещалось по 5 строк в каждое окошко.
Ну да, разницы в общем-то никакой. И находить так же - ищешь где пихает Y-координату в GE Debug. Но мне кажется оно будет ультра-мелко смотреться на оригинальном PSP. Глаза устанут их разбирать. Я в Эвер шрифт перерисовал, чтобы был более четкий(а не этот мутный ад который авторы нарендерили). http://psp4real.ru/_tr/ULJM05437_00027.jpg (ну это больше для dreambottle, ты-то видел уже).

riku.kh3
29.03.2016, 12:22
Ну да, я не об этой игре, я о Шарин думал, там 4 строчки и так вмещается. Или вот как тут, где максимум 3:
http://s019.radikal.ru/i632/1603/cd/5f03d3bd7daf.png
http://s46.radikal.ru/i111/1603/5c/5f49c68d7331.png
Но у вас тут не похоже чтобы подобное прокатило. Само окошко слишком сплющено. Вот если его увеличить, то другое дело.

Scorpeg
29.03.2016, 21:17
Ну да, я не об этой игре, я о Шарин думал, там 4 строчки и так вмещается. Или вот как тут, где максимум 3:
Но у вас тут не похоже чтобы подобное прокатило. Само окошко слишком сплющено. Вот если его увеличить, то другое дело.
Ну я фиг его знает, мне например не нравится такая толкучка на экране :) Лучше уж 3 с нормальным расстоянием между строчек, чем 3 пикселя.

riku.kh3
29.03.2016, 23:36
Но все же лучше, чем озвученные фразы резать, когда в обрезке гробовая тишина остается. Кстати, да, в последних движках 5pb на psp я пробовал свои окошки добавлять - так просто не робит. Внутритекстовыми скриптовыми командами этого не сделать, нельзя просто стереть текст и продолжить печатать. По-обычному пробовал добавлять, работало, но спустя некоторое время игра намертво висла. Оказалось что это общий порядок и то, куда аргументы других специфичных команд указывают сбивает. То есть надо вообще все основательно документировать - все существующие команды и операции движка, и с нуля скрипт пересобирать.

tinenmi
30.06.2016, 10:08
Привет, dreambottle. Я хочу сделать русский перевод Remember11 на PSP. Пока самая большая проблема в том, что они пишет русское имя не в окошечко имени, а прямо в текст. Видимо, придётся, как и десктопной версии, менять местами в шрифте русские и английский буквы. Но в ней другой формат шрифта. Я рад, что у тебя есть наработки по шрифтам. Могу ли я по ним что-то сделать?

dreambottle
05.07.2016, 02:33
tinenmi, Это случайно не ваша группа https://vk.com/remember11 ?

По технической части, это не самая большая проблема, с которой вам предстоит столкнуться. :) Со своей стороны, готов вам помочь чем смогу.

Для имен, отображаемых при прямой речи, есть словарь в файле init.bin. В команде пк-версии на тл-вики, их хакер сделал патч, чтобы не использовать словарь, а просто брать все, что идет перед кавычками в тексте. Я же решил просто переписать словарь, т.к. это намного проще. Смотрите файл text/other-psp/init.psp.txt (https://github.com/dreambottle/R11-psp-english/blob/master/text/other-psp/init.psp.txt) в моем репозитории, первые 70 строк. Их надо заменить на русские имена.