Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Задаем вопросы по теме "Создание патчей, для начинающих"


Рекомендуемые сообщения

всё нормально...

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

 

всё... в принципе добился того, чего хотел... вроде как даже всё работает...

теперь вопрос встал в другом...

 

можно ли из режима THUMB перейти в исполнение МСС, а потом вернуться обратно?? вроде как читал, что можно...

и как это правильно сделать??

т.е. у меня идёт код, потом надо выполнить МСС и вернуться и продолжить выполнение кода...

Изменено пользователем BaRsupillamy

Лучше работать завтра, чем сегодня...

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 1,4 тыс
  • Создана
  • Последний ответ

Топ авторов темы

можно ли из режима THUMB перейти в исполнение МСС, а потом вернуться обратно?? вроде как читал, что можно...

Можно.

mov r1,0

ldr r0,=p_mcc

bl lk2_12start_menu_edit_fsm

p_mcc - адрес мсс-скрипта. Возвратится телефон обратно в код, когда натыкнется на mcc_exit/mcc_return. Но - не факт. Частенько вылетает на рабочий стол.

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

можно ли декомпилировать *.smp файл? если да то как?

См. конец урока №5

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

при наборе номера, тем где цифры, часть экрана затемняется... хотел от этого избавиться... подскажите, где это затемнение делается... где то здесь?

 

214A4F78  5D 00 0000 0000 0000 00000000 0000 0000  Подготовка окна

214A4F88  1B 00 0000 0000 0000 CCDA4F21 0000 0000  Вызов подпрограммы по адресу 0x214FDACC

214A4F98  42 00 0000 0000 F000 00000000 4001 0000  Очистить часть экрана 240x320

214A4FA8  20 00 2F00 0000 1E00 00000000 0000 0000  MCC_SOFTKEY

214A4FB8  70 01 0000 0000 0000 00000000 0000 0000  MCC_DISPLAY_INDICATOR

214A4FC8  17 09 E40B 0000 0000 00000000 0000 0000  Выполнить 0x9 x2=3044 x3=0 x4=0 x5=0 x6=0

214A4FD8  05 08 0D80 2100 C202 00000000 038F 0000  Поле для ввода с заголовком "Введите номер"

Лучше работать завтра, чем сегодня...

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Подскажите, в этом коде (проигрывание звука)

	MOV		R2,#0x0	
STR		R2,[SP]	
MOV		R0,#0x60
MOV		R1,#0x5
MOV		R2,#0x2	
MOV		R3,#0x0	
BL		hmel1_20SendStartMessage_chk;(vp_MelodId, vp_Level,vp_Duration, vp_STKMark)

как можно увеличить громкость? Как видно из коментария, значение R1 это громкость. Пробовали менять его в пределах 0x01-0x20, разницы практически не заметно. Какое максимальное значение R1? Ну только чтобы динамик не порвало :)

Изменено пользователем Alex&r
Ссылка на комментарий
Поделиться на другие сайты

описание в комментарии чуть не верное

hmel1_20SendStartMessage_chk(vp_MelodId: word; vp_Level: byte; vp_Priority: byte; vp_Duration: word; vp_STKMark: byte);

 

громкость действительно в R1, регулируется скорее всего от 0 до 7 (может и до 14)

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

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

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

описание в комментарии чуть не верное

hmel1_20SendStartMessage_chk(vp_MelodId: word; vp_Level: byte; vp_Priority: byte; vp_Duration: word; vp_STKMark: byte);

 

громкость действительно в R1, регулируется скорее всего от 0 до 7 (может и до 14)

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

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

Дело в том, что это не звук подключения кабеля. ID 0x60 - это тройное пиканье.

Отсюда вытекает еще один вопрос. Где можно узнать/посмотреть/послушать мелодии и их ID (кроме тех, что уже перечислены в патче Loud Second Call)?

Ссылка на комментарий
Поделиться на другие сайты

И еще 3 вопроса в догонку:

1. Какое рекомендуемое значение vp_Priority?

