 Jefferson,  12 de agosto de 2007
publicado em 12/08/2007
Como regra geral, tenha em mente que Engenharia Reversa é algo muito complicado e não sou especialista nisso (não sou especialista em PN). Eu preciso me basear em documentação e/ou exemplos pré-existentes. Se já não existe um aparelho que faça o que você quer, existem boas chances de que eu não possa fazer. Não é exatamente assim, porque eu conheço aparelhos e firmwares que muitos de vocês não conhecem, mas usem isso como regra geral.
E mesmo que exista um aparelho que faz, isso pode ter sido conseguido com o auxílio do código-fonte (e não por Engenharia Reversa), podendo ser extremamente complicado de duplicar.
A maioria das questões abordadas neste FAQ tem resposta “não” e “talvez”, porque o que tem resposta “SIM” já foi implantado ou está devidamente documentado em algum lugar no meu blog ou no meu fórum.
Este FAQ não se aplica apenas ao Proview DVP-858.
Dá para corrigir o problema do Packet Bitstream em XviD?
Dá para dar suporte a multisessão em mídia -R/+R?
Muito complicado. Ainda não existe um modo de resolver isso que não seja usando partes do firmware de outro aparelho. Além de ser naturalmente complicado emendar partes do firmware de aparelhos diferentes, quando funciona geralmente provoca efeitos colaterais. Eu só pretendo dar atenção a esses assuntos quando tiver notícia de que algum hacker conseguiu resolver o problema modificando diretamente o código.
É possível fazer um ZOOM mais “fluido”?
É possível dar ZOOM Out a um aparelho que não tem a função?
Não existe nenhuma documentação sobre como funciona o ZOOM, nem tenho qualquer notícia de alguém que tenha conseguido isso por Engenharia Reversa.
É possível dar suporte a tags ID3 a um aparelho que não tem?
Talvez. Existe documentação sobre isso e já analisei o problema no Proview DVP-858, mas dá muito trabalho. Envolve implantar muito código, descobrir muitos endereços livres (ou pelo menos “usáveis”) de memória, requer bastante espaço sobrando no banco certo do firmware, etc. E não temos nem mesmo a certeza de que todo o trabalho vai dar resultado, por isso não é uma tarefa que qualquer um vá abraçar à toa.
É possível fazer a seleção de legendas com nome diferente do filme, direto por escolha no browser?
Talvez. Mas não existe documentação nem qualquer precendente.
É possível fazer com que o aparelho suporte a carga de legendas em mídia diferente da do filme, como ocorre no Philips DVP642?
Em primeiro lugar, é bom ter em mente que o DVP642 provavelmente consegue fazer isso por acaso. É um “efeito colateral” da forma como foi programado. Uma programação mais cuidadosa certamente apagaria a memória toda vez que a mídia fosse trocada. E como o programador do DVP642 não teve esse cuidado o usuário acabou ganhando esse recurso extra.
Tendo isso em mente, talvez seja possível implantar isso em um firmware Mediatek. Mas antes disso é necessário conseguir fazer com que as legendas sejam selecionáveis no browser, como no DVP642. Depois se certificar de que a mudança de mídia não apague as regiões de memória que contém a legenda ou apontam para ela. E desligar a carga de arquivos de legenda com mesmo nome que o filme. Não existe documentação sobre como isso pode ser feito, mas é algo que parece viável. Porém tudo isso é feito no código ARM, com o qual eu ainda tenho familiaridade ZERO.
Dá para ter suporte a outros codecs?
Primeiro, vamos usar a terminologia correta: não existem codecs em um DivX player. O que existe é um decodificador. Tendo estabelecido isso: do ponto de vista eletrônico, não é razoável crer que o decodificador seja atualizável por firmware. Acredita-se que toda decodificação esteja fisicamente implantada no chip.
É possível dar suporte a outros containers, como o Matroska?
Talvez. Porém ainda não se sabe como funciona a extração dos streams de audio e video de um container no firmware (é toda feita no código ARM) por isso não há nenhuma indicação clara de que o suporte a um novo container seja possível. Ainda assim, continuará sendo obrigatório que os streams de áudio e vídeo dentro do container sejam suportados.
Dá para quebrar a proteção (HDCP, Macrovision, etc)?
Não existe documentação sobre isso e mesmo que houvesse colocaria o meu trabalho em terreno perigoso. Não pretendo trabalhar com nada disso.
Tem como fazer o aparelho ser compatível com DivX HD (qualquer coisa maior que 720×576)?
Não. Isso requer processadores mais poderosos e mais memória.
A legenda em DivX está boa, mas a dos DVDs é diferente!
Ao contrário da legenda externa DivX, cuja aparência é determinada pelo aparelho, a aparência das legendas de um DVD-Video é deteminada pela produtora do filme e não pode ser alterada por nenhum hack no aparelho.
Eu estou com o problema X, que mesmo tendo instalado a versão Y do firmware Z não foi resolvido!
Era para ser? Está na lista de melhorias divulgada pelo desenvolvedor do firmware?
A versão X do firmware alternativo possui a característica Y?
Se essa é uma característica ausente no firmware oficial no qual o autor do firmware se baseou e este autor não colocou-a na lista de novidades, não. Se você não sabe o que o firmware oficial faz ou não, instale, teste e compare.
Dá para você portar a modificação que você fez no aparelho X para o aparelho Y?
Se eu tenho o aparelho Y, vai depender do meu tempo e das condições oferecidas pelo firmware do aparelho para suportar as mudanças. Se eu não tenho o aparelho Y, esqueça. Já é suficientemente complicado e demorado desenvolver modificações tendo o aparelho para testá-las.
Quando…?
Você tem previsão…?
Deixe para fazer esse tipo de pergunta a quem você estiver pagando. Quem trabalha de graça não gosta de ouvir essas questões (eu fico indignado com elas).
(copyright 2007 – Jefferson Ryan)
Esta página foi visualizada vezes desde desde 12/08/07
 Jefferson,  05 de julho de 2007
Texto publicado em 05/07/2007 e ainda em rascunho
A explicação que vou dar a seguir é um dos fundamentos necessários para se implementar cores de fontes selecionáveis pelo setup. Mas também é importante quando você quer simplesmente corrigir alguns problemas de cores “amarradas” (muda a cor da legenda e bagunça a cor do texto no browser).
Eu uso como exemplo o firmware do Proview DVP-858, mas por comparação você poderá encontrar as rotinas necessárias na maioria dos outros firmwares. A provável exceção são LG e Pionneer, que são muito diferentes do “normal”.
O conceito de janelas
Um firmware MT13×9 tem a tela loteada em “janelas”. Todo desenho, seja de gráficos ou texto, é sempre feito tendo como alvo uma janela e não a tela. Isso provavelmente é feito para simplificar o posicionamento de objetos, porque você desenha tudo dentro da janela, com coordenadas relativas a ela e não às coordenadas físicas da tela. Aí você consegue reposicionar blocos inteiros de objetos simplesmente mudando as coordenadas da janela, sem precisar mexer nas coordenadas dos objetos.
Você pode ver todas as janelas definidas em um firmware com o software mtkWindows.
Falarei mais sobre janelas um outro dia.
Excetuando os vídeos, a cor de tudo o que é exibido em um firmware Mediatek MT13×9 (ou seja, tudo o que é desenhado pelo processador) depende de palettes (paletas). Cada janela é associada a uma e apenas uma palette (mas várias janelas podem usar a mesma palette). Você pode ver e alterar as palettes abrindo o firmware com o mtkWindows.
 |
No mtkWindows as cores são numeradas de 0 a 15, mas tenha em mente que no firmware a numeração é hexadecimal, de 0×0 a 0xF.
Para evitar ambigüidades, eu vou chamar daqui em diante cada uma das 16 cores da palette de “célula”.
“Used by” mostra que janelas usam esta mesma palette. |
Idealmente, cada janela deveria ter sua própria palette, mas nos firmwares Mediatek é comum que várias janelas compartilhem a mesma. Isso só é problema quando você quer trocar a cor de uma das 16 células da palette, porque a mudança tem resultados difíceis de prever. Na maioria das vezes a janela não usa todas as células da palette. Talvez, por exemplo, a janela 0×11 use apenas as células 2 e 3, enquanto a janela 0×0E usa apenas as céluals 4 e 5, mas não conte com isso. Às vezes duas ou mais janelas usam as mesmas células, sem necessidade. Se você pensar bem, verá que no caso de cada janela usar células diferentes da palette, isso justifica várias células com a mesma cor.
Para desenhar qualquer coisa, o firmware nunca diz explicitamente com que cor vai ser feito o desenho. Ele diz quais células vai usar.
Mudando as cores de uma operação
A forma mais básica de se fazer isso é clicando duas vezes sobre a célula cuja cor você quer mudar e selecionando uma nova cor. Mas como essa mudança afeta tudo o que é desenhado na janela e pode ter efeitos indesejáveis em outras janelas ou até mesmo em outros objetos na mesma janela (como é o caso dos ícones e do texto no browser), às vezes é necessáio mudar as células que uma operação de desenho específica usa. É isso que eu vou explicar como é feito.
O Proview DVP-858 usa os endereços XRAM_FC07 e XRAM_FC08 para armazenar as células que serão usadas para exibir um determinado texto. Esses endereços não são os mesmos de firmware para firmware.
A ordem das cores, pelo menos no firmware do Proview, é:
- XRAM_FC07: Contorno
- XRAM_FC08: Preenchimento
Para mudar as células, você precisa mudar os valores armazenados em XRAM_FC07 e XRAM_FC08 antes da rotina de desenho (OSD_TextColor) ser chamada.
As listagens abaixo são da versão 20.07 do firmware!
É aqui que são definidas as cores do texto do browser no DVP858.
B1:A502
B1:A505
B1:A507
B1:A508
B1:A509
B1:A50A
B1:A50B
B1:A50C
B1:A50D
B1:A50E
B1:A510 |
90 FC 07
74 02
F0
A3
04
F0
E4
FB
FD
7F 10
12 1D E0 |
mov DPTR, #XRAM_FC07
mov A, #2 ; Célula #2 – Contorno
movx @DPTR, A
inc DPTR
inc A ; Célula #3 – Preenchimento
movx @DPTR, A
clr A
mov R3, A
mov R5, A
mov R7, #0×10 ;Janela 0×10
lcall OSD_TextColor |
Janela de exibição da duração de MP3, contagem de arquivos, etc
B1:6370
B1:6373
B1:6375
B1:6376
B1:6377
B1:6378
B1:6379
B1:637A
B1:637B
B1:637C
B1:637E |
90 FC 07
74 03
F0
A3
14
F0
E4
FB
FD
7F 0F
12 1D E0 |
mov DPTR, #XRAM_FC07
mov A, #3 ; Célula #3 – Contorno
movx @DPTR, A
inc DPTR
dec A ; Célula #2 – Preenchimento
movx @DPTR, A
clr A
mov R3, A
mov R5, A
mov R7, #0xF ;Janela 0×0F
lcall OSD_TextColor |
E agora um trecho de sub_style, onde é definida a cor da legenda:
B1:DCB1
B1:DCB4
B1:DCB6
B1:DCB7
B1:DCB8
B1:DCB9
B1:DCBA
B1:DCBB
B1:DCBC
B1:DCBD
B1:DCBF |
90 FC 07
74 03
F0
A3
14
F0
E4
FB
FD
7F 13
12 1D E0 |
mov DPTR, #XRAM_FC07
mov A, #3 ; Célula #3 – Contorno
movx @DPTR, A
inc DPTR
dec A ; Célula #2 – Preenchimento
movx @DPTR, A
clr A
mov R3, A
mov R5, A
mov R7, #0×13 ;Janela 0×13
lcall OSD_TextColor |
Perceba que as três janelas usam as mesmas células, mas o browser usa as cores invertidas. Note que a primeira célula declarada é a 2 e não a 3, como nos casos restantes.
Para fazer com que o browser deixe de ser invertido, basta mudar a primeira célula e trocar a instrução INC A por uma DEC A
B1:A505 mov A, #3
B1:A507 movx @DPTR, A
B1:A508 inc DPTR
B1:A509 DEC A
Você também pode experimentar usar células diferentes, mas perceba que por causa da forma como o assembly é otimizado você está preso a usar células adjacentes. Por exemplo, a mudança abaixo faz o browser usar as células 14 e 13
B1:A505 mov A, #0×0E
B1:A507 movx @DPTR, A
B1:A508 inc DPTR
B1:A509 DEC A
Usar células não-adjacentes é possível, mas requer a criação de novas sub-rotinas.
Como é possível usar essa informação para ter cores selecionáveis no setup?
Como eu disse no início do texto, esta é apenas uma das coisas que você precisa saber. Em resumo: depois de criar um novo menu para permitir a escolha da cor e gravar os valores selecionados na eeprom, você vai ter que mudar a rotina Sub_Style para em vez de usar números de células fixos usar números lidos da eeprom.
A criação de menus fica para um outro tutorial, depois que eu tiver aprendido, claro…
Esta página foi visualizada desde 5/07/07.
 Jefferson,  30 de junho de 2007
