Firmware MT13x9

Editando Firmwares Mediatek : O ícone do ZOOM

Texto publicado em 07/06/2007

Em vários firmwares Mediatek (mas não em todos) quando você seleciona um nível de zoom, o ícone de zoom fica na tela permanentemente, junto com um texto indicando o nível de zoom escolhido (vamos chamar isso de “mensagem de zoom”).

Eu acho que esse é o comportamento correto e desejável, porque eu quero saber a qualquer momento que a imagem que está na tela não é a “normal” do filme. Porém algumas pessoas consideram a presença da mensagem na tela terrívelmente incômoda. Eu não tenho problemas com isso por dois motivos:

  • Considero que assistir qualquer coisa com o zoom (IN) ativado é um sacrilégio 🙂
  • Meu cérebro filtra imagens estáticas na tela. Depois de um curto intervalo de tempo eu deixo de notar a mensagem.

De qualquer forma, este texto explica como modificar o firmware para que a mensagem de zoom desapareça após cerca de 5 segundos. É baseado no Proview DVP-858, mas a técnica é a mesma para outros aparelhos, mudando apenas alguns valores.

Nota: Este patch/hack só desliga a mensagem de zoom. No DVP-858, apenas em DVD-Video, também é exibido um guia de Pan&Scan no canto direito inferior que vai permanecer na tela enquanto o zoom estiver ativado. Veja o exemplo abaixo:

A imagem é de um DVD-Video widescreen com um zoom de 4X no DVP-858 (a imagem deveria estar ocupando a tela toda na altura, mas falarei sobre esse problema no review do aparelho). A mensagem de zoom é a branca superior. O guia de Pan&Scan é o quadrado translúcido branco com um quadrado translúcido azul interno. Esse guia não é removido pelo patch.

A explicação de como o patch é feito foi dada pelo hacker Stanislav “cax” Borutsky (a.k.a borus) no documento Patching_HU3899_from_A_to_Z.txt. O trecho que nos interessa é este aqui:

The hex sequence we are going to search appears twice:
once for DivX/MPG mode, another for DVD playback.

After the sequence there should be code that loads into registers R4,R5
number of zoom message in "Data Part->OSD->OSD Languages2->Language 1[00]" (MTK ReMaker).
The number is a 2-byte long value HHLL (for example, 0x207 means HH=0x02, LL=0x07)

You can read more about it in the "Info - OSD Text Initialization.rtf" document.

Usually loading of HHLL into R4,R5 looks like the following:

7D LL     mov R5, LL
7C HH     mov R4, HH

and the sequence you should use in this case is:
90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF 7D LL 7C HH
(xx is "any byte can be here" wildcard)

What to patch in it: 7B FF => 7B 08

Neste texto eu vou traduzir a explicação de borus de um jeito mais didático. 🙂

No final, você também terá aprendido uma ou duas coisas sobre firmwares Mediatek que serão úteis em outros hacks.

Números de mensagem

Cada mensagem exibida na tela tem um número. Para podermos localizar no firmware os pontos onde a mensagem de zoom é exibida, primeiro precisamos saber o número da mensagem de zoom. Isso pode ser feito facilmente com o mtkremaker:

  1. Expanda a árvore até selecionar Language 1 (00);
  2. Clique na primeira mensagem e depois com as setas do teclado vá rolando as mensagens até…
  3. … o ícone que representa o zoom ser exibido na seção inferior. Esta mensagem é a mensagem de zoom.

No exemplo, o número que procurávamos é 0229h

“\3d” é uma variável. Em seu lugar é exibido 2X, 3X, 4X, 1/2X, 1/3X, 1/4X… dependendo do nível de zoom escolhido

No firmware existem dois pontos onde a mensagem de zoom é exibida: um para DVD-Video e outro para avi/.mpg. Nos dois pontos precisamos mudar o tempo de exibição. Devemos procurar pela seguinte sequëncia de bytes:

90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF 7D LL 7C HH

Onde “xx” é um coringa que quer dizer “qualquer valor” e “LL HH” é o número da mensagem de zoom, com os bytes invertidos. Como determinamos que para esse firmware o número é 0229, a seqüência que devemos procurar é:

90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF 7D 29 7C 02

Procurando a seqüência de bytes no firmware

O trecho que procuramos sempre estará na seção 8032 do firmware. Como a seção 8032 não é armazenada comprimida, como acontece com a seção ARM, você pode procurar diretamente com um editor hexa no firmware. Porém é sempre recomendável que você trabalhe apenas com a seção 8032, para não acabar alterando outras seções por acidente. Para fazer isso, use o mtkremaker para salvar a seção 8032 inteira em um arquivo separado.

Se você sabe usar um editor hexadecimal qualquer, use-o. Aqui eu vou explicar como é feito no freeware XVI32, que permite a busca fácil de seqüências hexa com caracteres coringa.

Abra a seção 8032 do firmware no XVI32

Certifique-se de que o editor está no modo overwrite

Clique em Search – Find para abrir o diálogo de busca:

Certifique-se de que tudo está selecionado como acima.

Você vai preencher com a string:

90 2E 2E 74 01 F0 A3 74 2E F0 A3 74 2E F0 7B FF 7D 29 7C 02

Note que essa é a mesma string da qual falamos antes, com os coringas substituídos por “2E”

90 xx xx 74 01 F0 A3 74 xx F0 A3 74 xx F0 7B FF 7D 29 7C 02

porque este é o “coringa” (joker) default do XVI32:

Na imagem acima, a seqüência começa com “90”. O “9” não coube na tela.

O XVI32 vai se posicionar no início da primeira ocorrência:

clique sobre o primeiro “FF” e digite “08”

Tecle F3 para procurar a próxima ocorrência e repita a edição (lembre-se de que existe uma ocorrência para DVD-Video e outra para .avi/.mpg)

Atenção: se a string aparecer mais de duas vezes, algo está errado.

Se a string não for encontrada, seu caso é mais complicado que o padrão.

Salve a seção 8032

Com o mtkRemaker, substitua a seção 8032 original pela que você acabou de modificar.

Teste o novo firmware no aparelho.

Esta página usa a biblioteca javascript freeware overlib

Esta página foi visualizada vezes desde desde 07/06/2007

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>