Printable Version of Topic
Click here to view this topic in its original format
Forums > Аудио и видеотехника > Модифицируем прошивку для DVD плейера (MTK 1389), инструкция от САХ


Posted by: ivani4 on 15-12-2005, 18:17
2cax
А не смог бы ты написать свою инструкцию from_A_to_Z на русском?

2ivani4
Я-то могу, но что-то мне подсказывает, что потом ты попросишь и ассемблер на русский перевести Честно говоря, 90% инструкции состоит из фраз "найди такую-то последовательность байтов и замени её на такую-то", и если ты не знаешь английский даже на таком базисном уровне, то как ты сможешь использовать все упомянутые в инструкции программы - ведь у них интерфейс тоже на английском ?

2cax
Спасибо что не ответил категорическим отказом.Дело в том что никак не могу я это дело начать.Не получается.Никогда не занимался подобными вещами и к программированию никакого отношения не имею.Очень много не понятного.Так я и подумал,что если бы по русски ,так может удалось бы это дело с места сдвинуть.winhex есть у меня на русском.Так что если бы ты смог ,то я был бы рад

ivani4, в этой теме это будет офтопик.

Открой новую тему, озаглавленную, например, "Модифицируем прошивку для DVD плейера такого-то"
Убедись, что у тебя есть файл с прошивкой для твоего плейера и упомянутые в инструкции программы и другие документации; найди автоматический словарь, который даст тебе подстрочный перевод инструкции на русский, посмотри, стал ли ты понимать больше.

Если боишься испортить плейер в процессе проверок изменённых прошивок - спаяй себе специальный кабель для восстановления и научись им пользоваться. Схему я дам.

Кстати, hex-редактор я использую XVI32, т.к. он позволяет использовать т.н. joker char, т.е. подстановку любого байта при поиске.

После этого, если у меня будет время и настроение, мы в той новой теме откроем "академию". Чем смогу-помогу

Posted by: cax on 15-12-2005, 18:28
Итак, есть ли у тебя файл прошивки от плейера, и как он называется ?

Posted by: ivani4 on 15-12-2005, 23:18
cax
Файл прошивки у меня есть.Хотел бы начать с отключения значка зум.В твоей инструкции написано:
3BE42: FF => 08
3BE4D: FF => 08
Я проверил и увидел что в прошивке от Hyundai 3899(верхняя в таблице на твоём сайте)эта процедура была произведена только по адресу 3BE42.А на 3BE4D фигурирует А5 до и после изменений .Этот момент мне как то не понятен.
Пытался найти в своей прошивке нужный адрес.Безрезультатно.
Не понимаю по каким признакам нужно искать.А если знать адрес ,то как знать какое изменение нужно там сделать? Пытался провести аналогию с твоими работами в АРЕХ-не помогло.
R4R5-это я вообще не понял где это и как оно может помочь.
А в MTK ReMaker нужная строка у меня 0x0200.Это я нашёл,но пользы от этого я не вижу.

Posted by: cax on 17-12-2005, 19:15
Здесь инструкция действительно недостаточно подробная и требует знаний ассемблера. Я отвечу сюда поподробнее - позже.

Кстати, я нигде не писал, что оффсеты совпадают - они не совпадают нигде (кроме одного места). Нужна hex-последовательность.

Posted by: moroz on 17-12-2005, 21:26
ivani4
По-моему в инструкции саха вкралась опечатка: второй адрес не 3BE4D, а 3BE5D. Чтобы в этом убедиться, необходимо работать над файлом не в обычном НЕХ редакторе, а в дизассемблере (например IDA). Тогда видно, что это два очень похожих куска. Кстати, работая таким образом тебе будет гораздо легче обнаружить аналогичные куски в своей прошивке.
P.S. Почему-то в IDA нет чипа 8032, я пользовался 8051.

Posted by: ivani4 on 17-12-2005, 23:28
moroz
QUOTE:
По-моему в инструкции саха вкралась опечатка: второй адрес не 3BE4D, а 3BE5D
Полностью согласен.В WINHEX есть возможность сравнивать файлы.Там этот момент чётко отслеживается.Не писал об этом потому как хотел услышать это от самого маэстро,но он почему то на это не отреагировал.
А идой я пользоватся пока не умею да и ассемблер не знаю.
А за подсказку и участие спасибо.Попробую поработать с идой.

Posted by: cax on 18-12-2005, 00:14
Значит так.
Цитирую сам себя и дополняю заодно.

Сперва открываем прошивку в MTK ReMaker и в
"Data Part->OSD->OSD Languages2->Language 1[00]"
ищем номер текстового сообщения, которое появляется при нажатии на zoom.

Допустим, это 0x207. Разбивая на байты, получаем 02 и 07.

Если нам повезёт, то эти 2 байта грузятся в регистры 4 и 5 примерно так:
7D 07 mov R5, #7
7C 02 mov R4, #2

и тогда мы сразу найдём нужное место при поиске такой цепочки:

90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF 7D 07 7C 02

где хх - любой байт (в XVI32 это называется "joker char", или "wildcard")

Далее меняем отмеченный выше FF на 08 и дело сделано.

Примечание 1: менять в прошивке надо 2 раза - один раз для режима воспроизведения DivX, второй - для режима DVD.

Примечание 2: после каждого изменения нужно переоткрыть прошивку в MTK Remaker, на вопрос "Поправить контрольную сумму ?" ответить "Да", затем сохранить прошивку.

=======================================
Но если не повезёт, и регистры грузятся иначе, цепочка не найдётся.
Причины: один из байтов - ноль, и получается не загрузкой нуля в регистр, а командой обнуления регистра; или байты одинаковые и грузятся копированием регистра (как в случае, описанном для HU3899)

Тогда над искать цепочку покороче:
90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF

Она найдётся много раз.
Какой из них нам подходит - узнаем уже в дизассемблере...

Posted by: ivani4 on 18-12-2005, 00:17
спасибо

Posted by: ivani4 on 18-12-2005, 00:45
QUOTE:
Если нам повезёт, то эти 2 байта грузятся в регистры 4 и 5 примерно так:
7D 07 mov R5, #7
7C 02 mov R4, #2
А это где, как и чем смотреть?

Posted by: cax on 18-12-2005, 10:24
QUOTE (ivani4 @ 17-12-2005, 21:45):
QUOTE:
Если нам повезёт, то эти 2 байта грузятся в регистры 4 и 5 примерно так:
7D 07 mov R5, #7
7C 02 mov R4, #2
А это где, как и чем смотреть?
IDA + комплект скриптов из раздела "Files" группы mt13x9 на yahoo.
А разве длинная цепочка не нашлась ? Если да, то IDA не понадобится.

Posted by: ivani4 on 18-12-2005, 10:32
QUOTE:
А разве длинная цепочка не нашлась ?
а как и чем её искать?

Posted by: cax on 18-12-2005, 10:54
QUOTE (moroz @ 17-12-2005, 18:26):
По-моему в инструкции саха вкралась опечатка: второй адрес не 3BE4D, а 3BE5D.
Спасибо, исправил.
Заодно вставил описание правки зума, аналогичное опубликованному здесь.

Posted by: ivani4 on 18-12-2005, 11:05
В xvi32 есть функция поиска.Что бы найти длинную цепочку нужно,наверное,полностью вписать её в строку поиска.А как быть с теми местами где может быть любой файл(хх)?как записать это в строку поиска?или это не так ищут?

Posted by: cax on 18-12-2005, 11:11
QUOTE (ivani4 @ 18-12-2005, 07:32):
QUOTE:
А разве длинная цепочка не нашлась ?
а как и чем её искать?
ivani4,

Я ищу hex-редактором XVI32.
Подойдёт любой, поддерживающий, как я уже писал выше, так называемый "wildcard"-символ, или "джокер"; говоря по-русски - поддерживающий подстановку любого байта в местах, которые я пометил, как "xx".

Теперь объясняю на пальцах:

допустим, надо найти все последовательности такого вида:
первый байт - 1F, третий - C2, а что посредине нам не важно, т.е. любой.
Мы можем найти такие тройки байтов:

1F 00 C2
1F 24 C2
1F C2 C2
1F E4 C2
и т.д.

Я это записываю как "1F xx C2", где "xx" - wildcard.

Если ты освоишь поиск с подстановками - дальнейшее для тебя будет просто.
Дерзай.

В XVI32 ты можешь задать joker char,например, "ЕЕ", и в дальнейшем использовать "ЕЕ" вместо моих "хх".

Posted by: ivani4 on 18-12-2005, 13:07
cax
:handup:
Теперь всё понятно.Сходу всё нашёл и переправил.Работает как положено,но с диском двд синий квадрат не убирается.Я где то ошибся или для этого требуется дополнительное действие?
И попутно ещё одна проблема возникла.Что бы утвердится в успехе решил проделать данную процедуру ещё с двумя двд от разных производителей.Один прошёл на ура,а во втором значок зума убрался частично.Т.е. только какая то часть от него пропадает через несколько секунд.?????????????
В этом двд 0x014F .И если я правильно понял,то:
90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF 7D 4F 7C 01

Posted by: cax on 18-12-2005, 17:54
QUOTE (ivani4 @ 18-12-2005, 10:07):
cax
значок зума убрался частично.Т.е. только какая то его часть пропадает от него через несколько секунд.?????????????

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

По поводу режимов DivX и DVD: как я писал выше, цепочка байтов встречается в прошивке дважды, и замену FF на 08, соответственно, надо делать 2 раза.

----------------------------------------

Есть, правда, некрасивое альтернативное решение, при котором иконка зума вообще не появится никогда - вытащить из прошивки этот самый Language 1[00] и отредактировать его - затереть соответствующую строчку программой MTK Lang Editor, после чего вставить обратно в прошивку.

Зато это работает в 100% случаев :-)

Posted by: ivani4 on 18-12-2005, 18:17
QUOTE:
с диском двд синий квадрат не убирается
а с этим что делать?

Posted by: cax on 18-12-2005, 23:04
QUOTE (ivani4 @ 18-12-2005, 15:17):
QUOTE:
с диском двд синий квадрат не убирается
а с этим что делать?
Я написал всё, что знаю по этому вопросу, вряд ли скажу ещё что-то новое.
А что за синий квадрат - вообще не понимаю, никогда не видел.

Posted by: ivani4 on 19-12-2005, 09:07
cax
Знакомимся с синим квадратом(прямоугольником).Присутствует при активизации функции зум в режиме воспроизведения дисков двд в плеерах на МТК 1379 и 1389.
Иконку зума я удалил по твоему рецепту в двух местах.всё отлично работает.но остался этот квадрат.Странно,что ты с ним не знаком.Я видел его во многих аппаратах.
Какие будут мысли по поэтому поводу?

Posted by: cax on 19-12-2005, 10:47
Первый раз вижу - наверное потому, что у меня почти нет DVD-дисков. Мыслей никаких.

Проехали. Давай дальше патчить, если ещё есть на то желание.

Posted by: ivani4 on 19-12-2005, 11:17
Продолжаем.Хочу сделать две вещи:
1. Убрать отображение времени в DIVX
2. Переключение font page в set up
Что проще?Потребуется ли использование IDA?
А синий квадрат надо всё же убрать.

Posted by: cax on 19-12-2005, 12:11
Советоваться про синий квадрат не буду, желания и времени у меня на это нет, и вряд ли будет.

Начни с того, что попроще - "Убрать отображение времени".

Вот фрагмент из моей инструкции:

a) Я искал цепочку 90 xx yy E0 FF 13 13 13 54 07.
Она нашлась 56 раз, из них 37 раз xxyy = FC4A, 14 раз xxyy=FC60 и 5 раз xxyy=FD0C.

Будем считать, что нужный нам адрес - самый часто встречающийся: xxyy = FC4A.

б) ищем подпрограмму SUB_SetStyle по цепочке EE F0 A3 EF F0 7F 0E 12

Она заканчивается цепочкой "12 mm nn 22".
Здесь мы и будем менять, что именно - смотри ниже.

в) В этом же банке памяти ищем где начинается незанятое место - забитое байтами FF, которое продолжается до конца банка.

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

У меня это был банк 1 (т.е адреса вида 1xxxx) и свободная зона была
1F2CF-1FFFF. Я решил использовать место с адреса 1F300.
Запомним здесь, что pp qq = F3 00

Теперь за работу:

1) в месте, указанном в (б) как "12 mm nn"
вписываем взамен 02 pp qq

2) по адресу 1ppqq : 90 xx yy E0 54 C7 F0 02 mm nn
(в моём случае я по адресу 1F300 вписал 90 FC 4A E0 54 C7 F0 02 05 B3)

Как всегда, не забываем поправить контрольную сумму в MTK ReMaker.

Posted by: ivani4 on 19-12-2005, 14:32
С пунктом а справился легко.
В пункте б вознили трудности.Место такое в прошивке я нашёл(EE F0 A3 EF F0 7F 0E 12) а вот что такое SUB_SetStyle я не понимаю.Не знаю что с этим делать.
В пункте в я не понял что ты называешь банком памяти.
Единственное необычное что я вижу,не далеко от найденого места(EE F0 A3 EF F0 7F 0E 12), это повторяющуюся десять раз комбинацию 00.

Posted by: cax on 19-12-2005, 15:14
А не без разницы ли тебе почему я эту подпрограмму называю SUB_SetStyle ? Называется и называется. В дальнейшем когда я скажу "найди SUB_SetStyle" ты уже будешь знать, как искал её ранее и где нашёл.

Твоя задача - найти "EE F0 A3 EF F0 7F 0E 12", и с этого места найти ближайшее "12 mm nn 22". Если тебя интересуют подробности, то "22" - это код команды возврата из подпрограммы, поэтому здесь она и заканчивается.

Про банк памяти - читай внимательнее: "банк 1 (т.е адреса вида 1xxxx)". Если ты нашёл SUB_SetStyle по адресу "2хххх", то мы в банке 2 и так далее.

Я надеюсь объяснять что такое "адрес" и "байт" не надо ?

Posted by: ivani4 on 19-12-2005, 19:49
cax
Вроде бы всё понятно.Предполагаю,что сделал всё как нужно,но почему то не срабатывает.Несколько раз проверял.
Продолжать искать ошибку или возможны варианты?

Posted by: cax on 20-12-2005, 00:12
Покажи что сделал, по шагам, с указанием найденных адресов и значений.

Posted by: ivani4 on 20-12-2005, 00:42
ищем 90 xx yy E0 FF 13 13 13 54 07
результат:
FC 63 - 38 раз
FC 7A - 14 раз
FD 14 - 5 раз
Выбираем FC 63
SUB_SetStyle начинается с адреса 1D77C
ближайшая комбинация 12 mm nn 22 начинается с адреса 1D881 и имеет вид:
12 A1 82 22
свободная зона(FF FF FF.....) начинается с адреса 1F67F
Решил использовать место 1F700
Произведенные изменения:
Вместо 12 A1 82 22 внёс 02 F7 00 22
По адресу 1F700 вписал 90 FC 63 E0 54 C7 F0 02 A1 82
MTK ReMaker использовал поэтапно для поправки суммы

Posted by: cax on 20-12-2005, 13:18
>SUB_SetStyle начинается с адреса 1D77C
>ближайшая комбинация 12 mm nn 22 начинается с адреса 1D881

Подозрительным кажется только это, всё остальное сделано на ура.
В известных мне прошивках "12 mm nn 22" находится намного ближе.

Давай так: покажи мне все байты с места, где ты нашёл "EE F0 A3 EF F0 7F 0E 12", по место, где ты нашёл "12 mm nn 22".

Posted by: ivani4 on 20-12-2005, 13:46
:clap1: :clap1: :clap1: :handup: :clap1: :clap1: :clap1:
Сумел сделать это в другом двд.
А вот как показать тебе файлы от этого двд я не знаю.
Решил сфотографировать.Достаточно?

Posted by: cax on 20-12-2005, 16:31
Я разобрался по фотографии, но проще было сделать так:
отмечаешь Shift+стрелками нужные байты и загоняешь в буфер обмена
Edit->Clipboard->Copy as hex string (или сокращённо CTRL+H)
Затем обычное CTRL+V вставит все отмеченные байты в текстовом виде.

Мне кажется, что эта прошивка устроена слегка иначе, чем другие.
Попробуй по адресу 1D7D0 заменить 02 06 4F на 02 F7 00
и соответственно по адресу 1F700 вписать 90 FC 63 E0 54 C7 F0 02 06 4F.
(разумеется, отмени изменения по адресу 1D881, сделанные ранее).

Если это сработает, допишем в инструкцию фразу:
если на расстоянии в 0x54 байта от первой цепочки вместо "12 mm nn 22" находится "02 mm nn", то это и есть то, что нам надо.

Posted by: ivani4 on 20-12-2005, 17:24
:clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:
Маэстро!
Получилось!
Кажется пора ехать в Модиин с бутылкой.
:40%:

Posted by: cax on 20-12-2005, 17:56
QUOTE (ivani4 @ 20-12-2005, 14:24):
:clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:
Маэстро!
Получилось!
Кажется пора ехать в Модиин с бутылкой.
:40%:
Слушай, а сколько у тебя плейеров, и каких ?
И самое интересное, откуда у тебя столько времени, чтобы этим заниматься ?

У меня такое ощущение, что ты работаешь на импортёра плейеров, и тебя послали выведывать профессиональные секреты :wink:

Posted by: ivani4 on 20-12-2005, 18:44
Эксперимент проводился одновременно на двух плеерах для того что бы исключить элемент случайности.
Свободное время это понятие относительное,просто я азартный.Тема эта меня очень привлекает.А сотрудничество с тобой очень интересно.
Будем продолжать?

Posted by: cax on 20-12-2005, 20:31
QUOTE (ivani4 @ 20-12-2005, 15:44):
Будем продолжать?
Давай продолжим, хотя ты уже, наверное, убедился, что инструкция не так сложна и почти всегда права (кроме последнего случая).

По поводу динамического переключения языка субтитров: это достаточно сложная вещь, и именно поэтому её нет в руководстве. Я пока не придумал как её описать в общем случае - ибо для каждой прошивки это было немного по другому, так что сейчас я не смогу тебе помочь в этом.

Что у нас дальше на повестке дня ?

Кстати, ты мне так и не сказал, на каких плейерах ты проверяешь.

Posted by: ivani4 on 20-12-2005, 22:46
Возможно сейчас инструкция уже выглядит проще.Но для меня это всё равно несколько сложно.Без твоего перевода и подсказок я не смог бы сдвинуться с места.
Файлы которые я тебе послал на фото взяты из прошивки от моего двд.
Этот двд почти нигде не обсуждается.Народные умельцы в него не вкладываются.Прошивок на него нет.
Второй двд не с Израильского рынка,имени не имеет.Подходит под категорию ивуй иши.Аналога ему найти не удалось.Прошивок соответственно нет.
Трудно сказать,что будет следующим номером в нашей программе.Интересующая меня тема закрыта,а всё остальное вроде в порядке.
Ограничение 60 снято,длина названий файлов в норме.Руссификация и ивритоизация не очень актуально.Есть что то ещё?????
И ещё мне очень сильно мешает синий квадрат.Я думал что он сидит где то в OSD.Для быстроты дела полностью стёр этот раздел,но квадрат всё равно остался.Как бы узнать где он сидит и как его стереть что бы от него не осталось и следа?!!!?
А инструкция твоя-вот если бы её всё- таки по русски.И чего ты её по английски пишешь?

Posted by: cax on 21-12-2005, 10:07
Ну не насилуй меня, не буду я искать синий квадрат.

А по поводу русских букв, очень важно последним ли идёт шрифт для имён файлов (у него только 128 символов и он занимает 1 номер вместо двух в MTK Remaker). Если да - остальное не очень сложно, если нет - придётся повозиться. Проверь это.

Posted by: ivani4 on 21-12-2005, 12:52

Имеем:
больше 128-ми
занимает два номера
думаю что не последний.нужно проверить.
Но я не понял какой вариант легче.Допустим что есть:
128 символов
занимает один номер
находится последним в списке фонтов
Какой вариант легче для переделки?


Posted by: ivani4 on 21-12-2005, 12:54
QUOTE:
Ограничение 60 снято,длина названий файлов в норме.Руссификация и ивритоизация не очень актуально.Есть что то ещё?????
Маэстро,вы не ответили на этот вопрос.

Posted by: cax on 21-12-2005, 14:27
QUOTE (ivani4 @ 21-12-2005, 09:54):
QUOTE:
Ограничение 60 снято,длина названий файлов в норме.Руссификация и ивритоизация не очень актуально.Есть что то ещё?????
Маэстро,вы не ответили на этот вопрос.
А что там отвечать - в инструкции всё есть по пунктам: исправление разных проблем с субтитрами (пропадание кратковременных субтитров, непоказ субтитров для файлов с именем длиннее 42 символа, отображение файла субтитров в списке),
показ длинных имён файлов (плюс отключение предпросмотра картинок и обрезалка по правому краю), исправление пропадающего слайдера громкости и других сообщений при показе субтитров.

Остальное связано с показом русских/ивритских букв в именах файлов.

Или я настолько плохо пишу по-английски, что без пересказа ничего не понять ?

Posted by: cax on 21-12-2005, 14:28
QUOTE (ivani4 @ 21-12-2005, 09:52):
Допустим что есть:
128 символов
занимает один номер
находится последним в списке фонтов
Вот этот самый и легче.

Posted by: ivani4 on 21-12-2005, 15:34
QUOTE:
обрезалка по правому краю

Обрезалка длиного имени по правому краю при просмотре JPEG?
Если правильно понял,то хочу.

А по английски ты хорошо пишешь,красиво,да вот только я читать не умею.

Posted by: cax on 21-12-2005, 15:45
QUOTE (ivani4 @ 21-12-2005, 12:34):
QUOTE:
обрезалка по правому краю

Обрезалка длиного имени по правому краю при просмотре JPEG?
Если правильно понял,то хочу.

А по английски ты хорошо пишешь,красиво,да вот только я читать не умею.
неправильно понял. Речь об обрезании хвостов длинных имён файлов, вылезающих за скроллер.

Posted by: ivani4 on 21-12-2005, 15:52
длинное имя заслоняет фотографию.
Т.е. нужно что бы при просмотре фото показывалось короткое имя и не налезало на фото
Можно?

Posted by: cax on 21-12-2005, 16:58
QUOTE (ivani4 @ 21-12-2005, 12:52):
длинное имя заслоняет фотографию.
Т.е. нужно что бы при просмотре фото показывалось короткое имя и не налезало на фото
Можно?
Ты это и так имеешь. Я же наоборот, отключаю предпросмотр фотографии ВООБЩЕ.

Posted by: ivani4 on 21-12-2005, 17:52
Уфффф!!!!!
Чем ближе к вечеру ,тем тяжелей дышать!!!!!!!!!!!!!
Теперь понял.
Интересует отключение предосмотра

Posted by: cax on 21-12-2005, 18:15
QUOTE (ivani4 @ 21-12-2005, 14:52):
Уфффф!!!!!
Чем ближе к вечеру ,тем тяжелей дышать!!!!!!!!!!!!!
Теперь понял.
Интересует отключение предосмотра
Давай посмотрим, насколько ты плохо знаешь английский.

5) Disable image preview (so it won't mess with filenames by appearing under them in filebrowser)

Search the following sequence: EF 54 F8 44 01 F0 and replace 01 => 00 to turn off JPEG Preview. This string should be replaced 2 times.

Posted by: ivani4 on 21-12-2005, 18:55
:handup: :clap1: :clap1: :handup: :handup: :clap1: :clap1: :handup:
Маэстро!
Это было лёгкое задание.
А дышать,кстати,стало легче!!!!!!!!!!!!!!!!!
;) ;) ;) ;) ;)

Posted by: ivani4 on 22-12-2005, 08:22
Маэстро!
А если взять такой вариант
128 символов
занимает один номер
находится последним в списке фонтов

и сделать русский/иврит в названиях файлов,то тогда после переделки вставив диск на котором есть два файла(один рус,другой ивр) неужели я увижу оба этих имени правильно?

Posted by: cax on 22-12-2005, 09:38
QUOTE (ivani4 @ 22-12-2005, 05:22):
Маэстро!
...
два файла(один рус,другой ивр) неужели я увижу оба этих имени правильно?
Слющай, дарагой, я на гитаре плёха играть, а на пианине и таво хуже, да ? Какой такой маестро-шмаестро ?

Увидишь и русский и иврит, но иврит - наизнанку, т.е. слева направо.
Что он сейчас показывает вместо русского - подчерки "_" ?

Posted by: ivani4 on 22-12-2005, 10:23
Мы ведь открыли академию.Ты учитель а я ученик.Так я и подумал,что маэстро звучит красивее.Это я так в плане уважения.

У SICKBOY иврит тоже наоборот или он это не делает?

А у меня вместо русского не подчерки.
Например вместо мадагаскар.avi он пишет <04030A-0@.avi
А на иврите вообще ничего не пишет.Только расширение(.avi).Вместо имени пустота.

Posted by: cax on 22-12-2005, 12:08
QUOTE (ivani4 @ 22-12-2005, 07:23):
У SICKBOY иврит тоже наоборот или он это не делает?
Насколько мне известно, русский с ивритом в именах файлов до меня не делали, но это не в плане зазнайства, а чтобы внимание ученика не рассеивалось :&#041;

Если вместо русского не подчерки, а каша-малаша из цифр и букв - это ещё лучше, меньше работы будет.

Значится так: Если ты ошибёшься - плейер придётся восстанавливать или выкинуть
Я предупредил.
Дело в том, что если ты напортачишь что-то с именами файлов, то ты не сможешь даже поставить другую прошивку, ибо обновлялка просто не найдёт нужный файл на диске. Я так уже налетел один раз, но у меня, слава богу, есть кабель для восстановления.

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

1) вынимаем "Code Part->RISC->ARM Codes" (на вопрос "Unpack" - соглашаемся)
Далее всё делаем в вытащенном файле ARM.

2) ищем "41 18 10 39 C9 7B" (должен найтись 2 раза !)
и запоминаем адреса, где находится каждый "10 39 C9 7B"
(позже мы будем менять каждый "10 39 C9 7B" на другие 4 байта).

3) ищем т.н. "сообщения С++ об ошибках"
Искать нужно ТЕКСТОМ, и ты найдёшь примерно такие фразы:

Interrupt received
Illegal address
Termination request
C++ library exception

Найди адрес, где начинаются эти текстовые сообщения, запомни его, и
впиши туда подпрограмму перевода букв:

10 39 01 B4 88 7B 04 28 C8 7B 07 D0 88 7B 05 28 C8 7B 0E D0 0E E0 00 00 00 00 00 00 01 28 01 D1 A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0 00 00 50 38 F9 28 00 D9 F5 38 01 1C 01 BC 70 47

4) из любой прошивки с моего сайта (например, Hyundai) вытащи тот шрифт, где смешаны русские и ивритские буквы (не тот, где где-то 300 с чем-то букв, а тот, в котором 256 символов) и замени им тот самый последний шрифт со 128 символами.

5) Скачай программу BCalc.exe с раздела файлов группы mt13x9 на yahoo

Напиши все найденные тобой адреса и жди дальнейших указаний.

Posted by: ivani4 on 22-12-2005, 12:51
QUOTE:
Скачай программу BCalc.exe с раздела файлов группы mt13x9 на yahoo
А этот момент нельзя по другому.Там регистрироваться надо.Я как то пытался ,но у меня не получилось.

Posted by: ivani4 on 22-12-2005, 12:54
QUOTE:
где смешаны русские и ивритские буквы
это где иврит вместо больших английских букв?

Posted by: ivani4 on 22-12-2005, 12:58
QUOTE:
Насколько мне известно, русский с ивритом в именах файлов до меня не делали
мог ли SICKBOY сделать только иврит,но нормальный не перевёрнутый?

Posted by: ivani4 on 22-12-2005, 14:22
:wall:

Posted by: ivani4 on 22-12-2005, 14:41
Вытащил ARM Codes.
Получил MTK (ARM Codes).mzh
Открываю его в xvi32.Ищу последовательность 41 18 10 39 C9 7B.
А её там нет.
В оригинальной прошивке от Hyundai 3899 тоже не нашёл

:wall: :wall: :wall: :wall:

Posted by: cax on 22-12-2005, 15:02
QUOTE (ivani4 @ 22-12-2005, 11:41):
Вытащил ARM Codes.
Получил MTK (ARM Codes).mzh
Открываю его в xvi32.Ищу последовательность 41 18 10 39 C9 7B.
А её там нет.
В оригинальной прошивке от Hyundai 3899 тоже не нашёл

:wall: :wall: :wall: :wall:
Сейчас я буду по-буддистски повторять одно и то же, пока у тебя не наступит просветление.

1) вынимаем "Code Part->RISC->ARM Codes" (на вопрос "Unpack" - соглашаемся)

Posted by: cax on 22-12-2005, 15:06
QUOTE (ivani4 @ 22-12-2005, 09:58):
QUOTE:
Насколько мне известно, русский с ивритом в именах файлов до меня не делали
мог ли SICKBOY сделать только иврит,но нормальный не перевёрнутый?
Спроси его, разбирается ли он в ассемблере АРМ и может ли он если не написать сам, то модифицировать подпрограмму перевода букв.
(для справки: я её тоже не сам писал, а переделал из готовой подпрограммы по переводу русских букв).

Posted by: cax on 22-12-2005, 15:07
QUOTE (ivani4 @ 22-12-2005, 09:54):
QUOTE:
где смешаны русские и ивритские буквы
это где иврит вместо больших английских букв?
У меня нет таких шрифтов. Если бы я заменил большие английские буквы, то как бы ты тогда видел английские имена файлов с большими буквами ?

Posted by: cax on 22-12-2005, 15:09
QUOTE (ivani4 @ 22-12-2005, 09:51):
QUOTE:
Скачай программу BCalc.exe с раздела файлов группы mt13x9 на yahoo
А этот момент нельзя по другому.Там регистрироваться надо.Я как то пытался ,но у меня не получилось.
Давай-давай, регистрируйся. mt13x9 - кладезь знаний по прошивкам.

Posted by: ivani4 on 22-12-2005, 15:30
Буддисткий не помог.Просветление не наступило.
Чувствую что вечером нечем будет дышать.

Posted by: cax on 22-12-2005, 15:33
вынимаем "Code Part->RISC->ARM Codes" (на вопрос "Unpack" - соглашаемся)

Подсказка: .lzh - это запакованный файл.

Posted by: ivani4 on 22-12-2005, 15:47
уже нечем дышать

:fool: :bash: :lol:

Posted by: cax on 22-12-2005, 16:11
Дыши глубже.
Если цепочка не находится - тогда я ничем не могу помочь. В натуре. &%я буду.

Posted by: ivani4 on 22-12-2005, 16:24
10 39 C9 7B начинается с адресов
23В72
23ВА6
............................................................
Сообщения С++
27BD8
начинается с фразы Abnormal termination
............................................................
cax Может придумаешь что нибудь с BCalc.exe .
Итак дышать нечем .Мне от одной только мысли о том сайте становится дурно.
Зря время потратим.Кладезь то он может быть и кладезь,да говорят там не на нашем языке.

Posted by: cax on 22-12-2005, 19:05
Нет проблем, просто вместо академии у нас получится слепое копирование.

Я запустил BCalc и сделал расчёты для тебя.

23В72: замени 10 39 C9 7B на 04 F0 31 F8
23ВА6: замени 10 39 C9 7B на 04 F0 17 F8

Я полагаю, что по адресу 27BD8 ты уже вписал ту длинную подпрограмму, байты которой я давал выше, и вставил тот шрифт, который я говорил.

Теперь вставь ARM обратно в прошивку (с упаковкой).

Скрести пальцы и приготовься хоронить плейер.

Posted by: ivani4 on 22-12-2005, 20:09
cax спасибо что облегчил мне жизнь.Но я не стремился к слепому копированию.Я за академию.Просто хотел программу получить другим путём и сделать всё самостоятельно под твоим чутким руководством.Если есть с твоей стороны такая возможность и желание,то я только за.
Процесс я думаю закончить сегодня,но ломать плеер будем завтра т.к. на сегодня запланирован просмотр фильма.

Posted by: ivani4 on 23-12-2005, 00:41
Это то что нам нужно?Если да,так я готов считать.

Posted by: ivani4 on 23-12-2005, 08:35
:zlo2: :furious: :zlo2: :furious:

Posted by: cax on 23-12-2005, 10:23
QUOTE (ivani4 @ 23-12-2005, 05:35):
Нет, это не тот BCalc.exe. Тот, который нужен, занимается расчётом байт-кодов операций перехода в ассемблере АРМ.

Posted by: ivani4 on 23-12-2005, 11:17
Плеер остался жив.Но желаемый результат не получен.Теперь вместо названий на рус/ивр сплошной подчерк.Проверял несколько раз сделанные изменения.Ошибки не нашёл.
??????????????????????????????????????????????????????????????????????
:fear2: :fear2: :fear2: :fear2:

Posted by: cax on 23-12-2005, 23:02
То, что у тебя происходит, весьма странно.
Подчерки не могут появиться если их не было ранее...

Впрочем, давай попробуем разобраться и починить.
Поищи-ка в прошивке (не в АРМ) такое:

94 20 40 xx E0 D3 94 7E 40

Напиши, нашёл ли, и если да, то сколько раз и где.

Posted by: ivani4 on 23-12-2005, 23:38
Не нашлось.В целях самоконтроля провел поиск в Hyundai 3899 Servo 02.09 - orig.Так там нашлось два раза
12DA3
15EEB

Posted by: cax on 24-12-2005, 15:17
QUOTE (ivani4 @ 23-12-2005, 20:38):
Не нашлось.
Я так и думал, что не найдётся... засада, однако.

Давай для очистки совести поищем в АРМ вот такое (хотя тоже вряд ли найдётся):

7E 22 20 21

Если найдёшь - попробуй заменить на FF 22 00 21
(ну и, разумеется, после этого вставить АРМ назад в прошивку и т.д.)

Кстати, после замены шрифта сколько у тебя букв имени файла влазит на экране ?

Posted by: ivani4 on 24-12-2005, 15:38
:handup: :clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Заработало!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ты гений!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Posted by: ivani4 on 24-12-2005, 19:22
:band:
QUOTE:
Скрести пальцы и приготовься хоронить плейер.

!!!!!!Да тут не плеер хоронить,а памятник тебе при жизни ставить!!!!!!


Posted by: ivani4 on 24-12-2005, 20:32
QUOTE:
Кстати, после замены шрифта сколько у тебя букв имени файла влазит на экране ?
Мой File Browser вместил 39 раз букву а.
Любопытно что теперь лишнее вылезает за рамки.
Значит надо делать то что ты называешь обрезалкой по правому краю?

Posted by: cax on 24-12-2005, 20:37
QUOTE (ivani4 @ 24-12-2005, 17:32):
Значит надо делать то что ты называешь обрезалкой по правому краю?
Угумс.

Это не сложно технически, но требует определённой внимательности и аккуратности.

Читай вот такую главу:

4) Filename cutter - howto
(removes overlapping letters in long filenames that mess with scrollbar)

Posted by: ivani4 on 24-12-2005, 22:53
Тяжеловато по самоучителю будет.Маэстро,я в чём то провинился что меня перевели на заочное отделение?
Ну а если серьёзно и по делу,то предположил что нужно начать с поиска в прошивке последовательности
FD A3 E0 FE A3 E0 FF 90 XX XX 12 XX XX 90 XX XX E0 FD
В Hyundai 3899 нашёл такое дело по адресу
14С63
Нашёл такую цепочку так же в Vertex 312A и в Apex JDP707.
А вот в своей прошивке не нашёл ничего.
:help:

Posted by: cax on 25-12-2005, 00:46
Значит не будем делать обрезалку. Польза от неё только эстетическая, нужна она редко, а возни много. К тому же мне неясно как тебе помочь с этим.

Posted by: ivani4 on 25-12-2005, 00:53
А может быть нам поможет то,что я нашёл похожую цепочку
FD A3 E0 FE A3 E0 FF 90 FB B6 12 21 62 90 FB AE E0 FC
по адресу
148D7
Нашлась такая цепочка один раз и разница только в одной последней букве.

Posted by: cax on 25-12-2005, 01:12
Похоже, что ты на верном пути. Завтра гляну. Спокойной ночи.

Posted by: ivani4 on 25-12-2005, 06:20
Спасибо!Жду!
А то ,что возни много,так меня это не пугает.На такие дела я не ленивый.Уж очень хочется сделать это красиво,так как положено.
Может быть тебе поможет ещё то,что до того как мы ввели поддержку рус/ивр, данное явление не наблюдалось.Проверено.

Posted by: cax on 25-12-2005, 11:33
QUOTE (ivani4 @ 25-12-2005, 03:20):
Может быть тебе поможет ещё то,что до того как мы ввели поддержку рус/ивр, данное явление не наблюдалось.Проверено.
Шрифты, небось, моноширинные (monospaced) были, а теперь одна буква шире, другая уже... одно название влезет, другое уже нет.

Posted by: ivani4 on 25-12-2005, 12:04
Хотел было сразу не согласится,но решил ещё раз проверить и оказалось что ты частично прав.Мне приходилось видеть ранее что имя не отображается полностью,но никогда не приходилось видеть что оно вылезает за рамки.Так оказалось что оно начинает вылезать при определенной длине имени.Просто ранее такие длинные имена не поподались.Но тем не менее после введения поддержки рус /ивр некоторые изменения всё таки произошли.Если ранее это вылезало только с правой стороны,то теперь эта не вместившаяся справа часть имеет место быть как с правой так и слевой стороны браузера.

Posted by: cax on 25-12-2005, 12:29
QUOTE (ivani4 @ 25-12-2005, 09:04):
Если ранее это вылезало только с правой стороны,то теперь эта не вместившаяся справа часть имеет место быть как с правой так и слевой стороны браузера.
Кстати, обрезалка режет только справа, а слева (т.е. хвосты ооочень длинных имён) при определённых условиях (все буквы очень широкие) всё равно будет вылезать. Единственное, что я могу сделать, чтобы не было хвостов слева - это ограничить кол-во выводимых букв имени. Сейчас у тебя, как я понимаю, стоит ограничение в 42 символа, или нет ? То есть, если вставить диск с таким (см. ниже) именем, сколько символов он покажет, с какого места налезает и т.д. ?

1234567_10_234567_20_234567_30_234567_40_234567_50_234567_60_234567_70.avi

Posted by: ivani4 on 25-12-2005, 13:03
QUOTE :
сколько символов он покажет, с какого места налезает и т.д. ?
Влезает в рамку 40,но ноль влезает только на половину.
За рамкой с правой стороны 23
с левой стороны 456

Posted by: cax on 25-12-2005, 13:18
QUOTE (ivani4 @ 25-12-2005, 10:03):
Влезает в рамку 40,но ноль влезает только на половину.
За рамкой с правой стороны 23
с левой стороны 456
В общем, я умею только отрезать кусок ноля и "23", а "456" так и останется.

Кстати, что-то я не понял - как ты можешь видеть буквы после 42-й ? Ведь стоит ограничение в 42 символа ?

Posted by: ivani4 on 25-12-2005, 13:37
42-это ограничение на показ субтитров.Это меня и попутало.
Я проверил как работала предыдущая прошивка.Оказалось что вместилось
40_23456
При этом ничего не вылезло не справа,ни слева.
Только теперь я понял что ограничение-46 знаков.И я знаю где я ошибался.42 я насчитывал в самом названии файла.Точка и три буквы(расширение)не учитывались.
Твой фонт шире моего и это ,я думаю,единственная причина вызвавшая эти новые изменения в отображении имени.
А может быть у тебя есть другой фонт?

Posted by: cax on 25-12-2005, 14:20
Я перепробовал много разных, они плохо смотрелись, пока не выбрал этот. Ты можешь сделать свой - поУже, но не у всех телевизоров одинаково хорошая чёткость. Проще ограничение с 46 изменить на 40-42. В принципе, 95% времени 40 символов хватает за глаза (раньше было 14 и и ничего, жили ведь ?)

На самом деле, ограничение не 46, а 50 - 46 на имя, 4 на точку и расширение. Больше никак нельзя.

Posted by: ivani4 on 25-12-2005, 14:31
Длину названий файлов ограничить до 40.
Ограничение на показ субтитров отменить.
Можно такое сделать?
..............................................
И все таки ,по моему,я имею 46 включая точку и расширение

Posted by: cax on 25-12-2005, 14:39
Что такое "ограничение на показ субтитров" ? Если ты имеешь в виду "проблема, из-за которой текст субтитров обрезаются где-то после 60-го символа", так это не я ограничил, а ошибка в почти всех прошивках от почти всех производителей, и описание её устранения идёт первым номером в моём руководстве.

Связи с показом длинных имён файлов нет никакой.
Связи с другой проблемой (у файлов длиннее 42 символов в имени не показываются субтитры) тоже нет никакой.

Posted by: ivani4 on 25-12-2005, 14:42
QUOTE:
у файлов длиннее 42 символов в имени не показываются субтитры
вот именно это отменить а длину имени ограничить до 40

Posted by: cax on 25-12-2005, 14:43
QUOTE (ivani4 @ 25-12-2005, 11:31):
И все таки ,по моему,я имею 46 включая точку и расширение
Ты видишь точку и расширение ?
Т.е. в файле 12345.... ... .avi ты видишь .. 40 2.avi ???? Не может быть.
Ты же сам сказал, что видишь 456. Не путай себя и меня.

Posted by: ivani4 on 25-12-2005, 15:04
Если я буду смотреть фильм с названием САХ,то я увижу на экране
CAX.AVI
Если мой двд способен отобразить 46 знаков,то
42-имя
1 -точка
3-расширение
.............................................
Вот такое название из 46-ти знаков я вижу полностью,но стоит мне добавить еще одну точку,то буквы i в конце я уже не увижу.
The Matrix Reloaded. 2003 Cd.2 Dvdrip.Divx.avi
...................................................
cax,не надо обрезалку.Я сделал другой фонт.
Хочу отправить его тебе.Любопытно твоё мнение.

Posted by: cax on 25-12-2005, 18:47
QUOTE (ivani4 @ 25-12-2005, 12:04):
Если я буду смотреть фильм с названием САХ,то я увижу на экране CAX.AVI
Меня уже давно мучает вопрос:

а показ длинных имён файла ты сам делал ? или ты взял эту прошивку у того, кто это сделал ?

Теперь к нему добавился ещё один: а почему это у тебя расширения файлов показываются ? Ни на одном из моих плейеров такого нет. Это тоже чья-то модификация ?

По поводу самодельного шрифта: ты разобрался как туда вставить и русский и иврит ??? А показывать его мне не надо - достаточно проверить на телевизоре с маленьким экраном (21-25''), если надписи видны с расстояния просмотра фильма - значит всё хорошо.

Posted by: ivani4 on 25-12-2005, 20:19
Показ длинного имени ,расширения и субтитров -так этот двд продаётся.Зум тоже сделан как положено включая тот синий квадрат .
С фонтом разобрался.Всё работает.
Ну а теперь что?Может быть устраним непоказ субтитров при длине имени более 42 знака?

Posted by: cax on 25-12-2005, 20:45
По поводу непоказа субтитров для файлов с длиной имени 42+,
тебе понадобится SubtLength.exe из всё той же группы mt13x9 на yahoo.com

Жалобы на английский язык более не принимаются, иди и зарегистрируйся.
Даже дети это умеют. Я не верю, что человек, умеющий работать с прошивками, не в состоянии зарегистрироваться на каком-то форуме.

Posted by: ivani4 on 25-12-2005, 22:17
Маэстро,ну зачем так сердится?Сегодня праздничный вечер.
:cake:
Я пробовал.И не один раз.Я был бы рад,но у меня не получилось.Там требуют от меня данные и не знаю о чём речь.Да и на этом сайте я с трудом зарегистрировался.
Ты говоришь дети могут?Так дети многое могут что взрослым не под силу.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Ну и если так,то может будем учится бороться с баг 60?

Posted by: cax on 26-12-2005, 00:38
QUOTE (ivani4 @ 25-12-2005, 19:17):
Сегодня праздничный вечер.
Ещё бы - как никак мне 2 в 5-й степени сегодня стукнуло.

Хочешь баг 60 - ищи и скачивай IDA, а я пока отдохну.

Posted by: ivani4 on 26-12-2005, 00:49
А!!!!!!!!!!!!А я то думаю,чего вдруг такой ?Спорит.Сердится.
Сначала думал из-за дождя.Потом думал что суфганиёт объелся.А тут вот какое дело.Ну,поздравляю.И сколько это будет два в пятой что бы я уже тоже мог порадоватся?
:zlo2: 32-Угадал?
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
ida_pro_4.8.0.847 подходит?

Posted by: cax on 26-12-2005, 09:17
Вполне.

Posted by: ivani4 on 26-12-2005, 09:20
там есть idag64.exe и idag.exe.Какой будем использовать?
Понял из инструкции что нужно произвести определенные изменения в ARM по четырем адресам.Но как найти эти адреса не понятно.Пробовал использовать иду,но успехов не добился.

Posted by: cax on 26-12-2005, 17:42
QUOTE (ivani4 @ 26-12-2005, 06:20):
там есть idag64.exe и idag.exe.Какой будем использовать?
Любой из экзешников подойдёт.

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

Posted by: ivani4 on 26-12-2005, 17:49
Опять засада.Все дороги ведут на yahoo.com.
А ты не можешь у себя на сайте все эти дела выложить?

Posted by: cax on 26-12-2005, 19:24
Мы так не договаривались. Я пишу здесь ценные указания, на этом моя миссия заканчивается.

Posted by: ivani4 on 26-12-2005, 21:12
Тогда такое предложение.Пока я разберусь с yahoo,может быть займёмся подарком к Новому Году для хорошего человека?Напомню что речь шла о названиях файлов,но вариант там тяжелее
Более 128 символов(256)
занимает два номера
Возможно находится последним в списке фонтов.Нужно проверить.
Сможем сделать?

Posted by: cax on 27-12-2005, 02:23
QUOTE (ivani4 @ 26-12-2005, 18:12):
Более 128 символов(256) занимает два номера
Возможно находится последним в списке фонтов.Нужно проверить.
то есть - 2 номера ? эту прошивку уже кто-то модифицировал ???
Я не видел оригинальных прошивок, в которых нет шрифта с 128 символами.

И проверь насчёт последнего в списке.

Posted by: ivani4 on 27-12-2005, 09:04
QUOTE:
А по поводу русских букв, очень важно последним ли идёт шрифт для имён файлов (у него только 128 символов и он занимает 1 номер вместо двух в MTK Remaker). Если да - остальное не очень сложно, если нет - придётся повозиться.
Ответ исходил из этого,написаного тобой ранее.Дополняю:
1. Большинство китайских плееров ,действительно,имеют 128 знаков,но такие двд как Пионер,Филипс,Ямаха-256 знаков.
2. Под занимаемым номером было понято :
font 3 занимает один номер
font 3-4 занимает два номера
3. Требуемый фонт не является последним в списке.

Posted by: cax on 27-12-2005, 12:28
Я надеюсь, что брендовые прошивки не очень сильно отличаются от китайских и там всё так же... иначе я не смогу ничем помочь.

То есть ты хочешь сказать, что фонт для имён файлов содержит 256 символов ? Как ты узнал, что именно он используется для имён ?
И как на этом плейере отображаются русские имена файлов ?
Какие шрифты идут после него и для чего каждый из них ?
Прошивка занимает больше мегабайта или меньше ?

Posted by: ivani4 on 27-12-2005, 12:53
QUOTE:
То есть ты хочешь сказать, что фонт для имён файлов содержит 256 символов ? Как ты узнал, что именно он используется для имён ?
Там все font page 256 символов

Posted by: ivani4 on 27-12-2005, 12:59
QUOTE :
Какие шрифты идут после него и для чего каждый из них ?
Вопрос относится к тому font page который будем переделывать или к тем font page которые находятся после него?
QUOTE:
Прошивка занимает больше мегабайта или меньше ?
Больше

Posted by: cax on 27-12-2005, 13:20
Не очень понимаю при чён тут font page - этот термин здесь совершенно неприменим.

И что значит "имена на русском отображаются никак" ?

Прям как у Чехова, где бабулька жалуется на боль в животе и так её описывает, что не понять ни где именно болит, ни как сильно болит - вообще ничего не понять.

И снова спрошу: откуда известно, что именно фонт 3-4 используется для показа имён файлов ?

Posted by: ivani4 on 27-12-2005, 13:31
Термин code page подходит?Но я буду писать как ты-фонт.

Posted by: ivani4 on 27-12-2005, 14:15
QUOTE:
Если вместо русского не подчерки, а каша-малаша из цифр и букв - это ещё лучше
И здесь вместо русского каша- малаша.
(Решил использовать твою терминологию)

Posted by: ivani4 on 27-12-2005, 14:20
QUOTE:
И снова спрошу: откуда известно, что именно фонт 3-4 используется для показа имён файлов ?
Я ещё не смог точно выяснить какой из фонтов.Знаю точно,что не последний.Все фонты 256 символов и содержат в названии две цифры(5-6,7-8,9-10)

Posted by: cax on 27-12-2005, 15:11
Нумерация начинается с нуля, так что здесь что-то не так.
Если они ВСЕ по 256 букв, тогда было бы так:
0-1, 2-3, 4-5, 6-7, 8-9....

Posted by: ivani4 on 27-12-2005, 15:23
сах,это я к примеру.Начинается конечно с нуля
............................................................................
Получил информацию и почувствовал ,что не получится подарок.Оказывается
для показа имён файлов используется фонт 0-1.Содержит 412 символов. Этот фонт используется так же для отображения другой информации(set up/on screen).
Засада?

Posted by: cax on 27-12-2005, 16:58
QUOTE (ivani4 @ 27-12-2005, 12:23):
Для показа имён файлов используется фонт 0-1.
Фонт 0 для OSD - верю, для имён файлов - не верю.

Posted by: ivani4 on 27-12-2005, 17:04
Сделали простую проверку.На место фонта 0-1 поставили китайский фонт и всё стало на китайском включая названия файлов.
..........................................................................
Дополнительно проверено.Одни и те же англ. буквы(66-123)используются для OSD и имён файлов.

Posted by: cax on 27-12-2005, 18:26
Тогда я пас. Если у них там всё так сильно поменяли, то я сомневаюсь, что мы найдём в этой прошивке хотя бы одну цепочку байтов.

Ты, конечно, можешь попытаться поставить на 0-1 русский фонт и модифицировать АРМ тем же образом, что и в предыдущей прошивке, но мне кажется, что шансы на успех малы. Если хочешь - дерзай.
Если вдруг получится - мы откорректируем фонт 0-1 позже.
Начни с АРМ.

Posted by: ivani4 on 27-12-2005, 18:40
Спасибо.Обязательно попробую.Извини,что крутил тебе голову весь день.Я должен был подготовится ,всё узнать и тогда обратится к тебе.Учту эту ошибку на будущее.
И попутно вопрос.Я знаю что ты баловался с зонами.В прошивке по умолчанию выставлена 2-я зона.Её конечно можно поменять в set up на 0.Но при последующей перепрошивке опять будет 2 и опять нужно менять.Вопрос: можно ли сделать 0 по умолчанию ?

Posted by: ivani4 on 27-12-2005, 18:51
Нашлась цепочка два раза
25А4С
25А80
И сообщения об ошибках тоже нашлись.
CAX,пересчитай мне это в BCalc.exe , пожалуйста.

Posted by: cax on 28-12-2005, 10:22
QUOTE (ivani4 @ 27-12-2005, 15:51):
Нашлась цепочка два раза
25А4С
25А80
И сообщения об ошибках тоже нашлись.
CAX,пересчитай мне это в BCalc.exe , пожалуйста.
Как я пересчитаю, если ты не сказал куда в зоне сообщений об ошибках ты положишь подпрограмму перевода букв ???

Posted by: cax on 28-12-2005, 10:30
QUOTE (ivani4 @ 27-12-2005, 15:40):
В прошивке по умолчанию выставлена 2-я зона.
Вопрос: можно ли сделать 0 по умолчанию ?
Вроде бы можно, если найдём соответствующий пункт в меню.
Найди в MTK ReMaker такого рода штуку:

26. REGION CODE | REGION CODE
02 0114 0114 01 FF3ACF 0000 - ROM:3AD2
1. No Pic. | REGION CODE | REGION CODE
0010 FFFF 0114 0114 0017 003F 0006 0002 000000 0000 - ROM:3ABA

Здесь 0006 - кол-во вариантов, 0002 - вариант по умолчанию.
Далее, вроде, надо найти в прошивке всю цепочку и исправить 0002 на 0000.

Но, согласись, эта фича - не вещь первой необходимости...
А разве эти настройки не сохраняются при перепрошивке ? Странно.

Posted by: ivani4 on 28-12-2005, 10:39
Abnormal Termination
2983C

Posted by: ivani4 on 28-12-2005, 11:40
:handup: :clap1: :handup: :clap1: :handup:
!!!Получилось с нулевой зоной.Спасибо!!!
А установки действительно сохраняются,но при условии что ты работаешь с одной прошивкой.Ну а если есть две прошивки с разными зонами,то тогда при перепрошивке установки изменяются на значение по умолчанию.

Posted by: cax on 28-12-2005, 12:06
QUOTE (ivani4 @ 28-12-2005, 08:40):
Ну а если есть две прошивки с разными зонами,то тогда при перепрошивке установки изменяются на значение по умолчанию.
IMHO, там всё намного хуже - настройки одной прошивки сидят совсем не там, где у другой, и в результате при перепрошивке всё может замечательно повиснуть, и заработать снова только после выключения DVD на несколько минут от электросети - в этом случае действительно всё сбросится в значения по умолчанию.

Вот твои коды, пересчитанные BCalc-ом:

код команды вызова подпрограммы 2983C с адреса 25А4С (BL 2983C): 03 F0 F6 FE
код команды вызова подпрограммы 2983C с адреса 25А80 (BL 2983C): 03 F0 DC FE


Posted by: ivani4 on 28-12-2005, 12:24
За пересчёт спасибо!
По поводу зон ,прошивок спорить не буду.Я описал то что у меня было. А после произведённых,указаных тобой, изменений всё работает отлично.Зона всегда-0.
............................................
Получилось пройти регистрацию на http://groups.yahoo.com/group/mt13x9/ (http://groups.yahoo.com/group/mt13x9/ ,но я не могу найти там нужные нам программы.

Posted by: cax on 28-12-2005, 15:08
QUOTE (ivani4 @ 28-12-2005, 09:24):
я не могу найти там нужные нам программы.
Идёшь по ссылке Files, затем - PROGRAMS.

http://groups.yahoo.com/group/mt13x9/files/PROGRAMS/ (http://groups.yahoo.com/group/mt13x9/files/PROGRAMS/

Posted by: ivani4 on 28-12-2005, 17:43
BCalc.exe в наших руках.
И я даже разобрался как им пользоваться.Но не понятно как знать что в BRANCH нужно выставить BL ? Или для подобного расчёта всегда BL ?
..............................................................................
4) Use SubtLength.exe (from mt13x9 yahoo group) to fix 42-char+ long filenames subtitles bug
This results in 1-byte change:
4F0D4: 32 => 78

Вроде не сложная процедура,но не пойму как ты получил 78 ?
Закидываю в программу MTK (ARM Code).bin от Hyundai 3899 Servo 02.09 - orig и получаю new value 50.
Если ввести new value 120 , то в ARM Code ,по нужному адресу,автоматически произойдёт изменение на 78. Но почему 120?как это делают вообще?
?????????????????????????????????????????????

Posted by: cax on 29-12-2005, 10:29
QUOTE (ivani4 @ 28-12-2005, 14:43):
Вроде не сложная процедура,но не пойму как ты получил 78 ?
120 в десятичной равняется 78 в шестнадцатиричной системе счисления.

А заменяю я 50 на 120 совершенно от балды. Мне посоветовали 120 - я поставил 120. Если хочешь - поставь побольше.
Программа сама вносит байт на нужное место, делать это вручную ещё раз - не надо.

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

Пожалуй ты прав, это место в инструкции написано невнятно.

Следует читать: "используя SubtLength, замените значение по умолчанию (50) на , например, 120 или больше. Я ставил 120 и у меня работало"

По поводу BCalc: да, в данном месте нам нужна именно команда BL (если не вру, расшифровывается как Branch Long и используется для переходов на большие расстояния. На короткие расстояния можно перейти и другой командой. Короче, если интересно - учи ассемблер)

Posted by: ivani4 on 29-12-2005, 10:39
QUOTE:
А заменяю я 50 на 120 совершенно от балды. Мне посоветовали 120 - я поставил 120. Если хочешь - поставь побольше.
А если поставить больше,то что произойдёт?Что регулирует этот параметр?
И что мы вообще делаем?Непоказ субтитров при длине имени 42+ ?Отображение длинного имени файла?Или двоих одним ударом?

Posted by: cax on 29-12-2005, 15:31
QUOTE (ivani4 @ 29-12-2005, 07:39):
И что мы вообще делаем? Непоказ субтитров при длине имени 42+ ?
Именно это и делаем.

Posted by: ivani4 on 29-12-2005, 16:00
А длинное имя ?

Posted by: ivani4 on 29-12-2005, 16:03
QUOTE:
Но прежде чем ты запустишь Иду, тебе нужно скачать скрипты для неё из группы mt13x9
А можно конкретней?А то там много всякого разного, а я в этом деле как то не очень.

Posted by: ivani4 on 29-12-2005, 16:21
:handup: :handup: :clap1: :clap1: :handup: :handup:
Победили непоказ субтитров при длине имени 42+

Posted by: cax on 29-12-2005, 19:17
QUOTE (ivani4 @ 29-12-2005, 13:00):
А длинное имя ?
А ты мне сказал, что плейер продаётся уже с показом длинных имён, чем сильно меня удивил. Значит всё-таки ты видишь только 14 символов имени ?

Posted by: cax on 29-12-2005, 19:17
QUOTE (ivani4 @ 29-12-2005, 13:03):
QUOTE:
Но прежде чем ты запустишь Иду, тебе нужно скачать скрипты для неё из группы mt13x9
А можно конкретней?А то там много всякого разного, а я в этом деле как то не очень.
С этим уже после Нового Года.

Posted by: ivani4 on 29-12-2005, 19:53
QUOTE:
А ты мне сказал, что плейер продаётся уже с показом длинных имён, чем сильно меня удивил. Значит всё-таки ты видишь только 14 символов имени ?
Просто хочу научится это делать.И ещё я хочу,если ты не против,написать тебе письмо после которого ты не будешь так удивлятся.

Posted by: cax on 29-12-2005, 20:30
QUOTE (ivani4 @ 29-12-2005, 16:53):
И ещё я хочу,если ты не против,написать тебе письмо после которого ты не будешь так удивлятся.
Ну давай, пиши мне письмецо. Адрес свой я тут уже публиковал много раз - borus собака mail.ru

Posted by: cax on 29-12-2005, 20:33
QUOTE (ivani4 @ 29-12-2005, 16:53):
QUOTE:
Значит всё-таки ты видишь только 14 символов имени ?
Просто хочу научится это делать.
Нет проблем. Утилита mtkFilenameLenPatcherYamadaBellYakumo из раздела программ в группе mt13x9 к твоим услугам, и не забудь заменить фоновую картинку.

Posted by: ivani4 on 29-12-2005, 20:34
Ну а с длинным именем что ?

Posted by: cax on 29-12-2005, 20:36
mtkFilenameLenPatcherYamadaBellYakumo

Posted by: ivani4 on 29-12-2005, 20:43
Скачал,но он не запускается.

Posted by: cax on 29-12-2005, 20:47
QUOTE (ivani4 @ 29-12-2005, 17:43):
Скачал,но он не запускается.
Читай инструкцию. Эту программу запускают из командной строки, одной мышью не отделаешься.

Posted by: ivani4 on 29-12-2005, 20:51
Сложновато будет.Никогда не работал с командной строкой. :help:
Пробовал читать инструкцию,но ничего там не понял.:help:

Posted by: cax on 29-12-2005, 23:56
QUOTE (ivani4 @ 29-12-2005, 17:51):
Сложновато будет.Никогда не работал с командной строкой. :help:
Пробовал читать инструкцию,но ничего там не понял.:help:
Начни с простого: открой окно ДОСа в каталоге, где лежат прошивка и утилита, и напиши в командной строке имя утилиты, пробел, имя файла прошивки.
Всего делов.

Posted by: ivani4 on 30-12-2005, 01:58
Звучит просто ,да не клюёт.
QUOTE:
открой окно ДОСа в каталоге, где лежат прошивка и утилита
Я не знаю что такое "открой окно ДОСа в каталоге",но сделал так:
открыл окно "командная строка".В то место которое там было прописано(c:\doc.and set\. ...) положил наши файлы и вписал их в командную строку.Нажал энтер и получил сообщение что никто ничего не может.??????????????

Posted by: ivani4 on 30-12-2005, 08:26
:wall:

Posted by: cax on 30-12-2005, 15:05
Тебе снова Чехова напомнить ?
Я же мысли читать не умею пока...

Posted by: ivani4 on 30-12-2005, 15:46
Не надо Чехова.
Мы уже победили!!!!!!!!!!!!!!!!!!!!!!!!!!!
:handup: :handup: :clap1: :handup: :clap1: :handup: :handup:

Posted by: ivani4 on 30-12-2005, 17:38
Я только хотел уточнить.А всегда ли нужно использовать именно эту программу?Дело в том,что там есть ещё две ссылки с похожим именем:
mtkFilenameLenPatcher.zip
mtkFilenameLenPatcherYamadaBell.rar
В каких случаях используют эти программы?
:s4: :dedmoroz: :newyear:

Posted by: moroz on 31-12-2005, 15:23
Кажется, удалось обнаружить функцию, ответственную за переворот иврита. "Кажется" - потому что я все-таки не до конца понимаю как она это делает, знаний по ассемблеру катастрофически не хватает, но нутром чую - это ОНА. cax, если заинтересуешься - дай знать: открою новый топик и отпишусь поподробней.

Posted by: cax on 31-12-2005, 16:42
QUOTE (moroz @ 31-12-2005, 12:23):
если заинтересуешься - дай знать: открою новый топик и отпишусь поподробней.
мороз, давай здесь. Я видел что-то подобное в прошивке Юндая, но так и не понял, что именно там происходит.

Posted by: cax on 31-12-2005, 16:46
QUOTE (ivani4 @ 30-12-2005, 14:38):
mtkFilenameLenPatcher.zip
mtkFilenameLenPatcherYamadaBell.rar
В каких случаях используют эти программы?
Первую я написал сам, остальные - более новые версии, дополненные товарищами по оружию. Ты пользовался самым последним вариантом.

Posted by: ivani4 on 31-12-2005, 17:44
спасибо :&#041;

Posted by: moroz on 01-01-2006, 02:44
QUOTE (cax @ 31-12-2005, 16:42):
QUOTE (moroz @ 31-12-2005, 12:23):
если заинтересуешься - дай знать: открою новый топик и отпишусь поподробней.
мороз, давай здесь. Я видел что-то подобное в прошивке Юндая, но так и не понял, что именно там происходит.
Все-таки открыл новый топик.

Posted by: ivani4 on 01-01-2006, 14:17
Маэстро!Мы собирались рассмотреть устранение баг 60.Но кроме этого у меня есть ещё одна просьба.Показ файлов субтитров в списке файлов имеющихся на диске.Можно?

Posted by: cax on 01-01-2006, 14:40
QUOTE (ivani4 @ 01-01-2006, 11:17):
Показ файлов субтитров в списке файлов имеющихся на диске
Это вообще элементарно, Ватсон. Находим в АРМ сочетание из трёх букв "DST" и меняем их на "SRT". И всё. Как я и писал в инстру... впрочем, я эту фразу уже повторял много раз.


Posted by: ivani4 on 01-01-2006, 14:53
А баг 60?

Posted by: cax on 01-01-2006, 15:33
Дай передохнуть, на работе завал...

Posted by: ivani4 on 01-01-2006, 20:06
Маэстро!С баг 60 подождём.Нет проблем.
А тут по предыдущему делу есть вопрос
QUOTE:
Это вообще элементарно, Ватсон. Находим в АРМ сочетание из трёх букв "DST" и меняем их на "SRT".
SRT теперь показывает.А что с SUB?

Posted by: cax on 01-01-2006, 22:32
Не пробовал, но замена ещё какого-нибудь ненужного расширения на SUB по идее должна сработать так же, как и с SRT.

Posted by: ivani4 on 01-01-2006, 23:02
Спасибо!
САХ,пожалуйста,будет возможность продолжить занятия в академии ,дай знать!

Posted by: aleshin on 09-01-2006, 14:34
ivani4 пришли пожалуйста bcalc ,хочу тоже одну прошивку исправить, а яхо никак не регистрирует. qwer@ufanet.ru

Posted by: Rvs on 09-01-2006, 20:55
Привет бойцам!!! :hi: Примите в свои ряды!!! :D

Также как вы занимаюсь модификацией прошивок, владею ASM, готов поделиться своей информацией, есть много наработок!!!

Но есть и вопросы!!!
Вопрос к гуру. :mol:
Модифицирую уже вторую прошивку от NewAge, и в каждой есть засада. В меню изменяю значение по умолчанию, например язык имён файлов (кодовую страницу) с 1250 на 1251, перепрашиваю аппарат, в меню вроде всё ОК, но делаю сброс по умолчанию и значение становиться то которое NewAge установил при создании прошивки, т.е. 1250!!!! Где засада ????

P.S. Хорошая тема!!! :punk:

Posted by: cax on 10-01-2006, 00:48
А в подменю, где эта неизвестная мне штука выбирается, какое значение по умолчанию ?

Posted by: Rvs on 10-01-2006, 11:32
Привет сах!!! Спасибо что откликнулся!!! :&#041;

Вот всё меню (укоротил только список стран, чтоб короче топик был), видно что NewAge по умолчанию установил страну Англию (00 23), я сменил на Русский (00 0A), после перепрошивки через кабель или CD в меню появляется Русский (вроде всё ОК), но имена файлов не в той кодировке, и пре сбросе по умолчанию, страна становиться АНГЛИЯ!!!! :&#040;


7. No Pic. | Filesystem Country | Set Filename Decoding (CP125x)
0008 FFFF 04B3 04B4 0078 0000 002C 0023 FFCBBE 0829 - ROM:CC45
1. Bosnia/Herz. | Bosnia/Herz. | Bosnia/Herz.
04B5 04B5 04B5 00 - ROM:CA83
2. Croatia | Croatia | Croatia
04B6 04B6 04B6 01 - ROM:CA8A
3. Czech | Czech | Czech
04B7 04B7 04B7 02 - ROM:CA91
.................................................................
9. Bulgaria | Bulgaria | Bulgaria
04BD 04BD 04BD 08 - ROM:CABB
10. Macedonia FYR | Macedonia FYR | Macedonia FYR
04BE 04BE 04BE 09 - ROM:CAC2
11. Russia | Russia | Russia
04BF 04BF 04BF 0A - ROM:CAC9
12. Serbia/Mont. | Serbia/Mont. | Serbia/Mont.
04C0 04C0 04C0 0B - ROM:CAD0
............................................................................
35. Switzerland | Switzerland | Switzerland
04D7 04D7 04D7 22 - ROM:CB71
=> 36. United Kingdom | United Kingdom | United Kingdom
04D8 04D8 04D8 23 - ROM:CB78
37. United States | United States | United States
..........................................................................
45. Vietnam | Vietnam | Vietnam
04E1 04E1 04E1 2C - ROM:CBB7

Posted by: cax on 10-01-2006, 11:38
Если ты действительно заменил
0008 FFFF 04B3 04B4 0078 0000 002C 0023 FFCBBE 0829
на
0008 FFFF 04B3 04B4 0078 0000 002C 000А FFCBBE 0829
и оно не работает - тогда я пас.

Posted by: Rvs on 10-01-2006, 12:38
Да так и сделал!!!

У меня подозрение что в процедуре обработке пункта меню при сбросе заложено жестко установка языка!!! Попробовал просмотреть, процедуру не совсем разобрался, как ёё вычислить. Вот что я увидел. Не понятно, что за условные переходы по значению регистра А???

Bank2:
ROM:0829 90 F8 A2 mov DPTR, #0xF8A2
ROM:082C 02 02 28 ljmp B_BANK0

Bank0:
ROM:F8A2 BankSw:224_F8A2:
ROM:F8A2 01 B6 ajmp ROM_F8B6
ROM:F8A2 ; End of function BankSw:224_F8A2


ROM:F8B6 ; ---------------------------------------------------------------------------
ROM:F8B6 ; START OF FUNCTION CHUNK FOR BankSw:224_F8A2
ROM:F8B6
ROM:F8B6 ROM_F8B6: ; CODE XREF: BankSw:224_F8A2
ROM:F8B6 90 FB 95 mov DPTR, #0xFB95
ROM:F8B9 EE mov A, R6
ROM:F8BA F0 movx @DPTR, A
ROM:F8BB A3 inc DPTR
ROM:F8BC EF mov A, R7
ROM:F8BD F0 movx @DPTR, A
ROM:F8BE A3 inc DPTR
ROM:F8BF ED mov A, R5
ROM:F8C0 F0 movx @DPTR, A
ROM:F8C1 EF mov A, R7
ROM:F8C2 64 33 xrl A, #0x33
ROM:F8C4 60 50 jz ROM_F916
ROM:F8C6 EF mov A, R7
ROM:F8C7 64 7C xrl A, #0x7C
ROM:F8C9 60 32 jz ROM_F8FD
ROM:F8CB EF mov A, R7
ROM:F8CC 64 7D xrl A, #0x7D
ROM:F8CE 60 2D jz ROM_F8FD
ROM:F8D0 EF mov A, R7
ROM:F8D1 64 7E xrl A, #0x7E
ROM:F8D3 60 28 jz ROM_F8FD
ROM:F8D5 EF mov A, R7
ROM:F8D6 64 7F xrl A, #0x7F
ROM:F8D8 60 23 jz ROM_F8FD
ROM:F8DA EF mov A, R7
ROM:F8DB 64 89 xrl A, #0x89
ROM:F8DD 60 19 jz ROM_F8F8
ROM:F8DF EF mov A, R7
ROM:F8E0 64 7A xrl A, #0x7A
ROM:F8E2 60 1E jz ROM_F902
ROM:F8E4 EF mov A, R7
ROM:F8E5 64 7B xrl A, #0x7B
ROM:F8E7 60 19 jz ROM_F902
ROM:F8E9 EF mov A, R7
ROM:F8EA 64 78 xrl A, #0x78
ROM:F8EC 60 19 jz ROM_F907
ROM:F8EE EF mov A, R7
ROM:F8EF 64 88 xrl A, #0x88
ROM:F8F1 60 19 jz ROM_F90C
ROM:F8F3 EF mov A, R7
ROM:F8F4 64 8A xrl A, #0x8A
ROM:F8F6 60 19 jz ROM_F911
ROM:F8F8
ROM:F8F8 ROM_F8F8: ; CODE XREF: BankSw:224_F8A2+3B
ROM:F8F8 12 F9 B7 lcall ROM_F9B7
ROM:F8FB 80 2A sjmp ROM_F927
ROM:F8FD ; ---------------------------------------------------------------------------
ROM:F8FD
ROM:F8FD ROM_F8FD: ; CODE XREF: BankSw:224_F8A2+27
ROM:F8FD 12 F9 2F lcall ROM_F92F
ROM:F900 80 25 sjmp ROM_F927
ROM:F902 ; ---------------------------------------------------------------------------
ROM:F902
ROM:F902 ROM_F902: ; CODE XREF: BankSw:224_F8A2+40
ROM:F902 12 F9 BD lcall ROM_F9BD
ROM:F905 80 20 sjmp ROM_F927
ROM:F907 ; ---------------------------------------------------------------------------
ROM:F907
ROM:F907 ROM_F907: ; CODE XREF: BankSw:224_F8A2+4A
ROM:F907 12 FD 01 lcall ROM_FD01
ROM:F90A 80 1B sjmp ROM_F927
ROM:F90C ; ---------------------------------------------------------------------------
ROM:F90C
ROM:F90C ROM_F90C: ; CODE XREF: BankSw:224_F8A2+4F
ROM:F90C 12 FD 15 lcall ROM_FD15
ROM:F90F 80 16 sjmp ROM_F927
ROM:F911 ; ---------------------------------------------------------------------------
ROM:F911
ROM:F911 ROM_F911: ; CODE XREF: BankSw:224_F8A2+54
ROM:F911 12 FD 29 lcall ROM_FD29
ROM:F914 80 11 sjmp ROM_F927
ROM:F916 ; ---------------------------------------------------------------------------
ROM:F916
ROM:F916 ROM_F916: ; CODE XREF: BankSw:224_F8A2+22
ROM:F916 90 FB 95 mov DPTR, #0xFB95
ROM:F919 E0 movx A, @DPTR
ROM:F91A FE mov R6, A
ROM:F91B A3 inc DPTR
ROM:F91C E0 movx A, @DPTR
ROM:F91D FF mov R7, A
ROM:F91E A3 inc DPTR
ROM:F91F E0 movx A, @DPTR
ROM:F920 FD mov R5, A
ROM:F921 90 C1 5F mov DPTR, #0xC15F
ROM:F924 02 02 58 ljmp B_BANK2
ROM:F927 ; ---------------------------------------------------------------------------
ROM:F927
ROM:F927 ROM_F927: ; CODE XREF: BankSw:224_F8A2+59
ROM:F927
ROM:F927 7F 00 mov R7, #0
ROM:F929 22 ret
ROM:F929 ; END OF FUNCTION CHUNK FOR BankSw:224_F8A2

Posted by: Rvs on 10-01-2006, 15:36
Ещё вопрос cax!!!

А серво не пробывал менять????

Posted by: cax on 10-01-2006, 19:47
Научи меня как сделать это правильно - буду пробовать.

Posted by: aleshin on 11-01-2006, 01:07
cax поясните пожалуйста вот этот пункт, а то я не очень "есть понимать" что ,где и чего патчить:
3) Show cyrillics in file browser instead of '_' chars.

This patch works together with corresponding patch in ARM section - so you need to apply
both of them to see the result.

To see all chars in filebrowser patch the following bytes:

12DA4: 20 => 00
12DAA: 7E => FE

15EEC: 20 => 00
15EF2: 7E => FE

7F 06 02 05 9B
----------------------------------------------------------------
Howto:

In 8032 code look for ("XX" is a wildcard char):

90 XX XX E0 FF 90 XX XX E0 FE C3 9F 50 05 C3 EF (I found it at 15E9E).

Then skip until the following section of code and patch #0x20 and #0x7E:

ROM:00015EEB 94 20 subb A, #0x20
ROM:00015EED 40 06 jc ROM_5EF5
ROM:00015EEF E0 movx A, @DPTR
ROM:00015EF0 D3 setb C
ROM:00015EF1 94 7E subb A, #0x7E
ROM:00015EF3 40 10 jc ROM_5F05

This code appears twice:
first time for current directory,
second time for names of files in the file browser

Note: it can be your firmware doesn't check the char boundaries.
In this case you cannot and don't need to apply this patch.

Posted by: Rvs on 11-01-2006, 10:20
aleshin а что именно не ясно или всё не ясно!!!

Помню делал всё чётко должно работать, cax чётко всё указал!!! :punk:

Posted by: ivani4 on 11-01-2006, 11:58
Rvs
Может быть ты знаешь как убрать синий квадрат появляющийся в режиме зум при проигрывании дисков двд?

Posted by: Rvs on 11-01-2006, 16:41
aleshin

На картинке плохо видно :&#040; , но кажется догадался кинь прошивку на ruslan(тузик)tiraet.com. Посмотрю :&#041;

Posted by: cax on 11-01-2006, 17:05
aleshin, а что из указанного мной в "Howto:" ты уже сделал и где не получилось ? В каком месте неувязка ?

Posted by: aleshin on 11-01-2006, 17:21
cax огромное человеческое спасибо за инструкцию, уже разобрался (просто английский не родной).Заруссифицировал прошивку shinco dvp-358 только OSD надо еще поломать (меню на русском неправильное), а так всё пучком.

Posted by: Rvs on 11-01-2006, 20:02
cax Извини за настойчивость. Помоги разобраться с меню!!!

Как всё таки найти процедуру обработки пункта меню???

Posted by: cax on 11-01-2006, 21:00
.

Posted by: cax on 11-01-2006, 21:03
Опять цитирую сам себя:

find PREF_GetChar by searching "CD EF CD CC EE CC BC". Let's say, you find it at address 3E9B6.
Then look for "90 E9 B6 02 mm nn". You will find it at 0415,10415, 20415, etc.
So, the PREF_GetChar address ppqq=0415.
Now look for "7F arg 7E 00 12 pp qq" and you will find the code that looks like the following:

seg_01:1C586 7F 08 mov R7, #8
seg_01:1C588 7E 00 mov R6, #0
seg_01:1C58A 12 04 15 lcall seg_01_10415
seg_01:1C58D EF mov A, R7

То, что на выходе переписывается из R7 в A - это и есть прочитанное значение выбора в меню.

Posted by: Rvs on 12-01-2006, 13:47
с этим всё понятно, у меня немного по-другому, т.к. есть функция обработчик

0008 FFFF 04B3 04B4 0078 0000 002C 0008 FFCBBE 0865

и в ней вызов функции PREF_GetChar:

mov R7, #0x78 ; 'x'
mov R6, #0
lcall PREF_GetChar_B1:F237
mov A, R7
mov DPTR, #0xFCD4
movc A, @A+DPTR
mov R5, A
mov R7, #0x80 ; 'А'
mov R6, #0xF

mov DPTR, #ARM_PutChar
ljmp B_BANK0

а дальше что, исходя из кода вызывается функция ARM_PutChar в банке 0, а что за параметры такие??? И что получается сама функция по обработке значения из меню находиться в ARM-е???? И что если я вместо mov A, R7 напишу mov A, 0А и какие я бы значения в меню не выбирал будет всегда одно и тоже????


Posted by: moroz on 15-01-2006, 22:52
cax
Рассматривал я тут твою прошивку к АПЕКС2102 и нашел рутину, которая добавляет сброс строки после 35-го символа. Фичер сам по себе сомнительный. Так что есть вариант просто его зарубить. Но есть вариант интереснее: по-моему эту рутину легким движением руки можно переделать так, чтобы она отжимала текст к нижней кромке окна, т.е. добавляла пустую строку или две там где это необходимо. Как думаешь, есть у этого дела "общественный интерес"? Если да, я бы рискнул попробовать.

Posted by: cax on 16-01-2006, 00:40
Интереса нет, после 35-го символа я ничего не отсекаю - отрезаю пиксельно после определённого офсета, жесткое ограничение на 42 символа, можно сделать 46.

Posted by: moroz on 16-01-2006, 22:39
Доктор, вы о чем? :&#041; Я вообще-то о субтитрах в прошивке к АПЕКС2102 серво 18.03.00.00 версия 5.0

Posted by: cax on 17-01-2006, 01:51
Перечитал. Осознал. Был неправ. Лично мне интересно - дерзай.

Posted by: moroz on 17-01-2006, 12:42
Нет проблем. Начну помолясь. Буду сообщать об успехах (готовься объяснять как паять кабель :-&#041; )

Posted by: cax on 17-01-2006, 14:58
Слушай, а давай вместе напишем переворачивалку иврита ? Я примерно знаю место в АРМ, где идёт подсчёт длины строки субтитров. План такой - написать аналогичную подпрограмму, в которой 2 поинтера (или индекса), один в начале строки, другой - в конце, движутся друг другу навстречу и обмениваются лежащими под ними байтами, пока не встретятся.

Я пытался сам, но у меня от АРМ-ассемблера мозги кипят. Может вдвоём чего сообразим ?

Posted by: moroz on 17-01-2006, 19:33
Чегой-то я не понял. Есть же рутина. Я ж даже топик спциально создавал и докладывал. Проблема ведь не в рутине, а когда ее вызывать. То есть где в общей памяти находится индекс фонта.
Кроме того - она шибко длинная (~0х130), но это наверно можно как-то решить.

Posted by: cax on 17-01-2006, 22:55
То, что я предлагаю, это написать свою подпрограмму в пару десятков байт.
Кстати, сегодня NewAge из mt13x9 сознался, что уже делал подобное в своей прошивке для Xoro. Можно изучить его работу (я пока не нашёл оригинал, с которым можно сравнить его прошивку - а было бы здорово, в два счёта бы нашёл отличия и разобрался бы...)

Posted by: moroz on 17-01-2006, 23:14
Переворот иврита и простой переворот строки - это не одно и то же. Не забудь что английские вставки переворачивать не надо, цифры - ни в коем случае. Но это еще не все. Попробуй в ноутпаде написать ивритское слово и поставить точку. Она перескочит в начало. Файлы с ивритскими субтитрами расчитаны именно на такое поведение, т.е. вся пунктуация заранее перевернута.
Так что парой десятков байтов не обойдешься. А что у тебя есть против прусманской рутины?
Что касается NewAge - можно поизучать его творение, классику надо знать. Оригинал не обязателен. Кинь ссылочку.
И все-таки: допустим, рутину осилили. Как узнать что выбран ивритский фонт?!!

Posted by: ivani4 on 18-01-2006, 08:52
Предложение от moroz(переворот иврита)-грамотный подход.А вариант от cax(переворот строки) тоже приемлим.
Если попробуете написать,то установку и проверку я готов взять на себя(в целях экономии вашего времени).
И ещё,может быть вам поможет-у меня есть прошивка где переворот строки происходит при написании:
имя фильма.avi
имя фильма.heb.sub

Posted by: cax on 18-01-2006, 09:47
QUOTE (ivani4 @ 18-01-2006, 05:52):
Если попробуете написать,то установку и проверку я готов взять на себя(в целях экономии вашего времени).
ivani4:

спасибо, но до тестирования нам ещё далеко

moroz:

Я слышал, что в прошивке к Апекс 811 есть проблема с переворачиванием английских слов и чисел, т.е. как я понял там тоже не реализован полный BiDi (Bi-directional).

Ещё один голос за короткий вариант: свободное место в прошивке (для новых подпрограмм) - не резиновое.

Теперь о Xoro с поворотом субтитров - см. страничку NewAge:
http://newage.mpeg4-players.info/ (http://newage.mpeg4-players.info/
http://newage.mpeg4-players.info/firmwares/xoro/hsd400pro/NAv2/NAv2.html (http://newage.mpeg4-players.info/firmwares/xoro/hsd400pro/NAv2/NAv2.html

Читаем readme, где наряду с кучей других полезных вещей (выбор координат, цвета и прозрачности субтитров) видим новый пункт меню:

6. Text Direction | Set Mpeg4 Subtitle Text Direction
1. Left To Right
2. Right To Left

Одна загвоздка: у меня нет оригинальной прошивки для Xoro - это раз, и такое ощущение, что ARM (05.00.05.01) в этом моде не родной, а откуда взят - неизвестно (аналогичный АРМ 05.00.05.01 в Апексе имеет другую длину)
Сам автор ничего не комментирует, видимо считая, что другие сами разберутся.

Posted by: ivani4 on 18-01-2006, 10:07
официальные прошивки хоро
http://www.xoro-israel.com/service/download.aspx (http://www.xoro-israel.com/service/download.aspx

Posted by: Rvs on 18-01-2006, 11:22
Не поверите!!! :D У меня как раз Xoro 400 Pro и прошивки от NewAge!!! :punk:

Вопросы как раз задавл по прошивке от NewAge, судя по всему речь идёт о прошивке RC2 и её мода V2.

www.xoro-israel.com а здесь прошивок от NewAge нет!!!

Готов помочь!!!! :beer:

Posted by: Rvs on 18-01-2006, 11:47
Прочив внимательно увидел!!! ;&#041;

Да NewAge это ARM (05.00.05.01) переделал и прикрутил к одной из своих прошивок V1B10 для XORO, с какой целью не ясно молчит, хотя .... !!! И если обратил внимание то там страшный косяк со шрифтами!!! Я это ARM (05.00.05.01) приктрутил к другой прошивке, косяк со шрифтами остался, значит точно изменения в ARM. А ARM (05.00.05.01) от Апекса на какой объём DRAM, расчитан может в этом проблема??? А вообще где его можно скачать?? Прикручу его к NewAge и посмотрю, что получиться!!!

Posted by: cax on 18-01-2006, 12:31
ivani4:
спасибо, я знаю где официальные прошивки, но меня интересует не абы какая, а та, которую NewAge взял для своих экспериментов. В любом случае я не видел ни одной прошивки Xoro с АРМ 05.00.05.01, так что похоже она взята из другого плейера и "прикручена" к Xoro. Найти бы такой АРМ до изменений...

Rvs:
А какие косяки со шрифтами ? Если ты про необходимость задавать их размер кратным 4, то это ерунда.
Кстати, не поможешь ли написать реверс или хотя бы найти его в коде NewAge ?
Прошивки Апекса лежат на сайте apexdigital.co.il

Posted by: Rvs on 18-01-2006, 13:54
cax

Xoro давно забила на обновления, самая последняя официальная около года назад появилась!!! :D Поэтому нет прошивок с таким ARM-ом.

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

А чё бы тебе просто не прикрутить его ARM к своей прошивке???

Я нашел твою fm переделанную для апекса 2102, а что ты менял в ARM-е??? Разве в оригинальном ARM-е, нет поддержки длинных имён файлов и кодовых страниц???

И ещё про шрифты не понял, мне их ReMaker показывает в виде набора хаотичных точек, и как тут кратность вяжется????

Posted by: cax on 18-01-2006, 14:10
Rvs, судя по задаваемым вопросам ты мне помочь не сможешь, а я так надеялся. Я пока не научился прикручивать RISC/ARM (простая замена здесь не работает). Более того, поведение кода NewAge в отсутствие поддержки со стороны меню - непредсказуемо, ввиду отсутствия сброса в начальные значения используемых им ячеек.
И я не понимаю, причём здесь имена файлов и кодовые страницы, когда речь о направлении показа текста.

Что касается шрифтов, у меня никогда MTK ReMaker не показывал хаотичных точек. Аналогичная проблема на плейере решается использованием шрифтов, созданных в MTK FontCreator при помеченной опции "multiple of 4".

Posted by: cax on 18-01-2006, 15:52
NewAge раскололся: он использовал ZWAD2410.BIN

Posted by: Rvs on 18-01-2006, 16:08
cax

Мы наверно о разных вещах говорим!!!

В группах на yahoo тему по замене ARM, уже как месяц мусолят, там даже и файл с описанием Ati2 выложил, заменил уже с пяток ARM-ов, замена проходит, менял на прошивке от NA. ARM-ы брал с других аппаратов причём даже с DRAM больше чем у моего Xoro. Аппарат запускался и работал, да есть немного не стыковки (15-20%) с 8032, поэтому и спрашивал по поводу обработчиков функций, что-бы под строить под новый ARM!!! На мой взгляд найти процедуру и вставить к себе можно, но стоит игра свеч, проще всё таки ARM, по богаче прикрутить...!!!

А про имена файлов спрашивал как предположения, сравнил твою прошивку с оригинальной, (то что первое бросилось в глаза) увидел смену шрифтов, и модифицированный ARM. Сейчас привинчу к своему и хотел знать чего ждать от изменений в ARM-е и цель изменений!!!

А шрифты в прошивке от http://newage.mpeg4-players.info/firmwares/xoro/hsd400pro/NAv2/NAv2.html (http://newage.mpeg4-players.info/firmwares/xoro/hsd400pro/NAv2/NAv2.html Font1, Font2, Font3 в ней измененный. Глянь если не тяжело!!! Факт в том что в итоге надписи на экране нормальные.

Posted by: ivani4 on 18-01-2006, 18:22
QUOTE:
И ещё,может быть вам поможет-у меня есть прошивка где переворот строки происходит при написании:
имя фильма.avi
имя фильма.heb.sub
Хочу добавить,что у меня есть такая же прошивка без этой функции.Т.е. ,вероятно,годится для сравнения.

Posted by: moroz on 18-01-2006, 20:34
cax, не волнуйся, напишу я функцию. Может быть даже сегодня. Это проще чем кажется. А вот как ты ее будешь использовать - вот в чем вопрос!

Posted by: moroz on 18-01-2006, 21:16
...и даже еще проще ;&#041;

.text:00008174 Reverse; CODE XREF: .text:0000819Ep
.text:00008174 00 B5 PUSH {LR}; Push registers
.text:00008176 07 4B LDR R3, =0x12345678; Load from Memory
.text:00008178 07 48 LDR R0, =0x1234567A; Load from Memory
.text:0000817A 5B 78 LDRB R3, [R3,#1]; Load from Memory
.text:0000817C 19 18 ADD R1, R3, R0; Rd = Op1 + Op2
.text:0000817E 05 E0 B loc_818C; Branch
.text:00008180 ; ___________________________________________________________________________
.text:00008180
.text:00008180 loc_8180; CODE XREF: .text:0000818Ej
.text:00008180 02 78 LDRB R2, [R0]; Load from Memory
.text:00008182 0B 78 LDRB R3, [R1]; Load from Memory
.text:00008184 03 70 STRB R3, [R0]; Store to Memory
.text:00008186 0A 70 STRB R2, [R1]; Store to Memory
.text:00008188 01 30 ADD R0, #1; Rd = Op1 + Op2
.text:0000818A 01 39 SUB R1, #1; Rd = Op1 - Op2
.text:0000818C
.text:0000818C loc_818C; CODE XREF: .text:0000817Ej
.text:0000818C 88 42 CMP R0, R1; Set cond. codes on Op1 - Op2
.text:0000818E F7 D3 BCC loc_8180; Branch
.text:00008190 00 BD POP {PC}; Pop registers
.text:00008190 ; ___________________________________________________________________________
.text:00008192 00 00 ALIGN 4
.text:00008194 78 56 34 12 _d DCD 0x12345678; DATA XREF: .text:00008176r
.text:00008198 7A 56 34 12 dword_8198 DCD 0x1234567A; DATA XREF: .text:00008178r


****************************************************
А вот последовательность:
00 B5 07 4B 07 48 5B 78 19 18 05 E0 02 78 0B 78 03 70 0A 70 01 30 01 39 88 42 F7 D3 00 BD 00 00 78 56 34 12 7A 56 34 12

Понятно, вместо 0х12345678 - адрес субтитров

Posted by: cax on 18-01-2006, 23:57
QUOTE (Rvs @ 18-01-2006, 13:08):
В группах на yahoo тему по замене ARM, уже как месяц мусолят
Вот как намусолят чего полезное и безглючное - тут я и подключусь.
QUOTE :
Сейчас привинчу к своему и хотел знать чего ждать от изменений в ARM-е и цель изменений!!!
Если ты видел моё руководство по модификации - ты знаешь точно, что именно я меняю в АРМ и зачем.

QUOTE:
Font1, Font2, Font3 в ней измененный. Глянь если не тяжело!!! Факт в том что в итоге надписи на экране нормальные.
Вижу, шрифты выглядят покоцанными - скорее всего MTK ReMaker просто не распознаёт их как следует. Ничего не могу от себя добавить к этому.

Posted by: cax on 19-01-2006, 00:01
QUOTE (moroz @ 18-01-2006, 18:16):
...и даже еще проще ;&#041;

.text:00008174 Reverse; CODE XREF: .text:0000819Ep
.text:00008174 00 B5 PUSH {LR}; Push registers
.text:00008176 07 4B LDR R3, =0x12345678; Load from Memory
.text:00008178 07 48 LDR R0, =0x1234567A; Load from Memory
Придётся малость переделать, я позже уточню как. Дело в том, что адрес конца строки меняется в зависимости от её длины, которую мы получим по выходу из подпрограммы подсчёта длины строки.

И ещё я хочу найти упомянутую прошивку от Апекс 2410.

Posted by: moroz on 19-01-2006, 00:36
А черт, только сейчас обратил внимание... Зачем подпрограмма? Длина лежит во втором байте. Надо только уточнить - включает она ноль или нет. Наверное да. Если это так то у меня баг, ноль перескочит в начало строки. Завтра вечером исправлю.

Posted by: moroz on 19-01-2006, 07:54
cax, колись, как собираешься определять что выбран ивритский фонт? Ведь есть же у тебя какя-то идея, иначе бы ты не начинал.

Posted by: cax on 19-01-2006, 10:01
Ну, где-то на yahoo этот вопрос пробегал, да и я собирался подглядеть у NewAge, для того и ищу прошивку для сравнения...

А весь буфер переворачивать нельзя - только текущую строку, т.е. до ближайшего 0x0D/0x0A или (если строка последняя) - до 0.

Поэтому сперва нужно найти конец строки (подобно тому, как это делается в SUB_SubtitleTextLineCount или SUB_CalcTextLineWidth) и только потом переворачивать...

Posted by: Rvs on 19-01-2006, 10:25
cax

Ок!!! Замечания учёл!!!

Если ты про файл ZWAD2410.BIN, то у меня он есть, правда как прошивка к ямаде!!! Могу кинуть!!! Я её уже адаптировал к Xoro, работает нормально, правда CP1251, не понимает!!!

Posted by: moroz on 19-01-2006, 11:29
QUOTE:
А весь буфер переворачивать нельзя - только текущую строку, т.е. до ближайшего 0x0D/0x0A или (если строка последняя) - до 0.

А, дошло. Вот как бывает, когда второпях. Исправим.
cax, сколько у нас свободного места? А то у меня запланированы работы по улучшению переворота, вплоть до достижения совершенства.

Posted by: cax on 19-01-2006, 13:39
По поводу прочесть из АРМ значение, заданное в меню - читать здесь:
http://groups.yahoo.com/group/mt13x9/message/6676 (http://groups.yahoo.com/group/mt13x9/message/6676

Осталось только понять, о каком загадочном nnnn там говорится.

Свободного места есть 0x128 байт, часть я занял под конверсию из юникода, осталось 0xE3 байт.

Posted by: cax on 19-01-2006, 14:38
QUOTE (Rvs @ 19-01-2006, 07:25):
файл ZWAD2410.BIN
Могу кинуть
Давай - на borus собака mail.ru

Posted by: wallfire on 19-01-2006, 16:12
QUOTE (cax @ 21-12-2005, 10:07):
Ну не насилуй меня, не буду я искать синий квадрат.

А по поводу русских букв, очень важно последним ли идёт шрифт для имён файлов (у него только 128 символов и он занимает 1 номер вместо двух в MTK Remaker). Если да - остальное не очень сложно, если нет - придётся повозиться. Проверь это.
Привет всем! Не красиво перебивать но всё же! cax ты не мог бы мне помочь в моём начинании. у меня YAKUMO DX4 проблема в руссификации имён файлов. дело в том что у меня фонт для имён файлов не находится последним! помоги разобраться! тут прошивка (http://www.yakumo.de/downloads/drivers/DVD%20Master%20DX4/East_European_Untertitel_Unterstuetzung_DX4.zipпробовал далее описанным способом (http://netlab.e2k.ru/forum/index.php?showpost=515440 с подпрограммой написаной в Patching_HU3899_from_A_to_Z русские буквы показывает подчекиваниями. Старый фонт содержал 128 симв. я менял его на самодельный cp1251 256 симв.
есть предложение заменить китайский шрифт на ср1251 и использовать его.

Posted by: cax on 19-01-2006, 17:30
wallfire, решений два: либо определить для чего используются шрифты, идущие после шрифта для имён, и везде где надо подменить номер на новый, который изменится после замены; либо перенести сам шрифт для имён файлов и, соответственно, везде где надо подменить его номер...

Кое-что из этого описано у меня, кое-что в недавно опубликованной на mt13x9 инструкции, но в общем случае - задача нетривиальная.
В ближайшие месяц-два я вряд ли найду время взглянуть, извини.

Posted by: aleshin on 19-01-2006, 17:59
несколько более глубоких вопросов:
1) как устранить (уменьшить) паузу между треками при проигрывании mp3 (от 3 до 5 секунд),когда привод встает и вновь раскручивается
2)как увеличить диапазон регулировки громкости или это у меня на shinco железная проблема (звук до конца не убавляется - у всех шинок так)
3)как сделать доступной регулировку цветности (её нет)
4)в довесок - не подскажете код кнопки eject
уважаемые гуру, поделитесь пожалуйста, если у кого есть какая-то информация , на яху достучатся не могу.

Posted by: cax on 19-01-2006, 19:56
Если вопросы ко мне - то я не знаю ответа ни на один из них.

Проблема номер 1, на мой взгляд, вообще неустранима, т.к. открытие файла с компакта берёт время, и судя по твоему описанию происходит каждый раз с самого начала, без кэширования.
Проблемы 2 и 3 надо решать пультом от телевизора.

Posted by: aleshin on 19-01-2006, 20:13
wallfire у меня он шел первым номером, и ничего все срослось. А ты в 8032 тоже посмотри и исправь. У меня после правки ARM тоже стали прочерки, а после правки 8032 все стало нормально. Правда последние цифры в двух из трех последовательностей были другими.
ROM:00015EEB 94 20 subb A, #0x20
ROM:00015EED 40 06 jc ROM_5EF5
ROM:00015EEF E0 movx A, @DPTR
ROM:00015EF0 D3 setb C
ROM:00015EF1 94 7E subb A, #0x7E
ROM:00015EF3 40 10 jc ROM_5F05

А именно вместо 10 были 06 и 05 если не ошибаюсь, но в целом инструкция права от и до.
Еще заменил один двойной неиспользуемый шрифт так как места шрифтов сместились на один вниз после замены на cp1251 и все встало на свои места.

Posted by: aleshin on 19-01-2006, 20:23
cax отвечаю
1)привод то зачем в паузах останавливается, ведь если принудить перейти его на след.трек он просто перепозиционирует головку и не делает такой паузы (практически мгновенно начинает воспроизводить)
2)у меня активная акустика 5.1 без ДУ (бралось не под данный аппарат , но меня более чем устраивает
3) в RGB режиме телевизор регулировать цвет не в состоянии, а качество полного скарта терять не хочется

Posted by: cax on 19-01-2006, 22:48
QUOTE (aleshin @ 19-01-2006, 17:13):
Еще заменил один двойной неиспользуемый шрифт так как места шрифтов сместились на один вниз после замены на cp1251 и все встало на свои места.
Вот, пожалуйста, замечательный пример творческого подхода к решению задачи. Инструкциями на все случаи жизни не напасёшься, тут понимание нужно. Браво !

Posted by: moroz on 20-01-2006, 00:36
Вот, поправил. Теперь переворачивает построчно. К моему ужасу рутина (вернее теперь уже три рутины) разрослась аж до 0х60 байт, а ведь еще и не начал ее "окультуривать". Посмотрим как пойдет дальше.

Posted by: cax on 20-01-2006, 09:45
Какая-то беда с аттачем - не открывается почему-то...

Posted by: moroz on 20-01-2006, 12:52
Действительно... Господа модераторы, ау! Помогите, пожалуйста.
А в принципе это промежуточная версия, не страшно. Это я так, в рамках "квартального отчета" :&#041;

В любом случае, вот она в бинарном виде:
00 B5 03 78 0D 2B 03 D9 01 30 03 78
0D 2B FB D8 00 BD 00 00 00 B5 88 42 07 D2 02 78
0B 78 03 70 0A 70 01 30 01 39 88 42 F7 D3 00 BD
30 B5 0B 4D 2A 78 13 06 2C 1C 1B 0E 01 E0 01 34
23 78 0C 2B FB D9 20 1C FF F7 DC FF 05 1C 69 1E
20 1C FF F7 E1 FF 2A 78 00 2A EC D1 30 BD 00 00
78 56 34 12

Posted by: Rvs on 20-01-2006, 13:20
cax

Если не тяжело ссылку на инструкцию на mt13x9??? Поискал там, но ничего не нашел. :&#040;
Тоже есть проблемка по смене шрифтов.
Имею:

Font 1, Font 2, Font 3 тут в кучу все кодовые таблицы (1250-1251)- меню, браузер.

Font 4 - Иконки

Font 5, Font 6, Font 7 - опять в кучу 1250-1251 - субтитры

Хочу:

Font 1 (1251) - меню, браузер.

Font 2 - Иконки

Font 3 (1251) - субтитры

У кого какие идеи???

Posted by: Rvs on 20-01-2006, 14:28
сах

В твоей ARM процедуре UnicodeToCP из описания, где задаётся номер шрифта???

Posted by: cax on 20-01-2006, 17:23
Rvs, его там нет и быть не может. Процедура всего лишь переводит 2-байтовый код символа в однобайтовый.

Posted by: Rvs on 20-01-2006, 17:53
мда... лопухнулся :&#040;. Я основывался на документе от NewAge "MPEG4 Subtitle Display in ARM (RISC) Code", там у него Font выбирается.

LDRB R3, [R0,#1] ; FontID
ADD R0, R5, #0
ADD R2, SP, #0x30+var_2C
BL OSD_DisplayCharacter


Думаю что и в процедуре UnicodeToCP от NewAge тоже выбирается, она сложнее.

А как же всё таки найти номер шрифта???

QUOTE:
Осталось только понять, о каком загадочном nnnn там говорится.

На мой взгляд nnnn выдаёт утилита от NewAgе, примерно вот так:

MTK (ARM Codes).bin

Version: 05.00.05.07

ADDRESS_1 = 0x0376C400
ADDRESS_2 = 0x0376C800
SHARED MEMORY = 0x0376CC00
CDTEXT BUFFER = 0x0376EC00
ADDRESS_3 = 0x03770000

Additional info (could be wrong):
SACD : NO
DVD-AUDIO : NO
DRAM Size : 8 MB

Posted by: moroz on 20-01-2006, 22:18
Итак, есть много хороших новостей и одна плохая.
Хорошие новости: код готов и более-менее отлажен (на РС). Алгоритм учитывает английские вставки и перевернутую пунктуацию в начале и конце строки. Проверен на нескольких файлах субтитров - вроде работает неплохо, за исключением трудных случаев типа скобок и т.п.
Плохая новость - как можно видеть, код разросся до 0х119 байт.

*****************************************

Болтом отмечена точка входа

00 B5 D0 23 00 06 1B 06 02 0E C0 18 00 0E 09 28
05 D9 13 1C 41 3B 1B 06 1B 0E 19 2B 01 D8 01 20
00 BD 13 1C 61 3B 1B 06 1B 0E 19 2B F7 D9 13 1C
20 33 1B 06 1B 0E 1A 2B F1 D9 00 20 F0 E7 00 00
00 B5 88 42 07 D2 02 78 0B 78 03 70 0A 70 01 30
01 39 88 42 F7 D3 00 BD F0 B5 47 46 80 B4 00 23
2D 4E 98 46 34 78 20 1C FF F7 CA FF 00 28 3D D0
35 1C 0D 2C 3C D9 01 35 28 78 0D 28 FB D8 03 06
00 2B 04 D1 01 23 98 46 01 E0 01 3D 28 78 00 06
00 0E FF F7 B5 FF 00 28 F7 D0 30 1C 29 1C FF F7
CF FF AE 42 19 D2 34 78 20 06 00 28 29 DB 00 0E
FF F7 A6 FF 00 28 24 D0 34 1C AC 42 06 D8 23 78
18 06 00 28 16 DB 01 34 AC 42 F8 D9 78 1C 61 1E
66 1C FF F7 B5 FF AE 42 E5 D3 2B 78 00 2B 02 D0
43 46 00 2B BE D0 08 BC 98 46 F0 BD 01 36 B9 E7
30 78 C4 E7 00 0E FF F7 83 FF 00 28 E6 D1 01 34
E2 E7 20 06 00 0E FF F7 7B FF 00 28 00 D0 37 1C
01 36 AE 42 D0 D8 C6 E7 78 56 34 12

Posted by: cax on 21-01-2006, 00:21
moroz:

Я заранее извиняюсь, если задерживаю - ибо у меня сейчас почти нет времени на работу с прошивками, но вскоре я надеюсь заняться встраиванием, проверками и т.д.
Восхищён твоей скоростью написания кода, с удовольствием перейму технологию - но позже.

Posted by: cax on 21-01-2006, 00:23
Rvs: все известные мне номера шрифтов задаются в коде 8032, не в АРМ.
Взгляни для начала на встроенный в MTK ReMaker патч субтитров - там задаётся номер шрифта для них...

Posted by: moroz on 21-01-2006, 01:27
Боже упаси, спешки нет. А технология настолько тривиальная, что ты наверно будешь разочарован :&#041;

Posted by: ivani4 on 21-01-2006, 12:45
cax
QUOTE:
встроенный в MTK ReMaker патч субтитров
сах,если можешь,хотя бы вкратце об основных назначениях и применении этого патчера. Я не однокрактно пробовал его использовать ,но у меня никогда ничего не получалось.

Posted by: aleshin on 21-01-2006, 18:28
Поделитесь если у кого есть mtkFilenameLenPatcher_ом, плиз. qwer@ufanet.ru. Заранее благодарен

Posted by: cax on 21-01-2006, 21:47
QUOTE (ivani4 @ 21-01-2006, 09:45):
cax
QUOTE:
встроенный в MTK ReMaker патч субтитров
сах,если можешь,хотя бы вкратце об основных назначениях и применении этого патчера. Я не однокрактно пробовал его использовать ,но у меня никогда ничего не получалось.
Он или отображается в меню и работает, или не отображается и не работает, вот и весь секрет. Позволяет выбрать номер шрифта для субтитров и ещё чего-то, не помню что.

Posted by: moroz on 22-01-2006, 14:59
QUOTE (Rvs @ 20-01-2006, 17:53):
А как же всё таки найти номер шрифта???

QUOTE:
Осталось только понять, о каком загадочном nnnn там говорится.

На мой взгляд nnnn выдаёт утилита от NewAgе
Я что-то потерял нить. Парень там спрашивает как ему найти адрес в общей памяти если ему известен оффсет от ее начала. Ему отвечают: возьми адрес начала и прибавь оффсет. У нас адрес начала общей памяти как раз известен. Мы оффсета не знаем. Или кто-то знает?

Posted by: cax on 22-01-2006, 15:15
moroz:

До недавнего времени я как раз не знал адрес начала общей памяти... но мне уже разъяснили на mt13x9: он идёт почти сразу после т.н. "зоны сообщений об ошибке C++" (искать, например, по стрингу "library"): сперва там идут 4 байта "00 00 00 06", а затем сразу адрес. Так что это я для себя уже уяснил.

Что касается офсета - то мы его знаем: в строке меню 6-е число.
(напоминаю, что адрес EEPROM для использования из кода 8032 при помощи PREF_GetChar - 5-е число)

Вот пример (пометил болдом 6-е):

>> ==================================================================
>> 3. No Pic. | Screen Saver | Screen Saver
>> 0008 FFFF 0099 00AB 0007 0020 0001 0000 FF2F51 07C9 - ROM:2F57
>> => 1. On | Screen Saver On | On
>> 0150 00E7 0150 00 - ROM:2F43
>> 2. Off | Screen Saver Off | Off
>> 0151 00E8 0151 01 - ROM:2F4A
>> ===================================================================

Я сегодня игрался с этим и почти уже научился отлавливать установки меню из кода АРМ. Как научусь окончательно - дам знать.

Posted by: aleshin on 23-01-2006, 14:17
сах
Довожу прошивку до идеала (для себя). Сделал длинные имена файлов, обрезку, широкий браузер, но при воспроизведении mp3 и wma, когда начинается прокрутка имени файла в правой части строки остаются "артефакты" (т.е. остатки) букв, в далнейшем прокрутка идет только в левой части строки, как и была раньше - короткая прокрутка. Не подскажешь как с этим бороться, можно ли увеличить длину прокручиваемой области или вообще отключить прокрутку имени (длина отображаемой части меня и так устраивает).
Можно конечно на это не заморачиваться, но ведь победа так близка!!!!!

Posted by: cax on 23-01-2006, 15:28
aleshin:
Извини, но у меня ни на одном из трёх (разных) плейеров при воспроизведении ничего не прокручивается, так что я даже не знаю как это выглядит. Помочь не смогу.

Posted by: aleshin on 23-01-2006, 16:03
сах
Ну тогда и заморачиваться не буду. Выглядит прокрутка как бегущая строка, которая сдвигается на один символ примерно раз в секунду. Прошивка от shinco dvp-8811 (dvp-8830).

Posted by: cax on 23-01-2006, 16:17
QUOTE (moroz @ 18-01-2006, 21:36):
Длина лежит во втором байте.
Я через пень-колоду научился кое-как читать из АРМ заданные в меню значения, теперь хочу испытать твою процедуру. Поясни, пожалуйста, какие аргументы она принимает, и если знаешь, то как получить адрес буфера субтитров. Я опять запутался.

Короче, нужна помощь с интеграцией.
Мы уже в двух шагах от цели !

Пы.Сы. Если выкинуть процедуру перевода юникодных букв в именах файлов, то твоя процедура с трудом помещается в свободном месте АРМ. Видимо, мне придётся научиться его "расширять", как это делают мастера в группе Яху.

Posted by: moroz on 23-01-2006, 18:39
Aргументов нет. Все что нужно - подставить вместо 12345678 (последнее слово) адрес субтитра + 2, т.е. начало самого текста.
Как найти адрес субтитров описано в статье Нью Эйджа. Если некогда возиться - я могу помочь, у меня уже рука набита.
Насчет дополнительного свободного места - было бы очень кстати. Я нечеловеческими усилиями сократил размер кода до 0хF0, но этого все равно недостаточно.
QUOTE:
Я через пень-колоду научился кое-как читать из АРМ заданные в меню значения
У меня тут появилась идея как просматривать из АРМ любую память, в т.ч. общую, в рантайме. Если интересно - можно заняться.

Posted by: cax on 23-01-2006, 19:04
moroz:

Идея просмотра в рантайме у меня простая донельзя: при показе имени файла с буквами с кодом > 250 вместо самой буквы показывать любой другой байт, взятый из памяти или ещё откуда. С этим проблем нет, я именно так дебагировал вычитку значений меню.

А насчёт подстановки адреса - подскажи как найти адрес субтитра, а то в статье Нью Эйджа я до конца не разобрался.

Вызывать твой код собираюсь где-то в начале SUB_Mpeg4SubtitleText_Display

Мне достаточно войти в точку входа твоей подпрограммы командой BL, и она сама вернёт меня назад по окончании, верно ? Я бы ещё перед возвращением хотел выполнить те 4 байта команд, которые затираются вышеупомянутой командой BL. Если это нельзя встроить перед возвращением - напишу в обходную (но это съест ещё несколько байт).

Posted by: moroz on 23-01-2006, 21:12
Цитирую:
QUOTE :
Мне достаточно войти в точку входа твоей подпрограммы командой BL, и она сама вернёт меня назад по окончании, верно ?
Очень на это надеюсь...

QUOTE :
Идея просмотра в рантайме у меня простая донельзя: при показе имени файла с буквами с кодом > 250 вместо самой буквы показывать любой другой байт, взятый из памяти или ещё откуда. С этим проблем нет, я именно так дебагировал вычитку значений меню.
Моя идея - задавать желаемый адрес в файле субтитра, а при показе подставлять область памяти за этим адресом. Можно показывать 32 байта в каждом субтитре, т.е. возможности практически неограниченые.

Posted by: ivani4 on 24-01-2006, 09:47
cax
Маэстро!Может быть у тебя найдётся возможность помочь.
Делаю поддержку ивр/рус имён файлов.Расклад такой:
Font 0-1 set up/menu
Font 2 иконки(значки)
Font 3 имена файлов
Font 4-5 субтитры
После замены Font 3 ситуация изменилась так:
Font 0-1
Font 2
Font 3-4
Font 5-6
Субтитры теперь не отображаются.
Не смотря на это произвёл нужные изменения в АРМ и с именами файлов всё получилось.
А как востановить субтитры?

Posted by: cax on 24-01-2006, 10:27
ivani4:

Если MTK ReMaker позволяет выполнить Patch->Subtitle, сменить там номер шрифта для субтитров на 5. При этом где-то в Code Part->8032->Page? появится "SUB_Style (Patched)" с таким фрагментом:

01D339: 7F05 mov R7, #05
01D33B: 1205AD lcall #05AD
01D33E: D245 setb RAM_XX.Z

Если MTK ReMaker не позволяет - искать схожий фрагмент самому и самому его менять.

Posted by: ivani4 on 24-01-2006, 10:47
cax
MTK ReMaker не позволяет выполнить Patch->Subtitle.
А как искать схожий фрагмент и менять его я не совсем понял,но сделал так:
На мой взгляд похожее место в SUB_Style:
01E37B: 7F04 mov R7, #04
01E37D: 120583 lcall #0583
01E380: 7F02 mov R7, #02
Решил что нужно переправить по адресу 1E37C 04 на 05.
Получил:
01E37B: 7F05 mov R7, #05
01E37D: 120583 lcall #0583
01E380: 7F02 mov R7, #02
Но это не помогло
Как нужно было сделать??????????????????

Posted by: cax on 24-01-2006, 13:01
1) аттачи почему-то не работают
2) Каким образом это похоже ? Там должно быть "setb", разве нет ?
3) иногда шрифт субтитров задаётся совсем в другом месте - например, в ивритизированных прошивках с переключателем шрифта для Апекс 2102 и 2400. Об этом есть у меня в инстру... ну, ты понял.

Posted by: ivani4 on 24-01-2006, 13:07
сах,нет вроде бы setb.А как и что искать в другом месте я не знаю.Если чувствуешьчто это сложно,то давай оставим это дело.Не удобно тебя напрягать.


Posted by: cax on 24-01-2006, 14:23
Ты прав, давай пока оставим.
В качестве альтернативного решения - добавить новый шрифт для имён файлов под номерами 6-7 и поменять его номер там, где он задаётся, но это тоже на пальцах не рассказать...

Posted by: cax on 24-01-2006, 14:28
QUOTE (moroz @ 23-01-2006, 18:12):
Цитирую:
QUOTE:
ROM:0000D75E 57 48 LDR R0, =pARM_Shared_Memory
ROM:0000D760 02 68 LDR R2, [R0]
ROM:0000D762 3B 20 80 01 MOVL R0, 0xEC0 ; Subtitle Buffer for Yamada 6700
ROM:0000D766 10 18 ADD R0, R2, R0

pARM_Shared_Memory - это и есть субтитр. Первые два байта - длина, дальше строка. Вот адрес строки и надо подставить.

Странно, почему ты пришёл к такому выводу ?
Что же тогда означает офсет 0xEC0 с комментарием "буфер субтитров" ?
И откуда тебе известно про 2 байта, в которых хранится длина буфера (или длина текущего субтитра) ?

Posted by: ivani4 on 24-01-2006, 14:34
cax
ОК.Оставляем это дело.И я по прежнему жду когда ты освободишься что бы рассмотреть баг 60.

Posted by: moroz on 24-01-2006, 15:38
Исключительно на основе анализа кода. Ошибка крайне маловероята. Если нужны доказательства и цитаты - предоставлю, но это займет какое-то время.

Posted by: moroz on 24-01-2006, 22:31
Ну вот хотя-бы это:
Пресловутый пример ограничения субтитра по длине (бывш. баг 60) из прошивки к АПЕКС811.
У меня вместо "pARM_Shared_Memory" искомый адрес называется просто "Subtitle". Длина субтитра берется из первого байта (нулевой просто игнорируется, видимо длина больше 256 просто не укладывается в голове). Дальше она сравнивается с 0х78, если больше - меняется на 0х78 и по этому офсету в строку прописывается ноль.

КСТАТИ
Вызывать мой код надо после этого куска. Боюсь что иначе не будет нуля, а я его ищу.


SUB_Mpeg4SubtitleText_Display
...
ROM:0000D6A8 BL SUB_GetSubLength
ROM:0000D6A8
ROM:0000D6AC ADD R6, R0, #0
ROM:0000D6AE CMP R6, #0x78
ROM:0000D6B0 BLS loc_D6B4
ROM:0000D6B0
ROM:0000D6B2 MOV R6, #0x78
ROM:0000D6B4
ROM:0000D6B4 loc_D6B4; CODE XREF: ROM:0000D6B0j
ROM:0000D6B4 MOV R1, #0
ROM:0000D6B6 ADD R0, R6, #0
ROM:0000D6B8 BL SUB_SetChar_R1_At_R0_Offset
...


ROM:0000D2EC SUB_GetSubLength;
ROM:0000D2EC 000 LDR R0, =Subtitle
ROM:0000D2EE 000 LDRB R0, [R0,#1]
ROM:0000D2F0 000 BX LR
ROM:0000D2F0 ; End of function SUB_GetSubLength

ROM:0000D2FA SUB_SetChar_R1_At_R0_Offset;
ROM:0000D2FA 000 LDR R2, =Subtitle
ROM:0000D2FC 000 ADD R0, R2, R0
ROM:0000D2FE 000 STRB R1, [R0,#2]
ROM:0000D300 000 BX LR
ROM:0000D300 ; End of function SUB_SetChar_R1_At_R0_Offset



Posted by: ivani4 on 24-01-2006, 23:06
moroz
Учитывая что господин cax сильно занят,решил обратится к тебе.
Скачал кучу книг по иде и ассемблеру,пытался разобратся самостоятельно,но безрезультатно.
Инструкция от сах начинается с баг 60 :
Try to find the code that looks like this:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C
Никак не могу сообразить как это ищут?Не знаю с чего начать.Или без знаний ассемблера ничего нельзя сделать?

Posted by: moroz on 25-01-2006, 08:09
сах
Поправка. В статье Нью эйджа действительно субтитр находится по офсету ЕС0 в общей памяти. Приношу извинения. Но в АПЕКСе используется прямая ссылка.
Короче - самое точное определение: в функции SUB_ClearMpeg4SubtitleParams надо смотреть куда прописываются нули - там и субтитр.

ivani4
Боюсь что даже со знанием ассемблера сложновато по такой инструкции (сах - не в обиду). Например если вместо регистра R0 используется R6, как в моем примере, то вся последовательность изменится. Нужно чуть-чуть знать ассемблер и, что хуже, английский, и изучить статью Нью эйджа.

Posted by: ivani4 on 25-01-2006, 09:44
moroz
Тем не менее сах считает возможным вдолбить мне это.Но у меня уже нет сил ждать когда он освободится.Я хочу пока сделать,как мне кажется,простую вещь:взять прошивку расматриваемую в инструкции и увидеть в иде то что сах уже нашёл:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C
Хотя бы это ты можешь мне объяснить?

Posted by: moroz on 25-01-2006, 10:55
Так ищи последовательность, ты же это уже делал: 3C 28 01 D9 3C 20

Posted by: ivani4 on 25-01-2006, 11:19
moroz Нашёл такую последовательность.А как увидеть такое:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C
?????????????????????????????????????????????????????????????

Posted by: cax on 25-01-2006, 12:42
QUOTE (moroz @ 25-01-2006, 05:09):
Боюсь что даже со знанием ассемблера сложновато по такой инструкции (сах - не в обиду).
А на что обижаться - я ж там так и написал, что, мол, извините, этот момент я на пальцах объяснить не смогу, читайте классиков и всё такое.
Но, как известно, объясняя другим начинаешь сам лучше понимать, так что есть шанс, что я рожу что-то более внятное :&#041;

Posted by: moroz on 25-01-2006, 23:16
cax, все ли понятно с адресом субтитров? Нужна ли еще какая-то помощь в интеграции?

ivani4
По-моему ты сам уже ответил - использовать IDA

Posted by: ivani4 on 25-01-2006, 23:29
moroz.Пойми,я никогда ранее не пользовался идой.Пытаюсь,пока не очень получается.Сегодня удалось разобратся как ищут hex последовательность.Но я никак не могу понять как увидеть информацию в таком виде:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C

Posted by: cax on 26-01-2006, 00:19
moroz, спасибо, пока всё ясно.
Надеюсь скоро всё проверить. Дам знать.

Posted by: cax on 26-01-2006, 00:21
QUOTE (ivani4 @ 25-01-2006, 20:29):
moroz.Пойми,я никогда ранее не пользовался идой.Пытаюсь,пока не очень получается.Сегодня удалось разобратся как ищут hex последовательность.Но я никак не могу понять как увидеть информацию в таком виде:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C
ivani4, по какому адресу ты нашёл цепочку и сколько раз ?

Posted by: ivani4 on 26-01-2006, 08:50
cax.Точно такую цепочку я нигде не нашёл.Была поставлена задача :
QUOTE:
Я хочу пока сделать,как мне кажется,простую вещь:взять прошивку расматриваемую в инструкции и увидеть в иде то что сах уже нашёл:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C
Так в Hyundai 3899 (02.09.00.00 ) эта цепочка, по указаным адресам ,выглядит иначе :3E 28 01 D9 3E 20 ,но я не стал вдаваться в подробности и сказал что нашёл.
Или ты подразумевал поиск такой цепочки в моём двд ?

Posted by: cax on 26-01-2006, 19:11
QUOTE (moroz @ 23-01-2006, 15:39):
Я нечеловеческими усилиями сократил размер кода до 0хF0, но этого все равно недостаточно.
Я подсократил Unicode2CP на 8 байт (думаю, что можно и ещё), перепроверил кол-во свободного места, и теперь у нас есть его целых 0xF1 байт...
Не хватает совсем чуть-чуть на обвязку...

Давай свой самый короткий код, буду тестировать, а с местом потом посмотрим что делать.

Posted by: moroz on 26-01-2006, 21:21
Последнее достижение - длина Е8
Бонус: место для вызова функции уже подготовлено (отмечено красным)

00 B5 00 06 00 0E 2F 28 01 D9 3A 28 0B D3 40 28
01 D9 5B 28 07 D3 60 28 01 D9 7B 28 03 D3 DF 28
03 D9 FB 28 01 D2 01 20 00 E0 00 20 00 BD 00 00
00 B5 88 42 07 D2 02 78 0B 78 03 70 0A 70 01 30
01 39 88 42 F7 D3 00 BD F0 B5 26 4C 00 27 00 E0
01 34 20 78 FF F7 D4 FF 00 28 F9 D0 25 1C 23 78
0D 2B 03 D9 01 35 2B 78 0D 2B FB D8 2B 78 00 2B
02 D1 01 27 00 E0 01 3D 28 78 FF F7 C1 FF 00 28
F9 D0 20 1C 29 1C FF F7 D3 FF AC 42 22 D8 08 E0
20 78 FF F7 B5 FF 00 28 00 D0 26 1C 01 34 AC 42
08 D8 20 78 80 28 F3 D2 FF F7 AA FF 00 28 EF D0
00 E0 01 34 AC 42 06 D8 20 78 80 28 F9 D3 FF F7
9F FF 00 28 F5 D0 70 1C 61 1E FF F7 B1 FF 01 34
AC 42 E6 D9 2B 78 00 2B 01 D0 00 2F B9 D0 XX XX
XX XX
F0 BD 78 56 34 12

Posted by: cax on 26-01-2006, 22:07
moroz, гениально ! Я как-то занимался оптимизацией ассемблерного кода, и по себе знаю какая это заморочка.

Теперь о моей части. Код проверки выбора в меню выглядит примерно так (вместо R0 можно использовать любой другой регистр):

LDR R0, =sharedMemAdr (этот адрес уже находится неподалёку от места, где лежит этот код - что есть хорошо)
ADD R0, #offset_of_menu_choice
LDRB R0, [R0]
CMP R0, #value
BNE dont_reverse_and_exit

На всё про всё - 5*2=10 байт.

Вся эта радость, если будет висеть снаружи, потребует свой PUSH/POP и ещё команду перехода внутрь кода реверсирования.
Не будет ли так любезен глубокоуважаемый moroz красиво встроить эти 5 команд или их аналог в свой код ?

Похоже, что в конечном итоге мы уложимся в отведённое место.

Posted by: cax on 26-01-2006, 22:29
moroz:

И ещё: судя по твоим листингам, похоже я что-то не так делаю, ибо у меня подпрограммы не опознаются (SUB_GetSubLength, SUB_ClearMpeg4SubtitleParams и т.д.)
Разве нужно что-то делать в IDA кроме прогона MT1389_ARM_v1.6.idc ?

Posted by: cax on 26-01-2006, 23:01
QUOTE (moroz @ 24-01-2006, 19:31):
КСТАТИ
Вызывать мой код надо после этого куска. Боюсь что иначе не будет нуля, а я его ищу.
У меня этот кусок выглядит стандартно - т.е. как в доке НьюЭйджа:

ROM:0000F5C8 loc_F5C8
ROM:0000F5C8 02 98 LDR R0, [SP,#0x30+var_28]
ROM:0000F5CA 5C 28 CMP R0, #0x5C ; '\'
ROM:0000F5CC 01 D9 BLS loc_F5D2
ROM:0000F5CE 5C 20 MOV R0, #0x5C ; '\'
ROM:0000F5D0 02 90 STR R0, [SP,#0x30+var_28]
ROM:0000F5D2
ROM:0000F5D2 loc_F5D2
ROM:0000F5D2 02 98 LDR R0, [SP,#0x30+var_28]
ROM:0000F5D4 00 24 MOV R4, #0
ROM:0000F5D6 34 54 STRB R4, [R6,R0]
ROM:0000F5D8 30 1C ADD R0, R6, #0

и так далее.

Хоть убей, не могу найти =Subtitle.

Posted by: moroz on 26-01-2006, 23:18
cax, спасибо на добром слове, но хочу пояснить: я ассемблерный код не пишу. Мне даже страшно подумать, сколько времени заняло бы написать такое на ассемблере, даже если бы я его хорошо знал. Для этих дел люди придумали компайлер - вот его-то я и использую. Я предупреждал что ты будешь разочарован.
Насчет кода проверки - постараюсь надурить компайлер так чтобы он изготовил желаемый код, но 10 байт не гарантирую.

*********************

QUOTE :
У меня этот кусок выглядит стандартно
Здесь все сложнее. Адрес находится на стэке, у меня не получилось отследить как он туда попал, кажется в виде аргумента. А что у тебя в SUB_ClearMpeg4SubtitleParams?

Posted by: moroz on 26-01-2006, 23:22
Сколько дать offset_of_menu_choice?

Posted by: cax on 26-01-2006, 23:23
Я его (SUB_ClearMpeg4SubtitleParams) не нашёл. Не исключено, что у меня его и нет.

На всякий случай: в данный момент работа идёт над прошивкой к Apex JDP707 (YPD701D.BIN)

offset_of_menu_choice (1 байт) - какой угодно. Я буду его потом менять сам под конкретный плейер.

То же касается и загрузки адреса общей памяти - байткод я буду вычислять сам
(один байт - расстояние от команды до числа, делённое на 4, второй - код команды загрузки)

QUOTE:
Для этих дел люди придумали компайлер - вот его-то я и использую

Я уже давно догадался, что ты с оптимизациями кросс-компилятора играешься.
А для тестирования компилируешь обычным компилятором под свой PC, верно ?

Posted by: moroz on 26-01-2006, 23:36
Абсолютно

Заняло, кстати, 8 байт. Оптимайзер, однако.


00 B5 00 06 00 0E 2F 28 01 D9 3A 28 0B D3 40 28
01 D9 5B 28 07 D3 60 28 01 D9 7B 28 03 D3 DF 28
03 D9 FB 28 01 D2 01 20 00 E0 00 20 00 BD 00 00
00 B5 88 42 07 D2 02 78 0B 78 03 70 0A 70 01 30
01 39 88 42 F7 D3 00 BD F0 B5 28 4C 00 27 28 4B
9B 7A 01 2B 49 D1 00 E0 01 34 20 78 FF F7 D0 FF
00 28 F9 D0 25 1C 23 78 0D 2B 03 D9 01 35 2B 78
0D 2B FB D8 2B 78 00 2B 02 D1 01 27 00 E0 01 3D
28 78 FF F7 BD FF 00 28 F9 D0 20 1C 29 1C FF F7
CF FF AC 42 22 D8 08 E0 20 78 FF F7 B1 FF 00 28
00 D0 26 1C 01 34 AC 42 08 D8 20 78 80 28 F3 D2
FF F7 A6 FF 00 28 EF D0 00 E0 01 34 AC 42 06 D8
20 78 80 28 F9 D3 FF F7 9B FF 00 28 F5 D0 70 1C
61 1E FF F7 AD FF 01 34 AC 42 E6 D9 2B 78 00 2B
01 D0 00 2F B9 D0 FF F7 85 FF F0 BD 78 56 34 12

Posted by: cax on 26-01-2006, 23:47
Эээээ... зря я тебе сказал "любое число"...

LDRB R3, [R3,#0xA] - это, конечно, офигительно, но если там будет что-то поболее 0xA, оно точно закодируется 2-мя байтами, или в этом виде адресации есть ограничение на величину офсета ?

Пы.Сы. Если не буду долго отвечать - значит уснул и продолжу, скорее всего, через день-два (или более).

Posted by: moroz on 27-01-2006, 00:14
Ограничение на длину, конечно, есть. Надеюсь нам хватит. А то придется заплатить еще двумя байтами.

Спокойной ночи.

Posted by: moroz on 27-01-2006, 01:46
Aдреса мне найти не удалось. Зато вот такая идея:

вот наше любимое место

ROM:0000F5C8 LDR R0, [SP,#0x30+var_28]
ROM:0000F5CA CMP R0, #0x5C ; '\'
ROM:0000F5CC BLS loc_F5D2
ROM:0000F5CE MOV R0, #0x5C ; '\'
ROM:0000F5D0 STR R0, [SP,#0x30+var_28]
ROM:0000F5D2
ROM:0000F5D2 loc_F5D2 ; CODE XREF: SUB_Mpeg4SubtitleText_Display+7Ej
ROM:0000F5D2 LDR R0, [SP,#0x30+var_28]
ROM:0000F5D4 MOV R4, #0
ROM:0000F5D6 STRB R4, [R6,R0]
ROM:0000F5D8 ADD R0, R6, #0
ROM:0000F5DA BL sub_F442

перед вызовом sub_F442 искомый адрес как раз в нулевом регистре. Вместо нее вызвать мой код, а я перед вызовом sub_F442 позабочусь R0 восстановить. Должно сработать. Только вот не знаю, когда теперь дойдут руки, постараюсь не задерживать.

Posted by: moroz on 27-01-2006, 16:20
Дело все больше запутывается, надеюсь что нигде не напорол.

Вызывать вместо sub_F442
Максимальный offset_of_menu_choice - 0x1F. Если больше - добавляется двухбайтная команда.


00 B5 00 06 00 0E 2F 28
01 D9 3A 28 0B D3 40 28 01 D9 5B 28 07 D3 60 28
01 D9 7B 28 03 D3 DF 28 03 D9 FB 28 01 D2 01 20
00 E0 00 20 00 BD 00 00 00 B5 88 42 07 D2 02 78
0B 78 03 70 0A 70 01 30 01 39 88 42 F7 D3 00 BD
F0 B5 47 46 80 B4 07 1C 84 1C 00 23 98 46 2A 4B
1B 68 DB 7F 01 2B 4C D1 00 E0 01 34 20 78 FF F7
CB FF 00 28 F9 D0 25 1C 23 78 0D 2B 03 D9 01 35
2B 78 0D 2B FB D8 2B 78 00 2B 03 D1 01 23 98 46
00 E0 01 3D 28 78 FF F7 B7 FF 00 28 F9 D0 20 1C
29 1C FF F7 C9 FF AC 42 22 D8 08 E0 20 78 FF F7
AB FF 00 28 00 D0 26 1C 01 34 AC 42 08 D8 20 78
80 28 F3 D2 FF F7 A0 FF 00 28 EF D0 00 E0 01 34
AC 42 06 D8 20 78 80 28 F9 D3 FF F7 95 FF 00 28
F5 D0 70 1C 61 1E FF F7 A7 FF 01 34 AC 42 E6 D9
2B 78 00 2B 02 D0 43 46 00 2B B7 D0 38 1C FF F7
81 FF
08 BC 98 46 F0 BD

Posted by: cax on 28-01-2006, 18:00
Запутывается - не то слово.

Первый запуск оказался неудачным. Никакой кабель не понадобился - ведь зависает оно только при попытке показа субтитров, но сдаётся мне, что мы не можем вызывать подпрограмму sub_F442 сами, ибо где-то внутри неё идёт работа со стеком, а мы его подвинули своим PUSH-ем.

Давай попробуем ещё разок, но на этот раз:

1) пусть вместо sub_F442 мы затрём идущие перед ним команды
F5D6 34 54 STRB R4, [R6,R0]
F5D8 30 1C ADD R0, R6, #0

а при входе в подпрограмму первым делом их выполним, после чего уже можно сделать PUSH {R0-R7,LR}

Заодно решится проблема с переходом на заключительный POP {R0-R7,PC} (да, есть такой переход) вместо перехода на продублированную затёртую команду (которые теперь будут идти вначале твоего кода)

2) Будь добр, сделай проверку меню на 2 байта длиннее, но чтобы я мог подставить любой байт, а не только до 0x1F

Заранее благодарю.

Posted by: moroz on 28-01-2006, 20:13
QUOTE:
где-то внутри неё идёт работа со стеком, а мы его подвинули своим PUSH-ем
Исключено. Любая функция работает со стеком в двух случаях:
1. Она сама туда "пушнула" (наш случай)
2. Вызывающая функция сунула туда свои аргументы - не наш случай, т.к. перед вызовом sub_F442 пушей нет.
Таким образом, работа со стеком локализована в пределах каждой функции.

Баг состоит в другом, сейчас я это заметил. sub_F442 возвращает значение в R0, а я его бесстыдно затираю своим. Виноват, исправлюсь.

Posted by: cax on 28-01-2006, 20:26
И всё же, сделай, пожалуйста, как я попросил - 2 команды вначале

(даже если мне померещилось, что в недрах вызова подпрограммы идёт снятие значений со стека с индексом, и что выход реализован не совсем корректно)

Posted by: moroz on 28-01-2006, 21:09
Не могу. Компайлер ведь делает пуш самостоятельно, первым делом при входе в функцию. Давай я все-таки сначала починю баг, а?

Posted by: cax on 28-01-2006, 22:05
Как скажешь.

Posted by: moroz on 28-01-2006, 22:51
Попутно нашел еще один баг - при неподходящем значении меню выход происходил без вызова рутины. Может в этом было дело?


00 B5 00 06 00 0E 2F 28
01 D9 3A 28 0B D3 40 28 01 D9 5B 28 07 D3 60 28
01 D9 7B 28 03 D3 DF 28 03 D9 FB 28 01 D2 01 20
00 E0 00 20 00 BD 00 00 00 B5 88 42 07 D2 02 78
0B 78 03 70 0A 70 01 30 01 39 88 42 F7 D3 00 BD
F0 B5 47 46 80 B4 80 46 04 1C 00 27 29 4B 1B 68
FF 33 1B 78 01 2B 47 D1 00 E0 01 34 20 78 FF F7
CB FF 00 28 F9 D0 25 1C 23 78 0D 2B 03 D9 01 35
2B 78 0D 2B FB D8 2B 78 00 2B 02 D1 01 27 00 E0
01 3D 28 78 FF F7 B8 FF 00 28 F9 D0 20 1C 29 1C
FF F7 CA FF AC 42 22 D8 08 E0 20 78 FF F7 AC FF
00 28 00 D0 26 1C 01 34 AC 42 08 D8 20 78 80 28
F3 D2 FF F7 A1 FF 00 28 EF D0 00 E0 01 34 AC 42
06 D8 20 78 80 28 F9 D3 FF F7 96 FF 00 28 F5 D0
70 1C 61 1E FF F7 A8 FF 01 34 AC 42 E6 D9 2B 78
00 2B 01 D0 00 2F B9 D0 40 46 FF F7 83 FF 08 BC
98 46 F0 BD

Posted by: kisav on 30-01-2006, 04:24
Доброго времени суток.

Я думаю что многим здесь на этой ветке это уже не интересно или не актуально но тем не менее...

Несколько дней мучаюсь со своим плеером. Но русский он не показывает.
Может, откликнется добрая душа и укажет где я ошибся. :wink:


Пользовался материалом из этой ветки

2) ищем "41 18 10 39 C9 7B" (должен найтись 2 раза !) ---> В моем случае (254AE И 254Е2)
и запоминаем адреса, где находится каждый "10 39 C9 7B"
(позже мы будем менять каждый "10 39 C9 7B" на другие 4 байта).

3) ищем т.н. "сообщения С++ об ошибках" ---> В моем случае (29280),
Искать нужно ТЕКСТОМ, и ты найдёшь примерно такие фразы:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Я запустил BCalc и сделал расчёты для тебя.

23В72: замени 10 39 C9 7B на 04 F0 31 F8 ---> В моем случае: 254AE: 10 39 C9 7B на 03 F0 E7 FE
23ВА6: замени 10 39 C9 7B на 04 F0 17 F8 ---> В моем случае: 254Е2: 10 39 C9 7B на 03 F0 CD FE

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Вставил это по адресу 29280

10 39 01 B4 88 7B 04 28 C8 7B 10 D1 08 7C 04 28
C8 7B 03 D0 08 7C 00 28 C8 7B 08 D1 01 28 01 D1
A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0
00 00 00 00 F9 28 00 D9 F5 38 01 1C 01 BC 70 47



Дальше у меня не сходится с этим примером. У меня в родной прошивке 15 фонтов.
Если я понял правилно то самый первый отвечает за OSD и замена его приводит к не правилному отображению OSD. В место пробела у меня появилось это -> @

После вышеуказаных процедур вместо русского одни "_" До были теже пробелы только в перемешку с цифрами.

Могу сказать одно, ivani4-у сильно повезло с Маэстро :p

На моем фтп есть оригинальная прошивка. ~ 2mb. (Слил через кабель).
Она не поддерживает русский OSD и не отображает название русских имен файлов хотя в одном из фонтов я четко видел русские буквы. (Смотрел через remaker).

Если интересно, то милости просим на мой фтп

kisav.homeftp.net (\LG 511\Original\original_serial.bin)
ftpuser/ftpuser

Posted by: moroz on 30-01-2006, 07:58
cax, что слышно? Как я понимаю, результатов пока нет. Какие планы?

Posted by: cax on 30-01-2006, 10:45
kisav: читай внимательнее - кроме АРМ надо также пропатчить и код 8032, и подчерки заменятся на буквы.
Об этом писалось в этой самой теме.

moroz:

при проверке кода по неизвестной причине я убил 2 плейера. Один оживил сегодня ночью, второй, похоже, умер безвовратно.
Слава богу, ребёнку есть на чём мультики смотреть.
Дальнейшие эксперименты будут позже.

Posted by: moroz on 30-01-2006, 11:18
Нихрена себе! :fear2: Вот так код! "Безвозвратно" - в смысле даже через кабель не прошивается? Как же можно дальше эксперементировать?

Posted by: moroz on 01-02-2006, 00:03
Несмотря на полное невежество в делах оживления плеера все-таки не утерпел и рискнул: приладил переворот иврита к прошивке саха к 2102 (без привязки к меню, только попробовать) и перепрошился. И что интересно - мне это сошло с рук!
Что могу рассказать? Сам переворот работал нормально. Правда протестить как следует не удалось, т.к. увидеть субтитры удалось только в одном фильме (из 3-х). У меня на каждом CD по нескольку вариантов субтитров, и первым выбирался как раз заранее перевернутый вариант. Так в двух фильмах при переключении субтитры просто исчезли. Интересно, кто-то пользуется этой прошивкой для фильмов с субтитрами? Сплошное разочарование.
сах, отсюда возник вопрос (я не вникал в это место в инструкции, заранее извиняюсь): умеем ли мы добавить выбор фонта в меню если его там раньше не было? Я клоню к тому чтобы взять старую прошивку к 2102, в которой нет этой болезни, и сделать ее двуязычной.

Posted by: cax on 01-02-2006, 11:16
Вполне реально. Добавил же я выбор шрифта в такой древний плейер, как Hyundai servo 02.09.

Идея несложная: прочесть в коде 8032 выбор языка в меню Subtitles, и по результатам сменить номер фонта в SUB_SetStyle. Места для добавок в 8032 - навалом. Второй шрифт залепляется вместо китайского. Следи, чтобы размер прошивки не вылез за 1 мегабайт.

Для примера сравни прошивку для Юндая до и после изменений (
сперва надо натравить на оригинальную прошивку Subtitle Patch из MTK ReMakera, и лишь потом сравнивать)

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

Posted by: cax on 01-02-2006, 11:19
QUOTE (moroz @ 31-01-2006, 21:03):
moroz, а давай сначала я тебе подскажу как довести до ума меню в новой прошивке, чтобы оно включало иврит-наоборот ? А ? И выложим твоё творение.
А со старой прошивкой дла Апекса повозимся потом. Что скажешь ?

Posted by: moroz on 01-02-2006, 19:48
Выложить прошивку - суть рекомендовать ее всем честным людям. Как я могу рекомендовать кому-то что-то, чем сам пользоваться не считаю возможным? Когда ты над ней работал и выкладывал, ты еще не знал про пенку с исчезновением субтитров. Но я-то уже знаю!

Вообще мой вопрос был скорее "пристрелочный". Я не имел в виду что именно я буду это делать. А если и я, то видимо не скоро, ибо есть несколько причин, по которым не смогу взяться за дело прямо сейчас:

1. С 8082 я практически не знаком. Возьмет время пока освою.

2. Прежде чем я смогу вообще начать мне надо освоить технологию оживления. Плеер у меня один, а мультики так же обязательны как и тебе :&#041;

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

4. Со свободным временем у меня тоже напряженка, как и у всех.

Так что наверно присоединюсь к ivani4: буду ждать пока ты станешь немного посвободнее, а тем временем буду потихоньку продвигаться самостоятельно.

Надеюсь на дальнейшее плодотворное сотрудничество :hi:

Posted by: cax on 01-02-2006, 20:05
Принимается - до появления более безупречного алгоритма.

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

Posted by: ivani4 on 01-02-2006, 22:39
Я уже предлагал и поэтому боюсь показатся навязчивым,но я не испугаюсь установить в свой плеер любую вашу разработку для проверки.Это сохранит ваши двд.Если заломаете всё безвозвратно,то как мультики будете смотреть?Вот cax уже один свой плеер грохнул.Кстати,cax,смею напомнить что во втором своём письме я предлагал свою помощь в подобных случаях.
А свой плеер я заломать не боюсь и буду рад содействовать.
К сожалению это,наверное,единственное чем могу вам помочь.Да и как? Вы ведь даже почему то не захотели помочь мне освоить иду.
И ещё ,может вам поможет,у меня есть оригинальная прошивка китайского двд в котором переворот иврита осуществлён по полной программе.Но в меню никаких функций нет.

Posted by: moroz on 02-02-2006, 00:14
cax
Лады. Но под твою ответственность :wink:

Posted by: moroz on 02-02-2006, 00:38
ivani4, не обижайся, но я понятия не имею, как помочь тебе освоить ИДУ. Ведь там все на английском, или на ассемблере. Каждый ответ на твой вопрос лишь повлечет за собой десять новых. НО НЕ НАДО ПАНИКИ! Я не сидел сложа руки и нашел то что тебе нужно:

http://www.cracklab.ru/download.php?action=get&n=Mzcw (http://www.cracklab.ru/download.php?action=get&n=Mzcw

Это сборник практических руководств для хаккера, на русском языке. В том числе руководство по ИДЕ в десяти томах. Надеюсь, ты найдешь это полезным.

Что касается твоего предложения - не подумай что твоей помощью пренебрегают. Просто отлаживаться по переписке - это иногда довольно затруднительно. Впрочем, буду иметь его в виду и при подходящей возможности воспользуюсь. В любом случае - спасибо.

Posted by: ivani4 on 02-02-2006, 01:13
moroz
Спасибо за ссылку.Скачал.Обязательно ознакомлюсь.
А что касается иды ,так я не просил чтоб вы меня обучили,я не настолько наглый учитывая вашу занятость и мою тупую голову.Да и не освоить мне её никогда.Это,так скажем,ознакомится.Просто хотел получить ответ на конкретный вопрос.Теперь,учитывая что у нас разный уровень знаний а отсюда и разное восприятие, могу допустить что вопрос был поставлен не грамотно.Поэтому сформулирую эту же просьбу несколько по другому:
Выдержки из объяснений от сах:
Если нам повезёт, то эти 2 байта грузятся в регистры 4 и 5 примерно так:
7D 07 mov R5, #7
7C 02 mov R4, #2
Но если не повезёт, и регистры грузятся иначе....
Какой из них нам подходит - узнаем уже в дизассемблере
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Я научился искать HEX последовательность в иде и вижу эти байты,но не вижу в какие регистры они загружены.
Вопрос:Каким образом вы это видите?Как увидеть информацию типа:
ROM:0000E884 3C 28 CMP R0, #0x3C
ROM:0000E886 01 D9 BLS loc_E88C
ROM:0000E888 3C 20 MOV R0, #0x3C
???????????????????????????????????????????????????????????

moroz,если данная просьба не грамотна или не корректна или же сложна в объяснении,то не затрудняй себя ответом.

Posted by: cax on 02-02-2006, 14:53
ivani4, чтобы увидеть не голые байты, а команды с мнемоникой, надо после загрузки АРМ-файла в IDA (укажи тип процессора ARM) запустить IDC скрипт (File->IDC file). Он пройдёт по файлу и всё пометит. Скрипт берут из раздела файлов группы mt13x9 (последняя версия скрипта, вроде, 1.6)

Posted by: cax on 02-02-2006, 15:06
QUOTE (moroz @ 30-01-2006, 08:18):
Нихрена себе! :fear2: Вот так код! "Безвозвратно" - в смысле даже через кабель не прошивается? Как же можно дальше эксперементировать?
Отвёз сегодня свой портативный плейер в мастерскую. Наверняка, по гарантии мне его не починят - по нему ясно видно, что его вскрывали. Надеюсь, что сумеют починить и денег не очень много возьмут... хотя скорее всего мне это влетит сотни в 4 шекелей.

Обидно, что я рискую своими плейерами, а ни один импортёр так и не предложил мне не то что денег за работу, а хотя бы плейер для экспериментов.

Posted by: ivani4 on 02-02-2006, 15:23
cax спасибо за информацию,попробую разобратся с идой.
А помощь я предлагал тебе не однократно и в личных письмах(2 шт.) и в открытую на форуме(последний раз вчера).

Posted by: cax on 02-02-2006, 16:21
Дистанционно что-то тестировать очень сложно, именно поэтому я делаю прошивки только для тех плейеров, которые стоят у меня на столе.

При продажной стоимости обычных DivX-DVD плейеров в 300-400 шекелей, поставщику они наверняка обходятся ещё дешевле, и если он презентует разработчику прошивок один плейер для тестирования, он уж точно не обанкротится. Тем не менее, насколько мне известно, даже самые гениальные хакеры из группы mt13x9 так и не сумели заработать у импортёров ни копейки.

Posted by: ivani4 on 02-02-2006, 16:48
Скажи мне,Маэстро,ты прочитал вообще два моих письма которые я тебе послал?

Posted by: cax on 02-02-2006, 18:01
Конечно, прочитал. Только что отослал тебе ещё один ответ по e-mail, на всякий случай.

Posted by: ivani4 on 02-02-2006, 18:19
так я тебе уже тоже написал обратно

Posted by: wallfire on 02-02-2006, 23:09
cax ты не мог бы мне ответить на такой вопрос. После руссификации у меня не отображаются буквы кирилицы ы я ь как в названиях файлов так и в osd. Font самодельный 0-256 ср1251 может я что ещё упустил? удели минутку!?

Posted by: moroz on 03-02-2006, 00:07
cax, прими мои соболезнования по поводу плеера. Закон подлости - скончался именно дорогой. Я только не очень понимаю, как перепрошивка может так нагадить. Никогда о таком не слышал. Ты со знатоками советовался?

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

Алгоритм наконец-то заработал как надо, но хочу пока погонять его немного, вдруг еще что-то всплывет.

Posted by: cax on 03-02-2006, 11:25
QUOTE (wallfire @ 02-02-2006, 20:09):
cax ты не мог бы мне ответить на такой вопрос. После руссификации у меня не отображаются буквы кирилицы ы я ь как в названиях файлов так и в osd. Font самодельный 0-256 ср1251 может я что ещё упустил? удели минутку!?
Фонт самодельный - это хорошо, но если ты используешь мою подпрограмму, то тебе надо и фонт специальный создать, с продублированными буквами с кодами 250-255 на, если помню правильно, позициях 05-10 (проверь в любой моей прошивке)

Posted by: moroz on 03-02-2006, 14:54
QUOTE (cax @ 01-02-2006, 11:19):
moroz, а давай сначала я тебе подскажу как довести до ума меню в новой прошивке
Кажется, пришла пора. И как же это делается?

Posted by: wallfire on 03-02-2006, 16:12
cax вот твоя подпрограмма которую я использую
CODE
10 39 01 B4 88 7B 04 28 C8 7B 07 D0 88 7B 05 28 C8 7B 0E D0 0E E0 00 00 00 00 00 00 01 28 01 D1 A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0 00 00 50 38 F9 28 00 D9 F5 38 01 1C 01 BC 70 47

В шрифте (http://img141.imageshack.us/img141/7875/1251specfont507085ul.jpg буквы ъыьэюя я поставил на позиции 6-11 в такой же последовательности, но вместо них только "_"
Причём с другой твоей подпрограммой из Patching_HU3899_from_A_to_Z (http://cax.nm.ru/mtk/docs/Patching_HU3899_from_A_to_Z.txt
CODE
10 39 01 B4 88 7B 04 28 C8 7B 10 D1 08 7C 04 28 C8 7B 03 D0 08 7C 00 28 C8 7B 08 D1 01 28 01 D1 A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0 00 00 00 00 F9 28 00 D9 F5 38 01 1C 01 BC 70 47
было тоже самое, :1:

Posted by: cax on 03-02-2006, 16:22
QUOTE (moroz @ 03-02-2006, 11:54):
QUOTE (cax @ 01-02-2006, 11:19):
moroz, а давай сначала я тебе подскажу как довести до ума меню в новой прошивке
Кажется, пришла пора. И как же это делается?
moroz,

сперва нам надо:
1) добавить новое сообщение "Hebrew-normal"
2) добавить в меню Mpeg4-Subtitle новый пункт с этим сообщением
3) изменить меню так, чтобы этот выбор сохранялся также в ячейке ARM

4) при в ходе в процедуру переворота проверить содержимое этой ячейки.

(1)-(3) я сделаю сам и пришлю, тебе же надо будет добавить и проверить у себя (4).

На данный момент я не умею находить в АРМ неиспользованные ячейки.

Попробуй пока проверять на 0/1 ячейку 0x33, и тогда включение реверса будет происходить при переключении пункта меню "General->Closed captions" (кстати, а для чего оно ?)

И ещё: как у тебя влезла твоя подпрограмма в АРМ ?

Posted by: cax on 03-02-2006, 16:26
QUOTE (wallfire @ 03-02-2006, 13:12):
то же самое :1:
Странно. Если пропускаются символы >0x80, то должны и <0x20.
Если ни в АРМ, ни в коде 8032 нет описанных у меня в руководстве ограничений на код буквы - то я пас.

В самом крайнем случае можно забабахать эти буквы где-то между английскими и русскими, и слегка поменять код в АРМ (сейчас там буквы 250-255 переносятся на 6-11, а будут в другое место. Просто надо будет вычесть другую константу вместо F5.)

Posted by: ivani4 on 03-02-2006, 17:15
cax
Closed captions-это дополнительные данные в субтитрах ,которые имеются иногда в двд дисках .Отличие от обычных субтитров в том, что субтитры предназначены для людей с нормальным слухом, а эти данные для слабослышащих. Например,субтитры не передают обычные звуковые эффекты, такие как звонок телефона или звук шагов.
cax по утру настрочил тебе писмецо.Получил?

Posted by: ivani4 on 03-02-2006, 17:30
wallfire
Известен случай решения подобной проблемы размещением букв ъыьэюя дополнительно в местах 27-32.Попробуй,вдруг повезёт.

Posted by: wallfire on 03-02-2006, 17:50
QUOTE (cax @ 03-02-2006, 16:26):
Странно. Если пропускаются символы >0x80, то должны и <0x20.
Если ни в АРМ, ни в коде 8032 нет описанных у меня в руководстве ограничений на код буквы - то я пас.

В самом крайнем случае можно забабахать эти буквы где-то между английскими и русскими, и слегка поменять код в АРМ (сейчас там буквы 250-255 переносятся на 6-11, а будут в другое место. Просто надо будет вычесть другую константу вместо F5.)
cax С меня :beer1: Ты как всегда был прав я подставил другую константу "F6" и перенёс буквы соответственно (в середину (http://img140.imageshack.us/img140/523/1251specfont507084un.jpg шрифта). Теперь всё в лучшем виде! Спасибо за помощь!

cax а никто не пробовал прикрутить показ MP3 тегов в тех прошивках где их нет?
QUOTE:
ivani4
Известен случай решения подобной проблемы размещением букв ъыьэюя дополнительно в местах 27-32.Попробуй,вдруг повезёт.
ivani4 Там тоже не прёт!

Posted by: moroz on 03-02-2006, 23:42
cax, не надо никакой свободной ячейки. Все что нужно - это добавить еще одно значение в опцию Mpeg4-Subtitle.
Я не очень понял, при чем здесь Closed Caption. Переворот я подвешу на имеющуюся опцию Hebrew, а когда/если добвится Hebrew-normal - она будет выбирать ивритский шрифт но не будет вызывать переворот. Кстати, семантику надо бы доработать, а то не очень понятно: нормальный иврит - это как?

Идея проверять это на моем плеере мне не нравится. Если он умрет - оживить его я не умею.

Теперь по поводу проверки значений меню из АРМ
QUOTE :
И ещё: как у тебя влезла твоя подпрограмма в АРМ ?
Еще больше распухла и теперь с трудом влезает в свободное место.

Posted by: cax on 04-02-2006, 00:16
Объясняю.
Mpeg4-Subtitle не имеет ячейки в АРМ, и неизвестно когда я подберу свободную. Для тестирования переключателя я предложил тебе ПОКА ЧТО в качестве переключателя попробовать Closed Caption, потом мы её заменим. Остальное, в том числе тестирование (у меня апекс 2102 будет ещё пару дней дома) за мной.

Теперь ты объясни. Ты говорил, что встраивал процедуру переворота в прошивку с моего сайта (5.0 ?), но там часть пустого места уже занята. Она и раньше не влезала, так как же она влезла сейчас ??

Posted by: moroz on 04-02-2006, 00:37
QUOTE :
Теперь ты объясни. Ты говорил, что встраивал процедуру переворота в прошивку с моего сайта (5.0 ?), но там часть пустого места уже занята. Она и раньше не влезала, так как же она влезла сейчас ??
Вопрос, конечно, интересный... То-ли я взял предыдущую версию, где этого кода не было, то-ли сослепу его затоптал (скорее второе, судя по моим промежуточным файлам, которые у меня сохранились). А что?

Posted by: cax on 04-02-2006, 01:27
Ладно, давай продолжим по мейлу - borus собака mail.ru, присылай последний вариант.

Posted by: cax on 05-02-2006, 14:34
Посмотрел сегодня на некоторые творения sickboy666. Парень, конечно, молодец, повтыкал ивритский шрифт в десятки плейеров, знает достаточно много - только в ассемблере не рубит, документацию для пользователей пишет, на вопросы отвечает в форуме и т.д., в общем - работает в поте лица. Одно неясно - зачем надо было подписывать мои прошивки для Юндая 02.09 и 07.11 своим именем, если всё, что он в них заменил - это 2 картинки.
Впрочем, пусть балуется, он у нас товарисч популярный. sickboy666 - это уже не просто ник, это - марка.

Posted by: cax on 05-02-2006, 14:40
moroz, а что ты думаешь про правильный показ ивритских имён файлов ?
Правда, я пока не знаю где там начинается буфер с именем файла (ко мне в Unicode2CP приходит текущая буква), да и буквы там двухбайтовые, но принцип-то тот же.

Posted by: ivani4 on 05-02-2006, 17:53
cax
баг 60
QUOTE :
Например если вместо регистра R0 используется R6 ,то вся последовательность изменится.
Маэстро,может использоватся только два варианта - R0 или R6?
Или может быть какой угодно регистр?

Posted by: cax on 05-02-2006, 19:13
Теоретически регистры могут быть любые.
В этом месте существенно то, что через строку используется один и тот же.
И как ты заметил немного ранее, у меня описка - не 0x3C, а 0x3E.
Прошу прощения за введение в заблуждение.

Posted by: ivani4 on 05-02-2006, 20:54
cax
1. О.К.Эту мысль я понял .Спасибо.
2. В твоём варианте это дело нашлось в начале АРМ.Так может быть есть условная граница(зона) за которой уже можно не искать?Или это может находится в любом месте в АРМ?

Posted by: kisav on 05-02-2006, 21:53
QUOTE (cax @ 30-01-2006, 10:45):
QUOTE :
"...Теперь вместо названий на рус/ивр сплошной подчерк. Проверял несколько раз сделанные изменения.Ошибки не нашёл..."
"...Давай для очистки совести поищем в АРМ вот такое (хотя тоже вряд ли найдётся): 7E 22 20 21

Если найдёшь - попробуй заменить на FF 22 00 21..."

- У меня нашлась эта комбинация целых 7 раз. Ну я их и заменил. Все. Нормально? Русский все равно не появился.

Теперь по 8032 коду:

Если я правильно тебя понял, ты сылаешся на http://cax.nm.ru/mtk/docs/Patching_HU3899_from_A_to_Z.txt (http://cax.nm.ru/mtk/docs/Patching_HU3899_from_A_to_Z.txt

В нем есть такое:
QUOTE:
"...3) Show cyrillics in file browser instead of '_' chars...."

"...Howto:

In 8032 code look for ("XX" is a wildcard char):

90 XX XX E0 FF 90 XX XX E0 FE C3 9F 50 05 C3 EF (I found it at 15E9E)..."
.


А у меня такого нет. Смотрел прошивку через xvi32.
У тебя есть буддийские заклинания для меня :p

Posted by: cax on 06-02-2006, 02:12
kisav, ты с какова горада есть заклинание для тебя.

Там далее по тексту есть такое:

ROM:00015EEB 94 20 subb A, #0x20
ROM:00015EED 40 06 jc ROM_5EF5
ROM:00015EEF E0 movx A, @DPTR
ROM:00015EF0 D3 setb C
ROM:00015EF1 94 7E subb A, #0x7E
ROM:00015EF3 40 10 jc ROM_5F05

Попробуй поискать, соответственно, 94 20 40 xx xx xx 94 7E

Posted by: cax on 06-02-2006, 02:17
QUOTE (ivani4 @ 05-02-2006, 17:54):
cax
1. О.К.Эту мысль я понял .Спасибо.
2. В твоём варианте это дело нашлось в начале АРМ.Так может быть есть условная граница(зона) за которой уже можно не искать?Или это может находится в любом месте в АРМ?
2. По идее должно найтись где-то в конце первых 64К.
Когда найдёшь - ты легко узнаешь листинг кода, если ознакомишься с предлагаемым в руководстве документом NewAge по субтитрам.
Там же посмотри на разные байты до и после, может они тебя наведут на нужное место.

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

3E 28 xx xx 3E 20 у тебя должно было найтись достаточно легко, а чуть в стороне от него, на расстояниях соизмеримых с расстояниями от этого места в том же Hyundai, должны найтись остальные два 3E.

(я имею в виду фрагмент
3Е 28 CMP R0, #0x3Е
01 D9 BLS loc_E88C
3Е 20 MOV R0, #0x3Е)

Posted by: kisav on 06-02-2006, 04:18
QUOTE (cax @ 06-02-2006, 02:12):
kisav, ты с какова горада есть заклинание для тебя.

Там далее по тексту есть такое:

ROM:00015EEB 94 20 subb A, #0x20
ROM:00015EED 40 06 jc ROM_5EF5
ROM:00015EEF E0 movx A, @DPTR
ROM:00015EF0 D3 setb C
ROM:00015EF1 94 7E subb A, #0x7E
ROM:00015EF3 40 10 jc ROM_5F05

Попробуй поискать, соответственно, 94 20 40 xx xx xx 94 7E
Нет я наверное с деревни :lol: потому что в упор не вижу ентого кода.
Вот в твоем Hyundai 3899 Servo 02.09 - orig MTK.BIN я его вижу
дважды:

12DA3
15EEB

Так это не лечится? :wink:


Posted by: cax on 06-02-2006, 08:40
kisav: лечится всё, но в данном случае мои идеи исчерпаны. Звыняй.
А что за плейер ?

Posted by: ivani4 on 06-02-2006, 10:09
cax
А байт подлежащий изменению обязательно 3E или 3C ?
Или может быть другое значение ?

Posted by: cax on 06-02-2006, 10:26
ivani4:

Если там что-то другое, то скорее всего там уже нет "баг 60".
0x3E = 62, а с учётом конца строки примерно 60 и получается.

Posted by: ivani4 on 06-02-2006, 11:35
cax
QUOTE:
Если там что-то другое
Если бы знать где оно находится это там...
А баг 60 присутствует .Это точно.
Учитывая что ничего похожего (на мой взгляд) с 3Е(3С) не нашлось,то не подойдет ли нам случайно 05 вместо 3Е(3С)?

Posted by: cax on 06-02-2006, 14:02
То есть, по-твоему субтитры обрезаются не после 60-го символа, а после 5-го ???

Posted by: ivani4 on 06-02-2006, 14:35
Ну давай смейся,смейся над неграмотным.Тем не менее я думаю что поиск веду правильно.Тренировался на Юндай.
Единственное ,что в моём варианте заинтересовало меня:

ROM:00021460 3E 2F CMP R7, #0x3E ; '>'
ROM:00021462 00 D9 BLS loc_21466
ROM:00021464 3E 27 MOV R7, #0x3E ; '>'

Нашлось по адресу 21460 ,но не получается найти к нему те другие добавочные дела типа:

ROM:000????? 3Е ?? CMP R?, #0x3Е
ROM:000????? ?? ?? BCC loc_ ????

Posted by: cax on 06-02-2006, 15:40
ivani4, прошивки бывают очень похожие, и бывают очень разные. Скорее всего у тебя именно мало похожая на остальные, а рецептов на все случаи жизни нет.

А "CMP R?, #0x3Е" с другими B?? (не BCC) есть в ближнем радиусе поиска от найденного тобой фрагмента ?

В крайнем случае заменишь 3E->FF только в найденном фрагменте, и посмотришь что получилось. По идее иногда будет обрезаться, иногда не будет (но уже лучше чем ничего)

Posted by: ivani4 on 06-02-2006, 15:48
Подскажи,пожалуйста,какие бывают B??

Posted by: cax on 06-02-2006, 16:59
Запусти BCalc, увидишь варианты в селекторе команды перехода.

Posted by: ivani4 on 06-02-2006, 22:54
QUOTE :
А "CMP R?, #0x3Е" с другими B?? (не BCC) есть в ближнем радиусе поиска от найденного тобой фрагмента ?
Сегодня уже не успею а вот завтра обязательно этим займусь
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:

Posted by: cax on 07-02-2006, 00:57
ivani4, займись, займись, а то если ты чего пропустил, то нехорошо это.

А теперь я прошу внимания других знатоков !
Тому, кто прочитает последние "сводки с полей" группы mt13x9 на yahoo и объяснит мне как

1) сделать, чтобы использовались все файлы субтитров на диске, если одноимённый с фильмом не найден (есть описание, есть даже пример кода, но я не очень врубаюсь)

2) правильно разрулить конфликтные поинтеры в MTK ARM Resizer

я буду сердечно благодарен и обещаю пиво, шоколад и другие ништяки.

Posted by: kisav on 07-02-2006, 06:33
QUOTE:
kisav: лечится всё, но в данном случае мои идеи исчерпаны. Звыняй.
А что за плейер ?
LG LDA-511.

Был бы очень признателен если б ты мог его посмотреть поближе.
Вот сылка на мой фтп

kisav.homeftp.net (\LG 511\Original\original(2nd LG 511)-cd.bin)
ftpuser/ftpuser


Если одним спортивном интузиазмом здесь не прокатывает - намекни :actu:

Posted by: ivani4 on 07-02-2006, 09:28
cax,я не знаю что является ближним радиусом поиска относительно адреса 21460,но нашёл похожее на нужное с 3Е в следующих местах, со следующими командами перехода:
3EF7E - BEQ
612C8 - BNE
61728 -BNE
Глубже не копал.Нужно ли?
Решил, в дополнении к сделаному ранее ,произвести изменения в двух из найденых мест :
612C8
61728
Не знаю стало ли от этого лучше ,но (как мне кажется) не стало хуже.
Хотелось бы знать твоё мнение по данному вопросу.

Posted by: cax on 07-02-2006, 13:37
QUOTE (ivani4 @ 07-02-2006, 06:28):
3EF7E - BEQ
612C8 - BNE
61728 -BNE
ivani4,

далековато от 21460, и это может означать одно из следующего:

1) то, что правлено по адресу 21460 - достаточно
2) то, что правлено по адресу 21460 - недостаточно, но что ещё надо - неизвестно
3) то, что правлено по другим адресам, ничего не нарушило
4) то, что правлено по другим адресам, что-то нарушило, но мы пока не знаем

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

Posted by: ivani4 on 07-02-2006, 15:24
Маэстро!Я всё понял.
Считаю баг 60 условно побежденным.
Огромное тебе СПАСИБО за всё!!!!!!!!!!!!!
:handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:

Posted by: ivani4 on 12-02-2006, 12:03
cax,а какие скрипты с Yahoo нужно использовать для просмотра прошивки(не АРМ)?

Posted by: cax on 12-02-2006, 12:18
Обычно я не пользуюсь дополнительными скриптами - просто иду по нужному мне адресу командой G и нажимаю в этом месте C, что превращает голые байты в команды.

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

Обычно полагается открывать банки памяти по отдельности, но я как правило открываю весь файл целиком, и выбираю в списке процессоров "intel 51 series: 8051", и в одном из следующих окон "Choose the device name" выбираю MT1389

Posted by: ivani4 on 12-02-2006, 12:29
cax,спасибо!Я,правда, не очень понял.Но прежде чем мучить тебя дополнительными вопросами попробую что-то с этим сделать.

Posted by: cax on 16-02-2006, 21:09
QUOTE (moroz @ 15-01-2006, 19:52):
можно переделать так, чтобы она отжимала текст к нижней кромке окна, т.е. добавляла пустую строку или две там где это необходимо.
Я только что заметил, что в MTKWindows есть опция "Vertical align (Top/Bottom)". Похоже, что тебе ничего делать и не надо :&#041; Когда эта опция появилась - понятия не имею - может в последней версии, а может и раньше была... Проверю на досуге.

Posted by: moroz on 16-02-2006, 22:09
Да, похоже. Интересно, как они это делают?

Posted by: cax on 17-02-2006, 00:29
Скорее всего так же, как и центрирование и цвет субтитров, окантовка букв, степень их прозрачности и исчезновение сообщений типа значка зума спустя заданное время - все эти возможности были заложены в самой прошивке изначально, но не активированы.

Posted by: kisav on 17-02-2006, 08:30
QUOTE (cax @ 06-02-2006, 08:40):
kisav: лечится всё, но в данном случае мои идеи исчерпаны. Звыняй.
А что за плейер ?

Извиняй, что надоедаю со своей болячкой. Может посмотришь мою прошивку а если найдешь че, то как альтернативный вариант, решение проблемы можно занести в твой .тхт файл.

Я тут просматривал аналогичную ветку на IXBT и могу сказать, что проблема эта не единична.

http://forum.ixbt.com/topic.cgi?id=62:4400-25 (http://forum.ixbt.com/topic.cgi?id=62:4400-25
и
http://forum.ixbt.com/topic.cgi?id=62:4400-26 (http://forum.ixbt.com/topic.cgi?id=62:4400-26

Может там потребуется мелкое отклонение от твоего .тхт а может нет. Но с уверенностью могу сказать что большОе количество людей будет тебе признательно.



Posted by: cax on 17-02-2006, 08:34
kisa, я и правда не всесилен. Если я говорю, что нет идей - значит так оно и есть. Энди на IXBT меня покруче будет, если он не знает - то и я не сумею. Извини.

Posted by: moroz on 17-02-2006, 11:28
QUOTE (cax @ 17-02-2006, 00:29):
Скорее всего так же, как и центрирование и цвет субтитров, окантовка букв, степень их прозрачности и исчезновение сообщений типа значка зума спустя заданное время - все эти возможности были заложены в самой прошивке изначально, но не активированы.
Да. точно. вот оно (все из той же статьи)

; Used for bottom align (bSettings AND 0x01 = 0x01 &#1488; bottom align, otherwise top align)
SUB_CalcStartPosY
PUSH {R3-R7,LR}
LDR R7, =SUB_Mpeg4SubtitleParamsRecord
LDRH R6, [R7,#2] ; wY1
LDRB R1, [R7,#0xA] ; bSettings
LSL R1, R1, #0x1F ; 0x01 << 0x1F = 0x80000000
BPL EXIT ; positive or zero (bSettings AND 0x01 = 0x00)
BL SUB_SubtitleTextLineCount
ADD R5, R0, #0
LDR R0, =SUB_Mpeg4SubtitleParamsRecord

ADD R0, R6, #0 ; R0 = R6
POP {R3-R7}
POP {R3}
BX R3

Достаточно поднять нулевой бит в байте по оффсету 0хА.
"Учите матчасть" называется :&#041;

Posted by: ivani4 on 17-02-2006, 12:37
cax
QUOTE:
Я только что заметил, что в MTKWindows есть опция "Vertical align (Top/Bottom)".
!!!!!!!!!!!!!!!!!!!!!!!!!!!Проверил.Работает!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:handup: :clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!Огромное спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Posted by: Rvs on 17-02-2006, 18:42
kisav

Если я правильно понял ты в нёс изменения в ARM и у тебя теперь подчёрки вместо русских букв????

Если да, то кинь твою прошивку на ruslan(тузик)tiraet.com посмотрю, помогу!!!! :&#041;

Posted by: Rvs on 18-02-2006, 13:14
kisav

нашёл твою процедуру с заменой `_` на русские. :&#041; Она немного отличается от описаной у сах поэтому и не нешёл ты её. У тебя кабель для прошивки есть??? Что бы ты не нароком DVD не завалил, т.к. есть сомнения, у себя проверить не могу прошивка 2Mb, а у меня 1Mb.

Posted by: Rvs on 18-02-2006, 14:19
kisav

Вот так выглядит твоя функция, точнее её часть, она находиться в Bank3, с адреса DBCE и DD21:

mov A, R7
xrl A, #0x20
jz ROM_DD5E

mov A, R7
xrl A, #0x5F
jz ROM_DD5E

mov A, R7
jz ROM_DD5E

setb C
subb A, #0x2B ; '+'
jc ROM_DD38

mov A, R7
subb A, #0x3A ; ':'
jc ROM_DD5E

mov A, R7
setb C
subb A, #0x40 ; '@'
jc ROM_DD43

mov A, R7
subb A, #0x5B ; '['
jc ROM_DD5E

mov A, R7
setb C
subb A, #0x60 ; '`'
jc ROM_DD4E

mov A, R7
subb A, #0x7B ; '{'
jc ROM_DD5E

попробуй для начала в выделенные команды поставить значение x00 и xFF соответственно. Если не пойдёт, то в понедельник скажу как переписать всё функцию целиком. ;&#041;
Но будь внимателен, если кабеля нет, можешь завалить аппарат!!!

Ну всё дерзай, удачи, если получиться отпиши обязательно!!!! :&#041;

Posted by: cax on 18-02-2006, 14:52
Rvs, я к тебе с поклоном и просьбой: научи находить PREF_SetChar. Надо для имплементации сохранения громкости по методу Энди007.

Posted by: moroz on 18-02-2006, 18:21
QUOTE:
научи находить PREF_SetChar
Этот вопрос уже задавался. Есть скрипт для IDA.
Post Link: APEX DVX - 811//815 (http://netlab.e2k.ru/forum/index.php?showpost=525312

Posted by: Rvs on 18-02-2006, 19:47
Привет сах!!!

Вот так выглядит функция PREF_SetChar в Yamada 6600

CODE

mov DPTR, #0xFB9F
mov A, R6
movx @DPTR, A
inc DPTR
mov A, R7
movx @DPTR, A
inc DPTR
mov A, R5
movx @DPTR, A
mov DPTR, #0xFB9F
movx A, @DPTR
mov R6, A
inc DPTR
movx A, @DPTR
mov R7, A
cjne R6, #0xFF, ROM_A080
cjne R7, #0xFF, ROM_A080
setb C
ret



а так в моей XORO400Pro:
CODE

mov DPTR, #0xFB8B
mov A, R6
movx @DPTR, A
inc DPTR
mov A, R7
movx @DPTR, A
inc DPTR
mov A, R5
movx @DPTR, A
mov DPTR, #0xFB8B
movx A, @DPTR
mov R6, A
inc DPTR
movx A, @DPTR
mov R7, A
cjne R6, #0xFF, ROM_9D5B
cjne R7, #0xFF, ROM_9D5B
setb C
ret


смысл я думаю понятен, у себя ты должен искать 90 ? ? EE F0 A3 EF F0 A3 ED F0
скорее всего найдуться несколько, но похожая только одна. У процедуры обязательно должен быть Bank Sw и скорее всего расположена в Bank1.

До понедельника!!! Удачи!!! Если всё ОК отпиши!!! :&#041;

Posted by: cax on 18-02-2006, 19:58
moroz, не шуткуй, лучше объясни что я не так делаю.
Может скрипты на ИДА 4.8 не работают ?
Я получаю сообщение
MT1389_Misc.idc 746: Syntax error near <END>

Posted by: cax on 18-02-2006, 20:08
Так, пожалуй, поточнее будет - находится 1 раз, а не десятки.
90 ?? ?? EE F0 A3 EF F0 A3 ED F0 90 ?? ?? E0 FE A3 E0 FF BE FF

Теперь ищем, как в случае с PREF_GetChar, 90 xx xx, где xx xx - адрес, с которого начинается приведённая выше последовательность, и находим это дело по одному разу в каждом банке, и каждый раз в том же самом месте.

Отлично.


Осталась ровно одна непонятка: не факт, что используемая Энди ячейка 0x55 в EEPROM также свободна и в других прошивках. На IXBT я вычитал, что для этого делают разведку боем, а именно подключают кабель и смотрят где в EEPROM прибора есть FF. Стрёмно...

Posted by: moroz on 18-02-2006, 23:00
QUOTE (cax @ 18-02-2006, 19:58):
moroz, не шуткуй, лучше объясни что я не так делаю.
Может скрипты на ИДА 4.8 не работают ?
Я получаю сообщение
MT1389_Misc.idc 746: Syntax error near <END>
Все уже нашлось и без меня, но все-таки...
Я не большой знаток скриптов, но одну вещь я про них знаю: это текстовые файлы. Это значит, что если уж совсем тоскливо, то можно посмотреть им в душу и все что нужно про них узнать. Так, если мы заглянем в MT1389_Misc.idc, то увидим, что искомую функцию он ищет по последовательности FF BE FF 05 BF FF 02 D3 22. А заодно прочтем, что перед его запуском нужно прокрутить какие-то другие скрипты. Может, я так и сделал когда им пользовался, убей - не помню...

Posted by: cax on 18-02-2006, 23:25
moroz, посыпаю голову пеплом. Я собирался сделать именно то, что ты сказал - заглянуть в скрипт, но, видимо, торможу. Кстати, последовательность из скрипта приводит в середину подпрограммы, а не в её начало, но это уже ерунда - ищем назад до ближайшего RET (0x22) и со следующего за ним адреса и начинается наша искомая функция.

Posted by: kisav on 18-02-2006, 23:58
QUOTE (Rvs @ 18-02-2006, 14:19):
kisav

Вот так выглядит твоя функция, точнее её часть, она находиться в Bank3, с адреса DBCE и DD21:

mov A, R7
xrl A, #0x20
jz ROM_DD5E

mov A, R7
xrl A, #0x5F
jz ROM_DD5E

mov A, R7
jz ROM_DD5E

setb C
subb A, #0x2B ; '+'
jc ROM_DD38

mov A, R7
subb A, #0x3A ; ':'
jc ROM_DD5E

mov A, R7
setb C
subb A, #0x40 ; '@'
jc ROM_DD43

mov A, R7
subb A, #0x5B ; '['
jc ROM_DD5E

mov A, R7
setb C
subb A, #0x60 ; '`'
jc ROM_DD4E

mov A, R7
subb A, #0x7B ; '{'
jc ROM_DD5E

попробуй для начала в выделенные команды поставить значение x00 и xFF соответственно. Если не пойдёт, то в понедельник скажу как переписать всё функцию целиком. ;&#041;
Но будь внимателен, если кабеля нет, можешь завалить аппарат!!!

Ну всё дерзай, удачи, если получиться отпиши обязательно!!!! :&#041;

To RVS
Благодарю. Но то че ты написал требует дополнительной разжовки :p .
Шнур есть. Жаль что ждать придется аж до понедельника.

To Cax
Может ты мне переведешь что написал RVS. Мне обязательно нужна IDA?
В xvi32 это можно сделать? Если да то что и где менять?

Спасибо всем. Буду ждать.

Posted by: cax on 19-02-2006, 15:21
Получил сегодня из ремонта в сервис-центре STS свой Apex JDP707.

Сперва мне позвонили несколько дней назад с предложением поменять весь корпус из-за разбитого крепления крышки за ни много ни мало - 280 шекелей, а это почти треть от стоимости всего аппарата. Я отказался от замены корпуса, но уже был рад, что сам аппарат починили по гарантии и не взяли денег (а ведь на нём ясно были видны следы вскрытия).
Но самое поразительное, что крышку мне тоже починили, и опять денег не взяли.
Доволен как слон.

Posted by: moroz on 19-02-2006, 18:22
Ну вот и вознаграждение от Прусмана :laugh: Довольствуемся малым, счастливы от пустяка... А корпус они наверно с самого начала по ошибке починили, а потом решили с тебя содрать :actu:

Posted by: Rvs on 20-02-2006, 18:48
kisav

Желательно что-бы ты научился пользоваться IDA-ой, иначе мне прийдётся тебе, каждый шаг писать, а у меня не много времени. Так что поробуй IDA-ой открыть Bank3 перейти по адресу что я указал (нажать G), далее С и ты увидиш всю свою функцию и адреса!!! Внесёшь изменения через свой xvi32 по адресу, но уже начинающегося с 3, т.к. Bank3.
Дерзай!!! :&#041;

Posted by: Rvs on 20-02-2006, 18:54
cax

Посмотрел внимательно MT1389_Misc.idc, есть интересная процедура SetVolume, не смотрел???

Posted by: kisav on 20-02-2006, 19:22
QUOTE (Rvs @ 20-02-2006, 18:48):
kisav

Желательно что-бы ты научился пользоваться IDA-ой, иначе мне прийдётся тебе, каждый шаг писать, а у меня не много времени. Так что поробуй IDA-ой открыть Bank3 перейти по адресу что я указал (нажать G), далее С и ты увидиш всю свою функцию и адреса!!! Внесёшь изменения через свой xvi32 по адресу, но уже начинающегося с 3, т.к. Bank3.
Дерзай!!! :&#041;
RVS,

вот что имею

ROM:0270 E5 90 mov A, P1 ; B_BANK3
ROM:0272 54 07 anl A, #7
ROM:0274 B4 03 02 cjne A, #3, ROM_279
ROM:0274
ROM:0277 E4 clr A
ROM:0278 73 jmp @A+DPTR
ROM:0278


Наверное, не тот банк. Давай по порядку:
IDA 4.8. Взял целиком всю прошивку, загнал ее в IDУ. Какие ни будь скрипты нужны? Где переходить в bank3? В 'Names window'? Дай знать, чего я не так делаю.

Могу предложить тебе требуемый .idc Я загрузил его ,как раз, вчера. Дай знать если это еще актуально.

Спасибо что возишься со мной

Posted by: cax on 20-02-2006, 19:54
kisav, тебя просили сходить по адресам DBCE и DD21 в 3-м банке.
Банк - это кусок размером 0x10000, т.е. если ты грузишь всю прошивку, то адреса будут соответственно 0x3DBCE и 0x3DD21, а не 0270.

Posted by: kisav on 20-02-2006, 20:14
QUOTE (cax @ 20-02-2006, 19:54):
kisav, тебя просили сходить по адресам DBCE и DD21 в 3-м банке.
Банк - это кусок размером 0x10000, т.е. если ты грузишь всю прошивку, то адреса будут соответственно 0x3DBCE и 0x3DD21, а не 0270.

Cax,

Я это есть понимат. Но там есть только вот такое:

ROM:0003DBCE 09 .byte 9
ROM:0003DBCF 12 .byte 0x12
ROM:0003DBD0 05 .byte 5
ROM:0003DBD1 7D .byte 0x7D ; }
ROM:0003DBD2 90 .byte 0x90 ; &#208;
ROM:0003DBD3 FB .byte 0xFB ; v
ROM:0003DBD4 87 .byte 0x87 ; &#199;
ROM:0003DBD5 E0 .byte 0xE0 ; &#240;
ROM:0003DBD6 04 .byte 4

а subb A (смотрел по всей прошивке) вааще невидать. Толи не так смотрю толи не тем? :help:

Posted by: cax on 20-02-2006, 21:35
QUOTE (Rvs @ 20-02-2006, 15:48):
kisav

перейти по адресу что я указал (нажать G), далее С и ты увидиш всю свою функцию и адреса!!!
Повторяем урок чтения на русском языке:
надо нажать G, потом адрес, потом C.
И так далее жмём C в любом месте, где хотим опознать команды.

Posted by: kisav on 20-02-2006, 21:44
QUOTE (cax @ 20-02-2006, 21:35):
QUOTE (Rvs @ 20-02-2006, 15:48):
kisav

перейти по адресу что я указал (нажать G), далее С и ты увидиш всю свою функцию и адреса!!!
Повторяем урок чтения на русском языке:
надо нажать G, потом адрес, потом C.
И так далее жмём C в любом месте, где хотим опознать команды.
да... с русским у меня совсем плохо сегодня. :rolleyes:

нашел искомое

3DD23
3DD28


ROM:0003DD1E
ROM:0003DD21 EF mov A, R7
ROM:0003DD22 64 00 xrl A, #0x20 --> #0
ROM:0003DD24 60 38 jz ROM_DD5D+1
ROM:0003DD24
ROM:0003DD26 EF mov A, R7
ROM:0003DD27 64 FF xrl A, #0x5F --> #0xFF
ROM:0003DD29 60 33 jz ROM_DD5D+1
ROM:0003DD29


RVS,
update: Заменил в выше указаных местах но все равно вижу одни подчерки :&#040;

jz ROM_DD5D+1 и jz ROM_DD5E одно и тоже?


Как быть уверенным что это имено те самые места?
Вот тут еще одна похожая комбинация:

ROM:0003DB65 EF mov A, R7
ROM:0003DB66 D3 setb C
ROM:0003DB67 94 20 subb A, #0x20 ; ' '
ROM:0003DB69 50 F3 jnc ROM_DB5E

Posted by: cax on 21-02-2006, 12:33
QUOTE (cax @ 18-02-2006, 11:52):
Надо для имплементации сохранения громкости по методу Энди007.
Уф, кажись я его одолел. Добавить сохранение громкости несложно (описано здесь: http://groups.yahoo.com/group/mt13x9/message/6940 (http://groups.yahoo.com/group/mt13x9/message/6940 ), но правильно вычислить свободную ячейку для сохранения громкости оказалось задачей посложнее, требующей к тому же полевых испытаний.

Без подсказок Энди я вряд ли бы сообразил, что для поиска свободной ячейки в EEPROM надо найти все вызовы PREF_GetChar и построить таблицу используемых ячеек (верхний предел, кажется, 0xC0). Дырки в таблице и есть неиспользованные ячейки. У Энди это была 0x55, у меня же на Юндай заработала 0x77.

Posted by: ivani4 on 21-02-2006, 13:05
cax
QUOTE:
поиска свободной ячейки в EEPROM
Имеется ввиду скачивать содержимое EEPROM ,изменять и закачивать обратно?
Или в прошивке для флешки есть информация для EEPROM?

Posted by: Rvs on 21-02-2006, 13:12
kisav

В принципе всё правильно, но я делаю немного по другому.

1) ReMaker-ом сохраняю нужный Bank (Page).
2) Открываю его IDA-е.
3) Далее натравливаю скрипты: MT1389_Bank.idc, MT1389_More.idc, MT1389_xCASE.idc, MT1389_Misc.idc, MT1389_PS_x.idc. Для тебя хватит и двух первых!!!
4)Далее переходишь по адресу, но уже без первой цифры, т.е. тот который указал.

А изменять значения будешь в своём редакторе, но адрес уже с учётом номера Bank-а, и то что показывает IDA-а.

QUOTE :
update: Заменил в выше указаных местах но все равно вижу одни подчерки
Надо менять в обоих процедурах, если да то переделай процедуру так (дважды):
CODE

ROM:DD21 EF mov A, R7
ROM:DD22 64 00 xrl A, #0x00
ROM:DD24 60 38 jz ROM_DD5E
ROM:DD24
ROM:DD26 EF mov A, R7
ROM:DD27 64 FF xrl A, #0xFF
ROM:DD29 60 33 jz ROM_DD5E
ROM:DD29
ROM:DD2B EF mov A, R7
ROM:DD2C 00 nop
ROM:DD2D 00 nop
ROM:DD2E D3 setb C
ROM:DD2F 94 00 subb A, #0x00
ROM:DD31 40 05 jc ROM_DD38
ROM:DD31
ROM:DD33 EF mov A, R7
ROM:DD34 94 7F subb A, #0x7F; ':'
ROM:DD36 40 26 jc ROM_DD5E
ROM:DD36
ROM:DD38
ROM:DD38 ROM_DD38:
ROM:DD38 EF mov A, R7
ROM:DD39 D3 setb C
ROM:DD3A 94 A0 subb A, #0xA0
ROM:DD3C 40 05 jc ROM_DD43
ROM:DD3C
ROM:DD3E EF mov A, R7
ROM:DD3F 94 FF subb A, #0xFF
ROM:DD41 40 1B jc ROM_DD5E
ROM:DD41
ROM:DD43
ROM:DD43 ROM_DD43:
ROM:DD43 00 nop
ROM:DD44 00 nop
ROM:DD45 00
ROM:DD47 00
ROM:DD48 00 ......
ROM:DD49 00
ROM:DD4A 00
ROM:DD4C 00 nop
ROM:DD4D 00 nop
ROM:DD4E
ROM:DD4E ROM_DD4E:
ROM:DD4E 90 FB 8E mov DPTR, #0xFB8E
ROM:DD51 E0 movx A, @DPTR
ROM:DD52 FF mov R7, A
ROM:DD53 A3 inc DPTR
ROM:DD54 E0 movx A, @DPTR
ROM:DD55 FC mov R4, A
ROM:DD56 A3 inc DPTR
ROM:DD57 E0 movx A, @DPTR
ROM:DD58 FD mov R5, A
ROM:DD59 7B 5F mov R3, #0x5F; '_'
ROM:DD5B 12 0C 31 lcall BS:396_B0:F77E




Posted by: cax on 21-02-2006, 14:30
QUOTE (ivani4 @ 21-02-2006, 10:05):
cax
QUOTE:
поиска свободной ячейки в EEPROM
Имеется ввиду скачивать содержимое EEPROM ,изменять и закачивать обратно?
Или в прошивке для флешки есть информация для EEPROM?
Вся работа только с прошивкой, никаких скачиваний ЕЕPROM.

Патч работает так:

1) в место в прошивке, где устанавливается громкость в 20 при включении аппарата, вставляется код, который вместо этого читает уровень громкости из ячейки EEPROM и устанавливает его соответственно.

2) в место в прошивке, вызываемое при нажатии Volume, вставяется код, который сохраняет текущую громкость в ту самую ячейку EEPROM.

Posted by: ivani4 on 21-02-2006, 18:46

cax
видал?
www.divx-israel.cjb.net


Posted by: cax on 21-02-2006, 19:07
QUOTE (ivani4 @ 21-02-2006, 15:46):
cax
видал?
www.divx-israel.cjb.net
Пока там не появляются мои файлы, я не имею к ним претензий.
Свои деньги они берут за подъехать, подключить, установить, и это в принципе копейки - много так не заработать, да и много мороки и временных затрат.

Единственное, что мне приходит в голову - это предложить им за деньги добавление в их прошивки переворота иврита, если они сами ещё не научились.
Но это тоже обречено на провал - во-первых, они сами имеют копейки и им не с чего платить, а во-вторых мне кажется, что они и сами не дураки :&#041;

Posted by: ivani4 on 21-02-2006, 20:22
cax
А сколько стоит купить у вас переворот иврита?

Posted by: cax on 21-02-2006, 20:43
QUOTE (ivani4 @ 21-02-2006, 17:22):
cax
А сколько стоит купить у вас переворот иврита?
Во первых, автор переворота всё-таки moroz.
Во вторых, такие вопросы на форуме не решают.
И в третьих, разработка ещё не окончена.
Задача оказалась далеко не тривиальной. Статистический анализ большой выборки файлов с ивритскими субтитрами показал, что в природе достаточно часто встречаются некорректно созданные файлы субтитров, и moroz прилагает титанические усилия, чтобы переворот и работал правильно во всех случаях, и поместился в прошивке.

Попытки китайцев написать свой переворот иврита, как видно из отзывов на форуме LioNetwork, выглядят насмешкой над здравым смыслом - то знаки препинания скачут, то числа и английские надписи переворачиваются.

moroz, заранее извиняюсь, если выдал какие-то профессиональные секреты.

Posted by: ivani4 on 21-02-2006, 21:20
cax&moroz
А можно ли получить у вас эти некорректно созданные файлы субтитров?Просто у меня есть китаец с перевёрнутым ивритом(я писал об этом раньше).
При первом приближении работает нормально.Вот и хотелось бы проверить его с проблематичными файлами.

Posted by: ivani4 on 21-02-2006, 22:20
Rvs
QUOTE:
скрипты: MT1389_Bank.idc, MT1389_More.idc, MT1389_xCASE.idc, MT1389_Misc.idc, MT1389_PS_x.idc. Для тебя хватит и двух первых!!!
Не подскажешь где можно их скачать?
И что это есть натравливать?

Posted by: ivani4 on 21-02-2006, 22:29
cax
QUOTE:
и в одном из следующих окон "Choose the device name" выбираю MT1389
Из всего твоего объяснения по пользованию идой этот момент остался для меня не понятым.Просто не нахожу такое окно.
Имею IDA.Pro.v4.8.0.

Posted by: cax on 22-02-2006, 00:32
QUOTE (ivani4 @ 21-02-2006, 19:29):
cax
QUOTE:
и в одном из следующих окон "Choose the device name" выбираю MT1389
Из всего твоего объяснения по пользованию идой этот момент остался для меня не понятым.Просто не нахожу такое окно.
Имею IDA.Pro.v4.8.0.
Насколько я помню, я скачал набор скриптов, и в инструкции к ним было сказано раззиповать их внутрь IDA, что я и сделал. После этого стало выскакивать это окно.

Posted by: kisav on 22-02-2006, 08:15
QUOTE (Rvs @ 21-02-2006, 13:12):
kisav

В принципе всё правильно, но я делаю немного по другому.

1) ReMaker-ом сохраняю нужный Bank (Page).
2) Открываю его IDA-е.
3) Далее натравливаю скрипты: MT1389_Bank.idc, MT1389_More.idc, MT1389_xCASE.idc, MT1389_Misc.idc, MT1389_PS_x.idc. Для тебя хватит и двух первых!!!
4)Далее переходишь по адресу, но уже без первой цифры, т.е. тот который указал.

А изменять значения будешь в своём редакторе, но адрес уже с учётом номера Bank-а, и то что показывает IDA-а.

QUOTE :
update: Заменил в выше указаных местах но все равно вижу одни подчерки
Надо менять в обоих процедурах, если да то переделай процедуру так (дважды):
CODE



ROM:DD21 EF mov A, R7
ROM:DD22 64 00 xrl A, #0x00
ROM:DD24 60 38 jz ROM_DD5E
ROM:DD24
ROM:DD26 EF mov A, R7
ROM:DD27 64 FF xrl A, #0xFF
ROM:DD29 60 33 jz ROM_DD5E
ROM:DD29
ROM:DD2B EF mov A, R7
ROM:DD2C 00 nop
ROM:DD2D 00 nop
ROM:DD2E D3 setb C
ROM:DD2F 94 00 subb A, #0x00
ROM:DD31 40 05 jc ROM_DD38
ROM:DD31
ROM:DD33 EF mov A, R7
ROM:DD34 94 7F subb A, #0x7F; ':'
ROM:DD36 40 26 jc ROM_DD5E
ROM:DD36
ROM:DD38
ROM:DD38 ROM_DD38:
ROM:DD38 EF mov A, R7
ROM:DD39 D3 setb C
ROM:DD3A 94 A0 subb A, #0xA0
ROM:DD3C 40 05 jc ROM_DD43
ROM:DD3C
ROM:DD3E EF mov A, R7
ROM:DD3F 94 FF subb A, #0xFF
ROM:DD41 40 1B jc ROM_DD5E
ROM:DD41
ROM:DD43
ROM:DD43 ROM_DD43:
ROM:DD43 00 nop
ROM:DD44 00 nop
ROM:DD45 00
ROM:DD47 00
ROM:DD48 00 ......
ROM:DD49 00
ROM:DD4A 00
ROM:DD4C 00 nop
ROM:DD4D 00 nop
ROM:DD4E
ROM:DD4E ROM_DD4E:
ROM:DD4E 90 FB 8E mov DPTR, #0xFB8E
ROM:DD51 E0 movx A, @DPTR
ROM:DD52 FF mov R7, A
ROM:DD53 A3 inc DPTR
ROM:DD54 E0 movx A, @DPTR
ROM:DD55 FC mov R4, A
ROM:DD56 A3 inc DPTR
ROM:DD57 E0 movx A, @DPTR
ROM:DD58 FD mov R5, A
ROM:DD59 7B 5F mov R3, #0x5F; '_'
ROM:DD5B 12 0C 31 lcall BS:396_B0:F77E


RVS,
Вроде сделал все как ты сказал. Но.... эти ЛыЖи по русски не катят. :rolleyes:

Небольшая корректировка 2-го адреса: (вместо DBCE использовал 9BCE) Правильно?

ROM:9BCE 90 FB 9A mov DPTR, #0xFB9A
ROM:9BD1 E0 movx A, @DPTR
ROM:9BD2 FF mov R7, A
ROM:9BD3 64 20 xrl A, #0x20
ROM:9BD5 60 36 jz ROM_9C0D
ROM:9BD5
ROM:9BD7 EF mov A, R7
ROM:9BD8 64 5F xrl A, #0x5F
ROM:9BDA 60 31 jz ROM_9C0D

Хочешь, вышлю прошивку с последними изменениями а ты может сравнишь со своей (то есть моей но тобой правленой). Если это направление мертвое, то готов идти в другом направлении :p

Вот еще что:
Сравнивал твой пост с тем что имею у себя в IDe. Есть отличия (выделены красным). Может я должен в своей прошивке это соответственно откорректиравать?

Это не большой фрагмент из моей прошивки:

ROM:DD2E D3 setb C
ROM:DD2F 94 2B subb A, #0x2B ; '+'
ROM:DD31 40 05 jc ROM_DD38
ROM:DD31
ROM:DD33 EF mov A, R7
ROM:DD34 94 3A subb A, #0x3A ; ':'
ROM:DD36 40 26 jc ROM_DD5E

Posted by: kisav on 22-02-2006, 08:37
QUOTE (cax @ 22-02-2006, 00:32):
QUOTE (ivani4 @ 21-02-2006, 19:29):
cax
QUOTE:
и в одном из следующих окон "Choose the device name" выбираю MT1389
Из всего твоего объяснения по пользованию идой этот момент остался для меня не понятым.Просто не нахожу такое окно.
Имею IDA.Pro.v4.8.0.
Насколько я помню, я скачал набор скриптов, и в инструкции к ним было сказано раззиповать их внутрь IDA, что я и сделал. После этого стало выскакивать это окно.

ivani4,
вот этот IDAPro47_CONFIG_2006-01-03.RAR.RAR от сюда http://groups.yahoo.com/group/mt13x9/files/Disassembling/!IDA scripts/ (http://groups.yahoo.com/group/mt13x9/files/Disassembling/%21IDA%20scripts/
Звиняй если ужо не ахтуально. Часовой пояс у нас с тобой разный :wink:

Posted by: ivani4 on 22-02-2006, 08:51
kisav
:handup:

Posted by: Rvs on 22-02-2006, 11:55
kisav
QUOTE :
Сравнивал твой пост с тем что имею у себя в IDe. Есть отличия (выделены красным). Может я должен в своей прошивке это соответственно откорректировать?


Нет это не отличия, это ты должен был сделать как я написал, причём по двум адресам!!! ;&#041; Будь внимателен, вроде должно было заработать :&#040; , но я ещё посмотрю как можно переделать, если не пойдёт!!!! ;&#041;

ivani4
QUOTE:
Не подскажешь где можно их скачать?
И что это есть натравливать?

kisav указал файлы config, всё что внутри архива распихиваешь по нужным папкам с заменой существующих, после этого появиться и окно "Choose the device name", также скачай все скрипты (лишние не помешают) из указанного адреса, также вставь папку idc. После этого в IDA-е File->IDC file..., там увидишь все эти файлы, запускай как я писал. Но перед MT1389_xCASE.idc надо нажать цветок на ToolBar или Shift+F5, далее Insert и если правильно раскидал файлы, то должен появиться список файлов выбери mtk8032. И далее запускай скрипты по списку. Всё должно быть ОК.

Надеюсь разжевал!!!! :D

Posted by: ivani4 on 22-02-2006, 12:49
Rvs&kisav
:handup: Большое спасибо за помощь :handup:

Posted by: ivani4 on 22-02-2006, 13:25
cax
http://lionetwork.net/modules.php?name=Forums&showtopic=391441 (http://lionetwork.net/modules.php?name=Forums&showtopic=391441
Видал?Человек просит что бы ты инструкцию написал.

Posted by: Rvs on 22-02-2006, 15:50
cax

Может опять туплю, но не догоняю хоть тресни.... :&#040;
Вы с moroz разобрались как передовать значения в ARM и обробатывать их, и вот есть кусок:

mov R5, #01
mov R7, #0x80
mov R6, #0x0F
lcall ARM_PutChar


Если я правильно понимаю смысл такой в SharedMem +0F80 записывается значение R5, т.е. 1.
Как найти процедуру в ARM-е которая работает с этой ячейкой??????

Если где ошибся подправь!!!!

Posted by: cax on 22-02-2006, 16:25
Если я правильно понял вопрос, то в ARM вроде бы нет специальной процедуры. В каждом месте, где нужно прочесть ячейку, она просто считывается со своего адреса. Встань на SharedMem, вызови xref (нажми X), и ты получишь список адресов, ссылающихся на него. Выбери один, и аналогично посмотри кто на него ссылается. Так ты придёшь к коду, который читает число из SharedMem.

Posted by: Rvs on 22-02-2006, 17:39
cax
Понял!!! Были сомнения насчёт общей процедуры, ушли...

Исходя из твоих слов должна быть примерно вот такая последовательность:
LDR R0, =ptrSHARED_MEMORY
LDR R1, 0x0F80
LDRB R2, [R0,R1]

либо

LDR R0, =ptrSHARED_MEMORY
ADD R0, 0x0F80
LDRB R1, [R0]

либо другие вариации на эту тему, но значения 0x0F80, я не где не нашел... :&#040;
Вариант xref возник сразу, но проверить надо около 100 ссылок, проверив с 20-30, похожего не нашел..., :&#040; думаю и не найду т.к. последовательности 0x0F80 нигде нет, в чём засада не догоняю...., как же всё таки найти.

А у меня идея такова. Хочу найти процедуру WriteFileName от NewAge-а, знаю что в эту ячейку он пишет значения для её работы. Значит найдя место где он её читает и находиться процедура, либо её часть.
Как идея на твой взгляд тупиковая или нет???? Если есть у тебя идеи на этот счёт поделись пожалуйста!!!! :mol:

Posted by: cax on 22-02-2006, 18:19
Я, как и ты, тоже не смог найти нужных мне чтений/записи в общую память в АРМ. Что касается изменения имени файла, я знаю об этом не более, чем требует установка функции Unicode2CP.

Posted by: Rvs on 22-02-2006, 18:32
cax

Ещё один тупой вопрос в чём разница этих двух команд:

LDR R0,=unk_7E2A0 и LDR R0,=loc_5E354 и как их расчитать???? :&#040;

Posted by: moroz on 22-02-2006, 18:38
QUOTE (ivani4 @ 21-02-2006, 21:20):
cax&moroz
А можно ли получить у вас эти некорректно созданные файлы субтитров?Просто у меня есть китаец с перевёрнутым ивритом(я писал об этом раньше).
При первом приближении работает нормально.Вот и хотелось бы проверить его с проблематичными файлами.
Да, это было бы интересно. Вот кривой файл.

Posted by: ivani4 on 22-02-2006, 19:01
moroz
Спасибо за файл.
При первом приближении не пугает.Переворот в норме.Цифры в норме.Есть проблема со знаками препинания.Как я вижу, файл создан так ,что ,например ,точка и вопросительный знак стоят в разных концах предложений.Точно так они и отображаются на экране телевизора.
А на что нужно ещё обратить внимание?Какую кривость ты имел ввиду?

Posted by: kisav on 22-02-2006, 19:27
QUOTE (Rvs @ 22-02-2006, 11:55):

Нет это не отличия, это ты должен был сделать как я написал, причём по двум адресам!!! ;&#041; Будь внимателен, вроде должно было заработать :&#040; , но я ещё посмотрю как можно переделать, если не пойдёт!!!! ;&#041;


ROM:DD22 64 00 xrl A, #0x00 и ROM:DD22 64 00 xrl A, #0 одно и тоже?

Если в XVI32 меняю #0х20 на #0х00 то после перегрузки файла в IDe вижу просто #0. С этим заморачиваться или ты используешь другую версию IDы?

А делать едит прямо в IDe мона? Пока вижу только окно HEX-View.




Posted by: Rvs on 22-02-2006, 20:05
kisav

QUOTE:
ROM:DD22 64 00 xrl A, #0x00 и ROM:DD22 64 00 xrl A, #0 одно и тоже?

Ну конечно одно и тоже!!!! :D Я тоже вижу xrl A, #0, но пишу 00 что-бы было меньше вопросов при едите!!! :&#041;

На счёт едита в IDA-е не знаю!!! :&#040;

Уезжаю в командировку до понедельника, так что звыняй. Если не пойдут эти изменения, в понедельник до думаем!!! Дерзай!!! :&#041;

Posted by: cax on 22-02-2006, 20:07
kisav, в моей версии IDA редактировать нельзя, про другие не знаю.
А ноль он и в Африке ноль, не заморачивайся :&#041;

Posted by: moroz on 22-02-2006, 21:23
ivani4
QUOTE:
Какую кривость ты имел ввиду?

Нет, только это. Просто некоторых (например меня) раздражает, когда вопр. знак стоит в начале строки.

Posted by: cax on 22-02-2006, 21:29
QUOTE (moroz @ 22-02-2006, 18:23):
Дай-ка ему на проверку случаи со скобками, знаками процента и доллара.

Posted by: cax on 22-02-2006, 21:46
QUOTE (Rvs @ 22-02-2006, 15:32):
cax

Ещё один тупой вопрос в чём разница этих двух команд:

LDR R0,=unk_7E2A0 и LDR R0,=loc_5E354 и как их расчитать???? :&#040;
Не понял вопроса. Одна команда грузит один адрес, другая - другой.
И что надо рассчитать ? Тебя научить как построить байткод такой команды ?
Если я не вру, то первый байт команды - расстояние между адресом считываемой ссылки на адрес и самой командой, делённое на 4 и , кажется, минус 1.

Или в чём был вопрос ?

Posted by: ivani4 on 22-02-2006, 22:53
moroz
У меня, правда,получилось наоборот.Вопросительный знак,как положено,в конце,а вот точка в начале.И если это единственная проблема,то я бы уже бил в колокола и трубил победу.moroz,я преклоняюсь перед твоим стремлением создать идеальный продукт и есть у меня в связи с этим вопрос:если этот файл предварительно перевернуть,например,в subfix и использовать затем в двд в котором нет переворота,то всё будет в порядке?Т.е. subfix сумеет упорядочить знаки препинания?
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Дай мне,пожалуйста,если можешь, на проверку случаи со скобками, знаками процента и доллара.

Posted by: Alex_st on 22-02-2006, 23:52
QUOTE (cax @ 22-02-2006, 20:07):
kisav, в моей версии IDA редактировать нельзя, про другие не знаю.
А ноль он и в Африке ноль, не заморачивайся :&#041;
В файле idagui.cfg нужно найти параметр
DISPLAY_PATCH_SUBMENU = и поставвить значение YES.
В меню Edit появится соответствующий пункт.

Posted by: ivani4 on 23-02-2006, 00:21
QUOTE:
в одном из следующих окон "Choose the device name" выбираю MT1389
:handup: :clap1: :handup: :clap1: :handup: :clap1: :handup:
Наконец-то у меня это получилось.Спасибо всем оказавшим мне помощь.

Posted by: ivani4 on 23-02-2006, 00:29
QUOTE:
В файле idagui.cfg нужно найти параметр
DISPLAY_PATCH_SUBMENU = и поставвить значение YES.
В меню Edit появится соответствующий пункт.
!!!!!!!!!!!!!!!!!!!!!!!!Проверено.Работает!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!! :handup: :clap1: Alex_st :clap1: :handup: !!!!!!!!!!!!!!!!!!!!!

Posted by: cax on 23-02-2006, 01:06
Век живи, век учись. Спасибо Alex_st !
Жаль только ассемблировать он не умеет, только байты/слова правит.

Posted by: cax on 23-02-2006, 02:17
QUOTE (ivani4 @ 21-02-2006, 18:20):
Просто у меня есть китаец с перевёрнутым ивритом
А как зовут китайца, если не секрет ?
Я знаю о двух моделях: Апекс 811/815 и Юндай с серво 07.11, реализовано в обоих случаях по-разному.

Posted by: kisav on 23-02-2006, 05:11
QUOTE (Rvs @ 22-02-2006, 20:05):
kisav

QUOTE:
ROM:DD22 64 00 xrl A, #0x00 и ROM:DD22 64 00 xrl A, #0 одно и тоже?

Ну конечно одно и тоже!!!! :D Я тоже вижу xrl A, #0, но пишу 00 что-бы было меньше вопросов при едите!!! :&#041;

На счёт едита в IDA-е не знаю!!! :&#040;

Уезжаю в командировку до понедельника, так что звыняй. Если не пойдут эти изменения, в понедельник до думаем!!! Дерзай!!! :&#041;

:punk:
Чудо! малыш заговорил по русски первые слова. Только не выговаривает некоторые буквы. Пока замечены следующие: ы, я, ь и твердый знак.

Если смотреть Remaker-ом:

'ы' имеет #252
'ь' имеет #253
'я' имеет #256

Думаю, по анологии, не отображаются с #251 по #256. А вот почему?
Есть ыщо одна заморочка. Если диск записан в UDF то вместо русского сплошные теоремы пифагора. (Что-то типа этого: 2>4& =89 и так далее)
Это лечится?


Особая благадарность тов. CAX и тов. RVS. Без вас не видать мне русского :hi:

Posted by: cax on 23-02-2006, 11:01
kisav, если ты встроил Unicode2CP в АРМ, то уже, наверное, знаешь, что последние 6 букв русского алфавита (ъ ы ь э ю я) сидят не только под номерами 250-255, но и дублируются под номерами 5-10. У тебя так ? Если нет, вставь их туда сам или используй шрифт из моих прошивок.

Насчёт UDF - видимо это никто не тестировал, вот и не пролечили прошивку всесторонне. Я попробую поспрашивать на yahoo и потестировать на своём аппарате.

:&#041; :&#041; :&#041;
То, что ты называешь "теоремой Пифагора", я назвал "кашей-малашей". Можно также называть это словом "Джибриш" или "кразкозябры" :&#041; Впрочем, кракозябры тут как раз ни при чём - обычно кракозябрами зовут европейские буквы с умляутами , которые появляются при неверной транскодировке.

Posted by: kisav on 23-02-2006, 18:58
QUOTE (cax @ 23-02-2006, 11:01):
kisav, если ты встроил Unicode2CP в АРМ, то уже, наверное, знаешь, что последние 6 букв русского алфавита (ъ ы ь э ю я) сидят не только под номерами 250-255, но и дублируются под номерами 5-10. У тебя так ? Если нет, вставь их туда сам или используй шрифт из моих прошивок.

Насчёт UDF - видимо это никто не тестировал, вот и не пролечили прошивку всесторонне. Я попробую поспрашивать на yahoo и потестировать на своём аппарате.

:&#041; :&#041; :&#041;
То, что ты называешь "теоремой Пифагора", я назвал "кашей-малашей". Можно также называть это словом "Джибриш" или "кразкозябры" :&#041; Впрочем, кракозябры тут как раз ни при чём - обычно кракозябрами зовут европейские буквы с умляутами , которые появляются при неверной транскодировке.

Cax,

Вот что было замеченно.

- Используя родной шрифт, который кстати, имеет русские буквы то вижу умляуты. (буквы e, i, a с точками на верху)

- Используя твой из 'Hyundai 3899 Servo 02.09 Hebrew-Russian v5.0' я получаю русские названия но без этих нескольких букв :&#040; .

А на UDF диске в место русского только символы и цифры.

Posted by: cax on 23-02-2006, 20:52
1) Если ты действительно заменил правильный шрифт, то значит у тебя заблокированы символы с кодами меньше пробела (0x20). Разблокируешь - заработает

2) Это решение описывалось выше. Можно засунуть буквы (ъ ы ь э ю я) в шрифт где-то между английскими и русскими, и поменять константу для вычитания (0xF5) в подпрограмме Unicode2CP, чтобы она превращала 250-255 не в 5-10, а в другой отрезок.


Posted by: moroz on 23-02-2006, 22:11
QUOTE (ivani4 @ 22-02-2006, 22:53):
moroz
У меня, правда,получилось наоборот.Вопросительный знак,как положено,в конце,а вот точка в начале.И если это единственная проблема,то я бы уже бил в колокола и трубил победу.moroz,я преклоняюсь перед твоим стремлением создать идеальный продукт и есть у меня в связи с этим вопрос:если этот файл предварительно перевернуть,например,в subfix и использовать затем в двд в котором нет переворота,то всё будет в порядке?Т.е. subfix сумеет упорядочить знаки препинания?
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Дай мне,пожалуйста,если можешь, на проверку случаи со скобками, знаками процента и доллара.
В связи возросшей активностью на этом топике предлагаю с темой переворота иврита перейти на соседний, более подходящий.
Post Link: Переворот иврита в прошивках МТК (http://netlab.e2k.ru/forum/index.php?showpost=555711

Posted by: cax on 23-02-2006, 22:57
QUOTE (kisav @ 23-02-2006, 15:58):
Вот что было замеченно.

- Используя родной шрифт, который кстати, имеет русские буквы то вижу умляуты. (буквы e, i, a с точками на верху)
Медленно, но уверенно до меня начинает доходить...

То, что ты называешь "шрифт, который кстати, имеет русские буквы", скорее всего имеет их примерно так: "ЕХПДМЛ" или "ГРОМКСТЬ" , а это значит, что он БЕЗ РУССКИХ БУКВ. В нормальном шрифте они идут по алфавиту.

Теперь, когда ты брал мой шрифт, ты брал 0-й, в котором буквы (ъ ы ь э ю я) находятся по адресам 0-5 ? Если да, то их надо передвинуть на позиции 5-10. И после этого будет тебе счастье.

Posted by: kisav on 24-02-2006, 18:09
QUOTE (cax @ 23-02-2006, 22:57):
QUOTE (kisav @ 23-02-2006, 15:58):
Вот что было замеченно.

- Используя родной шрифт, который кстати, имеет русские буквы то вижу умляуты. (буквы e, i, a с точками на верху)
Медленно, но уверенно до меня начинает доходить...

То, что ты называешь "шрифт, который кстати, имеет русские буквы", скорее всего имеет их примерно так: "ЕХПДМЛ" или "ГРОМКСТЬ" , а это значит, что он БЕЗ РУССКИХ БУКВ. В нормальном шрифте они идут по алфавиту.

Теперь, когда ты брал мой шрифт, ты брал 0-й, в котором буквы (ъ ы ь э ю я) находятся по адресам 0-5 ? Если да, то их надо передвинуть на позиции 5-10. И после этого будет тебе счастье.

Так оно и было. Вставил по адресу 6-11 (если смотреть в Remaker-е) эти 6 букв и стало мне счастье. :lol: Огромное тебе за подсказку спасибо.

Ты для этих целей используешь МTKFont Creator в паре с FonTool?

Вот еще один вопрос:

Знает ли кто как загнать 'пропатчиную' прошивку, слитую через кабель, на RW диск? (другого источника просто нет). Мы купили несколько одинаковых LG. А с паяльником и отверткой меня к ним не подпускают :p

Решил дабавить следующее:
Записал на RW LG_DVD\FIRMWARE\UPGRADE\LG\LV8070261.MIH (имя файла взял с другого LG, c 531)

так же пробовал FIRMWARE\UPGRADE\LG\LV8070261.MIH

- не катит. Говорит: 'Check disk'.

Есть ли возможность подсмотреть в прошивке на какое имя он реагирует?

Posted by: cax on 24-02-2006, 19:47
QUOTE (kisav @ 24-02-2006, 15:09):
Есть ли возможность подсмотреть в прошивке на какое имя он реагирует?
1) в слитом по кабелю виде её использовать нельзя
2) Если MTK ReMaker её открывает, ей нужно сделать save в формате для CD (а он умеет читать и писать в обоих форматах - CD и "кабельном")
3) Имя файла видно в поле "File" в MTK ReMaker-е.

Posted by: kisav on 24-02-2006, 19:58
QUOTE (cax @ 24-02-2006, 19:47):
QUOTE (kisav @ 24-02-2006, 15:09):
Есть ли возможность подсмотреть в прошивке на какое имя он реагирует?
1) в слитом по кабелю виде её использовать нельзя
2) Если MTK ReMaker её открывает, ей нужно сделать save в формате для CD (а он умеет читать и писать в обоих форматах - CD и "кабельном")
3) Имя файла видно в поле "File" в MTK ReMaker-е.

Я так тоже думал. Но место для имени файла пусто. Свое вставить не смог. Похоже оно только для чтения? Размер слитой прошивки 2048. После пересохранения в CD оно уменьшилось до 1858. Я так понял остальная часть была заполнена пробелами.

Посмотрел похожую, от 531 модели там имени файла то же нет а размер ровно 2048 ??? Но она предназначина для CD. Знать бы где я не догоняю :rolleyes:

Posted by: cax on 24-02-2006, 21:09
Тогда открывай в hex-редакторе и прояви наблюдательность, больше ничего не могу посоветовать. Скорее всего хотя бы расширение .MIH они не поменяли и ты его найдёшь.

Posted by: kisav on 24-02-2006, 21:29
QUOTE (cax @ 24-02-2006, 21:09):
Тогда открывай в hex-редакторе и прояви наблюдательность, больше ничего не могу посоветовать. Скорее всего хотя бы расширение .MIH они не поменяли и ты его найдёшь.

Все. Нашел. LT90502631.MIH. Работает :lol: . Спасибо еще раз.


Posted by: ivani4 on 24-02-2006, 21:35
cax
Благодаря общим усилиям участников форума у меня начали продвигаться дела с идой.Рвусь в бой окрылённый успехами kisav.Вопрос,воможно глупый.
Поддержка рус/ивр имён файлов.
Не могут ли эти три фрагмента,найденые мной в 8032(5-й банк),подойти для исправления подчерков возникших после соответствующих изменений в АРМ?
//////////////////////////////////////////////////////////////////////////////////////////////
ROM:56F0 94 20 subb A, #0x20 ; ' '
ROM:56F2 40 06 jc ROM_56FA
ROM:56F2
ROM:56F4 E0 movx A, @DPTR
ROM:56F5 D3 setb C
ROM:56F6 94 7F subb A, #0x7F ; ''
ROM:56F8 40 16 jc ROM_5710
/////////////////////////////////////////////////////////////////////////////////////////////
ROM:5862 94 20 subb A, #0x20 ; ' '
ROM:5864 40 06 jc ROM_586C
ROM:5864
ROM:5866 E0 movx A, @DPTR
ROM:5867 D3 setb C
ROM:5868 94 7F subb A, #0x7F ; ''
ROM:586A 40 16 jc ROM_5882
/////////////////////////////////////////////////////////////////////////////////////////
ROM:59D4 94 20 subb A, #0x20 ; ' '
ROM:59D6 40 06 jc ROM_59DE
ROM:59D6
ROM:59D8 E0 movx A, @DPTR
ROM:59D9 D3 setb C
ROM:59DA 94 7F subb A, #0x7F ; ''
ROM:59DC 40 16 jc ROM_59F4
////////////////////////////////////////////////////////////////////////////////////////

Posted by: kisav on 24-02-2006, 22:19
QUOTE (Alex_st @ 22-02-2006, 23:52):
QUOTE (cax @ 22-02-2006, 20:07):
kisav, в моей версии IDA редактировать нельзя, про другие не знаю.
А ноль он и в Африке ноль, не заморачивайся :&#041;
В файле idagui.cfg нужно найти параметр
DISPLAY_PATCH_SUBMENU = и поставвить значение YES.
В меню Edit появится соответствующий пункт.
Спасибо за подсказку, тезка. Я умудрился этот пост каким то образом не заметить :rolleyes:

Posted by: kisav on 26-02-2006, 00:57
QUOTE (ivani4 @ 24-02-2006, 21:35):
cax
Благодаря общим усилиям участников форума у меня начали продвигаться дела с идой.Рвусь в бой окрылённый успехами kisav.Вопрос,воможно глупый.
Поддержка рус/ивр имён файлов.
Не могут ли эти три фрагмента,найденые мной в 8032(5-й банк),подойти для исправления подчерков возникших после соответствующих изменений в АРМ?
//////////////////////////////////////////////////////////////////////////////////////////////
ROM:56F0 94 20 subb A, #0x20 ; ' '
ROM:56F2 40 06 jc ROM_56FA
ROM:56F2
ROM:56F4 E0 movx A, @DPTR
ROM:56F5 D3 setb C
ROM:56F6 94 7F subb A, #0x7F ; ''
ROM:56F8 40 16 jc ROM_5710
/////////////////////////////////////////////////////////////////////////////////////////////
ROM:5862 94 20 subb A, #0x20 ; ' '
ROM:5864 40 06 jc ROM_586C
ROM:5864
ROM:5866 E0 movx A, @DPTR
ROM:5867 D3 setb C
ROM:5868 94 7F subb A, #0x7F ; ''
ROM:586A 40 16 jc ROM_5882
/////////////////////////////////////////////////////////////////////////////////////////
ROM:59D4 94 20 subb A, #0x20 ; ' '
ROM:59D6 40 06 jc ROM_59DE
ROM:59D6
ROM:59D8 E0 movx A, @DPTR
ROM:59D9 D3 setb C
ROM:59DA 94 7F subb A, #0x7F ; ''
ROM:59DC 40 16 jc ROM_59F4
////////////////////////////////////////////////////////////////////////////////////////

ivani4,
я тут на досуге, пользуясь временным затишьем на этой ветке, собрал всю информацию по интересующему тебя вопросу в единый документ. Если хочешь, пришлю. Ты же любитель тестить :wink:. Может, поможет. Там вроде все разложено по кирпичикам. Я тут от скуки пропатчил 3 разные прошивки от плееров, которых не имею. На основании этого по мере надобности вносил в этот документ изменения. Вот только иврит+русский+английский не рассматривал. Может там только в фонте разница. А может нет... CAX его знает :lol:

Posted by: ivani4 on 26-02-2006, 01:06
kisav
Оказывается мы в одни и те же игрушки играем.
ivanov49@yandex.ru

Posted by: kisav on 26-02-2006, 01:11
QUOTE (ivani4 @ 26-02-2006, 01:06):
kisav
Оказывается мы в одни и те же игрушки играем.
ivanov49@yandex.ru

Отпиши если помогло. Если нет то где не совпало с инструкцией.

Posted by: kisav on 26-02-2006, 03:57
QUOTE (cax @ 23-02-2006, 11:01):

Насчёт UDF - видимо это никто не тестировал, вот и не пролечили прошивку всесторонне. Я попробую поспрашивать на yahoo и потестировать на своём аппарате.

CAX,

У тебя была возможность потестить на своем аппарате? Мой ББК-975 делает то же самое :&#040;

Posted by: cax on 26-02-2006, 09:42
> Может там только в фонте разница. А может нет... CAX его знает :lol:

Патч делается из 3-х частей: фонт, процедура перекодировки в АРМ, и патч кода 8032, если требуется. Все части должны присутствовать и содержать нужные штуки.

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

То же самое с фонтом - надо знать куда какие буквы ставить. Образец можно подсмотреть в моих прошивках.

Патч 8032, как мы уже знаем, оказался не везде одинаковым. С удовольствием воспользуюсь собранной kisav информацией для внесения в инструкцию. Самому расписывать лень :&#041;

> У тебя была возможность потестить на своем аппарате? Мой ББК-975 делает то же самое

Пока нет, но постараюсь долго не тянуть.

Posted by: kisav on 26-02-2006, 20:47
QUOTE (cax @ 26-02-2006, 09:42):

QUOTE :
Патч 8032, как мы уже знаем, оказался не везде одинаковым. С удовольствием воспользуюсь собранной kisav информацией для внесения в инструкцию. Самому расписывать лень :&#041;

У тебя в ящике.

А вот ыщо и вопрос знатокам: ;&#041;
Как быть уверенным что все места где требуется заменить подчерки на русский найдены и обезврежены?

С авишками проблем нет а вот с mp3 обнаружилось. Если поставить mp3 диск, браузер несколько изменяется. Делится на две равные части. Полное название файла отображается только в низу, под браузером. Только в нем опять эти самые подчерки в место русского. Как быть?

Posted by: cax on 26-02-2006, 21:27
> Поделись, если не коммерческая тайна
Не тайна. Надо найти кодовые таблицы Юникода и перекодировать их в то, как у тебя буквы в фонте сидят. Пишется на АРМ-ассемблере. Это раз.
Нужные буквы в нужные места зафигачить - это два.
А по поводу три, как ты сам видишь, ещё не все точки над i расставлены.
Яка таблиця у Юнiкоду рiдной мовы ?

Posted by: kisav on 26-02-2006, 23:43
QUOTE (cax @ 26-02-2006, 21:27):
> Поделись, если не коммерческая тайна
Не тайна. Надо найти кодовые таблицы Юникода и перекодировать их в то, как у тебя буквы в фонте сидят. Пишется на АРМ-ассемблере. Это раз.
Нужные буквы в нужные места зафигачить - это два.
А по поводу три, как ты сам видишь, ещё не все точки над i расставлены.
Яка таблиця у Юнiкоду рiдной мовы ?


Час рылся в гугле. Толком ничего не нарыл. Вот линк в котором есть трогательная история как видоизменялся codepage: http://www.brama.com/compute/rustex.html (http://www.brama.com/compute/rustex.html. Для начала они упоминают 3 версии Unicode. 1.0, 1.1 и 2.0. Меня это вогнало в ступр. Знаю только что codepage у русского и украинского один - 1251. (А если так, то может оно уже и так работает? К сожалению, не начем проверить в данный момент)


В АРМ-ассемблере обсолютно не рублю. Так что если не разжуешь как с предыдущим ребусом в IDe то я это не потяну :&#040;

P.S. Мне украинский не особо сильно нужен. Но иврита я не знаю. А описать возможность подключения дополнительного языка в своем документе был бы не прочь.

Posted by: cax on 27-02-2006, 00:02
>Для начала они упоминают 3 версии Unicode. 1.0, 1.1 и 2.0
Уже и 4 есть :&#041;

>Так что если не разжуешь
Есть вещи, которые мне под силу, но требуют многих часов, чтобы сделать. На это особенно не рассчитывай.

>codepage у русского и украинского один - 1251
Если 1251, то он уже есть (хотя я нигде не видел в 1251 буквы i с двумя точками - вот это и выясни).

А документ
http://groups.yahoo.com/group/mt13x9/files/Documents/ExSport_CP125x.rar (http://groups.yahoo.com/group/mt13x9/files/Documents/ExSport_CP125x.rar
ты уже читал ?

Posted by: ivani4 on 27-02-2006, 00:15
час розкидати каміння і час каміння громадити
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Попробовал у себя.Вместо буквы і пишет [
Поправимо.Всё остальное в порядке.
kisav
А что это за программа fontool?Где её можно взять?

Posted by: kisav on 27-02-2006, 00:17
QUOTE (cax @ 27-02-2006, 00:02):

QUOTE :
А документ
http://groups.yahoo.com/group/mt13x9/files/Documents/ExSport_CP125x.rar (http://groups.yahoo.com/group/mt13x9/files/Documents/ExSport_CP125x.rar
ты уже читал ?


Щас ознакомимся :p

Posted by: kisav on 27-02-2006, 00:31
QUOTE (ivani4 @ 27-02-2006, 00:15):
час розкидати каміння і час каміння громадити
kisav
А что это за программа fontool?Где её можно взять?
Похоже я один на ней не розмовляю. Забыл. Был в Одессе недавно, а там в перемешку украинский, русский. Знакомые американские фильмы где примерно помнишь диалоги, с переводом на украинский - с непривычки ржал. Особенно когда шварцы очень бегло между собой переговариваются :lol:

Надеюсь модераторы не оштрафуют меня за офтоп и рассовые предрасудки :rolleyes:

Я тоже fontoоl долго искал. Нашел. И... непользовал. В родном notepad-е все забацал. Copy+paste и все.

Posted by: kisav on 27-02-2006, 00:59
QUOTE (ivani4 @ 27-02-2006, 00:15):

Попробовал у себя.Вместо буквы і пишет [

Ivani4,
Ты смотрел свой фонт? В нем под #191 нет i ?

QUOTE:
Поправимо.Всё остальное в порядке.

A по подробнее можно. [ идет под #91


Posted by: cax on 27-02-2006, 01:11
>А что это за программа fontool?Где её можно взять?
И ещё вопрос до кучи: на кой она сдалась ?
Если я ничего не путаю, МТК Font Creator и так умеет всё, что надо.

Posted by: kisav on 27-02-2006, 01:26
QUOTE (cax @ 27-02-2006, 01:11):
>А что это за программа fontool?Где её можно взять?
И ещё вопрос до кучи: на кой она сдалась ?
Если я ничего не путаю, МТК Font Creator и так умеет всё, что надо.


Загрузил я MtkfontCreator а там есть такое (см картинку) ну я давай искать ее.
Изначально думал что будет делать нечто на подобии .ico editor-а...
Но пользую, как сказал выше, простым notepad для передвижки букв и их правки.

Добавлю что после правки, загоняю .txt обратно в МТК Font Creator и получаю свой .mtf. А есть другой способ. Без notepad-а?

Звиняйте за неточность. Исправлю.

Posted by: cax on 27-02-2006, 01:39
Да нет, я именно о ноутпаде и говорил. Импорт-экспорт в MTK Font Creator-e, и всё такое...

Posted by: ivani4 on 27-02-2006, 06:34
Для всього свій час, і година своя кожній справі під небом
,,,,,,,,,,,,,,,,,,,,,,,,,,,
kisav
Двд переделан по системе сах.
Под поправимо подразумевал найти нужный нам [ и вписать вместо него i.
[ присутствуют в двух верхних рядах.
,,,,,,,,,,,,,,,,,,,,,,,,,,,
Я бачив роботу, що Бог був дав людським синам, щоб трудились над нею

Posted by: Rvs on 27-02-2006, 14:04
kisav

Насколько понял всё заработало!!! Но не понял какой из вариантов, последний что-ли??

И что за глюк с MP3?? Не ясно!!!

Posted by: kisav on 27-02-2006, 20:00
QUOTE (Rvs @ 27-02-2006, 14:04):
kisav

Насколько понял всё заработало!!! Но не понял какой из вариантов, последний что-ли??

И что за глюк с MP3?? Не ясно!!!

то что в синем цвете - было сделано в начале. Но подчерки остались. После добавления остальных изменений (красный) - заработало. Если можно, добавь коменты после каждой измененной линии (мол это делает то-то а эта линия енто :p ).

ROM:9BCE 90 FB 9A mov DPTR, #0xFB9A
ROM:9BD1 E0 movx A, @DPTR
ROM:9BD2 FF mov R7, A
ROM:9BD3 64 20 xrl A, #0x20 -->#0 (думаю сдесь ты снимаешь запрет с показа букв с 0 по 32)
ROM:9BD5 60 36 jz ROM_9C0D
ROM:9BD5
ROM:9BD7 EF mov A, R7
ROM:9BD8 64 5F xrl A, #0x5F -->#0xFF (а сдесь я уже не знаю :p 5F - это номера, символы, и англ. заглавные ??? а так же порядковый номер '_'. Дальше сочинять не буду. Плохой из меня сказочник :lol: )
ROM:9BDA 60 31 jz ROM_9C0D
ROM:9BDA
ROM:9BDC EF mov A, R7
ROM:9BDD D3 setb C
ROM:9BDE 94 2B subb A, #0x2B ; '+' -->#0xFF
ROM:9BE0 40 05 jc ROM_9BE7
ROM:9BE0
ROM:9BE2 EF mov A, R7
ROM:9BE3 94 3A subb A, #0x3A ; ':' -->#0x7F
ROM:9BE5 40 26 jc ROM_9C0D
ROM:9BE5
ROM:9BE7
ROM:9BE7 ROM_9BE7: ; CODE XREF: ROM_9B32+AE j
ROM:9BE7 EF mov A, R7
ROM:9BE8 D3 setb C
ROM:9BE9 94 40 subb A, #0x40 ; '@' -->#0xA0
ROM:9BEB 40 05 jc ROM_9BF2
ROM:9BEB
ROM:9BED EF mov A, R7
ROM:9BEE 94 5B subb A, #0x5B ; '[' -->#0xFF
ROM:9BF0 40 1B jc ROM_9C0D
ROM:9BF0

Вот перечень всех изменений по bank 3

00009BD4: 20 00
00009BD9: 5F FF
00009BDF: 2B 00
00009BE4: 3A 7F
00009BEA: 40 A0
00009BEF: 5B FF
0000DD23: 20 00
0000DD28: 5F FF
0000DD30: 2B 00
0000DD35: 3A 7F
0000DD3B: 40 A0
0000DD40: 5B FF

Теперь об mp3:
Вроде обрисовал картину с ними подробно. Но если нет, то вот сама картина

Posted by: Rvs on 01-03-2006, 18:35
kisav

QUOTE:
Вот перечень всех изменений по bank 3

Я там занулил целый блок, а у тебя вроде не видно!!! :&#040;

Posted by: kisav on 01-03-2006, 20:39
QUOTE (Rvs @ 01-03-2006, 18:35):
kisav

QUOTE:
Вот перечень всех изменений по bank 3

Я там занулил целый блок, а у тебя вроде не видно!!! :&#040;

А ты не мог бы дать начальный адрес этого блока?

Вот вроде нашел сам. Правильно?


ROM:DD43 00 nop
ROM:DD44 00 nop
ROM:DD45 00
ROM:DD47 00
ROM:DD48 00 ......
ROM:DD49 00
ROM:DD4A 00
ROM:DD4C 00 nop
ROM:DD4D 00 nop

Занулил. В двух местах
с 39BF2 по 39BFC
с 3DD43 по 3DD4D
Изменений не получил :&#040; Может не там занулил?

Posted by: Rvs on 02-03-2006, 20:24
kisav

Смотри сам, имеем в оригинальной процедуре:

CODE
ROM:DD21 EF                    mov   A, R7
ROM:DD22 64 20                 xrl   A, #0x20                если символ равен #20(32) т.е. " ", то печатать сразу
ROM:DD24 60 38                 jz    ROM_DD5E
ROM:DD24
ROM:DD26 EF                    mov   A, R7
ROM:DD27 64 5F                 xrl   A, #0x5F                если символ равен #5F(95) т.е. "_", то печатать сразу
ROM:DD29 60 33                 jz    ROM_DD5E
ROM:DD29
ROM:DD2B EF                    mov   A, R7                если символ равен #00 т.е. ????, то печатать сразу
ROM:DD2C 60 30                 jz    ROM_DD5E
ROM:DD2C
ROM:DD2E D3                    setb  C
ROM:DD2F 94 2B                 subb  A, #0x2B ; '+'        если символ меньше #2B(43), то переход для дальнейшей проверки
ROM:DD31 40 05                 jc    ROM_DD38
ROM:DD31
ROM:DD33 EF                    mov   A, R7
ROM:DD34 94 3A                 subb  A, #0x3A ; ':'        если символ меньше #3A(58), то печатать сразу
ROM:DD36 40 26                 jc    ROM_DD5E 
ROM:DD36
ROM:DD38
ROM:DD38             ROM_DD38:                               ; CODE XREF: ROM_DCDC+55 j
ROM:DD38 EF                    mov   A, R7
ROM:DD39 D3                    setb  C
ROM:DD3A 94 40                 subb  A, #0x40 ; '@'        если символ меньше #2B(43) и  меньше #40(64), то печатать "_"
ROM:DD3C 40 05                 jc    ROM_DD43
ROM:DD3C
ROM:DD3E EF                    mov   A, R7
ROM:DD3F 94 5B                 subb  A, #0x5B ; '['        если символ меньше #5B(91), то печатать сразу
ROM:DD41 40 1B                 jc    ROM_DD5E
ROM:DD41
ROM:DD43
ROM:DD43             ROM_DD43:                               ; CODE XREF: ROM_DCDC+60 j
ROM:DD43 EF                    mov   A, R7
ROM:DD44 D3                    setb  C
ROM:DD45 94 60                 subb  A, #0x60 ; '`'                 если символ меньше #60(96), то печатать "_"
ROM:DD47 40 05                 jc    ROM_DD4E
ROM:DD47
ROM:DD49 EF                    mov   A, R7
ROM:DD4A 94 7B                 subb  A, #0x7B ; '{'        если символ меньше #7B(123), то печатать сразу
ROM:DD4C 40 10                 jc    ROM_DD5E
ROM:DD4C
ROM:DD4E
ROM:DD4E             ROM_DD4E:                               ; CODE XREF: ROM_DCDC+6B j
ROM:DD4E 90 FB 8E              mov   DPTR, #0xFB8E
ROM:DD51 E0                    movx  A, @DPTR
ROM:DD52 FF                    mov   R7, A
ROM:DD53 A3                    inc   DPTR
ROM:DD54 E0                    movx  A, @DPTR
ROM:DD55 FC                    mov   R4, A
ROM:DD56 A3                    inc   DPTR
ROM:DD57 E0                    movx  A, @DPTR
ROM:DD58 FD                    mov   R5, A
ROM:DD59 7B 5F                 mov   R3, #0x5F ; '_'
ROM:DD5B 12 0C 31              lcall BS:396_B0:F77E

Если будешь смотреть на Font, то увидишь какие символы хотели пропустить при печати. Зачем эти лыжники (програмеры из LG), так заморачивались я не знаю. Нам надо убрать ограничение на вывод символов. Вот так выглядит оригинальная процедура у других аппаратов:

CODE
ROM:60E2 90 FB 56              mov   DPTR, #0xFB56
ROM:60E5 EF                    mov   A, R7
ROM:60E6 F0                    movx  @DPTR, A
ROM:60E7 C3                    clr   C
ROM:60E8 94 20                 subb  A, #0x20 ; ' '
ROM:60EA 40 06                 jc    ROM_60F2
ROM:60EA
ROM:60EC E0                    movx  A, @DPTR
ROM:60ED D3                    setb  C
ROM:60EE 94 7E                 subb  A, #0x7E ; '~'
ROM:60F0 40 10                 jc    ROM_6102
ROM:60F0
ROM:60F2
ROM:60F2             ROM_60F2:                               ; CODE XREF: ROM_5FDE+10C j
ROM:60F2 90 FB 5A              mov   DPTR, #0xFB5A
ROM:60F5 E0                    movx  A, @DPTR
ROM:60F6 FF                    mov   R7, A
ROM:60F7 A3                    inc   DPTR
ROM:60F8 E0                    movx  A, @DPTR
ROM:60F9 FC                    mov   R4, A
ROM:60FA A3                    inc   DPTR
ROM:60FB E0                    movx  A, @DPTR
ROM:60FC FD                    mov   R5, A
ROM:60FD 7B 5F                 mov   R3, #0x5F ; '_'
ROM:60FF 12 05 41              lcall BS:100_B0:EE65

Я думаю ясно зачем там вписывается 00 и FF соответственно (смотри описание cax). По идее если вообще занулить весь блок проверки будут проходить все символы. Попробуй у себя занулить с адреса DD21 по DD5D включительно, в другой процедуре тоже. Если не заработает, ну тогда остаётся метод в слепую.
А именно поискать для начала такие команды mov R3, #0x5F, и заменить 5F на пример на "*",(вроде в Bank4, есть намёк) если вдруг вместо "_", появиться "*", значит это то место и можно его покопать. Если не найдется тогда искать все значения #0x5F, с любыми регистрами R0, R1,R2,R3,R4,R5 и тоже заменять, для этих целей в IDE Alt+I, заменять только mov. Сложность здесь большая, менять скопом нельзя, т.к. скорее всего повиснет, надо по одной команде и пробовать, либо пропускать анализируя смысл.
Если не заработает то может быть в ARM-е что-то намутили, т.к. внешний вид браузера меняется, то вполнереально!!!

Найдёшь место укажи адрес посмотрим дальше!!! Дерзай!!!

Posted by: Rvs on 02-03-2006, 20:27
cax

А у тебя какие-то вопросы с быстрым стартом DVD, расскажи в чём соль???
Может что знаю!!! :&#041;

Posted by: cax on 02-03-2006, 23:50
Никакой соли. Воспроизведение кучи разных DVD начинается с неотключаемой рекламы, и есть впособ эту радость вырубить нафиг, только я пока не разобрался как.

Rvs, а что ещё ты интересного умеешь ?

Вот, например, Энди разобрался, как в старые прошивки добавить переход на следующий/предыдущий MP3 по нажатию на ">>|" и "|<<", ты в этом рубишь ?

Или, например, я в своём портативном DVD не могу найти где отрабатывается одна из кнопок на панели, которой нет в таблицах обработки нажатий, сможешь разобраться ?

Posted by: kisav on 03-03-2006, 05:23
QUOTE (Rvs @ 02-03-2006, 20:24):
Найдёшь место укажи адрес посмотрим дальше!!! Дерзай!!!


Спасибо за детальный расклад

QUOTE:
тогда остаётся метод в слепую. А именно поискать для начала такие команды mov R3, #0x5F, и заменить 5F на пример на "*",(вроде в Bank4, есть намёк) если вдруг вместо "_", появиться "*", значит это то место и можно его покопать.

В xvi32 делал поиск на 7B 5F и заменял на 7B 2A. Так можно было делать или нет? Заменял сразу в каждом BANKе и сразу проверял

В Bank 4: нашлось 4 раза. Нет изменений
В Bank 3: нашлось 3 раза. Нет изменений
В Bank 0: нашлось 3 раза. Нет изменений
В Bank 6: нашлось 4 раза. Но это уже вроде за пределами 8032. Зависает :&#040;

QUOTE:
Если не найдется тогда искать все значения #0x5F, с любыми регистрами R0, R1,R2,R3,R4,R5 и тоже заменять, для этих целей в IDE Alt+I, заменять только mov.

а где ? С 0 по 5 Bank?

Posted by: Rvs on 03-03-2006, 16:35
cax

По поводу UOPа, я думаю ты это читал http://groups.yahoo.com/group/mt13x9/message/5910 (http://groups.yahoo.com/group/mt13x9/message/5910. Andy007 утверждает что после этих изменений всё нормально!!!

у меня в прошивке вот так вкл/выкл Q-Play работает:

CODE
ROM:FE62 7F 8A                 mov   R7, #0x8A ; 'К'
ROM:FE64 7E 00                 mov   R6, #0
ROM:FE66 12 03 7F              lcall PREF_GetChar
ROM:FE66
ROM:FE69 EF                    mov   A, R7
ROM:FE6A 64 01                 xrl   A, #1
ROM:FE6C 60 12                 jz    ROM_FE80
ROM:FE6C
ROM:FE6E 7F D9                 mov   R7, #0xD9 ; '-'
ROM:FE70 7E 03                 mov   R6, #3
ROM:FE72 12 04 0F              lcall ARM_GetChar
ROM:FE72
ROM:FE75 EF                    mov   A, R7
ROM:FE76 44 10                 orl   A, #0x10
ROM:FE78 FD                    mov   R5, A
ROM:FE79 7F D9                 mov   R7, #0xD9 ; '-'
ROM:FE7B 7E 03                 mov   R6, #3
ROM:FE7D 02 03 DF              ljmp  ARM_PutChar
ROM:FE7D
ROM:FE80             ROM_FE80:                              
ROM:FE80 7F D9                 mov   R7, #0xD9 ; '-'
ROM:FE82 7E 03                 mov   R6, #3
ROM:FE84 12 04 0F              lcall ARM_GetChar
ROM:FE84
ROM:FE87 EF                    mov   A, R7
ROM:FE88 54 EF                 anl   A, #0xEF
ROM:FE8A FD                    mov   R5, A
ROM:FE8B 7F D9                 mov   R7, #0xD9 ; '-'
ROM:FE8D 7E 03                 mov   R6, #3
ROM:FE8F 02 03 DF              ljmp  ARM_PutChar

Что каксается SKIP в MP3 вопрос интересен и для меня, сейчас переробатываю новый ARM, добавляю функционал. Если подскажешь как найти обработчик клавиш, то разберусь и со SKIPом.

Надо ещё попробывать спросить у Andy007, вроде ты его хорошо знаешь в чём проблем???

А ты сейчас с какой версией ARM работаешь????

Posted by: Rvs on 03-03-2006, 16:59
kisav

QUOTE:
а где ? С 0 по 5 Bank?

Да и буть внимателен, т.к. Bank5, заканчивается адресом 5ECD9F, дальше нельзя....

Posted by: Rvs on 16-03-2006, 10:49
?

Posted by: ivani4 on 21-03-2006, 12:10
cax
Фонт создаваемый при помощи MtkFontCreator отображается в MTKRemaker ввиде белых букв с чёрной окантовкой.А каким образом создается фонт с чёрными буквами и белой окантовкой?
Пример прилагается.

Posted by: cax on 21-03-2006, 13:57
Наверняка это можно сделать и проще, но я делаю так:

1) создаю белый фонт с чёрной окантовкой
2) пишу его в формат .txt

В текстовом редакторе:
3) меняю местами звёздочки и минусы
(в три замены: "*"->"%", "-" -> "*", "%"->"-")
Иногда ещё надо бывает точки заменить на пробелы.

4) импортирую обратно и конвертирую в .mtf

Posted by: ivani4 on 21-03-2006, 14:25
Идея понятна.Спасибо.

Posted by: Rvs on 21-03-2006, 18:33
Привет сах!!!

Есть проблемки!!! Суть такова. Создал два пункта меню:

CODE
25. Настройка цвета списка файлов | Настройка цвета списка файлов
   03 04A9 04A9 02 FFEC34 0000 - ROM:EC3A
  1. No Pic. | Цвет текста | Установит[02] цвет текста
     0008 FFFF 042B 04AB 007A 0000 0008 0002 FFEBEF EB80 - ROM:EC0A
    1. Прозрачност[02] | Прозрачност[02] | Прозр.
       042D 042D 0435 00 - ROM:E80D
 => 2. Бел[01]й | Бел[01]й | Бел.
       0431 0431 0439 02 - ROM:EBB0
    3. Черн[01]й | Черн[01]й | Черн.
       042E 042E 0436 03 - ROM:EBB7
    4. Красн[01]й | Красн[01]й | Крас.
       0432 0432 043A 0D - ROM:EBBE
    5. Синий | Синий | Син.
       0434 0434 043C 06 - ROM:EBC5
    6. Циан | Циан | Циан
       044A 044A 0452 04 - ROM:EBCC
    7. С.Желт[01]й | С.Желт[01]й | С.Желт
       04A6 04A6 04A7 0A - ROM:EBD3
    8. Желт[01]й | Желт[01]й | Желт.
       0445 0445 044D 08 - ROM:EBDA
    9. Т.Желт[01]й | Т.Желт[01]й | Т.Желт
       04A4 04A4 04A5 05 - ROM:EBE1

  2. No Pic. | Цвет окантовки | Установит[02] цвет окантовки
     0008 FFFF 0429 04AC 007B 0000 0008 0002 FFEBEF EB80 - ROM:EC1F
    1. Прозрачност[02] | Прозрачност[02] | Прозр.
       042D 042D 0435 00 - ROM:E80D
 => 2. Бел[01]й | Бел[01]й | Бел.
       0431 0431 0439 02 - ROM:EBB0
    3. Черн[01]й | Черн[01]й | Черн.
       042E 042E 0436 03 - ROM:EBB7
    4. Красн[01]й | Красн[01]й | Крас.
       0432 0432 043A 0D - ROM:EBBE
    5. Синий | Синий | Син.
       0434 0434 043C 06 - ROM:EBC5
    6. Циан | Циан | Циан
       044A 044A 0452 04 - ROM:EBCC
    7. С.Желт[01]й | С.Желт[01]й | С.Желт
       04A6 04A6 04A7 0A - ROM:EBD3
    8. Желт[01]й | Желт[01]й | Желт.
       0445 0445 044D 08 - ROM:EBDA
    9. Т.Желт[01]й | Т.Желт[01]й | Т.Желт
       04A4 04A4 04A5 05 - ROM:EBE1


Отображаются всё ок, но .... Стоит нажать кнопку "вниз" или "enter" как сразу выбрасывает из меню в браузер, т.е. двинуться никуда нельзя только назад.
Тогда я ради интереса взял скопировал три пункта меню из --General-- в --MPEG4--. При этом в старом месте всё продолжает работать, а в новом перемещаюсь нормально, но при нажать на "enter" опять выбрасывает. Ремакер во всех случаях показывает всё нормально.
Подскажи в чём засада???

Вообще можно ли перенести меню из одной прошивки в другую???

Posted by: cax on 21-03-2006, 19:49
Гм. Просто скопировать меню - недостаточно. Как ты знаешь, в меню также указываются:

1) адрес ячейки EEPROM, где хранится выбранное значение
2) (если не 0) адрес ячейки общей памяти (нужно для процедур в ARM)
3) адрес обработчика меню, вызываемый при выборе пункта (у тебя EB80 в том же банке, где само меню)

За всем этим и в 8032, и в АРМ могут стоять какие-то процедуры, читающие выбранные в меню значения.

Но если правильно всё подвесить - будет работать.

Вот если бы мне кто сказал, где в общей памяти хотя бы одна свободная ячейка...
Уже который месяц спрашиваю - никто не отвечает. Наверное, таких нет.

Posted by: Rvs on 21-03-2006, 20:49
cax

Я копировал уже рабочие пункты меню, т.е. те которые работали и продолжают работать после моих доработок. Я брал банальный Set TV Standartd и вставил его в созданный мной пункт --MPEG4--, конечно подправил таблицу в меню и пункт появился, но дальше....??????

А эти пункты которые я привёл для примера, это созданные с чистого листа, но и они появляться, а дальше....?????
Адрес EB80 это я уже экспериментировал думал в нём проблема, переставлял как мог обработчик вплоть просто до указания на RET.

QUOTE:
1) адрес ячейки EEPROM, где хранится выбранное значение
2) (если не 0) адрес ячейки общей памяти (нужно для процедур в ARM)
3) адрес обработчика меню, вызываемый при выборе пункта (у тебя EB80 в том же банке, где само меню)

адрес ячейки EEPROM я указал не используемый ни кем, тут вроде всё норма, а вот пункт 2) я не понял. Я всегда считал что там указывается адрес в ARM-е для хранения значения, или не так??? по подробней плиз...

У тебя в прошивке
3. No Pic. | Subtitle | Preferred Subtitle Language
0008 FFFF 00C7 011E 000B 0028 0009 0000 FF3267 07DB - ROM:3285

EEPROM = 0028 и ARM = 0009, получается 0009 адрес свободной ячейки общей памяти, как же ты её нашел??? Общая память - это ты имеешь ввиду операцию вида
mov DPTR, FBD2
mov A, #0x12
movx @DPTR, A

А FBD2 соответственно Общая память??? Брррр что-то я окончательно запутался, разъясни....?????

Попробуй в своей прошивке организовать меню так:

1. Настройка - Главная страница | Меню установок
00 008A 026C 07 FFD22E 0001 - ROM:29E4
1. Pic 25 | Общие настройки | Общие настройки
0003 0019 008B 0090 0001 0000 0000 0000 000000 0000 - ROM:2957

2. Pic 26 | Настройка аудио | Страница настройки аудио
0003 001A 01BB 01EB 0009 0000 0000 0000 000000 0000 - ROM:292D

3. Pic 27 | Настройка видео | Настройка видео
0003 001B 014D 01A1 000A 0000 0000 0000 000000 0000 - ROM:296C

4. Pic 28 | Предпочтения | Страница предпочтений
0003 001C 00CE 00D2 0006 0000 0000 0000 000000 0000 - ROM:2996

5. Pic 50 | Настройка субтитров MPEG4 | Страница настройки субтитров MPEG4
0003 0032 04AD 04AE 0018 0000 0000 0000 000000 0000 - ROM:CF85

6. Pic 29 | Установка пароля | Установка пароля
0003 001D 008E 00D1 000B 0000 0000 0000 000000 0000 - ROM:29AB

7. Pic 30 | Выход | Выход из настроек
000E 001E 008F 00D3 0011 0000 0000 0000 000000 0000 - ROM:29C0

Может тогда найдёшь те подводные камни на которые я попал....

Жду с нетерпением ответа..... :wall:

Posted by: Rvs on 28-03-2006, 15:21
cax

Подскажи как снять дамп EEPROM, для поиска сободных ячеек??

Posted by: cax on 28-03-2006, 16:55
>3. No Pic. | Subtitle | Preferred Subtitle Language
>0008 FFFF 00C7 011E 000B 0028 0009 0000 FF3267 07DB - ROM:3285

>EEPROM = 0028 и ARM = 0009

Промахнулся.
Адрес в EEPROM = 000B,
адрес в ARM (он же общая память, в которую обычно пишут из 8032, а читают из АRМ) - 0028.
В коде АРМ значение достаётся с некоторого адреса плюс 0028.
Если в меню стоит 0000, то не используется (как у тебя).

А вот то, что вместо 6-значного числа FFxxxx (не помню его назначения - может ссылка на поинтеры опций ?) у тебя везде нули - настораживает.

Дамп EEPROM я никогда не делал, но полагаю, что делается он кабелем при помощи MtkTool.

Posted by: ivani4 on 11-04-2006, 08:35
cax
В дополнении к тому празднику жизни, который мне устроил Мороз,не могли бы мы внедрить ещё одну твою разработку?Меня интересует одинаковая высота субтитров как в PAL так и в NTSC.Можем мы справится с такой задачей под твоим чутким руководством?

Posted by: moroz on 11-04-2006, 09:04
QUOTE (ivani4 @ 11-04-2006, 08:35):
cax
В дополнении к тому празднику жизни, который мне устроил Мороз
???

Posted by: cax on 11-04-2006, 09:10
moroz, скорее всего речь о DVD Premier :&#041;
ivani4, кажется, не на шутку обрадовался выходу твоей прошивки с поддержкой разворота иврита :&#041;
Я угадал ?

По поводу PAL/NTSC, возьми в руки MTK Windows и отрегулируй в окне для субтитров его положение и параметр PalDY так же, как в моих прошивках, и будет тебе счастье.

Posted by: ivani4 on 11-04-2006, 09:31
QUOTE:
Я угадал ?
Угадал.Я писал об этом сегодня в ветке по перевороту иврита.

Posted by: moroz on 11-04-2006, 09:32
Всегда к вашим услугам :hi:

Posted by: ivani4 on 11-04-2006, 09:48
сах писал:
высота субтитров в режимах PAL и NTSC теперь одинакова
.............................................................................................
Я понял это как высоту букв.Просто в NTSC буквы более высокие чем в PAL .А как видно из твоего ответа, с советом отрегулировать параметр PalDY ,речь идет о высоте т.е. о местонахождении субтитров на экране TV.
Т.е. твоя формулировка была понята мной не правильно.

Posted by: cax on 11-04-2006, 12:04
Да, мне следовало писать "абсолютная высота зоны показа субтитров".

А что касается размера букв в PAL/NTSC, посуди сам - если не делать масштабирование, которое искорёжит буквы, и не заводить отдельный шрифт для каждого режима (ни то ни другое мы делать не умеем в любом случае), то буквы получатся разного размера, так как в PAL и NTSC просто-напросто пиксели разной высоты, т.к. резолюция экрана по вертикали у них разная.

Posted by: ivani4 on 11-04-2006, 16:47
cax
С этим вопросом всё ясно.А как по поводу этого:
- для просмотра субтитров предлагается на выбор 2 разных ивритских и 2 разных русских шрифта (поменьше и побольше), итого 4.

Мне не обязательно четыре шрифта.Хотя бы два.Сможем сделать?

Posted by: cax on 11-04-2006, 17:00
Без знаний ассемблера - вряд ли, в противном случае мне придётся всё делать самому.

Я весь в ожидании новых версий и толковых разъяснений по поводу тотальной замены всего кода RISC - это позволит добавить поддержку таких вещей, как OGM/OGG, packed bitstream, custom matrixes, непропадание субтитров, форматы sub/ass/txt, Nero Digital, быстрый старт mp3 и т.д. в старые плейеры.

Но пока что в новых версиях есть много заморочек - например, не воспроизводятся некоторые виды дисков, проблемы с интерфейсом, отсутствует поддержка DTS passthrough/downmix, наблюдаются зависания, инструкция по замене не совсем ясна, и так далее, так что я пока подожду, что скажет коллективный разум форума mt13x9 на yahoo.

Posted by: ivani4 on 11-04-2006, 17:10
QUOTE:
вряд ли, в противном случае мне придётся всё делать самому
В чём определяется ,для данного случая,объём твоей работы (часы,дни,недели)?

Posted by: Rvs on 11-04-2006, 17:37
cax

У меня есть хороший RISC (4Mb) от Pekton, правда маркирован как старый, но просил ребят тестили сказали что есть все вкусности последних, за исключением DIVX Menu. Нет глюка с расинхроном в Mpeg4, плюс заработал DTS в аналог, что небыло даже в заводских прошивках и даже не обещали!!!!

Я уже с десяток ARM пересадил, вроде сложностей не было. Единственный минус у меня DRAM 4Mb и Flash 1Mb. А новые почти все под 8-2. Но ребята умудрились увеличить до 16-2. Вот тоже думаю и тогда вопросов не будет. А так без переделки всё работает, но только если запустить фильм с большим битрейтом виснет не хватает память для буфера.

Если есть вопросы кидай помогу....!!!!

Posted by: cax on 11-04-2006, 18:39
Rvs, вопросы будут и много :&#041;

Я про этот Peekton знаю, и мне нужно именно для плейеров с 4М DRAM.

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

Далее - есть ли известная проблема с именем каталога (не отображается или показано как "uuuuuuuuuuuuuuuu") ?

По поводу DTS - как его проверить ? У меня нет ни единого DVD с ним, не подскажешь где образ диска для проверки взять ?
И ещё - DTS passthrough (через декодер) и DTS downmix (через аналог) - это разные вещи, что именно работает ? Это после патча, который опубликовали на яху ?

Далее, есть ли в нём такие добавки от наших гуру, как чтение субтитров с несовпадающими именами и т.д. ? Есть ли в нём место для добавлений (я имею в виду, увеличивали ли его при помощи MTK ARM Resizer) ?

Поддерживает ли он OGM/OGG ?

Если я возьмусь за эти операции по трансплантации, подскажешь где и что ? Скажем, в скольких местах в 8032 требуется замена адресов, и нужно ли что-то ещё ?
Если я правильно помню, замена идёт в ARM_GetChar, ARM_PutChar, ARM_Unk1-7. Первые два я найду, а как искать остальные ?

Posted by: moroz on 11-04-2006, 19:07
Я знаю ответ на последний вопрос и спешу блеснуть эрудицией - надо запустить IDC скрипты и ИДА сама все найдет :p (кроме, почему-то, 7-го, а их точно 7?)

Posted by: Rvs on 11-04-2006, 19:18
cax

0)Да она 4Mb!!!

1) Зависаний нет, сам лично смотрел на ней с 10-к, ребята тестиры сказали что точно нет проблем!!!!

2) С 'uuuu' разобрался в 8032 неправильный адрес чтения названия каталога, кажись кто-то специально заложил ошибку ;&#041; К ARM особого отношения нет, если на твоём 8032 отличный скажу правильный адрес и будет всё ок!!!

3) У MTZ есть тестовый avi с DTS, найду ссылку отпишу, не вопрос!!!

4)Идёт DTS в аналог, смотрел "мисис и мистер Смит" в DTS, офигел :punk: звук в аналог супер!!!! На мой взгляд DTS downmix это когда только в стерео, а здесь все 5.1 на ура работают, и он ещё разводит и в стерео, делает микс.
Сказать тяжело все эти вкусности после патча появились или нет. Т.к. не могу разобраться где ARM оригинальный, а где шаловливые ручки покопались, я с пяток клонов перебрал пока не остановился на этой, вроде все её называют v2. И кажеться её увеличили, уж очень много пустого места!!!

5)Вот субтитрами тяжко, не проверял, т.к. особой надобности не было, но вроде что-то есть хорошое попрошу ребят, проверят отпишу!!!

6)По замене читал несколько файлов поначалу было тяжко, но потом появилась инфа от Ati2 "How to use MTK Risc in BBK firmwares" и всё встало на свои места. Осталось одно два белых пятна, но благо на них не нарывался (в описание третий пункт "если у вас это, то...." у меня не было ни разу).
А так ты всё правильно понял замена адресов в этих процедурах и всё работает. В описании от Ati2 нет особых привязок к названиям функций, только сигнатуры, кол-во вхождений и асм что-бы не ошибиться. Разжевал супер. Вот не могу вспомнить где взял, если не найдёшь, вышлю на мыло!!!

Иду спать!!! Если какие вопросы то на завтра!!!

Posted by: ivani4 on 11-04-2006, 21:58
QUOTE:
У MTZ есть тестовый avi с DTS, найду ссылку отпишу, не вопрос!!!
http://vnc.org.ua/xoro/400pro/DTS_test/DTS Test by Mtz.avi (http://vnc.org.ua/xoro/400pro/DTS_test/DTS%20Test%20by%20Mtz.avi
cax,диски двд с DTS не проблема.Смогу помочь если потребуется .

Posted by: cax on 15-04-2006, 23:07
Rvs, я уже налетел на первые грабли :&#041;

Я попытался сперва искать по сигнатурам Unk_1 - Unk_6 и ARM_GetChar, ARM_PutChar, потом по руководству BBK-MTK.

Оказалось, что поиск по сигнатурам документа BBK-MTK даёт на 3 места больше для замены, и все эти 3 места используют ADDRESS_3. Это хорошо, хоть и непонятно в каких процедурах эти 3 места сидят.

А непонятки у меня такие (прежде чем я начну баловаться с плейером):

1) ADDRESS_1, ADDRESS_2, ADDRESS_3, SHARED MEMORY используются в заменах, а как дела обстоят с CDTEXT BUFFER ?
Я где-то слышал, что его тоже надо как-то патчить (об этом нет в документе)

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

Пример:

Unk_2:

Suggested: D3 10 AF 01 C3 C0 D0 E4 2F F5 47 EE 34 ?? F5 46 E4 34 ?? F5 45 E4 33 F5 44 90 F8 60
In HU3899: D3 10 AF 01 C3 C0 D0 E4 2F F5 46 EE 34 ?? F5 45 E4 34 ?? F5 44 E4 33 F5 43 90 F8 60

Та же бодяга в Unk_3, Unk_6 и здесь:

ROM:5F66 75 44 F8 mov RAM_44, #0xF8
ROM:5F69 75 43 38 mov RAM_43, #0x38

(в документе сказано искать "75 42 38", а у меня вместо 42 есть 43)

Может подскажешь чего ?

Posted by: cax on 16-04-2006, 07:13
Разбрался, отвечаю сам себе: это всё не важно и можно заменять RISC :&#041;
Rvs, поделись своей версией RISC для плейеров с 4Мб DRAM.

Posted by: Rvs on 17-04-2006, 09:40
cax

Ты тоже нарвался на mov RAM_44(43)(42), когда я увидел первый раз почесал репу мин. 5 и отправился дальше!!! Уменя плеер на шнурке поэтому сильно не раздумывал!!! :D

Я сразу не обратил внимание, но пропали MP3 тэги. Посмотрев внимательно SHARED MEMORY увидел что вместо символов в памяти находиться '.'. Непонятно. :&#040; Обрати внимание на это!!!!


Posted by: Rvs on 17-04-2006, 19:33
cax

Ты ARM получил???

Ты MP3 тэги не смотрел или у тебя всё в норме???? Вписал к себе функцию из ямады(NewAge) там нормально отображаються, всё равно ноль, где засада....

Posted by: cax on 19-04-2006, 00:09
QUOTE (Rvs @ 11-04-2006, 16:18):
2) С 'uuuu' разобрался в 8032 неправильный адрес чтения названия каталога, кажись кто-то специально заложил ошибку ;&#041; К ARM особого отношения нет, если на твоём 8032 отличный скажу правильный адрес и будет всё ок!!!

Можно с этого места поподробнее ?
У меня имя каталога то пустое, то только одна буква показывается - короче, ерунда какая-то. Где в коде 8032 и что именно надо проверить и т.д ?

MP3-тэгами никогда не занимался, но если скажешь какой именно код надо добавлять в 8032 и как его привязывать к конкретной прошивке - то и я буду уметь.

Posted by: Rvs on 19-04-2006, 09:30
cax

Хм... А буква одна, но хоть правильня отображаеться или 'ъ'???

Тогда постепенно будем разбираться... В Bank1, процедура DIR_FileBrowser, а в ней вызов процедуры DIR_DispDirLine. В самом начале процедуры после вызова DIR_DirLineClear, идёт чтение адреса названия каталога из SHARED MEMORY, во тут и собака порылась :&#041; . У меня заработало если читает из адресов 02 2B; 02 2C; 02 2D; 02 2E. Посмотри какие у тебя???

Posted by: cax on 20-04-2006, 11:16
У меня так:


ROM:6770 ; _______________ S U B R O U T I N E _______________________________________
ROM:6770
ROM:6770
ROM:6770 DIR_DispDirLine: ; CODE XREF: DIR_FileBrowser+70p
ROM:6770 ; DIR_FileBrowser+77p
ROM:6770 20 44 03 jb RAM_28.4, ROM_6776 ; Display folder name on directory line
ROM:6773 02 68 AA ljmp DIR_DirLineClear ; Clear directory line
ROM:6776 ; ___________________________________________________________________________
ROM:6776
ROM:6776 ROM_6776: ; CODE XREF: DIR_DispDirLinej
ROM:6776 7F 31 mov R7, #0x31 ; '1'
ROM:6778 7E 02 mov R6, #2
ROM:677A 12 04 03 lcall BS:47_B0:EEE7
ROM:677D 90 FB 57 mov DPTR, #(ROM_B56+1 - ROM_1000)
ROM:6780 EF mov A, R7
ROM:6781 F0 movx @DPTR, A
ROM:6782 7F 32 mov R7, #0x32 ; '2'
ROM:6784 7E 02 mov R6, #2
ROM:6786 12 04 03 lcall BS:47_B0:EEE7
ROM:6789 90 FB 56 mov DPTR, #(ROM_B56 - ROM_1000)
ROM:678C EF mov A, R7
ROM:678D F0 movx @DPTR, A
ROM:678E 7F 33 mov R7, #0x33 ; '3'
ROM:6790 7E 02 mov R6, #2
ROM:6792 12 04 03 lcall BS:47_B0:EEE7
ROM:6795 90 FB 55 mov DPTR, #(BS:359_B4:A3A1+2 - ROM_1000)
ROM:6798 EF mov A, R7
ROM:6799 F0 movx @DPTR, A
ROM:679A 7F 34 mov R7, #0x34 ; '4'
ROM:679C 7E 02 mov R6, #2
ROM:679E 12 04 03 lcall BS:47_B0:EEE7
ROM:67A1 90 FB 54 mov DPTR, #(BS:359_B4:A3A1+1 - ROM_1000)
ROM:67A4 EF mov A, R7
ROM:67A5 F0 movx @DPTR, A

Другими словами, ты предлагаешь заменить 31-34 на 2B-2E ?

Posted by: Andy007 on 20-04-2006, 12:23
cax, rvs

Посоветуйте арм 8/2 для старых 8032
с фичами: dvd-audio, ogm, nero digital, divx menu, dts

sacd и usb не важны.

Posted by: cax on 20-04-2006, 13:34
Для 4 Мб DRAM таких нет, а плейерами с 8Мб я ещё не занимался.
Если верить сайту http://hej456.pt.to/ (http://hej456.pt.to/, то самый лучший RISC с упомянутыми фичами - в одной из разновидностей Peekton 6006.

Ещё писали о том, что версии 05.00.06.00 и старше вообще не работают в старых 8032, а также в старых 8032 невозможно получит DivX меню даже после замены RISC.

Posted by: Andy007 on 20-04-2006, 14:02
Меню в старых 8032 я умею добавлять - в принципе тоже самое что и skip по mp3:) Осталось найти работоспособный риск.

Posted by: cax on 20-04-2006, 14:59
Andy007, есть вопрос.

У меня кнопка pause, будучи нажата во время перемотки, сперва входит в паузу, а если нажать ещё раз - переходит в play. Ты умеешь сделать так, чтобы она сразу в play переходила ?

И ещё - насколько сложно mp3-теги прикрутить ?

Posted by: Andy007 on 20-04-2006, 15:11
cax, по поводу паузы - не думал ни разу на эту тему, но мысль вот какая - посмотреть как устроен обработчик ее сейчас - если по этой кнопке выполняются 2 действия по условию играется - не играется, то должна быть проверка shared memory 0x81 на предмет текущего playback mode. Вот тут и надо подкрутить проверку на перемотку.

Получится - отпишись:&#041;

Теоретически теги прикрутить не сложно, главное чтобы арм поддерживал - берешь прошивку с тегами берешь оттуда процедуру, перетаскиваешь целиком к себе и заменяешь все используемые адреса переменных и процедур. Ну и добавляешь вызов этой функции.

Posted by: cax on 20-04-2006, 15:36
Rvs, приведённый мной фрагмент встречается 5 раз, и все 5 - в 1-м банке.

(7F ? 7E 02 12 ? ? 90 ? ? EF F0 7F ? 7E 02 12 ? ? 90 ? ? EF F0 7F ? 7E 02 12 ? ? 90 ? ? EF F0 7F ? 7E 02 12 ? ? 90 ? ? EF F0)

У тебя есть что сказать по этому поводу ?

Posted by: Andy007 on 21-04-2006, 10:26
cax - по твоей последовательности - это получение из shared memory 32битного указателя. Это может быть в принципе что угодно. от тегов до имени директории или файла. надо конкретнее по месту смотреть.

Posted by: Rvs on 21-04-2006, 11:03
cax
Извиняюсь за задержку ответа!!!

Да всё так. Заменяй везде где находиться, таким образом я заставил говорить прошивку от сюда http://zapata07.pt.to/ (http://zapata07.pt.to/

Andy007

Вроде где-то видел ARM со всеми этими вкусностями, поищу!!!

По поводу тэгов.
Взял прошивку от NewAge за основу в ней тэги работают нормально, заменил только ARM, больше не трогал ни байта. Причём у ARM-ов адреса одинаковые, поэтому только сменил в ReMaker-е RISC. Залил к себе всё работает, тэги не кажет!!! ARM тэги поддерживает, ни понимаю!!! :wall:

Подскажи что передается в процедуру PS_B_0x41, я хочу ручками внести значения для всех переменных и посмотреть что произойдёт??? Вообще как она работает что ей передается,что и куда выводит????

Ты говорил что в таблице содержится длина полей тэгов!!! Непонятно 0, 1, 2, 3, 4??? Это длина поля: один, два, три ... байта??? Может это смещение в SHARED MEMORY???

Posted by: Rvs on 21-04-2006, 12:06
cax


QUOTE:
cax - по твоей последовательности - это получение из shared memory 32битного указателя. Это может быть в принципе что угодно. от тегов до имени директории или файла. надо конкретнее по месту смотреть.

Я такие вещи проверяю легко. Вычисляю адрес (SHARED MEMORY + Адр.) ввожу в его в MTKToll в режиме Expert. Снимаю Damp (Byte) 4байта. Не забыть поставить галочку Little endian. Если получившийся 4-х байтовый адрес находиться в пределах SHARED MEMORY, тогда ввожу уже его и снимаю Damp 256 байт. И там уже видно что это такое!!!!

Posted by: Rvs on 21-04-2006, 12:33
Andy007

Вот что я нашёл:

CODE
Version: 05.00.05.07
Additional info (could be wrong):
   SACD         : NO
   DVD-Audio    : NO
   OGG, OGM     : YES
   Nero Digital : YES
   DivX MF Menu : NO
   USB Support  : NO
   DRAM Size    : 8 MB
  
Version: 05.00.05.09
Additional info (could be wrong):
   SACD         : NO
   DVD-Audio    : NO
   OGG, OGM     : YES
   Nero Digital : YES
   DivX MF Menu : YES
   USB Support  : YES
   DRAM Size    : 8 MB
   
Version: 05.00.06.00
Additional info (could be wrong):
   SACD         : NO
   DVD-Audio    : YES
   OGG, OGM     : YES
   Nero Digital : NO
   DivX MF Menu : NO
   USB Support  : NO
   DRAM Size    : 8 MB
    
Version: 05.00.06.04
Additional info (could be wrong):
   SACD         : NO
   DVD-Audio    : NO
   OGG, OGM     : NO
   Nero Digital : YES
   DivX MF Menu : YES
   USB Support  : NO
   DRAM Size    : 8 MB

Posted by: Andy007 on 21-04-2006, 14:20
Вот именно - а вот чтобы еще и двд-аудио, такого нет:&#040;

Posted by: Andy007 on 21-04-2006, 14:21
Ты уверен что тебе надо PS_B_41, а не 47?

Posted by: cax on 21-04-2006, 15:38
Rvs, во-первых, со старым 8032 версии 06.00 и старше не стартуют вообще, а во-вторых, SACD и DVD-Audio имеет смысл только на тех плейерах, которые имеют соответствующие выходы - читать здесь:
Post Link: Какой нормальный привод можно купить в Израиле (http://netlab.e2k.ru/forum/index.php?showpost=562640

Posted by: Rvs on 21-04-2006, 16:48
Andy007

CODE
ROM:FBFA             ROM_FBFA:                               
ROM:FBFA 12 FB 70              lcall ROM_FB70
ROM:FBFA
ROM:FBFD 70 01                 jnz   ROM_FC00
ROM:FBFD
ROM:FBFF
ROM:FBFF             ROM_FBFF
ROM:FBFF 22                    ret
ROM:FBFF
ROM:FC00             ; ---------------------------------------------------------------------------
ROM:FC00
ROM:FC00             ROM_FC00:                               
ROM:FC00 E4                    clr   A
ROM:FC01 90 FB C1              mov   DPTR, #XRAM_FBC1
ROM:FC04 F0                    movx  @DPTR, A
ROM:FC05
ROM:FC05             ROM_FC05:                               
ROM:FC05 90 FC 10              mov   DPTR, #XRAM_FC10
ROM:FC08 74 00                 mov   A, #0
ROM:FC0A F0                    movx  @DPTR, A
ROM:FC0B A3                    inc   DPTR
ROM:FC0C 74 19                 mov   A, #0x19
ROM:FC0E F0                    movx  @DPTR, A
ROM:FC0F 90 FB C1              mov   DPTR, #XRAM_FBC1
ROM:FC12 E0                    movx  A, @DPTR
ROM:FC13 75 F0 1E              mov   B, #0x1E                
ROM:FC16 A4                    mul   AB
ROM:FC17 90 FC 13              mov   DPTR, #XRAM_FC13
ROM:FC1A 24 0E                 add   A, #0xE
ROM:FC1C F0                    movx  @DPTR, A
ROM:FC1D E4                    clr   A
ROM:FC1E 90 FC 12              mov   DPTR, #XRAM_FC12
ROM:FC21 34 01                 addc  A, #1
ROM:FC23 F0                    movx  @DPTR, A
ROM:FC24 7F 4A                 mov   R7, #0x4A ; 'J'
ROM:FC26 7E 02                 mov   R6, #2
ROM:FC28 12 04 0F              lcall BS:49_B0:EA3C
ROM:FC28
ROM:FC2B EF                    mov   A, R7
ROM:FC2C F8                    mov   R0, A
ROM:FC2D 7F 4B                 mov   R7, #0x4B ; 'K'
ROM:FC2F 7E 02                 mov   R6, #2
ROM:FC31 12 04 0F              lcall BS:49_B0:EA3C
ROM:FC31
ROM:FC34 EF                    mov   A, R7
ROM:FC35 F9                    mov   R1, A
ROM:FC36 7F 4C                 mov   R7, #0x4C ; 'L'
ROM:FC38 7E 02                 mov   R6, #2
ROM:FC3A 12 04 0F              lcall BS:49_B0:EA3C
ROM:FC3A
ROM:FC3D EF                    mov   A, R7
ROM:FC3E FA                    mov   R2, A
ROM:FC3F 7F 4D                 mov   R7, #0x4D ; 'M'
ROM:FC41 7E 02                 mov   R6, #2
ROM:FC43 12 04 0F              lcall BS:49_B0:EA3C
ROM:FC43
ROM:FC46 EF                    mov   A, R7
ROM:FC47 FB                    mov   R3, A
ROM:FC48 90 FD 57              mov   DPTR, #XRAM_FD57
ROM:FC4B E8                    mov   A, R0
ROM:FC4C F0                    movx  @DPTR, A
ROM:FC4D 90 FD 56              mov   DPTR, #XRAM_FD56
ROM:FC50 E9                    mov   A, R1
ROM:FC51 F0                    movx  @DPTR, A
ROM:FC52 90 FD 55              mov   DPTR, #XRAM_FD55
ROM:FC55 EA                    mov   A, R2
ROM:FC56 F0                    movx  @DPTR, A
ROM:FC57 90 FD 54              mov   DPTR, #XRAM_FD54
ROM:FC5A EB                    mov   A, R3
ROM:FC5B F0                    movx  @DPTR, A
ROM:FC5C 7F 0E                 mov   R7, #0xE
ROM:FC5E 7D 00                 mov   R5, #0
ROM:FC60 78 03                 mov   R0, #3
ROM:FC62 79 44                 mov   R1, #0x44 ; 'D'
ROM:FC64 7A 02                 mov   R2, #2
ROM:FC66 90 FB C1              mov   DPTR, #XRAM_FBC1
ROM:FC69 E0                    movx  A, @DPTR
ROM:FC6A 25 E0                 add   A, ACC                  
ROM:FC6C F5 F0                 mov   B, A                    
ROM:FC6E 90 FC CE              mov   DPTR, #ROM_FCCE
ROM:FC71 93                    movc  A, @A+DPTR
ROM:FC72 FB                    mov   R3, A
ROM:FC73 E5 F0                 mov   A, B                    
ROM:FC75 24 01                 add   A, #1
ROM:FC77 93                    movc  A, @A+DPTR
ROM:FC78 FC                    mov   R4, A
ROM:FC79 51 33                 acall PS_B_0x41
ROM:FC79
ROM:FC7B 90 FB C1              mov   DPTR, #XRAM_FBC1
ROM:FC7E E0                    movx  A, @DPTR
ROM:FC7F 04                    inc   A
ROM:FC80 F0                    movx  @DPTR, A
ROM:FC81 64 03                 xrl   A, #3
ROM:FC83 60 02                 jz    ROM_FC87
ROM:FC83
ROM:FC85 81 05                 ajmp  ROM_FC05
ROM:FC85
ROM:FC87             ; ---------------------------------------------------------------------------
ROM:FC87
ROM:FC87             ROM_FC87:                               
ROM:FC87 61 FF                 ajmp  ROM_FBFF
ROM:FC87
ROM:FC89             ; ---------------------------------------------------------------------------
ROM:FC89 22                    ret

Вот процедура которой пользуеться NewAge в прошивке для Xoro400Pro_RC2_v1b9. По адресу FC79 он вызывает PS_B_0x41, этуже процедуру он вызывает и в прошивке для Ямады 6600. Попробую 47, мало-ли шаманы в бубен настучали!!! :D

Я нашел месагу от NewAge, в ней говорит что по адресу lcall ARM_PutChar -> 0x0241 = 0x01 -> OFF или 0x00 -> ON субтитры. В прошивке где я взял ARM, да действительно вкл. либо выкл. субтитры. А у меня реакции ни какой!!! А ты что-то пишешь туда???

QUOTE:
Вот именно - а вот чтобы еще и двд-аудио, такого нет
Хмм.. да действительно, но если NewAge, определяет наличие либо отсутсвие двд-аудио, значит он знает сигнатуру, может попробывать пресадить!!!! А ты попробуй Version: 05.00.05.09 вдруг пойдёт, мало ли...

cax

Вот не припомню точно но кажеться я на своём запускал прошивки 06.00, не знаю правда старый или нет у меня 8032, но аппарат 4/1!!! А так все входы есть, только DVD-Audio нет, ;&#041; а так интересно!!!

Posted by: cax on 21-04-2006, 16:56
Rvs: показ каталога починился, спасибо огромное.
Единственная непонятка - я делал замену в 5 местах, и в 5-м было не 4 адреса 31-34, а 5 адресов - 30-34. Я их заменил на 2А-2Е, но не знаю, правильно ли поступил.

Кстати, отпиши о своей находке в mt13x9, а то, похоже, там никто не знает и все мучаются.

Posted by: Andy007 on 21-04-2006, 17:25
Rvs
Пробовал я этот RISC. Все нормально, меню работает у дивикса, но двд-аудио нету.

В моей прошивке - точно 47 используется.

Posted by: Rvs on 21-04-2006, 17:45
cax

5-ть адресов хмм.. интересно..., проанализирую твою прошивку. Но раз работает ок!!!

У меня с английским тяжело :&#040; (плохо в школе учился :D ), понимать понимаю, но выразить тяжело, несколько раз писал не поняли, так что если не тяжело отпиши сам!!!

Andy007

QUOTE:
В моей прошивке - точно 47 используется.
Уже пробую, но для надёжности скажи в какой прошивке????

Posted by: Rvs on 22-04-2006, 11:41
cax

Моё опущение, по вопросу ‘uuuuu’!!!

По мимо твоего варианта, когда чтение происходит, в одной процедуре, я встречал вариант другого типа:
CODE
mov   R7, #0x31 ---> 2B - менять
mov   R6, #2
lcall  Dir_Adr_Read


Dir_Adr_Read:                           

mov   DPTR, #XRAM_FBC0
mov   A, R6
movx  @DPTR, A
inc   DPTR
mov   A, R7
movx  @DPTR, A
mov   DPTR, #XRAM_FBC0
movx  A, @DPTR
mov   R6, A
inc   DPTR
movx  A, @DPTR
mov   R7, A
lcall ARM_GetChar

mov   DPTR, #XRAM_FBC5
mov   A, R7
movx  @DPTR, A
mov   DPTR, #XRAM_FBC1
movx  A, @DPTR
add   A, #1
mov   R7, A
mov   DPTR, #XRAM_FBC0
movx  A, @DPTR
addc  A, #0
mov   R6, A
lcall ARM_GetChar

..... и т.д.
При таком варианте менять надо одно значение, но также 4-5 раз!!!

Может поэтому NewAge не понял!!! :D

Posted by: cax on 23-04-2006, 12:44
Господа хорошие, a что вы знаете про полное пропадание звука при пересадке RISC ?
Я видел на mt13x9 описание какого-то "DAC sound patch", где предлагалось в определённом месте поменять 72 на C2, но мне это не помогло.

Описание патча:
http://groups.yahoo.com/group/mt13x9/message/5760 (http://groups.yahoo.com/group/mt13x9/message/5760

Posted by: moroz on 23-04-2006, 21:44
Застрял с IDA.
Патчу сейчас ARM, наковырял уже приличную базу данных. В какой-то момент ARM был расширен с помощью MtkArmResizer. Я сделал обратно "Reload the input file" и продолжал как ни в чем не бывало. Но теперь, когда я пытаюсь создать пропатченый .bin файл (Create .exe file), он выходит СТАРОЙ длины! Подправил соответствующе длину сегмента ROM - не помогает.
Как выйти из положения, чтобы всю работу заново не переделывать?!! :wall:

Posted by: cax on 24-04-2006, 01:02
Alt-S (изменить текущий сегмент), указать новый адрес конца сегмента, снова сделать reload.

Posted by: cax on 24-04-2006, 02:18
QUOTE (cax @ 23-04-2006, 09:44):
Господа хорошие, a что вы знаете про полное пропадание звука при пересадке RISC ?
При более детальном рассмотрении вопроса оказалось, что у меня, как обычно, слишком маргинальные тесты, и я с ними налетел на грабли :&#041;

Значит так. Звук не пропал. Вот что есть на самом деле:

- мой тестовый видеофайл имел звук типа "PCM audio 8000Hz 64 kb/s (1 chnl) ".
Звук из него слышен на оригинальных прошивках и Апекса и Юндая, но после замены RISC на Peekton-овский звука на этом файле больше нет ни на одном из плейеров.

- Другие нормальные AVI с MP3 вполне себе воспроизводятся на обоих ДВД и до и после замены RISC.

- Апекс на оригинальное прошивке не умел делать DTS downmix, теперь умеет.
- Юндай на оригинальное прошивке УМЕЛ делать DTS downmix, теперь НЕТ.

- Патч Rvs для имени каталога Апексу не нужен, а Юндаю безразличен.
Юндай вообще ведёт себя странно - раз показывает имя каталога верно, другой - неверно, и чаще всего - неверно.

- Есть ощущение, что Апекс стал дольше читать DVD-R, но это требует доп. проверки.

Posted by: moroz on 24-04-2006, 06:50
QUOTE (cax @ 24-04-2006, 01:02):
Alt-S (изменить текущий сегмент), указать новый адрес конца сегмента, снова сделать reload.
Если сделать reload, то все патчи пропадут :&#040;

Posted by: cax on 24-04-2006, 13:45
Сделай другой трюк - скопируй невлезающие байты на более младшие адреса, потом восстанови вручную же :&#041;

Posted by: Rvs on 25-04-2006, 18:22
cax

QUOTE:
Патч Rvs для имени каталога Апексу не нужен, а Юндаю безразличен.
Юндай вообще ведёт себя странно - раз показывает имя каталога верно, другой - неверно, и чаще всего - неверно.

А ты память не пробывал смотреть через MTKTool, что там реально всякий мусор????

Posted by: cax on 25-04-2006, 19:59
QUOTE (Rvs @ 21-04-2006, 09:06):
Я такие вещи проверяю легко. Вычисляю адрес (SHARED MEMORY + Адр.) ввожу в его в MTKToоl в режиме Expert. Снимаю Dump (Byte) 4байта. Не забыть поставить галочку Little Endian. Если получившийся 4-х байтовый адрес находится в пределах SHARED MEMORY, тогда ввожу уже его и снимаю Dump 256 байт. И там уже видно что это такое!!!!
Всё собираюсь попробовать.
Если опишешь поподробнее, с примерами о своём плейере и адресами - типа, вписываю в такое-то окошечко такой-то адрес, жму такую-то кнопочку и т.д., а то я что-то туплю. Там ведь этих видов памяти штук 10, не меньше (у меня MtkTool 1.31).

Апдейт.
Вроде как нащупал как читать - надо выбрать не "ARM DRAM", а "DRAM (BYTE)", после чего по адресу 0338C400 я вижу знакомое содержимое SHARED MEMORY.
Но что-то по адресам 0338C400+022B и 0338C400+0231 и около них не наблюдается никаких поинтеров в SHARED MEMORY.

Может покажешь как это у тебя было или другой умный совет дашь ?

Posted by: Rvs on 26-04-2006, 11:44
cax

Распишу по подробней:
Запускать MTKTool в режиме Expert. Выбрать окошко Memory Dump, поставить точку возле DRAM (Byte). Ввести адрес, указать кол-во байт для считывания и START!!!

Например:
SHARED MEMORY + Адр. папки => 0338C400 + 022B = 0338C62B. Вводим полученный адрес, и ставим галочку Little endian. Считываем и получаем адрес 033828DC. Теперь вводим этот адрес, убираем галочку Little endian, кол-во байт = 64(хватит и меньше...). И вижу 01 01 08 5C 48 69 74 5F 46 4D 5C => 01 01 08 \Hit_FM\.

08 – Пока не знаю что означает.
01 01 – Папку выводить
00 00 – Папку не выводить

Пример для диска с одной папкой в корне и двумя файлами. При нескольких папках в корне, немного сложнее, но в любом случае если войти в папку то она появиться на своём месте по второму адресу. Адрес 033828DC может меняться, в зависимости от диска.
Попробуй!!!

Posted by: moroz on 26-04-2006, 16:46
08 - это случайно не длина строки?

Posted by: Rvs on 26-04-2006, 18:36
moroz

Да похоже!!! :&#041; Не проверял пока!!!

Posted by: awk on 04-05-2006, 09:06
Уважаемые cax и ivani4! Прочитал вашу переписку и попробовал русифицировать своего китайца. У меня вместо русского - смесь английских букв и цифр. Все сделал по описанию cax. Вытащил файл ARM, нашел в нем "41 18 10 39 C9 7B" в двух местах, записал адреса, где находится каждый "10 39 C9 7B". Там, где "сообщения С++ об ошибках" вписал подпрограмму 10 39 01 B4 88 7B 04 28 C8 7B 07 D0 88 7B 05 28 C8 7B 0E D0 0E E0 00 00 00 00 00 00 01 28 01 D1 A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0 00 00 50 38 F9 28 00 D9 F5 38 01 1C 01 BC 70 47. В программу BCalc посчитал адреса, в MTKReMaker заменил ARM. Залил в китайца, CD и DVD читает, MP3 и прошивочный диск не видит. Восстановил старую прошивку через кабель. Проверил, после чего начинается такая бодяга: как только я меняю хотя бы один из "10 39 C9 7B" на посчитанные BCalc адреса. В чем засада? Объясните бестолковому. Может адреса считаю неправильно? У меня так:
23d7a- 04 f0 57 f8
23dae- 04 f0 3d f8
адрес подпрограммы 27e2d

Posted by: cax on 04-05-2006, 11:33
Проверил твои адреса и код, вроде всё сделано правильно.

По адресу 23d7a было 10 39 C9 7B, стало 04 f0 57 f8
По адресу 23d7a было 10 39 C9 7B, стало 04 f0 3d f8
По адресу 27e2d были тексты сообщений об ошибках, теперь там подпрограмма.

Всё так, я ничего не перепутал ?

Если ты вынимал АRM с распаковкой, и если при работе с прошивкой MTK ReMaker ни на что не ругался - тогда я даже не знаю в чём проблема.

Posted by: Andy007 on 04-05-2006, 12:06
Проблема очень проста - твоя инструкция к сожалению не универсальна. WriteFilename2List может быть реализована в разных армах по разному. Встречал уже 3 варианта.

Posted by: awk on 04-05-2006, 12:31
CAX, все именно так, а MTK ReMaker ругается не очень понятно на что. Вроде просто предупреждает о возможных проблемах.

Andy007, а нет такой же понятной инструкции по решению проблемы в других ARM? Чтобы через HEX редактор, а не IDA. Об ассемблере я имею крайне слабое представление.

Posted by: Andy007 on 04-05-2006, 12:57
Такой же нет. Особенно без IDA

Posted by: Rvs on 04-05-2006, 14:10
Andy007

Помоги разобраться в проблеме, как точно найти обработчик кнопок пульта!!!!

В яхе нашел вот это
CODE
mov DPTR, #XRAM_FB00   ; pressed RC keycode is here
movx A, @DPTR
lcall _C_CASE
word jumpaddress1
byte keycode1         ; some keycode from mtkremote table
word jumpaddress2
byte keycode2
...
0
0
word default_jumpaddress

Ну а дальше что, не догоняю....

Можешь объяснить для примера на кнопке "Пауза" ???

Posted by: Rvs on 04-05-2006, 14:15
awk

QUOTE:
MP3 и прошивочный диск не видит
А что значит не видит, зависает или ещё что-то???

Posted by: Andy007 on 04-05-2006, 14:45
rvs,
Ты у себя в прошивке цитируемый кусок нашел или нет?
Код паузы если не ошибаюсь - 14

Posted by: awk on 04-05-2006, 15:13
RVS, ты совершенно прав.
MP3 зависает - начинает крутить диск, на экране надпись "ЗАГРУЖАЕТСЯ", и после этого ни на пульт, ни на кнопки не реагирует. И прошивочный диск тоже. А CD и DVD -нормально воспроизводятся. Я так понял CAX именно о такой ситуации как-то раньше писал.

Posted by: Rvs on 04-05-2006, 16:11
Andy007

Да нашёл, причём во многих местах и во многих вариациях.... Я предположил что это опрос пульта в разных режимах работы аппарата, прав я или нет????
У меня есть вот такая инфа:
CODE
0x00 0
0x01 1
0x02 2
0x03 3
0x04 4
0x05 5
0x06 6
0x07 7
0x08 8
0x09 9
0x0D UP
0x0E LEFT
0x0F RIGHT
0x10 DOWN
0x14 STOP
0x15 >>|
0x16 |<<
0x17 REPEAT
0x19 Fast Forward
0x1A Fast Rewind
0x20 REPEAT AB
0x28 AUDIO
0x29 SUBTITLE
0x2B ANGLE
0x2C OSD/DISPLAY
0x2C OSD/DISPLAY
0x2E GOTO
0x32 SCAN/PREVIEW
0x33 PROGRAM/???
0x3B Progressive on/off
0x3D ZOOM
0x41 Normal Colors???
0x42 Green Colors???
0x43 Screen screwed???
0x44 ??? TILT ICON
0x47 ???
0x4C SURROUND
0x4D ??? TILT ICON
0x4E ???
0x56 MUTE
0x57 VOL+
0x58 VOL-
0x59 SOUND
0x5F FREQ 1, 2, 3, 4 ???
0x5C Open/Close Tray
0x5D Play/Pause
0x63 ???
0x66 ???
0x6B ???
0x6C SETUP/SYSTEM MENU
0x74 DIM (VFD brightness)
0x75 SLEEP
0x7C STANDBY (POWER)
0x7D STANDBY (POWER)
0x7E OPEN/CLOSE TRAY
0x84 ???
0x85 RETURN (TITLE)
0x87 PAUSE
0x89 PLAY
0x89 OK
0x8A DISC MENU
По ней я искал jmp адрес, но особо интересного не нашёл. Например у меня играет MP3, нажимаю паузу, останавливается, нажимаю ещё ни чего, не происходит... А вот в ямаде 6600, продолжается исполнение, с места останова.... Исходя из инфы код 0x87 для паузы, посмотрел и там и там разницы ни какой, значит что-то не то, не могу понять!!! :&#040;

awk

Кинь твой измененный вариант на мыло ruslan(тузик)tiraet.com. Посмотрю подскажу!!!

Posted by: cax on 04-05-2006, 17:28
QUOTE (Rvs @ 04-05-2006, 13:11):
Да нашёл, причём во многих местах и во многих вариациях....
Я находил до 11 штук, и научился опознавать режимы DVD, DivX и отчасти браузер файлов.
Научишься опознавать остальные - расскажешь.

Posted by: Rvs on 04-05-2006, 17:37
awk

Вроде всё сделал правильно скорее всего не твоя вина!!!

Если в BCalc-е указать адрес From 23D7A и TO 27E2D то результат 04 F0 57 F8, но если указать пару чисел 23D7A и 27E2C, то результат то же.... :wacko:

Тот же результат и при таких парах 23D7A 27E2A и 23D7A 27E2B. Скорее всего невозможно адресовать в этот адрес либо глюк BCalc или я ещё что-то не знаю...

Так что перемести процедуру на байт выше, т.е. с адреса 27E2C и всё должно быть хорошо!!!!

Если заработает отпиши сюда!!!

Posted by: Rvs on 04-05-2006, 17:42
cax

Ба... я и этого не могу, :mol: научи хоть этому, может пойму и дальше разберусь!!!

Может Andy007 :mol: нам обоим растолкует на примере что я привёл????

Posted by: cax on 04-05-2006, 20:47
Rvs, я узнавал назначение таблиц экспериментально.
Например, в одной из таблиц менял местами вправо и влево, в другой - стоп и паузу, или цифру 2 и цифру 3 и т.д., а затем гонял плейер в разных режимах и смотрел где всплывёт какое изменение.

Posted by: moroz on 04-05-2006, 21:32
Обнаружил проблему с субтитрами в арме от Peekton 6002.

Во-первых, если загружено больше одного файла с субтитрами, то при прыжке (GoTo) субтитры иногда пропадают (иногда нет, зависит от места куда прыгаешь). И больше не возвращаются, пока не прыгнешь на "удачное" место.

Но это еще пол-беды. Так же было и на старом арме (05.00.03.05 к Апекс 2102). И вообще, записывать несколько файлов субтитров - это уже роскошь. Настоящая же беда вот в чем:
Если записать на диск только ОДИН файл с субтитрами типа .srt - плеер все равно показывает, что есть два файла (при нажатии на Subtitles вижу 2/2) и начинается вышеуказанная болезнь :-&#040;

Что интересно, с файлами .sub ничего подобного не происходит - специально проверил.

Грешу на знаменитый фичер "OrgThenAll"

У кого какие мысли?

Posted by: moroz on 04-05-2006, 23:31
...И на этот раз солдатская смекалка не подвела бойца...

Вырубил под корень этот OrgThenAll (в меню у меня этого пока нет) - и насморка как не бывало ;&#041;

Posted by: Rvs on 05-05-2006, 10:45
cax

Дааа..... так там ещё и не одна таблица :wacko: , ладно буду разбирать, есть ещё надежда на Andy007.

moroz

Если я правильно понял ты говоришь о ARM-е над которым мы сейчас колдуем??? А вообще, какие там заложены возможности по субтитрами??? У меня прошивка от NewAge там он субтитрами может вот что:
CODE
1.Выравнивание по горизонтали субтитров  
2.Выравнивание по вертикали субтитров MPEG4
3.Переформатирование субтитров
4.Выбрать страну субтитров (CP125x)
5.Установка межстрочного интервала субтитров
6.Настройка окна субтитров MPEG4
7.Установка цвета фона субтитров MPEG4
8.Настройка прозрачности фона для субтитров
9.Установка цвета окантовки субтитров MPEG4
10.Установка цвета текста субтитров MPEG4

А что из этих вкусностей есть в этом ARM-е????

Posted by: moroz on 05-05-2006, 11:29
На эти вопросы, наверно, сах лучше ответит. Мы с ним в паре работаем. Я со своей стороны добавляю (можно сказать уже добавил) переворот иврита и перенос длинных строк (то, что у тебя, наверно, названо переформатированием) - и для L2R, и для R2L.

Posted by: Andy007 on 05-05-2006, 13:36
Я поступал с этими процедурами совершенно аналогично. Что ты имеешь в виду по еще одной таблицей? Кстати, коды команд в принципе уникальны для плеера. Особенно это касается кодов с номерами больше 3F

Posted by: awk on 06-05-2006, 07:14
QUOTE (Rvs @ 04-05-2006, 17:37):
Если в BCalc-е указать адрес From 23D7A и TO 27E2D то результат 04 F0 57 F8, но если указать пару чисел 23D7A и 27E2C, то результат то же.... :wacko:

Тот же результат и при таких парах 23D7A 27E2A и 23D7A 27E2B. Скорее всего невозможно адресовать в этот адрес либо глюк BCalc или я ещё что-то не знаю...

Так что перемести процедуру на байт выше, т.е. с адреса 27E2C и всё должно быть хорошо!!!!

Если заработает отпиши сюда!!!
Rvs, ты оказался совершенно прав. Я переместил процедуру на байт выше и все заработало. Даже русские буквы в родном шрифте уже есть. Непонятно только, почему ъ,ь,э,ю,я не воспроизводятся. Они в шрифте есть.

Posted by: Rvs on 06-05-2006, 09:18
awk

Они должны располагаться в начале шрифта с позиций 0/1/2, у тебя так??? ;&#041;

Posted by: Rvs on 06-05-2006, 11:59
Andy007

Подскажи как найти куда поставить процедуру Show_MP3_TAG?????

У меня сейчас стоит в процедуре DIR_FileBrowser в конце, но тэги обновляються тогда когда обновляеться браузер, т.е. на каждый раз. Помоги найти!!!

Posted by: cax on 07-05-2006, 13:21
QUOTE (Rvs @ 06-05-2006, 06:18):
awk

Они должны располагаться в начале шрифта с позиций 0/1/2, у тебя так??? ;&#041;
А ты человека не путай. Для того кода, что у него есть, они должны быть на позициях 05-10. Я советую просто взять готовый шрифт из моих прошивок.

Posted by: cax on 07-05-2006, 13:28
QUOTE (moroz @ 05-05-2006, 08:29):
На эти вопросы, наверно, сах лучше ответит.
Переведу стрелку обратно на moroz-а :&#041;

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

Самая главная для местной израильской специфики проблема - правильный показ и перенос иврита, которыми Мороз успешно занимается. Вряд ли тот же NewAge захочет тратить силы на столь непростую задачу, тем более не зная иврита.

Большая часть упомянутых "вкусностей" ничто иное, как вынесение функций MTK Windows / Font Creator в меню прошивки. Сделать несложно, но и не нужно, ИМХО :&#041;

Posted by: moroz on 07-05-2006, 17:08
Ну, я бы не стал так рубить с плеча. Функции, на мой взгляд, полезные. А MTK Windows не каждый обязан уметь пользоваться. Так что если несложно - то давай. Так каждый легко сможет "заточить" прошивку под свой телевизор и свои вкусы.
А о вкусах не спорят. Тут один сегодня отколол - просил вернуть серый фон субтитрам :lol: А вы говорите...

Только все это не имеет, я думаю, отношения к ARMу. Все эти параметры меняются прямо в 8032 и передаются в АРМ.

А из субтитровых "вкусностей" в пиктоновском ARMe - это то, что субтитры не пропадают при АС3. Ну и пресловутый OrgThenAll.

Posted by: cax on 07-05-2006, 17:27
QUOTE (moroz @ 04-05-2006, 20:31):
...И на этот раз солдатская смекалка не подвела бойца...

Вырубил под корень этот OrgThenAll (в меню у меня этого пока нет) - и насморка как не бывало ;&#041;
Мда. И что нам делать, если фичу эту всё-таки хочется ?

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

Posted by: moroz on 07-05-2006, 18:05
Если фичу хочется - значит фича будет!
Тов. hej456 все сделал культурно. В меню у него добавлен соответствующий пункт, в ARMе проверяется соответствующая ячейка - если не ноль, то фичу обходим.
Вот только чего я не понимаю - как эта ячейка может находиться не в общей памяти, а в обычном раме RAMe. Адрес 66СВС после нашей раздвижки.

Posted by: moroz on 07-05-2006, 18:53
QUOTE:
Вот только чего я не понимаю - как эта ячейка может находиться не в общей памяти, а в обычном раме RAMe. Адрес 66СВС после нашей раздвижки.
Сам отвечаю. Никакая это не проверка меню. Это в его документе hej456 написал культурно, а в нашем арме сделал без меню. А может, это и не он?
Ну ничего, сами допишем, не проблема. Вот только все опять упирается в свободную ячейку в общей памяти. Как же нам все-таки ее найти?

Posted by: cax on 08-05-2006, 19:18
Вот автор фичи пишет о ней подробнее:

http://groups.yahoo.com/group/mt13x9/message/7786 (http://groups.yahoo.com/group/mt13x9/message/7786

твойя понимайт што имэл ввиду аффтар ?

Posted by: moroz on 08-05-2006, 20:36
Ну, это ты лучше меня знаешь. Аффтар берет флажок из ипрома и перкладывает его в общую память. Потому как знает, что эта ячейка свободна. А вот как он это узнал?

Posted by: awk on 10-05-2006, 07:35
QUOTE (cax @ 07-05-2006, 13:21):
QUOTE (Rvs @ 06-05-2006, 06:18):
awk

Они должны располагаться в начале шрифта с позиций 0/1/2, у тебя так??? ;&#041;
А ты человека не путай. Для того кода, что у него есть, они должны быть на позициях 05-10. Я советую просто взять готовый шрифт из моих прошивок.
Спасибо всем за помощь, с шрифтами я уже разобрался. CAX прав - эти буквы должны быть на позициях 05-10. А зачем они дублируются на 251-256? Если оттуда не используются? Может их оттуда удалить?

Posted by: cax on 10-05-2006, 09:24
awk, а они тебе там мешают ? Занимают слишком много места ? :&#041;
Как говорится, работает - не трогай :&#041;

Posted by: Rvs on 10-05-2006, 10:14
cax
QUOTE:
Функции, на мой взгляд, полезные. А MTK Windows не каждый обязан уметь пользоваться. Так что если несложно - то давай.... Только все это не имеет, я думаю, отношения к ARMу. Все эти параметры меняются прямо в 8032 и передаются в АRМ

Так то оно так!!! Я знаю что и куда и при каком пункте меню NewAge передаёт в ARM, при помощи ARM_PutChar, но .... После MP3 тэгов (я их всё таки победил :wacko: ), я уже не в чём не уверен, а именно: Да я могу передать туда все эти значения, а что толку если их не кто не читает, т.е. нет обработчика данного флажка или (это если лучше), читает но из другой ячейки.... Ты писал что у тебя много наработок по ARM-у вот и спрашиваю не попадались, ну так случайно :D эти процедурки....???? А функции действительно полезные, тут у некоторых несколько телевизоров и просят под каждый свой размер, позицию, и т.д. :D

Posted by: awk on 10-05-2006, 15:39
QUOTE (cax @ 10-05-2006, 09:24):
awk, а они тебе там мешают ? Занимают слишком много места ? :&#041;
Как говорится, работает - не трогай :&#041;
CAX, да не мешают они мне. Да и нельзя просто взять и изменить количество знаков в шрифте. Это я уже проходил. Просто до меня не доходит - а зачем нужны повторяющиеся буквы?

Уважаемые, а нельзя ли поподробнее про MP3 тэги? Мне к моей прошивке их тоже хочется приточить.

Posted by: Rvs on 10-05-2006, 16:10
awk

QUOTE:
а нельзя ли поподробнее про MP3 тэги

Без знания ассемблера врядли, есть пару моментов надо осознано вносить изменения....

Posted by: moroz on 10-05-2006, 17:29
Rvs
QUOTE:
Да я могу передать туда все эти значения, а что толку если их не кто не читает, т.е. нет обработчика данного флажка или (это если лучше), читает но из другой ячейки....

Из другой ячейки - исключено. Тогда вообще не будет субтитров.

Теперь по-порядку:
1.Выравнивание по горизонтали субтитров
2.Выравнивание по вертикали субтитров MPEG4
5.Установка межстрочного интервала субтитров
6.Настройка окна субтитров MPEG4

Этими параметрами точно пользуются все известные мне армы

7.Установка цвета фона субтитров MPEG4
8.Настройка прозрачности фона для субтитров
9.Установка цвета окантовки субтитров MPEG4
10.Установка цвета текста субтитров MPEG4

этими - лично не видел, но уверен, что тоже.


3.Переформатирование субтитров
если это то, что я думаю (самодельный перенос строки), то эта функция может быть где угодно. Оригинальная медиатековская заложена в арм и работает пахабно.

4.Выбрать страну субтитров (CP125x)
Это я не очень понял. Может, имеется в виду выбор фонта? Тогда к арму не имеет отношения.


Posted by: Rvs on 10-05-2006, 18:38
moroz

Хммм... Понял попробую отпишу!!!

Posted by: cax on 11-05-2006, 14:37
Гонял вчера до 3-х часов ночи RISC от Peekton-а на Apex-e (с последним кодом Мороза).

Имеется одна чертовски неприятная особенность - во-первых, все диски опознаются значительно дольше, на десятки секунд. Во-вторых, если с CD всё ещё более-менее терпимо, то DVD-R (с AVI на нём) читается только, если аппарат только что включили. Попытка открыть лоток и перечитать тот же самый диск, или поставить другой, заканчивается через 2-3 минуты пыхтения надписью "No Disk". Изредка диск, вставленный не первым, всё-таки прочитывается, но всё равно неизбежно зависает в дальнейшем при запуске файлов на нём.

Reset to default + выключение из розетки не помогли. После отката на оригинальную прошивку всё снова зачиталось-заработало.

Плохи наши дела, видимо что-то не срослось.
Мороз, ты ничего подобного не наблюдал, или у тебя нет DVD-R ?

Rvs, я так и не отыскал в общей памяти имён файлов и ссылок на них.
Если верить последним вестям от NewAge, прошивка использует не более 0xF80-0x1000 байт из shared memory, может быть имеет смысл сделать дамп этих первых 0x1000 байт и поискать в нём ? Как далеко от начала общей памяти ты находил имена файлов ?

Posted by: Andy007 on 11-05-2006, 15:27
Кстати, а каков алгоритм поиска неиспользуемых байт в shared memory?

Posted by: cax on 11-05-2006, 16:22
Как я понял из форума на яху, большинство прошивок использует адреса до 0xF80, значит 0xF81 и выше свободны. На некоторых используются адреса до 0x1000, значит свободные - 0x1001 и выше.
Впрочем, ты можешь и сам об этом почитать или спросить NewAge или hej456.

Posted by: Rvs on 11-05-2006, 16:25
cax

Мдааа.. задал ты загадку!!! У меня этот ARM, работает супер, :punk: не могу нарадоваться!!!! Причём как раз DVD-R/+R с авишками летают лучше чем CD!!!

Я на 34 листе давал пример (033828DC), взял прям сейчас посмотрел адрес, сейчас он 03382B70, т.е. получается он находиться не в общей памяти, а выше :wacko:
А что у тебя находиться по адресу 0338C62B???
Я тут посмотрел, если MP3 тэги разрешены, тогда адрес тэгов 033825DC, что тоже не в общей памяти!!! Либо NewAge ошибся либо не то имел ввиду!!! Тогда лучше снять дамп всех 4Mb DRAM, правда займёт часа полтора два, при этом открыть папку с легко узнаваемым именем и попробовать найти. Но я не знаю какой прогой сливать, та что есть (MTK Memory Dumper v0.1b), не уверен в ней надо её проверить!!!
Кинь мне на ящик твою прошивку посмотрю, что и как, может ещё и диски прочитает!!! От Hyundai работает, но шумно!!!

Andy007

Сами ищем присоеденяйся!!! ;&#041;

Posted by: cax on 11-05-2006, 18:18
>Кинь мне на ящик твою прошивку посмотрю, что и как

А что там кидать - возьми у меня на сайте (cax.nm.ru) файл для Апекса - YWVX2102.BIN - и представь, что ты поменял в нём RISC на пиктоновский.


Posted by: moroz on 11-05-2006, 19:55
cax
QUOTE:
Плохи наши дела, видимо что-то не срослось.
Мороз, ты ничего подобного не наблюдал, или у тебя нет DVD-R ?
DVD с авишками у меня нет. Мне обещали принести в воскресенье - проверю. Обычные CD загружаются как обычно - ~10 сек. с момента вставления до браузера, и еще примерно столько же загрузка фильма.
У тебя речь идет о версии 0С.02 с родным 8032?

Posted by: cax on 11-05-2006, 20:47
Пробовал и родной и не родной - результат один.

Posted by: moroz on 11-05-2006, 20:59
Таки плохо :&#040;

Posted by: Rvs on 12-05-2006, 09:49
cax

Взял с сайта прошивку, у меня она заработала, но... проверить ничего не могу ARM, то старый :&#040; . Я хотел память глянуть посмотреть что до как....

Posted by: Rvs on 12-05-2006, 10:09
cax

Скачал вот эту прошивку http://cax.nm.ru/mtk/fw/Apex (http://cax.nm.ru/mtk/fw/Apex 202102 YWVX Hebrew-Russian v6.0.zip!!!

Просматривая прошивку выяснилось что с большой вероятностью в ней есть MP3 тэги и ещё одно ты новый ARM в нё вставлял??? Если да то что менял???

Posted by: Rvs on 12-05-2006, 14:32
cax

Заменил ARM. Папок действительно нет!!! :&#040; Нашёл адрес папок (03382B70), но их там не оказалось. Снял для надёжности дамп 4Mb. Нашёл только стандартную таблицу размещения файлов. Сложилось впечатление, что отображение папок не включено, по аналогии с MP3 тэгами, если в определенной ячейки shared memory записан 01 тэги выключены, хотя при этом адрес формируется, и по этому адресу находятся значения очень похожие на те, что в теперешнем случае с папками. :wacko:
Попробуй спросить в яше есть такой переключатель или нет??? Буду искать сам!!!

У меня читает и CD и DVD с авишками с учётом не родного серво можно сказать нормально, по крайне мере NO Disc не было ни разу!!!

Posted by: Andy007 on 12-05-2006, 16:59
C папками я сталкивался - некоторые армы для типа файла папка используют код не 0x10 а 0x16. Надо в 8032 править процедуру GetFileType. Обычно это С_CCASE в caseах которого идет return 2 return 1 или return 4 + один case со спецобработкой - это и есть фолдер.

Posted by: Rvs on 12-05-2006, 18:00
Andy007

Хмммм... интересно, покопаюсь....

Posted by: cax on 12-05-2006, 23:05
Andy007 - ты просто кладезь знаний !

Самое смешное, что сегодня я гонял ДВД в хвост и в гриву, но проблема с чтением дисков больше не возвращалась. Видимо, в прошлый раз я что-то налажал.
Отбой тревоги !

А фолдеры всё-таки хотелось бы увидеть. Rvs, надеюсь на тебя !

Posted by: awk on 15-05-2006, 10:21
Глубокоуважаемые гуру! Понимаю что лезу со своими мелкими вопросами в разговор мудрецов, но все же - есть ли на ваших модернизированных аппаратах функция Караоке (это когда микрофон можно подключить и песни в него орать)? Хочется приточить ваши навороты к своему китайцу (а он с этой фичей)! Но те прошивки, которые я скачивал и изучал, без этого караоке. Я проглядел в них эту функцию или ее у вас нет? У меня самого мозгов не хватит перелопатить свою прошивку через ассемблер, а прикрутить свой пульт, VFD и кнопки к неродной суперпрошивке вроде попробовал-получилось.

Posted by: cax on 15-05-2006, 11:39
Думаю, что это не умеет никто. Нужна оригинальная прошивка.
А в чём заключается фича ? В меню появляется возможность включать-выключать микрофон, или что-то ещё ?

Posted by: awk on 15-05-2006, 14:19
QUOTE (cax @ 15-05-2006, 11:39):
А в чём заключается фича ? В меню появляется возможность включать-выключать микрофон, или что-то ещё ?
cax, действительно, в меню имеется возможность включать-выключать микрофон, регулировать его громкость, добавлять к звуку из микрофона ECHO (реверберация). cax, я так понял, что ты из Израиля? В Европе эта фича, похоже не популярна. А в Азии (Китай, ну и Россия) популярна. Если интересно, то могу выслать оригинальную прошивку моего китайца на почту.
Я в нем с вашей общей помощью русские имена сделал.

Posted by: Andy007 on 15-05-2006, 15:03
C shared memory разобрался.
Действительно дампом можно понять где используемые области, где нет.

Я вот сейчас какую фичу делаю - чтобы можно было двд-видео в броузере папками показать. Собственно это делать уже научился. Осталось меню прикрутить для этого дела.

Posted by: cax on 15-05-2006, 16:35
awk, а что я с ней делать буду ? У меня, слава богу, есть чем заняться. Это Энди желает странного :&#041;

Posted by: cax on 15-05-2006, 20:00
Вот пункт выбора русского языка в меню:

2. Russian | Set Preference To Russian | RUS
0059 012D 03C9 18 - ROM:31A2


А вот скажите мне, повелители кабеля, что пишется в EEPROM при выборе языка субтитров (ячейка 0xB) ? 2 байта кода языка ("ru"), или 1 байт выбранного значение пункта меню (0x18), или чего-то ещё ?

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

ROM:0001F9C0 7F 0B mov R7, #0xB
ROM:0001F9C2 7E 00 mov R6, #0
ROM:0001F9C4 12 06 61 lcall PREF_GetChar
ROM:0001F9C7 EF mov A, R7
ROM:0001F9C8 94 17 subb A, #0x17
ROM:0001F9CA 60 02 jz ROM_F9CE
ROM:0001F9CC 74 07 mov A, #non-russian font number
ROM:0001F9CE ........................

Код работает ! Но откуда берётся это 0x17 ? Это 0x18 из пункта меню минус один ? Как мне определить какое значение соответствует японскому, китайскому и прочим языкам ?

Posted by: moroz on 15-05-2006, 22:36
QUOTE (Andy007 @ 15-05-2006, 15:03):
C shared memory разобрался.
Действительно дампом можно понять где используемые области, где нет.
Если можно, побольше интимных подробностей!

Posted by: Andy007 on 16-05-2006, 09:42
Про shared ram. Смотрю на дамп shared ram и ищу большие области заполненные нулями, причем начинающиеся с круглого числа. С вероятностью близкой к 1 - олбласти не используются.

Про русский язык. В eeprom пишется 18.

в 8032 есть табличка соответствия этого числа двухбайтовому коду:
CODE
0000023A20:  xx xx xx xx xx xx xx xx   xx xx xx xx xx 00 01 66  xxxxxxxxxxxxxxxf
0000023A30:  72 00 02 65 73 00 03 7A   68 00 04 6A 61 00 06 64  r  es  zh  ja  d
0000023A40:  65 00 07 73 76 00 08 64   61 00 09 6E 6F 00 0A 6E  e  sv  da  no  n
0000023A50:  69 00 0B 6E 6C 00 0C 69   73 00 0D 70 74 00 0E 69  i  nl  is  pt  i
0000023A60:  77 00 0F 65 6C 00 10 68   72 00 11 74 72 00 12 69  w  el  hr  tr  i
0000023A70:  74 00 14 70 6C 00 15 68   75 00 16 63 73 00 1A 69  t  pl  hu  cs  i
0000023A80:  6E 00 19 74 68 00 17 6B   6F 00 1B 6D 73 00 1C 67  n  th  ko  ms  g
0000023A90:  61 00 1D 72 6F 00 05 00   00 00 1E 00 00 00 00 65  a  ro          e
0000023AA0:  6E 00 1F 61 72 00 18 72   75 00 20 01 01 4A AF 0A  n  ar  ru    J
В подавляющем большинстве прошивок вместо 18 -> ru идет какая-то хрень или ru отсутствует напрочь! Явно заговор!!!

Posted by: cax on 16-05-2006, 11:03
> Про русский язык. В eeprom пишется 18.

Andy007, я чем тогда ты объяснишь, что в работающем коде используется 0x17 ? У меня этот код во всех прошивках. Проверка на 0x18 не работает.

ROM:0001F9C8 94 17 subb A, #0x17

> В подавляющем большинстве прошивок вместо 18 -> ru идет какая-то хрень или ru отсутствует напрочь!

И как результат того, что русский отсутствует в таблице, в EEPROM пишется 0x17 ???

Кстати, проверяя shared memory, я заметил, что при выборе русского текстовый код языка выставляется в "en". Надо будет попробовать влепить в таблицу русский вместо, скажем, корейского, может тогда всё будет как у людей ?

В прошивке Пионера, кстати, с русским всё пучком. Впрочем, в Пионере и кириллический шрифт имеется :&#041;

Posted by: Rvs on 16-05-2006, 11:08
cax

Andy007 прав у тебя есть обработчик по адресу 2_AC8D, а в нём чтение из таблицы по адресу 3B53. И если я понял то и код и 'ru' пишется в shared. И действительно в прошивках ru нет, я обычно заменяю какой ни будь тайский на ru и всё работает. А код что ты привёл ты сам сделал или...

Но Andy007 подскажи в чём проблема если в меню по умолчанию указать русский, то после сброса по умолчанию в меню русский, а работает английский, пока не зайду и не выберу опять русский хотя он уже выбран!!! :wacko:



Posted by: Andy007 on 16-05-2006, 11:43
Надо смотреть процедуру сброса на дефолт - очень может быть что там тоже какой-то косяк есть.

Posted by: cax on 16-05-2006, 12:01
Похоже, что я полный идиот, и что Carry bit у меня на входе всегда 1, соответственно "subb A, #0x17" даёт ноль при A=0x18 :&#041;

Posted by: Andy007 on 16-05-2006, 12:10
Вопрос - есть у кого-нибудь карта shared memory ?

Posted by: Rvs on 16-05-2006, 15:27
Andy007

Я думаю что карты не существует, у каждого ARM-а всё это индивидуально, общего мало. Где-то какие то куски одинаковые, но расположены в разных местах, я ищу всё через дамп, сравниваю с тем что нарыли в яше другие.

А как найти процедуру сброса по дефолт???? Тот обработчик из меню, что-то маловат!!!

И ещё может, кто знает. На MP3 у меня строка состояния (та что в левом верхнем углу), по умолчанию выкл. Где храниться её состояние, что бы она была в состояние "00:00 от начала"????

cax
Ты не ответил. Процедуру ты сам сделал или заводская??? Может мне не париться с дефолтом, да подцепить её на обработчик и пусть будет русский!!!

Posted by: Andy007 on 16-05-2006, 15:44
Rvs,
можешь привести примеры разных армов? Я пока еще не встречал различий в диапазоне 0x0-0x1000

Posted by: cax on 16-05-2006, 17:57
QUOTE (Rvs @ 16-05-2006, 12:27):
cax
Ты не ответил. Процедуру ты сам сделал или заводская???
Судя по идиотскому багу в ней - моя :&#041;
А вставлена она в Sub_SetStyle вместо статического номера фонта, и теперь его можно менять из меню.

Posted by: Rvs on 17-05-2006, 16:17
Andy007

Я писал что общее есть ;&#041;. А первые 0x1000 байт, это от начала shared memory или от начала DRAM? Если от начала shared memory, то не уверен хотя бы по тому что например, есть ARM-ы с тэгами и без, пресловутый адрес названия папок, и тот в разных местах...

cax

А пункт 2. Russian | Set Preference To Russian | RUS это ты тоже писал или ты пользуешься Subtitle Language DVD??? Т.е. используешь это значение????

Posted by: Rvs on 17-05-2006, 16:43
Andy007

Вопрос который уже долго меня мучает, как всё-таки найти SetupDefs_Tab или процедуру инициализации?????? :mol: :mol: :mol:

Posted by: Andy007 on 17-05-2006, 16:59
Если бы я знал как искать со 100% вероятностью, то проблемы эквалайзера бы не стояло:&#041;

Posted by: cax on 17-05-2006, 22:27
QUOTE (Rvs @ 17-05-2006, 13:17):
cax

А пункт 2. Russian | Set Preference To Russian | RUS это ты тоже писал или ты пользуешься Subtitle Language DVD??? Т.е. используешь это значение????
Да, использую.

Posted by: cax on 17-05-2006, 22:51
Налетел на такие грабли: если добавляю 10-й фонт [11-12], отрубается показ 0-го, т.е. "всё в пробелах". Добавляя ещё шрифтов можно добиться того, что пропадёт и шрифт для имён файлов.

Доктор, это лечится ? Я хочу много-много шрифтов !

Posted by: Rvs on 18-05-2006, 09:06
cax

Я думаю закончилось место выделеное под таблицу шрифтов. Как то баловался с ней, точно не помню, но кажеться она не безграничная....

Для экономии можешь совместить несколько шрифтов, например 0 использовать и для меню и для браузера и для MPEG4 субтиров получаеться три в одном, значит экономишь 2 шрифта.

QUOTE:
Да, использую.

Значит выбирая Subtitle Language для DVD, ты выбираишь язык и для MPEG4???

Posted by: Rvs on 18-05-2006, 09:51
cax
Andy007

Кто то делал что-бы screensaver запускался при воспроизведении MP3???

Вроде подправил прошивку, screensaver стартует, но через 1-1,5 сек. стартует опять и так постоянно из-за этого логотипчик успевает пролетет 5 см. и опять начинает с начала.


Posted by: cax on 18-05-2006, 10:10
QUOTE:
Для экономии можешь совместить несколько шрифтов.

Мне бы совместить со шрифтом для иконок "стоп", "перемотка", "зум" и т.д., но я не знаю где упоминается его номер. Впрочем, если ограничение по суммарному размеру шрифтов, мне это не поможет.

QUOTE:
Значит выбирая Subtitle Language для DVD, ты выбираишь язык и для MPEG4???

Да, а что в этом такого ?

Posted by: Rvs on 18-05-2006, 11:05
cax

QUOTE:
но я не знаю где упоминается его номер

Мне казалось что в Languages :blink:, там же указываеться номер шрифта и позиция символа. Я таким образом перемещаю этот шрифт по номерам. Если переписать Languages, думаю можно совместить.

QUOTE:
Да, а что в этом такого ?

Наконец понял мысль!!! :D

Posted by: Rvs on 18-05-2006, 11:48
cax
Andy007

Как поменять значение по умолчанию (на картинке красным прямоугольником). У меня сейчас выкл. хочу что бы было "время от начала трэка"

Posted by: Rvs on 18-05-2006, 12:52
Andy007

Вот что я нашёл может будет интересно.

CODE
Shared memory

Address        Comment – Name - Size

0x0008        Parental Control code – ARM_ParentCode – 1 byte
0x0024        Preferred Menu Language – ARM_PrMenuLang – 2 bytes
        "en" - English
0x0026        Preferred Audio Language – ARM_PrAudioLang – 2 bytes
        "en" – English
0x0028        Preferred Subtitle Language – ARM_PrSubLang – 2 bytes
        "en" - English
0x002A        TV system – ARM_TVsystem – 1 bytes
        0x00 - Multi
        0x01 - NTSC
        0x02 - PAL
0x003F        DVD Region Code – ARM_RegionC – 1 byte
0x0081        Disk format – ARM_DiscType – 1 byte
        0x00 - DVD-Video
        0x02 - MiniDVD
        0x03 - VCD 3.0
        0x04 - VCD 2.0
        0x05 - VCD 1.1
        0x08 - SVCD
        0x09 - CVD
        0x0A – Audio CD
        0x0B - HDCD
        0x0C - DTS CD
        0x0D - CD-G
        0x0E – KODAK Picture CD
0x10 – ISO DVD/CD  (Nevir & Philips Update CD)
        0x11 – Update CD (Nevir SACD)
        0x12 – SACD
0x00A4        Total Tracks = ARM_TotTracks – 1 byte
0x00A5        Current Track = ARM_CurTrack – 1 byte
0x00C3        Number of Audio channels – ARM_ NbAudioCh - 1 byte
        0x00, 0x01, 0x02        - 1CH
        0x03                        - 2CH
        0x04, 0x09                - 3CH
        0x05, 0x0A                - 4CH
        0x06                        - 2.1CH
        0x08, 0x0E                - 4.1CH
        0x0B                        - 5CH
        0x0C                        - 6CH
        0x0F                        - 5.1CH
        0x10                        - 6.1CH
0x00C6        Audio format – ARM_AudioFormat – 1 byte
        0x00 - MPG
        0x01 - DTS
        0x02 - LPCM / PCM
        0x03 - Dolby Digital / AC3
        0x04 - SDDS
        0x05 - MP3
        0x06 - WAV
        0x09 - HDCD
        0x0A – AAC
0x0241        MP3 TAG option – ARM_mp3tag_opt – 1 byte
        0x00 - On
        0x01 – Off
0x024A        MP3 Tag address – ARM_Mp3TAddr – 4 bytes
0x0265        Total minutes remain – 1byte BCD
0x0266        Total seconds remain – 1byte BCD
0x0269        Single minutes elapsed – 1byte BCD
0x026A        Single seconds elapsed – 1byte BCD
0x026D        Single minutes remain – 1byte BCD
0x026E        Single seconds remain– 1byte BCD 
0x0270        Single length hours – 1byte BCD
0x0271        Single length minutes – 1byte BCD
0x0272        Single length seconds – 1byte BCD
0x0274        Total length hours – 1byte BCD
0x0275        Total length minutes – 1byte BCD
0x0276        Total length seconds – 1byte BCD
0x02C0        Video Setup Component – ARM_Compo – 1 byte
        0x00 - Multi
        0x01 - NTSC
0x03E0        Version – ARM_Version – 4 bytes
0x03E4        RISC Version – ARM_RISCVersion – 4 bytes
0x03E8        8032 Version – ARM_8032Version – 4 bytes
0x03EC        DSP Version – ARM_DSPVersion – 4 bytes
0x03F0        Servo Version – ARM_ServoVersion – 4 bytes
0x03F4        Sub Version – ARM_SubVersion – 4 bytes
0x04E0        Firmware Id – ARM_FirmId – x bytes, until null char
0x0500        Firmware FileName – ARM_FirmFile – x bytes, until null char
0x08E0        File/Dir table for Browser – read Info – DiscDir.doc
0x0E00        UPG_Swap_Table – 32 bytes
0x0E60        Subtitle buffer, starts with 16 bit subtitle length
0x1AF9        Preferences

Posted by: Andy007 on 18-05-2006, 13:47
ага. спасибо.

Posted by: cax on 18-05-2006, 15:22
Я тут уже давно прыгалку на время через меню хочу сделать, т.е. во время воспроизвдения выбираешь в меню "перейти на 30-ю минуту с начала" и оно прыгает.

Если получится - можно будет и запоминалку сделать (т.е. перейти на то место, где в последний раз нажал "стоп").

Есть мысли как это реализовать ?

Posted by: Rvs on 19-05-2006, 15:15
cax
Насколько я понял ты хочешь, сделать переход в MPEG4, а есть такая функция??!!!??? Что-то не видел ни где!!! А вообще мысль неплохая!!! :punk:


Andy007

Открыл файл MTK1389locs, там указан DefsTab для ямады. Нашел значение такие же и у себя. И что теперь делать??? Что это за значения, не втыкаю!!!!

00D5000A1BE0007F00E1008100181B80007D00DF0099003C1BA0007E00E000DF00001B80008000E2


Ещё вопрос ко всем!!!

Как сделать скип на MP3????

Posted by: Rvs on 19-05-2006, 15:41
Andy007

Я по поводу проблемы cax с папками, ты говорил править функцию DIR_GetFileType, но я не понял что именно!!!

CODE
ROM:D612             DIR_GetFileType:                        
ROM:D612                                                     
ROM:D612 EF                    mov   A, R7
ROM:D613 75 F0 10              mov   B, #0x10                
ROM:D616 A4                    mul   AB
ROM:D617 24 E5                 add   A, #0xE5 ; '&#245;'
ROM:D619 FF                    mov   R7, A
ROM:D61A E5 F0                 mov   A, B                    
ROM:D61C 34 08                 addc  A, #8
ROM:D61E FE                    mov   R6, A
ROM:D61F 12 04 03              lcall BS:47_B0:EEE7
ROM:D61F
ROM:D622 EF                    mov   A, R7
ROM:D623 12 22 1A              lcall _C_CCASE
ROM:D623
ROM:D623             ; ---------------------------------------------------------------------------
ROM:D626 D6 60                 .word ROM_D660
ROM:D628 00                    .byte 0
ROM:D629 D6 60                 .word ROM_D660
ROM:D62B 01                    .byte 1
ROM:D62C D6 60                 .word ROM_D660
ROM:D62E 02                    .byte 2
ROM:D62F D6 60                 .word ROM_D660
ROM:D631 03                    .byte 3
ROM:D632 D6 63                 .word ROM_D663
ROM:D634 05                    .byte 5
ROM:D635 D6 60                 .word ROM_D660
ROM:D637 07                    .byte 7
ROM:D638 D6 60                 .word ROM_D660
ROM:D63A 08                    .byte 8
ROM:D63B D6 66                 .word ROM_D666
ROM:D63D 09                    .byte 9
ROM:D63E D6 66                 .word ROM_D666
ROM:D640 0A                    .byte 0xA
ROM:D641 D6 66                 .word ROM_D666
ROM:D643 0B                    .byte 0xB
ROM:D644 D6 60                 .word ROM_D660
ROM:D646 0D                    .byte 0xD
ROM:D647 D6 69                 .word ROM_D669
ROM:D649 10                    .byte 0x10
ROM:D64A D6 66                 .word ROM_D666
ROM:D64C 12                    .byte 0x12
ROM:D64D D6 66                 .word ROM_D666
ROM:D64F 13                    .byte 0x13
ROM:D650 D6 66                 .word ROM_D666
ROM:D652 14                    .byte 0x14
ROM:D653 D6 60                 .word ROM_D660
ROM:D655 15                    .byte 0x15
ROM:D656 D6 66                 .word ROM_D666
ROM:D658 16                    .byte 0x16
ROM:D659 D6 66                 .word ROM_D666
ROM:D65B 17                    .byte 0x17
ROM:D65C 00                    .byte    0
ROM:D65D 00                    .byte    0
ROM:D65E D6 6C                 .word ROM_D66C
ROM:D660             ; ---------------------------------------------------------------------------
ROM:D660
ROM:D660             ROM_D660:                               
ROM:D660                                                     
ROM:D660 7F 02                 mov   R7, #2
ROM:D662 22                    ret
ROM:D662
ROM:D663             ; ---------------------------------------------------------------------------
ROM:D663
ROM:D663             ROM_D663:                               
ROM:D663 7F 03                 mov   R7, #3
ROM:D665 22                    ret
ROM:D665
ROM:D666
ROM:D666             ; --------------- ------------------------------------------------
ROM:D666
ROM:D666
ROM:D666             ROM_D666:                               
ROM:D666                                                     
ROM:D666 7F 04                 mov   R7, #4
ROM:D668 22                    ret
ROM:D668
ROM:D668             
ROM:D668
ROM:D669             ; ---------------------------------------------------------------------------
ROM:D669
ROM:D669             ROM_D669:                            
ROM:D669 7F 01                 mov   R7, #1
ROM:D66B 22                    ret
ROM:D66B
ROM:D66C             ; ---------------------------------------------------------------------------
ROM:D66C
ROM:D66C             ROM_D66C:                               
ROM:D66C 7F 00                 mov   R7, #0
ROM:D66E 22                    ret

Posted by: cax on 19-05-2006, 15:41
Это скорее к Andy007, его разработка. Он мне объяснять пытался, но я тупой, не понял. Ниасилил.

Posted by: Andy007 on 19-05-2006, 15:55
Rvs,
Это все? больше нет? странно. Для начала попробуй ROM:D66C 7F 01 mov R7, #1


Posted by: cax on 19-05-2006, 22:00
А самое интересное с папками, что временами они показываются верно, но время от времени опять начинают сходить с ума.

Первое, что приходит в голову - это что ARM и 8032 по разному управляют памятью и время от времени кто-то один другому что-то затирает.

Posted by: Rvs on 24-05-2006, 11:45
cax

Мне попалась прошивка кем-то переделаная в которй нет такого кода :
CODE
subb  A, #0x20
jc    ROM_5EF5
movx  A, @DPTR
setb  C
subb  A, #0x7E
jc    ROM_5F05

но при этом все символы отображает!!! :wacko: Я сравнил её с заводской изменения стандартные, т.е. сделали широкий браузер, правили ARM, и т.д. судя по всему по твоему описанию, но символы отображает!!! Я пропатчил заводскую у меня не появились от ъ до я.

В чём проблема не в курсе????

Posted by: Andy007 on 24-05-2006, 11:51
Проблема в том, что фильтрация может быть не только в 8032 но и в арме

Posted by: Rvs on 24-05-2006, 12:23
Andy007

Эта мысль, проскочила сразу!!! Для эксперемента я заменил ARM на новый в обеих прошивках всё осталось как прежде!!!

Вот процедура что в правленом ARM-е.

CODE
UnicodeToCP  
                                                               
                       SUB     R1, #0x10
                       PUSH    {R0}
                       PUSH    {R1}
                       LDRB    R1, [R1,#0xE]
                       LDR     R0, =unk_681C1
                       CMP     R1, #4
                       BEQ     loc_684E6
                       LDR     R0, =unk_682C2
                       CMP     R1, #0x20 ; ' '
                       BEQ     loc_684E6
                       LDR     R0, =unk_683C3
                       CMP     R1, #0x21 ; '!'
                       BEQ     loc_684E6
                       POP     {R1}
                       POP     {R0}
                       LDRB    R1, [R1,#0xF]
                       BX      LR
             ; ---------------------------------------------------------------------------
             loc_684E6                                         
                       POP     {R1}
                       LDRB    R1, [R1,#0xF]
                       LDRB    R1, [R0,R1]
                       CMP     R1, #0xFA ; '·'    !!!!!!.....!!!!
                       BCS     loc_684F4
                       POP     {R0}
                       BX      LR
             ; ---------------------------------------------------------------------------
             loc_684F4                                         
                       SUB     R1, #0xFA ; '·'
                       POP     {R0}
                       BX      LR
            ; End of function UnicodeToCP

Если я правильно понял то пресловутая проверка это CMP R1, #0xFA, а что тогда за таблица unk_681C1 ?????

Posted by: Andy007 on 24-05-2006, 12:30
Это собственно таблица перекодировки. В данной функции применен табличный способ конвертации.

Posted by: Rvs on 24-05-2006, 12:56
Andy007

бааа точно :wall:

А по этим вопрос не подскажешь????

Как сделать скип на MP3????

"время от начала трэка"?????



Posted by: Andy007 on 24-05-2006, 13:32
Процедуру для скипа я выкладывал на ixbt - в дух словах - посмотри обработчик в режиме игры двд и для броузера поставь тот же самый вызов. Идея - дернуть в арме setoperationmode

Posted by: Andy007 on 24-05-2006, 13:32
Как время - не знаю

Posted by: Rvs on 24-05-2006, 17:01
Andy007

Перерыл всю прошивку :wall: Исходя из описания cax коды клавиш 0x15 и 0x16, встечаються три раза. Сравнивал с прошивкой NewAge где работает нормально отличий нет, не втыкаю :wacko:

Искал твою процедуру на ixbt, бесталковый поиск ничего не нашёл!!!

Кинь ссылку или тема хоть какая была!!!!???

Если у тебя в прошивках есть скип, кинь ссылку на прошивку и адресок в самой прошивке где это реализовано!!! ;&#041;

Posted by: Andy007 on 24-05-2006, 17:27
www.bbk985s.com

бери последнюю прошивку и смотри Browser_keys процедуру.

Posted by: Rvs on 24-05-2006, 18:04
Andy007

А адрес процедурки Browser_keys ??? :mol: :mol:

Posted by: Andy007 on 25-05-2006, 09:02
91A1 в первом банке

Posted by: Rvs on 25-05-2006, 13:08
Andy007

Мдааа не догоняю, вообще то думал будет проще, нужны объяснения:

CODE
ROM:F6D0             ROM_F6D0:                               
ROM:F6D0 90 FC EE              mov   DPTR, #XRAM_FCEE
ROM:F6D3 E0                    movx  A, @DPTR
ROM:F6D4 54 07                 anl   A, #7
ROM:F6D6 FF                    mov   R7, A
ROM:F6D7 12 06 2B              lcall BS:139_B2:E4F4  ---> для чего проверки?? что за значения  извлекаются???
ROM:F6D7
ROM:F6DA EF                    mov   A, R7
ROM:F6DB 64 03                 xrl   A, #3
ROM:F6DD 60 0D                 jz    ROM_F6EC
ROM:F6DD
ROM:F6DF 90 FC EE              mov   DPTR, #XRAM_FCEE
ROM:F6E2 E0                    movx  A, @DPTR
ROM:F6E3 54 07                 anl   A, #7
ROM:F6E5 FF                    mov   R7, A
ROM:F6E6 12 06 2B              lcall BS:139_B2:E4F4
ROM:F6E6
ROM:F6E9 BF 01 08              cjne  R7, #1, ROM_F6F4
ROM:F6E9
ROM:F6EC
ROM:F6EC             ROM_F6EC:                 ----->  это обработчик по умолчанию
ROM:F6EC 12 E0 A2              lcall ROM_E0A2        
ROM:F6EC
ROM:F6EF 92 6F                 mov   0x2D.7, C
ROM:F6F1 02 92 7A              ljmp  ROM_927A
ROM:F6F1
ROM:F6F4             ; ---------------------------------------------------------------------------
ROM:F6F4
ROM:F6F4             ROM_F6F4:                  -----> что происходит   здесь 
ROM:F6F4 7F 44                 mov   R7, #0x44 ; 'D'
ROM:F6F6 7E 02                 mov   R6, #2
ROM:F6F8 12 02 F5              lcall BS:2_B0:E48E 
ROM:F6F8
ROM:F6FB EF                    mov   A, R7
ROM:F6FC F4                    cpl   A
ROM:F6FD 60 08                 jz    ROM_F707
ROM:F6FD
ROM:F6FF 12 F5 27              lcall BankSw:603_F527 -------> ????
ROM:F6FF
ROM:F702 92 6F                 mov   0x2D.7, C
ROM:F704 02 92 7A              ljmp  ROM_927A
ROM:F704
ROM:F707             ; ---------------------------------------------------------------------------
ROM:F707
ROM:F707             ROM_F707:                               ----->  это обработчик по умолчанию

ROM:F707 12 E0 A2              lcall ROM_E0A2
ROM:F707
ROM:F70A 92 6F                 mov   0x2D.7, C
ROM:F70C 02 92 7A              ljmp  ROM_927A


Posted by: Andy007 on 25-05-2006, 13:42
Возможно так будет понятнее.


CODE
ROM:F6D0             ; --------------- S U B R O U T I N E ---------------------------------------
ROM:F6D0
ROM:F6D0
ROM:F6D0             next:                                   ; DATA XREF: DIR_BrowserKeys+1Eo
ROM:F6D0 90 FC EE              mov   DPTR, #XRAM_SelectedFile
ROM:F6D3 E0                    movx  A, @DPTR
ROM:F6D4 54 07                 anl   A, #7
ROM:F6D6 FF                    mov   R7, A
ROM:F6D7 12 06 2B              lcall DIR_GetFileType
ROM:F6D7
ROM:F6DA EF                    mov   A, R7
ROM:F6DB 64 03                 xrl   A, #3
ROM:F6DD 60 0D                 jz    picture_or_folder
ROM:F6DD
ROM:F6DF 90 FC EE              mov   DPTR, #XRAM_SelectedFile
ROM:F6E2 E0                    movx  A, @DPTR
ROM:F6E3 54 07                 anl   A, #7
ROM:F6E5 FF                    mov   R7, A
ROM:F6E6 12 06 2B              lcall DIR_GetFileType
ROM:F6E6
ROM:F6E9 BF 01 08              cjne  R7, #1, media_file
ROM:F6E9
ROM:F6EC
ROM:F6EC             picture_or_folder:                      ; CODE XREF: next+Dj
ROM:F6EC 12 E0 A2              lcall next_page
ROM:F6EC
ROM:F6EF 92 6F                 mov   0x2D.7, C
ROM:F6F1 02 92 7A              ljmp  exit
ROM:F6F1
ROM:F6F4             ; ---------------------------------------------------------------------------
ROM:F6F4
ROM:F6F4             media_file:                             ; CODE XREF: next+19j
ROM:F6F4 7F 44                 mov   R7, #0x44 ; 'D'
ROM:F6F6 7E 02                 mov   R6, #2
ROM:F6F8 12 02 F5              lcall ARM_GetChar             ; Playback mode
ROM:F6F8
ROM:F6FB EF                    mov   A, R7
ROM:F6FC F4                    cpl   A
ROM:F6FD 60 08                 jz    playback_stopped
ROM:F6FD
ROM:F6FF 12 F5 27              lcall SetOpMode_nextTrack
ROM:F6FF
ROM:F702 92 6F                 mov   0x2D.7, C
ROM:F704 02 92 7A              ljmp  exit
ROM:F704
ROM:F707             ; ---------------------------------------------------------------------------
ROM:F707
ROM:F707             playback_stopped:                       ; CODE XREF: next+2Dj
ROM:F707 12 E0 A2              lcall next_page
ROM:F707
ROM:F70A 92 6F                 mov   0x2D.7, C
ROM:F70C 02 92 7A              ljmp  exit
ROM:F70C
ROM:F70C             ; End of function next

Posted by: Rvs on 25-05-2006, 14:04
Andy007

Супер!!! Теперь ясно!!!! :beer:

СПАСИБО!!!!!!!!!!!!

Posted by: cax on 25-05-2006, 15:18
Rvs, как разберёшься и заставишь эту штуку работать - разжуй и для меня, пожалуйста. Желательно по шагам и "для тупых" - "ищем то-то, запоминаем то-то, вставляем туда-то" и так далее.

Posted by: Rvs on 25-05-2006, 16:01
cax

ОК!!! Уже провожу эксперименты!!!

Posted by: Rvs on 26-05-2006, 13:16
Andy007

Нужен твой совет.

Процедура Browser_keys у меня выглядит так:

CODE
ROM:BFCA             Browser_keys:                           ;
ROM:BFCA D2 40                 setb  RAM_28.0
ROM:BFCC 90 FB 00              mov   DPTR, #XRAM_FB00
ROM:BFCF E0                    movx  A, @DPTR
ROM:BFD0 12 21 2D              lcall _C_CCASE
ROM:BFD0
ROM:BFD0             ; ---------------------------------------------------------------------------
ROM:BFD3 C0 14                 .word ROM_C014
ROM:BFD5 0D                    .byte 0xD
ROM:BFD6 C0 14                 .word ROM_C014
ROM:BFD8 0E                    .byte 0xE
ROM:BFD9 C0 14                 .word ROM_C014
ROM:BFDB 0F                    .byte 0xF
ROM:BFDC C0 14                 .word ROM_C014
ROM:BFDE 10                    .byte 0x10
ROM:BFDF C0 08                 .word ROM_C008
ROM:BFE1 11                    .byte 0x11
ROM:BFE2 C0 08                 .word ROM_C008
ROM:BFE4 12                    .byte 0x12
ROM:BFE5 C0 48                 .word ROM_C048
ROM:BFE7 14                    .byte 0x14
ROM:BFE8 C0 19                 .word ROM_C019
ROM:BFEA 15                    .byte 0x15
ROM:BFEB C0 19                 .word ROM_C019
ROM:BFED 16                    .byte 0x16
ROM:BFEE C0 1D                 .word ROM_C01D
ROM:BFF0 23                    .byte 0x23
ROM:BFF1 C0 08                 .word ROM_C008
ROM:BFF3 5D                    .byte 0x5D
ROM:BFF4 C0 08                 .word ROM_C008
ROM:BFF6 60                    .byte 0x60
ROM:BFF7 C0 01                 .word ROM_C001
ROM:BFF9 65                    .byte 0x65
ROM:BFFA C0 0D                 .word ROM_C00D
ROM:BFFC 6B                    .byte 0x6B
ROM:BFFD 00                    .byte    0
ROM:BFFE 00                    .byte    0
ROM:BFFF C0 46                 .word 0xC046

..................

ROM:C019             ROM_C019:                               
ROM:C019                                                    
ROM:C019 C2 40                 clr   RAM_28.0
ROM:C01B 80 2B                 sjmp  ROM_C048

Согласись совсем не так как у тебя, но я решил по любому вставить обработчик в наглую, как думаешь пойдёт или нет????
Из каких соображений брать XRAM_SelectedFile???. У меня процедуры DIR_GetFileType и DIR_GetPosition всегда ходят слетанной парой:


CODE
ROM:B251 E4                    clr   A
ROM:B252 FF                    mov   R7, A
ROM:B253 12 DE 40              lcall DIR_GetPosition
ROM:B253
ROM:B256 EF                    
ROM:B257 4E                    orl   A, R6
ROM:B258 70 17                 jnz   ROM_B271
ROM:B258
ROM:B25A FF                    mov   R7, A
ROM:B25B 12 D7 9E              lcall DIR_GetFileType

как думаешь если заменить начало на такое пойдёт???

CODE
clr   A
mov   R7, A
lcall DIR_GetPosition
mov   A, R7
anl   A, #7
mov   R7, A
lcall DIR_GetFileType


Posted by: robert7 on 27-05-2006, 00:23
QUOTE (cax @ 17-05-2006, 22:51):
Налетел на такие грабли: если добавляю 10-й фонт [11-12], отрубается показ 0-го, т.е. "всё в пробелах". Добавляя ещё шрифтов можно добиться того, что пропадёт и шрифт для имён файлов.

Доктор, это лечится ? Я хочу много-много шрифтов !
У меня сумашедшая идея как добавить еще шрифты (если это еще актуально):
1. Взять прошивку 2102 7.0
2. Удалить из нее шрифты Font 8(0D-0E) и Font 9(0F-10)
3. Добавить мой шрифт 3 раза
4. Проверить работает ли Hebrew-big и Hebrew-normal (+ обратить внимание на букву ТАФ).

Сам проверить не могу - в своем 811м до сих пор не нашел где спрятан выбор шрифта (наверно гдето в арме)

Posted by: cax on 27-05-2006, 14:26
Фонт интересный - достаточно большой и узкий.

Не понял только почему "таф" срезан сверху и добавлен нулевой буквой.
В Апексе 2102 прекрасно отображаются все буквы до 255, и перенос кодов не требуется.

Что должно произойти после добавления шрифта 3 раза, кроме того, что шрифт для Hebrew-big и Hebrew-normal станет одинаковым, и снова начнётся пропадание всего и везде ?

>в своем 811м до сих пор не нашел где спрятан выбор шрифта
В Sub_SetStyle ?
Или в коде, проверяющем опцию выбранного языка ? Так было в одной из прошивок для Апекса 2102. Как искать - описано в моём руководстве.

Posted by: robert7 on 27-05-2006, 15:55
Sub_SetStyle не нашел, PrefGetChar na Subtitle Language не нету (в upg7 проверяет только нужно вызывать reverse-hebrew или нет, в более старых даже этого нет). Я думал может я не так понял - попробовал на других прошивках - там сразу нашел.

таф перекинута в начало чтобы укоротить - теперь этот фонт занимает только 1 номер (а не 2 как все остальные) - если я прав то не будет пропадание всего и везде. Если это сработает - можно будет в ту же прошивку заталкать в 2 раза больше фонтов чем раньше(1 это normal, 3 это big, a 2 можно будет заменить на дополнительный шрифт) -

Posted by: cax on 27-05-2006, 16:24
robert7, если мне не изменяет память, в коде отображения субтиров в АРМ я где-то видел прибавление еденицы к номеру шрифта, т.е. шрифт должен состоять из 2-х номеров.

Хотя, может быть я неправ и твоя идея сработает...

По поводу upg7 для Апекса 811 - а как ты переключаешь с иврита на русский ? Где-то же эта опция должна прочитываться.
Поищи чтение этой ячейки общей памяти из АРМа.

Posted by: robert7 on 28-05-2006, 00:52
QUOTE:
Поищи чтение этой ячейки общей памяти из АРМа.
я не знаю как (что именно, какой адресс в общей памяти) искать

Posted by: cax on 28-05-2006, 01:17
QUOTE:
4. HEBREW[1D]RIGHT | HEBREW | HEBREW
046C 0467 0468 0E - ROM:31B1
7. HEBREW[1D]LEFT | HEBREW | REV
046B 0467 046D 1F - ROM:31B8

Хм. Чем-то мне это напоминает мой приём, который я применил в прошивке для Пионера - укороченный пробел, вставленный в фонт чуть ниже нормального пробела...

И совмещение выбора языка субтитров для DVD и DivX в одном меню - они раньше так не делали, было меню отдельное...

неужели китайцы пытаются слизывать с нас ???

Posted by: robert7 on 28-05-2006, 01:34
Спасибо. Кодгато я и это искал, но запутался - попробую еще раз.
edit: ура! нашел Sub_SetStyle, но другим способом:
искал mov R7, #4 и mov R7, #6 (номера фонтов) чтобы были близко в 1м банке
+ сразу после них lcall на ту же функцию

И вот почему я запутался: по адрессу 0х28 в общей памяти лежит "IW". Я думал что там должно быть тоже самое как и в EEPROM (номер).

QUOTE (cax @ 28-05-2006, 01:17):
И совмещение выбора языка субтитров для DVD и DivX в одном меню - они раньше так не делали, было меню отдельное...

неужели китайцы пытаются слизывать с нас ???
"пытаются?" А ты сравни это меню с тем что я сделал в 2.2. Они его просто срисовали!!! (в прошлой версии direction был в отдельном меню, но язык совмещен уже давно)

Posted by: Andy007 on 29-05-2006, 11:37
Rvs,
Думаю что стоит попробовать. Скорее всего прокатит.

Posted by: Rvs on 08-06-2006, 18:16
Andy007

Занялся в плотную скипом по твоему рецепту, пациент без признаков жизни!!! :&#040;

Нашёл три обработчика с кодами 15 и 16 и только в одном обработчик сложный, а в остальных простой типа:

CODE
clr   RAM_28.0
sjmp  ROM_C048

или

clr   C
ret

Сложный обработчик оказался обработчиком в DVD режиме (менял вызовы процедур изменения, происходят), а простые.... Менял в них вызовы процедур на другие, реакции ни какой, подставлял в них обработчик других кнопок, так же ноль. Толи я не нашёл обработчик браузера, толи они обрабатываются в другом месте или как то по другому!!! По большому счёту я даже не нашёл обработчик который обрабатывает браузер!!! :&#040;
Ещё раз пересмотрел прошивку от NewAge, эти обработчики абсолютно одинаковы, что у меня, что у него. Но у него то скип работает!!!

Как на твой взгляд что делать???? :mol:

Posted by: Rvs on 09-06-2006, 10:32
Andy007

Решил занулить все вызовы процедур где присутствуют коды 15 и 16, по идее должно было выключить пульт вообще, но этого не произошло, пульт как работал в браузере, так и продолжает работать. :&#040; Отсюда следует, что пульт обрабатывается не только процедурах типа:
CODE
mov DPTR, #XRAM_FB00   
movx A, @DPTR
lcall _C_CASE
word jumpaddress1
byte keycode1

а как-то ещё???

Что скажешь как вычислить место обработки????

Posted by: Andy007 on 15-06-2006, 15:23
QUOTE (Rvs @ 26-05-2006, 13:16):
Andy007

Нужен твой совет.

Процедура Browser_keys у меня выглядит так:

CODE
ROM:BFCA             Browser_keys:                           ;
ROM:BFCA D2 40                 setb  RAM_28.0
ROM:BFCC 90 FB 00              mov   DPTR, #XRAM_FB00
ROM:BFCF E0                    movx  A, @DPTR
ROM:BFD0 12 21 2D              lcall _C_CCASE
ROM:BFD0
ROM:BFD0             ; ---------------------------------------------------------------------------
ROM:BFD3 C0 14                 .word ROM_C014
ROM:BFD5 0D                    .byte 0xD
ROM:BFD6 C0 14                 .word ROM_C014
ROM:BFD8 0E                    .byte 0xE
ROM:BFD9 C0 14                 .word ROM_C014
ROM:BFDB 0F                    .byte 0xF
ROM:BFDC C0 14                 .word ROM_C014
ROM:BFDE 10                    .byte 0x10
ROM:BFDF C0 08                 .word ROM_C008
ROM:BFE1 11                    .byte 0x11
ROM:BFE2 C0 08                 .word ROM_C008
ROM:BFE4 12                    .byte 0x12
ROM:BFE5 C0 48                 .word ROM_C048
ROM:BFE7 14                    .byte 0x14
ROM:BFE8 C0 19                 .word ROM_C019
ROM:BFEA 15                    .byte 0x15
ROM:BFEB C0 19                 .word ROM_C019
ROM:BFED 16                    .byte 0x16
ROM:BFEE C0 1D                 .word ROM_C01D
ROM:BFF0 23                    .byte 0x23
ROM:BFF1 C0 08                 .word ROM_C008
ROM:BFF3 5D                    .byte 0x5D
ROM:BFF4 C0 08                 .word ROM_C008
ROM:BFF6 60                    .byte 0x60
ROM:BFF7 C0 01                 .word ROM_C001
ROM:BFF9 65                    .byte 0x65
ROM:BFFA C0 0D                 .word ROM_C00D
ROM:BFFC 6B                    .byte 0x6B
ROM:BFFD 00                    .byte    0
ROM:BFFE 00                    .byte    0
ROM:BFFF C0 46                 .word 0xC046

..................

ROM:C019             ROM_C019:                               
ROM:C019                                                    
ROM:C019 C2 40                 clr   RAM_28.0
ROM:C01B 80 2B                 sjmp  ROM_C048

Согласись совсем не так как у тебя, но я решил по любому вставить обработчик в наглую, как думаешь пойдёт или нет????
Из каких соображений брать XRAM_SelectedFile???. У меня процедуры DIR_GetFileType и DIR_GetPosition всегда ходят слетанной парой:


CODE
ROM:B251 E4                    clr   A
ROM:B252 FF                    mov   R7, A
ROM:B253 12 DE 40              lcall DIR_GetPosition
ROM:B253
ROM:B256 EF                    
ROM:B257 4E                    orl   A, R6
ROM:B258 70 17                 jnz   ROM_B271
ROM:B258
ROM:B25A FF                    mov   R7, A
ROM:B25B 12 D7 9E              lcall DIR_GetFileType

как думаешь если заменить начало на такое пойдёт???

CODE
clr   A
mov   R7, A
lcall DIR_GetPosition
mov   A, R7
anl   A, #7
mov   R7, A
lcall DIR_GetFileType
Это совсем не процедура Browser_keys.

Это скорее похоже на какой-либо другой режим.

У тебя вообще в броузере кнопки прев и некст по умолчанию хоть как-то работают?

Posted by: Andy007 on 15-06-2006, 15:25
Просто если они у тебя по умолчанию в броузере не работают вообще, то скорее всего и в обработчике этих кодов просто нет и их надо будет вставлять руками.

Posted by: Rvs on 16-06-2006, 13:04
Andy007

Да они у меня в браузере работают, при нажатии курсор перескакивает на 6 строк.
У меня такая последовательность встречается 6 раз. 2 - Bank1, 1 – Bank2, 3 – Bank4. Закомментировав эти процедуры, вычислил: в Bank4 одна точно обрабатывает DVD, другая на половину AVI, а все остальные, даже если закомментированы все сразу влияние ни на DVD, ни на AVI, ни на MP3, не оказывают, всё как работало, так и работает!!! :&#040;

У меня есть прошивка от NewAge, она к этому аппарату только, к старой его версии. Прошивки схожи на 90%, так вот NewAge в этих 6 процедурах ни чего не менял, но при этом скип и пауза правильно работает, как он сделал ума не приложу!!! :&#040;


Posted by: Andy007 on 16-06-2006, 17:40
Ты прав - в четвертом банке handler для режима DVD. Сейчас ище для броузера.

Posted by: Rvs on 21-06-2006, 10:29
Andy007

Ну как борьба с упрямой прошивкой???? :&#040;

Posted by: Andy007 on 21-06-2006, 10:31
К сожалению - пока никак. Ничего не понимаю:&#040;

Posted by: Al xRaven on 08-10-2006, 10:25
Я извиняюсь, я тут первый раз. А кто может рассказать как ARM пересаживать из одной прошивки в другую? Я понимаю что надо корректировать смещения
на данные в блоках 8032 если ARM разной длины, может есть готовая методика? С 8051 процессором работал раньше, с IDA тоже.

Posted by: cax on 14-10-2006, 01:20
В группе mt13x9 на Yahoo, в разделе Файлы->Документы есть документ с подробным описанием процесса имплантирования ARM.

"How to use MTK Risc in BBK firmwares.rtf"

Posted by: temskii on 23-10-2006, 12:25
Приветствую всех !!! :hi: Извините,что встреваю. Уважаемые кодокопатели помогите мне пожалуйста разобраться с IDA. Пытаюсь ИДОЙ дизассемблировать код ARM вытащенный из прошивки MTK Remakerom,но ничего не получается пишет какую то чушь. Пробовал IDA pro 4.7, IDA pro 5.0.0.879. Очень много кто пользуется ИДОЙ, но как ??? Дайте пожалуйста хоть какую нибудь инфу :help: :help: :help:

Posted by: Andy007 on 23-10-2006, 14:47
Temskii, сдается мне что ты не переключаешь режим ARM/THUMB (Виртуальный регистр T 1/0)
А вообще-то соответствующий idc скрипт используй.

Posted by: temskii on 24-10-2006, 06:41
Спасибо Andy007. Буду пробовать.

Posted by: cax on 24-10-2006, 16:17
QUOTE (Andy007 @ 23-10-2006, 11:47):
cax,
Кстати, мы с a-ha на хоботе сейчас пытаемся замутить проигрывание 720p и более контента. Первые сдвиги уже есть:&#041; Еще не играет, но уже не ругается:&#041;
Andy007, где на хоботе-то ? Кинь ссылку.

Posted by: vitsat on 30-10-2006, 00:48
http://forum.ixbt.com/topic.cgi?id=62:9631-2 (http://forum.ixbt.com/topic.cgi?id=62:9631-2

Posted by: cax on 30-10-2006, 01:45
QUOTE (vitsat @ 29-10-2006, 21:48):
http://forum.ixbt.com/topic.cgi?id=62:9631-2 (http://forum.ixbt.com/topic.cgi?id=62:9631-2
vitsat, если это ответ мне, то где там написано про 720p ?

Posted by: OlegEN on 19-12-2006, 12:36
По доке Станислава Борутски (Stanislav "cax" Borutsky (a.k.a borus) Patching_HU3899_from_A_to_Z.txt)
Я попытался выполнить:

2) Showing cyrillic letters in file browser

Put UnicodeToCP routine at address: 26914 (overrides C++ error messages)
UnicodeToCP (sub_26914) routine code:
10 39 01 B4 88 7B 04 28 C8 7B 10 D1 08 7C 04 28
C8 7B 03 D0 08 7C 00 28 C8 7B 08 D1 01 28 01 D1
A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0
00 00 00 00 F9 28 00 D9 F5 38 01 1C 01 BC 70 47

Put "BL UnicodeToCP" calls at addresses:
234C2: 03 F0 27 FA BL sub_26914
234F6: 03 F0 0D FA BL sub_26914
----------------------------------------------------------------
Практические рекомендации:

a) Как найти свободное пространство для подпрограммы UnicodeToCP:
ARM содержит множество сообщений об ошибках как "C++ library exception", "Out of heap memory", и т.д.
Ищите эти строки в ARM и используйте пространство, которое они берут.

Use UnicodeToCP code AS IS - the code is relocateable.
Используйте UnicodeToCP код как есть - код relocateable. -------------------?

b ) Как найти место где поместить "BL UnicodeToCP" запросы?

Найдите шестнадцатеричную последовательность: "F7 B5 84 B0 20 20 47 5C 21 31".

В моем случае я нашел это в 23446 смещениях, и места чтобы исправить были в 234C2 и 234F6
(Вы можете попробовать перейти непосредственно туда, ища "41 18 10 39 C9 7B" - должны появиться дважды),

Just follow the code and find the section that looks like this:
(but in your case additional patching may be required - see more detailed guide at
http://forum.ixbt.com/topic.cgi?id=62:5075-118) (http://forum.ixbt.com/topic.cgi?id=62:5075-118)
Только за кодом и находят раздел, который выглядит следующим образом:
(но в вашем случае может потребоваться дополнительное внесение исправлений - см. более детализированное руководство
в http: // forum.ixbt.com/topic.cgi? Id=62:5075-118)

ROM:00023446 F7 B5 PUSH {R0-R2,R4-R7,LR}
ROM:00023448 84 B0 SUB SP, SP, #0x10
ROM:0002344A 20 20 MOV R0, #0x20 ; ' '
ROM:0002344C 47 5C LDRB R7, [R0,R1]
ROM:0002344E 21 31 ADD R1, #0x21 ; '!'

....

ROM:000234BA 02 98 LDR R0, [SP,#0x30+var_28]
ROM:000234BC 01 99 LDR R1, [SP,#0x30+var_2C]
ROM:000234BE 80 19 ADD R0, R0, R6
ROM:000234C0 41 18 ADD R1, R0, R1

========================================
Replace - Это я выполнил, разобрался

ROM:000234C2 10 39 SUB R1, #0x10
ROM:000234C4 C9 7B LDRB R1, [R1,#0xF]

with

ROM:000234C2 03 F0 27 FA BL sub_26914

========================================
Что делать с данным кодом? я не понял куда его записать!? Так-как у меня адреса другие, получается мне надо пересчитать разницу ЭТИХ адресов с моими?! и туда вписать данный код!? Или что мне делать с этим кодом?
ROM:000234C6 04 9A LDR R2, [SP,#0x30+var_20]
ROM:000234C8 00 06 LSL R0, R0, #0x18
ROM:000234CA 11 55 STRB R1, [R2,R4]
ROM:000234CC 01 34 ADD R4, #1
ROM:000234CE 00 0E LSR R0, R0, #0x18
ROM:000234D0 24 06 LSL R4, R4, #0x18
ROM:000234D2 24 0E LSR R4, R4, #0x18
ROM:000234D4 02 90 STR R0, [SP,#0x30+var_28]
ROM:000234D6 02 98 LDR R0, [SP,#0x30+var_28]
ROM:000234D8 A8 42 CMP R0, R5
ROM:000234DA 14 D2 BCS loc_23506
ROM:000234DC 30 1C ADD R0, R6, #0
ROM:000234DE 03 99 LDR R1, [SP,#0x30+var_24]
ROM:000234E0 00 F0 A2 FA BL sub_23A28
ROM:000234E4 32 21 MOV R1, #0x32 ; '2'
ROM:000234E6 08 1A SUB R0, R1, R0
ROM:000234E8 A0 42 CMP R0, R4
ROM:000234EA E6 DC BGT loc_234BA
ROM:000234EC 0B E0 B loc_23506
-------------------------------------------
ROM:000234EE A8 19 ADD R0, R5, R6
ROM:000234F0 01 99 LDR R1, [SP,#0x30+var_2C]
ROM:000234F2 05 06 LSL R5, R0, #0x18
ROM:000234F4 41 18 ADD R1, R0, R1

========================================
Replace

ROM:000234F6 10 39 SUB R1, #0x10
ROM:000234F8 C9 7B LDRB R1, [R1,#0xF]

with

ROM:000234F6 03 F0 0D FA BL sub_26914
========================================

ROM:000234FA 04 9A LDR R2, [SP,#0x30+var_20]
ROM:000234FC 2D 0E LSR R5, R5, #0x18
ROM:000234FE 11 55 STRB R1, [R2,R4]
ROM:00023500 01 34 ADD R4, #1
ROM:00023502 24 06 LSL R4, R4, #0x18
ROM:00023504 24 0E LSR R4, R4, #0x18


c) How to calculate bytecodes for "BL UnicodeToCP" commands ? Что это за команда "BL UnicodeToCP"?

Use BCalc utility (from mt13x9 yahoo group) to calculate bytecodes.
All you need is to specify "BL" command, from and to addresses in BCalc.

d) You also have to create special font with chars [250..255] at [5..10] - see below

e) See also (below) how to patch 8032 code so '_' chars won't appear in file browser

Объясните пожалуйста, я только новичек в данном вопросе, и мне не все понятно. cax (насколько я понял Вы и есть Станислав Борутский) Я недавно переписывался с вами, и Вы мне посоветовали задавать вопросы в данном форуме... объясните мне пожалуйста.
Что у меня есть: XVI32, ida_pro_4.8.0.847_advanced_full, и все остальные проги с финского сайта :&#041;
[/COLOR]

Posted by: OlegEN on 19-12-2006, 13:17
При поиске HEX последовательности "F7 B5 84 B0 20 20 47 5C 21 31" у меня выходит:

ROM:00023380 .byte 0xF7 ; ¢
ROM:00023381 .byte 0xB5 ; ¦
ROM:00023382 .byte 0x84 ; Ä
ROM:00023383 .byte 0xB0 ; -
ROM:00023384 .byte 0x20
ROM:00023385 .byte 0x20
ROM:00023386 .byte 0x47 ; G
ROM:00023387 .byte 0x5C ; \
ROM:00023388 .byte 0x21 ; !
ROM:00023389 .byte 0x31 ; 1

а не:

ROM:00023446 F7 B5 PUSH {R0-R2,R4-R7,LR}
ROM:00023448 84 B0 SUB SP, SP, #0x10
ROM:0002344A 20 20 MOV R0, #0x20 ; ' '
ROM:0002344C 47 5C LDRB R7, [R0,R1]
ROM:0002344E 21 31 ADD R1, #0x21 ; '!'

может я не правильно настроил IDA?

Posted by: cax on 19-12-2006, 14:31
>Use BCalc utility (from mt13x9 yahoo group) to calculate bytecodes.

Вот именно эта утилита - BCalc - скачанная из раздела "файлы" группы mt13x9 на yahoo нам и нужна для пересчёта адресов.

А сама эта тема уже содержит описание подобных изменений - советую пролистать её с первых страниц. Разжёвано для чайников - далее некуда.

>При поиске HEX последовательности "F7 B5 84 B0 20 20 47 5C 21 31" у меня выходит

Ну и пусть себе выходит. Конечно, можно скачать специальные скрипты, запустить их и тогда в IDA всё будет выглядеть замечательно, но моё руководство на 99% расчитано на обычный hex-редактор и, как правило, ни IDA, ни знаний ассемблера не требует.

Posted by: OlegEN on 20-12-2006, 06:52
Просто боюсь испортить проигрыватель, да и знаний не совсем хватает :&#040;
Спасибо, попробую, отпишусь что получилось. Сейчас переписываю Language для проигрывателя MAITE PDVD-704x, если у кого есть такой, пишите поделюсь всем что наработано.

Posted by: OlegEN on 20-12-2006, 16:51
cax, что-то у меня не получилось...

как и написано в доке я нашел последовательность "F7 B5 84 B0 20 20 47 5C 21 31"
у меня она по адресу 23380 (в доке 23446).

Нашел последовательность "41 18 10 39 C9 7B"
первая, у меня по адресу 233FA (дока 234С2)
вторая, 2342E (234F6)

по первому и второму адресам я вписываю:
234C2: 03 F0 27 FA BL sub_26914 только по адресу 233FA
234F6: 03 F0 0D FA BL sub_26914 только по адресу 2342E

код:
10 39 01 B4 88 7B 04 28 C8 7B 10 D1 08 7C 04 28
C8 7B 03 D0 08 7C 00 28 C8 7B 08 D1 01 28 01 D1
A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0
00 00 00 00 F9 28 00 D9 F5 38 01 1C 01 BC 70 47
я вписал по адресу 264AA

При помощи BCalc я высчитал:
From - 264AA
To - 264E9
Branch - BL
Opcode - 00 F0 1D F8

куда мне вписывать этот опкод, или что с ним делать?

Posted by: cax on 20-12-2006, 18:06
> 234C2: 03 F0 27 FA BL sub_26914, только по адресу 233FA
> 234F6: 03 F0 0D FA BL sub_26914, только по адресу 2342E

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

Нужно было:
1) записать адреса, по которым находятся "10 39 C9 7B".
В нашем случае, если я правильно понял, это 233FC и 23430

2) посчитать в BCalc опкод команд перехода С этих адресов НА адрес, по которому находится наш добавляемый код (264AA)

Теперь совет, которого не было в документе: лучше всего новый код размещать по адресу, кратному 4 (например, 264B0).
Но об этом писалось дважды на предыдущих страницах этой темы.

3) Теперь вот что делаем: в двух местах , адреса которых мы знаем из пункта 1, вставляем переход на подпрограмму ВМЕСТО того кода, который там был раньше.

Это должно быть ясно и из инструкции -

========================================
Replace

ROM:000234C2 10 39 SUB R1, #0x10
ROM:000234C4 C9 7B LDRB R1, [R1,#0xF]

with

ROM:000234C2 03 F0 27 FA BL sub_26914
========================================

и из многостраничных разъяснений в этой теме (а ведь я просил прочитать тему сначала !)


Желаю удачи и не загубить плейер.
Ошибки в этом патче мне уже стоили двух походов в гарантийную мастерскую.

Posted by: OlegEN on 21-12-2006, 07:39
cax?Большое спасибо за то что у вас хватает терпения, другой на вашем месте послалбы меня давно ... (в мастерскую...)

Сделал я как вы писали, но у меня вместо имен файлов знаки "_"

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

из того что вы там писали...
cax
То, что у тебя происходит, весьма странно.
Подчерки не могут появиться если их не было ранее...
Впрочем, давай попробуем разобраться и починить.
Поищи-ка в прошивке (не в АРМ) такое:
94 20 40 xx E0 D3 94 7E 40
Напиши, нашёл ли, и если да, то сколько раз и где.

У меня нашлось два раза:
первый - 117B0
второй - 1653B

по этому:
cax
Давай для очистки совести поищем в АРМ вот такое (хотя тоже вряд ли найдётся): 7E 22 20 21
Если найдёшь - попробуй заменить на FF 22 00 21

такой строчки в АРМе у меня не нашлось :&#040;

И еще у меня почему-то проигрыватель стал тормозным, медленно реагирует на пульт, а на некоторые кнопки перестал реагировать или только при постоянном нажатии...
Может это из-за того что у меня RAM - 4 метра?
И прошивка у меня ровно 1 метр... Флешка метровая, жду когда приедет 2 метровая и RAM 8 метров, попробую заменить....

Что мне делать?

(пока читаю вашу переписку с ivani4)

Все сделал, большое спасибо.

Posted by: cax on 21-12-2006, 18:18
>Все сделал, большое спасибо.

Хорошо, что я дочитал до конца :&#041; Значит всё работает ?


Posted by: OlegEN on 22-12-2006, 06:35
Да, все работает... спасибо.

что я сделал:
1) Перебил language (сделал вместо китайского, русский)
2) Поменял и кое какие переправил, шрифты.
3) Сделал поддержку русских имен файлов и папок, только с одним приколом..
у меня почемуто не подошли полностью шрифты (которыми отображаются имена файлов) в имени файла "Выдод" вместо "ы" писалась "я". Но это я исправил, перебил шрифт сдвинул "ъыьэюяэё" на 3 позиции (правда еще не проверил на остальных буквах, но "Вяход" стал "Выход"ом)
4) Убрал превью картинок

Из странностей:
У меня почемуто не отображаются русские имена папок не в браузере, а чуть выше, т.е. в адресной строке... Там вместо имени прочерки. Но я думаю что я что-то или пропустил или не заметил. отпишу подробнее как проверю.

И еще хотел убрать таймер при проигравании DivX, но по вашей доке:
-----------------------
1) make Elapsed Time to not appear at the beginning of the playback.
Put the following bytes at specified addresses:
1D369: 02 F3 00
1F300: 90 FC 4A E0 54 C7 F0 02 05 B3
-----------------------
не нашел в 8032 описанной вами последовательности "90 xx yy E0 FF 13 13 13 54 07" т.е. её у меня нету :&#040;

И еще вопрос, можно как-то сменить Servo? А то как вы писали у меня довольно старая прошивка... и мне как и любому другому хотелосьбы иметь лучше :&#041; т.е. я попробую подогнать другие прошивки под себя...

Ver 05.00.02.02
Sub 00.00.00.01
8032 05.00.02.02
Servo 01.12.00.00
RISC 05.00.02.02
DSP 03.03.00.33

Posted by: cax on 22-12-2006, 16:28
>не нашел в 8032 описанной вами последовательности "90 xx yy E0 FF 13 13 13 54 07" т.е. её у меня нету

Увы, на скорую руку помочь ничем нельзя. Возможно найдутся добровольцы, которые сделают анализ и поймут в чём дело.

>можно как-то сменить Servo ?
Servo не меняют, ибо servo - это "генетический код" аппарата.
Можно сменить Risc, но это требует нечеловеческих усилий.

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

т.е. в имени каталога ? как-то я это исправлял, но как - уже не помню.


Posted by: robert7 on 25-12-2006, 16:14
Прошивка древняя. Субтитры наверно вообще не поддерживает. Может попробывать сначала поискать что нибудь поновее? Там проблем будет меньше.

Posted by: OlegEN on 26-12-2006, 06:39
Да, прошивка древняя... :&#040;

Кто нибудь, подскажите прошивку поновее и по какому принципу можно её подобрать...

Насколько я понял к железу привязывается только серво...
т.е. у меня серво 01.12.00.00 , и мне необходимо будет найти прошивку поновее с таким серво!?

Posted by: robert7 on 26-12-2006, 16:54
Откуда у тебя эта прошивка?

QUOTE:
Кто нибудь, подскажите прошивку поновее и по какому принципу можно её подобрать...
Во первых - по названию...
Если нету - servo+remote+DRAM, желательно и VFD.
Но все равно есть риск на смерть. У тебя кабель есть?

Posted by: OlegEN on 26-12-2006, 21:31
robert7 Прошивка родная, с проигрывателя MAITE PDVD-7041

_http://www.maite.com.cn/ProductView.asp?ID=25&Ln=En (с виду такойже, отличается только номер модели)

Ver 05.00.02.02
Sub 00.00.00.01
8032 05.00.02.02
Servo 01.12.00.00
RISC 05.00.02.02
DSP 03.03.00.33

Пробовал переписываться с заводом изготовителем, но они ответили что данная модель снята с производства...

Кабель есть, не проблема... Проблема в том, что необходима прошивка не превышающая 1024 байт. Так-как флешка у меня 1 метр и ОЗУ всего 4 метра... :&#040;

По доке Боруса сделал все что было возможно, русский перевод и шрифты написал и нарисовал :&#041;

Но вот чужой подходящей прошивки пока нету... Думаю заменить/перепаять флешку и ОЗУ нарастить, но пока не могу найти подходящих микрух...

ЗЫ. Проиграватель, почти полный клон BBK965S (по крайней мере плата очень похожа). И вопрос, стоит ли искать и "запускать" прошивку с поддержкой USB? Так-как на плате есть разъём, но на корпус он не выведен. Я рассматривал подобный но с USB, там почти ничего не требуется, только выход... Кто знает, что даст мне подключение USB, можно будет подключать винты (УСБшные)?

Posted by: cax on 26-12-2006, 22:44
Ну что тебе даст замена микросхем, если прошивка не пользуется дополнительной памятью ???

Вот если бы ты нашёл прошивку с таким же серво, но для плейера с большим объёмом памяти - тогда это было бы полезно, а так - непонятное мне стремление всё позаменять.

> Ver 05.00.02.02

Это - старая версия. Нужна хотя бы 05.00.03.05 или 05.00.05.01, в идеале - 05.00.06.хх

>можно будет подключать винты (УСБшные)?

А ты прошивку с поддержкой USB и твоим номером servo уже нашёл ?

Posted by: OlegEN on 27-12-2006, 08:27
cax
QUOTE:
А ты прошивку с поддержкой USB и твоим номером servo уже нашёл ?

нет, еще не нашел, но спросил на всякий случай...

cax вопрос, что из моей прошивки можно повырезать такого лишнего :&#041; (если есть)
и возможно ли мне с моими начальными познаниями пересобрать себе прошивку, ну например с "Версия C965S-8A-0928-m3" с сайта _http://bbk965s.narod.ru/index3.html

в этой прошивке нет номера Серво! как это понять, т.е. прошивка на любой тип серво, или это что-то другое?

Все мои проблемы от того что у меня на проигрывателе малый объём флеш, и не любую подходящую прошивку я могу залить :&#040;

Posted by: robert7 on 27-12-2006, 13:43
серво не написан = серво не известен ==>> может оказатся чем угодно.
резать можно только DATA PART. Если Code part больше 1МБ - бесполезно.

платы во всех ДВД похожие - основное отличие это дисковод

если кабель 100% рабочий можно попробывать серво с похожими номерами - есть шанс наткнутся на хороший аналог

а какой у тебя REMOTE? по этому коду тоже есть шанс попасть на аналоги

Posted by: cax on 27-12-2006, 20:42
Если я правильно понимаю в диагностике серво, то у этой прошивки C965S-8A-0928-m3 оно что-то типа A8.06.06.xx

Код, похожий на запись серво-номера, выглядит так:
78 5C 76 A8 08 76 06 08 F6 AE 5E AD 5D AC 5C 22.

Обычно он выглядит так:

NFO_ServoVer: (17.05.00.00)

ROM_F9D3: mov R0, #0x5A ; 78 5A
ROM_F9D5: mov @R0, #0x17 ; 76 17
ROM_F9D7: inc R0 ; 08
ROM_F9D8: mov @R0, #0x05 ; 76 05
ROM_F9DA: inc R0 ; 08
ROM_F9DB: clr A ; E4
ROM_F9DC: mov @R0, A ; F6
ROM_F9DD: inc R0 ; 08
ROM_F9DE: mov @R0, A ; F6
ROM_F9DF: mov R7,REG_5D ; AF5D
ROM_F9E1: mov R6,REG_5C ; AE5C
ROM_F9E3: mov R5,REG_5B ; AD5B
ROM_F9E5: mov R4,REG_5A ; AC5A
ROM_F9E7: ret ; 22

Posted by: Brait on 29-12-2006, 07:58
Вопрос: можно как-нибудь вытащить .BIN файл из .DAT файла?
А то скачал обновление для свого Pioneer DVR-440H, оно было в .NGR формате. Залил Nero'й на CD, прошил - все работает. Но хочется бОльшего, есть желание покопаться в прошивке, но нет нормального .BIN'а...

Posted by: cax on 29-12-2006, 21:17
Brait:

А плейер этот - он разве на чипсете MTK 1389 ?
Насколько мне известно, рекордеры сделаны на совсем других микросхемах, и их "разведка" находится пока в зачаточном состоянии.

Posted by: b-maksi on 03-01-2007, 22:13
cax

С Новым Годом!!! О Гуру МТ1389 :hi:

У меня есть небольшая проблемка,думаю только вы сможете мне помочь.
Есть плеер (Trony DVD-DVX 888) у него очень не удобный и не надёжный пульт.
По этому я решил попытаться заменить его на другой более подходящий,на мой взгляд.
Мне удалось подобрать все коды в блоке (RC_RemoteTab)для другого пульта,все кнопки выполняют свои функции.Коды были взяты из прошивки от пульта плеера донора.
Оригинал.
042BDCh: 04FB 154F 5F5D 5C0A
042BE4h: 2E52 0609 0733 5B46
042BECh: 1762 194E 3D63 670F
042BF4h: 1003 FFFF FFFF FFFF
042BFCh: FFFF FFFF FFFF FFFF
042C04h: FFFF FFFF FFFF FFFF
042C0Ch: FFFF FFFF FFFF FFFF
042C14h: FFFF FFFF FFFF FFFF
042C1Ch: FFFF 1650 FFFF 3800
042C24h: 0D0E 3008 0504 2C20
042C2Ch: 0201 2B47 1A29 4260
042C34h: 3941 FFFF FFFF FFFF
042C3Ch: FFFF
После замены на коды донора.
042BDCh: 00FF FF2C 5BFF 6739
042BE4h: 38FF 0302 0160 0908
042BECh: 0717 0605 0410 0A00
042BF4h: 2E20 5263 4E5D 0F0D
042BFCh: 0E15 FFFF FFFF FFFF
042C04h: FFFF FFFF FFFF FFFF
042C0Ch: FFFF FFFF FFFF FFFF
042C14h: FFFF FFFF FFFF FFFF
042C1Ch: FFFF 19FF 2B29 FFFF
042C24h: FF47 1B3D FFFF 161D
042C2Ch: 50FF 5FFF FFFF 1A4F
042C34h: FFFF 335C FFFF 4622
042C3Ch: FFFF

Но возникла странная проблема.Плеер может выключаться с нового пульта но не включается,зато так и продолжает включатся со старого.
Исходно плеер можно было выводить из режима Standby кнопками,(PLAY,ENTER,EJECT,SLEEP)теперь нет.
Всё остальное работает нормально.
У меня сложилось впечатление что эти команды сидят не в блоке (RC_RemoteTab) а где-то ещё где мне не понятно,может быть(VFD_LedTables)потому что команды с ИК-приемника проходят через драйвер индикатора TP6317 и он уже выдаёт +5вольт(Standby) на блок питания и включает плеер.
Может я и ошибаюсь. :help: :help: :help:
Вот прошивка и описание значений ячеек кодов.-> http://slil.ru/23680354 (http://slil.ru/23680354

Posted by: shemtov on 04-01-2007, 15:31
b-maksi
В приложенном документе ты писал:
''Эти две первые строчки не трогаем, похоже, что это расшифровка команд пульта''
По сему вопрос:
Если собираемся менять пульт,то надо искать такой у которого эти два первых байта совпадают?
А если не совпадают,то что делать?

Posted by: b-maksi on 04-01-2007, 21:29
shemtov

Совсем не обязательно,просо сразу их переписываешь в начало и всё.
Исходно в прошивке доноре это выглядело так.Всё правилось бинарником в WinHexе.

00146Bh: 00FF FF2C 5BFF 3A39
001473h: 38FF 0302 0160 0908
00147Bh: 0717 0605 0410 0A00
001483h: 2E20 5265 4E5D 0F0D
00148Bh: 0E15 19FF 2B29 FFFF
001493h: FF28 1B3D FFFF 161D
00149Bh: 50FF 5FFF FFFF 1A4F
0014A3h: FF2B 615C FFFF 4764
0014ABh: FFFF

Прошивка от (Trony DVD-DVX 888) вообще очень странная по составу.
Это китайский производитель разного ширпотреба под названием Oriental Qisheng Technology http://www.orientalqisheng.com/product_Show.asp?PhotoID=36 (http://www.orientalqisheng.com/product_Show.asp?PhotoID=36

У плеера ещё есть клон DVTech D530 у того даже 2 пульта в комплекте :lol:
http://www.reviews.ru/clause/article.asp?id=2273 (http://www.reviews.ru/clause/article.asp?id=2273
A ещё qisheng делает подделки под торговой маркой AKAI. :actu:

Posted by: shemtov on 05-01-2007, 04:39
b-maksi
Дело в том ,что я пытаюсь сделать то же самое что и ты.Но у меня пульт не начинает работать вообще.Я подумал,что это из за того что два первых байта у этих пультов разные,но ты говоришь,что это не мешает.Может быть тебе известна какая нибудь другая причина которая может на это повлиять?

Posted by: b-maksi on 16-01-2007, 11:43
За время пока мне не отвечал многоуважаемый cax ,провёл ещё один эксперимент забил всю таблицу пульта FF FF FF вставил в прошивку и залил в плеер.Плеер так и продолжает включаться кнопками,(PLAY,ENTER,EJECT,SLEEP) со старого пульта,а нового соответственно не видит.
Плиз :help: где поменять значения 5F->5B, 33->60, 63->5D.

shemtov
У меня такое тоже было но с прошивкой от DAEWOO DV-1200S каие таблицы не ставил не чего не работало.

Posted by: cax on 16-01-2007, 15:18
Спешу обрадовать всех задающих вопросы по таблицам пульта:
я в этом разбираюсь даже хуже вас.

Так что кроме метода научного тыка порекомендовать ничего не могу.
Я в своё время на известные позиции подставлял разные коды, и искал нужные мне методом обычного перебора. Вот и вся наука.

Posted by: Rvs on 16-01-2007, 19:33
b-maksi

Я тоже пытался найти обработчики некоторых кнопок, до сих пор не нашёл, :&#040; просил Andy007 он тоже не смог. Так что шансов мало. Это только тыкаться наугад по всей прошивке в подозрительные места. Я собираюсь этим заняться повторно, так что если что-то отпишусь.

Posted by: Andy007 on 06-02-2007, 13:31
Кстати, все уже в курсе, что в сеть утекли исходники 8032 для 1389?

Posted by: Rvs on 06-02-2007, 18:11
QUOTE (Andy007 @ 06-02-2007, 13:31):
Кстати, все уже в курсе, что в сеть утекли исходники 8032 для 1389?
Читаю днём и ночью, но пока вопросов стало больше чем ответов :wacko:

Может кто то внятно раскажет как править DTS???? :mol:

Posted by: cax on 06-02-2007, 21:49
Читал я-читал последние сообщения на Яхе про DTS, да так и не понял, что в моём случае делать.

А делаю я вот что: в прошивке к Apex меняю RISC на совместимый, и после замены у него появляется поддержка DTS, которой раньше у него не было.

Теперь я делаю то же самое с Hyundai, у которого поддержка DTS была с самого начала. После замены на всё тот же RISC она пропадает.

Первое объяснимо, второе - не понимаю.

Posted by: Rvs on 07-02-2007, 10:35
cax

Мдааа ситуация аналогичная. Я даже нашёл ту процедуру, на которую ссылается NewAge. Но как то всё это странно, описывает он её этак, а выглядит на самом деле совсем по другому. :wacko: И самое интересное что в двух разных RISC-ах, это процедура выглядит одинаково, но при этом один работает другой нет. :&#040; Попробую ещё раз спросить NewAge, что то он не договаривает...

Posted by: Rvs on 07-02-2007, 18:03
cax

А ты при этом правил RISC на DTS или нет?

Posted by: cax on 08-02-2007, 13:49
Ничего не правил, но если DTS заработал в Апексе, то с чего бы ему не работать на Юндае...

Это тот самый RISC, о котором мы здесь говорили выше, от Peekton-a.

Ты не мог бы глянуть на счёт правки одним глазком на этот самый RISC в моей последней прошивке к Апексу, если не лень ?

Posted by: Hisoka on 09-02-2007, 17:40
Бродил по инету в поисках инфы, и наткнулся на этот форум - имхо тут обитают реально знающие люди и смогут мне объяснить что к чему ))

http://cax.nm.ru/mtk/docs/Patching_HU3899_from_A_to_Z.txt (http://cax.nm.ru/mtk/docs/Patching_HU3899_from_A_to_Z.txt прочёл, с английским проблем нету, поэтому некоторые вопросы смог решить сам, но возникли иные проблемы:

1) Поскольку плеер у меня из дебрей Китая, то прошивок в инете равно как и информации по нему я не нашел никакой. Русский язык меню у него был, но отображать русские названия файлов и субтитры он не мог.
Приобрёв за 3 у.е. датакабель решил перепрошивать )
Нашел в инете 1 человека с таким же плеером - он смог решить проблему с длинными названиями файлов и русским шрифтом. ;&#041;
Проблема субтитров осталась для меня актуальной - с помощью MtkFontCreator и MtkWindows я подобрал хороший шрифт, цвет, и область субтитров.

Но субтитры всёравно почему-то обрезаются... Нельзя ли сделать чтобы они переносились по словам если не влазят?

После n-ого изменения шрифта 03-04 (я менял шрифт в mtkremaker, никакого редактирования прошивки hex редактором не производил) начались глюки - то текст в опциях не показывает, то картинки - но это думаю решаемо - просто изменить 1 раз дефолтную прошивку...

У меня всего 3 шрифта в прошивке, как назначить первый шрифт на отображение файлового меню, а третьего на субтитры?? у меня всё показывается шрифтом 3 (3-4).

И ещё вопрос - можно ли каким-нибудь образом модифицировать мою прошивку чтобы плеер понимал формат mkv?? (встроенные субтитры, несколько звуковых дорожек)

p.s. Недавно обнаружил в инете прошивку полностью соответствующей моей - видимо этот завод на тех же компонентах выпускал ещё плеер маркой ERISSON.

Posted by: cax on 09-02-2007, 21:02
Ответ на почти все вопросы - найти хакера, который в этом понимает и согласен поработать от нескольких часов до нескольких десятков часов. Ибо сложно очень.

Или подобрать уже модифицированную прошивку от другого плейера.

Ответ на вопрос про mkv: забудь, этого никто не умеет.

Posted by: Hisoka on 10-02-2007, 02:06
А по каким критериям можно выбирать прошивку?
Её ведь надо будет модифицировать как-либо.. чтобы она запустилась хотя бы. А packed bitstream - не есть mkv?

ЧИП: MT1389FE
FLASH: FUJITSU(MBM29LV800BA/E)
ОПЕРАТИВКА: EM636165TS-7 2шт

Versio : 12.03.04.01
Sub :
8032 : 05.00.04.04
Servo : 23.07.00.00
RISC : 05.00.04.04
DSP : 03.03.01.00
Firm ID : MTK
File : MTK.BIN
Remote : 0xF20C (Unknown. Replace with CAUTION !!)
Button : 0x1489 (Unknown. Replace with CAUTION !!)
VFD bit : Type B (Apex,E-Boda,Fortune,Lenco,Yamada,Xoro,Zensonic)
Flash : 800, 16bit
Pass : 1,0,0,6,TITLE
ShMem : 0x38C400

И насчет субтитров - это действительно так сложно? Как заставить МТК переносить непомещающиеся слова на следующую строку??

P.S. наврятли какой хакер займётся этим... плеер очень раритетный - всего под 2 лэйблами выпускается насколько я знаю - DOWELL и ERISSON.

Posted by: shemtov on 10-02-2007, 12:22
Если не удается переделать прошивку,то проблему с субтитрами ты можешь решить ,например,при помощи программы Subtitle Workshop.Там есть возможность корректировать колличество знаков в строке.Быстро,просто и эффективно.И еще рекомендую обратить внимание на программу AVISUB.Она служит для накладывания субтитров на фильм(встроенные субтитры) .Работает,к сожалению,не со всеми фильмами и поддерживает только SRT а SUB нет.

Posted by: cax on 10-02-2007, 12:30
QUOTE (Hisoka @ 09-02-2007, 23:06):
А по каким критериям можно выбирать прошивку?
Её ведь надо будет модифицировать как-либо.. чтобы она запустилась хотя бы. А packed bitstream - не есть mkv?
Прошивка должна иметь тот же номер серво.

Потребуется только переставить блоки пульта, кнопок и ЖК-дисплея.

Кстати, а какая связь между packed bitstream и mkv?

Posted by: robert7 on 11-02-2007, 23:40
QUOTE (shemtov @ 10-02-2007, 11:22):
Если не удается переделать прошивку,то проблему с субтитрами ты можешь решить ,например,при помощи программы Subtitle Workshop.Там есть возможность корректировать колличество знаков в строке.Быстро,просто и эффективно.И еще рекомендую обратить внимание на программу AVISUB.Она служит для накладывания субтитров на фильм(встроенные субтитры) .Работает,к сожалению,не со всеми фильмами и поддерживает только SRT а SUB нет.
Работает и с sub. Их надо переименовывать в txt

Posted by: robert7 on 11-02-2007, 23:42
QUOTE (cax @ 10-02-2007, 11:30):
QUOTE (Hisoka @ 09-02-2007, 23:06):
А по каким критериям можно выбирать прошивку?
Её ведь надо будет модифицировать как-либо.. чтобы она запустилась хотя бы. А packed bitstream - не есть mkv?
Прошивка должна иметь тот же номер серво.

Потребуется только переставить блоки пульта, кнопок и ЖК-дисплея.

Кстати, а какая связь между packed bitstream и mkv?
И тоже количество DRAM. На твоем только 4МБ (большенство прошивок на 8)

Posted by: Rvs on 12-02-2007, 19:01
QUOTE (cax @ 08-02-2007, 13:49):
Ничего не правил, но если DTS заработал в Апексе, то с чего бы ему не работать на Юндае...

Это тот самый RISC, о котором мы здесь говорили выше, от Peekton-a.

Ты не мог бы глянуть на счёт правки одним глазком на этот самый RISC в моей последней прошивке к Апексу, если не лень ?

Получаеться в Hyundai 3899 и в Apex DVX-2102 RISC одинаковые?? А какие чипы стоят в аппаратах?

Posted by: cax on 13-02-2007, 17:33
>А какие чипы стоят в аппаратах ?

МТ1389DE в обоих.

>Получается в Hyundai 3899 и в Apex DVX-2102 RISC одинаковые ??

Rvs, я не понял твоего вопроса.

Изначально в обоих аппаратах стоят разные RISC-и, но поскольку по ShMem=0x38C400 и прочим адресам, которые выдаёт утилита ArmAddressInfo, они одинаковы между собой и Peekton-овским RISC-ом, то я посчитал, что могу безболезненно сделать замену. Результаты ты знаешь.

Posted by: Rvs on 13-02-2007, 18:44
cax

Глянул ARM. Ну всё так же как и у меня. Исходя из соображений NewAge тебе править надо здесь:

0000110E F2 -> E2
0000111A 92 -> 82
00001130 11 -> 01
000011B8 10 -> 00

Попробуй для начала адрес: 000011B8, если нет тогда все четыре. Должно пойти. И ещё NewAge не однократно ссылался на DSP, но я что-то с английского не догнал, что он имел ввиду. Толи заменить эти блоки, на блоки из других прошивок, толи просто они должны быть не пустыми. Может оказаться и здесь засада.

Получаеться Hyundai 3899 на чипе DE и имел заводскую прошивку с DTS??? :blink: Если так то теория NewAge может рухнуть, либо вопрос с DTS будет решён однозначно. Если есть дай ссылку на заводскую от Hyundai с DTS, погляжу как они эту функцию реализовали. И отпишись заработало после правки!!!

Posted by: Rvs on 13-02-2007, 19:28
cax

Ага с 10-го раза понял, что имел ввиду NewAge :&#041; So if your player's firmware doesn't have DTS decode then you should search for another DSP Code 0x10 (the first number of DSP version must be the same!! YY.xx.xx.xx where YY must be the same) that is around 9-10KB large.
Тогда получается попробуй не править ARM, а взять DSP из заводской прошивки где DTS был. Может заработает... Если да тогда дело не в ARM-е, а в DSP. Вообще попробуй три варианта:
1. Новый ARM + старое DSP
2. Новый ARM + новое DSP + правленый ARM
3. Новый ARM + старое DSP + правленый ARM

Жду результата!!!

Posted by: cax on 14-02-2007, 17:21
Не обещаю вскоре проверить, но постараюсь.
А заводские прошивки лежат у меня на той же странице, в колонке "Original firmware from manufacturer"

Posted by: vc12 on 17-02-2007, 15:34
Всем, привет

Возникли технические вопросы по сабжу.

Может ли код 8032 и АРМ выполняться из ОЗУ (а не из флэш) ?
Т.е. возможено ли модифиц. прошивку, чтобы могла загружать программный код в ОЗУ (файл с привода) и затем передавала управление этому коду в ОЗУ.

Сохранение окружения не нужно. Т.е. код юзает всю ОЗУ под себя
(затирая все данные созданные/юзанные прошивкой)
и в конце работы делает программный ресет.



Posted by: robert7 on 17-02-2007, 23:23
код АРМ итак выполнается из ОЗУ (после разархивации из флэша). Но функцию загрузки кода из файла еще никто не написал :&#040;

Posted by: vc12 on 18-02-2007, 14:40
QUOTE (robert7 @ 17-02-2007, 23:23):
А как насчёт 8032,
умеет ли он из ОЗУ исполняться ?



Posted by: cax on 18-02-2007, 17:27
QUOTE (robert7 @ 17-02-2007, 20:23):
код АРМ итак выполнается из ОЗУ (после разархивации из флэша). Но функцию загрузки кода из файла еще никто не написал :&#040;
Если скорость процессора позволяет реализовать на нём какой-нибудь эмулятор 8-битных компьютеров или видеоприставок (скажем, MSX, NES или Gameboy), то лично мне это может быть интересно для игры на портативных DVD-плейерах.

Posted by: vc12 on 18-02-2007, 19:42
Для игр ещё важна
глубина цвета (сколько бит на точку) в OSD.

Напр. Зоран 776 , похоже, имеет 8битовый OSD.
Плюс несколько бит на прозрачность.

Параметры MTK OSD есть на странице производителя:
http://www.mtk.com.tw/product-lines.htm (http://www.mtk.com.tw/product-lines.htm

Posted by: LDZ on 24-03-2007, 18:54
Всем привет.
Решил своего хорька (400 pro) подправить, а именно прицепить USB. Перепаял RAM, FLASH, залил прошивку от силверкреста. Заменил таблицу пульта, вообщем более-менее все работает - кардридер видит. Засада в том, что не могу переключить DVD-CARD. Нет такой кнопки на пульте. Куда кинуться,- посоветуйте. И еще, реально ли из исходников (например с яхи) собрать свою прошивку (все ли там есть, и чем). За пару дней много чего скачал, - не успеваю пересмотреть все.

Posted by: cax on 24-03-2007, 21:28
>Нет такой кнопки на пульте.

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

Posted by: LDZ on 24-03-2007, 23:27
QUOTE (cax @ 24-03-2007, 21:28):
>Если из прошивки силверкреста понять какой код посылает эта самая кнопка, можно переопределить в таблице одну из существующих кнопок чтобы ентот самый код и посылала.
Не, наверное не так. В таблице силвера раскод его пульта, в таблице хорька - своего (при условии, что коды разные). Если просто поменять код кнопки, она не будет работать. Менять надо команду, которую выполнит переопределенная кнопка. Или нет?
...Хотя прокатило. Поменял, все заработало. Либо где-то я ошибаюсь, либо коды (пульты) одинаковые.

Posted by: Rvs on 05-04-2007, 18:32
LDZ

Кинь ссылку про прошивку от силверкреста!!!

Posted by: vboroda on 09-04-2007, 23:15
cax, можно вопрос? Почему вы с своей инструкции (http://cax.nm.ru/mtk/docs/Patching_HU3899_from_A_to_Z.txt в функции, которая конвертирует имя файла из уникода в CP1251, вычитаете 0xF5 из значений символов, которые > 0xF9? Почему не 0xFA?

CODE
10 39 01 B4 88 7B 04 28 C8 7B 10 D1 08 7C 04 28
C8 7B 03 D0 08 7C 00 28 C8 7B 08 D1 01 28 01 D1
A7 30 04 E0 51 28 01 D1 67 30 00 E0 B0 30 01 E0
00 00 00 00 F9 28 00 D9 F5 38 01 1C 01 BC 70 47

Я пытаюсь понять, как сделать, чтобы в именах файлов и директорий в моем устройстве (Philips 5960/12) показывались буквы из конца набора ('ъ'..'я'), и поскольку у меня используется ваша функция для конвертации имени файла, я начинаю подозревать, что замени я

CODE
ROM:0004D984 004 F9 28                                   CMP     R0, #0xF9
ROM:0004D986 004 00 D9                                   BLS     loc_4D98A
ROM:0004D988 004 F5 38                                   SUB     R0, #0xF5
ROM:0004D98A                             loc_4D98A     ; CODE XREF: sub_4D950+36j
ROM:0004D98A 004 01 1C                                   ADD     R1, R0, #0

на

CODE
ROM:0004D984 004 F9 28                                   CMP     R0, #0xF9
ROM:0004D986 004 00 D9                                   BLS     loc_4D98A
ROM:0004D988 004 FА 38                                   SUB     R0, #0xFА
ROM:0004D98A                             loc_4D98A     ; CODE XREF: sub_4D950+36j
ROM:0004D98A 004 01 1C                                   ADD     R1, R0, #0

и пропавшие буквы из конца алфавита будут видны (шрифты у меня "правильные", вроде бы). Или есть какая-то причина, почему не стоит корректировать именно в этом месте, и может быть лучше изменить шрифты, засунув буквы 'ъ'..'я' в позиции 5..10?

Спасибо. :hi:

Update: так, похоже, я не достаточно внимательно прочитал инструкцию. Для файлобраузера "правильные" шрифты, это не те, в которых верхние символы продублированы в самом низу таблицы, а те, в которых они продублированы в позициях 5..10. Но почему? В 5960/37, например, один и тот же шрифт используется (иногда) для показа OSD и субтитров (ошибка у них такая), чтобы задействовать правильный шрифт для субтитров надо вызвать и убрать "System Settings" меню.

Posted by: cax on 10-04-2007, 07:55
Я уже не помню точно, что именно мне мешало разместить символы 250-255 на позициях 0-5 (кажется, в алгоритме некоректно отрабатывался символ с кодом 4), так что для исправления ситуации я их передвинул, от греха подальше, на позиции 5-10.

Если это мешает создать фонт, удовлетворяющий одновременно и меню, и списку файлов, и субтитрам (0-5 и 5-10 пересекаются в позиции 5), рекомендую сдвинуть эти 6 букв ещё раз - например, в позиции 6-11, и, соответственно, изменить в коде вычитание на "SUB R0, #0xF4".


Posted by: LDZ on 10-04-2007, 23:34
QUOTE (Rvs @ 05-04-2007, 18:32):
LDZ

Кинь ссылку про прошивку от силверкреста!!!
Не понял, - как переделать?, или бинарник какой нужен? Как переделать доки нет. Пока ожидайте - диск помер.

Posted by: LDZ on 15-04-2007, 12:59
Купил другой диск, все пашет. Есть проблема - отображение названия фильма. Как в досе, шесть знаков нормально, дальше облом. Это и на диске (фат 32), и на карте (фат16). Какие есть мысли по данному облому?
Видел здесь посты Andy007. Как в бобике с отображением имен флешки?


Posted by: Rvs on 17-04-2007, 10:05
Дай ссылку откуда скачал прошивку на сильверкрест. Погляжу что и как.
У меня тоже хорёк 400Pro наваял уже несколько прошивок, гляну как у них устроено USB и поробую прикрутить к фирмованой.

Posted by: LDZ on 17-04-2007, 19:59
Оригинал здесь
http://mtz.softpedia.com/dvd/ (http://mtz.softpedia.com/dvd/
А тут бумажка, если доступ есть.
http://f1.grp.yahoofs.com/v1/AO8kRmwdfpxjSW7wosjJgZ7TrwyY...ents/Info%20-%20USB.rtf (http://f1.grp.yahoofs.com/v1/AO8kRmwdfpxjSW7wosjJgZ7TrwyYFp9My1fCMpLVmPBLm4xKADP762uwrlyQFn5dmJ_iCzZvyzjn-QOhn2tBM5Hlf4s/Documents/Info%20-%20USB.rtf
Я тоже думаю к оригиналу прикрутить (если ума хватит), только для начала хотелось бы разобраться с этим багом, чтоб уже все готовое вставлять.

Posted by: Rvs on 18-04-2007, 15:29
LDZ

Опиши в чём баг подробней???

QUOTE:
Я тоже думаю к оригиналу прикрутить (если ума хватит)

А ты вообще мои прошивки смотрел, у меня нароботок много. Тем более исходники есть проблем не должно быть.

Posted by: LDZ on 18-04-2007, 19:06
Хорек не читает (не понимает?) длинные имена файлов (Long File Names), только короткие (по маске 8.3). Например, вместо Madagascar.avi - MADAGA~1.AVI. Это только на карте (CF-FAT16) или на HDD (FAT32).
Я еще вообще ничего не делал. После покупки хорек честно отпахал года три, потом началось, сначала двигло, потом зависать стал. Купил ребенку другой DVDишник а хорька забрал под эксперименты. Передул ОЗУ и флешку - хорек ожил, вот теперь за USB взялся. Опыта нет никакого, отсюда и сомнения. С ассемблером и Си знаком только по баловству с пиками и аврками. Я, вроде на хоботе, мельком прочел будто бы у тебя еще не перепаян хорек? Или уже перепаял? Я к тому, что если чего - вышлю по почте без всяких проблем (Б.У.,правда).

Posted by: Rvs on 19-04-2007, 09:49
LDZ

QUOTE:
сначала двигло
А что с ним, я родственнику за мин 20 поменял.

QUOTE:
Я к тому, что если чего - вышлю по почте без всяких проблем (Б.У.,правда).
не понял...

Posted by: LDZ on 19-04-2007, 19:39
Руского языка в ней нет, что вообщем то не особо напрягает. Мотор я тоже поменял, но прежде чем я его нашел приходилось временами погонять его постоянкой, - пока щетки вообще не отвалились.
Я думал тебе микрухи нужны.
У меня переключает кнопка "ANGLE". На яхе бумажка есть, выше ссылка. Там и код кнопки, и где какая функция.
Да, кстати, у меня четыре исходника (5048, 5062, 6027, 7043). Скомпилить получилось только одну какую-то, но, как и у тебя какая-то маленькая получилась. Ремакером глянул - нет ни кнопок, ни пульта, ни индикатора.

Posted by: Rvs on 20-04-2007, 15:20
LDZ
QUOTE:
Да, кстати, у меня четыре исходника (5048, 5062, 6027, 7043).
А где ты эти номера вычитал?

QUOTE:
Я думал тебе микрухи нужны.
ОЗУ у меня ещё есть запасные микрухи на тот случай если найду мастера, а флэш не нашел. :&#040;

Posted by: LDZ on 20-04-2007, 17:17
QUOTE:
А где ты эти номера вычитал?

Так подписаны были.
QUOTE:
...если найду мастера
Если хочешь, поищу кого из твоей местности. Флешка не проблема.


Posted by: vboroda on 26-04-2007, 05:04
На самом деле с поддержкой длинных имен файлов в FAT (16,32) системах совсем не все так просто. Не думаю, что можно самостоятельно реализовать такую поддержку. Скорее всего в MTK используются старые (досовские или опен-сорцевые) драйвера, которые длинных имен файлов в FAT просто не умеют распознавать.

Здесь ( http://en.wikipedia.org/wiki/File_Allocation_Table#Directory_table (http://en.wikipedia.org/wiki/File_Allocation_Table#Directory_table ) немного описан алгоритм поддержки LFN в FAT, похоже, что для реализации в MTK прошивках требуются как минимум исходники на C. :fu: Длинное имя складывается из нескольких слинкованный специальных фальшивых файловых entries в таблицах директорий.

Если есть прошивка с реализованной поддержкой LFN, возможно, эту поддержку можно было бы "поднять" оттуда и перенести на другие плееры. Но есть ли такая прошивка?

Posted by: Andy007 on 26-04-2007, 14:52
Поддержку в LFN я умею. New Age научил:&#041;
Но геморройно очень - десяток функций в арме надо переписывать почти с нуля.

Исходники эти компилятся все. Но только 5062 сразу.
Для остальных надо долго и вдумчиво править dat файлы для линкера.

Posted by: Rvs on 26-04-2007, 15:21
cax

наваял себе skip MP3, спасибо Andy007 за алгоритм, правда я его немного упростил ;&#041; но работает чётко!!!
Интересует?

Posted by: cax on 26-04-2007, 15:32
Давай, только если можешь - постарайся дать универсальные указания, чтобы я мог их применить к максимально большему кол-ву плейеров.
Впрочем, как я понимаю речь пойдёт о прошивках "прошлого поколения", т.е. версии 05.00.03.06, очень похожих между собой ?

Posted by: Rvs on 26-04-2007, 16:40
cax
Я все исправления вносил в Bank1. Первым делом надо найти процедуру по старому DIR_GetPosition по новому wFlGetItemIdx. Её сигнатура есть в файле MT1389_FileBrowser.idc, скрипт её и находит неплохо. У меня она начинается по адресу 1_DE44. Далее ищем такую последовательность 7F 05 12 DE 44 у меня она встретилась один раз. По адресу 1_E522 это и есть процедура fgFlMnOnIrNext.
CODE
оригинальная
ROM:E522            ; --------------- S U B R O U T I N E ---------------------------------------
ROM:E522
ROM:E522
ROM:E522            fgFlMnOnIrNext:                        ; DATA XREF: ROM:_fgFlMnOnIrNext o
ROM:E522 7F 05                mov  R7, #5
ROM:E524 12 DE 44              lcall DIR_GetPosition_wFlGetItemIdx
ROM:E524
ROM:E527 90 FB 99              mov  DPTR, #XRAM_FB99
ROM:E52A EE                    mov  A, R6
ROM:E52B F0                    movx  @DPTR, A
ROM:E52C A3                    inc  DPTR
ROM:E52D EF                    mov  A, R7
ROM:E52E F0                    movx  @DPTR, A
ROM:E52F 90 FC F3              mov  DPTR, #XRAM_FCF3
ROM:E532 E0                    movx  A, @DPTR
ROM:E533 24 FF                add  A, #0xFF
ROM:E535 FD                    mov  R5, A
ROM:E536 90 FC F2              mov  DPTR, #XRAM_FCF2
ROM:E539 E0                    movx  A, @DPTR
ROM:E53A 34 FF                addc  A, #0xFF
ROM:E53C FC                    mov  R4, A
ROM:E53D C3                    clr  C
ROM:E53E EF                    mov  A, R7
ROM:E53F 9D                    subb  A, R5
ROM:E540 EE                    mov  A, R6
ROM:E541 9C                    subb  A, R4
ROM:E542 50 27                jnc  ROM_E56B
ROM:E542
ROM:E544 12 E4 D7              lcall ROM_E4D7
ROM:E544
ROM:E547 90 FC FD              mov  DPTR, #XRAM_FCFD
ROM:E54A E0                    movx  A, @DPTR
ROM:E54B 54 F8                anl  A, #0xF8
ROM:E54D F0                    movx  @DPTR, A
ROM:E54E 7F 0D                mov  R7, #0xD
ROM:E550 12 F7 DA              lcall ROM_F7DA
ROM:E550
ROM:E553 50 16                jnc  ROM_E56B
ROM:E553
ROM:E555 90 FC F1              mov  DPTR, #XRAM_FCF1
ROM:E558 E0                    movx  A, @DPTR
ROM:E559 FF                    mov  R7, A
ROM:E55A 90 FB 9A              mov  DPTR, #XRAM_FB9A
ROM:E55D E0                    movx  A, @DPTR
ROM:E55E 24 01                add  A, #1
ROM:E560 FD                    mov  R5, A
ROM:E561 90 FB 99              mov  DPTR, #XRAM_FB99
ROM:E564 E0                    movx  A, @DPTR
ROM:E565 34 00                addc  A, #0
ROM:E567 FC                    mov  R4, A
ROM:E568 12 B4 84              lcall ROM_B484
ROM:E568
ROM:E56B
ROM:E56B            ROM_E56B:                              ; CODE XREF: BankSw:119_E522+20 j
ROM:E56B                                                    ; BankSw:119_E522+31 j
ROM:E56B D3                    setb  C
ROM:E56C 22                    ret
ROM:E56C
ROM:E56C            ; END OF FUNCTION CHUNK FOR fgFlMnOnIrNext

Далее в свободном месте пишем процедуру скипа.
CODE
ROM:FF9B            Skip_next:                              ; CODE XREF: fgFlMnOnIrNext j
ROM:FF9B 7F 49                mov  R7, #0x49 ; 'I'
ROM:FF9D 7E 02                mov  R6, #2
ROM:FF9F 12 04 0F              lcall ARM_GetChar                  ; Playback mode
ROM:FF9F
ROM:FFA2 EF                    mov  A, R7
ROM:FFA3 64 01                xrl  A, #1
ROM:FFA5 60 02                jz    ROM_FFA9                        ;SV_STOP
ROM:FFA5
ROM:FFA7 C3                    clr  C
ROM:FFA8 22                    ret
ROM:FFA8
ROM:FFA9            ; ---------------------------------------------------------------------------
ROM:FFA9
ROM:FFA9            ROM_FFA9:                              ; CODE XREF: fgFlMnOnIrNext+1A83 j
ROM:FFA9 7F 05                mov  R7, #5
ROM:FFAB 12 DE 44              lcall DIR_GetPosition_wFlGetItemIdx
ROM:FFAB
ROM:FFAE 02 E5 27              ljmp  ROM_E527                  ; call_org _next_page

Правим исходную, таким образом: в начале процедуры вызываем Skip_next, а в конце процедуры Skip_next делаем прыжок на fgFlMnOnIrNext после вызова DIR_GetPosition_wFlGetItemIdx. В итоге имеем:
CODE
ROM:E522            ; --------------- S U B R O U T I N E ---------------------------------------
ROM:E522
ROM:E522
ROM:E522            fgFlMnOnIrNext:                        ; DATA XREF: ROM:_fgFlMnOnIrNext o
ROM:E522
ROM:E522            ; FUNCTION CHUNK AT ROM:E527 SIZE 00000046 BYTES
ROM:E522            ; FUNCTION CHUNK AT ROM:FF9B SIZE 00000016 BYTES
ROM:E522
ROM:E522 02 FF 9B              ljmp  Skip_next
ROM:E522
ROM:E522            ; End of function fgFlMnOnIrNext
ROM:E522
ROM:E522            ; ---------------------------------------------------------------------------
ROM:E525 DE                    .byte 0xDE ; ¦
ROM:E526 44                    .byte 0x44 ; D
ROM:E527            ; ---------------------------------------------------------------------------
ROM:E527            ; START OF FUNCTION CHUNK FOR fgFlMnOnIrNext
ROM:E527
ROM:E527            ROM_E527:                              ; CODE XREF: fgFlMnOnIrNext+1A8C j
ROM:E527 90 FB 99              mov  DPTR, #XRAM_FB99
ROM:E52A EE                    mov  A, R6
ROM:E52B F0                    movx  @DPTR, A
ROM:E52C A3                    inc  DPTR
ROM:E52D EF                    mov  A, R7
ROM:E52E F0                    movx  @DPTR, A
ROM:E52F 90 FC F3              mov  DPTR, #XRAM_FCF3
ROM:E532 E0                    movx  A, @DPTR
ROM:E533 24 FF                add  A, #0xFF
ROM:E535 FD                    mov  R5, A
ROM:E536 90 FC F2              mov  DPTR, #XRAM_FCF2
ROM:E539 E0                    movx  A, @DPTR
ROM:E53A 34 FF                addc  A, #0xFF
ROM:E53C FC                    mov  R4, A
ROM:E53D C3                    clr  C
ROM:E53E EF                    mov  A, R7
ROM:E53F 9D                    subb  A, R5
ROM:E540 EE                    mov  A, R6
ROM:E541 9C                    subb  A, R4
ROM:E542 50 27                jnc  ROM_E56B
ROM:E542
ROM:E544 12 E4 D7              lcall ROM_E4D7
ROM:E544
ROM:E547 90 FC FD              mov  DPTR, #XRAM_FCFD
ROM:E54A E0                    movx  A, @DPTR
ROM:E54B 54 F8                anl  A, #0xF8
ROM:E54D F0                    movx  @DPTR, A
ROM:E54E 7F 0D                mov  R7, #0xD
ROM:E550 12 F7 DA              lcall ROM_F7DA
ROM:E550
ROM:E553 50 16                jnc  ROM_E56B
ROM:E553
ROM:E555 90 FC F1              mov  DPTR, #XRAM_FCF1
ROM:E558 E0                    movx  A, @DPTR
ROM:E559 FF                    mov  R7, A
ROM:E55A 90 FB 9A              mov  DPTR, #XRAM_FB9A
ROM:E55D E0                    movx  A, @DPTR
ROM:E55E 24 01                add  A, #1
ROM:E560 FD                    mov  R5, A
ROM:E561 90 FB 99              mov  DPTR, #XRAM_FB99
ROM:E564 E0                    movx  A, @DPTR
ROM:E565 34 00                addc  A, #0
ROM:E567 FC                    mov  R4, A
ROM:E568 12 B4 84              lcall ROM_B484
ROM:E568
ROM:E56B
ROM:E56B            ROM_E56B:                              ; CODE XREF: fgFlMnOnIrNext+20 j
ROM:E56B                                                    ; fgFlMnOnIrNext+31 j
ROM:E56B D3                    setb  C
ROM:E56C 22                    ret
ROM:E56C
ROM:E56C            ; END OF FUNCTION CHUNK FOR fgFlMnOnIrNext

Аналогично правим и fgFlMnOnIrPrev только теперь ищем 7F 00 12 DE 44 вот готовые процедуры:
CODE
ROM:ED7A            ; --------------- S U B R O U T I N E ---------------------------------------
ROM:ED7A
ROM:ED7A
ROM:ED7A            fgFlMnOnIrPrev:                        ; DATA XREF: ROM:_fgFlMnOnIrPrev o
ROM:ED7A
ROM:ED7A            ; FUNCTION CHUNK AT ROM:ED7F SIZE 00000039 BYTES
ROM:ED7A            ; FUNCTION CHUNK AT ROM:FFB1 SIZE 00000016 BYTES
ROM:ED7A
ROM:ED7A 02 FF B1              ljmp  Skip_prev
ROM:ED7A
ROM:ED7A            ; End of function fgFlMnOnIrPrev
ROM:ED7A
ROM:ED7A            ; ---------------------------------------------------------------------------
ROM:ED7D DE                    .byte 0xDE ; ¦
ROM:ED7E 44                    .byte 0x44 ; D
ROM:ED7F            ; ---------------------------------------------------------------------------
ROM:ED7F            ; START OF FUNCTION CHUNK FOR fgFlMnOnIrPrev
ROM:ED7F
ROM:ED7F            ROM_ED7F:                              ; CODE XREF: fgFlMnOnIrPrev+124A j
ROM:ED7F 90 FB 99              mov  DPTR, #XRAM_FB99
ROM:ED82 EE                    mov  A, R6
ROM:ED83 F0                    movx  @DPTR, A
ROM:ED84 A3                    inc  DPTR
ROM:ED85 EF                    mov  A, R7
ROM:ED86 F0                    movx  @DPTR, A
ROM:ED87 D3                    setb  C
ROM:ED88 94 05                subb  A, #5
ROM:ED8A EE                    mov  A, R6
ROM:ED8B 94 00                subb  A, #0
ROM:ED8D 40 27                jc    ROM_EDB6
ROM:ED8D
ROM:ED8F 12 E4 D7              lcall ROM_E4D7
ROM:ED8F
ROM:ED92 90 FC FD              mov  DPTR, #XRAM_FCFD
ROM:ED95 E0                    movx  A, @DPTR
ROM:ED96 54 F8                anl  A, #0xF8
ROM:ED98 F0                    movx  @DPTR, A
ROM:ED99 7F 0C                mov  R7, #0xC
ROM:ED9B 12 F7 DA              lcall ROM_F7DA
ROM:ED9B
ROM:ED9E 50 16                jnc  ROM_EDB6
ROM:ED9E
ROM:EDA0 90 FC F1              mov  DPTR, #XRAM_FCF1
ROM:EDA3 E0                    movx  A, @DPTR
ROM:EDA4 FF                    mov  R7, A
ROM:EDA5 90 FB 9A              mov  DPTR, #XRAM_FB9A
ROM:EDA8 E0                    movx  A, @DPTR
ROM:EDA9 24 FA                add  A, #0xFA ; '•'
ROM:EDAB FD                    mov  R5, A
ROM:EDAC 90 FB 99              mov  DPTR, #XRAM_FB99
ROM:EDAF E0                    movx  A, @DPTR
ROM:EDB0 34 FF                addc  A, #0xFF
ROM:EDB2 FC                    mov  R4, A
ROM:EDB3 12 B4 84              lcall ROM_B484
ROM:EDB3
ROM:EDB6
ROM:EDB6            ROM_EDB6:                              ; CODE XREF: fgFlMnOnIrPrev+13 j
ROM:EDB6                                                    ; fgFlMnOnIrPrev+24 j
ROM:EDB6 D3                    setb  C
ROM:EDB7 22                    ret
ROM:EDB7
ROM:EDB7            ; END OF FUNCTION CHUNK FOR fgFlMnOnIrPrev


...................................................................................................

ROM:FFB1            Skip_prev:                              ; CODE XREF: fgFlMnOnIrPrev j
ROM:FFB1 7F 49                mov  R7, #0x49 ; 'I'
ROM:FFB3 7E 02                mov  R6, #2
ROM:FFB5 12 04 0F              lcall ARM_GetChar
ROM:FFB5
ROM:FFB8 EF                    mov  A, R7
ROM:FFB9 64 01                xrl  A, #1
ROM:FFBB 60 02                jz    ROM_FFBF
ROM:FFBB
ROM:FFBD C3                    clr  C
ROM:FFBE 22                    ret
ROM:FFBE
ROM:FFBF            ; ---------------------------------------------------------------------------
ROM:FFBF
ROM:FFBF            ROM_FFBF:                              ; CODE XREF: fgFlMnOnIrPrev+1241 j
ROM:FFBF 7F 00                mov  R7, #0
ROM:FFC1 12 DE 44              lcall DIR_GetPosition_wFlGetItemIdx
ROM:FFC1
ROM:FFC4 02 ED 7F              ljmp  ROM_ED7F

Вроде объяснил :wacko: , если что не понятно спроси!!!

QUOTE:
Впрочем, как я понимаю речь пойдёт о прошивках "прошлого поколения"


что значит прошлого?? и с версиями не понял??

Posted by: cax on 26-04-2007, 17:03
По поводу поколений - объясню. В прошивках с версиями 05.00.04.хх и так далее, скип уже реализован изначально, а самые новые плейеры уже укомплектовывают версией 05.00.07.хх, насколько мне известно.

Поэтому прошивки без скипа (версии 05.00.03.хх и младше) я назвал "прошлым поколением".

За патч - огромное спасибо !
На днях попробую найти время для проверки на Апексе и Юндае и обязательно отчитаюсь.

Posted by: Rvs on 26-04-2007, 17:21
cax

QUOTE:
По поводу поколений - объясню

ага, а смотреть надо по Version или 8032, а то у меня вот такая инфа:

Version : 00.00.00.02
Sub :
8032 : 05.00.04.02

Posted by: cax on 26-04-2007, 17:36
А вот и первые "непонятки" с Апексом:

1) нашёл DIR_GetPosition по сигнатуре CD EF CD 90 ?? ?? E0 FF 13 13 13 54 0F FF, по адресу DBA8.

2) искал 7F 05 12 DB А8 - тут всё безупречно, найдено 1 раз и то, что надо.

А вот найти 7F 00 12 DB А8 мне не удалось, зато E4 FF 12 DB A8 находится целых 6 раз. Какой из них мне нужен ?
Ещё нашёл один раз 7F 06 12 DB А8, других 7F xx 12 DB А8 не было.

Апдейт: в Юндае та же бодяга.

Posted by: Rvs on 26-04-2007, 18:16
cax

У меня в процедуре fgFlMnOnIrPrev то что я привёл в примере есть последовательнось:

ROM:ED7F 90 FB 99 mov DPTR, #XRAM_FB99
ROM:ED82 EE mov A, R6
ROM:ED83 F0 movx @DPTR, A
ROM:ED84 A3 inc DPTR
ROM:ED85 EF mov A, R7
ROM:ED86 F0 movx @DPTR, A
ROM:ED87 D3 setb C
ROM:ED88 94 05 subb A, #5
ROM:ED8A EE mov A, R6
ROM:ED8B 94 00 subb A, #0
ROM:ED8D 40 27 jc ROM_EDB6

и у тебя она тоже есть по адресу 1_E8CF значит это и есть нужная процедура fgFlMnOnIrPrev = 1_E8CF. Ну дальше по плану :&#041;

Posted by: cax on 26-04-2007, 18:34
Так и запишем: fgFlMnOnIrPrev искать по сигнатуре

E4 FF 12 xx xx 90 ?? ?? EE F0 A3 EF F0 D3
где xx xx - адрес DIR_GetPosition.

А если ещё немного поиграться, то получаем, что знать DIR_GetPosition нам и вовсе не надо, а цепочки для next/prev такие:

для next - 7F 05 12 ?? ?? 90 ?? ?? EE F0 A3
для prev - E4 FF 12 ?? ?? 90 ?? ?? EE F0 A3 EF F0 D3

Ещё раз спасибо !

Теперь осталось допатчить и проверить, но это уже будет не сегодня.

Posted by: vboroda on 26-04-2007, 20:26
QUOTE (Andy007):
Поддержку в LFN я умею. New Age научил:&#041;
Но геморройно очень - десяток функций в арме надо переписывать почти с нуля.

Andy007, а можно, пожалуйста, немного подробнее на этот счет? Я прочитал сообщения NA на эту тему в mt13x9 на Yahoo, о том как искать ф-ции, читающие файловые системы, и далее:
QUOTE:
If you deep analyze and do some memdumps with the FindFirst, FindNext routines you'll find that the LFN name also processed but never used. If you patch the FAT_FUNC_2 for using the LFN name then playing anything wont work because the whole arm code based on 8.2 short names.
The workaround I managed to do is this in short words:

- there is a fixed 50 chars long buffer used for filenames
- since 8.3 name + \0x00 uses maxium 13 chars from that I copy the lfn name after the 8.3 into this buffer (patched the routine that is called from findfirst and findnext function that fills the filename record)
- when I display the filenames I display this instead of 8.3

This solution has one problem: the subtitle loader routine still will use the 8.3 names that causes filename matching problems. But if you patch those routines too this problem is also solved.

Не уверен, что пользуясь такой инструкцией можно браться за это дело. Есть ли что-то более конкретное - откомментированный дизассемблер хотя бы? Т.е. сам факт того, что LFN прошивка уже собирает, хотя и не использует, обнадеживающий, но как его приложить к моей конкретной прошивке? Ф-цию FAT_FUNC_2 я нашел без особого труда, но она ссылается на десятки других, следовать по всем этим вызовам, пытаясь собрать примерную картину происходящего было бы очень трудоемко.
Спасибо! :hi:

Posted by: vboroda on 27-04-2007, 20:09
Если можно - несколько вопросов к знатокам.

1) Сколько в ARM коде свободного места для того, чтобы пихать свой код? Иными словами, какого размера функции можно безопасно туда вставлять? UnicodeToCP - функция крошечная, а как насчет, скажем, уникодных таблиц, или дополнительного модуля для поддержки LFN?

Я тут начал разбираться в коде New Age для Medion, где он добавил поддержку длинных имен файлов в FAT. Идея примерно ясна, код более-менее понятен (с.б., человек писал, а не компиллятор - но как бы пригодились листинги с комментариями!). New Age добавил несколько килобайт кода и таблиц (а значит, под мою систему - править и править) - безопасно ли вставлять такое количество кода в прошивку? Свой код New Age разместил примерно начиная с того места (сообщения об ошибках C-компиллятора), которое было рекомендовано cax для UnicodeToCP.

2) Существует ли простенький фриварный ARM ассемблер? Замучаешься все бинарные коды вручную составлять (ну BL с помощью BCalc ладно, но все остальное...).

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

Вопросов на самом деле гораздо больше, но я пытаюсь разбираться самостоятельно. Спасибо!

Posted by: Rvs on 28-04-2007, 09:32
cax

ну как результат??

vboroda

У NewAge есть утилита для увелечения размера ARM. Насколько я знаю можно лепить сколько угодно большие куски своего кода. Главное что бы место было свободное. NewAge часто если не сказать всегда расширяет ARM, т.к. для его патчей, того места что есть ни когда не хватате. А насчёт кабеля зря ты так. Я себе спаял на двух транзисторах и забыл заморочки с дисками. Заливаеться быстро и в любой момент и если где то накасячу, то даже об этом не задумываюсь. Плюс есть возможность просматривать память, тем более если ты будешь работать с файлами, то результаты работы ты легко увидишь в памяти.

Posted by: cax on 29-04-2007, 16:48
Rvs,

и последние (я надеюсь) 2 вопроса по теме (для плохо знающих IDA и скрипты).

CODE
ROM:FF9B 7F 49                mov  R7, #0x49 ; 'I'
ROM:FF9D 7E 02                mov  R6, #2
ROM:FF9F 12 04 0F              lcall ARM_GetChar

1) Как найти PREF_GetChar я знаю, а вот как найти ARM_GetChar ?
Я прочесал скрипты, но не нашёл.

2) 0x249 - этот адрес верен для любой прошивки ?

Posted by: Rvs on 03-05-2007, 09:56
cax

Не смог сразу ответить, на майские праздники ездил отдыхать!!! :&#041;

1. ARM_GetChar сигнатура есть в файле MT1389_Misc_v3 или MT1389_Misc вот она D3 10 AF 01 C3 C0 D0 8E ? 8F ? 90 F8 60.
2. До последнего момента был уверен, что да, но с появлением исходников нет. Как раз в них другой адрес. Но радует одно, что кроме как в исходниках я разницу и нашёл.

А у тебя есть сомнения??? Говори!!!

Posted by: cax on 03-05-2007, 15:21
QUOTE (Rvs @ 03-05-2007, 06:56):
cax

Не смог сразу ответить, на майские праздники ездил отдыхать!!! :&#041;

1. ARM_GetChar сигнатура есть в файле MT1389_Misc_v3 или MT1389_Misc вот она D3 10 AF 01 C3 C0 D0 8E ? 8F ? 90 F8 60.
2. До последнего момента был уверен, что да, но с появлением исходников нет. Как раз в них другой адрес. Но радует одно, что кроме как в исходниках я разницу и нашёл.

А у тебя есть сомнения??? Говори!!!
1) Такая сигнатура в Юндае есть дважды (EC21 и EF8F), я полагаю, что скрипт использует первую из них ? А сколько раз она встречается у тебя ?

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

Posted by: Rvs on 03-05-2007, 18:09
cax

1. У меня тоже находит два раза, но оказываеться в одном случае это ARM_GetChar, а в другом ARM_PutChar у них разные концовки. В скрипте ARM_PutChar ищут по такой сигнатуре ED F0 D0 D0 92 AF 22.

2. Ну это конечно не магическое число :&#041; в исходниках это SI_MP3_MOD - trick mode. Смысл ячейки ясен, а вот как её найти наверняка.... Я поглядел у себя, косвенно через процедуру fgFlMnOnIrPlay и то через IDA её можно найти, а так сложно....

Posted by: cax on 08-05-2007, 10:24
Rvs, ещё раз спасибо ! Пока проверил только на Юндае, работает безупречно !

Вот "путевой лист":

Hyundai 3899 servo 02.09: next/prev mp3 skipping mod.

CODE

0) find ARM_GetChar by searching D3 10 AF 01 C3 C0 D0 8E ? 8F ? 90 F8 60
Found twice: at EC21 and EF8F
Let's search for 22 from the subprogram beginning to find it's end.

EC21: ends with E0 FF D0 D0 92 AF 22
EF8F: ends with ED F0 D0 D0 92 AF 22 !!!
This ending means we've found is ARM_PutChar, so at EC21 we have ARM_GetChar.

Looking for 90 EC 21 02, found at 0409, 10409, etc., so
ARM_GetChar = gg gg = 04 09

============

1.1) find "next" - 7F 05 12 mm mm 90 ?? ?? EE F0 A3, at address NN NN
Calculate nn nn = (NN NN + 5), write down mm mm.

(found at 1DCFB, mm mm = D5 78, nn nn = DCFB+5 = DD00)

1.2) put the following code in free area (ss ss):

7F 49 7E 02 12 gg gg EF 64 01 60 02 C3 22 7F 05 12 mm mm 02 nn nn

(here: 7F 49 7E 02 12 04 09 EF 64 01 60 02 C3 22 7F 05 12 D5 78 02 DD 00
at ss ss = 1F400)

1.3) put "02 ss ss" at NN NN

(here: 02 F4 00 at 1DCFB)

============

2.1) find "prev" - E4 FF 12 mm mm 90 ?? ?? EE F0 A3 EF F0 D3, at address NN NN
Calculate nn nn = (NN NN + 5). As you see, mm mm is the same as in "next" subroutine.

(found at 1E40D, mm mm = D5 78, nn nn = E40D+5 = E412)

2.2) put the following code in free area (ss ss):

7F 49 7E 02 12 gg gg EF 64 01 60 02 C3 22 7F 00 12 mm mm 02 nn nn

(here: 7F 49 7E 02 12 04 09 EF 64 01 60 02 C3 22 7F 00 12 D5 78 02 E4 12
at ss ss = 1F420)

2.3) put "02 ss ss" at NN NN

(here: 02 F4 20 at 1E40D)

Posted by: Rvs on 08-05-2007, 15:42
cax

Отлично!!!
Думаю будет работать везде.

Posted by: cax on 13-05-2007, 15:16
Выложил у себя на страничке апдейт для Юндая и его брата-близнеца Вертекса.

За последние год и 2 месяца я впервые что-то выпускаю, да и то - с твоей подачи, Rvs. Думаю, что на этом всё и закончится, если только мне не подсунут ещё какое-нибудь полезное и готовое HOWTO для плейеров, которые у меня дома и ещё исправны :&#041;

У меня сейчас другое увлечение - портирую эмулятор MSX (про школьные компьютеры Ямаха слышал небось ?) на rockbox. Это такая OS, которая бежит на iPod и других портативных плейерах. Прикольно играть в любимые с детства игры на экранчике, который помещается в нагрудный карман.

Posted by: Rvs on 15-05-2007, 09:25
cax
QUOTE:
У меня сейчас другое увлечение - портирую эмулятор MSX (про школьные компьютеры Ямаха слышал небось ?) на rockbox. Это такая OS, которая бежит на iPod и других портативных плейерах. Прикольно играть в любимые с детства игры на экранчике, который помещается в нагрудный карман.
Интересное направление, а сайт с наработками есть?

Posted by: cax on 15-05-2007, 11:18
Ну, эмуляторов MSX есть вагон и маленькая тележка - blueMSX, openMSX, а fMSX - так тот вообще на десятки платформ перенесен. Если тебе интересно как я продвигаюсь, и компьютеры MSX вообще - можешь зайти в форум на http://ru.msx.org (http://ru.msx.org, где я переводчиком.

В этой ветке обсуждать MSX будет злостным офтопиком.

Posted by: Rvs on 16-05-2007, 16:05
LDZ

Перекинул процедуру USB, но не заработало. Тогда залил прошивку от сильвера, тоже не фига. Вышли если можешь мне на почту ruslan(тузик)tiraet.com твою которая на XORO заработала.

Posted by: LDZ on 16-05-2007, 19:40
Ушло. Ты мне обратным ходом намыль свою, залью посмотрю. Ты чем проверял?
ЗЫ. У меня 2 кардридера - один работает, второй не хочет.

Posted by: vboroda on 18-05-2007, 19:42
Ну так что, никаких разъяснений насчет длинных имен на USB не последует? Меня New Age ничему учить, к сожалению, не хочет, а уж очень хочется сделать эту фичу для Philips 5960. Создается впечатление, что некоторые эксперты по тем или иным причинам не хотят делиться всеми своими наработками, либо считают, что если ты не идиот, то сам разберешься (крутым хакерам с "новичками" не интересно?). В какой-то мере это, наверное, справедливо: я вкалывал, а ты теперь хочешь бесплатно пожинать плоды моего труда? Но в результате просто теряется смысл - если моддеры не будут делиться знаниями, то в чем отличие моддера от профессионала, работающего на производителя плееров, который знает все, и мог бы добавить любую фичу за пару часов, имея доступ к исходникам всего кода, но не хочет ничего делать просто потому, что ему лень (или потому что начальство не требует)?

Кстати, пока так и не получилось собрать кабель для заливки. Такое впечатление, что что-то не работает на плате - уже 4 мобильниковских кабеля изгадил, и так и не удается ничего считать из памяти - ни MtkTool'ом, ни MtkCom. А очень бы пригодилось для отладки (не столько даже для перезаливки, сколько просто засунуть какое-нибудь число в память, и проверить, проходит ли код нужным путем). :&#040;

Posted by: cax on 19-05-2007, 21:24
Мобильниковские кабели и мне не помогли. Паяльник я держать не умею, но кабель из одной микросхемы и 5 конденсаторов собрал за 3 часа.

Posted by: Rvs on 21-05-2007, 17:45
vboroda
QUOTE:
Кстати, пока так и не получилось собрать кабель для заливки
Многие жаловались на кабели от мобильников, я себе спаял на 2-х транзисторах за полчаса, работает как часы, если нужна схема вышлю не проблема!!!

QUOTE:
Ну так что, никаких разъяснений насчет длинных имен на USB не последует
Меня этот вопрос мучает не меньше твоего, сейчас я добавил в свою прошивку процедуру поддержки USB, обкатаю её и займусь длинными именами. Думаю поговорить с Andy007, надеюсь получиться. А ты прямо спроси пусть даст ARM с длинными именами, на яше ты засветился, может он, может кто-то другой да выложит, а там уже методом сравнения с оригиналом вытащим их идею!!!

Posted by: vboroda on 21-05-2007, 19:43
QUOTE (Rvs @ 21-05-2007, 14:45):
А ты прямо спроси пусть даст ARM с длинными именами, на яше ты засветился, может он, может кто-то другой да выложит, а там уже методом сравнения с оригиналом вытащим их идею!!!

ARM с длинными именами (вернее, вся прошивка для Medion MD81290) у меня есть. Скачал с сайта New Age. Проблема в том, что там столько всего понапихано, что я просто затрахался пытаться выудить из этого какой-либо смысл.

Там есть довольно простая ф-ция (вернее, две), которые вытягивают сами длинные имена из структуры и записывают в массив, где хранится короткое имя, после этого самого короткого имени. Это я как бы понял. И это якобы был (согласно постингу NA в Яхе) весь секрет добычи длинных имен. Когда понадобится, дам адреса этих ф-ций.

А дальше начинается свистопляска с подстановкой строки по OSD команде 65. :fu: И команда эта, похоже, приходит с кучей параметров. Т.е. структура команды 65 мне пока не ясна (хотя ее, возможно, можно будет разобрать из исходников 8032), но главное, непонятно, куда пихать код и все эти жуткие массивы, которые NA аллокирует в нескольких разных местах. У меня в 5960 расширять ARM, похоже, некуда (во всяком случае, программа NA мне в этом не помогла), а свободного места в середине, вокруг USB мессиджей и C++ exceptions тоже не так много - ну, килобайтов 8 от силы. У меня сложилось впечатление, что NA копирует все файловые структуры в какой-то запасной массив (хотя я там не так уж хорошо разобрался, как это на самом деле происходит). В общем, драть его код напрямую я не хочу, без понимания, как и почему это работает. А вот этого самого понимания мне пока и не хватает.

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

Posted by: Rvs on 22-05-2007, 16:48
vboroda

Работу ты проделал не малую!!! Ну, давай по очереди:

1. Если ты нашел две процедуры которые заполняют массивы разве в них нет адреса самого массива???
2. В 8032 браузер только один, значит алгоритм вывода на экран названия папок и файлов тоже один, а самое главное адреса чтения из DRAM тоже один, отсюда следует, что NA заполняет туже самую структуру, что и при чтении FAT, а про неё мы знаем точно как она выглядит и где расположена. Значит можно глянуть, как выглядит массив в не правленом ARM-е и в правленом NA. Если разница есть, значит, ларчик просто открывался.
3. Я видел ARM увеличенный NA на 30Kb - 50Kb, так что я думаю, что не проблема увеличить ARM.
4. А ты не пробовал пересадить ARM NA в свою прошивку, интересно он все изменения сделал только в ARM-е или и в 8032?

QUOTE:
боюсь убить устройство нафик

Лучше сделай шнурок, а то закончиться плачевно...

Posted by: vboroda on 22-05-2007, 18:36
USB LFN

1. Адрес массива безусловно есть. Если 8032 доступается к этому же самому массиву для доставания имен файлов в своей vFlMnDrawPage (ранее известной как DIR_FileBrowser), то дело должно быть совсем не хитрое. Но без шнурка я проверить не могу. А без конца жечь CD болванки мне тоже жаба не дает. 8032 получает массив пойнтеров. Куда эти пойнтеры пойнтают можно узнать только просмотрев память.

2. А вот здесь ты не совсем прав. Вернее, ARM заполняет структуру, да. Но для FAT она не та же, что для CD/DVD. Почему так по-идиотски сделано - ума не приложу. Может, им не достаточно памяти для полных paths длинными именами, а на CD/DVD структура директорий обычно упрощенная, и там особо много не требуется, в то время как на диске может быть 10 вложенных директорий? В общем, там для всего используется короткое 8.3 имя, а длинное имя может быть сохранено, но просто игнорируется. Трюк NA заключался в том, чтобы записать это имя в тот же 50-байтовый буфер, но по адресу 14. :&#041; В итоге мы можем увидеть что-то ок. 34-35 символов вместо 8.3.

Что касается 8032, то он получает только пойнтеры к именам файлов, в некоем списке, а не пойнтер к общей структуре файлохранилища. Так что теоретически возможно, что ARM дает ему адреса тех самых 50-байтных буферов, в которых за коротким именем следует длинное. Но возможно и то, что ARM сначала копирует все имена в какой-то другой общий список, а потом дает 8032 адреса членов этого списка.

3. Я уверен, что увеличить 5960 ARM можно, я просто не знаю, как это сделать. :&#041;

4. Я ж не самоубийца - пересаживать чужой ARM в свою прошивку без кабеля. Думаю, что NA не просто хакер, а хакер со смыслом (почти программист :lol: ), так что вполне вероятно, что свои изменения для определенной фичи он старается вносить в одну сторону прошивки, а не в обе. Так ему легче переносить фичи с одного устройства на другое: взял ARM и перенес со всеми фичами сразу. Кому как не ему известны все аспекты разделения труда между ARM и 8032. Во всяком случае поддержка LFN вся сделана в ARM. В прошивке NA совершенно офигительное количество изменений 8032 (я сравнил со стандартной), но скорее всего они не имеют отношения к LFN.

Интересно, как изменилось мое личное понимание архитектуры MTK за те несколько недель, что я начал с нею знакомиться. Сначала мне казалось, что значительно легче понимать код ARM (THUMB), a 8032 - это тихий ужас. Но разобравшись более менее с исходниками 8032, я теперь на 180 градусов поменял свое мнение. Проблема в том, что в ARM очень трудно искать бинарные строки. Вот ты видишь, например, адрес какой-то переменной в Sh. Mem. - в 8032 все точки обращения к ней находятся элементарно. А в ARM... Совершенно неясно, что и где искать.

Ладно, черт с этими длинными именами файлов. Может быть кто-нибудь знает, как добавить DivX resume в ARM? Я вижу, что при нажатии кнопки Play во время загрузки диска 8032 пишет 2 команды в Sh. Mem.:
vSetSharedInfo (0x6E0, 0);
vSetSharedInfo (0x6FE, 0);
А далее непонятно. То ли он получает ответ от ARM, и затем просто инициирует прыжок на определенную точку проигрывания, то ли ARM прыгает самостоятельно, а 8032 только сообщает об успехе (показывает мессидж RESUME PLAY).

Мне кажется, очень полезная и нужная фича... Есть ли идеи?

Posted by: cax on 23-05-2007, 08:35
Лично меня устроила бы даже возможность не запоминания, а перехода на фиксированное время, скажем, выбираю я в меню "прыг на 30 минут от начала". Чертовски полезная вещь для портативных плейеров, у которых мало кнопок на корпусе, а таскать везде с собой пульт неудобно.

Но я не нашёл как программно сделать "прыг".

Что касается запоминания места - для стандартных DVD оно реализовано, осталось раскопать как и повторить для DivX.

Posted by: Rvs on 23-05-2007, 13:01
vboroda

QUOTE:
Куда эти пойнтеры пойнтают можно узнать только просмотрев память.
Согласен. Есть отдельный указатель на папки и отдельный на файлы. Но если я всё таки прав, что браузер один тогда как бы структуры не различались массив должен быть заполнен одинаково (иначе 8032 нарисует на экране всякий бред) примерно так:
CODE
+0 pointer to name (if not a directory) little endian
+4 name length
+5 type
0x10 = directory
Others = look at column FEtype of table FileExtTable below.
+8 file size – 4 bytes – little endian
+C ??
Т.е. упрощёно есть две процедуры, которые преобразовывают, и загоняю в массив имена для 8032 из FAT или CD. Поэтому если верить тому же источнику всё должно выглядеть вот так:

CODE
                                СТРУКТУРА
000008E0 01 0A 38 03 01 10 00 00 00 08 00 00 00 00 00 00 ;  8           
000008F0 0D 0A 38 03 0F 12 01 00 00 60 71 00 00 00 00 00 ;  8         
00000900 1C 0A 38 03 07 12 02 00 00 60 71 00 01 00 00 00 ;  8         
00000910 23 0A 38 03 0A 0A 03 00 69 4F 00 00 02 00 00 00 ; # 8    iO     
00000920 2D 0A 38 03 09 12 04 00 00 60 71 00 03 00 00 00 ; - 8         
00000930 36 0A 38 03 0A 0D 05 00 69 4F 00 00 04 00 00 00 ; 6 8    iO     
00000940 40 0A 38 03 0A 15 06 00 63 2F 00 00 05 00 00 00 ; @ 8    c/     
00000950 4A 0A 38 03 07 05 07 00 07 46 00 00 06 00 00 00 ; J 8      F     
00000960 51 0A 38 03 09 05 08 00 6D 4B 00 00 07 00 00 00 ; Q 8    mK     
00000970 5A 0A 38 03 07 05 09 00 69 4F 00 00 08 00 00 00 ; Z 8    iO     
00000980 61 0A 38 03 0A 09 0A 00 69 4F 00 00 09 00 00 00 ; a 8    iO     
00000990 6B 0A 38 03 0A 09 0B 00 69 4F 00 00 0A 00 00 00 ; k 8    iO     
000009A0 75 0A 38 03 0A 06 0C 00 69 4F 00 00 0B 00 00 00 ; u 8    iO     
000009B0 7F 0A 38 03 0A 03 0D 00 69 4F 00 00 0C 00 00 00 ; 8    iO     


The names of the files: (follow the pointers above)

                            МАССИВ
03380A00 00 00 00 00 00 00 00 00 00 00 FF EF 01 53 E1 6E ;              S n
03380A10 74 E9 20 EE 20 D2 6C E9 2E 61 76 69 61 76 69 2E ; t    l .aviavi.
03380A20 61 76 69 64 61 74 64 75 6D 2E 64 61 74 64 69 76 ; avidatdum.datdiv
03380A30 78 2E 64 69 76 78 64 73 64 64 75 6D 2E 64 73 64 ; x.divxdsddum.dsd
03380A40 64 73 74 64 75 6D 2E 64 73 74 6A 70 65 2E 6A 70 ; dstdum.dstjpe.jp
03380A50 65 6A 70 65 67 2E 6A 70 65 67 6A 70 67 2E 6A 70 ; ejpeg.jpegjpg.jp
03380A60 67 6D 31 76 64 75 6D 2E 6D 31 76 6D 32 76 64 75 ; gm1vdum.m1vm2vdu
03380A70 6D 2E 6D 32 76 6D 6C 70 64 75 6D 2E 6D 6C 70 6D ; m.m2vmlpdum.mlpm
03380A80 70 31 64 75 6D 2E 6D 70 31 EF FF FF F7 FF FF EF ; p1dum.mp1     

Отсюда и не понятки что это за 50-байтовый буфер, и адрес 14 , уж не пустил ли NA нас по ложному следу. Исходя из этой инфы и я это точно видел у себя на плеере, должна заполняться структура и все имена в кучу. Исходя из того что NA сказал что вначале ARM сам пишет 8.3, а потом его процедура дописывает длинное, получается гон, файлы то идут в кучу промежутков то нет!!!

QUOTE:
Сначала мне казалось, что значительно легче понимать код ARM...
Ну исходя из того что меня в институте натаскивали на Intel архитектуру старых процов, а 8032 = i8051, то тут бетон пошел сразу. А вот ARM плавит мозги до сих пор. :wacko: Надо попытаться освоить метод moroz-а он пишет на нормальном языке, а потом компилит во что угодно, но это уже вопрос к cax-у. Да кстати у меня есть файлик с описанием асма ARM на русском, часть моих пробелов он заполнил.
QUOTE:
Может быть кто-нибудь знает, как добавить DivX resume в ARM
Почему в ARM исходя из исходников поддержка запоминания места реализована в 8032, точнее если я не ошибаюсь управляет запоминаем ARM-a. И опять таки исходя из исходников запоминаться должно всё и DVD и Divx. Сейчас гляну исходники может что то нарою.


Posted by: vboroda on 23-05-2007, 17:51
Rvs

Насчет того, что дла FAT информация о файлах запихивается в массив структур, в которых по 50 байт отведено под имя файла, я совершенно уверен. Зря, что ли, 2 недели пялился в NA код? :w00t:

То, что ты описал, имеет отношение к спискам файлов, полученных в файловых системах типа ISO. Для FAT и ISO используются совершенно разные хэндлеры, что более-менее подробно было описано NA еще давным давно. Но вот что происходит с массивами структур после того, как они были считаны функциями поддержки FAT, того я не ведаю.

Например, патч cax по пвреводу имени файла из уникода в CP12XX относится только к ISO файлам, и ни коим образом не затрагивает FAT.

Насчет NA я, конечно, ничего не знаю и не ведаю, но есть у меня глубокие сомнения насчет того, что ему доступны исходники ARM. Более того, я даже подозреваю, что исходники ARM могут быть доступны только поставщикам SOC МТК. А производители плееров получают исходники 8032, которых более чем достаточно для того, чтобы кастомизировать их продукт. ARM отвечает, как тебе безусловно известно, за аспекты доступа к файловым системам и раскодирования видео и аудио потоков. Весь user interface обеспечивается 8032. Если бы исходники ARM были доступны производителям плееров, китаезы, у которых понятие об интеллектуальной собственности отсутствует просто на генетическом уровне, уже давно выложили бы их в открытый доступ. :wub:

Если сравнить ARM прошивки NA с официальной прошивкой, то разница хотя и огромная, но совершенно очевидно, что все его изменения сконцентрированны в нескольких четко ограниченных местах (поверх текстовых мессиджей поддержки FAT - до мессиджей C++ exceptions, и в конце, в месте "расширения"). Я думаю, что он действительно пишет свои патчи на С, а потом компиллирует, но при этом устанавливает их вручную.

Ассемблер ARM/THUMB (16-битный) меня не слишком угнетает, он как-раз довольно понятен. Проблема в другом: как искать что-то в бинарниках? Приходится пользоваться текстовым поиском, а это головная боль. Например, если ты знаешь, что тебе надо найти в 8032 место, где пишется Sh. Mem. position 0x06E0. Элементарно: ищешь код "7F E0 7E 06 12":
CODE
mov R7, 0xE0
mov R6, 0x06
lcall <..>
и находишь. А в ARM просто хрен знает как и что искать, если во всех командах immediate числа побитно сдвинуты между байтами. :&#040;

QUOTE:
Почему в ARM исходя из исходников поддержка запоминания места реализована в 8032, точнее если я не ошибаюсь управляет запоминаем ARM-a. И опять таки исходя из исходников запоминаться должно всё и DVD и Divx.

Здесь ты не прав. Как я и написал, 8032 может только дать UOP команду запомнить, но сам он не отвечает за запоминание. Запоминает точку отключения ARM, причем делает это автоматически. Но где, в каком месте - ума не приложу. Я вообще не понимаю, как найти switch, который отвечает за исполнение UOP команд. :help:

Posted by: vboroda on 23-05-2007, 18:14
cax

Я вижу, ты серьезно переключился на свой новый проект, даже не следишь за группой на Яге. :punk:
QUOTE:
Что касается запоминания места - для стандартных DVD оно реализовано, осталось раскопать как и повторить для DivX.

Совершенно верно. Но как его найти, а? :help: Потом, не забудь, что ISO диски - это всего лишь коллекции файлов без какого-либо ID. А уж как там подобраться к FAT устройствам, я и вообще в непонятках. Я просто хотел бы реализации простейшего resume - если диск не вынимали, и плеер из сети не выключали, при нажатии кнопки Play во время демонстрации экрана Loading идти на последний проигрывавшийся файл в последнюю проигрывавшуюся точку. Наплевать мне на 5 последних дисков, сохраненных в EPROM. :&#041;

Posted by: cax on 23-05-2007, 22:05
Если я правильно понял из твоего ЖЖ, ты умеешь программно перейти на любое заданное место фильма.

Далее. Энди007 научил меня сохранять громкость в EEPROM, и извлекать её оттуда. Значит мы можем сохранить там же и текущее положение фильма.

Что осталось ? Поймать стоп или выключение плейера, и записать текущее положение в фильме. Сможешь ?

Posted by: Rvs on 24-05-2007, 12:34
vboroda

Толи я не догоняю, толи туплю до ужаса. Как я рассуждаю: 8032 выводит на экран свои, банальные 6-ь имён файлов и 1-н путь. И ему(8032) глубоко наплевать это имена с CD или FAT он тупо их выводит, причём что бы они отобразились они должны располагаться в строго определенной структуре. Понятно, что с CD и FAT читают разные процедуры, так же понятно, что они могут использовать промежуточный буфер но финишем их работы будет та единственная структура. Идём далее если ты знаешь две простые ф-ции которые вытягивают сами длинные имена из структуры и записывают в массив, где хранится короткое имя, после этого самого короткого имени значит дело сделано, это и есть финишный массив. А свистопляска с OSD 65 я так думаю это он следы путает, т.е. если кто то пересадит его правленый ARM то получит в лучшем случае короткие имена в худшем бред. А меняя вызов OSD 65 он как раз подстраивает 8032 на начало длинного имени. Оставлять короткое не имеет ни какого смысла кому оно нужно. Нам надо сделать проще затирать коротки длинными.

CODE:
Поймать стоп или выключение плейера, и записать текущее положение в фильме

так есть уже функция vEepromWriteLastMem(); Description : called from power down
она поидее это и делает если же нет то вручную дописать если в С рубишь глянь сам может скорее догонишь, а то я туплю что то!!!

Posted by: vboroda on 24-05-2007, 22:06
Rvs,

Вероятно ты таки прав. :hi: Потратил сегодня половину рабочего дня в поисках пути к vISOInit, начиная с vPlayerTimer и далее... Докопался в конце концов. Надо подумать, как подставить сюда вызов

vSendUopCmd(UOP_PLAY, SV_STOP_PLAY_CHK_LASTMEM, 0, 0);

Напрямую делать этого не хочу, хочу добавить проверку флага, чтобы resume проводился исключительно по желанию заказчика (т.е. при нажатии кнопки PLAY во время Loading). В случае по умолчанию - как и сейчас, идти в меню выбора файлов. Авось получится.

cax,

В какую прошивку ты бы хотел добавить ф-цию GOTO TIME? Если хочешь, могу взглянуть, авось чего и накопаю. Philips'овские прошивки все очень похожи, и там везде практически нужно делать один и тот же патч (из трех частей). Как я понимаю, у тебя прошивки других производителей, возможно и 8032 код совершенно другой, может быть даже другого, предыдущего поколения. Но взглянуть можно.

Posted by: vboroda on 24-05-2007, 22:26
Rvs,

QUOTE:
Как я рассуждаю: 8032 выводит на экран свои, банальные 6-ь имён файлов и 1-н путь. И ему(8032) глубоко наплевать это имена с CD или FAT он тупо их выводит, причём что бы они отобразились они должны располагаться в строго определенной структуре. Понятно, что с CD и FAT читают разные процедуры, так же понятно, что они могут использовать промежуточный буфер но финишем их работы будет та единственная структура. Идём далее если ты знаешь две простые ф-ции которые вытягивают сами длинные имена из структуры и записывают в массив, где хранится короткое имя, после этого самого короткого имени значит дело сделано, это и есть финишный массив. А свистопляска с OSD 65 я так думаю это он следы путает, т.е. если кто то пересадит его правленый ARM то получит в лучшем случае короткие имена в худшем бред. А меняя вызов OSD 65 он как раз подстраивает 8032 на начало длинного имени. Оставлять короткое не имеет ни какого смысла кому оно нужно. Нам надо сделать проще затирать коротки длинными.

И опять я не отрицаю, что ты прав. Просто NA в тех немногих крохах информации, которые он бросил любителям, пишет, что переписывать кототкое имя длинным в функциях, занимающихся чтением FAT, нельзя, т.к. по многим причинам файлы с "длинными именами" проигрываться после подмены не будут (возможно есть еще и другая ф-ция, которая ищет файл по имени, и она-то и не умеет искать по длинному имени?). В общем, я просто не знаю настоящей причины, но уверен, что если бы можно было элементарно подставить длинные имена на место коротких, NA это бы сделал, и не возился бы с OSD 65. Я не думаю, что ему есть какой-то смысл заметать следы таким жутким образом (ты попробуй, почитай его OSD 65 код!), даже если ему очень хочется, чтобы длинные имена на USB были его эксклюзивом.

Я не изучал File Browser в исходниках 8032 подробно, поэтому не буду утверждать, что я прав. Но из того, что я просматривал, мне показалось, что ARM по запросу 8032 просто пишет в SDRAM какие-то 6 (в моем случае 4) поинтеров к строкам, и их-то 8032 и воспринимает как имена файлов. Если так, то совершенно неважно, куда эти пойнтеры указывают - м.б. в массив идущих подряд имен файлов, как в случае ISO диска, а может быть на буфера в каком-то списке структур. В принципе, для 8032 это совершенно безразлично.

Может быть, если удастся что-то сделать с ISO Resume, попробую изучить проблему длинных имен более подробно.

Posted by: vboroda on 25-05-2007, 04:16
Ну и опять я отвечаю сам себе. Сделал патч, чтобы вызывать
CODE
vSendUopCmd(UOP_PLAY, SV_STOP_PLAY_CHK_LASTMEM, 0, 0);
в случае запроса Resume (по флагу в SI_LAST_MEM):

CODE
if (bSharedInfo(SI_LAST_MEM) == EV_ON)
{
  vSendUopCmd(UOP_PLAY, SV_STOP_PLAY_CHK_LASTMEM, 0, 0);
}
else
{
  vISOFsMenuShow(FS_MENU_SHOW_ON);
}

Очевидно, вызывается в таком случае последний проигрывавшийся MPEG (но не MPEG4) :lol: , потому что у меня на экране появился бэкграунд файл-браузера, но без списка файлов (т.е. как бы не меню, но и не DivX фильм).

Вероятно, нужно каким-то образом при остановке запоминать файл и время, а при восстановлении инициализировать сначала список файлов, потом определенный файл, а потом уже точку в файле. И все это вручную. Ох... :fear2: В общем, боюсь, маленьким патчиком не отделаться, а большой мне делать не очень хочется.

Posted by: cax on 25-05-2007, 10:34
Я предлагал вещь более простую.
Уже находясь внутри проигрываемого файла, умеешь ли ты сделать GOTO ?? Если да, то просто добавь кнопку или пункт меню, который приведёт уже играемый файл в запомненную точку в нём. Оставь выбор файла пользователю. Это устроит практически всех.

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

Posted by: vboroda on 25-05-2007, 18:11
cax

QUOTE:
vSendUopCmd(UOP_TIME_PLAY, bHour, bMin, bSec);

Ты, как я понял, предлагаешь сделать что-то вроде BOOKMARK - закладки. Нажал кнопочку - запомнил. Нажал другую кнопочку - прыг на закладку. В принципе поддержка таких закладок (и даже не одной, а целого списка) в MTK плеерах существует, хотя в мою прошивку она, к сожалению, не откомпилирована.

Дело в том, что такое решение не многим лучше простой GOTO TIME, которая у меня уже есть. Т.е. от юзера требуется некое действие: в одном случае нажать кнопочку, в другом (моем) - запомнить время остановки. Прелесть готового решения для DVD/VCD в том, что юзеру делать ничего не нужно! Вот тебе пример. В плеере существует само-отключение после 20 минут в скрин-сэйвере. Зрительница поставила фильм на паузу, и пошла успокаивать проснувшегося ребенка. Если она в течение 20 минут не вернулась - плеер само-отключился. Что ей теперь делать? Если она смотрела DVD, то все совсем не страшно: при включении, когда появился экран Loading, она нажимает кнопку PLAY, и плеер переходит на то место, где она остановила фильм. А вот если она смотрела DivX программу, и при этом не запомнила время останова, то ей ничего не остается, как поставить фильм на быструю 32x перемотку. Что тоже, разумеется, не конец света...

В общем, чтобы решить такую проблему так, как мне хотелось бы, нужно запоминать последний проигрываемый в момент отключения файл + время HH MM SS - скажем, 4 байта.

В точке восстановления (которая мною уже идентифицирована) нужно было бы делать:
(0) восстановление меню и MPEG4 режима.
(1) прыжок на файл - пока не знаю, как.
(2) прыжок на время - знаю как.

Posted by: cax on 25-05-2007, 21:07
Похоже, я всё-таки плохо объяснил свою задумку.
Попробую ещё раз объяснить, как я вижу реализацию запоминания:

1) при нажатии на паузу/стоп/отключение запоминание времени - автоматическое.

2) Восстановление воспроизведения в запомненном месте: уже после начала воспроизведения файла, нажатием на клавишу или выбором пункта в меню.

В таком варианте не придётся выполнять пункты (0) и (1).

По поводу "моей" прошивки: разумеется, я буду рад встроить такую возможность во все свои плейеры, просто сейчас нет смысла разбрасываться, пока эта фича не реализована и не обкатана до конца у тебя на твоём аппарате.

Posted by: Rvs on 26-05-2007, 13:49
vboroda
QUOTE:
Я не изучал File Browser в исходниках 8032 подробно, поэтому не буду утверждать, что я прав. Но из того, что я просматривал, мне показалось, что ARM по запросу 8032 просто пишет в SDRAM какие-то 6 (в моем случае 4) поинтеров к строкам, и их-то 8032 и воспринимает как имена файлов. Если так, то совершенно неважно, куда эти пойнтеры указывают - м.б. в массив идущих подряд имен файлов, как в случае ISO диска, а может быть на буфера в каком-то списке структур. В принципе, для 8032 это совершенно безразлично.
Так на вскидку по адресу ShMem+ 022B , 022С, 022D, 022E лежит указатель на адрес названия папок. И ещё 4-е адреса на указатель начало структуры, что я показал выше. Согласен указатели могут указывать куда угодно, но 8032 вычисляет начало строк так:
CODE
#define FL_ITEM_FIELD(id)      (wSIItemPos(51, 1) + id * 16) = (0x0680+id*16)
wPos = FL_ITEM_FIELD(bItemIdx);
// - collect misc info
  bFType = bSharedInfo(wPos + 5);
  bLoByte(wIdx) = bSharedInfo(wPos + 6);
  bHiByte(wIdx) = bSharedInfo(wPos + 7);
  // - collect name info
  bLoByte(wLoWord(dwAddr)) = bSharedInfo(wPos);
  bHiByte(wLoWord(dwAddr)) = bSharedInfo(wPos + 1);
  bLoByte(wHiWord(dwAddr)) = bSharedInfo(wPos + 2);
  bHiByte(wHiWord(dwAddr)) = bSharedInfo(wPos + 3);
  bStrLen = bSharedInfo(wPos + 4);
т.е. через пресловутую структуру. А вот она уже указывает на начало каждой строки. Поэтому указатели могут указывать только на эту структуру. Причём я так понимаю место положение её низменно.
QUOTE:
Вероятно, нужно каким-то образом при остановке запоминать файл и время, а при восстановлении инициализировать сначала список файлов, потом определенный файл, а потом уже точку в файле. И все это вручную
Зачем вручную. Я когда бегло смотрел то нашёл функции, которые пишут всё это в память. Их надо разблокировать скомпилить прошивку и подставить к себе. Надо пробежаться по всем таким местам #ifdef ISO_LAST_MEM. Покопаюсь на выходных.

Posted by: vboroda on 26-05-2007, 19:13
QUOTE:
Зачем вручную. Я когда бегло смотрел то нашёл функции, которые пишут всё это в память. Их надо разблокировать скомпилить прошивку и подставить к себе. Надо пробежаться по всем таким местам #ifdef ISO_LAST_MEM. Покопаюсь на выходных.

Ну я пока накатал пару ф-ций на ассемблере (сохранить и восстановить с прыжком). Как cax посоветовал. Но еще не тестировал. Я не на 100% уверен, что ISO_LAST_MEM сделала бы все, что нам надо. Там еще дело в том, что меняются размеры массивов EEPROM SHADOW, боюсь, как бы это не подвинуло чего-нибудь. Надо разобраться, как это все работает, и сделать по аналогии, мне кажется.

Posted by: cax on 27-05-2007, 11:49
Вот очень сырое "руководство" по сохранению громкости, реализованное по наводке и под руководством Энди007 (из него легко понять как читать из/писать в EEPROM).

В чём его сырость ?

1) не описывается как найти свободную ячейку EEPROM
(вкратце: берём наугад некий адрес - я использовал от 0x55 до 0x99 - и проверяем по всей прошивке, нет ли для него вызовов PREF_GetChar. Если нет - возможно, что он не используется)

2) в 4 из 5 случаев у меня не было свободного места в нужном банке, и мне приходилось размещать дополнительный код в пустом месте другого банка, и, соответственно, использовать "межбанковский" вызов. Боюсь, что для читателей, знакомых лишь с hex-редактором, это будет сложно объяснить
(вкратце: вместо обычного 12 zz zz надо использовать 90 zz zz 02 kk kk, где kk kk - подпрограмма вызова кода по адресу zz zz в другом банке памяти)

Как всегда, описываю применительно к DVD Hyundai 3899 servo 02.09:

CODE
1) ищем последовательность BE FF 05 BF FF 02 D3 22, а когда найдём - движемся назад, пока не найдём начало функции, в которую попали.

(для тех, кто в ассемблере ни бум-бум: как правило, подпрограмма заканчивается командой возврата с кодом 22. Сразу вслед за этим начинается другая подпрограмма).

[На Hyundai, двигаясь назад, мы найдём 22 по офсету 46CD7, значит начало подпрограммы - 6C D8 == NN NN.]

Теперь ищем цепочку 90 NN NN 02, и находим её несколько раз по офсетам ММММ, 1ММММ, 2ММММ и т.д. Запоминаем ММ ММ =  PREF_SetChar

[На Hyundai 90 6C D8 02 находится по адресам 041B, 1041B и т.д., значит MM MM = 04 1B = PREF_SetChar]

2) Ищем место, где задаётся громкость:
12 ?? ?? 7F ?? 7E ?? 12 pp pp 12 ?? ?? 7F ?? 12 qq qq 22

Записываем найденные
pp pp = PREF_GetChar
qq qq = Set_Volume

[На Hyundai по адресу 3F23F :
12 99 8C 7F 0E 7E 00 12 04 15 12 ED DB 7F 14 12 AA 98 22
т.е. 04 15 = PREF_GetChar, AA 98 = Set_Volume]

3) В том же банке ищем свободное место (скажем, мы его нашли по офсету 3F300)
Меняем в найденной цепочке 7F ?? 12 qq qq  на 7F 00 12 F3 00

4) Предположим, что свободная ячейка EEPROM имеет адрес rr = 0x99 (как её найти - отдельный разговор)

На свободном месте, найденном выше, размещаем такую подпрограмму:

7F rr rr 7E 00 12 pp pp 12 qq qq 22

[на Hyundai: 3F300: 7F 99 7E 00 12 04 15 12 AA 98 22]

5) Рассмотрим внимательно Set_Volume, найденный выше:
90 ss ss EF F0 E0 FF D3 94 14 40 05 74 14 F0 80 0B EF C3 94 00 50 05 E4 90 FB 30 F0 90 tt tt E0 54 3F

Запомним ss ss и tt tt = XRAM_VolumeLevel

[Hyundai: ss ss = FB 30, tt tt = XRAM_VolumeLevel = FD 2B]

Следующий кусок пустого места у нас есть, скажем, по адресу F310.

Заменим 90 tt tt на 12 F3 10, а на самом пустом месте по офсету 3F310 впишем

90 ss ss E0 FF EF FD 7F rr 7E 00 12 MM MM 90 tt tt 22

[на Hyundai: 90 FD 2B по офсету 3AAB4 меняем на 12 F3 10,
а по офсету 3F310 вписываем
90 FB 30 E0 FF EF FD 7F 99 7E 00 12 04 1B 90 FD 2B 22

Posted by: lill on 28-05-2007, 19:26
Люди, извиняюсь за вторжение в вашу высоконоучную дискуссию. Облазил весь e-net - похоже вы глубже всех зарылись в тему, если нет - подскажите где искать....
Аппарат BBK DV966S=DV516S. Проц MTK1389FE.
В общем-то притензий к аппарату по большому счёту нет, но главный глюк котрой BBK'ейщики не исправили за 3 года ( и теперь уже вряд ли исправят ) это то что все регулировки: громкость по каналам, эквалайзер, яркость, контрастность, насыщенность, навигация по меню и пр. происходят не плавно ( при длительном удержиании соответствующих кнопок на пульте ) а дискретно - когда чтобы изменить необходимый параметр, например на 10, - нужно десять раз нажать соответствующую кнопку. Задалбливает. Кнопки на пульту скоро до дыр продавятся. У знакомого 965-ый - так там такого глюка нет. Прошивка стоит последняя 966S-4A-427 с официального сайта BBK. Ни кто не сталкивался с таким глюком, не ковырял прошиву на эту тему? Брал пульт от 965-го всё тоже самое - значит проблема не в пульте. Может есть у кого какие мысли в какую сторону копать? .
Есть даже 966S-4A-0427-m1 патченная a-ha ( должны знать ) - но проблемма осталсь. Если надо могу приаттачить прошиву.
TIA

Posted by: cax on 29-05-2007, 00:52
Слабые попытки сделать "нажатие с удержанием" предпринимались на плейерах Пионер, но и там - только при пролистывании списка файлов. Если я не ошибаюсь, для этого в прошивке должна быть неактивированная поддержка "долгого нажатия", которую нужно включить и подвесить к ней нужную функцию.

В общем, я точными знаниями по сабжу не обладаю, а искать нужно, как всегда, если на русском - то в ixbt, а если на английском - то на Яху в группе mt13x9 и разных других форумах.

Posted by: vboroda on 29-05-2007, 00:52
cax

Прочитал я инструкцию, спасибо. :&#041; Если бы ты еще называл PREF_GetChar и PREF_PutChar их настоящими названиями bEepromReadByte и fgEepromWriteByte, я бы сразу понял, о чем речь. В общем, похоже что поиск "свободных ячеек" EEPROM осуществляется методом "научного тыка", или лучше сказать, наугад. :&#041;

QUOTE:
вкратце: берём наугад некий адрес - я использовал от 0x55 до 0x99 - и проверяем по всей прошивке, нет ли для него вызовов PREF_GetChar. Если нет - возможно, что он не используется.

Проверить какой-либо адрес на предмет существования вызовов на него PREF_GetChar, просто изучая дизассемблер прошивки, в принципе практически невозможно. Если почитать исходники, станет понятно - почему. Кроме того, что таких мест, где вызывается эта ф-ция (напрямую или через Bank Switch) - несколько сот, во многих местах она вызывается с параметрами, записанными в некоей таблице, в которой в принципе состоят ВСЕ ячейки LAST_MEMORY - от нуля и до последней. Это не значит, что все они используются в каждой прошивке, некоторые могут относиться к опциям, для конкретного железа ничего не значащим (караоке, например), но теоретически каждая из ячеек может использоваться, и на нее существует пусть непрямой, но вызов. Т.е. более правильным подходом в таком случае было бы просто попытаться сделать два дампа EEPROM - до и после того, как ты изменил ВСЕ возможные опции, а заодно и проиграл все возможные виды дисков - и посмотреть, значение каких ячеек не изменилось.

В общем, без кабеля я пока не знаю, как действовать. Но думаю, что можно писать я ячейки, следующие за EEPROM_END_POS, т.е. в моем случае где-то после адреса 0x20C в EEPROM. Там, как я понимаю - no man's land - ничего не значащие и не используемые ячейки. Для писания и читания в EEPROM напрямую (а не через Shadow, как PREF_...) можно использовать ф-ции:

BOOL fgWrite_EEPROMByteDirect(BYTE bId, BYTE bAddr, BYTE bData) и BOOL fgRead_EEPROMByteDirect(BYTE bDevice, BYTE bData_Addr, BYTE *pbData)

А вообще, твоя идея с resume мне понравилась, и я ее уже даже осуществил, хотя пока без сохранения и восстановления из EEPROM. Сделал [пока, в тестовом варианте] так:

(1) по нажатию IR_PAUSE (в дальнейшем будет также IR_STOP и IR_POWER) сохраняем в Shared Mem. текущее время.
(2) по нажатию кнопки IR_NEXT ( >|| ) если сохраненное время валидно, прыгаем на него, и затираем. Если сохраненное время затерто - отрабатываем кнопку по умолчанию.

Posted by: lill on 29-05-2007, 06:49
QUOTE (cax @ 29-05-2007, 00:52):
Слабые попытки сделать "нажатие с удержанием" предпринимались на плейерах Пионер, но и там - только при пролистывании списка файлов. Если я не ошибаюсь, для этого в прошивке должна быть неактивированная поддержка "долгого нажатия", которую нужно включить и подвесить к ней нужную функцию.
В общем, я точными знаниями по сабжу не обладаю, а искать нужно, как всегда, если на русском - то в ixbt, а если на английском - то на Яху в группе mt13x9 и разных других форумах.


Да на ixbt я завсегдатай ( оттуда и прошивка от a-ha ), на yahoo grooop тоже есть свой аккаунт - вот уже три года слежу и за cachirulo, mabreacer, Cherry и иже с ними. Но народ почему в основном упёрся в рюшечки типа фонты, картинки, заставки. Я понимаю - хозяин-барин и что эти задачи тоже требуют уйму времени - респект и уважуха им за это, но вот глюк о котором я писал почему-то ни кого не интересует хотя он куда больше доставляет неудобств чем кривые фонты. У самого нет столько времени чтобы с ноля драть прошивку идой - а зацепиться незачто. Ладно...- это крик души :&#040; Похоже готового решения не найти - предётся возится помаленьку самому. Тем более что чтобы не париться с ISO образами штатно установил в сабж на правой боковой панели разъём RJ-45 для низковольтного COM порт на MAX3232. Получилось аккуратно. Работает без проблем. Лей теперь что хочешь - былобы что.
Главное нет инфы в чём проблема - ведь в DV965S нет такого глюка! Что поменялось-то? Железо практически одинаковое.

Posted by: Rvs on 29-05-2007, 10:51
vboroda

QUOTE:
Сделал [пока, в тестовом варианте] так
Есть пару вопросов:
1. Как нашёл свободное место в Shared Mem?
2. Отобрази твою идею в исходнике, хочу тоже помозговать.

Posted by: Andy007 on 29-05-2007, 17:40
Просто так увеличить это значение - этого мало:&#041; Посмотри исходники вниманельнее - за границей максимального eeprom начинается зона сохранения положения на диске. Править надо далеко не в одном месте.

Posted by: vboroda on 29-05-2007, 21:48
Итак,
(1) Где найти свободные ячейки SHMEM. Смотрим исходники. На каждую SI группу отводится 32 байта. В некоторых группах занято почти все, в других - частично.

Я решил воспользоваться местом в SI_TIME_INFO_GRP (в исходниках - номер 18, в моей прошивке - 19). После 23 там ничего не используется (хотя насчет ARM я на 100% не уверен, но 8032 явно требует только первые 23 ячейки). Значит, остается 9 свободных ячеек. Мне требовалось 5 байт - 3 для времени и 2 для item ID.

(2) Как работает? Нашел (по исходникам, и далее, следуя за дизассемблером) ф-ции, которые выполняются при нажатии определенных кнопок:
IR_PAUSE: fgISOPauseKey()
IR_STOP: fgISOStopKey()
IR_POWER: fgCOMPowerKey()
IR_NEXT: fgISONextKey()

Каждая из этих ф-ций вызывает vSendUopCmd() для передачи команды ARM. Значит, мы можем сделать один патч для первых трех ф-ций, который сохранит все требуемые данные. Что-то вроде этого:

CODE
B1:F960             saveThePlayTimePatch:                   ; CODE XREF: fgISOPauseKey+4Bp
B1:F960 90 FE 5D              mov   DPTR, #XRAM_FE5D        ; Save the original params
B1:F963 EF                    mov   A, R7
B1:F964 F0                    movx  @DPTR, A
B1:F965 A3                    inc   DPTR
B1:F966 ED                    mov   A, R5
B1:F967 F0                    movx  @DPTR, A
B1:F968 A3                    inc   DPTR
B1:F969 EB                    mov   A, R3
B1:F96A F0                    movx  @DPTR, A
B1:F96B 90 FC BF              mov   DPTR, #XRAM_FCBF        ; _bPlayType
B1:F96E E0                    movx  A, @DPTR                ; If not ISO Play, skip
B1:F96F B4 03 4F              cjne  A, #3, saveThePlayTimePatch_EXIT
B1:F96F
B1:F972 7F 06                 mov   R7, #6
B1:F974 12 1C 9E              lcall B1_fgFlCheckStatus      ; If not playing MPEG - skip
B1:F974
B1:F977 50 48                 jnc   saveThePlayTimePatch_EXIT
B1:F977
B1:F979
B1:F979             B1_F979:
B1:F979 7F 60                 mov   R7, #0x60 ; '`'
B1:F97B 7E 02                 mov   R6, #2
B1:F97D 12 1B 96              lcall B1_BS_ARM_GetChar
B1:F97D
B1:F980 EF                    mov   A, R7
B1:F981 FD                    mov   R5, A
B1:F982 7F 77                 mov   R7, #0x77 ; 'w'
B1:F984 7E 02                 mov   R6, #2
B1:F986 12 1B A8              lcall B1_BS_ARM_PutChar       ; Save hrs
B1:F986
B1:F989 7F 61                 mov   R7, #0x61 ; 'a'
B1:F98B 7E 02                 mov   R6, #2
B1:F98D 12 1B 96              lcall B1_BS_ARM_GetChar
B1:F98D
B1:F990 EF                    mov   A, R7
B1:F991 FD                    mov   R5, A
B1:F992 7F 78                 mov   R7, #0x78 ; 'x'
B1:F994 7E 02                 mov   R6, #2
B1:F996 12 1B A8              lcall B1_BS_ARM_PutChar       ; Save min
B1:F996
B1:F999 7F 62                 mov   R7, #0x62 ; 'b'
B1:F99B 7E 02                 mov   R6, #2
B1:F99D 12 1B 96              lcall B1_BS_ARM_GetChar
B1:F99D
B1:F9A0 EF                    mov   A, R7
B1:F9A1 FD                    mov   R5, A
B1:F9A2 7F 79                 mov   R7, #0x79 ; 'y'
B1:F9A4 7E 02                 mov   R6, #2
B1:F9A6 12 1B A8              lcall B1_BS_ARM_PutChar       ; Save sec
B1:F9A6
B1:F9A9 90 FD 62              mov   DPTR, #XRAM_FD62        ; _wCurrItem
B1:F9AC E0                    movx  A, @DPTR
B1:F9AD FD                    mov   R5, A
B1:F9AE 7F 7A                 mov   R7, #0x7A
B1:F9B0 7E 02                 mov   R6, #2
B1:F9B2 12 1B A8              lcall B1_BS_ARM_PutChar
B1:F9B2
B1:F9B5 90 FD 63              mov   DPTR, #(XRAM_FD62+1)    ; _wCurrItem
B1:F9B8 E0                    movx  A, @DPTR
B1:F9B9 FD                    mov   R5, A
B1:F9BA 7F 7B                 mov   R7, #0x7B
B1:F9BC 7E 02                 mov   R6, #2
B1:F9BE 12 1B A8              lcall B1_BS_ARM_PutChar
B1:F9BE
B1:F9C1
B1:F9C1             saveThePlayTimePatch_EXIT:              ; CODE XREF: saveThePlayTimePatch+Fj
B1:F9C1                                                     ; saveThePlayTimePatch+17j
B1:F9C1 90 FE 5D              mov   DPTR, #XRAM_FE5D        ; Call the function now
B1:F9C4 E0                    movx  A, @DPTR
B1:F9C5 FF                    mov   R7, A
B1:F9C6 A3                    inc   DPTR
B1:F9C7 E0                    movx  A, @DPTR
B1:F9C8 FD                    mov   R5, A
B1:F9C9 A3                    inc   DPTR
B1:F9CA E0                    movx  A, @DPTR
B1:F9CB FB                    mov   R3, A
B1:F9CC 12 1B 9C              lcall B1_vSendUopCmd
B1:F9CC
B1:F9CF 22                    ret
B1:F9CF
B1:F9CF             ; End of function saveThePlayTimePatch

И функция для восстановления (записываем вызов этой ф-ции в хэндлер IR_NEXT):

CODE
B1:F9D0             isoResumePatch:                         ; CODE XREF: fgISONextKey+9p
B1:F9D0 90 FE 5D              mov   DPTR, #XRAM_FE5D        ; Save the original params for vSendUopCmd
B1:F9D3 EF                    mov   A, R7
B1:F9D4 F0                    movx  @DPTR, A
B1:F9D5 A3                    inc   DPTR
B1:F9D6 ED                    mov   A, R5
B1:F9D7 F0                    movx  @DPTR, A
B1:F9D8 A3                    inc   DPTR
B1:F9D9 EB                    mov   A, R3
B1:F9DA F0                    movx  @DPTR, A
B1:F9DB 7F 77                 mov   R7, #0x77 ; 'w'
B1:F9DD 7E 02                 mov   R6, #2
B1:F9DF 12 1B 96              lcall B1_BS_ARM_GetChar       ; Get saved hrs
B1:F9DF
B1:F9E2 EF                    mov   A, R7
B1:F9E3 64 FF                 xrl   A, #0xFF                ; Check if not 0xFF
B1:F9E5 60 63                 jz    isoResumePatch_EXIT_J1
B1:F9E5
B1:F9E7 90 FE 60              mov   DPTR, #XRAM_FE60        ; Save hrs - first in BCD, then Binary
B1:F9EA EF                    mov   A, R7
B1:F9EB F0                    movx  @DPTR, A
B1:F9EC 12 1B 5A              lcall B1_bBCDToHEX
B1:F9EC
B1:F9EF 90 FE 63              mov   DPTR, #XRAM_FE63
B1:F9F2 EF                    mov   A, R7
B1:F9F3 F0                    movx  @DPTR, A
B1:F9F4 7F 7A                 mov   R7, #0x7A
B1:F9F6 7E 02                 mov   R6, #2
B1:F9F8 12 1B 96              lcall B1_BS_ARM_GetChar       ; Get the Item Ix and compare with the current
B1:F9F8
B1:F9FB 90 FD 62              mov   DPTR, #XRAM_FD62        ; _wCurrItem
B1:F9FE E0                    movx  A, @DPTR
B1:F9FF 6F                    xrl   A, R7
B1:FA00 70 00                 jnz   B1_FA02   ; This logic not ready yet
B1:FA02
B1:FA02             B1_FA02:
B1:FA02 7F 7B                 mov   R7, #0x7B
B1:FA04 7E 02                 mov   R6, #2
B1:FA06 12 1B 96              lcall B1_BS_ARM_GetChar
B1:FA06
B1:FA09 90 FD 63              mov   DPTR, #(XRAM_FD62+1)    ; _wCurrItem
B1:FA0C E0                    movx  A, @DPTR
B1:FA0D 6F                    xrl   A, R7
B1:FA0E 70 00                 jnz   B1_FA10   ; This logic not ready yet
B1:FA10
B1:FA10             B1_FA10:
B1:FA10 7F 78                 mov   R7, #0x78 ; 'x'
B1:FA12 7E 02                 mov   R6, #2
B1:FA14 12 1B 96              lcall B1_BS_ARM_GetChar
B1:FA14
B1:FA17 90 FE 61              mov   DPTR, #(XRAM_FE60+1)    ; Save min - first in BCD, then Binary
B1:FA1A EF                    mov   A, R7
B1:FA1B F0                    movx  @DPTR, A
B1:FA1C 12 1B 5A              lcall B1_bBCDToHEX
B1:FA1C
B1:FA1F 90 FE 64              mov   DPTR, #(XRAM_FE63+1)
B1:FA22 EF                    mov   A, R7
B1:FA23 F0                    movx  @DPTR, A
B1:FA24 7F 79                 mov   R7, #0x79 ; 'y'
B1:FA26 7E 02                 mov   R6, #2
B1:FA28 12 1B 96              lcall B1_BS_ARM_GetChar
B1:FA28
B1:FA2B 90 FE 62              mov   DPTR, #(XRAM_FE60+2)    ; Save sec - first in BCD, then Binary
B1:FA2E EF                    mov   A, R7
B1:FA2F F0                    movx  @DPTR, A
B1:FA30 12 1B 5A              lcall B1_bBCDToHEX
B1:FA30
B1:FA33 90 FE 65              mov   DPTR, #(XRAM_FE63+2)
B1:FA36 EF                    mov   A, R7
B1:FA37 F0                    movx  @DPTR, A
B1:FA38 90 FE 63              mov   DPTR, #XRAM_FE63        ; Check that the time is valid for this movie
B1:FA3B E0                    movx  A, @DPTR
B1:FA3C FF                    mov   R7, A
B1:FA3D A3                    inc   DPTR
B1:FA3E E0                    movx  A, @DPTR
B1:FA3F FD                    mov   R5, A
B1:FA40 A3                    inc   DPTR
B1:FA41 E0                    movx  A, @DPTR
B1:FA42 FB                    mov   R3, A
B1:FA43 12 BF DA              lcall fgCheckItemTimeValid
B1:FA43
B1:FA46 40 04                 jc    isoResumePatch_DOIT
B1:FA46
B1:FA48 00                    nop
B1:FA49 00                    nop
B1:FA49
B1:FA4A             ; Just a temp step for the short jump
B1:FA4A             isoResumePatch_EXIT_J1:                 ; CODE XREF: isoResumePatch+15j
B1:FA4A 80 32                 sjmp  isoResumePatch_EXIT
B1:FA4A
B1:FA4C             ; ---------------------------------------------------------------------------
B1:FA4C
B1:FA4C             isoResumePatch_DOIT:                    ; CODE XREF: isoResumePatch+76j
B1:FA4C 90 FE 60              mov   DPTR, #XRAM_FE60        ; Display the time before jump
B1:FA4F E0                    movx  A, @DPTR
B1:FA50 FF                    mov   R7, A
B1:FA51 A3                    inc   DPTR
B1:FA52 E0                    movx  A, @DPTR
B1:FA53 FD                    mov   R5, A
B1:FA54 A3                    inc   DPTR
B1:FA55 E0                    movx  A, @DPTR
B1:FA56 FB                    mov   R3, A
B1:FA57 90 FB A0              mov   DPTR, #XRAM_FBA0
B1:FA5A 74 06                 mov   A, #6
B1:FA5C F0                    movx  @DPTR, A
B1:FA5D 12 1D 22              lcall B1_vOsdShowIsoTimeRemain2
B1:FA5D
B1:FA60 90 FE 5D              mov   DPTR, #XRAM_FE5D        ; Set up the params for vSendUopCmd
B1:FA63 74 23                 mov   A, #0x23 ; '#'
B1:FA65 F0                    movx  @DPTR, A
B1:FA66 90 FE 63              mov   DPTR, #XRAM_FE63
B1:FA69 E0                    movx  A, @DPTR
B1:FA6A 90 FE 5E              mov   DPTR, #(XRAM_FE5D+1)
B1:FA6D F0                    movx  @DPTR, A
B1:FA6E 90 FE 64              mov   DPTR, #(XRAM_FE63+1)
B1:FA71 E0                    movx  A, @DPTR
B1:FA72 90 FE 5F              mov   DPTR, #(XRAM_FE5D+2)
B1:FA75 F0                    movx  @DPTR, A
B1:FA76 90 FE 65              mov   DPTR, #(XRAM_FE63+2)
B1:FA79 E0                    movx  A, @DPTR
B1:FA7A 90 FB F5              mov   DPTR, #XRAM_FBF5
B1:FA7D F0                    movx  @DPTR, A
B1:FA7D
B1:FA7E
B1:FA7E             isoResumePatch_EXIT:                    ; CODE XREF: isoResumePatch:isoResumePatch_EXIT_J1j
B1:FA7E 7D FF                 mov   R5, #0xFF               ; Invalidate the jump
B1:FA80 7F 77                 mov   R7, #0x77 ; 'w'
B1:FA82 7E 02                 mov   R6, #2
B1:FA84 12 1B A8              lcall B1_BS_ARM_PutChar
B1:FA84
B1:FA87 90 FE 5D              mov   DPTR, #0xFE5D           ; Execute vSendUopCmd
B1:FA8A E0                    movx  A, @DPTR
B1:FA8B FF                    mov   R7, A
B1:FA8C A3                    inc   DPTR
B1:FA8D E0                    movx  A, @DPTR
B1:FA8E FD                    mov   R5, A
B1:FA8F A3                    inc   DPTR
B1:FA90 E0                    movx  A, @DPTR
B1:FA91 FB                    mov   R3, A
B1:FA92 12 1B 9C              lcall B1_vSendUopCmd
B1:FA92
B1:FA95 22                    ret
B1:FA95
B1:FA95             ; End of function isoResumePatch
B1:FA95

Я посмотрел в IDA, какой самый высокий XRAM адрес используется в коде, и для временных переменных занял адреса чуть выше самых высоких:

CODE
;-------------------------------------------------------------------
;
; XRAM_FE5D..XRAM_FE5F - save orig function params
; XRAM_FE60..XRAM_FE62 - BCD time to jump to
; XRAM_FE63..XRAM_FE65 - Binary time to jump to
;
;-------------------------------------------------------------------

(3)
QUOTE:
за границей максимального eeprom начинается зона сохранения положения на диске. Править надо далеко не в одном месте.

Ну, а за зоной сохранения уже ничего не начинается (кажется). :&#041; Т.е. то, куда пишет vEepromWriteLastMemList, и есть самый конец полезной части EEPROM. В моем случае это 0х20C. Ну хорошо, теоретически там может быть еще MAGIC2 - пропустим еще несколько байт для верности. Остальное, вероятно, не принадлежит никому? Берем простые ф-ции vEepromWriteLastMemList и fgEepromLoadLastMemList, и моделируем на их основе:

vEepromSaveShMem (WORD eAddr, WORD shAddr, BYTE len)
и
fgEepromLoadShMem (WORD eAddr, WORD shAddr, BYTE len)

Возможно я ошибаюсь, и так делать нельзя. Я еще не закончил кодировать ассемблер, и тем более - не тестировал. :&#041;

Самое поганое, однако, в том, что даже если я доваяю свой патч, и он будет у меня работать, переносить его на другие прошивки без очень хорошего знания и изучения соответствия между исходниками и реальной имплементацией будет архисложно. Я, разумеется, пока все делаю для Филипс 5960/37, прошивку которого я почти полностью проследил, но даже перенос на почти идентичный 5960/12 будет не совсем тривиален. :&#040;

Posted by: cax on 30-05-2007, 15:10
vboroda: теперь ты можешь предлагать свои услуги продавцам DVD, которые захотят продвигать на рынке аппараты с более продвинутым функционалом, чем у конкурентов.

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

Posted by: Andy007 on 30-05-2007, 16:52
У NA есть исходники для xoro, medion и для cyberhome. Так что сравнивать в бинарном виде изменения - бесполезно.

Не делится потому что подписывал кучу NDA.


Posted by: vboroda on 30-05-2007, 17:18
QUOTE (cax @ 30-05-2007, 12:10):
vboroda: теперь ты можешь предлагать свои услуги продавцам DVD, которые захотят продвигать на рынке аппараты с более продвинутым функционалом, чем у конкурентов.

Поскольку сделать подобную штуку нетривиально даже тем, кто владеет ассемблером, то и все карты тебе в руки.
Ты знаешь, со мной уже один продавец попытался связаться. Получил от него 2 мэйла. Не понимаю, что, собственно, он хочет мне предложить. :rolleyes: Перестать публиковать решения задач, и начать их продавать за какие-нибудь копейки? Сомневаюсь, что в этом бизнесе я смог бы заработать существенные деньги, не напрягаясь. Да и хобби уже тогда будет не хобби, а работой. Но работа у меня, слава Б-гу, пока есть, и вполне прилично оплачиваемая.

Меня немного раздражает другой аспект этой деятельности: постоянные просьбы что-то сделать. У кого-то похожая прошивка, кому-то хочется, чтобы плеер делал то-то и то-то, третьему срочно требуется, чтобы я поменял в прошивке шрифт. Каждая из этих просьб в отдельности меня бы не затруднила, но когда просьбы поступают с частотой 3 в день... А запортовать мою, скажем, GOTO фичу на похожий плеер Philps 5980 занимает часа три... :fu: У меня ведь еще и основная работа имеется, и дети с женой дома требуют внимания.

Posted by: vboroda on 30-05-2007, 17:37
Кстати, сохранение в EEPROM (и восстановление) работает. Оттестировал, проблем не увидел. Если вы не возражаете, могу привести листинг ф-ций сохранения и восстановления с комментариями. В принципе, обе процедуры вполне портабельные: нужно только заменить XRAM адреса на те, которые можно использовать в вашей прошивке, и, разумеется, поправить все вызовы других функций (морока еще та).

В терминах языка С, параметры такие:
void vEepromSaveShMem (WORD eAddr, WORD shAddr, BYTE len);
BOOL fgEepromLoadShMem (WORD eAddr, WORD shAddr, BYTE len);

Я в своей прошивке вызываю их примерно так:

CODE
B5:F024             isoResumeLoadEepromPatch:               ; CODE XREF: fgEepromLoadLastMemListp
B5:F024 7E 02                 mov   R6, #2
B5:F026 7F 18                 mov   R7, #0x18
B5:F028 7C 02                 mov   R4, #2
B5:F02A 7D 77                 mov   R5, #0x77 ; 'w'
B5:F02C 7B 05                 mov   R3, #5
B5:F02E 90 EF 60              mov   DPTR, #fgEepromLoadShMem ; fgEepromLoadShMem (WORD eAddr, WORD shAddr, BYTE len)
B5:F02E                                                     ; R6R7 eAddr
B5:F02E                                                     ; R4R5 shAddr
B5:F02E                                                     ; R3   len
B5:F02E                                                     ;
B5:F02E                                                     ; XRAM_FE66              BYTE bIdCnt;
B5:F02E                                                     ; XRAM_FE67              BYTE bAddrCnt;
B5:F02E                                                     ; XRAM_FE68..XRAM_FE69   WORD wSize
B5:F02E                                                     ; XRAM_FE6A..XRAM_FE6B   WORD shBase
B5:F02E                                                     ; XRAM_FE6C              BYTE bData
B5:F031 12 18 EF              lcall B5_Bank_5
B5:F031
B5:F034 D2 61                 setb  RAM_2C.1                ; Now load the pointer (recover from patch)
B5:F036 90 FB 0C              mov   DPTR, #XRAM_FB0C
B5:F039 22                    ret
B5:F039
B5:F039             ; End of function isoResumeLoadEepromPatch

Таким образом, предложенная cax фича полностью реализована. Ну или почти полностью, т.к. я все еще пытаюсь придумать наиболее оптимальный вариант возобновления игры (сейчас я просто тупо запоминаю точку при останове, а при нажатии >>|, если есть запомненная точка, прыгаю на нее, и затираю. Я просто не уверен, что это не будет раздражать пользователя.)

Posted by: cax on 30-05-2007, 17:47
Если у есть возможность сбросить память (скажем, в Пионере первое нажатие на "стоп" приостанавливает вопроизведение, а второе - останавливает совсем), то раздражать не должно.

Лично я бы добавил в меню пункт "Resume", но и с >>| тоже неплохо, как мне кажется. Проверь только, что это не мешает работе обычных DVD.

Posted by: vboroda on 30-05-2007, 18:09
QUOTE (Andy007 @ 30-05-2007, 13:52):
У NA есть исходники для xoro, medion и для cyberhome. Так что сравнивать в бинарном виде изменения - бесполезно.
Исходники конкретных прошивок? Конечно, только 8032? Его ARM патчи явно не скомпиллированы с исходниками, хотя, судя по отсутствию явной логичности ассемблера, похоже, что он пишет их нa С, компиллирует каким-то THUMB компиллятором, а потом подправляет для вставки в прошивку.

Я на 99% уверен, что исходников ARM нет ни у кого, только в Mediatek. Иначе наши китайские друзья уже выложили бы их в открытый доступ.

Если у человека есть исходники конкретных прошивок, пусть в пределах 8032 кода, т.е. build environment, то сама по себе деятельность уже совершенно выходит из разряда хобби и хакинга. :music: Если бы я мог просто взять и откомпиллировать мою прошивку, я бы туда столько новых возможностей напихал...

Вопрос только в том, почему прошивки NA не распространяют сами производители устройств? Если они подрядили его улучшать их прошивки, почему бы им не рекламировать свои устройства, как улучшенные по методу NA? :actu:

Posted by: Rvs on 30-05-2007, 18:25
vboroda

Отлично!!! Даже очень!!! :punk:
есть вопрос:

в ф-ях
void vEepromSaveShMem (WORD eAddr, WORD shAddr, BYTE len);
BOOL fgEepromLoadShMem (WORD eAddr, WORD shAddr, BYTE len);

1. ты одновременно сохраняешь и в EEPROM и в ShMem?
2. XRAM_FE66 BYTE bIdCnt
XRAM_FE67 BYTE bAddrCnt и т.д. это то что функция возвращает/передаёт? и что оно означает?

не могу понять как это всё вяжеться с saveThePlayTimePatch, а так всё понятно и не сложно.

Posted by: vboroda on 30-05-2007, 20:01
Rvs,

В ShMem я сохраняю с помощью обычных ф-ций, ранее известных как ARM_PutChar/ARM_GetChar. Новые ф-ции берут len байтов по Shared Memory адресу shAddr, и запихивают их в EEPROM по адресу eAddr. И наоборот. :&#041;

XRAM_ ссылки используются в кач-ве локальных переменных функций. Я передаю параметры в ф-ции только через R6R7, R4R5 и R3.

Извините за длиннющий листинг, но я все-таки приведу здесь его ради иллюстрации:

CODE
B5:EED0             ; --------------- S U B R O U T I N E ---------------------------------------
B5:EED0
B5:EED0             ; vEepromSaveShMem (WORD eAddr, WORD shAddr, BYTE len)
B5:EED0             ;
B5:EED0             ; R6R7 eAddr
B5:EED0             ; R4R5 shAddr
B5:EED0             ; R3   len
B5:EED0             ; XRAM_FE66              BYTE bIdCnt;
B5:EED0             ; XRAM_FE67              BYTE bAddrCnt;
B5:EED0             ; XRAM_FE68..XRAM_FE69   WORD wSize
B5:EED0             ; XRAM_FE6A..XRAM_FE6B   WORD shBase
B5:EED0
B5:EED0             vEepromSaveShMem:                       ; DATA XREF: isoResumeSaveEepromPatch+Ao
B5:EED0 1B                    dec   R3
B5:EED1 90 FE 69              mov   DPTR, #(XRAM_FE68+1)    ; Get the EEPROM ptr to the end of copy
B5:EED4 EF                    mov   A, R7
B5:EED5 2B                    add   A, R3
B5:EED6 F0                    movx  @DPTR, A
B5:EED7 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EEDA EE                    mov   A, R6
B5:EEDB 34 00                 addc  A, #0
B5:EEDD F0                    movx  @DPTR, A
B5:EEDE 90 FE 6A              mov   DPTR, #XRAM_FE6A        ; Save ShMem address
B5:EEE1 EC                    mov   A, R4
B5:EEE2 F0                    movx  @DPTR, A
B5:EEE3 A3                    inc   DPTR
B5:EEE4 ED                    mov   A, R5
B5:EEE5 F0                    movx  @DPTR, A
B5:EEE6 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EEE9 E0                    movx  A, @DPTR
B5:EEEA 90 FE 66              mov   DPTR, #XRAM_FE66
B5:EEED F0                    movx  @DPTR, A
B5:EEEE 90 FE 69              mov   DPTR, #(XRAM_FE68+1)
B5:EEF1 E0                    movx  A, @DPTR
B5:EEF2 90 FE 67              mov   DPTR, #XRAM_FE67        ; bAddrCnt = ((BYTE *)&wSize)[1];
B5:EEF5 F0                    movx  @DPTR, A
B5:EEF6 A3                    inc   DPTR                    ; wSize = len - 1;
B5:EEF7 E4                    clr   A
B5:EEF8 F0                    movx  @DPTR, A
B5:EEF9 A3                    inc   DPTR
B5:EEFA EB                    mov   A, R3
B5:EEFB F0                    movx  @DPTR, A
B5:EEFB
B5:EEFC
B5:EEFC             vEepromSaveShMem_LOOP:                  ; CODE XREF: vEepromSaveShMem+7Aj
B5:EEFC                                                     ; vEepromSaveShMem+82j
B5:EEFC 90 FE 6B              mov   DPTR, #(XRAM_FE6A+1)    ; Get the curr ShMem addr. (LSB)
B5:EEFF E0                    movx  A, @DPTR
B5:EF00 FF                    mov   R7, A
B5:EF01 90 FE 69              mov   DPTR, #(XRAM_FE68+1)
B5:EF04 E0                    movx  A, @DPTR
B5:EF05 2F                    add   A, R7
B5:EF06 FF                    mov   R7, A
B5:EF07 90 FE 6A              mov   DPTR, #XRAM_FE6A        ; Get the curr ShMem addr. (MSB)
B5:EF0A E0                    movx  A, @DPTR
B5:EF0B FE                    mov   R6, A
B5:EF0C 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EF0F E0                    movx  A, @DPTR
B5:EF10 3E                    addc  A, R6
B5:EF11 FE                    mov   R6, A
B5:EF12 12 1B 96              lcall B5_ARM_GetChar          ; Get the byte
B5:EF12
B5:EF15 CE                    xch   A, R6                   ; Write it into EEPROM
B5:EF16 EF                    mov   A, R7
B5:EF17 CE                    xch   A, R6
B5:EF18 90 FE 66              mov   DPTR, #XRAM_FE66
B5:EF1B 12 E8 5C              lcall fgWrite_EEPROMByteDirect_PTR
B5:EF1B
B5:EF1E 50 34                 jnc   vEepromSaveShMem_EXIT
B5:EF1E
B5:EF20 90 FE 68              mov   DPTR, #XRAM_FE68        ; if (wSize == 0) done
B5:EF23 E0                    movx  A, @DPTR
B5:EF24 70 02                 jnz   B5_EF28
B5:EF24
B5:EF26 A3                    inc   DPTR
B5:EF27 E0                    movx  A, @DPTR
B5:EF27
B5:EF28
B5:EF28             B5_EF28:                                ; CODE XREF: vEepromSaveShMem+54j
B5:EF28 70 03                 jnz   B5_EF2D
B5:EF28
B5:EF2A 02 EE 29              ljmp  fgWait_EEPROMAckOK
B5:EF2A
B5:EF2D             ; ---------------------------------------------------------------------------
B5:EF2D
B5:EF2D             B5_EF2D:                                ; CODE XREF: vEepromSaveShMem:B5_EF28j
B5:EF2D 90 FE 69              mov   DPTR, #(XRAM_FE68+1)    ; wSize --;
B5:EF30 E0                    movx  A, @DPTR
B5:EF31 24 FF                 add   A, #0xFF
B5:EF33 F0                    movx  @DPTR, A
B5:EF34 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EF37 E0                    movx  A, @DPTR
B5:EF38 34 FF                 addc  A, #0xFF
B5:EF3A F0                    movx  @DPTR, A
B5:EF3B 90 FE 67              mov   DPTR, #XRAM_FE67        ; if (bAddrCnt == 0)
B5:EF3B                                                     ; {
B5:EF3B                                                     ;   bAddrCnt = 0xff;
B5:EF3B                                                     ;   bIdCnt--;
B5:EF3B                                                     ; }
B5:EF3B                                                     ; else
B5:EF3B                                                     ; {
B5:EF3B                                                     ;   bAddrCnt--;
B5:EF3B                                                     ; }
B5:EF3E E0                    movx  A, @DPTR
B5:EF3F 70 0B                 jnz   B5_EF4C
B5:EF3F
B5:EF41 74 FF                 mov   A, #0xFF
B5:EF43 F0                    movx  @DPTR, A
B5:EF44 90 FE 66              mov   DPTR, #XRAM_FE66
B5:EF47 E0                    movx  A, @DPTR
B5:EF48 14                    dec   A
B5:EF49 F0                    movx  @DPTR, A
B5:EF4A 80 B0                 sjmp  vEepromSaveShMem_LOOP
B5:EF4A
B5:EF4C             ; ---------------------------------------------------------------------------
B5:EF4C
B5:EF4C             B5_EF4C:                                ; CODE XREF: vEepromSaveShMem+6Fj
B5:EF4C 90 FE 67              mov   DPTR, #XRAM_FE67
B5:EF4F E0                    movx  A, @DPTR
B5:EF50 14                    dec   A
B5:EF51 F0                    movx  @DPTR, A
B5:EF52 80 A8                 sjmp  vEepromSaveShMem_LOOP
B5:EF52
B5:EF54             ; ---------------------------------------------------------------------------
B5:EF54
B5:EF54             vEepromSaveShMem_EXIT:                  ; CODE XREF: vEepromSaveShMem+4Ej
B5:EF54 22                    ret
B5:EF54
B5:EF54             ; End of function vEepromSaveShMem
B5:EF54
B5:EF54             ; ---------------------------------------------------------------------------
B5:EF55 FF                    .byte 0xFF
B5:EF56 FF                    .byte 0xFF
B5:EF57 FF                    .byte 0xFF
B5:EF58 FF                    .byte 0xFF
B5:EF59 FF                    .byte 0xFF
B5:EF5A FF                    .byte 0xFF
B5:EF5B FF                    .byte 0xFF
B5:EF5C FF                    .byte 0xFF
B5:EF5D FF                    .byte 0xFF
B5:EF5E FF                    .byte 0xFF
B5:EF5F FF                    .byte 0xFF
B5:EF60
B5:EF60             ; --------------- S U B R O U T I N E ---------------------------------------
B5:EF60
B5:EF60             ; fgEepromLoadShMem (WORD eAddr, WORD shAddr, BYTE len)
B5:EF60             ; R6R7 eAddr
B5:EF60             ; R4R5 shAddr
B5:EF60             ; R3   len
B5:EF60             ;
B5:EF60             ; XRAM_FE66              BYTE bIdCnt;
B5:EF60             ; XRAM_FE67              BYTE bAddrCnt;
B5:EF60             ; XRAM_FE68..XRAM_FE69   WORD wSize
B5:EF60             ; XRAM_FE6A..XRAM_FE6B   WORD shBase
B5:EF60             ; XRAM_FE6C              BYTE bData
B5:EF60
B5:EF60             fgEepromLoadShMem:                      ; DATA XREF: isoResumeLoadEepromPatch+Ao
B5:EF60 D2 61                 setb  RAM_2C.1
B5:EF62 1B                    dec   R3
B5:EF63 90 FE 69              mov   DPTR, #(XRAM_FE68+1)    ; Get the EEPROM PTR to the End of Copy
B5:EF66 EF                    mov   A, R7
B5:EF67 2B                    add   A, R3
B5:EF68 F0                    movx  @DPTR, A
B5:EF69 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EF6C EE                    mov   A, R6
B5:EF6D 34 00                 addc  A, #0
B5:EF6F F0                    movx  @DPTR, A
B5:EF70 90 FE 6A              mov   DPTR, #XRAM_FE6A        ; Save ShMem base
B5:EF73 EC                    mov   A, R4
B5:EF74 F0                    movx  @DPTR, A
B5:EF75 A3                    inc   DPTR
B5:EF76 ED                    mov   A, R5
B5:EF77 F0                    movx  @DPTR, A
B5:EF78 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EF7B E0                    movx  A, @DPTR
B5:EF7C 90 FE 66              mov   DPTR, #XRAM_FE66        ; bIdCnt = ((BYTE *)&wSize)[0];
B5:EF7F F0                    movx  @DPTR, A
B5:EF80 90 FE 69              mov   DPTR, #(XRAM_FE68+1)
B5:EF83 E0                    movx  A, @DPTR
B5:EF84 90 FE 67              mov   DPTR, #XRAM_FE67        ; bAddrCnt = ((BYTE *)&wSize)[1];
B5:EF87 F0                    movx  @DPTR, A
B5:EF88 A3                    inc   DPTR                    ; wSize = len - 1;
B5:EF89 E4                    clr   A
B5:EF8A F0                    movx  @DPTR, A
B5:EF8B A3                    inc   DPTR
B5:EF8C EB                    mov   A, R3
B5:EF8D F0                    movx  @DPTR, A
B5:EF8D
B5:EF8E
B5:EF8E             fgEepromLoadShMem_LOOP:                 ; CODE XREF: fgEepromLoadShMem+96j
B5:EF8E                                                     ; fgEepromLoadShMem+9Ej
B5:EF8E 90 FE 66              mov   DPTR, #XRAM_FE66
B5:EF91 E0                    movx  A, @DPTR
B5:EF92 24 50                 add   A, #0x50 ; 'P'
B5:EF94 FF                    mov   R7, A
B5:EF95 A3                    inc   DPTR
B5:EF96 E0                    movx  A, @DPTR
B5:EF97 FD                    mov   R5, A
B5:EF98 90 FB 70              mov   DPTR, #XRAM_FB70
B5:EF9B 74 01                 mov   A, #1
B5:EF9D F0                    movx  @DPTR, A
B5:EF9E A3                    inc   DPTR
B5:EF9F 74 FE                 mov   A, #0xFE ; '¦'
B5:EFA1 F0                    movx  @DPTR, A
B5:EFA2 A3                    inc   DPTR
B5:EFA3 74 6C                 mov   A, #0x6C ; 'l'
B5:EFA5 F0                    movx  @DPTR, A
B5:EFA6 7B 01                 mov   R3, #1
B5:EFA8 12 E6 A7              lcall fgI2CByteRead           ; BOOL fgI2CByteRead(BYTE bDevice, BYTE bData_Addr, BYTE *pbData)
B5:EFA8
B5:EFAB 40 04                 jc    B5_EFB1
B5:EFAB
B5:EFAD C2 61                 clr   RAM_2C.1
B5:EFAF 80 4F                 sjmp  fgEepromLoadShMem_EXIT
B5:EFAF
B5:EFB1             ; ---------------------------------------------------------------------------
B5:EFB1
B5:EFB1             B5_EFB1:                                ; CODE XREF: fgEepromLoadShMem+4Bj
B5:EFB1 90 FE 6B              mov   DPTR, #(XRAM_FE6A+1)    ; Calc. the curr. ShMem addr. (LSB)
B5:EFB4 E0                    movx  A, @DPTR
B5:EFB5 FF                    mov   R7, A
B5:EFB6 90 FE 69              mov   DPTR, #(XRAM_FE68+1)
B5:EFB9 E0                    movx  A, @DPTR
B5:EFBA 2F                    add   A, R7
B5:EFBB FF                    mov   R7, A
B5:EFBC 90 FE 6A              mov   DPTR, #XRAM_FE6A        ; Calc. the curr. ShMem addr. (MSB)
B5:EFBF E0                    movx  A, @DPTR
B5:EFC0 FE                    mov   R6, A
B5:EFC1 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EFC4 E0                    movx  A, @DPTR
B5:EFC5 3E                    addc  A, R6
B5:EFC6 FE                    mov   R6, A
B5:EFC7 90 FE 6C              mov   DPTR, #XRAM_FE6C
B5:EFCA E0                    movx  A, @DPTR
B5:EFCB FD                    mov   R5, A
B5:EFCC 12 1B A8              lcall B5_ARM_PutChar          ; Write bData to ShMem
B5:EFCC
B5:EFCF 90 FE 68              mov   DPTR, #XRAM_FE68        ; if (wSize == 0) break;
B5:EFD2 E0                    movx  A, @DPTR
B5:EFD3 70 02                 jnz   B5_EFD7
B5:EFD3
B5:EFD5 A3                    inc   DPTR
B5:EFD6 E0                    movx  A, @DPTR
B5:EFD6
B5:EFD7
B5:EFD7             B5_EFD7:                                ; CODE XREF: fgEepromLoadShMem+73j
B5:EFD7 60 27                 jz    fgEepromLoadShMem_EXIT
B5:EFD7
B5:EFD9 90 FE 69              mov   DPTR, #(XRAM_FE68+1)    ; wSize--;
B5:EFDC E0                    movx  A, @DPTR
B5:EFDD 24 FF                 add   A, #0xFF
B5:EFDF F0                    movx  @DPTR, A
B5:EFE0 90 FE 68              mov   DPTR, #XRAM_FE68
B5:EFE3 E0                    movx  A, @DPTR
B5:EFE4 34 FF                 addc  A, #0xFF
B5:EFE6 F0                    movx  @DPTR, A
B5:EFE7 90 FE 67              mov   DPTR, #XRAM_FE67        ; if (bAddrCnt == 0)
B5:EFE7                                                     ; {
B5:EFE7                                                     ;   bAddrCnt = 0xff;
B5:EFE7                                                     ;   bIdCnt--;
B5:EFE7                                                     ; }
B5:EFE7                                                     ; else
B5:EFE7                                                     ; {
B5:EFE7                                                     ;   bAddrCnt--;
B5:EFE7                                                     ; }
B5:EFEA E0                    movx  A, @DPTR
B5:EFEB 70 0B                 jnz   B5_EFF8
B5:EFEB
B5:EFED 74 FF                 mov   A, #0xFF
B5:EFEF F0                    movx  @DPTR, A
B5:EFF0 90 FE 66              mov   DPTR, #XRAM_FE66
B5:EFF3 E0                    movx  A, @DPTR
B5:EFF4 14                    dec   A
B5:EFF5 F0                    movx  @DPTR, A
B5:EFF6 80 96                 sjmp  fgEepromLoadShMem_LOOP
B5:EFF6
B5:EFF8             ; ---------------------------------------------------------------------------
B5:EFF8
B5:EFF8             B5_EFF8:                                ; CODE XREF: fgEepromLoadShMem+8Bj
B5:EFF8 90 FE 67              mov   DPTR, #XRAM_FE67
B5:EFFB E0                    movx  A, @DPTR
B5:EFFC 14                    dec   A
B5:EFFD F0                    movx  @DPTR, A
B5:EFFE 80 8E                 sjmp  fgEepromLoadShMem_LOOP
B5:EFFE
B5:F000             ; ---------------------------------------------------------------------------
B5:F000
B5:F000             fgEepromLoadShMem_EXIT:                 ; CODE XREF: fgEepromLoadShMem+4Fj
B5:F000                                                     ; fgEepromLoadShMem:B5_EFD7j
B5:F000 A2 61                 mov   C, RAM_2C.1
B5:F002 22                    ret
B5:F002
B5:F002             ; End of function fgEepromLoadShMem

bIdCnt и bAddrCnt - местные переменные ф-ций. Чтобы понять, в чем их смысл, почитай исходники "оригиналов" - vEepromWriteLastMemList, fgEepromLoadLastMemList и т.д. Стыковка такая же, как во всем 8032 софте. Данные хранятся в указанных мною ячейках Shared Memory во время нормальной работы устройства. Когда устройство выключают (уходит в STANDBY mode), вызываются ф-ции сохранения параметров из Shared Memory в EEPROM. Одна из них:

CODE
B5:DC3C             vEepromWriteLastMemList:                ; CODE XREF: B5_D0A4+5p
B5:DC3C                                                     ; DATA XREF: B0:B0_BS_438_B5_DC3Co ...
B5:DC3C 12 F0 10              lcall isoResumeSaveEepromPatch
B5:DC3C
B5:DC3F 74 02                 mov   A, #2

Когда устройство включается, другие ф-ции считывают полезную информацию из EEPROM в Shared Memory. Одна из них вызывает теперь мою вторую ф-цию:

CODE
B5:C762             fgEepromLoadLastMemList:                ; CODE XREF: vEepromInit+44p
B5:C762 12 F0 24              lcall isoResumeLoadEepromPatch
B5:C762
B5:C765 00                    nop
B5:C766 00                    nop
B5:C767 74 02                 mov   A, #2

Код патча я уже привел. По сути это вызов C процедуры:

CODE
fgEepromLoadShMem (0х218, 0х277, 5); // From ShMem addr 0x277 write 5 bytes to address 0x218 of EEPROM

Ну а ф-ции, имеющие дело с сохранением и восстановлением точки запуска, знают только об адресе 0х277 в Shared Mem. Им нет никакого дела до EEPROM.

Posted by: Rvs on 31-05-2007, 16:09
vboroda

Блин толково ты всё сделал!!! по больше таких програмеров!!! :punk:
Буду к себе добавлять, как только так сразу отпишусь!!!!

Posted by: vboroda on 22-06-2007, 21:38
Привет, если эта тема еще дышит. ;&#041;

Отправил вопросец в Яху группу MTK, но никакой реакции не последовало, к сожалению. Попробую сформулировать то же самое на родном языке.

Имеется прошивка с ARM кодом из трех частей. Аппарат Philips 5960. Распаковал этот ARM код (весь сразу) MTKReMaker'ом. Вроде бы все нормально, но выясняются интересные вещи: многие пойнтеры указывают на адреса, по которым вроде как располагается в распакованном виде исполняемый код. Скажем, делаю патч для UOP removal. Нахожу участок кода. Ба, да буфер UOP_Parameters "расположен" прямо на середине какой-то ф-ции! Здесь, правда, ничего страшного не произошло, т.к. не требовалось создавать никаких новых ф-ций и куда-либо прыгать.

Еще пример: попытка поставить P&S патч от fontcreator'a. Ф-цию находим сразу, но размещена она в "высоких" адресах (0х8ХХХХ). У нас еще полно места на C++ мессиджах, расширять код пока не требуется. Попытаемся прыгнуть из "верхней" части кода на место, где располагаются С++ мессиджи. Я попробовал, и получил намертво зависший плеер.

В общем, подозреваю, что алгоритм распаковки ARM кода не совсем правильно (или совсем неправильно?) отрабатывает "верхнюю" часть кода, помещая ее в менее высокие адреса, чем те, по которым она на самом деле размещается в работающей системе. Более того, я также не уверен, что алгоритм "расширения" ARM кода, применяемый в программе MtkArmResizer, правильно учитывает расположение "верхней" части кода.

Есть ли у кого-то комментарии или советы по этому поводу? Может быть я просто неправильно что-то делаю?

Большое спасибо за помощь!

Posted by: jonia on 30-06-2007, 19:01
QUOTE (vboroda @ 30-05-2007, 17:18):
Меня немного раздражает другой аспект этой деятельности: постоянные просьбы что-то сделать ......

... но когда просьбы поступают с частотой 3 в день.....

Здравствуйте Владимир,
Знаю, что досадно, но что сделать, на днях купил dvp-5980/12, потому что 5960 уже пропал, не продают его...

Хотелось бы тоже самое, как на модели 5960/12, если конечно найдется времени на это...

ver: 12.07.31.26
sub: 07.08.02.01
8032: 05.00.06.05
servo: 93.77.00.00
risc: 05.00.06.05
DSP: 07.03.00.81

С уважением Джони А!

Posted by: RanDoM133 on 19-10-2007, 18:38
QUOTE (Andy007 @ 20-04-2006, 14:02):
Меню в старых 8032 я умею добавлять - в принципе тоже самое что и skip по mp3:) Осталось найти работоспособный риск.
Не могли бы Вы намекнуть как сделать сие с 8032 фили 3040К?
Решил проблемку сам :&#041;

Posted by: bdk100 on 16-04-2010, 16:38
Тема ещё жива?
vboroda уже пол года не появляется.
Кто-нибудь модернизировал Ymaha S557, подключение USB???
Согласен, что металлолом, но рабочий, очень хотелось бы запустить USB, но прошивки не нашёл, а с программированием - туго. разъём подключил, но реакции никакой.
HELP!!! Братья по разуму!!!
Может кто-нибудь делал - ПОДЕЛИТЕСЬ прошивкой!!!

Posted by: bdk100 on 20-04-2010, 16:25
Help!!!
Ymaha S557, подключение USB?
:help:
:hi:

Posted by: zazafa on 11-05-2010, 19:09
http://master-tv.com/proshivki/dvd/dumps/PHILIPS/PHILIPS%20DVP3360K_51.rar (http://master-tv.com/proshivki/dvd/dumps/PHILIPS/PHILIPS%20DVP3360K_51.rar кто может попробовать отображение руских имен вназваниях исправить.я пробовал,плеер вис после правки арм

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)