Friday, 2024-03-29
FuSa Project
[ New messages · Members · Forum rules · Search · RSS ]
  • Page 1 of 2
  • 1
  • 2
  • »
Forum » "Русский кварталЪ" » Темы актуальные для русско-говорящих » Adhoc File Transfer v0.7 (о рус-ции, смещениях и функции printf() на уровне асма)
Adhoc File Transfer v0.7
PSPFANatDate: Monday, 2009-01-26, 5:46 PM | Message # 1
Private
Group: Users
Messages: 2
Reputation: 1
Status: Offline
loading...
Andy_maN, спасибо!!! Благодаря тебе и Сиду, я перевел AdhocFileTransfer 0.7! biggrin
Однако есть и пробема, твой патчер, заменяет не только русские буквы, но и знаки меняет... sad
Проблемы выделены красным:



Message edited by PSPFANat - Monday, 2009-01-26, 7:39 PM
 
ErikPshatDate: Tuesday, 2009-01-27, 1:00 AM | Message # 2
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
PSPFANat всё правильно. В английском шрифте, где теперь буква Ы, раньше был Квадрат (В хексе обозначение DB)
Где теперь буква "Ш", на этом месте раньше был Треугольник (значение D8)

Посмотри на эти значения.
Тебе на том месте нужно поменять значение с DB на 08 и D8 на 5E хотябы.
Или сам нарисуй треугольник вместо неиспользуемого символа, например в позиции 07.


Message edited by ErikPshat - Tuesday, 2009-01-27, 1:01 AM
 
Andy_maNDate: Tuesday, 2009-01-27, 5:24 PM | Message # 3
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
PSPFANat, можешь также нарисовать свой шрифт (треугольник точно стоит нарисовать wink
-инфо о том как это сделать добавил в шапку

 
PSPFANatDate: Tuesday, 2009-01-27, 7:20 PM | Message # 4
Private
Group: Users
Messages: 2
Reputation: 1
Status: Offline
loading...
Так, я запутался wacko То есть, если заменив буквы -Ш-,-Ы-, на нужные знаки, то я лишусь этих двух букв?) Мне они нужны)))
 
SeeDDate: Wednesday, 2009-01-28, 0:05 AM | Message # 5
Sergeant
Group: Users
Messages: 33
Reputation: 0
Status: Offline
loading...
у тебя же есть еще символы 00 - 0F. их перерисуй и хексом вставь, заменяя байты DC и D9 на, скажем, 09 и 0С
 
ErikPshatDate: Wednesday, 2009-01-28, 7:03 AM | Message # 6
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Я глянул этот EBOOT.PBP от AdhocFileTransfer 0.7

Там не всё так просто. Как раз на месте этих символов идёт не текстовая информация, а на то место подставляется необходимый символ, который берётся из другого места. Вероятно напрямую из палитры шрифтов.
Там идут такие строчки:

  • %c = Send files
  • %c = Receive files
  • %c = Disconnect
  • %c = File Menu
Если бы на месте "%c" в поле кода стояло бы "DB" или "D8", то было бы проще поменять код на перерисованный знак.

Здесь можно пойти хитрым путём. На месте "Ы" и "Ш" оставить "Треугольник" и "Квадрат", даже подрисовав их покрасивее.
А эти буквы "Ы" и "Ш" перенести в первую строку с неиспользуемыми символами. А потом при переводе, где эти буквы встречаются, писать вместо них в поле кода их новую позицию. Тогда текстовая информация будет браться оттуда, куда вы ей указали.

 
lupusDate: Wednesday, 2009-01-28, 12:03 PM | Message # 7
Major
Group: Users
Messages: 87
Reputation: 1
Status: Offline
loading...
как раз хотел предложить, что и эрик, но прочитав его пост погял, что поздно. имхо, в данном случае это оптимальных подход.
 
Andy_maNDate: Wednesday, 2009-01-28, 6:36 PM | Message # 8
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
вот вам в помощь
так сказать пища для размышлений smile
(все смещения относительные) для абсолютных надо прибавить 38B3 (справедливо для оригинального эдхок файл трансфера 0.7)

219 (DB)
0x00010A44 (+38B3 = 142F7) и все т.д.
0x0000B460
0x0000B1A0
0x0000A828
0x00009E20
0x000097E8
0x000039B4
0x000035FC
0x000035C0