Este texto tem status de rascunho – publicado em 30/06/2007
Algumas coisas que você precisa ter em mente para entender o texto desta página
- O disassemblador usado pelos programadores do grupo MT13×9 é o IDA. O IDA não é indispensável, mas ajuda muito a localizar código e entender o que se passa. Você precisa do IDA e dos scripts criados pelo grupo MT13×9, que formatam o código de uma forma “legível” (se é que se pode dizer isso de assembly);
- Você não pode modificar código no IDA. Para editar o arquivo você ainda precisa de um editor hexadecimal;
- Examinando os arquivos de script (*.idc) você pode aprender coisas interessantes, incluindo qual a seqüência de bytes usada para localizar determinadas rotinas. Quando uma determinada rotina não é detectada automaticamente você pode examinar a seqüência no script e buscando por partes dela pode acabar determinando a seqüência usada no seu firmware;
- Na notação usada pelos programadores do MT13×9, “B4:13C4″ significa “offset 13C4 da página (bloco) 4 do código”. Em alguns lugares você também vai ver “B4_13C4″, que significa a mesma coisa;
- A notação hexadecimal usual para um técnico em eletrônica (pelo menos foi essa que eu aprendi) consiste em colocar o sufixo ‘h’ (ex: 22h). Neste texto eu vou usar a forma usada por programadores C, que consiste em colocar o prefixo ‘0x’ (ex: 0×22), porque esta é a notação usada no IDA e pelos programadores do grupo MT13×9;
- “XRAM” é a memória externa do 8032. Ela é usada como rascunho e para transferir valores entre rotinas.
As tabelas de controle remoto
Usualmente, um firmware Mediatek contém duas grandes tabelas que definem o que é feito quando cada tecla do controle remoto é pressionada. Uma tabela é exclusiva para DVD-Video e a outra para *.avi/*.mpg. Para simplificar, vamos chamar essas tabelas de “DVD” e “ISO” (esse é o termo usado no código-fonte).
O formato da tabela segue a estrutura de uma grande instrução CASE. Com um endereço de 16 bits (o endereço da função a executar) seguido por um valor de 8 bits (o código da respectiva tecla do remoto).
É importante notar que esse código nada tem a ver com o código transmitido pelo remoto, que pode ser completamente diferente. Esse código já é o resultado da função que decodifica o sinal do remoto e nesse ponto geralmente são os mesmos, não importando o aparelho ou remoto usado. Não é possível usar um outro controle remoto mexendo nos valores destas tabelas.
Você encontra uma relação completa dos códigos-padrão para teclas da Mediatek no arquivo IR.CFG do mtkTools 2.42 e no arquivo keydef.h do código-fonte. Nenhuma das duas tabelas bate 100% com os aparelhos que testei, mas a keydef.h é a mais próxima.
Outra coisa que vale a pena notar é que em todos os firmwares que olhei, o buffer do controle remoto sempre está no endereço XRAM_FB00. Basta procurar por menções a esse endereço no firmware para localizar todos os pontos onde o controle remoto é verificado.
Como diferenciar a tabela DVD da tabela ISO.
Em todos os firmwares que verifiquei, os códigos 0×22 e 0×23 sempre estão presentes na tabela DVD, apontando para endereços distintos. E quando estão presentes na tabela ISO, apontam para o mesmo endereço. Esses botões devem ser TITLE e MENU (no DVP-858, certamente são), que não tem função precisa quando você não está vendo um DVD-Video.
|
Exemplo de Tabela
|
B4:4F76 .word B4_501F
B4:4F78 .byte 0
B4:4F79 .word B4_501F
B4:4F7B .byte 1
B4:4F7C .word B4_501F
B4:4F7E .byte 2
B4:4F7F .word B4_501F
B4:4F81 .byte 3
B4:4F82 .word B4_501F
B4:4F84 .byte 4
B4:4F85 .word B4_501F
B4:4F87 .byte 5
B4:4F88 .word B4_501F
B4:4F8A .byte 6
B4:4F8B .word B4_501F
B4:4F8D .byte 7
B4:4F8E .word B4_501F
B4:4F90 .byte 8
B4:4F91 .word B4_501F
B4:4F93 .byte 9
B4:4F94 .word B4_501F
B4:4F96 .byte 0xA
B4:4F97 .word B4_5027
B4:4F99 .byte 0xD
B4:4F9A .word B4_5027
B4:4F9C .byte 0xE
B4:4F9D .word B4_5027
B4:4F9F .byte 0xF
B4:4FA0 .word B4_5027
B4:4FA2 .byte 0×10
B4:4FA3 .word B4_502F
B4:4FA5 .byte 0×11
B4:4FA6 .word B4_5037
B4:4FA8 .byte 0×12 |
No exemplo ao lado temos o início de uma tabela, como visto no IDA. Os códigos de 0×0 a 0xA (geralmente, as teclas numéricas) retornam o endereço B4:501F e os códigos 0xD a 0×10 (geralmente as quatro setas) retornam o endereço B4: 5027
Note que esse é um padrão que serve para identificar esse bloco como uma tabela de controle remoto: A sequëncia de bytes de 0 a 9 intercalada por uma seqüência de words idênticas, seguida por uma seqüência de 0xD a 0×10 que também é intercalada por uma certa word, diferente da anterior.
A partir desse ponto, cada tecla tem geralmente sua própria função. Só os blocos numéricos e de setas compartilham o mesmo endereço. |
Para localizar as tabelas
No IDA, procure por: ? ? 00 ? ? 01 ? ? 02 ? ? 03 ? ? 04 ? ? 05 ? ? 06 ? ? 07
No XVI32, procure por: E2 E2 00 E2 E2 01 E2 E2 02 E2 E2 03 E2 E2 04 E2 E2 05 E2 E2 06 E2 E2 07
Como eliminar possibilidades
Você pode sobreescrever uma parte do banco com FFFF e depois testar todas as teclas. As teclas que deveriam funcionar e passarem a apresentar o sinal de proibido estão na parte que você sobreescreveu.
Mas sobreescreva endereço e código. Senão você poderá travar o aparelho ao apertar uma tecla cujo endereço foi sobreescrito.
Dissecando as tabelas do Proview DVP-858
Abaixo, eu fiz uma tabela que agrupa as duas tabelas de remoto do Proview DVP-858. Células em preto significam que o Proview não tem uma atribuição para a respectiva tecla. Linhas inteiras em preto são códigos saltados. Células coloridas de uma mesma cor são células que apontam para a mesma rotina. Eu testei cada um dos códigos para confirmar suas funções, porque no dia do teste eu sequer sabia da existência de IR.CFG e keydef.h.
Códigos sem um “Botão Existente” são funções que poderiam ser usadas se o controle remoto tivesse as respectivas teclas.
A tabela ISO do Proview vai de B4:453F a B4:45C3 e a DVD vai de B4:4F76 a B4:501E
|
Código
|
Botão Existente
|
ISO |
DVD |
Observações
|
|
0×00
|
0
|
B4:45C4
|
B4:501F
|
|
|
0×01
|
1
|
B4:45C4
|
B4:501F
|
|
|
0×02
|
2
|
B4:45C4
|
B4:501F
|
|
|
0×03
|
3
|
B4:45C4
|
B4:501F
|
|
|
0×04
|
4
|
B4:45C4
|
B4:501F
|
|
|
0×05
|
5
|
B4:45C4
|
B4:501F
|
|
|
0×06
|
6
|
B4:45C4
|
B4:501F
|
|
|
0×07
|
7
|
B4:45C4
|
B4:501F
|
|
|
0×08
|
8
|
B4:45C4
|
B4:501F
|
|
|
0×09
|
9
|
B4:45C4
|
B4:501F
|
|
|
0×0A
|
_/__
|
B4:45C4
|
B4:501F
|
|
|
0×0D
|
UP
|
B4:45CF
|
B4:5027
|
|
|
0×0E
|
LEFT
|
B4:45CF
|
B4:5027
|
|
|
0×0F
|
RIGHT
|
B4:45CF
|
B4:5027
|
|
|
0×10
|
DOWN
|
B4:45CF
|
B4:5027
|
|
|
0×11
|
|
B4:45CF
|
B4:502F
|
|
|
0×12
|
Play
|
B4:45DA
|
B4:5037
|
|
|
0×13
|
Pause
|
B4:45E5
|
B4:503F
|
|
|
0×14
|
Stop
|
B4:460D
|
B4:5047
|
|
|
0×15
|
Next >>|
|
B4:4618
|
B4:504F
|
|
|
0×16
|
Prev |<<
|
B4:4623
|
B4:5057
|
|
|
0×17
|
Repeat
|
B4:462E
|
B4:505F
|
|
|
0×18
|
|
B4:4660
|
B4:5067
|
Não identifiquei |
|
0×19
|
FF
|
B4:466B
|
B4:506F
|
|
|
0×1A
|
REW
|
B4:4693
|
B4:5077
|
|
|
0×1B
|
Slow Forward
|
B4:46BB
|
B4:507F
|
|
|
0×1C
|
|
|
B4:5087
|
DVD: Slow Rewind |
|
0×1D
|
|
B4:46C6
|
B4:508F
|
DVD/ISO: STEP Forward |
|
0×1E
|
|
B4:46D1
|
B4:5097
|
DVD: STEP Rewind. DivX:Não identifiquei |
|
|
|
|
|
|
0×20
|
A-B
|
B4:46DC
|
B4:509F
|
|
|
|
|
|
|
|
0×22
|
Title
|
B4:46E7
|
B4:50A7
|
|
|
0×23
|
Menu
|
B4:46E7
|
B4:50AF
|
|
|
0×24
|
|
B4:4656
|
B4:50B7
|
Não identifiquei |
|
0×25
|
|
|
B4:50BF
|
Não identifiquei |
|
0×26
|
|
|
B4:50C7
|
Não identifiquei |
|
|
|
|
|
|
0×28
|
Audio
|
B4:473E
|
B4:50CF
|
|
|
0×29
|
Subtitle
|
B4:4749
|
B4:50D7
|
|
|
|
|
|
|
|
0×2B
|
Angle
|
B4:4754
|
B4:50E7
|
|
|
0×2C
|
Display
|
B4:475F
|
B4:50EE
|
|
|
|
|
|
|
|
0×2E
|
GOTO
|
B4:4787
|
B4:50F5
|
|
|
0×2F
|
Bookmark
|
B4:4791
|
B4:50FE
|
|
|
|
|
|
|
|
0×31
|
|
|
B4:5105
|
Não identifiquei |
|
0×32
|
Browse
|
B4:479B
|
B4:510C
|
|
|
0×33
|
Prog
|
B4:47A5
|
B4:5113
|
|
|
0×34
|
|
B4:47AF
|
B4:511A
|
ISO: A mesma função da tecla Repeat. DVD:Shuffle |
|
0×35
|
Virtual
|
|
B4:5121
|
|
|
|
|
|
|
|
0×39
|
|
|
B4:5128
|
Alterna entre Normal/PS, Normal/LB e Widescreen |
|
|
|
|
|
|
0×3D
|
Zoom
|
B4:47D2
|
B4:512F
|
|
|
0×3E
|
|
B4:47F4
|
B4:5136
|
ISO/DVD: Zoom Out |
|
|
|
|
|
|
0×41
|
|
|
B4:513D
|
DVD: Parece a mesma função da tecla Audio |
|
0×42
|
|
|
B4:5144
|
Não identifiquei |
|
|
|
|
|
|
0×57
|
|
|
B4:514B
|
DVD: Não acontece nada. Nem mesmo o sinal de proibido. |
|
|
|
|
|
|
0×68
|
|
|
B4:5152
|
DVD: Aparece:”Digitar Senha ” na tela, com um campo para digitação de seis dígitos. |
|
0×69
|
|
|
B4:5159
|
DVD:Exibe “Senha do Disco” na tela e aguarda às cegas um número e PLAY |
|
0×70
|
Skip
|
|
B4:50DF
|
|
Teclas cujos códigos não constam da tabela acima, porque são tratadas em outros lugares:
- MUTE
- VOL+
- VOL-
- POWER
- EJECT
- SETUP
- VIDEO
- P/N
- HDMI
- USB/CARD
Como mudar o comportamento das teclas
Se todas as teclas envolvidas estiverem na tabela, é simples. Basta trocar os respectivos endereços de salto.
Por exemplo, vamos fazer com que as teclas de direção façam o papel das teclas teclas NEXT, PREV, FF e REW. O exemplo abaixo mostra os saltos originais:
|
Código
|
Botão
|
ISO |
DVD |
Observações
|
|
0×0D
|
UP
|
B4:45CF
|
B4:5027
|
|
|
0×0E
|
LEFT
|
B4:45CF
|
B4:5027
|
|
|
0×0F
|
RIGHT
|
B4:45CF
|
B4:5027
|
|
|
0×10
|
DOWN
|
B4:45CF
|
B4:5027
|
|
|
|
|
|
|
|
0×15
|
Next >>|
|
B4:4618
|
B4:504F
|
|
|
0×16
|
Prev |<<
|
B4:4623
|
B4:5057
|
|
|
0×19
|
FF
|
B4:466B
|
B4:506F
|
|
|
0×1A
|
REW
|
B4:4693
|
B4:5077
|
|
Agora, com a modificação:
|
Código
|
Botão
|
ISO |
DVD |
Observações
|
|
0×0D
|
UP
|
B4:4618
|
B4:504F
|
Agora faz o mesmo que NEXT |
|
0×0E
|
LEFT
|
B4:4693
|
B4:5077
|
Agora faz o mesmo que REW |
|
0×0F
|
RIGHT
|
B4:466B
|
B4:506F
|
Agora faz o mesmo que FF |
|
0×10
|
DOWN
|
B4:4623
|
B4:5057
|
Agora faz o mesmo que FWD |
|
|
|
|
|
|
0×15
|
Next >>|
|
B4:4618
|
B4:504F
|
Inalterado |
|
0×16
|
Prev |<<
|
B4:4623
|
B4:5057
|
Inalterado |
|
0×19
|
FF
|
B4:466B
|
B4:506F
|
Inalterado |
|
0×1A
|
REW
|
B4:4693
|
B4:5077
|
Inalterado |
Note que eu não mexi no comportamento das teclas originais NEXT, PREV, FF e REW, mas se eu quisesse que elas assumissem o comportamento original das telas UP, LEFT, RIGHT e DOWN, teria sido só uma questão de usar os endereços que sobreescrevi. Note também que eu mudei o comportamento ao mesmo tempo para ISO e DVD, mas poderia ter mudado apenas um dos dois.
Outro exemplo: Ativar uma das funções ocultas do aparelho.
Como você pode ver na minha tabela, a função STEP forward do DVP-858 existe, mas não está atribuída a tecla alguma. Vamos fazer com que ela funcione quando usarmos a tecla ANGLE em modo ISO
Original:
|
0×1D
|
|
B4:46C6
|
B4:508F
|
DVD/ISO: STEP Forward |
|
|
|
|
|
|
0×2B
|
Angle
|
B4:4754
|
B4:50E7
|
|
Modificado
|
0×2B
|
Angle
|
B4:46C6
|
B4:50E7
|
Em DVD a tecla vai continuar a agir da mesma forma, mas em ISO será STEP Forward |
A tabela em outros aparelhos
Philips DVP 5965K/55 – ISO
B4:5F6D ; ---------------------------------------------------------------------------
B4:5F6D
B4:5F6D BankSw_625_B4_5F6D: ; DATA XREF: B0:B0_BS_625_B4_5F6Do
B4:5F6D ; B1:B1_BS_625_B4_5F6Do ...
B4:5F6D clr RAM_2D.5
B4:5F6F lcall BankSw_550_B4_975A
B4:5F72 jnc B4_5F7C
B4:5F74 mov DPTR, #XRAM_FB00
B4:5F77 mov A, #0xFF
B4:5F79 movx @DPTR, A
B4:5F7A clr C
B4:5F7B ret
B4:5F7C ; ---------------------------------------------------------------------------
B4:5F7C
B4:5F7C B4_5F7C: ; CODE XREF: B4:5F72j
B4:5F7C mov DPTR, #XRAM_FB00
B4:5F7F movx A, @DPTR
B4:5F80 mov R7, A
B4:5F81 clr C
B4:5F82 subb A, #0x71 ; 'q'
B4:5F84 jc B4_5F87
B4:5F86 ret
B4:5F87 ; ---------------------------------------------------------------------------
B4:5F87
B4:5F87 B4_5F87: ; CODE XREF: B4:5F84j
B4:5F87 mov A, R7
B4:5F88 lcall B4_?C?CCASE
B4:5F88 ; ---------------------------------------------------------------------------
B4:5F8B .word B4_600A
B4:5F8D .byte 0
B4:5F8E .word B4_600A
B4:5F90 .byte 1
B4:5F91 .word B4_600A
B4:5F93 .byte 2
B4:5F94 .word B4_600A
B4:5F96 .byte 3
B4:5F97 .word B4_600A
B4:5F99 .byte 4
B4:5F9A .word B4_600A
B4:5F9C .byte 5
B4:5F9D .word B4_600A
B4:5F9F .byte 6
B4:5FA0 .word B4_600A
B4:5FA2 .byte 7
B4:5FA3 .word B4_600A
B4:5FA5 .byte 8
B4:5FA6 .word B4_600A
B4:5FA8 .byte 9
B4:5FA9 .word B4_6015
B4:5FAB .byte 0xD
B4:5FAC .word B4_6015
B4:5FAE .byte 0xE
B4:5FAF .word B4_6015
B4:5FB1 .byte 0xF
B4:5FB2 .word B4_6015
B4:5FB4 .byte 0x10
B4:5FB5 .word B4_6020
B4:5FB7 .byte 0x12
B4:5FB8 .word B4_602B
B4:5FBA .byte 0x13
B4:5FBB .word B4_6053
B4:5FBD .byte 0x14
B4:5FBE .word B4_605E
B4:5FC0 .byte 0x15
B4:5FC1 .word B4_6069
B4:5FC3 .byte 0x16
B4:5FC4 .word B4_6074
B4:5FC6 .byte 0x17
B4:5FC7 .word B4_60A6
B4:5FC9 .byte 0x18
B4:5FCA .word B4_60B1
B4:5FCC .byte 0x19
B4:5FCD .word B4_60D9
B4:5FCF .byte 0x1A
B4:5FD0 .word B4_6101
B4:5FD2 .byte 0x1B
B4:5FD3 .word B4_610C
B4:5FD5 .byte 0x1D
B4:5FD6 .word B4_6117
B4:5FD8 .byte 0x1E
B4:5FD9 .word B4_6122
B4:5FDB .byte 0x20
B4:5FDC .word B4_612D
B4:5FDE .byte 0x22
B4:5FDF .word B4_612D
B4:5FE1 .byte 0x23
B4:5FE2 .word B4_609C
B4:5FE4 .byte 0x24
B4:5FE5 .word B4_6184
B4:5FE7 .byte 0x28
B4:5FE8 .word B4_618F
B4:5FEA .byte 0x29
B4:5FEB .word B4_619A
B4:5FED .byte 0x2B
B4:5FEE .word B4_61A5
B4:5FF0 .byte 0x2C
B4:5FF1 .word B4_61CD
B4:5FF3 .byte 0x2E
B4:5FF4 .word B4_61D7
B4:5FF6 .byte 0x2F
B4:5FF7 .word B4_61E1
B4:5FF9 .byte 0x32
B4:5FFA .word B4_61EB
B4:5FFC .byte 0x33
B4:5FFD .word B4_61F5
B4:5FFF .byte 0x34
B4:6000 .word B4_6218
B4:6002 .byte 0x3D
B4:6003 .word B4_623A
B4:6005 .byte 0x3E
B4:6006 .byte 0
B4:6007 .byte 0
B4:6008 .word B4_6244
B4:600A ; ---------------------------------------------------------------------------
Philips DVP 5965K/55 – DVD
B4:7A9C ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B4:7A9C
B4:7A9C
B4:7A9C BankSw_626_B4_7A9C: ; DATA XREF: B0:B0_BS_626_B4_7A9Co
B4:7A9C ; B1:B1_BS_626_B4_7A9Co ...
B4:7A9C
B4:7A9C ; FUNCTION CHUNK AT B4:787B SIZE 00000004 BYTES
B4:7A9C ; FUNCTION CHUNK AT B4:7880 SIZE 00000026 BYTES
B4:7A9C ; FUNCTION CHUNK AT B4:78E0 SIZE 00000003 BYTES
B4:7A9C
B4:7A9C clr RAM_2D.5
B4:7A9E mov DPTR, #XRAM_FB00
B4:7AA1 movx A, @DPTR
B4:7AA2 lcall B4_?C?CCASE
B4:7AA2 ; ---------------------------------------------------------------------------
B4:7AA5 .word B4_7B36
B4:7AA7 .byte 0
B4:7AA8 .word B4_7B36
B4:7AAA .byte 1
B4:7AAB .word B4_7B36
B4:7AAB ; End of function BankSw_626_B4_7A9C
B4:7AAB
B4:7AAD .byte 2
B4:7AAE .word B4_7B36
B4:7AB0 .byte 3
B4:7AB1 .word B4_7B36
B4:7AB3 .byte 4
B4:7AB4 .word B4_7B36
B4:7AB6 .byte 5
B4:7AB7 .word B4_7B36
B4:7AB9 .byte 6
B4:7ABA .word B4_7B36
B4:7ABC .byte 7
B4:7ABD .word B4_7B36
B4:7ABF .byte 8
B4:7AC0 .word B4_7B36
B4:7AC2 .byte 9
B4:7AC3 .word B4_7B3E
B4:7AC5 .byte 0xD
B4:7AC6 .word B4_7B3E
B4:7AC8 .byte 0xE
B4:7AC9 .word B4_7B3E
B4:7ACB .byte 0xF
B4:7ACC .word B4_7B3E
B4:7ACE .byte 0x10
B4:7ACF .word B4_7B46
B4:7AD1 .byte 0x11
B4:7AD2 .word B4_7B4E
B4:7AD4 .byte 0x12
B4:7AD5 .word B4_7B56
B4:7AD7 .byte 0x13
B4:7AD8 .word B4_7B5E
B4:7ADA .byte 0x14
B4:7ADB .word B4_7B66
B4:7ADD .byte 0x15
B4:7ADE .word B4_7B6E
B4:7AE0 .byte 0x16
B4:7AE1 .word B4_7B76
B4:7AE3 .byte 0x17
B4:7AE4 .word B4_7B7E
B4:7AE6 .byte 0x18
B4:7AE7 .word B4_7B86
B4:7AE9 .byte 0x19
B4:7AEA .word B4_7B8E
B4:7AEC .byte 0x1A
B4:7AED .word B4_7B96
B4:7AEF .byte 0x1B
B4:7AF0 .word B4_7B9E
B4:7AF2 .byte 0x1C
B4:7AF3 .word B4_7BA6
B4:7AF5 .byte 0x1D
B4:7AF6 .word B4_7BAE
B4:7AF8 .byte 0x1E
B4:7AF9 .word B4_7BB6
B4:7AFB .byte 0x20
B4:7AFC .word B4_7BBE
B4:7AFE .byte 0x22
B4:7AFF .word B4_7BC6
B4:7B01 .byte 0x23
B4:7B02 .word B4_7BCD
B4:7B04 .byte 0x24
B4:7B05 .word B4_7BD4
B4:7B07 .byte 0x28
B4:7B08 .word B4_7BDB
B4:7B0A .byte 0x29
B4:7B0B .word B4_7BE2
B4:7B0D .byte 0x2B
B4:7B0E .word B4_7BE9
B4:7B10 .byte 0x2C
B4:7B11 .word B4_7BF0
B4:7B13 .byte 0x2E
B4:7B14 .word B4_7BF9
B4:7B16 .byte 0x2F
B4:7B17 .word B4_7C00
B4:7B19 .byte 0x31
B4:7B1A .word B4_7C07
B4:7B1C .byte 0x32
B4:7B1D .word B4_7C0E
B4:7B1F .byte 0x33
B4:7B20 .word B4_7C15
B4:7B22 .byte 0x34
B4:7B23 .word B4_7C1C
B4:7B25 .byte 0x39
B4:7B26 .word B4_7C23
B4:7B28 .byte 0x3D
B4:7B29 .word B4_7C2A
B4:7B2B .byte 0x3E
B4:7B2C .word B4_7C31
B4:7B2E .byte 0x57
B4:7B2F .word B4_7C38
B4:7B31 .byte 0x68
B4:7B32 .byte 0
B4:7B33 .byte 0
B4:7B34 .word B4_7C3F
B4:7B36 ; ---------------------------------------------------------------------------
Lenoxx DV-406 – ISO
B4:13FC ; ---------------------------------------------------------------------------
B4:13FC
B4:13FC BankSw_485_B4_13FC: ; DATA XREF: B0:B0_BS_485_B4_13FCo
B4:13FC ; B1:B1_BS_485_B4_13FCo ...
B4:13FC clr RAM_27.4
B4:13FE mov DPTR, #XRAM_FB00
B4:1401 movx A, @DPTR
B4:1402 mov R7, A
B4:1403 xrl A, #0x2B
B4:1405 jz B4_1410
B4:1407 mov A, R7
B4:1408 xrl A, #0x3D
B4:140A jz B4_1410
B4:140C mov A, R7
B4:140D cjne A, #0x29, B4_1424 ; ')'
B4:1410
B4:1410 B4_1410: ; CODE XREF: B4:1405j B4:140Aj
B4:1410 mov R7, #2
B4:1412 lcall B4_BS_45_B1_9285
B4:1415 jnc B4_1424
B4:1417 mov R3, #4
B4:1419 mov R5, #0x39 ; '9'
B4:141B mov R4, #0
B4:141D mov R7, #2
B4:141F mov R6, #7
B4:1421 lcall B4_BS_101_B3_6B05
B4:1424
B4:1424 B4_1424: ; CODE XREF: B4:140Dj B4:1415j
B4:1424 lcall B4_BS_405_B1_7B1E
B4:1427 jnc B4_142B
B4:1429 clr C
B4:142A ret
B4:142B ; ---------------------------------------------------------------------------
B4:142B
B4:142B B4_142B: ; CODE XREF: B4:1427j
B4:142B mov DPTR, #XRAM_FB00
B4:142E movx A, @DPTR
B4:142F mov R7, A
B4:1430 clr C
B4:1431 subb A, #0x84 ; 'ä'
B4:1433 jc B4_1436
B4:1435 ret
B4:1436 ; ---------------------------------------------------------------------------
B4:1436
B4:1436 B4_1436: ; CODE XREF: B4:1433j
B4:1436 mov A, R7
B4:1437 lcall B4_?C?CCASE
B4:1437 ; ---------------------------------------------------------------------------
B4:143A .word B4_14B0
B4:143C .byte 0
B4:143D .word B4_14B0
B4:143F .byte 1
B4:1440 .word B4_14B0
B4:1442 .byte 2
B4:1443 .word B4_14B0
B4:1445 .byte 3
B4:1446 .word B4_14B0
B4:1448 .byte 4
B4:1449 .word B4_14B0
B4:144B .byte 5
B4:144C .word B4_14B0
B4:144E .byte 6
B4:144F .word B4_14B0
B4:1451 .byte 7
B4:1452 .word B4_14B0
B4:1454 .byte 8
B4:1455 .word B4_14B0
B4:1457 .byte 9
B4:1458 .word B4_14BB
B4:145A .byte 0xD
B4:145B .word B4_14BB
B4:145D .byte 0xE
B4:145E .word B4_14BB
B4:1460 .byte 0xF
B4:1461 .word B4_14BB
B4:1463 .byte 0x10
B4:1464 .word B4_14C6
B4:1466 .byte 0x12
B4:1467 .word B4_14D1
B4:1469 .byte 0x13
B4:146A .word B4_14F9
B4:146C .byte 0x14
B4:146D .word B4_1544
B4:146F .byte 0x15
B4:1470 .word B4_1583
B4:1472 .byte 0x16
B4:1473 .word B4_15C2
B4:1475 .byte 0x17
B4:1476 .word B4_15EA
B4:1478 .byte 0x18
B4:1479 .word B4_15F5
B4:147B .byte 0x19
B4:147C .word B4_1652
B4:147E .byte 0x1A
B4:147F .word B4_16AF
B4:1481 .byte 0x1B
B4:1482 .word B4_16BA
B4:1484 .byte 0x1D
B4:1485 .word B4_16C5
B4:1487 .byte 0x1E
B4:1488 .word B4_16D0
B4:148A .byte 0x20
B4:148B .word B4_16F2
B4:148D .byte 0x28
B4:148E .word B4_1714
B4:1490 .byte 0x29
B4:1491 .word B4_171F
B4:1493 .byte 0x2B
B4:1494 .word B4_172A
B4:1496 .byte 0x2C
B4:1497 .word B4_1787
B4:1499 .byte 0x2E
B4:149A .word B4_1792
B4:149C .byte 0x2F
B4:149D .word B4_17BA
B4:149F .byte 0x32
B4:14A0 .word B4_17DC
B4:14A2 .byte 0x33
B4:14A3 .word B4_1803
B4:14A5 .byte 0x34
B4:14A6 .word B4_1834
B4:14A8 .byte 0x3D
B4:14A9 .word B4_1851
B4:14AB .byte 0x3E
B4:14AC .byte 0
B4:14AD .byte 0
B4:14AE .word B4_185B
B4:14B0 ; ---------------------------------------------------------------------------
Lenoxx DV-406 – DVD
B4:2D01 ; ---------------------------------------------------------------------------
B4:2D01
B4:2D01 BankSw_486_B4_2D01: ; DATA XREF: B0:B0_BS_486_B4_2D01o
B4:2D01 ; B1:B1_BS_486_B4_2D01o ...
B4:2D01 clr RAM_27.4
B4:2D03 mov DPTR, #XRAM_FC17
B4:2D06 movx A, @DPTR
B4:2D07 anl A, #0xFD
B4:2D09 movx @DPTR, A
B4:2D0A mov DPTR, #XRAM_FB00
B4:2D0D movx A, @DPTR
B4:2D0E lcall B4_?C?CCASE
B4:2D0E ; ---------------------------------------------------------------------------
B4:2D11 .word B4_2DA5
B4:2D13 .byte 0
B4:2D14 .word B4_2DA5
B4:2D16 .byte 1
B4:2D17 .word B4_2DA5
B4:2D19 .byte 2
B4:2D1A .word B4_2DA5
B4:2D1C .byte 3
B4:2D1D .word B4_2DA5
B4:2D1F .byte 4
B4:2D20 .word B4_2DA5
B4:2D22 .byte 5
B4:2D23 .word B4_2DA5
B4:2D25 .byte 6
B4:2D26 .word B4_2DA5
B4:2D28 .byte 7
B4:2D29 .word B4_2DA5
B4:2D2B .byte 8
B4:2D2C .word B4_2DA5
B4:2D2E .byte 9
B4:2D2F .word B4_2DAD
B4:2D31 .byte 0xD
B4:2D32 .word B4_2DAD
B4:2D34 .byte 0xE
B4:2D35 .word B4_2DAD
B4:2D37 .byte 0xF
B4:2D38 .word B4_2DAD
B4:2D3A .byte 0x10
B4:2D3B .word B4_2DB5
B4:2D3D .byte 0x11
B4:2D3E .word B4_2DBD
B4:2D40 .byte 0x12
B4:2D41 .word B4_2DC5
B4:2D43 .byte 0x13
B4:2D44 .word B4_2DCD
B4:2D46 .byte 0x14
B4:2D47 .word B4_2DD5
B4:2D49 .byte 0x15
B4:2D4A .word B4_2DDD
B4:2D4C .byte 0x16
B4:2D4D .word B4_2DE5
B4:2D4F .byte 0x17
B4:2D50 .word B4_2DED
B4:2D52 .byte 0x18
B4:2D53 .word B4_2DF5
B4:2D55 .byte 0x19
B4:2D56 .word B4_2DFD
B4:2D58 .byte 0x1A
B4:2D59 .word B4_2E05
B4:2D5B .byte 0x1B
B4:2D5C .word B4_2E0D
B4:2D5E .byte 0x1C
B4:2D5F .word B4_2E15
B4:2D61 .byte 0x1D
B4:2D62 .word B4_2E1D
B4:2D64 .byte 0x1E
B4:2D65 .word B4_2E25
B4:2D67 .byte 0x20
B4:2D68 .word B4_2E2D
B4:2D6A .byte 0x22
B4:2D6B .word B4_2E35
B4:2D6D .byte 0x23
B4:2D6E .word B4_2E3D
B4:2D70 .byte 0x24
B4:2D71 .word B4_2E45
B4:2D73 .byte 0x28
B4:2D74 .word B4_2E58
B4:2D76 .byte 0x29
B4:2D77 .word B4_2E5F
B4:2D79 .byte 0x2B
B4:2D7A .word B4_2E66
B4:2D7C .byte 0x2C
B4:2D7D .word B4_2E6D
B4:2D7F .byte 0x2E
B4:2D80 .word B4_2E76
B4:2D82 .byte 0x2F
B4:2D83 .word B4_2E7D
B4:2D85 .byte 0x31
B4:2D86 .word B4_2E84
B4:2D88 .byte 0x32
B4:2D89 .word B4_2E8B
B4:2D8B .byte 0x33
B4:2D8C .word B4_2E92
B4:2D8E .byte 0x34
B4:2D8F .word B4_2E99
B4:2D91 .byte 0x39
B4:2D92 .word B4_2EA0
B4:2D94 .byte 0x3D
B4:2D95 .word B4_2EA7
B4:2D97 .byte 0x3E
B4:2D98 .word B4_2E4C
B4:2D9A .byte 0x51
B4:2D9B .word B4_2EAE
B4:2D9D .byte 0x57
B4:2D9E .word B4_2EB5
B4:2DA0 .byte 0x7F
B4:2DA1 .byte 0
B4:2DA2 .byte 0
B4:2DA3 .word B4_2EBC
B4:2DA5 ; ---------------------------------------------------------------------------
Philips DVP3040K/55 – ISO
B1:48EB ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:48EB
B1:48EB
B1:48EB BankSw_483_B1_48EB: ; DATA XREF: B0:B0_BS_483_B1_48EBo
B1:48EB ; B1:B1_BS_483_B1_48EBo ...
B1:48EB clr RAM_27.5
B1:48ED lcall BankSw_603_B1_879C
B1:48F0 jnc B1_48FA
B1:48F2 mov DPTR, #XRAM_FB00
B1:48F5 mov A, #0xFF
B1:48F7 movx @DPTR, A
B1:48F8 clr C
B1:48F9 ret
B1:48FA ; ---------------------------------------------------------------------------
B1:48FA
B1:48FA B1_48FA: ; CODE XREF: BankSw_483_B1_48EB+5j
B1:48FA mov DPTR, #XRAM_FB00
B1:48FD movx A, @DPTR
B1:48FE mov R7, A
B1:48FF clr C
B1:4900 subb A, #0x71 ; 'q'
B1:4902 jc B1_4905
B1:4904 ret
B1:4905 ; ---------------------------------------------------------------------------
B1:4905
B1:4905 B1_4905: ; CODE XREF: BankSw_483_B1_48EB+17j
B1:4905 mov A, R7
B1:4906 lcall B1_?C?CCASE
B1:4906 ; ---------------------------------------------------------------------------
B1:4909 .word B1_497F
B1:490B .byte 0
B1:490C .word B1_497F
B1:490E .byte 1
B1:490F .word B1_497F
B1:4911 .byte 2
B1:4912 .word B1_497F
B1:4914 .byte 3
B1:4915 .word B1_497F
B1:4917 .byte 4
B1:4918 .word B1_497F
B1:491A .byte 5
B1:491B .word B1_497F
B1:491D .byte 6
B1:491E .word B1_497F
B1:4920 .byte 7
B1:4921 .word B1_497F
B1:4923 .byte 8
B1:4924 .word B1_497F
B1:4926 .byte 9
B1:4927 .word B1_498A
B1:4929 .byte 0xD
B1:492A .word B1_498A
B1:492C .byte 0xE
B1:492D .word B1_498A
B1:492F .byte 0xF
B1:4930 .word B1_498A
B1:4932 .byte 0x10
B1:4933 .word B1_4995
B1:4935 .byte 0x12
B1:4936 .word B1_49A0
B1:4938 .byte 0x13
B1:4939 .word B1_49C8
B1:493B .byte 0x14
B1:493C .word B1_49D3
B1:493E .byte 0x15
B1:493F .word B1_49DE
B1:4941 .byte 0x16
B1:4942 .word B1_49E9
B1:4944 .byte 0x17
B1:4945 .word B1_4A11
B1:4947 .byte 0x18
B1:4948 .word B1_4A1C
B1:494A .byte 0x19
B1:494B .word B1_4A44
B1:494D .byte 0x1A
B1:494E .word B1_4A6C
B1:4950 .byte 0x1B
B1:4951 .word B1_4A77
B1:4953 .byte 0x1D
B1:4954 .word B1_4A82
B1:4956 .byte 0x1E
B1:4957 .word B1_4A8D
B1:4959 .byte 0x20
B1:495A .word B1_4A98
B1:495C .byte 0x28
B1:495D .word B1_4AA3
B1:495F .byte 0x29
B1:4960 .word B1_4AAE
B1:4962 .byte 0x2B
B1:4963 .word B1_4AB9
B1:4965 .byte 0x2C
B1:4966 .word B1_4AE1
B1:4968 .byte 0x2E
B1:4969 .word B1_4AEB
B1:496B .byte 0x2F
B1:496C .word B1_4AF5
B1:496E .byte 0x32
B1:496F .word B1_4AFF
B1:4971 .byte 0x33
B1:4972 .word B1_4B09
B1:4974 .byte 0x34
B1:4975 .word B1_4B2C
B1:4977 .byte 0x3D
B1:4978 .word B1_4B4E
B1:497A .byte 0x3E
B1:497B .byte 0
B1:497C .byte 0
B1:497D .word B1_4B58
B1:497F ; ---------------------------------------------------------------------------
Philips DVP3040K/55 – DVD
B1:5F9E ; ---------------------------------------------------------------------------
B1:5F9E
B1:5F9E BankSw_484_B1_5F9E: ; DATA XREF: B0:B0_BS_484_B1_5F9Eo
B1:5F9E ; B1:B1_BS_484_B1_5F9Eo ...
B1:5F9E clr RAM_27.5
B1:5FA0 mov DPTR, #XRAM_FB00
B1:5FA3 movx A, @DPTR
B1:5FA4 lcall B1_?C?CCASE
B1:5FA4 ; ---------------------------------------------------------------------------
B1:5FA7 .word B1_6038
B1:5FA9 .byte 0
B1:5FAA .word B1_6038
B1:5FAC .byte 1
B1:5FAD .word B1_6038
B1:5FAF .byte 2
B1:5FB0 .word B1_6038
B1:5FB2 .byte 3
B1:5FB3 .word B1_6038
B1:5FB5 .byte 4
B1:5FB6 .word B1_6038
B1:5FB8 .byte 5
B1:5FB9 .word B1_6038
B1:5FBB .byte 6
B1:5FBC .word B1_6038
B1:5FBE .byte 7
B1:5FBF .word B1_6038
B1:5FC1 .byte 8
B1:5FC2 .word B1_6038
B1:5FC4 .byte 9
B1:5FC5 .word B1_6040
B1:5FC7 .byte 0xD
B1:5FC8 .word B1_6040
B1:5FCA .byte 0xE
B1:5FCB .word B1_6040
B1:5FCD .byte 0xF
B1:5FCE .word B1_6040
B1:5FD0 .byte 0x10
B1:5FD1 .word B1_6048
B1:5FD3 .byte 0x11
B1:5FD4 .word B1_6050
B1:5FD6 .byte 0x12
B1:5FD7 .word B1_6058
B1:5FD9 .byte 0x13
B1:5FDA .word B1_6060
B1:5FDC .byte 0x14
B1:5FDD .word B1_6068
B1:5FDF .byte 0x15
B1:5FE0 .word B1_6070
B1:5FE2 .byte 0x16
B1:5FE3 .word B1_6078
B1:5FE5 .byte 0x17
B1:5FE6 .word B1_6080
B1:5FE8 .byte 0x18
B1:5FE9 .word B1_6088
B1:5FEB .byte 0x19
B1:5FEC .word B1_6090
B1:5FEE .byte 0x1A
B1:5FEF .word B1_6098
B1:5FF1 .byte 0x1B
B1:5FF2 .word B1_60A0
B1:5FF4 .byte 0x1C
B1:5FF5 .word B1_60A8
B1:5FF7 .byte 0x1D
B1:5FF8 .word B1_60B0
B1:5FFA .byte 0x1E
B1:5FFB .word B1_60B8
B1:5FFD .byte 0x20
B1:5FFE .word B1_60C0
B1:6000 .byte 0x22
B1:6001 .word B1_60C8
B1:6003 .byte 0x23
B1:6004 .word B1_60CF
B1:6006 .byte 0x24
B1:6007 .word B1_60D6
B1:6009 .byte 0x28
B1:600A .word B1_60DD
B1:600C .byte 0x29
B1:600D .word B1_60E4
B1:600F .byte 0x2B
B1:6010 .word B1_60EB
B1:6012 .byte 0x2C
B1:6013 .word B1_60F2
B1:6015 .byte 0x2E
B1:6016 .word B1_60FB
B1:6018 .byte 0x2F
B1:6019 .word B1_6102
B1:601B .byte 0x31
B1:601C .word B1_6109
B1:601E .byte 0x32
B1:601F .word B1_6110
B1:6021 .byte 0x33
B1:6022 .word B1_6117
B1:6024 .byte 0x34
B1:6025 .word B1_611E
B1:6027 .byte 0x39
B1:6028 .word B1_6125
B1:602A .byte 0x3D
B1:602B .word B1_612C
B1:602D .byte 0x3E
B1:602E .word B1_6133
B1:6030 .byte 0x57
B1:6031 .word B1_613A
B1:6033 .byte 0x68
B1:6034 .byte 0
B1:6035 .byte 0
B1:6036 .word B1_6141
B1:6038 ; ---------------------------------------------------------------------------
JTEC MTK 7000 – ISO
B4:3C40 ; ---------------------------------------------------------------------------
B4:3C40
B4:3C40 BankSw_505_B4_3C40: ; DATA XREF: B0:B0_BS_505_B4_3C40o
B4:3C40 ; B1:B1_BS_505_B4_3C40o ...
B4:3C40 clr RAM_27.4
B4:3C42 lcall B4_BS_428_B1_7B99
B4:3C45 jnc B4_3C49
B4:3C47 clr C
B4:3C48 ret
B4:3C49 ; ---------------------------------------------------------------------------
B4:3C49
B4:3C49 B4_3C49: ; CODE XREF: B4:3C45j
B4:3C49 mov DPTR, #XRAM_FB00
B4:3C4C movx A, @DPTR
B4:3C4D mov R7, A
B4:3C4E clr C
B4:3C4F subb A, #0x6D ; 'm'
B4:3C51 jc B4_3C55
B4:3C53 clr C
B4:3C54 ret
B4:3C55 ; ---------------------------------------------------------------------------
B4:3C55
B4:3C55 B4_3C55: ; CODE XREF: B4:3C51j
B4:3C55 mov A, R7
B4:3C56 lcall B4_?C?CCASE
B4:3C56 ; ---------------------------------------------------------------------------
B4:3C59 .word B4_3CD2
B4:3C5B .byte 0
B4:3C5C .word B4_3CD2
B4:3C5E .byte 1
B4:3C5F .word B4_3CD2
B4:3C61 .byte 2
B4:3C62 .word B4_3CD2
B4:3C64 .byte 3
B4:3C65 .word B4_3CD2
B4:3C67 .byte 4
B4:3C68 .word B4_3CD2
B4:3C6A .byte 5
B4:3C6B .word B4_3CD2
B4:3C6D .byte 6
B4:3C6E .word B4_3CD2
B4:3C70 .byte 7
B4:3C71 .word B4_3CD2
B4:3C73 .byte 8
B4:3C74 .word B4_3CD2
B4:3C76 .byte 9
B4:3C77 .word B4_3CD2
B4:3C79 .byte 0xA
B4:3C7A .word B4_3CDD
B4:3C7C .byte 0xD
B4:3C7D .word B4_3CDD
B4:3C7F .byte 0xE
B4:3C80 .word B4_3CDD
B4:3C82 .byte 0xF
B4:3C83 .word B4_3CDD
B4:3C85 .byte 0x10
B4:3C86 .word B4_3CE8
B4:3C88 .byte 0x12
B4:3C89 .word B4_3CF3
B4:3C8B .byte 0x13
B4:3C8C .word B4_3D1B
B4:3C8E .byte 0x14
B4:3C8F .word B4_3D26
B4:3C91 .byte 0x15
B4:3C92 .word B4_3D31
B4:3C94 .byte 0x16
B4:3C95 .word B4_3D3C
B4:3C97 .byte 0x17
B4:3C98 .word B4_3D64
B4:3C9A .byte 0x18
B4:3C9B .word B4_3D6F
B4:3C9D .byte 0x19
B4:3C9E .word B4_3D97
B4:3CA0 .byte 0x1A
B4:3CA1 .word B4_3DBF
B4:3CA3 .byte 0x1B
B4:3CA4 .word B4_3DCA
B4:3CA6 .byte 0x1D
B4:3CA7 .word B4_3DD5
B4:3CA9 .byte 0x1E
B4:3CAA .word B4_3DE0
B4:3CAC .byte 0x20
B4:3CAD .word B4_3DEB
B4:3CAF .byte 0x28
B4:3CB0 .word B4_3DF6
B4:3CB2 .byte 0x29
B4:3CB3 .word B4_3E01
B4:3CB5 .byte 0x2B
B4:3CB6 .word B4_3E0C
B4:3CB8 .byte 0x2C
B4:3CB9 .word B4_3E34
B4:3CBB .byte 0x2E
B4:3CBC .word B4_3E3E
B4:3CBE .byte 0x2F
B4:3CBF .word B4_3E48
B4:3CC1 .byte 0x32
B4:3CC2 .word B4_3E52
B4:3CC4 .byte 0x33
B4:3CC5 .word B4_3E5C
B4:3CC7 .byte 0x34
B4:3CC8 .word B4_3E7F
B4:3CCA .byte 0x3D
B4:3CCB .word B4_3EA1
B4:3CCD .byte 0x3E
B4:3CCE .byte 0
B4:3CCF .byte 0
B4:3CD0 .word B4_3EAB
B4:3CD2 ; ---------------------------------------------------------------------------
JTEC MTK 7000 – DVD
B4:4293 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B4:4293
B4:4293
B4:4293 BankSw_506_B4_4293: ; DATA XREF: B0:B0_BS_506_B4_4293o
B4:4293 ; B1:B1_BS_506_B4_4293o ...
B4:4293 clr RAM_27.4
B4:4295 mov DPTR, #XRAM_FB00
B4:4298 movx A, @DPTR
B4:4299 lcall B4_?C?CCASE
B4:4299 ; ---------------------------------------------------------------------------
B4:429C .word B4_4333
B4:429E .byte 0
B4:429F .word B4_4333
B4:42A1 .byte 1
B4:42A2 .word B4_4333
B4:42A4 .byte 2
B4:42A5 .word B4_4333
B4:42A7 .byte 3
B4:42A8 .word B4_4333
B4:42AA .byte 4
B4:42AB .word B4_4333
B4:42AD .byte 5
B4:42AE .word B4_4333
B4:42B0 .byte 6
B4:42B1 .word B4_4333
B4:42B3 .byte 7
B4:42B4 .word B4_4333
B4:42B6 .byte 8
B4:42B7 .word B4_4333
B4:42B9 .byte 9
B4:42BA .word B4_4333
B4:42BC .byte 0xA
B4:42BD .word B4_433B
B4:42BF .byte 0xD
B4:42C0 .word B4_433B
B4:42C2 .byte 0xE
B4:42C3 .word B4_433B
B4:42C5 .byte 0xF
B4:42C6 .word B4_433B
B4:42C8 .byte 0x10
B4:42C9 .word B4_4343
B4:42CB .byte 0x11
B4:42CC .word B4_434B
B4:42CE .byte 0x12
B4:42CF .word B4_4353
B4:42D1 .byte 0x13
B4:42D2 .word B4_435B
B4:42D4 .byte 0x14
B4:42D5 .word B4_4363
B4:42D7 .byte 0x15
B4:42D8 .word B4_436B
B4:42DA .byte 0x16
B4:42DB .word B4_4373
B4:42DD .byte 0x17
B4:42DE .word B4_437B
B4:42E0 .byte 0x18
B4:42E1 .word B4_4383
B4:42E3 .byte 0x19
B4:42E4 .word B4_438B
B4:42E6 .byte 0x1A
B4:42E7 .word B4_4393
B4:42E9 .byte 0x1B
B4:42EA .word B4_439B
B4:42EC .byte 0x1C
B4:42ED .word B4_43A3
B4:42EF .byte 0x1D
B4:42F0 .word B4_43AB
B4:42F2 .byte 0x1E
B4:42F3 .word B4_43B3
B4:42F5 .byte 0x20
B4:42F6 .word B4_43BB
B4:42F8 .byte 0x22
B4:42F9 .word B4_43C3
B4:42FB .byte 0x23
B4:42FC .word B4_43CB
B4:42FE .byte 0x24
B4:42FF .word B4_43D3
B4:4301 .byte 0x28
B4:4302 .word B4_43DA
B4:4304 .byte 0x29
B4:4305 .word B4_43E1
B4:4307 .byte 0x2B
B4:4308 .word B4_43E8
B4:430A .byte 0x2C
B4:430B .word B4_43EF
B4:430D .byte 0x2E
B4:430E .word B4_43F8
B4:4310 .byte 0x2F
B4:4311 .word B4_43FF
B4:4313 .byte 0x31
B4:4314 .word B4_4406
B4:4316 .byte 0x32
B4:4316 ; End of function BankSw_506_B4_4293
B4:4316
B4:4317 .word B4_440D
B4:4319 .byte 0x33
B4:431A .word B4_4414
B4:431C .byte 0x34
B4:431D .word B4_441B
B4:431F .byte 0x35
B4:4320 .word B4_4422
B4:4322 .byte 0x39
B4:4323 .word B4_4429
B4:4325 .byte 0x3D
B4:4326 .word B4_4430
B4:4328 .byte 0x3E
B4:4329 .word B4_4437
B4:432B .byte 0x57
B4:432C .word B4_443E
B4:432E .byte 0x68
B4:432F .byte 0
B4:4330 .byte 0
B4:4331 .word B4_4445
B4:4333 ; ---------------------------------------------------------------------------
Textos Relacionados
Esta página foi visualizada vezes desde 30/06/07.
 Jefferson,  14 de janeiro de 2007
atualizado em 06/06/2007
Neste texto (e em qualquer texto onde eu estiver falando de um DivX player) quando eu falar em browser estou falando de file browser (o “menu” onde se escolhem arquivos) e não de Internet Browser, que é o que a maioria das pessoas associa à palavra “browser”.
Este procedimento está longe de ser completo. Ele funciona com vários aparelhos, incluindo fazer as fontes de browser para o Lenoxx DV-406 e as fontes de legendas para o DVP5100/DVP5965. Possivelmente ocorrerão problemas não abordados aqui na hora de escolher fontes que serão usadas para outros propósitos e/ou em outros aparelhos. Parte dos problemas podem ser resolvidos usando outro software do Cherry: o mtkWindows, mas ainda não entendi realmente como a coisa funciona.
Este procedimento explica como remover o fundo translúcido dos firmwares Philips. São dois passos distintos: a remoção do fundo e a remoção da transparência .
Este procedimento cria uma fonte branca com contorno preto. Se você quiser outra cor, provavelmente vai ter que mexer com o mtkWindows.
O melhor tutorial que já encontrei foi este aqui. Porém acho muito confuso, talvez por ter sido mal traduzido do francês para o Inglês. E não aborda os problemas de cor e fundo. Talvez você tenha mais sorte com ele do que eu
Agora que eu já dominei (ou assim penso) esta fração do processo, talvez fique mais fácil descobrir nas próximas semanas como funciona o processo inteiro de criação de fontes.
Programas necessários:
Você pode escolher a fonte que quiser, mas algumas evidentemente serão mais “eficientes” que outras. Este tutorial vai usar a fonte Impact, por ser razoávelmente visível, bonita e compacta (cabem mais caracteres na tela); O resultado, quando a fonte for aplicada ao file browser, ficará parecido com este (na seção onde está a barra laranja):

Nem sempre uma fonte que alcance ótima legibilidade no browser vai ficar igualmente boa nas legendas DivX e vice-versa. Por sorte, na maioria dos firmwares as fontes são independentes .
Passo 1 – Criando uma fonte compatível
Execute o MtkFontCreator. Se ele fizer a solicitação abaixo, indique o arquivo mtkfontcreator.ini (no mesmo diretório onde está o .exe) e clique em “abrir”.


- Para exibir todos os caracteres acentuados da lingua portuguesa, é preciso selecionar a Windows Code Page 1252 aqui;
- Você pode escolher a fonte que quiser. Este tutorial vai usar a fonte Impact, por ser razoávelmente visível, bonita e compacta (cabem mais caracteres na tela). É importante frisar aqui que é perda de tempo tentar escolher a cor da fonte, porque isso será ignorado;
- O tamanho da fonte é crítico. Será 16 neste exemplo, mas você poderá escolher outros valores, tendo em mente que quanto maior a fonte, menos caracteres caberão na tela;
- Para assegurar a legibilidade quando a imagem sob o texto tiver a mesma cor que a fonte, é necessário que exista um contorno (outline). Este exemplo usará um contorno de apenas um ponto;
- Em alguns firmwares (o DVP5100 é um exemplo) é imprescindível que “widths are div. by” esteja marcada e que o valor seja “4″, senão o texto será corrompido na tela, como no exemplo abaixo:

- Isso é inteiramente opcional. Desmarcar esta opção deixa o texto um pouco mais compacto;
- Mande salvar o arquivo. O nome sugerido pelo mtkFontCreator descreve os parâmetros usados para criar a fonte. É aconselhável que você salve como sugerido.
Passo 2 – Substituindo no firmware
Abra o firmware que você deseja modificar com o mtkRemaker e expanda a árvore como indicado até chegar em “Fonts”
 |
Você sempre vai encontrar “Fonts” no mesmo lugar, mas a quantidade de fontes (no exemplo são 5) varia de firmware para firmware. Também não existe uma regra geral que permita saber qual o papel de cada fonte (na verdade, nem dá para saber quais estão mesmo sendo usadas), por isso para determinar qual fonte dever ser trocada você tem dois métodos básicos:
- Seguir a dica de alguém que já descobriu;
- Testar uma por uma
Se você tiver que apelar para o segundo método, pelo menos pode tentar chutar de uma forma mais ou menos inteligente. Aproveite-se do fato de que o mtkRemaker exibe a aparência de cada fonte para tentar descobrir qual a fonte certa por comparação com o que é visto na tela quando o aparelho está em funcionamento. Não se anime, porque isso pode ser mais difícil do que parece e talvez você só consiga eliminar as alternativas “absurdas”, como as fonte que mostram caracteres exclusivamente orientais. |
Neste tutorial, vamos substituir a fonte 4, que é a fonte do browser no Lenoxx DV-406.

Clique com o botão direito no nome da fonte e escolha “Replace”

Uma caixa de seleção de arquivos vai se abrir. Selecione o arquivo que você criou com o mtkFontCreator.
A nova aparência da fonte já deverá aparecer

Salve o firmware modificado
Passo 2.1
Se a fonte original tem transparência, a modificada também ficará transparente. Para tornar a fonte opaca, você precisa agora abrir o firmware no mtkWindows, selecionar a janela de legenda (é a 0×11 para firmwares Philips e 0×12 para o Lenoxx) e colocar blend=3.
[06/06/07] Para os Philips DVP5960 e DVP5965 a janela é a 0×12.

|
Salve e teste no DivX player.
As pedras no caminho
Se você já tinha seguido o procedimento de troca das imagens de background antes, provavelmente vai achar que a troca das fontes, do jeito que descevi, é ainda mais fácil. Infelizmente, em muitos casos você vai ter que pegar desvios entre os passos 1 e 2.
Para Lenoxx DV-406 – Estude o passo 1.5
Para Philips – Estude os passos 1.5 e 1.6
Passo 1.5 – Inverter a cor da fonte
Se você seguir o procedimento exatamente do jeito descrito acima para a fonte do browser no Lenoxx DV-406, o resultado não vai ser bem o que você esperava:

Não era para a fonte ser branca com contorno preto?
Você não precisa ler isto aqui.
Infelizmente, é o programa no firmware que decide como tratar cada cor da fonte. E o programa do Lenoxx diz que a cor exibida será o inverso da que realmente está lá.
Eu apanhei muito tempo com esse problema, bem antes de ter o Lenoxx. Se existe opção no mtkFontCreator para salvar com a cor invertida, eu não a encontrei. Eu fiz duas tentativas de aprender como se criava fontes ao longo do último ano e desisti quando esbarrava nesse problema de não conseguir acertar a cor da fonte.
Até que na semana passada eu esbarrei em um post na Softpedia de um cara explicando como se resolvia, pelo menos para alguns aparelhos (como o Lenoxx). Basta usar um editor de imagens para inverter as cores da fonte. Mas como usar um editor de imagens se a fonte salva pelo mtkFontCreator não é uma imagem?
Aí é que está… ela é, se você quiser. mtkFontCreator permite a você exportar como BMP, fazer a alteração no editor de imagens, importar de volta o BMP alterado e salvar como fonte Mediatek.
Minha primeira experiência foi usando a ferramenta Color Replacement Pen do Ulead PhotoImpact (UPI). Foi um sucesso, mas o processo é um saco para fazer e ainda mais chato para criar um tutorial. Além disso, eu tenho o UPI, mas a maioria dos meus leitores provavelmente usa outro programa e o menor demo que você pode baixar da Ulead tem dezenas de megabytes e emporcalha seu HD (os softwares novos da Ulead estão parecendo com os drivers da HP). Depois de procurar por algumas horas por um freeware que desse conta do recado, sem êxito, decidi verificar se dava para criar um programa só para fazer isso, em Delphi.
Foi mais fácil (e muito mais divertido) que procurar o freeware
|
Prepare a fonte no mtFontCreator e exporte como BMP de arquivo único, usando o botão indicado

Abra a fonte no mtkSwapColors. Você a verá como uma “tira”, pois é assim que o arquivo é salvo.

[02/06/2007] Se você quer fazer uma fonte para Philips, sem o fundo translúcido, pule para o passo 1.6
Clique em Processar. O resultado da inversão já aparecerá na tela.

Passo 1.6 – Remover o fundo
Se você está criando uma fonte de legendas (não se aplica ao browser) para um aparelho Philips, ainda há um passo a mais antes de salvar, se você quiser se livrar do fundo translúcido que a Philips coloca por trás da legenda.
Para isso é necessária a versão 0.12 de mtkSwapColors. Clique no botão “Converter para Philips…”. A fonte deverá ficar parecida com isto:

[06/06/2007] A versão do mtkSwapColors disponível online hoje, apesar de indicar “0.12″, é diferente. Eu me enrolei em algum momento quando a cópia no drive 4shared foi apagada e eu tive que fazer o upload de uma nova cópia. Com ela, se for um firmware Philips, você deve clicar direto em “converter…” sem clicar em “processar” antes.
|
Salve o arquivo.
Abra o arquivo no mtkFontCreator, usando o botão de importação de BMP indicado

Se tudo correu bem, a fonte já deverá aparecer invertida. Se a fonte não aparecer, algo deu errado no processo. Repita com atenção.

Salve como uma fonte Mediatek

Agora você pode inserir a fonte no firmware, seguindo o passo 2 deste tutorial.
Apêndice
Que fonte mudar?
Lenoxx DV-406
| Fonte 1 |
Legendas DivX, seções 1 e 2 do browser e no Setup |
| Fonte 2 |
nula |
| Fonte 4 |
Seção 3 do browser (lista de arquivos) |
| Fonte 3 |
Diversos ícones |
| Fonte 5 |
Existe uma fonte, mas não sei se ou onde é usada |
Philips DVP5100
| Fonte 1 |
browser |
| Fonte 2 |
caracteres orientais |
| Fonte 3 |
caracteres orientais |
| Fonte 4 |
caracteres orientais |
| Fonte 5 |
caracteres árabes ? |
| Fonte 6 |
Diversos ícones |
| Fonte 7 |
Legenda DivX 1 |
| Fonte 8 |
Legenda DivX 2 |
Philips DVP5965K
| Fonte 1 |
Legendas DivX (segundo um leitor) |
| Fonte 2 |
Caracteres orientais |
| Fonte 3 |
Caracteres orientais |
| Fonte 4 |
Caracteres orientais |
| Fonte 5 |
Caracteres ?? |
| Fonte 6 |
Diversos ícones |
| Fonte 7 |
browser ? |
Textos Relacionados
Esta página foi visualizada vezes desde desde 14/01/07.
 Jefferson,  18 de setembro de 2005
Texto publicado em 18/09/2005 e atualizado em 29/11/2006
Nos firmwares Mediatek existem duas imagens de background. A primeira, que você vê assim que liga o aparelho, e a segunda, onde é exibido o “file browser”. Este tutorial mostra explícitamente apenas como mudar a primeira. Para mudar a segunda, você terá dicas no texto.
Para este tutorial você precisará de duas ferramentas criadas pelo MaBreaker:
Este procedimento é composto de dois passos, sendo que no primeiro passo você tem duas possibilidades
- Primeiro Passo – Preparar a nova imagem
- Opção 1: usando a imagem de um outro firmware (brincadeira de criança)
- Opção 2: usando uma imagem qualquer (você vai se enrolar todo se não prestar atenção)
- Segundo Passo – Substituição
Notas Gerais:
- Seja qual for a imagem e o método escolhidos, você deve atentar para os efeitos do overscan de sua TV. A imagem na TV ficará sem uma parte das bordas. Se você não quiser perder nada nas bordas precisará acrescentar uma moldura à imagem antes de iniciar o processamento.
- Se você for usar a foto de uma pessoa, poderá ficar evidente uma certa distorção (a pessoa poderá parecer mais magra ou mais gorda que o real), por causa da adaptação que os players fazem entre as resoluções PAL e NTSC. É possível reduzir essa distorção, mas isso não é explicado ainda neste texto.
Primeiro Passo – Preparar a Nova Imagem
Opção 1: usando a imagem de um outro firmware
Abra no MtkRemaker o firmware cuja imagem de background você deseja copiar. Expanda a estrutura até chegar a “MPEG 0″, como mostra a figura abaixo:
 |
Nota: Se você escolher “MPEG 2″ ao lado, vai trabalhar na tela de background do file browser. Este tutorial trabalha apenas com “MPEG 0″ , mas o procedimento é o mesmo para mudar “MPEG 2″
Nos LGs, “MPEG 1″ também pode ser mudado, no Philips, não. |
A imagem que você deseja deve aparecer do lado direito

Clique com o botão direito sobre o item MPEG 0 e escolha Save

Na caixa que se abre dê um nome ao arquivo, que será salvo com a extensão .mpg (mas não é um filme)

O arquivo extraído já está no formato requerido para a inserção. Você já pode ir para o Segundo Passo
Opção 2: usando uma imagem qualquer
Este procedimento parece complicado, mas uma vez decorado você verá que a parte mais difícil vai ser compor uma imagem de bom gosto para usar
[11/12/2006] - Eu ainda não tive tempo de reescrever este tutorial, mas se você usar meu software bkgComposer vai facilitar o trabalho, porque ele é mais “esperto” que o MpegTool
Execute o Mpeg Tool

Com ele, abra a imagem que você deseja transformar.
Atenção: É aconselhável que você copie a imagem desejada para o diretório do Mpeg Tool e abra-a lá, para evitar problemas ao longo do processo!
Eu estou usando uma imagem comum usada em papel de parede do Windows, com 800×600:

Clique na aba “Output Image”. Se sua imagem não estiver com o aspect ratio correto, você perceberá uma distorção. No exemplo abaixo, a imagem ficou achatada na altura porque o original era 800×600 (1,3333) e agora está exibido como 720×480 (1,5).

Eu sugiro que você mude o Target para PAL, que vai dar um aspect ratio de 1,25 e uma distorção notavelmente menor.

O Mpeg Tool permite que você recorte apenas o pedaço da imagem que você deseja, mas eu prefiro fazer isso em um editor de imagens à parte e não vou explicar isto neste tutorial.
Mande salvar o arquivo. Ele será salvo como .mpg
Atenção: É aconselhável que você salve no diretório do Mpeg Tool para evitar problemas no passo a seguir!
Agora vem um detalhe interessante. Por algum motivo, o Mpeg Tool não cria o arquivo com a qualidade que precisamos (talvez seja para manter compatibilidade com aparelhos antigos de pouca memória), por isso precisamos fazer uma pequena alteração.
Vá até o diretório onde está o Mpeg Tool e edite o arquivo convert.bat que está lá:

Este arquivo é recriado todas as vezes que você manda salvar no programa, por isso você terá sempre que repetir este passo.
Abra o arquivo no notepad. O conteúdo do arquivo é mais ou menos assim (o destaque em negrito é meu):
“I:\MTKMpegTool01b1\jpeg2yuv.exe” -Ip -L0 -n1 -v0 -f25 -j “I:\_MTZ tools\MTKMpegTool01b1\manga75(800×600).jpg” | “I:\MTKMpegTool01b1\mpeg2enc.exe” -f3 -n p -b 1000 -a 1 -v 0 -o “I:\MTKMpegTool01b1\manga75(800×600).mpg”
Este é um comando para processar o .seu JPG com o programa jpeg2yuv e passar o resultado para ser codificado com o programa mpeg2enc. Nós precisamos mudar o parâmetro em negrito para aumentar a bitrate do arquivo .mpg resultante. A recomendação que li é mudar de 1000 para 9000, mas não sei como se chegou a esse número.
O resultado ficará assim:
“I:\MTKMpegTool01b1\jpeg2yuv.exe” -Ip -L0 -n1 -v0 -f25 -j “I:\_MTZ tools\MTKMpegTool01b1\manga75(800×600).jpg” | “I:\MTKMpegTool01b1\mpeg2enc.exe” -f3 -n p -b 9000 -a 1 -v 0 -o “I:\MTKMpegTool01b1\manga75(800×600).mpg”
Salve convert.bat e execute-o. Isso vai substituir o arquivo criado pelo MpegTool pela cópia corrigida.
Segundo Passo – Substituição
Agora vamos para o firmware destino. Abra-o no MtkRemaker e expanda a estrutura até chegar a “MPEG 0″ como indicado abaixo:
 |
Nota: Se você escolher “MPEG 2″ ao lado, vai trabalhar na tela de background do file browser. Este tutorial trabalha apenas com “MPEG 0″ , mas o procedimento é o mesmo para mudar “MPEG 2″
Nos LGs, “MPEG 1″ também pode ser mudado, no Philips, não. |
Ao clicar aí, o background pré-existente deve aparecer do lado direito:

Clique com o botão direito sobre o item MPEG 0 e escolha Replace

Use a caixa de diálogo que se abre para encontrar e selecionar o arquivo .mpg que você criou no Primeiro Passo.

A imagem acima é da Opção 2 do tutorial. Se você tiver seguido a Opção 1 será a mostrada a imagem correspondente.
Somente para quem usou a opção 2: É a partir deste momento que aquela pequena alteração que fizemos no arquivo batch começa a mostrar sua diferença. Abaixo, eu mostro em detalhe como já aparece no MtkRemaker:
| mpg do jeito que é criado pelo Mpeg Tool (1000) |
mpg recriado (9000) |
 |
 |
Prestou atenção da cintura para baixo?
Acredite: A diferença é ainda mais acentuada (fica gritante mesmo) na TV!
Agora só falta salvar o firmware modificado:

E gravar no CD ou transferir por cabo.
Note que eu escolhi colocar a imagem no formato PAL, mas não consegui notar nenhuma distorção de aspecto quando esta é exibida na minha TV no modo NTSC.
O Umbanda_Violento (autor do primeiro firmware modificado para o DVP5100) criou um grande tutorial em flash (uns 3MB), em inglês, bem mais detalhado graficamente, que você pode baixar aqui.
Textos Relacionados
 Jefferson,  11 de setembro de 2005
Texto publicado em 11/09/2005 e atualizado em 22/09/2008
Atenção: Se seu aparelho é um modelo novo que usa memória flash do tipo serial, você precisará ler isto aqui também.
Aparelhos de DVD com DivX baseados em chipset Mediatek 1389 tem uma característica única: seu firmware pode ser lido ou gravado com o auxílio de um cabo ligado ao computador. Mesmo que o aparelho tenha ficado totalmente inoperante e aparentemente morto por causa de um upgrade de firmware desastrado feito via CD, a atualização por cabo continuará funcionando e poderá “ressuscitar” o aparelho. Eu mesmo já trouxe de volta do “céu dos DVD players” vários aparelhos, meus e de pessoas que contrataram os meus serviços.
Até o presente momento, os únicos aparelhos do mercado brasileiro que sabidamente usam chipset Mediatek MT1389 são:
O que você precisa:
- Software MTKTOOL (ou MT1389 Flasher) – Atenção: nem sempre a versão mais recente do Mtktool é a melhor.
- Software MTKRemaker;
- Um PC com uma porta serial livre;
- Um cabo especial de fácil obtenção.
Para conectar o PC ao seu DVD player, você precisa de um cabo especial. O cabo é tecnicamente muito simples: trata-se de um cabo serial de três fios com um conversor CMOS -> RS232

Eu fiz meu próprio conversor com um CI HIN232, um punhado de capacitores e alimentei com os 5V da porta USB do meu micro (isso dispensa o 78L05). Por sorte, você não precisa construir seu próprio conversor, porque alguns cabos de comunicação seriais para telefones celulares, do tipo usado para transferir toques e fotos, servem perfeitamente!
Em meus testes, eu usei os cabos dos telefones Siemens C45 e C55. Os cabos tem conectores diferentes, mas internamente são a mesma coisa.
Notas:
Nem todos os cabos de celular servem para esse propósito e a maioria esmagadora dos que serve é do tipo serial.
Não tente conectar o PC diretamente ao DVD player sem o cabo adequado. Ao PC você não fará mal algum, mas provavelmente fritará a porta serial do chip Mediatek e talvez inutilize o aparelho para sempre. O PC segue o padrão RS232 e, geralmente, suas portas seriais apresentam tensões de -12V a +12V. A porta serial Mediatek vai de 0 a +3.2V, por isso é preciso usar um adaptador apropriado.
O cabo serial de celular não requer alimentação externa, porque usa componentes de baixíssimo consumo sendo assim possível alimentá-lo com os próprios sinais da porta serial. Mas se você for construir seu próprio cabo provavelmente só vai encontrar componentes de consumo “normal” que precisarão de alimentação externa.
A soldagem requerida na placa pode ser delicada. No DVP5100, por exemplo, os pontos são muito pequenos e próximos. Se você não tem experiência com soldagem eletrônica pode provocar um dano sério à placa, curto-circuitando trilhas adjacentes com solda ou descolando as ilhas por excesso de calor. No DK8321 a soldagem é mais fácil, mas em compensação você tem que desmontar praticamente todo o aparelho para chegar aos pontos de soldagem no fundo da placa.
De três cabos que comprei, apenas um foi capaz de ler o firmware, embora os três tenham sido capazes de gravar (é o mais importante) normalmente. Ainda não descobri a razão disso.
|
Comunicação usando cabos USB:
Usar um cabo USB para celulares Siemens é possível, mas um tanto mais complicado e não tem o mesmo resultado que usar um cabo serial. Somente é possível porque os cabos USB Siemens vem com um driver que instala uma porta serial virtual que pode ser acessada pelo MTKtool.
Nos meus testes, usei cabos de dois fabricantes. Em todos os casos, é preciso determinar que a porta serial virtual instalada pelo driver use uma denominação de porta serial livre de COM1 a COM4.
O primeiro, que usava chip Prolific PL-2303, funciona precáriamente. O processo é tão rápido quanto com cabo serial, mas coisas estranhas acontecem, incluindo a reinicialização espontânea do computador durante o processo de upgrade, provocada por erro no arquivo ser2pl.sys (a porta serial virtual instalada pela Prolific), versões 2.0.0.18 e 1.3.0.1. Tanto com o MTktool 1.29 quanto com o 1.31
O segundo, com chip SILABS CP2101, funciona, mas é extremamente lento para o upgrade (versão 4.28.0.2700). Gravar um novo firmware leva cerca de 26 minutos com o cabo USB. E não houve nada que eu pudesse fazer na configuração da porta virtual ou do MTKTool que resolvesse o problema. Mas ler com o cabo USB parece ser tão rápido quanto com o cabo serial. Isso foi testado em dois computadores diferentes, com duas instalações do Windows diferentes.
Resumindo: se não quiser ter dores de cabeça, escolha um cabo serial.
Notas
Geralmente, o driver escolhe uma porta serial livre (COM3, COM4, etc) e “amarra” essa porta serial à porta USB onde o cabo estava conectado quando o driver foi instalado. Se você plugar o cabo em outra porta USB do mesmo micro, ele vai ser redetectado e uma outra porta serial será atribuída a ele. Mas se você voltar a plugar na porta anterior, verá que a porta anterior será assumida. Por causa disso é sempre bom ir no Gerenciador de Dispositivos e se certificar de que porta o cabo está usando.
Ao desplugar o cabo, aguarde alguns segundos antes de plugar novamente.
|

Acima, o cabo para C55 que comprei.
Em teoria, esse é o mesmo cabo para os modelos Siemens A52, A55, A56, A60, C55, C56, C60, C65, CF62, CT56, M55, MC60, MT55, S55, S56, S57, S65, SL5C, SL55, SL56, 2218, SX1. Note que o próprio cabo já veio marcado como MC60/CF62 embora eu tenha pedido um para C55.

Acima, o cabo do C45.
Em teoria, esse é o mesmo cabo para os modelos Siemens A35, A36, A40, C25, C35, C45, M35, M35i, M50, ME45, MT50, S25, S35, S45, SL-42, SL45 e 3118

Ambos os conectores tem 12 pinos, mas os cabos tem apenas três fios, por isso não há muita margem para erro. Baseando-se pela figura acima, os fios são:
|
A52, A55, A56, A60, C55, C56, C60, C65, CF62, CT56, M55, MC60, MT55, S55, S56, S57, S65, SL5C, SL55, SL56, 2218, SX1 |
A35, A36, A40, C25, C35, C45, M35, M35i, M50, ME45, MT50, S25, S35, S45, SL-42, SL45 e 3118 |
| GND |
2 (amarelo) |
1 (verde) |
| TX |
3 (azul) |
5 (azul) |
| RX |
4 (verde) |
6 (branco) |
Atenção: Eu coloquei as cores dos fios para meu registro apenas. Não se guie por elas, porque as cores mudam de um fabricante de cabo para outro.
Apenas os modelos em negrito foram confirmados pessoalmente por mim.
Abra o conector (o conector do lado do celular nunca é selado), anote que fios vão em que pinos (ou seja, anote a função de cada fio) e dessolde ou corte os fios.
Na placa do DVD player você vai soldar esses fios nos pontos correspondentes, da seguinte forma:
| cabo |
placa |
| GND |
GND |
| TX |
RX |
| RX |
TX |
Dica: Se o cabo estiver conectado ao PC e um programa de comunicação estiver corretamente configurado, você poderá identicar quem é o RX tocando no mesmo. O PC mostrará a recepção de dados aleatórios enquanto você estiver tocando no fio RX, desde que este não esteja conectado a mais nada. Pode ser necessário que você esteja descalço e tocando com o pé no chão para que esse teste funcione.
Você precisará saber, no seu aparelho, onde fica a porta serial e qual a seqüencia dos fios. Isso varia de aparelho para aparelho. Para obter essas informações sobre o Philips DVP5100 e LG DK8321N, que são aparelhos que eu possuo, consulte meus reviews correspondentes.
Importante: Se você está em um processo de copiar o firmware original, jamais manipule a porta serial (nem sequer toque nela ou nos fios ligados a ela) com o aparelho ligado na tomada. Essa operação pode apagar o firmware e você não vai querer que isso aconteça se você ainda não fez uma cópia.
Abaixo, um exemplo de como fica quando soldado no Phlips DVP5100:

Mas é recomendável que você não solde o cabo do celular diretamente à placa. Eu estou preferindo soldar um cabo mais fino, comprido e flexível, que me permita fazer as conexões fora do aparelho, como no exemplo abaixo:

Acima, eu usei um pedaço de flat cable colorido. Você está vendo a placa de Karaokê do DVP5100 solta porque o único orifício no fundo do aparelho grande o suficiente para a passagem do cabo é o que fica embaixo dela. O nó no fio é para “travar” o cabo, impedindo que o ponto de solda “sinta” os movimentos feitos externamente. Depois de passar o cabo pelo orifício é só parafusar a placa de volta em seu lugar.
Para conectar o flat cable ao cabo do celular, estou usando um conector sindal:

Atenção: Desligue o aparelho da tomada enquanto estiver fazendo qualquer coisa com a porta serial. Usar ferro de solda na porta serial ou simplesmente pegar na ponta dos fios com o DivX player ligado na tomada pode apagar o firmware!
Serviços Prestados
Se você preferir, eu posso fazer o serviço no seu aparelho. Custa R$50 +fretes. Pode não valer a pena para você, dependendo de quanto o aparelho custou (ou quanto custa um novo), mas é isso que custa o meu tempo.
Atenção: Se você tiver um aparelho que eu nunca tive em mãos, faço o serviço de graça. Leia os termos aqui.
Calcule o frete usando a calculadora dos correios. Use como CEP destino: 50000-000. Se você achar que o custo total não vale a pena e você vai jogar o aparelho fora, entre em contato, porque talvez eu possa adquirir o seu aparelho.
Para baratear o frete, você pode me enviar apenas a placa CPU, desde que seja de um aparelho que eu possua ou compatível (Philips DVP3040, Philips DVP5100, Philips DVP5960, Philips DVP5980, Lenoxx DV-406, LG 8XXX, LG DK194g, Punktal PK-DV246 e Proview DVP858 ).
Eu devolvo o aparelho com o firmware que você escolher. Posso também personalizar a tela de background de acordo com sua preferência, usando um JPG enviado por você ou copiando de um outro firmware.
Condições: Eu prefiro prestar esse serviço apenas em aparelhos “clinicamente mortos” por uma instalação desastrada de firmware. Só me envie seu aparelho se tiver total confiança em meus serviços. Eu não posso aceitar reclamações do tipo “o aparelho não tinha esse problema antes!”
Se não aceita 100% das minhas condições, procure outra pessoa ou faça o serviço você mesmo. Todas as instruções estão nesta página.
|
Formas de pagamento aceitas:
Nota: Eu costumava vender apenas o cabo, mas depois de comprar 10 cabos que vieram todos defeituosos e levar calote do vendedor, deixei de comprá-los.
Os interessados devem enviar e-mail para . Não use este e-mail para nenhum outro contato, sob nenhum pretexto; pois se o fizer será devidamente ignorado e adicionado à minha “lista negra”. Você foi avisado!
Certifique-se de que seu cabo está OK antes de começar
Vai poupar muita dor de cabeça se você tiver certeza de que seu cabo está funcionando antes de conectá-lo ao player. Para fazer isso, simplesmente encoste RX com TX na extremidade CMOS do cabo e transmita algo com um programa de comunicação qualquer, como o Hyperterminal. Se o cabo estiver bom, tudo o que você transmitir deverá ser ecoado de volta.
Após o início de qualquer leitura ou escrita, o aparelho sempre fica travado e é necessário desligá-lo da tomada e ligá-lo novamente para que ele volte a funcionar
Para que a comunicação seja possível, a CPU precisa estar energizada. Para que isso ocorra, pode ser necessário apenas que o aparelho esteja plugado na tomada, mas alguns precisam disso e que o aparelho também esteja fora de standby (ou seja, que você plugue na tomada e aperte o botão LIGA). Sempre tente as duas opções.
Exemplos:
- LG DK8321N – Precisa estar fora de standby
- Philips HTS 3300 – Precisa estar fora de standby
- LG DK9923N – Só precisa estar plugado na tomada
- Philips DVP5100 – Só precisa estar plugado na tomada
- LG DK194G – Só precisa estar plugado na tomada
Um jeito simples de saber se a CPU está energizada é ligar o aparelho e, depois de uns 30 segundos, colocar o dedo sobre a CPU. Se estiver morna, está energizada.
Nota: Não é aconselhável que você inicie um processo com um disco no loader. Em um dos meus testes, fiz uma leitura do firmware sem nem dar importância ao que o player estava fazendo. Uma hora depois percebi um ruído estranho no quarto (era madrugada) e segui-o até o DK8321N. Notei então que eu não desligará o aparelho após a leitura e este ainda estava travado. O laser ainda estava ligado, o motor do disco estava parado e o barulho que eu estava ouvindo aparentemente vinha do sistema que controla a posição do laser, que possivelmente “endoidou” por ter sido interrompido durante uma leitura.
A mesma coisa ocorreu outro dia com o DVP5100. Eu iniciei um processo quando tinha acabado de ligar o aparelho e com isso o motor de tracionamento ficou o tempo todo girando.
Bastou resetar os aparelhos para tudo voltar ao normal, mas é melhor evitar.
|
Óbviamente, vamos testar o processo fazendo primeiro um backup, antes de gravar.
Inicie o MtkTool
 |
Tudo o que você precisa fazer é:
1)Selecionar a porta serial
2)Clicar em “Backup” |
Ao selecionar a porta, Mtktool imediatamente ativa os sinais DTR e RTS da porta serial, mas em um cabo construído por você mesmo você não precisa deles. Apenas TX, RX e GND são realmente usados na comunicação. Os sinais DTS e RTS são levantados permanentemente apenas para alimentar cabos seriais que são alimentados pela própria porta (como os de celulares). Isso, claro, somente funciona com circuitos de baixíssimo consumo, porque a porta serial não foi feita para alimentar coisa alguma.
| A primeira coisa que o MtkTool faz ao iniciar-se a comunicação é indicar exatamente o modelo de chip flash que é usado no aparelho. O aparelho interromperá imediatamente qualquer coisa que esteja fazendo. |
 |
A leitura do firmware de 2MB leva cerca de três minutos a 115200bps. Não faz diferença se Verify está marcado para o tempo de leitura. Se o chip flash no seu aparelho for da EON o processo será mais rápido.
Se você receber uma mensagem “BaudRate AutoSet Fail! Please reset the taget board“, não há comunicação nenhuma entre o software e o aparelho.
Se o seu processo ficar parado em “Init OK”, ou “Start to upgrade” você nem começou a se comunicar. As causas podem ser muitas. Entre elas:
- Se você tem certeza de que seu cabo está OK, inverta RX com TX e tente novamente;
- Tem certeza de que o aparelho está ligado? Quando você está no meio de várias tentativas de recuperar um aparelho “morto” é muito fácil se confundir e esquecer de ligar o aparelho;
- Desligue o aparelho da tomada, aguarde alguns segundos e ligue novamente. A simples manipulação dos fios conectados à serial do aparelho pode travar a CPU. Já aconteceu mais de uma vez comigo e sempre na instalação do cabo (a primeira tentativa de comunicação, mesmo com tudo ligado certinho, não funciona).
- Experimente reduzir o comprimento da parte não blindada do seu cabo, ou usar um cabo inteiramente blindado;
- Experimente desligar qualquer fonte de interferência eletromagnética próxima, como lâmpadas fluorescentes e motores;
Problemas no processo de upgrade
LOG: Start to upgrade
LOG: Flash Type – MXIC(MX29LV160/1(A)T)
LOG:Check & Backup…
LOG: Erasing….
LOG:Restore…
LOG: Updating….
LOG: begin : Mon Feb 06 00:33:34 2006
process 1
process 2
process 3
process 4
process 5
ERR: verify flash failed!
Fail Addr : 0
retry 5 |
Se o processo de update terminar como ao lado, você tem um problema na comunicação. Estou tendo diversos problemas como esse com um lote novo de cabos que comprei. No momento, a “solução” está sendo trocar de cabo. |
Se a comunicação ocorre, mas sempre dá algum tipo de erro, teste com todas as versões do MtkTool e do Mtkcomm possíveis antes de desistir. Se a comunicação nem começa, o problema não é no software.
LOG: Start to backup
LOG: Init OK
LOG: Flash Type - Unknown Flash Memory
LOG: Reading....
|
“Unknown Flash Memory” significa que o player respondeu à identificação do chip flash, mas o código de resposta não está na sua lista de chips suportados. Experimente com versões mais recentes do Mtktool ou com o mtkCom. Na maioria das vezes é apenas um chip que o MtkTool não conhece. Note que o MtkCom pode ser ensinado a reconhecer novos chips editando-se MtkCom.INI. |
Em alguns casos, a gravação pode saltar de, por exemplo, 85% a 100% de uma vez, sem acusar erros. Isso é normal e acontece quando o final do arquivo está vazio (cheio de “FF”s)
Evite usar o computador durante o processo. Ele ficará lento (isso é normal, mesmo para um P4 1.7) e, se for sobrecarregado, o processo poderá travar.
Importante: Após o término do backup, abra o arquivo no MTK Remaker. Se o programa avisar que o checksum está incorreto ou, pior, que o arquivo “não é um firmware mtk”, o backup está corrompido e precisa ser refeito!
Se tentar uma segunda vez e o firmware continuar corrompido, experimente usar outra versão do MtkTool, mesmo uma mais antiga. Eu mantenho as versões 1.29, 1.31, 2.35 e 2.42. O DVP3040K, por exemplo, só funciona com o mtktool 1.31. Outros aparelhos só funcionarão com o MtkCom.
Salve todas as suas tentativas de backup em arquivos separados
|
Quando terminar, o aparelho sempre estará travado. Desligue da tomada, aguarde alguns segundos e ligue novamente.
Como localizar a porta serial do aparelho
Importante: Em todo o tempo que trabalho analisando esses aparelhos baseados em Mediatek, ainda não consegui encontrar nenhum que não tivesse uma porta serial. Ela pode não estar identificada e até só ser visível examinando a placa por baixo, mas sempre está lá.
Isso requer um multímetro (preferencialmente o que tem teste de continuidade sonoro), paciência e mãos firmes.
Primeiro, você deve procurar um agrupamento qualquer de quatro pontos de solda ou orifícios na placa. Em alguns casos você encontrará uma marcação semelhante a “GND, TX, RX e 3.3V” próxima a esses pontos, mas não espere que seja tão fácil. Talvez você encontre o agrupamento, mas terá que identificar se é realmente a porta serial.
Se olhando a placa por cima você não conseguir encontrar a porta de jeito nenhum, experimente retirar a placa e observar por baixo. Alguns aparelhos tem uma indicação em silk-screen por baixo indicando onde é a porta, enquanto em outros a porta está mesmo do lado de baixo da placa e não é acessível por cima.
Abaixo, a porta serial dos LGs (quase todos que lêem DivX são iguais):

Para saber mais sobre a porta serial dos LG, leia minha página correspondente.
Agora, a porta do DVP5100, que também pode ser vista em outras imagens desta página:

Geralmente, os pontos das extremidades são GND e +3.3V. Você poderá identificá-los simplesmente medindo continuidade para a alimentação do chip EEPROM (que em geral é a mesma). Já os pontos RX e TX estão diretamente conectados respectivamente ao pinos 106 e 107 do chip MT1389.
22/09/08: No chip MT1389-F (Proview DVP801), que é menor que o tradicional mas maior que o MT1389-L, a porta serial fica nos pinos 97 e 98.
Se você não entendeu nada do que eu disse acima, desista de fazê-lo sozinho e passe estas instruções para alguém que entenda.
|
Meus agradecimentos ao MaBreaker por ter criado ferramentas que tornam a tarefa de modificar firmwares acessível a pobres mortais como eu, ao MTZ por popularizar a idéia de que a recuperação era possível e a todos os hackers da comunidade Mt13×9.
Leia também:
|
|