Страница 1 из 1

Что такое Opcode? Делаем своими руками.

Добавлено: 07.09.2007 23:09
Visor
Что такое Opcode? Делаем своими руками.

--------------------------------------------------------------------------------

За убитые по неосторожности телефоны я ответственности не несу! Внимательно читаем, вникаем и только потом эксперементируем с созданием опкодов.

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

И так, что же такое Opcode и какова их связь с настройками, которые мы меняем при помощи программы P2kTools и других?
Ответ очень прост. Opcode представляет собой последовательность команд, вводимых нами в телефон, записанных в десятичной системе исчисления. И всё бы хорошо, если бы не пара НО. Все команды в меню Opcode надо вводить в десятичной системе исчисления, а телефон нам показывает все числа в шестнадцатеричной. Ну а если мы по опкоду хотим восстановить те биты, которые изменяем (ставим галочки в P2kTools), то потребуется ещё и перевод в двоичную систему исчисления. В общем, придётся помучить стандартный инженерный виндосовский калькулятор по полной . Давайте перейдём к наглядному примеру для лучшего усвоения материала.
Вход в меню Opcode (сервисное меню) осуществляется быстрым нажатием кнопок Меню048263* Если всё введено правильно – появляется надпись “Opcode:”. На данный момент мне известно четыре сервисные команды:
• 10 – установить
• 18 - выполнить
• 32 – чтение
• 47 – запись
Нам понадобятся только две последние (32 и 47) т.к с остальными пока не всё ясно .

Ещё раз хочу предупредить о том, что опкоды надо вводить очень аккуратно, особенно команду 47. стоит вам ошибиться хоть в одной цифре и вы уже не сможете вернуть всё назад при помощи телефона!

Пример: посмотрим в FAQ тему Карта правки seem Motorola RokrE1 и выберем интересующий на пункт (в моём примере это будет включение поддержки голосовых меток).

В карте правки seem мы видим, что для активации данного пункта меню нам надо в SEEM 0032_0001 присвоить значение 1 (в двоичной системе исчисления) биту 0 в байте 1E (шестнадцатеричная система исчисления).

Теперь нам нужно прочесть этот байт, чтобы в случае неудачи можно было вернуть байту его исходное значение. Вводим команду чтения (32) и жмём ОК.
На экране появляется “страшная“ надпись «Field 1:». Field 1 – это номер seem. В моём примере им является 0032. Переводим его в десятичную систему исчисления и получаем цифру 50, которую вводим и жмём ОК.
Теперь на экране не менее “страшная“ надпись «Field 2:». Field 2 – номер записи. В примере им является 0001. Т.к 1 в любой системе исчисления 1, то переводить её никуда не нужно. Смело пишем 1 и тыркаем ОК.
Следующая надпись - «Field 3:». Field 3 – это байт, с которого мы хотим увидеть содержимое записи 0001. В нашем случае это 1E. При переводе в десятичную систему получаем 30, вводим и жмём ОК.
Появляется надпись «Field 4:». Field 4 – количество байт, отображаемых на экране, начиная с указанного в Field 3. Нам требуется только 1, что мы вводим и жмём ОК.
На экране видим следующее:

F1:0
F2(D):07

07 в поле F2(D) и является значением нужного нам байта 1Е записи 0001 в SEEM 0032 (не забываем, что число в шестнадцатеричной системе исчисления. PS У меня на телефоне поддержка включена, так что у вас будет другое значение (скорее всего или 06 или 0), отличное от 07, его и надо запомнить для отката!). Переводим число в поле F2(D) в двоичную систему отсчёта и получаем 111 (у вас другое число, начинающееся с 0 справа!).
Нам нужно присвоить биту 0 значение 1. Тут главное не ошибиться. ВНИМАНИЕ: отсчёт битов ведётся справа с нуля!!! (самое правое число соответствует нулевому биту)

Для наглядности напишу так:
Что у меня получилось : 0 0 0 0 0 1 1 1
Соответствующие биты: 7 6 5 4 3 2 1 0

Как видно из моего примера, у меня включены биты 0,1 и 2, а все остальные выключены. У вас вместо 1 над битом 0 будет тоже стоять 0.

Для присвоения биту 0 значение 1 надо просто записать то, что у вас получилось с заменой 0 на 1 справа (в моём случае без изменений). Далее переводим то, что у нас получилось в десятичную систему исчисления, в моем случае получается 7 и запоминаем его.

Теперь приступаем к созданию своего первого опкода и записи его не телефон .

Для записи значения на телефон нам нужно воспользоваться командой 47, что мы и делаем. Ну а дальше делаем всё так же как было описано для команды чтения. В конце у нас появляется надпись «Field 5 (D):». Тут-то мы и вводим получившееся у нас число (в моём примере 7).
Далее видим надпись F1:0, которая означает, что всё прошло успешно. Остаётся только перезагрузить телефон и радоваться появившейся поддержке голосовых меток меню

PS Для тех кто ещё не понял какой опкод у нас получился: 47*50*1*30*1*7.

Re: Что такое Opcode? Делаем своими руками.

Добавлено: 08.09.2007 15:03
АРТЕМК@
Стоит уточнить что фход в меню опкодов разный на разных прошах он может осуществляться клавишами menu+0 или menu+0+0

__________________
Blaze
Это зависит от примененного патча.