216 (D8)
0x000035C8
0x00003604
0x000039BC
0x000097E4
0x00009E1C
0x0000A824
0x0000B1A8
0x0000B468

 
ErikPshatDate: Friday, 2009-01-30, 9:14 AM | Message # 9
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Andy_maN, расскажи, как узнать абсолютные смещения относительно относительных? Я чё-та не въехал, есть смещение %c, предполагаю, что в нём идёт перекрёстная ссылка на абсолютное смещение, но в данных не вижу.

Я вижу в 142F7 заветную DB (отображение квадрата). В "Data Inspector" вижу в uint8 - 219 (позиция символа в десятичном виде). Ну это любая DB из 257-ти штук в этом файле имеет такой признак ))).


Message edited by ErikPshat - Friday, 2009-01-30, 9:31 AM
 
Andy_maNDate: Saturday, 2009-01-31, 10:34 PM | Message # 10
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (ErikPshat)
Andy_maN, расскажи, как узнать абсолютные смещения относительно относительных? Я чё-та не въехал, есть смещение %c, предполагаю, что в нём идёт перекрёстная ссылка на абсолютное смещение, но в данных не вижу.

biggrin нет нет нет
Я только что понял, что побудило тебя задать такой вопрос...
(видимо из за моей лени написать сразу готовые смещения - сложилось неверное впечатление о сути происходящего)
Ну чтож пристегните ремни, сейчас попробую ввести в курс дела.

Рассмотрим функцию печати текста int printf ( const char * format, ... );
Допустим нам надо напечатать "X - exit | O - cancel"
Конечно это можно сделать многими способами, но мы используем тот что использовал автор трансфера
Для этого в нашем исходном коде мы определим константы кнопок:
#define PSP_CROSS 'X'
#define PSP_CIRCLE 'O'

В программе мы будем вызывать printf след. образом:
printf("%с - exit | %c - cancel",PSP_CROSS,PSP_CIRCLE)

Теперь самое время посмотреть что происходит во время компиляции:
Как я уже писал в соседней теме (про цвета рекавери) аргумент передаются через регистры (обычно $a0-$a3, если больше 4х то + $t0-$t9)
Скомпилировав данный код мы получим вот что:
#вначале пакуются все параметры
addui $a0, $a0, XXXX
#Где ХХХХ - это адресс самой строки "%с - exit | %c - cancel"
li $a1, 0x58
#Во второй параметр помещается значение PSP_CROSS = 'X' = 0x58
li $a2, 0x4f
#В третий параметр помещается значение PSP_CIRCLE = 'O' = 0x4F
jal printf
#Ну и в конце когда все подготовлено к запуску, вызываем саму функцию отрисовки

Вот так выглядит процесс если мы используем константы.

Quote (ErikPshat)
Я вижу в 142F7 заветную DB (отображение квадрата). В "Data Inspector" вижу в uint8 - 219 (позиция символа в десятичном виде). Ну это любая DB из 257-ти штук в этом файле имеет такой признак ))).

Попробую объяснить как я отыскал эти смещения, зная о вышеописанном механизме
Во первых знакомтесь [url=http://ps2dev.org/psp/Tools/PRXTool_1.1_(WIN32)/PRXTool_1.1]PRXTool[/url] самый неотъемлимый инструмент smile
Он поможет нам диссамблировать файлы (работает с ELF файлами, т.е. PBP для начала нада разобрать)

Кратко говоря: я разобрал трансфер и посмотрел у каких функций первым параметром передаются адресса строк с
сохранил смещения команд где загружаются остальные параметры (DB D8)
подсчитал разницу в смещениях
и соб-но запостил выше все что нужно

 
ErikPshatDate: Monday, 2009-02-02, 10:42 AM | Message # 11
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Andy_maN, спасибо за объяснение, вроде всё понятно. Теперь надо это как-то обмозговать ))).
 
