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

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

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

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


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

смотря сколько оперативки требуется?

 

требуеться много нужно сделать буфер в который будет копироваться рисунок 240*320

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

так что придёться от чего-то отрезать :bx:

поэтому спрашиваю как найти функции которые используют оперативу?

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

  • Ответов 947
  • Создана
  • Последний ответ

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

VitaliyDV, ну тогда попробуй взять в оперативке область MainSubScreen (еще она называется vScreenMem). Это что-то вроде буфера экрана. Freeman в графических патчах ее очень часто использует. Можешь посмотреть...

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

VitaliyDV, ну тогда попробуй взять в оперативке область MainSubScreen (еще она называется vScreenMem). Это что-то вроде буфера экрана. Freeman в графических патчах ее очень часто использует. Можешь посмотреть...

тогда вопрос что обычно храниться в vScreenMem и как туда поместить картинку?

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

VitaliyDV, если я правильно вспоминаю, то это не что-то вроде, а самый настоящий буфер екрана. Копируешь туда изображение, вызываешь функцию Invalidate - и на экране отобразиться картинка. История с этим буфером тянеться еще с х100 и обсуждения на ныне мертвом форуме СМ.

Не так давно разбирал работу с этим буфером и демонстрировал её sob@k@, он интерисовался, но на х100 это всё происходило. Если он разобрался со свифтами - может подскажет тебе.

Бывших SGH`овцев не бывает.

Глупый модератор применяет наказания для самоутверждения.

Умный - для поддержания порядка. Мудрый - не применяет вообще!

 

Убийцу можно понять, но нельзя простить. Предателя можно простить, но нельзя понять. Бойтесь равнодушных - именно с их молчаливого согласия совершаются все предательства и убийства на земле.

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

Уважаемые форумчане, добрые люди, прошу вас мне помоч. Портирую патч с E730 на X700 и встал на адресе 0x1129EB38(это для E730XEEH1) ну никак не могу найти ему эквивалент для X700XEEK6. Кому не сложно, кто может помогите мне пожалуйста

Я думаю, нужно подумать...

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

никак не могу найти ему эквивалент для X700XEEK6

Держи для X700XEEK6 0x1130A3E0.

Пожертвования отправлять сюда R256859050930

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

F3n1X, спасибо большое, а я то думал что это не он.

 

Кста может кто мне поможет найти ошибку? Все свои знания(на данный момент) я вложил, но что то не работает.

 

 

binid x700xeek6

.equ gv_CGSearchNameInShow 0x18499E58
.equ CurNum 0x184C44E0 
.equ j_lk_AddMenu 0x10932558
.equ j_rt_memclr_w 0x10DBF0B0 
.equ j_strncpy 0x10DBF578 

.start 0x119D9F58 
.mcc	MCC_TRANSF 0 0 0 0 new
.data

.start 0x109D6498
LDR	R0, =messages0_5task_21+1
BX	R0
.data

.start 0x1130A5EA
LDR	R0, =sms0_4if_0B+1	
BX	R0
.data

.start 0x10CAF5E8 

new:
.mcc	MCC_IF 0x1e 0x2 0 0 0x11128724 
.mcc	MCC_TASK 0x1e 0x21
mcc_phb_proc:
.mcc	MCC_TASK 0x1e 0x21 0x1
.mcc	MCC_CALL 0 0 0 0 0x10FD8874 
.mcc	MCC_TASK 0x1e 0x21 0x2
mcc_phb_cyc:	
.mcc	MCC_IF 0x8 0xB 0 0 mcc_phb_proc
.mcc	MCC_TRANSF 0 0 0 0 0x119D9F68 

sms0_4if_0B:
MOV	R4, #0x1	
LDR	R0, =CurNum					
LDRB	R1, [R0]	
ADD	R1, #0x1	
STRB	R1, [R0]	
LDR	R2, =0x18458F40	
LDRB	R2, [R2, #0x7]
CMP	R1, R2
BLT	if_ext	
MOV	R4, #0x0	

if_ext:	 
LDR	R0, =0x1130A3E0+1	
BX	R0	
messages0_5task_21:
LDR	R5, =0x18458F40 
LDR	R6, =gv_CGSearchNameInShow
LDRH	R0, [R4, #4]
CMP	R0, #0x0	
BEQ	Task_00_InitProc  
CMP	R0, #0x1	
BEQ	Task_01_InitSearchPhone  

Task_02_StoreCallerName:
LDR	R4, =gv_CGSearchNameInShow+43
LDRB	R0, [R4]	
CMP	R0,0	
BEQ	task_ext  
LDR	R0, =CurNum	
LDRB	R7, [R0]	
LSL	R0, R7, #3	
LDR 	R1, [R5, #0x30]
ADD	R0, R0, R1	
LDR 	R3, [R0, #0x4]	
MOV	R1, R7	
MOV	R2, #0x0	
STR	R2, [sP]	
MOV	R2, #0x6	
LDR	R5, =0x1834B76C  
MOV	R0, R5	
BLX	j_lk_AddMenu
MOV	R3, R4	
MOV	R1, R7	
MOV	R0, R5
MOV	R2, #0x0	
STR	R2, [sP]	
BLX	j_lk_AddMenu
B	task_ext  

Task_01_InitSearchPhone: 
MOV	R0, R6	
MOV	R1, #0x2B	
BLX	j_rt_memclr_w	
LDR	R0, =CurNum
LDRB	R0, [R0]	
LSL	R0, R0, #3	
LDR 	R1, [R5, #0x30]	
ADD	R0, R0, R1	
LDR 	R1, [R0, #0x4]
MOV	R0, R6
MOV	R2, #0x16	
BLX j_strncpy
B	task_ext  

Task_00_InitProc:  
LDR	R0, =CurNum
MOV	R1, #0x0	
STRB	R1, [R0]

task_ext: 
LDR	R0, =0x109D54CC+1
BX	R0
.data

Я думаю, нужно подумать...

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

So4HbIY, скажи симпотомы, где виснет и как виснет или еще что :44:

Бывших SGH`овцев не бывает.

