Postar resposta

Observação: Este post não será mostrado enquanto não for aprovado por um moderador.

Nome:
Email:
Assunto:
Ícone de mensagem:

Verificação:
Escreva as letras mostradas na imagem
Escutar as letras / Pedir uma nova imagem

Escreva as letras mostradas na imagem:
Escreva "convidado" (sem as aspas) na caixa ao lado (ou abaixo).:

atalhos: pressione alt+s para enviar ou alt+p para pré-visualizar


Resumo do Tópico

Enviado por: Jefferson
« Online: Setembro 28, 2009, 12:20:38 pm »

Mais fontes de informação (não estão na lista do primeiro post):

Site de VB6ROCOD (não deixe de ver o fórum)
http://vb6rocod.euracks.com/

Site de HEJ456 (não deixe de ver o fórum)
http://hej456.com/
Enviado por: Jefferson
« Online: Setembro 28, 2009, 10:54:03 am »

É bom também tomar cuidado com as posições 0x01, 0x02 e 0x03. Mudar qualquer um dos valores nessas posições faz com que o aparelho execute uma espécie de RESET onde dezenas de bytes são alterados e as posições 0x04 e 0x05 recebem os valores correspondentes ao DVP5980K_78.
A explicação para isso está em um documento de Cachirulo chamado "Eeprom-Info-1Nov2004". Os quatro primeiro bytes da EEPROM são um HEADER que o player verifica para validar seu conteúdo através da função "EPR_CheckHeader()". Segundo Cachirulo esses quatro primeiros bytes tem a string "MT37", mas isso deve ser coisa de versões antigas. Notem que os bytes 0x03 e 0x04 do DVP5980 formam a string "39".

Eu ainda estou tentando descobrir como se lê o conteúdo da EEPROM diretamente na shared memory. Até agora eu não consegui acertar a localização, pois os valores de offset como 0x1999 simplesmente não conferem.
http://ryan.com.br/smf/index.php?topic=179.msg9171930#msg9171930
Enviado por: Jefferson
« Online: Setembro 27, 2009, 01:19:43 pm »

Philips DVP5980 - Experiências com o conteúdo da EEPROM

Eu coloquei um soquete no DVP5980 para permitir ficar mudando valores na EEPROM usando meu gravador Willem.


Se a EEPROM não estiver respondendo o aparelho trava exibindo "PHILIPS" no display.

Se você mudar todos os valores da EEPROM para zero, ao ligar pela primeira vez o conteúdo da EEPROM é refeito. Tudo fica de tal forma que o aparelho se identifica como um DVP5980K_55. A porta HDMI continua funcionando normalmente após isso, com um detalhe: se na primeira vez que o aparelho for ligado houver um disco dentro, a imagem pela HDMI fica bagunçada, mas basta apertar o botão HD UPSCALE para consertar imediatamente. Se não houver disco a imagem já aparece certa. Não entendi a razão.

Aparentemente o endereço 0xB7 guarda algum tipo de status do aparelho. O valor armazenado alterna entre 0x3E e 0x6E aparentemente dependendo de se a bandeja estava aberta ou fechada quando o aparelho perdeu a energia.
Enviado por: Jefferson
« Online: Setembro 27, 2009, 12:58:25 pm »

Philips DVP5980 - Como é definido o sub-modelo

As posições de EEPROM que definem o sub-modelo são 0x04 e 0x05. A correspondência é esta:

00 FF = DVP5982_37
01 FE = DVP5980K_55 (default)
02 FD = DVP5980K_75
03 FC = DVP5986K_98
04 FB = DVP5986K_51
05 FA = DVP5986K_96
06 F9 = DVP5980K_78

Adicionalmente, qualquer outro par de valores faz o aparelho se identificar como DVP5980K_78. Isso faz algum sentido pois já que o DVP5980K_78 é o último da lista a rotina de identificação deve ser do tipo "se nenhuma opção confere, é o útimo".

