Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

Урок 1. Создаём вибру : Патчестроение : Патчи : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Патчи
      /  Патчестроение
   /  Урок 1. Создаём вибру
На печать 
Правила 
Страница 1 из 2: [1] 2 »

ZEN


Developer


Регистрация: 15.12.07
Сообщений: 132
Репутация: 984
Откуда: Полоцк




 
  #1 [08.08.09, 16:52] Урок 1. Создаём вибру   

 
Код: 
; это первый урок будут и другие



                 PUSH    {R0-R5,LR}
 ;здесь устанавливаються параметры вибры: мощьность,время одного вибрика, время между вибриками
                 MOV     R0, 0x30
                 MOV     R1, 0x20
                 MOV     R2, 0x10
 ;здесь вызываеться функция виры
                 LDR     R5, SWI_0x1BB_Vibra
                 BLX     R5

                 MOV     R0, 0x7F ;время  длительности всего этого процесса
                 LDR     R1, off_ ; переход на выключение вибры
 
                 LDR     R5, SWI_0x129_Timer_Set
                 BLX     R5
                 POP     {R0-R5,PC}



 off:
 ;здесь сопсна говоря она и вырубаеться
                 PUSH    {R0-R3,LR}
                 MOV     R0, 0 
                 LDR     R3, SWI_0x248_Vibra_Off
                 BLX     R3
                 POP     {R0-R3,PC}
 ; ---------------------------------------------------------------------------
SWI_0x1BB_Vibra  DCD 0x45452EA4+1
off_    DCD off+1      
SWI_0x129_Timer_Set  DCD 0x45294D90+1
SWI_0x248_Vibra_Off  DCD 0x45452F7C+1
;дреса преведены для W810 R4DB005


[ Редактировано ZEN в 9.8.09 11:51 ]


Спасибо сказали: Ну6иК, Va_st, -Sanek-, Xamid, CyberMaster, HotRabbit, farid

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #2 [08.08.09, 17:25] Re: Урок 1 "создаём выбру"   

 
устаревшие функции. вибру давно можно использовать без таймера.
http://mobilefree.justdanpo.ru/wiki/doku.php?id=elflib:functions:audiocontrol_vibrate




promt is better than google translate
Спасибо сказали: HotRabbit

Va_st


Patchmaster


Регистрация: 3.8.08
Сообщений: 440
Репутация: 1142





 
  #3 [08.08.09, 18:35] Re: Урок 1 "создаём выбру"   

 
тогда так:
Код: 
PUSH {LR}
BL sub_AudioControl_Init
CMP R0, 0
BNE loc_
BL sub_GetAudioControlPtr
LDR R0, [R0]
loc_:
MOV R3, 0x30 ;totaltime
MOV R2, 0x10 ;pausetime
MOV R1, 0x20 ;vibratime
BL sub_AudioControl_Vibrate
POP {PC}
sub_AudioControl_Init:
LDR R3, off_AudioControl_Init
BX R3
off_AudioControl_Init DCD AudioControl_Init+1
sub_GetAudioControlPtr:
LDR R3, dword_GetAudioControlPtr
BX R3
dword_GetAudioControlPtr DCD 0x201806C4 ;for k790 r8bf003
sub_AudioControl_Vibrate:
PUSH {R3}
LDR R3, off_AudioControl_Vibrate
MOV R12, R3
POP {R3}
BX R12
NOP
off_AudioControl_Vibrate DCD AudioControl_Vibrate+1



Добавлено 8.8.09 20:39

или так:
Код: 
PUSH {R0-R7,LR}
MOV R0, 0
SUB SP, SP, 4
STR R0, [SP]
SUB SP, SP, 0x88
MOV R0, SP
LDR R1, off_
BLX R1
MOVL R1, 0x3E8
MOV R2, 0x32
ADD R3, R1, 0
LDR R6, [R0]
MOVL R4, 0x168
LDR R6, [R6,R4]
BLX R6
ADD SP, SP, 0x8C
POP {R0-R7,PC}
ALIGN 4
off_ DCD 0x4529D5D8+1;for k790 r8bf003




j10i2 r7ca061
Спасибо сказали: CyberMaster, HotRabbit

jamesbond22


Свой в доску


Регистрация: 19.8.07
Сообщений: 1764
Репутация: 1322





 
  #4 [08.08.09, 22:13] Re: Урок 1. Создаём вибру   

 