Глупый модератор применяет наказания для самоутверждения.

Умный - для поддержания порядка. Мудрый - не применяет вообще!

 

Убийцу можно понять, но нельзя простить. Предателя можно простить, но нельзя понять. Бойтесь равнодушных - именно с их молчаливого согласия совершаются все предательства и убийства на земле.

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

cr_az2, это патч "вам звонили", который я попытался портануть с E730. Виснет он когда входишь в меню изъять адрес(он там должен показывать имена абонентов). Вроде все пересмотрел, вроде все так же как и на E730, но не работает он собака...

Я думаю, нужно подумать...

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

So4HbIY, Я его тоже на Х700 портировал, та же самая проблема возникла! Если надо могу поискать исходник, может при сверке что-то проясниться!

Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100

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

So4HbIY,

EvgeniyZ,

Когда я его переносил на х700, то были те же самые проблемы :idea: Хочу вот как-нить взглянуть, но времени нет пока на него.

Пожертвования отправлять сюда R256859050930

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

F3n1X, может что нибуть с оперативкой? Так если порассуждать, то этот патч изначально был на d900, ты его потом портировал себе, а X700 выходит другой немного, по сравнению D900 и E730(в рамках этого патча)?

Я думаю, нужно подумать...

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

может что нибуть с оперативкой?

Не, там вроде всё нормально.

Так если порассуждать, то этот патч изначально был на d900, ты его потом портировал себе, а X700 выходит другой немного, по сравнению D900 и E730(в рамках этого патча)?

Скорее всего наоборот:132: Х700 более схож с Д900, чем Е730 с Д900 :idea:

Пожертвования отправлять сюда R256859050930

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

So4HbIY,

А ты портировал с Е730?

 

F3n1X,

Я пробовал портировать с Д900, думаю просто в Х700 немного по другому просто, но вот где это по другому! :Laie_67:

Siemens M35 -> C45 -> Samsung X100 -> X120 -> E300 -> E710 -> X700 -> E200 -> I710 -> D780 -> I9100

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

А ты портировал с Е730?

 

Да! А вот я где то видел, что подругому! Но где то в глубине... :Laie_67:

 

 

Еще пробовал также портануть с д900 - то же самое, единственное что, я не искал эквиваленты по д900, а сразу по похожести кода в исходнике начал заменять адреса... Визуально на 1 взгляд получилось тоже самое!