ErikPshat0823Date: Tuesday, 2009-08-11, 11:59 AM | Message # 12
Private
Group: Users
Messages: 1
Reputation: 0
Status: Offline
loading...
Quote (Andy_maN)
вот вам в помощь так сказать пища для размышлений (все смещения относительные) для абсолютных надо прибавить 38B3 (справедливо для оригинального эдхок файл трансфера 0.7) 219 (DB) 0x00010A44 (+38B3 = 142F7) и все т.д. 0x0000B460 0x0000B1A0 0x0000A828 0x00009E20 0x000097E8 0x000039B4 0x000035FC 0x000035C0 216 (D8) 0x000035C8 0x00003604 0x000039BC 0x000097E4 0x00009E1C 0x0000A824 0x0000B1A8 0x0000B468

Привет!
Так как PSPFANat забросил перевод Adhoc File Transfer v0.7, то я его всё-таки перевёл.
Я воспользовался твоей подсказкой и дизассемблил через PRX TOOL. В общем, все относительные смещения ты указал верно, но почему ты решил прибавить именно 38B3, я так и не понял и не нашел по таким прибавкам ничего. Тогда я просто прибавил стандартный размер заголовка ELF-файла равный 60 и это оказалось верным.

Ещё проблема возникла, где в прогрессбаре при передаче или копировании показывается прогресс квадратиками. После русификации я заметил, что вместо квадратиков, там прогрессирует буква "И". Оказывается в прежнем шрифте на том месте, где "И", был нарисован такой неполный квадратик. Я не стал париться и снова искать дизасмом, а просто перенёс заглавную букву "И" в другое место (благо в переводе она повторялась всего 2 раза). На то место вернул квадратик и чуть подправил, т.к. даже в оригинале он выползает ниже границы строки. Короче особых проблем в русификации не было. Всё легко и просто ))).

Adhoc File Transfer v0.7

Русская версия





Attachments: 2093108.jpg (44.8 Kb) · AdhocFileTransf.zip (522.4 Kb) · 1417438.png (4.0 Kb) · 4622230.png (5.0 Kb) · 5952160.png (3.3 Kb)


Message edited by ErikPshat0823 - Tuesday, 2009-08-11, 12:12 PM
 
Andy_maNDate: Tuesday, 2009-08-11, 11:23 PM | Message # 13
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Что можно сказать - отлично! smile
По поводу 38B3 - справедливо для самого оригинального EBOOT.PBP - т.е. заголовок ELF + заголовок PBP (соответсвенно с иконкой и текстами)\
Но так как ты, я так понимаю, предварительно избавился от шелухи (unpack-pbp) то ес-но у тебя был ЭЛФ файл с одним лишь стандартным заголовком 0х60

 
ErikPshatDate: Wednesday, 2009-08-12, 5:37 AM | Message # 14
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Балин, вспомнил свой логин, а то при авторизации запрашивает е-mail )). С картинками долго парился не мог никак вставить, пишет, что неподдерживаемый URL or IMG и не даёт сохранить сообщение.

Andy_maN, спасибо за похвалу.

Благо я воспользовался PSPLINK и через него тестировал правку.
[list=1]

  • Извлёк из EBOOT.PBP файл DATA.PSP и переименовал как "1" (и без расширения для удобства ввода команд).
  • Открыл в HxD и до конца даже не закрывал его, а просто через PSPLINK выгружал программу по ALT+R и загружал стрелкой вверх на клаве команду "./1"
  • Шрифт подредактировал в RomArtist и вставлял вручную (мне так удобнее).
  • Ну и добавил свою картинку PIC1.PNG (480x272) и обратно собрал EBOOT.PBP с помощью "PBP Unpacker 0.94".

    Вот небольшие тонкости, мож новичкам пригодится.

    P.S. Сама ссылка на программу сверху во второй ссылке: http://foosa.do.am/_fr/2/AdhocFileTransf.zip

  •  
    Andy_maNDate: Friday, 2009-08-14, 2:24 PM | Message # 15
    General - lieutenant
    Group: Administrators
    Messages: 427
    Reputation: 26
    Status: Offline
    loading...
    Слегка модифицированную версию можно скачать здесь
    (PIC1 - убран, ICON0 заменён на оригинальный, в подпись к программе добавлено авторство ErikPshat)

     
    Forum » "Русский кварталЪ" » Темы актуальные для русско-говорящих » Adhoc File Transfer v0.7 (о рус-ции, смещениях и функции printf() на уровне асма)
    • Page 1 of 2
    • 1
    • 2
    • »
    Search:

    Copyright MyCorp © 2024
    Create a free website with uCoz