É bom também tomar cuidado com as posições 0x01, 0x02 e 0x03. Mudar qualquer um dos valores nessas posições faz com que o aparelho execute uma espécie de RESET onde dezenas de bytes são alterados e as posições 0x04 e 0x05 recebem os valores correspondentes ao DVP5980K_78.

Em resumo, para configurar o sub-modelo é preciso alterar corretamente as posições de 0x01 a 0x05 da EEPROM.

Testes com firmware V43

Existem duas rotinas que lêem essas posições de EEPROM: B3:7CC7 e B5:A68E
Existe uma rotina que grava o sub-modelo em B4:A59C

É bom lembrar que o firmware tem uma função oculta que permite escolher o modelo. Isso é sugerido pela string "!PLS INPUT MODEL CODE:" (B3:39CC). Então não dá para saber se a rotina que grava o sub-modelo é chamada por esta rotina ou pela de RESET.
Enviado por: Jefferson
« Online: Setembro 26, 2009, 12:36:44 pm »

Philips DVP5980K/55 - O conteúdo da EEPROM

Eu arrumei disposição hoje para dessoldar o chip de um dos meus DVP5980 e ler no meu Willem.

Antes de dessoldar o chip eu dei um comando de RESET no setup do DVP5980 para carregar os valores default.

Depois de obtido o arquivo (anexo) eu dei uma olhada aleatória em alguns endereços e os valores armazenados correspondem ao default, por isso acredito que a leitura tenha sido um sucesso.



Notem o seguinte:

*Nenhum endereço a partir de 0x1F0 é usado.
*Todos os endereços com conteúdo FF são potencialmente endereços livres. E existe um monte deles mesmo na faixa de 0-255.

Próximo passo: descobrir qual byte é responsável pela identificação do sub-modelo.

Enviado por: zeurt
« Online: Janeiro 02, 2009, 01:27:45 am »

Como descobrir a Região do DVD dos Firmwares LGs, analisando os nomes dos arquivos de upgrade por CD

Descobri que a Região do DVD desses Firmwares fica a nossa disposição, nos nomes dos arquivos de upgrade por CD.
Na verdade, as regiões são representadas por letras e não por números (as letras de A a F correspondem as regiões de 1 a 6, enquanto que Region Free (0) é representada por 0 mesmo).
O local dessa letra pode variar um pouco, mas normalmente antecede imediatamente 3 letras como MIE, MIH, MIS, etc.

Vejam exemplos:

Região 4 ou D

DK8321N (extraído pelo Ryan): LV8B3220D.MIH
DK194g (extraído pelo Ryan): LVLV10B02207D.MIE
DV256K: LG_DV_LV070B222030DMIE.ROM
DV397H (Brasileiro, baseado na tela de versão relatada por 2 usuários): LG_DV_LV81F33B40DMSMIS.ROM

Região 2 ou B

LG9843 (Europeu): LV9E12203B.MIH

Região 0

DV397H (Firmware que enviei): LG_DV_LV81F33B400MSMIS.ROM

Destaquei em verde MS, pois foge um pouco dos nomes anteriores. Acho que tem haver com o Chipset MT1389S, já que o Firmware do DV383, que também é recente e tem Firmware MT1389L apresenta ML no lugar.

Enviado por: jmaraujo
« Online: Outubro 16, 2008, 01:41:33 am »

Todo mundo que participou nesse tópico sugeriu alguma coisa (sempre em hipótese), mas o Jor-El, que é programador, sumiu e o tópico ficou esquecido...

Na teoría foi um tópico muito interessante, mas na prática não sei se é possivel...
Enviado por: zeurt
« Online: Outubro 16, 2008, 12:44:29 am »

Estamos manejando duas hipóteses:

- A sugerida por ele usa o mesmo método do patch Unicode.

Criase uma fonte extendida com carateres normais nas posições normais, e carateres em itálico nas posições extendidas. Quando o Arm detecta a apertura do tag, soma-se um valor X ao valor de cada caratere, coincidindo com o mesmo caracter em itálico. Quando o Arm detecta o fechamento do tag, usa-se os carateres normais.