Я думаю, нужно подумать...

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

Помогите решить проблему:

При портировании патча код

004051B8  F484FF64  BL lk3_0InitEditBuffer  ;Вызов \Адрес 0x0008A084
004C0760     A804      ADD R0, SP, #0x10	;R0 = SP + #16

переносится неправильно:

004C075C  F484FF64  BL off_00145628		 ;переход по адресу 0x00145628 с сохранением адреса возврата
004C0760     A804      ADD R0, SP, #0x10	;R0 = SP + #16

Должен быть

004С075С ????????  BL lk3_0InitEditBuffer ;Вызов \Адрес 0x0003DE54

Подскажите пожалуйста, как сделать правильно перенос.

Multum vinum bibere, nоn diu vivere

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

karas,

3DF026FF

В твоем случае BL lk3_0InitEditBuffer совершенно не обязана лежать на том же удалении от адреса вызова что и в оригинале,и поэтому твой переход будет либо короче,либо длиннее.

004С075С 3DF026FF BL lk3_0InitEditBuffer .Калькулятор кода используй,если у тебя известен адрес твоей lk3_0InitEditBuffer

/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

Mako

 

Спасибо. Я то и пробовал найти этот код через калькулятор, но ничего не получил - деревня. Растолкуй, пожалуйста, что записывать в окно "адрес", а что в "мнемоника".

 

Новая проблема:

код теперь стал таким

004C075C  3DF0      SUB R5, #0xF0 ;R5 = R5 - 240 "р"

004C075E  26FF      MOV R6, #0xFF ;R6 = 255 "я"

и никакого BL lk3_0InitEditBuffer

Multum vinum bibere, nоn diu vivere

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

karas,

в окно Адрес записываешь адрес откуда переходишь, в окно Мнемоника записываешь BL и адрес куда переходишь и в окне Код получишь нужный тебе код

т.е. в твоем примере так

 

Адрес Мнемоника Код

004051B8 BL 0x0008A084 F484FF64

Работай, как будто тебе не надо денег,

Люби, как будто тебе никто никогда не причинял боль,

Танцуй, как будто никто не смотрит,

Пой, как будто никто не слышит,

Живи, как будто на земле рай.

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

Спасибо, с калькулятором разобрался. Как выяснилось, код не мог получить от того, что адрес с переходом располагался далеко от злосчастного lk3_0InitEditBuffer. Соответственно, сдвинув код патча поближе, получил желаемый результат. Но патч не пашет: вместо того, чтобы отображать время во время звонка, тело вырубается, при этом странно "пикая". Всё сверил, различий не нашел, кроме как:

в исходном патче

004051B8 F484FF64 BL lk3_0InitEditBuffer ;Вызов \Адрес 0x0008A084

 

а у меня получилось

0030E398  F52FFD5C  BL lk3_0InitEditBuffer ;Вызов Адрес в прошивке \ адрес 0x0003DE54

 

Может ли это быть причиной моих страданий?

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

Multum vinum bibere, nоn diu vivere

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

Всё сверил, различий не нашел, кроме как

Если действительно так как ты гришь,то неверно определил lk3_0InitEditBuffer
/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

Если действительно так как ты гришь,то неверно определил lk3_0InitEditBuffer

На Х620 сум оригинальный, поэтому определить неверно не получится при всем желании :idea:

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

определить неверно не получится при всем желании

Значит он врет,что

Всё сверил, различий не нашел, кроме как

:59:
/ Чтобы боялись чужие, не обязательно бить своих.../
Ссылка на комментарий
Поделиться на другие сайты

Смысл мне врать?

Портирую с Е820. Здесь:

Осуществляется замена кода в области "aoc1_11DuringCallDisplay"

с

0026D260:	F61CFF10	BL	lk3_0InitEditBuffer;Вызов \Адрес 0x0008A084
0026D264:	A804	ADD	R0, SP, #0x10;R0 = SP + #16
0026D266:	F61CFF97	BL	lk3_2WriteEditBuffer;Вызов \Адрес 0x0008A198 

на

