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

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

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

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


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

VitaliyDV,

_Reg_Draw_Image_User

это чудо картинку рисует из файла, если я не ошибаюсь.

 

Ну а Драв_Бокс - точно не знаю, но по названию догадатся можно ;)

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

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

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

 

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

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

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

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

VitaliyDV,

 

это чудо картинку рисует из файла, если я не ошибаюсь.

 

Ну а Драв_Бокс - точно не знаю, но по названию догадатся можно ;)

спасибо,

а рисует из тфс или бина?

или без разницы

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

Пожалуйста дайте хорошее,подробное описание как портировать патчи мне на с x700 на d500,чета читал какието мануалы так и не допрет до меня как ето делать java script:emoticon(':nosilki:', 'smid_2')

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

d500xxx, нет и не может быть в природе хорошего и подробного описания. Представь себе, ты приходишь к психиатру и говоришь "Дайте мне хорошее, подробное описание как прожить жизнь". Задавай конкретные вопросы, постараемся дать тебе конкретные ответы.

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

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

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

 

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

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

d500xxx, нет и не может быть в природе хорошего и подробного описания. Представь себе, ты приходишь к психиатру и говоришь "Дайте мне хорошее, подробное описание как прожить жизнь". Задавай конкретные вопросы, постараемся дать тебе конкретные ответы.

Доброе утро!

Задаю конкретный вопрос :|

как нарисовать картинку?

т.е. какой код нужно прописать чтоб вывести на экран изображение.

просто нашёл место где рисуеться фон меню!

как мне сказал фриман нужно просто заменить ссылку отрисовки меню (DrawHLine) на отрисовку картинки!

помогите плиз! просто я сам допирать буду ещё недели две :)

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

как нарисовать картинку?

т.е. какой код нужно прописать чтоб вывести на экран изображение.

...

как мне сказал фриман нужно просто заменить ссылку отрисовки меню (DrawHLine) на отрисовку картинки!

Правильно сказал...

Вот, конкретный пример... Код патча "Графический фон для софт полосы" для E780:

 

.binid E780XEFI4

 

.equ SoftPix 0x113A55E8

.equ ColorTheme 0x18540E4C

.equ MainSubScreen 0x1835DB30

 

.start 0x1116F17C ;здесь заменяется переход с DrawHLine на прорисовку изображения для софт-полосы

bl display_softline

 

.start 0x113B13A8 ;прорисовка изображения для софт-полосы

display_softline:

push {r0-r3,lr}

ldr r0,=ColorTheme ;текущая цветовая схема

ldrb r1,[r0]

ldr r2,=0x02F70 ;размер изображения в формате ani (в hex)

mul r1,r2

ldr r0,=SoftPix ;ссылка на изображения (4 изображения для каждой цв.схемы)

add r0,r0,r1

ldr r1,=MainSubScreen+176*197*4 ;вывод изображения на экран, 176 - отсчитывая справа, 197 - отсчитывая сверху, 4 - кол-во цв.схем (?)

add r2,r2,r0

 

;ну а дальше идет проверка - какая цв.схема установлена в данный момент (поправьте, если я ошибся) и завершение кода...

q1: ldrb r3,[r0]

strb r3,[r1,1]

 

ldrb r3,[r0,1]

strb r3,[r1]

 

ldrb r3,[r0,2]

strb r3,[r1,2]

 

add r0,3

add r1,4

cmp r0,r2

bne q1

pop {r0-r3,pc}

 

.data

 

 

Вот, ссылка на патч...

VitaliyDV, смотри... разбирайся...

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

Longhair,

Спасибо вечером попробую разобраться! :44:

Пробовал,разбирался и возникла такая проблема:

при компиляции происходит ошибка:

"адресация команды bl выходит за пределы допустимого"

как решить эту проблему?

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

VitaliyDV,

такая ошибка возникает, если код вызываемой ф-ции слишком далеко. Правится так называемым длинным переходом.

Пример