example for phones A2:

Код: 
PUSH {R0-R7,LR}
SUB SP, SP, 4
MOV R0, SP
LDR R1, off_
BLX R1
LDR R0, [SP]
MOVL R1, 0x3e8
MOV R2, 0x32
ADD R3, R1, 0
LDR R6, [R0]
MOV R4, 0xFF
ADD R4, 0x89
LDR R6, [R6,R4]
BLX R6
ADD SP, SP, 4
POP {R0-R7,PC}
align 4
off_ DCD 0x10DC0070+1 ;for W595 r3ea037 LT




Sе XPeria X8 ROM 2.3.5 GingerDX v008

Va_st


Patchmaster


Регистрация: 3.8.08
Сообщений: 440
Репутация: 1142





 
  #5 [08.08.09, 23:16] Re: Урок 1. Создаём вибру   

 
jamesbond22, и в чем различие от последнего?? причем а2??
Код: 
push    {r0-r7,lr}
sub     sp, sp, 4
mov     r0, sp
ldr r1,.addr
blx r1
ldr r0,[sp]
movl r1, 0x3e8
mov r2, 0x32
add r3,r1,0
ldr r6,[r0]
movl r4, 0x194
ldr r6,[r6,r4]
blx r6
add sp,sp,4
pop {r0-r7,pc}
;for w910 sw-r1fa035




j10i2 r7ca061

CyberMaster


Patchmaster


Регистрация: 24.10.07
Сообщений: 101
Репутация: 243
Откуда: Днепропетровск




 
  #6 [09.08.09, 02:18] Re: Урок 1. Создаём вибру   

 
Va_st писал:
Код:
sub_AudioControl_Vibrate:
PUSH {R3}
LDR R3, off_AudioControl_Vibrate
MOV R12, R3
POP {R3}
BX R12


это не правильно. поправь
Код:
sub_AudioControl_Vibrate:
ldr   r4, off_AudioControl_Vibrate
bx   r4


[ Редактировано CyberMaster в 9.8.09 02:41 ]




Спасибо сказали: HotRabbit

den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #7 [09.08.09, 03:48] Re: Урок 1. Создаём вибру   

 
CyberMaster, как это неправильно?




promt is better than google translate

CyberMaster


Patchmaster


Регистрация: 24.10.07
Сообщений: 101
Репутация: 243
Откуда: Днепропетровск




 
  #8 [09.08.09, 04:51] Re: Урок 1. Создаём вибру   

 
den_po, ну а смысл такое извращение делать если можно обойтись всего двумя строчками =)





den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #9 [09.08.09, 07:08] Re: Урок 1. Создаём вибру   

 
CyberMaster, точно так же можно спросить "а смысл выносить в отдельную функцию?", это ж целая команда лишняя, да не просто команда, а 4байтная.
всё зависит от того, насколько интенсивно в твоей функции используются регистры. вот не будет тебе их хватать, тогда посмотрим, как ты двумя строчками обойдёшься.
в любом случае, его вариант не неправильный.



Добавлено 9.8.09 07:10

вопрос ко всем: вы отступы в исходниках принципиально не используете?


Добавлено 9.8.09 07:22

по поводу обёрток для вызова дальних функций маленькая подсказка =) да и вообще посыл посмотреть в сторону макросов. макросы могут упростить написание повторяющихся кусков кода.

Код: 
macro longf na
{
far_#na :
        push \{r3\}
        ldr r3,.1
        mov r12,r3
        pop \{r3\}
        bx r12
        align 4
.1:     dw na
}

макрос создаёт такую обёртку и даёт ей имя, прибавляя в начало имени аргумента "far_".
к примеру есть у нас константа debug_printf с некоторым адресом. ставим где-то в коде вызов макроса
longf debug_printf
после этого можно вызывать обёртку командой bl far_debug_printf.

и живой пример использования этого макроса
исходник патча: 




promt is better than google translate
Спасибо сказали: MahmudS

Va_st


Patchmaster


Регистрация: 3.8.08
Сообщений: 440
Репутация: 1142





 
  #10 [09.08.09, 09:18] Re: Урок 1. Создаём вибру   

 
CyberMaster, пойдет??? =)

Spoiler: 




j10i2 r7ca061
Страница 1 из 2: [1] 2 »



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

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.03 секунд | 9 Запросов | HTML: 53.92 КБ -