Если смотреть на тот код, что в моем предыдущем сообщении, там стоит R2=2. В принципе, работало.

 

2. vp_Duration это R3? Если R3=0 звук воспроизводится по кругу? Или это зависит от звука?

Дело в том, что когда R0=0х60, то тройное пикание звучит один раз. Меняю R0 на 0х0В без изменения R3 и звук играет по кругу бесконечно.

 

3. vp_STKMark - для чего он? В приведенном выше коде я его не задавал. Т.е. он брал то значение R4, которое уже было в нем до этого.

Ссылка на комментарий
Поделиться на другие сайты

3. vp_STKMark - для чего он? В приведенном выше коде я его не задавал. Т.е. он брал то значение R4, которое уже было в нем до этого.

нет, это не R4, это значение сохраняется в стек, в твоем примере там 0:

MOV R2,#0x0

STR R2,[sP]

а для чего он - я хз :59:

1. Какое рекомендуемое значение vp_Priority?

Если смотреть на тот код, что в моем предыдущем сообщении, там стоит R2=2. В принципе, работало.

 

2. vp_Duration это R3? Если R3=0 звук воспроизводится по кругу? Или это зависит от звука?

Дело в том, что когда R0=0х60, то тройное пикание звучит один раз. Меняю R0 на 0х0В без изменения R3 и звук играет по кругу бесконечно.

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

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

С точки зрения оптимизации что лучше: несколько раз считывать по байту из cfg файла или один раз прочитать из cfg, сохранить в оперативку и дальше уже читать из неё?

 

В некоторых исходниках встречается .org. Это аналог .start?

Изменено пользователем Alex&r
Ссылка на комментарий
Поделиться на другие сайты

С точки зрения оптимизации что лучше: несколько раз считывать по байту из cfg файла или один раз прочитать из cfg, сохранить в оперативку и дальше уже читать из неё?

думаю быстрее будет загрузить файл в оперативку один раз, чем несколько

хотя, думаю, разницу в скорости ты не заметишь :bk:

В некоторых исходниках встречается .org. Это аналог .start?

да

Ссылка на комментарий
Поделиться на другие сайты

Подскажите, в этом коде (проигрывание звука)

	MOV		R2,#0x0	
STR		R2,[SP]	
MOV		R0,#0x60
MOV		R1,#0x5
MOV		R2,#0x2	
MOV		R3,#0x0	
BL		hmel1_20SendStartMessage_chk;(vp_MelodId, vp_Level,vp_Duration, vp_STKMark)

как можно увеличить громкость? Как видно из коментария, значение R1 это громкость. Пробовали менять его в пределах 0x01-0x20, разницы практически не заметно. Какое максимальное значение R1? Ну только чтобы динамик не порвало :)

описание в комментарии чуть не верное

hmel1_20SendStartMessage_chk(vp_MelodId: word; vp_Level: byte; vp_Priority: byte; vp_Duration: word; vp_STKMark: byte);

 

громкость действительно в R1, регулируется скорее всего от 0 до 7 (может и до 14)

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

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