Se entendí bem, o sugerido por ele é o mesmo que o sugerido por você.

- O que eu sugerí foi: Criar quatro fontes normais e as quatro correspondentes em itálico. E no menu por somente escolha de quatro fontes (as fontes "normais": 1, 3, 5 e 7).

Exemplo:
Fonte 1: Fonte 1 normal
Fonte 2: Fonte 1 itálico
Fonte 3: Fonte 2 normal
Fonte 4: Fonte 2 itálico
Fonte 5: Fonte 3 normal
Fonte 6: Fonte 3 itálico
Fonte 7: Fonte 4 normal
Fonte 8: Fonte 4 itálico
Quando o Arm detecta a apertura do tag, soma 1 ao valor da fonte em uso. Quando detecta o fechamento do tag, resta (sustraí?) 1 ao valor da fonte...

Por enqüanto é tudo em teoría...

Oi, jmaraujo. Alguma novidade na tentativa de implementação do suporte a <i> tag em legendas .srt?
Enviado por: jmaraujo
« Online: Setembro 08, 2008, 11:50:59 am »

Como ter uma selection bar "colorida" nos firmwares Philips

Estas são as instruções que passei para o pauloturij em maio deste ano.



Pessoalmente não gosto da barra de seleção desse jeito (também não gosto do scrollbar), por tanto não incluí -nem penso incluir- as mudanças no meu firmware. Mas acredito que muita gente prefira assim... por tanto aquí estão as mudanças:

ROM:50AA 02 -> 03

ROM:5AFC 7B -> E4
ROM:5AFD 03 -> FB

ROM:5F35 7B -> E4
ROM:5F36 03 -> FB

ROM:6178 7B -> E4
ROM:6179 03 -> FB

ROM:6EF7 7B -> E4
ROM:6EF8 03 -> FB
ROM:6FA1 7B -> E4
ROM:6FA2 03 -> FB

ROM:885C 7B -> E4
ROM:885D 03 -> E4
ROM:885E E4 -> FB

ROM:9E2A 02 -> 03

(Todos os endereços correspondem ao Banco 1 do firmware do DVP5100 v0E.0A)
Enviado por: Jefferson
« Online: Setembro 04, 2008, 03:02:18 am »

Como funciona o esquema de bancos nos novos firmwares

Isso é só um rascunho.

Recapitulando:

  • A arquitetura 8051 só suporta 64K de memória;
  • O truque que permite ao MT1389 usar um código 8032 maior que 64K, divide o código em segmentos de 64KB chamados de bancos e requer o uso de Bank Switch Tables (BSTs) idênticas em cada banco para que seja possível que um banco possa chamar rotinas que estão gravadas em outro.

O código 8032 é agora organizado das duas maneiras a seguir:



Eu não tenho certeza ainda, mas aparentemente no novo formato a BST tem um tamanho fixo de 12K e o espaço para o código de cada banco é fixo em 52K.

O esquema antigo produz um desperdício natural com a repetição da BST em cada banco. O novo esquema tem o objetivo de reclamar esse espaço desperdiçado, mas tenha em mente que nem um byte é ganho no espaço do código 8032 para patches. Um banco que só teria 100 bytes livres no esquema antigo continua com 100 bytes livres no esquema novo. Todo o espaço economizado com o novo esquema pode ser aproveitado basicamente com mais fontes e imagens.


E ainda é mais complicado do que parece:

A arquitetura 8051 requer que, pelo menos na memória RAM, o truque de bank switching seja implementado da forma tradicional: BST + banco 0 + BST + banco 1 + BST + banco 2, então apesar do chip MT1389L estar programado para carregar apenas uma BST, ele precisa gravar o código 8032 na memória da mesma forma que o chip tradicional MT1389. Todo o endereçamento das rotinas considera (e precisa ser dessa forma) que as BSTs estão lá, no início de cada banco. Por conta disso você não pode mais simplesmente carregar a parte 8032 do código no IDA ou num editor hexadecimal e fazer patches, porque não sendo no banco zero, vai dar tudo errado.

