-
Постов
113 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Тип контента
Профили
Форумы
Загрузки
События
Сообщения, опубликованные bugbug
-
-
Говорящие часы: обнаружилось несколько проблем, хотелось бы узнать есть ли они на вашем телефоне?
1. Если автопроизношение или ручной режим задействуется во время входящего звонка (до поднятия трубки или во время разговора), то звук динамика пропадает и собеседника не слышно. Однако если в телефоне был установлен бесшумный режим, такой проблемы не возникает.
2. Громкость предварительного звука (7) достаточно большая, на улице слышно при любом шуме. Голос (14) практически не слышно на улице нигде. Пробовал увеличить громкость специальной программой, но появляются большие шумы.
3. Для ручного режима предусмотрена функция произнесения времени при заблокированной клавиатуре и незаблокированной одновременно. Но почему-то не было сделано отдельно при заблокированной и при незаблокированной (два чекбокса). Моя проблема связана с тем, что все клавиши где-либо уже задействованы: если удерживать фото (то запускается камера, а однократное нажатие - снимок), если однократно фото при включенной опции ScreenShot - скриншот.
-
Там где используются переходы BL add_volume заменил кодом, похожим на "спинбокс выбора звука предшествующего сигнала" с незначительными изменениями. Теперь звук сохраняется. Однако при компиляции появляется: Не удалось разместить данные gv_ImageTitleIconStart. Попробуйте использовать тег .data ближе. Из-за чего это происходит?
-
add_volume:
PUSH {R0,R3,LR}
SUB SP, 0x100
ADD R3, 1 ; диапазон 0...14 = 15 позиций
STR R3, [SP]
MOV R3, #0x32
MOV R2, 2
MOV R1, R5
MOV R0, R4
BL lk_AddFocus
LDR R0, [SP, 0x100]
BL lk_get_my_text2
STR R0, [SP]
MOV R3, #0xA
MOV R2, 0
STR R2, [SP, 4]
MOV R1, R5
MOV R0, R4
BL lk_AddFocusItem
MOV R6, #0x0
loc_123:
MOV R2, R6
ADR R1, ="%d"
ADD R0, SP, #0x10
BL sprintf
ADD R0, SP, #0x10
STR R0, [SP]
MOV R2, #0x0
STR R2, [SP, 4]
MOV R2, R6
MOV R1, R5
MOV R3, #0x11
MOV R0, R4
BL lk_AddFocusItem
ADD R6, #0x1
CMP R6, #0xF
BCC loc_123
MOV R1, R5
MOV R0, R4
BL lk_SetCurSpinIndexADD SP, 0x108
POP {PC}Сделал громкость с помощью цифр, громкость меняется, но не сохраняется при выходе. Где-то я пропустил что-то важное :-)
-
Java-приложения у меня никогда не запрашивали сертификаты. Вопрос о сертификатах при входе в интернет через стандартный браузер. При входе https://google.com выскакивает сообщение: "Ошибка защиты: не имеющий доверия сертификат сервера". Файл _main.ks имеет отношение к этой проблеме?
-
В файловой системе есть файл _main.ks. Как я понял здесь хранятся сертификаты для java браузера, а не для встроенного браузера (в прошивке есть свои сертификаты) . В теме "Все о Samsung Sgh-e200/e200b" говорилось о том, как его прочитать. А как его редактировать и нужно ли :-) ? Посмотрел прошивку B5722, там кроме _main.ks есть еще папка java_Cert.
-
Нашел адреса emctr1_32SemEmailIntervalTimer: 0x2055231C и emctr1_33SemEmailIntervalProcess: 0x20DE4110. Поменял часы на минуты (0x000BDD80 на 0x000032A0). И все получилось. Спасибо!
-
Хочу изменить интервал получения e-mail сообщений (у меня 1 час, 3 часа, 6 часов, 12 часов, а хотелось бы установить в минутах). На сайте не нашел такого патча. На какой-то мобиле (видел где-то на сайте) был уже предустановлен интервал в 15 мин. и т.д. В патче Изменение времени работы подсветки, чтобы найти время его достаточно было перевести в милисекунды, а здесь переводил и не нашел. Видимо здесь другой алгоритм.
-
В телефоне все время отстают часы. Корректируется ли ход часов патчем? В Палихе, например, есть корректировка часов.
-
Спасибо! Особенно за скриншоты.
-
Нижеприведенный код используется в ProfileSheduler_menu_fn.asm и Talker_menu_enter.asm. В нем есть функция lk_DisplayFocusBG. В моем телефоне я нашел только lk_DisplayMenuFocusBG. Можно ли ее чем-то заменить, сократить или убрать? И обязателен ли этот код для построения меню?
LDR R4, =fx_pos
MOV R1, 5
STRH R1, [R4, #0] ; fx_pos
MOV R2, 22
STRH R2, [R4, #6] ; f_height
LDRH R1, [R5, #6]
LDRH R0, [R5, #2]
BL lk_GetCenterPos ; v_Start,v_Total,v_Part
STRH R0, [R4, #2] ; fy_pos
MOV R0, 220
STRH R0, [R4, #4] ; f_width
LDR R0, =0x00000816
STRH R0, [R4, #8] ; f_fontMOV R1, 0
MOV R0, R6
BL lk_MenuFontColor ; v_Active,v_HideStateCMP R6, 1
BNE loc_201815A0
MOV R0, R5
BL lk_DisplayFocusBG ; p_Pos
loc_201815A0:
CMP R6, 0
BEQ loc_201815EC ; рисовалка невыбранной строки
; рисовалка выбранной строки (со скроллом невлезающего текста)
LDR R2, =0x00001001 ; (4097)
MOV R1, 0
MOV R0, 3
BL lk6_ClearOneRestoreProc ; v_ContextType,v_CtxIdx,v_WidgetType
BL lk6_look_dsptext_register
MOV R2, 0
STR R2, [SP, #0x10] ; invalidate
STR R7, [SP, #0xC] ; SrcData - текстовая строка
MOV R3, #0x1D ; 29
STR R3, [SP, #0x8] ; ExtInfo_Index
STR R0, [SP, #0x4] ; p_DspText
STR R2, [SP] ; DspTarget
LDRH R3, [R4, #6] ; f_height
LDRH R2, [R4, #4] ; f_width
LDRH R1, [R4, #2] ; fy_pos
LDRH R0, [R4, #0] ; fx_pos
BL lk_TextDisplay ; x,y,w,h,DspTarget,p_DspText,ExtInfo_Index,SrcData,invalidateloc_201815E8:
ADD SP, 0x100
POP {R4-R7,PC}loc_201815EC: ; это вывод невыбранного пункта, скролла нет и потому строку надо обрезать с учётом размера фонта
MOV R0, R7
BL strlen
MOV R6, R0
ADD R0, #0x4
BL RtkGetMemory
MOV R5, R0
ADD R1, R6, 2
;MOV R0, R5
BLX __rt_memclr
MOV R1, R7
MOV R0, R5
BL strcpy
LDRH R3, [R4, #6] ; f_height
LDRH R2, [R4, #4] ; f_width
LDRH R1, [R4, #8] ; f_font
MOV R0, R5
BL StringAbbreviation ; p_String,v_FontId,v_Width,v_HeightMOV R0, R5
BL strlen
MOV R1, R0
MOV R3, 0
STR R3, [SP]
MOV R2, #0x81
MOV R0, R5
BL lk4_10WriteWindow ; v_String,v_StrLen,v_Format,v_Invalid,v_LcdId
MOV R0, R5
BL RtkReleaseMemory
B loc_201815E8.data
-
Данные эквиваленты используются в Talker_listen.asm (патч Talker B5722).
.equ set03_StopSound 0x21A0C0E8
.equ set03_StopMidiSound 0x21D354C8
.equ set03_StopTimer 0x216A79E8Не могу понять, где их искать в моей прошивке.
-
Это был просто пример блока write_num2, конечно же регистры я поменял. Получается, что в B5722 при мультисъемке остаются стандартные имена?
-
В телефоне есть мультисъемка. Решил сделать имя для фото, чтобы действовала и мультисъемка. Взял Filename_DateTime_v27_M3510XEHJ2.asm. Сделал следующее:
.equ buff_foto 0x3011AB3F
.equ __rt_udiv10 0x2151EEE0
.equ GetCurrentTimeAndDate 0x2161AEB4.start new_mcc_task_tab+0x00*4 ; функция №00h
.word metka0+1.start 0x216BE51C
.mcc mcc_transf 0 0 0 0 metka_mcc2 ; камера (перехват в момент фотки).start 0x20C2B650
metka_mcc2:
.mcc MCC_TASK 0x22 0
.mcc MCC_MULTI_TRACKING 0x20 0x32 0 0 0x216BE59C
.mcc MCC_TRANSF 0 0 0 0 0x216BE52C;-------------------------------------------------------
metka0:PUSH {R0-R3}
SUB SP, SP, 0x8
MOV R0, SP
BL GetCurrentTimeAndDate
MOV R2, SPLDR R7, =buff_foto
LDRB R0, [R2, 6] ; год
ADD R0, #0x30 ; 2008 = 07D8, D8 = 216 а надо 08: 0xD8+0x30=0x108=0x08
MOV R1, #0xFF
AND R0, R1
BL write_numLDRB R0, [R2, 5] ; месяц
BL write_numLDRB R0, [R2, 4] ; число
BL write_numMOV R0, #0x2D ; "-"
STRB R0, [R7]
ADD R7, 1LDRB R0, [R2, 2] ; час
BL write_numLDRB R0, [R2, 1] ; минута
BL write_num
MOV R0, 0 ; EOL
STRB R0, [R7]B m_exit
mov r0, '.' ; дописывает '.jpg',0x0
strb r0, [r7, 0]
mov r0, 'j'
strb r0, [r7, 1]
mov r0, 'p'
strb r0, [r7, 2]
mov r0, 'g'
strb r0, [r7, 3]
mov r0, 0
strb r0, [r7, 4]m_exit:
ADD SP, SP, 0x8
POP {R0-R3}
ADD SP, SP, #0x100
POP {R4-R7,PC}write_num:
PUSH {R2,R4,LR}
BLX __rt_udiv10
ADD R0, '0'
ADD R1, '0'
STRB R0, [R7]
STRB R1, [R7, 1]
ADD R7, 2
POP {R2,R4,PC}.data
Имя получилось формата ГГММДД-ЧЧММ-NNNN.jpg.
У меня никак не получается здесь прописать год полностью ГГГГММДД-ЧЧММ-NNNN.jpg. Пробовал вставить блок write_num2 из B5722, мобила перезагружается. Не могли бы Вы подсказать, как прописать блок с годом. Заранее благодарю!
-
Спасибо, получилось сделать имена файлов для диктофона, радио, видеокамеры. А для фотокамеры имя остается прежним.
При помощи CGSN определил, что лежит в gv_CameraJpegFileFullPath:
2F652F496D616765732FD0A4D0BED182D0BE2D303030312E6A7067
/e/Images/Фото-0001.jpg (+10 - пропуск пути)
в ga_PhotoDefaultName:
D0A4D0BED182D0BE00D09400000000000001010000000000002B000200000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0A4D0BED182D0BE2D303030362E6A7067
Фото.Д.......+.....Фото-0001.jpg
в ga_CameraPhotoFileName:
D0A4D0BED182D0BE2D303030372E6A7067
Фото-0001.jpg
Далее определил mcc_camera_capture_mode_select:
B5722
A9200100020000007C275B2000000000
151D1E00010000000000000000000000
161D010001000100F8494F2000000000
171D010002000100F8494F2000000000
171D0E0001000100F8494F2000000000
161D050001000000384A4F2000000000
1A00000000000000884A4F2000000000
6D63635F63616D6572615F6361707475 mcc_camera_captu
72655F636865636B5F74696D65720000 re_check_timerJ210
9F203200000000009CE56B2100000000
18232B000100010024E1A52000000000
1820620001000000BCA4E92000000000
17202B00010000000000000000000000
17200400000000000000000000000000
1B00000000000000A8F61E2000000000
1820040001000000BCE56B2100000000
1C0000000000000058CE612000000000
6D63635F63616D6572615F6361707475 mcc_camera_captu
72655F636865636B5F74696D65720000 re_check_timerB5722
151D4600000000000000000000000000
161D010001000000246A4F2000000000
171D010002000000F4684F2000000000
171D0E0001000000E84B4F2000000000
1800000000000000D84A4F2000000000
190000000000000034514F2000000000J210
17209400000000000000000000000000
182001000100000090DCA32000000000
192001000200000080DBA32000000000
192001000300000018E6A32000000000
19200C0001000000B8CE612000000000
1A00000000000000847FE92000000000
.equ gs_CameraStatus 0x3011AB18
.equ gv_CameraJpegFileFullPath 0x301415F0
.equ ga_PhotoDefaultName 0x3011AB3F
.equ MP 0x22
.equ MPCode 0x12
.equ new_mcc_task_tab 0x20C279D0.equ strcpy 0x20470F2C
.equ strncpy 0x208B267C
.equ strlen 0x20470F7C.start 0x2061CE58 ; mcc_camera_capture_mode_select
.mcc MCC_TRANSF 0 0 0 0 mcc_set_photo_fullname
.start new_mcc_task_tab+4*MPCode
.word set_photo_fullname+1.start 0x20C2B650
mcc_set_photo_fullname:
.mcc MCC_TASK MP MPCode
.mcc MCC_TASK 0x20 0x94 ; компенсация врезки
.mcc MCC_TRANSF 0 0 0 0 0x2061CE58+0x10set_photo_fullname:
; проверка режима фотокамеры
LDR R0, =gs_CameraStatus ; 0,2,3 - единичные кадры, 1 - мультисъёмка
LDRB R0, [R0] ;[R0,#0xC]
CMP R0, 1
BEQ photo_multi ; если мультисъёмка - то патч пока её не поддерживает, будет старое имяLDR R5, =gv_CameraJpegFileFullPath+10
; Пишем в начале строки дефолтное имя
LDR R1, =ga_PhotoDefaultName
BL print_header; пишем дату
BL print_datetimephoto_normal_1:
; пишем расширение
MOV R1, 'j'
STRB R1, [R5, 1]
MOV R1, 'p'
STRB R1, [R5, 2]
MOV R1, 'g'
STRB R1, [R5, 3]photo_multi:
ADD SP,SP,0x100
POP {R4-R7,PC}print_header:
PUSH {LR}
MOV R2, 0xB ; максимальный размер дефолтного имени.
LDRB R3, [R1]
CMP R3, 0
BEQ skip_header ; если дефолтное имя пустое
MOV R0, R5
BL strncpy
BL strlen
ADD R5, R0, R5
MOV R1, '-'
STRB R1, [R5]
ADD R5, R5, 1
skip_header:
POP {PC}print_datetime:
PUSH {R0-R4,R6-R7,LR}
SUB SP, SP, 0x10; Запрос текущего времени
MOV R0, SP
BL hcl_06GetCurrentTimeAndDate
MOV R6, SPLDRH R0, [R6, 6] ; год
BL write_num2
LDRB R0, [R6, 5] ; месяц
BL write_num1
LDRB R0, [R6, 4] ; число
BL write_num1MOV R0, '-'
STRB R0, [R5]
ADD R5, R5, 1LDRB R0, [R6, 2] ; час
BL write_num1
LDRB R0, [R6, 1] ; минута
BL write_num1
LDRB R0, [R6, 0] ; секунда
BL write_num1
MOV R0, '.' ; точка после имени, перед расширением
STRB R0, [R5]MOV R1, 'p' ; поскольку у нас обычно расширения mp3/mp4/jpg - общую букву сразу впишем
STRB R1, [R5, 2]MOV R0, 0 ; EOL после расширения (расширение впишем потом)
STRB R0, [R5, 4]ADD SP, SP, 0x10
POP {R0-R4,R6-R7,PC}write_num1: ; печатает число 00-99
PUSH {LR}
BLX __rt_udiv10
ADD R0, 0x30 ; "0"
ADD R1, 0x30 ; "0"
STRB R0, [R5]
STRB R1, [R5, 1]
ADD R5, R5, 2
POP {PC}write_num2: ; печатает число 0000-9999 (год, и частоту тюнера)
PUSH {LR}
BLX __rt_udiv10
ADD R1, 0x30 ; "0"
STRB R1, [R5, 3]
BLX __rt_udiv10
ADD R1, 0x30 ; "0"
STRB R1, [R5, 2]
BLX __rt_udiv10
ADD R1, 0x30 ; "0"
STRB R1, [R5, 1]
ADD R0, 0x30 ; "0"
STRB R0, [R5, 0]
ADD R5, R5, 4
POP {PC};-------------------------------------------------------
.dataВроде все правильно сделал.
-
Подскажите, пожалуйста, как для патча Filename_DateTime определить адрес ga_PhotoDefaultName.
В файле Filename_DateTime_v11_B5722XXJK3.asm например для D780XEHE указаны адреса:
; 3005E8A0 - фото - имя для редактирования (сюда можно класть новое имя перед запуском камеры)
; 300C9F2E - фото - промежуточное место - отсюда берётся имя для формирования следующего файла
; 300C9EA0 - фото - тут лежил полное имя (xxxx_0001.jpg) но оно не пишется
; 300CA2D6 - фото - а тут лежит то что пишется (были бы в мобиле секунды - можно было
; бы по OK тут каждый раз подменять имя)Аналог промежуточного места для своей прошивки я нашел по адресу 215D4CF8: ldr r0, =0x3011AB3F, а как определяется "фото - имя для редактирования"?
-
Делая вторую запись имя файла не меняется и файл перезаписывается. Реально ли сделать, чтобы присваивалось новое имя (например, ...1, ...2)
-
Нашел адрес для увеличения скрости набора текста в java. Увеличил скорость в 3 раза. Сработало. Однако произошло ускорение всех процессов в java: прокрутка страниц, ускорение хода часов и т.д. Наверное именно поэтому никто не делал этот патч?
-
Проверил Talker_fn.asm, установив на удержание кнопки. Все работает: женщина приятным голосом сообщает точное время. Однако цель моя не достигнута: нет меню автоматических настроек. Нашел патч-конфигуратор для D780, M3510,E200 где аналогичное меню Время и Дата. А asm (Патч-конфигуратор) на форуме не нашел. Существует ли такой asm?
P.S. Вручную smp сделать сложно из-за огромного объема.
-
В Talker_menu_enter.asm
;fn_menu_in_focus: ; выдрано из cal6_FakeCallFocusTimerDisplay
А у меня нет ложного срабатывания, тогда откуда мне выдирать?
Спасибо!
P.S. Talker_fn.asm я уже сделал.
-
Хочу сделать себе патч Talker aka «Говорящие часы» на примере B5722. Не знаю как правильно добавить новый пункт меню в Настройки-Телефон-Время и Дата. Определил адрес меню:
213C949C 5C000000000000000000000000000000
213C94AC 8B000000000000000000000000000000
213C94BC 1713B100000000000000000000000000
213C94CC 7F000100000100000000000030000000
213C94DC 1713B000000000000000000000000000
213C94EC 80130F00000002020000000000000000
213C94FC 8C00010000000000CC9DB52000000000
213C950C 8C00FFFF000000009C953C2100000000
213C951C 8D0100000202D8019C953C2167060000
213C952C 180901000F0000007C953C2100000000
213C953C 19090100020000007C953C2100000000
213C954C 19090100010000007C953C2100000000
213C955C 19090100090000004CB0B52000000000
213C956C 38000000000000000000000000000000Странно, что в адресе 213C94FC не 6 пунктов фокус меню, а только один. При переходе в кейс 0x00B0
215B8ABC: 0722 MOV R2, #0x7 как и в B5722 ( 0x216EAF20)
-
Спасибо за ответ!
-
Подскажите, пожалуйста, как найти адрес компенсированного перехода в Binedit. Вставляю адрес, который нужно найти, в строку поиска, нажимаю A с лупой, выводится все адреса, кроме компенсированных.
-
Файл С3322XWKL1.sym шел вместе с прошивкой? Функция music8_SetNoActionTimeFlag уже была в sym или Вы ее туда добавили? Сравнивал файл С3322XWKL1.sym c D880JPHH1_Master_original.sym и не нашел похожей функции.
-
Почему я именно этот код выделил, так как удивился схожести. В С3322 ldr r0,=0x914E5F3C и в J210 ldr r0,=0x212FBC9C(mcc_mplib_T_bgm_event_after_player_on_pause) и ldr r0,=0x914E5FDC и ldr r0,=0x20652B54 (mcc_mplib_T_bgm_event_after_player_on_stop). Только в С3322 есть переход на нужный адрес 90BBCB50, а в моем коде - нет. Я уже использовал ранее трассировку для поиска эквивалентов. У меня до этого получилось сделать так, что при нажатии паузы в плеере и выходе потом в фон плеер не сбрасывался и продолжал потом играть с паузы.
Задаем вопросы по теме "Создание патчей, для начинающих"
в Программирование и реверсинг
Опубликовано
Проблема была, скорее всего, в многократных прошивках, теперь она самоустранилась
Добавил в TalkerClock_manual:
LDR R0, =gs_KeyLockInfo
LDRB R0, [R0]
CMP R0, 1
BNE TalkerClock_manual_exit
Получил результат, который хотел.
Стал проверять остальные опции и оказалось, что не работает чекбокс "Только на десктопе или при погашенном экране".
; разрешено говорить только если телефон не используется
MOV R0, cfg_options
LDRB R0, [R5, R0]
LSL R0, R0, opt_only_idle_or_blank
BPL TalkerClock_auto_no_blank ; разрешено говорить только на десктопе
LDR R0, =gs_KeyLockInfo
LDRB R0, [R0]
CMP R0, 1
BEQ TalkerClock_auto_no_blank ; экран заблокирован
LDR R0, =gv_MainLcdLight
LDRB R0, [R0]
CMP R0, 0
BEQ TalkerClock_auto_no_blank ; подсветка не горит
BL lkcore16_IsIdleScreen
CMP R0, 1
BNE TalkerClock_auto_end_free ; подсветка горит и активен не десктоп
TalkerClock_auto_no_blank:
Выяснилось, что у меня нет данной функции lkcore16_IsIdleScreen. Чем можно заменить ее?