026D260  4B00      LDR R3, =0x004051B9	  ;R3 = значение по адресу (PC + 0)=[0x0026D264]= 0x004051B9
0026D262  4718      BX R3					;переход по адресу в R3
0026D264  004051B9  DCB ".@Q¹"			   ;Данные для команды по адресу 0x26D260
0026D268  0000      LSL R0, R0, #0		   ;R0 = R0 << 0 = 0x0 (0)

Соответственно по адресу 004051B8 раполагается код

004051B8  F484FF64  BL lk3_0InitEditBuffer    ;Вызов \Адрес 0x0008A084
004051BC  A804      ADD R0, SP, #0x10         ;R0 = SP + #16
004051BE  F484FFEB  BL lk3_2WriteEditBuffer   ;Вызов \Адрес 0x0008A198
004051C2  B4FF      PUSH {R0-R7}              ;Сохранить регистры R0-R7
004051C4  4F0E      LDR R7, =ga_SwitchOffTimeField       ;R7 = значение по адресу (PC + 56)=[0x00405200]= 0x01450B92
004051C6  480F      LDR R0, =fx_pos           ;R0 = значение по адресу (PC + 60)=[0x00405204]= 0x0140BB34
004051C8  242E      MOV R4, #0x2E             ;R4 = 46 "."
004051CA  8004      STRH R4, [R0, #0]         ;слово по адресу [R0 + 0] = R4
004051CC  210E      MOV R1, #0xE              ;R1 = 14
004051CE  8041      STRH R1, [R0, #2]         ;слово по адресу [R0 + 2] = R1
004051D0  217E      MOV R1, #0x7E             ;R1 = 126 "~"
004051D2  8081      STRH R1, [R0, #4]         ;слово по адресу [R0 + 4] = R1
004051D4  2112      MOV R1, #0x12             ;R1 = 18
004051D6  80C1      STRH R1, [R0, #6]         ;слово по адресу [R0 + 6] = R1
004051D8  480B      LDR R0, =f_font           ;R0 = значение по адресу (PC + 44)=[0x00405208]= 0x0140BB0A
004051DA  2107      MOV R1, #0x7              ;R1 = 7
004051DC  7001      STRB R1, [R0]             ;байт по адресу [R0] = R1
004051DE  1C38      MOV R0, R7                ;R0 = R7 = 0x1450B92 (21302162)
004051E0  F7B9F908  BL strlen                 ;Вызов  \ адрес 0x003BE3F4
004051E4  2200      MOV R2, #0x0              ;R2 = 0
004051E6  9200      STR R2, [sP]              ;слово по адресу [sP] = R2
004051E8  9201      STR R2, [sP, #0x4]        ;слово по адресу [sP + 4] = R2
004051EA  2285      MOV R2, #0x85             ;R2 = 133 "…"
004051EC  1C23      MOV R3, R4                ;R3 = R4 = 0x2E (46)
004051EE  1C01      MOV R1, R0                ;R1 = R0 = 0x1450B92 (21302162)
004051F0  1C38      MOV R0, R7                ;R0 = R7 = 0x1450B92 (21302162)
004051F2  F485FBC8  BL lk4_10WriteWindow      ;Вызов  \ адрес 0x0008A986
004051F6  BCFF      POP {R0-R7}               ;Загрузить регистры R0-R7
004051F8  B011      ADD SP, SP, #0x44         ;SP = SP + 68
004051FA  BCF0      POP {R4-R7}               ;Загрузить регистры R4-R7
004051FC  BC08      POP {R3}                  ;Загрузить регистры R3
004051FE  4718      BX R3                     ;переход по адресу в R3
00405200  01450B92  DCB ".E.’"                ;данные для команды по адресу 0x4051C4
00405204  0140BB34  DCB ".@»4"                ;данные для команды по адресу 0x4051C6
00405208  0140BB0A  DCB ".@»."                ;данные для команды по адресу 0x4051D8

У меня получилось:

с

002AEA00  F19AF8C6  BL _lk3_0InitEditBuffer  ;(компенсирован) Вызов Адрес в прошивке \ адрес 0x0003DE54
002AEA04  A806      ADD R0, SP, #0x18		;R0 = SP + #24
002AEA06  F19AF8CB  BL _lk3_2WriteEditBuffer ;(компенсирован) Вызов Адрес в прошивке \ адрес 0x0003DF68

на

002AEA00  4B00      LDR R3, =0x000633E9	  ;R3 = значение по адресу (PC + 0)=[0x002AEA04]= 0x000633E9
002AEA02  4718      BX R3					;переход по адресу в R3
002AEA04  000633E9  DCB "..3é"			   ;Данные для команды по адресу 0x2AEA00
002AEA08  0000      LSL R0, R0, #0		   ;R0 = R0 << 0 = 0x1619DFE (23174654)

И

000633E8  F7DAFD34  BL lk3_0InitEditBuffer    ;Вызов Адрес в прошивке \ адрес 0x0003DE54
000633EC  A804      ADD R0, SP, #0x10         ;R0 = SP + #16
000633EE  F7DAFDBB  BL lk3_2WriteEditBuffer   ;Вызов Адрес в прошивке \ адрес 0x0003DF68
000633F2  B4FF      PUSH {R0-R7}              ;Сохранить регистры R0-R7
000633F4  4F0E      LDR R7, =ga_SwitchOffTimeField  ;R7 = значение по адресу (PC + 56)=[0x00063430]= 0x01619DFE
000633F6  480F      LDR R0, =fx_pos           ;R0 = значение по адресу (PC + 60)=[0x00063434]= 0x015D4E66
000633F8  242E      MOV R4, #0x2E             ;R4 = 46 "."
000633FA  8004      STRH R4, [R0, #0]         ;слово по адресу [R0 + 0] = R4
000633FC  210E      MOV R1, #0xE              ;R1 = 14
000633FE  8041      STRH R1, [R0, #2]         ;слово по адресу [R0 + 2] = R1
00063400  217E      MOV R1, #0x7E             ;R1 = 126 "~"
00063402  8081      STRH R1, [R0, #4]         ;слово по адресу [R0 + 4] = R1
00063404  2112      MOV R1, #0x12             ;R1 = 18
00063406  80C1      STRH R1, [R0, #6]         ;слово по адресу [R0 + 6] = R1
00063408  480B      LDR R0, =f_font           ;R0 = значение по адресу (PC + 44)=[0x00063438]= 0x015D4E3E
0006340A  2107      MOV R1, #0x7              ;R1 = 7
0006340C  7001      STRB R1, [R0]             ;байт по адресу [R0] = R1
0006340E  1C38      MOV R0, R7                ;R0 = R7 = 0x1619DFE (23174654)
00063410  F3DEFA66  BL strlen                 ;Вызов Адрес в прошивке \ адрес 0x004418E0
00063414  2200      MOV R2, #0x0              ;R2 = 0
00063416  9200      STR R2, [sP]              ;слово по адресу [sP] = R2
00063418  9201      STR R2, [sP, #0x4]        ;слово по адресу [sP + 4] = R2
0006341A  2285      MOV R2, #0x85             ;R2 = 133 "…"
0006341C  1C23      MOV R3, R4                ;R3 = R4 = 0x2E (46)
0006341E  1C01      MOV R1, R0                ;R1 = R0 = 0x1619DFE (23174654)
00063420  1C38      MOV R0, R7                ;R0 = R7 = 0x1619DFE (23174654)
00063422  F7DBF972  BL lk4_10WriteWindow      ;Вызов Адрес в прошивке \ адрес 0x0003E70A
00063426  BCFF      POP {R0-R7}               ;Загрузить регистры R0-R7
00063428  B011      ADD SP, SP, #0x44         ;SP = SP + 68
0006342A  BCF0      POP {R4-R7}               ;Загрузить регистры R4-R7
0006342C  BC08      POP {R3}                  ;Загрузить регистры R3
0006342E  4718      BX R3                     ;переход по адресу в R3
00063430  01619DFE  DCB ".aкю"                ;данные для команды по адресу 0x633F4
00063434  015D4E66  DCB ".]Nf"                ;данные для команды по адресу 0x633F6
00063438  015D4E3E  DCB ".]N>"                ;данные для команды по адресу 0x63408

Multum vinum bibere, nоn diu vivere

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

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

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

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

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

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

Войти

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

Войти



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