Para ter um bloco 8032 normal a partir de um bloco 8032 "L" de três bancos basta fazer o seguinte:

copy /b BST+bloco0+BST+bloco1+BST+bloco2 8032_normal.bin


Se você analisar com um comparador binário, é exatamente isso que New Age faz com o novo MtkExtract:
  • 8032__normal.bin -> É o bloco 8032 do jeito que vai para a memória.
  • 8032__flash.bin  -> É o bloco 8032 do jeito que está no firmware.

Note que New Age chama de "common code" o que eu chamo de BST.

Então, para analisar no IDA PRO, você precisa usar 8032__normal.bin

Porém um problema permanece. Após a análise no IDA, você precisa fazer as edições tembém em 8032__normal.bin (não é mais possível editar diretamente o firmware, porque os endereços vistos no IDA só vão corresponder para o banco zero). Depois 8032__normal.bin precisa ser "recortado" e "remontado" como um novo 8032__flash.bin, para só então substituir no firmware.

Esse é mais um motivo para que as ferramentas existentes não tenham condição de lidar com os firmwares novos. Muita coisa precisa ser adaptada para lidar com as duas situações.

Enviado por: jmaraujo
« Online: Setembro 03, 2008, 06:36:29 pm »

Como mover os tags mp3 e jpg preview para parte de baixo da tela:

Bem, a primeira parte (mover os tags mp3) Jefferson já explicou muito claramente como é que se faz.

Para mover o jpeg preview tem de se trocar as coordenadas absolutas (a diferença dos tags, que usam coordenadas relativas) da imagem...

Buscar a seqüencia "7D ? 7F 9A 7E 02 12 ? ? 7D ? 7F 9B 7E 02 12 ? ? 7D ? 7F 9C 7E 02 12 ? ? 7D ? 7F 9D 7E 02 12 ? ? 7D ? 7F 9E 7E 02 12 ? ? ", para achar uma parte onde ArmPutChar (WriteSInfo) é chamado cinco vezes com os valores 0x029A, 0x029B, 0x029C, 0x029D e 0x029E.

Deslize a rotina para cima até o começo e de nome a função: fgFlMnInit.

Voltem novamente até a parte da seqüencia achada. Se quiser podem colocar um nome local nesta parte da rotina. Aquí é definido o tamanho e posição da miniatura jpeg:

ROM:4FF8             fgFlMnInit:
(...)
ROM:50D4             Jpg_preview
ROM:50D4 7D 01               mov     R5, #1                    ; Mostrar jpg preview (1=Sim 0=não)
ROM:50D6 7F 9A               mov     R7, #0x9A ; 'Ü'
ROM:50D8 7E 02               mov     R6, #2
ROM:50DA 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50DA
ROM:50DD 7D 78               mov     R5, #0x78 ; 'x'           ; Preview JPG posX / 5 (coord. absoluta)
ROM:50DF 7F 9B               mov     R7, #0x9B ; 'ø'
ROM:50E1 7E 02               mov     R6, #2
ROM:50E3 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50E3
ROM:50E6 7D 4F               mov     R5, #0x4F ; 'O'           ; Preview JPG posY / 4 (coord. absoluta)
ROM:50E8 7F 9C               mov     R7, #0x9C ; '£'
ROM:50EA 7E 02               mov     R6, #2
ROM:50EC 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50EC
ROM:50EF 7D 23               mov     R5, #0x23 ; '#'           ; Preview JPG Largura / 5
ROM:50F1 7F 9D               mov     R7, #0x9D ; 'Ø'
ROM:50F3 7E 02               mov     R6, #2
ROM:50F5 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50F5
ROM:50F8 7D 14               mov     R5, #0x14                 ; Preview JPG Altura / 4
ROM:50FA 7F 9E               mov     R7, #0x9E ; '×'
ROM:50FC 7E 02               mov     R6, #2
ROM:50FE 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar


