Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
  
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
TrackIDentify
Новости
Статьи
Файлы
Патчи
Патчи 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
Сообщений: 3278
Репутация: 10763
Откуда: Чебоксары




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

 
устаревшие функции. вибру давно можно использовать без таймера.
http://supertrubka.org/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
Сообщений: 3278
Репутация: 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
Сообщений: 3278
Репутация: 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.14 секунд | 10 Запросов | HTML: 57.81 КБ -