PUSH {R0-R2}
Ldr r0,=адресс_функции+1
STR R0, [SP, #8]
POP {R0,R1,PC}

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

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

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

 

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

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

VitaliyDV,

такая ошибка возникает, если код вызываемой ф-ции слишком далеко. Правится так называемым длинным переходом.

Пример

PUSH {R0-R2}
Ldr r0,=адресс_функции+1
STR R0, [SP, #8]
POP {R0,R1,PC}

Сейчас более актуальным стал дальний переход такого вида:

 

...
blx j_my_function
...

j_my_function:
.arm
  ldr r12,=my_function+1
  bx r12
.data

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

написал я такой код:

.start 0x10DC6F6C --переход где вызываеться  DrawHLine
PUSH {R0-R2}
Ldr r0,=Reg_Draw_Image+1
STR R0, [SP, #8]
POP {R0,R1,PC}

.start 0x11752074
Reg_Draw_Image:
push {r0-r3,lr}
ldr r0,=0x107D9A80; адрес картинки (находиться в бине)
add r0,r0,r1
mov r0,240;  ширина картинки
str r0,[sp]; сохраняем в стек
mov r0,222;  высота картинки
str r0,[sp]; сохраняем в стек
add r2,r2,r0
pop {r0-r3,pc}

.data

 

собирал его (код) по"частям" с этой ветки.

наверно поэтому и не работает :93:

при нажатии меню тело долго думает и перезагружаеться

помогите что "не дописал" ???

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

VitaliyDV,

что то все у тебя запутано...

 

Ну во-первых:

 

mov r0,240;  ширина картинки
str r0,[sp]; сохраняем в стек
mov r0,222;  высота картинки
str r0,[sp]; сохраняем в стек

Ширину и высоту сохраняешь в одну и туже ячейку стека, следовательно, ширина не сохраняется...

 

Во-вторых:

 

add r0,r0,r1

и

 

add r2,r2,r0

 

при вызове функции передаются значения r1 и r2 ? Иначе их неоткуда брать...

 

Ну и в-третьих:

 

.start 0x10DC6F6C --переход где вызываеться  DrawHLine
PUSH {R0-R2}
Ldr r0,=Reg_Draw_Image+1
STR R0, [SP, #8]
POP {R0,R1,PC}

Откуда переход на эту конструкцию? Он обязательно должен быть bl...

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

VitaliyDV,

 

 

Ну и в-третьих:

 

.start 0x10DC6F6C --переход где вызываеться  DrawHLine
PUSH {R0-R2}
Ldr r0,=Reg_Draw_Image+1
STR R0, [SP, #8]
POP {R0,R1,PC}

Откуда переход на эту конструкцию? Он обязательно должен быть bl...

если ставить bl ,то компилятор выдаёт:"адресация команды bl выходит за пределы допустимого"

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

если ставить bl ,то компилятор выдаёт:"адресация команды bl выходит за пределы допустимого"

Посты № 233, 234 и 235 этой темы :93:

GameTeam.ru - Крупнейший каталог бесплатных Java-игр!

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

Посты № 233, 234 и 235 этой темы :)

:roll:

 

VitaliyDV,

я так понял тебе нужно сделать врезку в код, тогда bl тебе вообще не нужен:

 

   ldr r0,=offset+1
  bx r0
.data

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

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

.start 0x10DC6F6C --место куда врезаюсь

ldr r0,=Reg_Draw_Image+1
  bx r0
.data

.start 0x11752074
Reg_Draw_Image:
push {r0-r3,lr}
ldr r0,=0x107D9A80; адрес картинки
add r0,r1
mov r2,240;  ширина картинки
str r2,[sp]; сохраняем в стек
mov r3,222;  высота картинки
str r3,[sp]; сохраняем в стек
pop {r0-r3,pc}

.data

правда я не совсем понял:

Во-вторых:

 

add r0,r0,r1

 

и

 

Код

add r2,r2,r0

 

при вызове функции передаются значения r1 и r2 ? Иначе их неоткуда брать...

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

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

Да, только не забудь восстановить тот код, который был затерт твоей врезкой...

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

Блин не работает ничего :idea:

пробовал и код поста № 241

и такой

.equ SoftPix 0x107D9A80

.start 0x10DC6F6C;здесь заменяется переход с DrawHLine на прорисовку изображения для софт-полосы
bl DrawPhbBg

.start 0x10F257A6;прорисовка изображения 
DrawPhbBg:
push {r0-r3,lr}
ldr r0,=DspAlarmOut;текущая цветовая схема
ldrb r1,[r0]
ldr r2,=0x02F70;размер изображения 
mul r1,r2
ldr r0,=SoftPix;ссылка на изображения (4 изображения для каждой цв.схемы)
add r0,r0,r1
ldr r1,=DrawPaintMenu+240*64*2;вывод изображения на экран, 176 - отсчитывая справа, 197 - отсчитывая сверху, 4 - кол-во цв.схем (?)
add r2,r2,r0
;ну а дальше идет проверка - какая цв.схема установлена в данный момент (поправьте, если я ошибся) и завершение кода...
q1: ldrb r3,[r0]
strb r3,[r1,1]

ldrb r3,[r0,1]
strb r3,[r1]

ldrb r3,[r0,2]
strb r3,[r1,2]

add r0,3
add r1,4
cmp r0,r2
bne q1
pop {r0-r3,pc}

.data

это переделаный(под себя) код который выложил Longhair

при обоих вариантах тело просто перезагружаеться :idea:

 

з.ы.есть подозрение что исп не ту команду вывода изобр на экран

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

VitaliyDV, во-первых

.start 0x10DC6F6C;здесь заменяется переход с DrawHLine на прорисовку изображения...

прорисовку чего ты меняешь на прорисовку изображения?

 

...во-вторых

ldr r0,=DspAlarmOut
...
ldr r1,=DrawPaintMenu+240*64*2

это ты где взял такие названия? из символики? :idea:

а сами функции правильно нашел?

(если не заработает, то попробуй третий параметр оставить каким он был, т.е. 4, а не 2)

 

...в третьих

ldr r2,=0x02F70;размер изображения

у тебя размер изображения не тот...

2F70 это картинка, размером 12144 Кб, в формате ani, т.е. та, которая была в патче "Графический фон для софт полосы".

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

объясняю:

нашёл место где рисуеться фон меню!

нашёл точно т.к.при замене этого перехода на нули пропадает фон вообще!(т.е.всё прозрачно тока изобр накладываеться)(проподает в обоих схемах)

нужно с этого места перейти на свободное в проше(напр картинку какую-нить)

там написать код для выведения на экран картинки!

размером 222*240.

 

попробуй третий параметр оставить каким он был, т.е. 4, а не 2

просто в д600 2 цветовых схемы.

 

картинку я "пытаюсь" нарисовать из бина.

поэтому размер даже не знаю.

 

можно ли его убрать?(запрос на размер картинки)

 

DspAlarmOut-это в д600е проверка цвет. схем!

а вот насчёт DrawPaintMenu действительно не уверен!

что нужно написать чтоб просто (без размерев,без проверки цвет. схем)

вывести картинку на экран???

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

картинку я "пытаюсь" нарисовать из бина.

поэтому размер даже не знаю.

222*240

размер твоей картинки будет 0x27060

Вычисляется оч.просто :idea:: картинка, размером 240х222, конвертируется в формат ANI 18-bit. Затем смотришь размер файла, и переводишь его в Hex...

Да, размер еще можно в ResMan'е посмотреть :ak:

 

DspAlarmOut-это в д600е проверка цвет. схем!

а вот насчёт DrawPaintMenu действительно не уверен!

VitaliyDV, чтобы это проверить, тебе нужно найти в своей прошивке адреса использования ColorTheme и MainSubScreen, и тогда ты узнаешь адреса этих функций для своей прошивки :idea:

Для D500XEEG3:

.equ ColorTheme 0x18AC986E

.equ MainSubScreen 0x18DFA444

 

просто в д600 2 цветовых схемы.

Я знаю, что 2. Просто я не уверен, что этот параметр показывает кол-во цвет.схем. Код этот писал не я, а Фриман.

Если что - пробуй менять этот параметр... экспериментируй :)...

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

Продолжаю мучить Вас Господа и мой телефон :132:

ничего у меня не выходит :Laie_67:

решил просмотреть исходник от ниагара(д900)

там есть такой код

JavaMenuBgDraw:
bl IsThemeMenu
bne m61
mov r0,r3
mov r3,240
lsr r2,r1,0x10
mov r1,0
bl DrawPaintMenu
b m62
m61:
.insertbin 0x1094867C,6
bl DrawHLine
m62:
ldr r0,=0x10948686+1
bx r0
.data

я так понял что это патаметры меню в ява!

что такое lsr r2,r1,0x10 ?

и m61:

.insertbin 0x1094867C,6

bl DrawHLine

m62:

ldr r0,=0x10948686+1

bx r0

подскажите пожалуйста :44:

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

что такое lsr r2,r1,0x10 ?

и m61:

.insertbin 0x1094867C,6

bl DrawHLine

m62:

ldr r0,=0x10948686+1

bx r0

подскажите пожалуйста :)

Тебе не понятны сами команды?

 

lsr - логический сдвиг вправо;

.insertbin - думаю из названия понятно, включение в код данных;

ну а остальное вроде ты должен знать :bx:

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

Тебе не понятны сами команды?

 

lsr - логический сдвиг вправо;

.insertbin - думаю из названия понятно, включение в код данных;

ну а остальное вроде ты должен знать :)

я не знал тока lsr

просто хотел уточнить!

хочеться как-то "добить" это дело

ато руки опускаються. нифига не получаеться!

СПАСИБО! :bx:

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

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

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

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

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

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

Войти

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

Войти



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