Troque os valores em vermelho para mudar posição e tamanho do jpeg preview.

Notem que os valores a insertar tem que ser divididos entre 4 ou 5. Ou seja, se quiser uma largura de 200px, tem que fazer 200 / 5 = 40, é depois convertir o resultado de hexadecimal em decimal 40 => 28.
Enviado por: Jefferson
« Online: Março 04, 2008, 03:49:13 am »

Como saber que células da palete corrente um determinado ícone usa.

Depois que você sabe como a coisa funciona, percebe que é isso que o MTK Remaker mostra, na aba MEMO:



As letras que você vê compondo a imagem do ícone não são escolhidas ao acaso. Cada uma delas é o númro em hexadecimal da cor na palete, de 0 a F. Assim como você pode ver, o fundo do ícone está na cor 0x0 (que é geralmente tratada como transparente na exibição) e a maior parte do corpo do cadeado está na cor 0xE. Que cor realmente será essa depende da palete em vigor onde o ícone é exibido.

Toda a explicação necessária para entender como o "bitmap" do ícone é armazenado está no documento !Primeros_pasos_MT1389_v0_3b.rtf de Cachirulo. Com base nessas informações eu já consegui fazer rotinas em Delphi que desenham ícones Mediatek e pretendo usar isso em uma futura versão do MTK Patcher.
Enviado por: Jefferson
« Online: Março 04, 2008, 02:21:01 am »

Entendendo como os textos são armazenados no bloco Languages.

Ontem eu apanhei pela segunda vez com isso, por isso vou deixar a parte confusa documentada aqui. O básico sobre como localizar os textos está explicado no documento !Primeros_pasos_MT1389_v0_3b.rtf de Cachirulo. (evite tradução porca para o inglês de Mabreaker: Info - MT1389 v0.3b English.rtf, porque traduzir "IDA Pro" como "GOING Pro" é dose...), mas o que vou explicar aqui não está lá. Você só entende isso depois de fuçar com o MTK Lang Creator, o MTK Lang Editor e o próprio MTK Remaker.

Vou usar o MTK Remaker para mostrar como funciona:



Note que "\2dX" tem apenas quatro caracteres, mas na imagem eu digo que são cinco. Repare que existe um espaço antes da barra, que é o quinto caractere.

A lógica 8032 deve entender essa string mais ou menos assim:

  • Reserve um buffer de 6 caracteres;
  • Selecione a fonte 09 e pegue o seguinte (um) caractere;
  • Selecione a fonte 00 e pegue os seguintes (cinco) caracteres.
Enviado por: doctorxyz
« Online: Fevereiro 15, 2008, 10:56:13 pm »

Ronison,

Caso sobre um tempo, dê uma olhadinha em

Nomes Longos a Partir da USB (Philips DVP5965K/55) -> http://ryan.com.br/smf/index.php?topic=319.0

Ao que parece, falta pouco!

Saudações,
doctorxyz
Enviado por: rafalibrenz
« Online: Fevereiro 14, 2008, 10:45:20 am »

Em algums firmwares existe um filtro no 8032 também. [...] e como a v43 do firmware do 5980 é um pouco diferente, quem sabe ela tenha o tal filtro...

Jmaraujo,

Com certeza o problema não é o tal filtro no 8032.

Peguei o firmware em que os acentos apareceram no browser lendo disco e substituí o RISC pelo RISC do firmware do DVP5160.

Este firmware é aquele que faz o player perder a saída HDMI, mas dá a capacidade de ler mais caracteres (em torno de 23) via USB.

E para minha surpresa, os caracteres acentuados apareceram perfeitamente via USB, inclusive a pasta "ÇÔÁÃóã".

Conclusão: O problema dos nomes USB deve estar no ARM mesmo.

Muito obrigado pela ajuda, Jmaraujo!