再开一贴,冰大,弄了一个不依赖swilib的接通振动。
直接从你的补丁来的,想弄到E71上。不是我需要,是我练手。。呵呵但是注意到这两个机型的GBS_StartTimerProc函数,模式不一样。
并且,奇偶也不一样。不知道怎么处理,我注意到你跳到SetVibration时是用的BX
不知道为什么用BX不用BLX或者BL
#ifdef S7Cv47
#define RAMTMR 0xA8A7F180
#define SetVibration 0xA01B11F3
#define GBS_StartTimerProc 0xA0093278
#endif
#ifdef E71Cv41
#define RAMTMR 0xA8D89100
#define SetVibration 0xA04C2F9B
#define GBS_StartTimerProc 0xA0092531
#endif
RSEG VIBRA_HOOK
CODE16
LDR R4, =VIBRA_BODY_
BLX R4
RSEG VIBRA_BODY
CODE16
VIBRA_BODY_
MOV R4, LR
LDR R0, POWER
LDR R1, =SetVibration
BLX R1
LDR R0, =RAMTMR
LDR R1, TIME
LDR R2, =VIBRA_OFF
LDR R3, =GBS_StartTimerProc
BLX R3
MOV R3, R5
MOV R1, #0
MOV R0, #0xFF
ADD R0, #0x10
LDR R2,
ADD R2, #0x70
ADD R4, #4
BX R4
VIBRA_OFF
MOV R0, #0
LDR R1, =SetVibration
BX R1
DATA
TIME
DCD 30
POWER
DCD 20
END BX不改变LR的值
页:
[1]