В общем, после разнообразных экспериментов со значениями регистров R0, R1, R3, я пришел к выводу, что на громкость и на длительность воспроизведения они не влияют, по крайней мере для тех почти 40-ка ID мелодий. :(

Решил это дело оставить как есть.

Ссылка на комментарий
Поделиться на другие сайты

Похоже патчеписатели делают все, чтобы запутать новичка. :(

Скажите, эти записи:

.org __my0_5task_Table+0xXX*4

.org LangTab+0xXX*4

 

.start new_mcc_task_tab+0xXX*4

.start new_text_tab+0xXX*4

одно и то же или нет (соответственно)?

И еще там elseif встречается. А еще MCC таски и елсе ифы табы 0х18?

 

И еще, как выбирается (определяется) вот эти ХХ в "+0xXX*4"?

Ссылка на комментарий
Поделиться на другие сайты

Похоже патчеписатели делают все, чтобы запутать новичка. :(

Скажите, эти записи:

.org __my0_5task_Table+0xXX*4

.org LangTab+0xXX*4

 

.start new_mcc_task_tab+0xXX*4

.start new_text_tab+0xXX*4

одно и то же или нет (соответственно)?

Одно и тоже. Просто разные версии мастера = разные люди делали = называли по своему.

И еще, как выбирается (определяется) вот эти ХХ в "+0xXX*4"?

Это выбирается свободное смещение. Всего в таблице 256 ячеек (0x0 - 0xFF) и каждый патч, если работает с ними - берет себе свободную ячейку, дабы не конфликтовать с другими.

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

О Всевышние ... подскажите как на свифтах определять текущий язык меню и текущий язык ввода ..

 

P.S. Новые свифты (конкретно C3212)

P.P.S. Желательно с примерами кода :ak:

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

Ссылка на комментарий
Поделиться на другие сайты

RusEm,

индекс языка интерфейса хранится в опере gv_TextLanguage, байт

а текущий язык ввода можно посмотреть в T9Res_CurrIndex, байт

Ссылка на комментарий
Поделиться на другие сайты

Спасибо.... многое прояснилось )))

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Разъясните плиз для чего нужна вот такая связка, что она даст в итоге?

 

LSL R0, R0, #24

LSR R0, R0, #24

 

 

Чтобы сделать превью громкости проигрывания файла (файл короткий 1-2 сек.) хочу сделать следующее:

 

LDR R2, =SetVolumeMoveFunc+1

MOV R1, #5

MOV R0, R5

BL lk_RegFocusChangeSpinFunc

 

SetVolumeMoveFunc:

PUSH {R4-R7,LR}

MOV R4, R0

MOV R1, #0x5

MOV R0, R4

BL lk_GetCurSpinIndex

ADD R0, #0x1

BL Play_mp3 ;сюда в R0 передается громкость воспроизведения файла

POP {R4-R7,PC}

 

Так будет работать или нужно не так?

Ссылка на комментарий
Поделиться на другие сайты

LSL R0, R0, #24

LSR R0, R0, #24

так сказать защита от переполнения

после этих команд ты будешь уверен на 100%, что у тебя в R0 байтовое значение

Так будет работать или нужно не так?

ну ты даёшь! :(

сначала проверь сам, а потом уже, если возникнут вопросы - спроси,

лично я, например, не видел еще ни в одном исхе регулятор громкости :evil:

  • Like 1
Ссылка на комментарий
Поделиться на другие сайты

ну ты даёшь! :(

сначала проверь сам, а потом уже, если возникнут вопросы - спроси,

Я справшивал чисто теоретически, может упустил какой нюанс.

Ок. Сначала проверю сам.

лично я, например, не видел еще ни в одном исхе регулятор громкости :evil:

Ты имеешь ввиду что это никому не нужно?

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

Ссылка на комментарий
Поделиться на другие сайты

Нет, я просто имею ввиду, что это такой вопрос, на который вряд ли кто-то даст сразу однозначный ответ.

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

Вот что я имею ввиду... :evil:

Ссылка на комментарий
Поделиться на другие сайты

Нет, я просто имею ввиду, что это такой вопрос, на который вряд ли кто-то даст сразу однозначный ответ.

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

Вот что я имею ввиду... :evil:

Использую ту функцию, которую подсказал мне ты. Функция остановки воспроизведения там тоже есть. Буду экспериментировать.

Ссылка на комментарий
Поделиться на другие сайты

Alex&r,

в таком случае я бы сделал так:

при установке курсора на фокус (спин) регулировки громкости начинает воспроизводиться мелодия,

при уходе курсора с фокуса мелодия останавливается,

а при изменении значения спина регулируется громкость (думаю, должна помочь Hbgm2_SendSetVolumeReq)

  • Like 2
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

А можно для компиляции использовать GNUARM и есть ли его аналоги под винду?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти



×
×
  • Создать...