FORUM.RYAN.COM.BR

Video e Audio => DivX Players => Firmware Mediatek MT13x9 - Desenvolvimento => Tópico iniciado por: zeurt em Agosto 20, 2008, 03:50:12 am

Título: Firmware do LG DV397H
Enviado por: zeurt em Agosto 20, 2008, 03:50:12 am
Acrescentado pela moderação:

Este é um tópico de desenvolvimento e não de suporte.


Abaixo desta linha segue o texto original de Zeurt.


O CHIPSET do LG DV397H é MEDIATEK MT1389S.  :clapping:
Estou enviando o firmware original (versão 2.6). Atenção: Não sei se esse firmware é relativo ao aparelho do Brasil. Se for de outro país, irá funcionar normalmente, porém os idiomas disponíveis no SETUP Menu serão outros; e ao retornar à configuração de fábrica, a região do DVD será outra. Nesse caso é só desbloquear para Region Free
Deve-se modificar o nome do arquivo a ser gravado na raiz do CD da seguinte forma:
1-Entrar na tela de serviço conforme explicado pelo Ryan aqui: http://ryan.com.br/prod_dk194g_br.htm#service (http://ryan.com.br/prod_dk194g_br.htm#service)
2-Anotar o modelo (MODEL).
3-Modificar o nome do arquivo do firmware para: MODEL(anotado) + MIS.ROM (em resumo, adicionar MIS.ROM ao MODEL anotado).
4- Gravar na raiz do CD e atualizar como nos outros modelos LG.

CUIDADO! Leia isso: http://ryan.com.br/prod_dk8321n_firmware.htm (http://ryan.com.br/prod_dk8321n_firmware.htm)
Leia principalmente a parte referente aos cuidados que devem ser tomados no processo de atualização, além dos riscos inerentes a esse processo.
Título: Re: Firmware do LG DV397H
Enviado por: jmaraujo em Agosto 23, 2008, 03:40:29 am
Isso mesmo, o chipset é um MT1389S (relativamente novo), que é capaz de suportar Windows Media Video.

Citação de: Mediatek
MediaTek MT1389S é um system-on-chip (SoC) para DVD, que incorpora características avançadas, incluindo Windows Media Video 9 (WMV9), o líder da indústria em tecnologia de compressão de video, da Microsoft Corp.
(traduzido com Google Translator)

Mais informações:
http://www.mediatek.com/News/Downloads/2007/0326MT1389S-DVD-Player.pdf (http://www.mediatek.com/News/Downloads/2007/0326MT1389S-DVD-Player.pdf)
Título: Re: Firmware do LG DV397H
Enviado por: xdogo em Setembro 29, 2008, 07:03:44 am
olá prezados colegas,

Comprei o DV397H e estou pesquisando sobre ele na net, encontrei este site, muito bom por sinal :D

Enfim, queria saber se vai ter alguma diferença eu atualiza-lo com este firmware disponibilizado aqui neste topico (v2.6), se vai ter alguma diferença.

Uma coisa que nao gostei no DVD foi que não tem zoom para menos (1/2, 1/3, 1/4) como os da philips, será que com uma mudança de firmware isso seria possível?

Alguém está trabalhando em cima deste firmware?


Agradeço a quem puder responder meus questionamentos. :)


Abraços!
Título: Re: Firmware do LG DV397H
Enviado por: xdogo em Setembro 30, 2008, 01:50:36 am
Pessoal,

Comprei esse player, porém não recebi o mesmo ainda.

Já existe um post relatando um problema de que o mesmo não lê legendas de Divx em pendrive via USB. O relato informa que as legendas funcionam apenas quando o divx está em mídia (CD). Mais detalhes em:
http://www.htforum.com/vb/showpost.php?p=1330058&postcount=72

Alguém por aqui já teve problema similar? Alguma chance de corrigir isso via firmware?

Valeu!


Olha, eu comprei o player e ele lê sim legendas pelo pendrive, assisti 2 episodios de series assim...


o problema que identifiquei foi que ele nao da zoom regressivo (pra menos) como os outros, e queria saber se existe algum firmware, ou entao mesmo saber as diferenças deste firmware postado aqui no topico do existente no DVD.


Abraços :legal:
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 30, 2008, 08:32:13 pm
o problema que identifiquei foi que ele nao da zoom regressivo (pra menos) como os outros, e queria saber se existe algum firmware, ou entao mesmo saber as diferenças deste firmware postado aqui no topico do existente no DVD.

Nenhum LG apresenta o recurso de Zoom Out (pelo menos os Mediatek dos últimos 5 anos).
O firmware enviado por mim é original e versão 2.6 e deve ser usado basicamente para o seguinte fim: ser estudado, para posterior criação de firmware alternativo com modificações relevantes. Deve-se sempre estar atento ao que expliquei no primeiro post deste tópico. Para saber a versão do seu firmware original faça como explicado aqui: http://ryan.com.br/prod_dk194g_br.htm#service (http://ryan.com.br/prod_dk194g_br.htm#service)
Caso tenha verificado isso, envie para cá o resultado: a versão do Firmware e o Modelo (Model) que aparecer na tela. Isso terá utilidade.
Título: Re: Firmware do LG DV397H
Enviado por: jmaraujo em Outubro 01, 2008, 01:33:54 am
Faça um teste: Se souber como rotear as teclas do controle remoto, troque, por exemplo a tecla '9' (byte 09) pelo byte '3E'.

3E é o equivalente a "Zoom out". (O zoom "tradicional" é "3D")

Se apertando '9' no controle remoto, o firmware fizer "zoom out", então o problema é fácil de solucionar: Inserte "3E" no lugar do zoom "tradicional" (3D).

Más se ao apertar '9' não acontecer nada, é provavel que o firmware careça do código que faz o "handling" do zoom out.

Não sei se da para entender o que quero dizer... :oops:
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Outubro 01, 2008, 01:54:06 am
Faça um teste: Se souber como rotear as teclas do controle remoto, troque, por exemplo a tecla '9' (byte 09) pelo byte '3E'.

3E é o equivalente a "Zoom out". (O zoom "tradicional" é "3D")

Se apertando '9' no controle remoto, o firmware fizer "zoom out", então o problema é fácil de solucionar: Inserte "3E" no lugar do zoom "tradicional" (3D).

Más se ao apertar '9' não acontecer nada, é provavel que o firmware careça do código que faz o "handling" do zoom out.

Não sei se da para entender o que quero dizer... :oops:

Deu pra entender sim. Quando puder farei o teste no LG DV256K (já localizei a RC_TAB no firmware). Não sei se vai dar certo, considerando que esses LGs sempre apresentam diferenças em relação aos Mediateks tradicionais, mas vamos tentar... Obrigado, jmaraujo! Outra maneira de tentar essa implementação seria tentar descobrir como xypro modificou o firmware do LG9XXX, alterando a taxa do zoom. Porém, seria necessário um estudo comparativo minucioso bem demorado para se localizar isso...
Título: Re: Firmware do LG DV397H
Enviado por: jmaraujo em Outubro 01, 2008, 02:02:07 am
Não sei como foi que o Xypro fez, mas existe um patch para modificar o nivel do zoom. Infelizmente o dito funciona somente em modo DVD, e não em modo ISO. Em modo ISO o zoom é fixo...

Repito, não sei se é o mesmo usado pelo Xypro.

No meu caso não tive interesse  de aplicar esse patch pelo fato de não funcionar em modo ISO.
Título: Re: Firmware do LG DV397H
Enviado por: Tardeli em Dezembro 28, 2008, 04:00:19 am
Ola a todos em primeiro lugar espero que todos tenham passado um feliz natal com suas famílias.
pensando em ajudar um pouco eu comprei esse dvd DV397H hoje e a primeira coisa que fiz foi entrar no setup da máquina e retirar os dados que passo aqui em seguida.

System information


Model              : LG_DV_LV81F33B40DMS

CHIP I.D           : MT 1389 S

SERVO VER          : V.2.6

CHECKSUM           : 7F88

HDCP KEY IS VAILD  : YES

FACTORY RESET ..DONE .PLZ POWER DOWN! 

como faz tempo que não entro aqui no forum, aguardo logo logo um firmware para ele para no mínimo mudar a cor das legendas como fiz no DV256K e que ficaram ótimas em amarelo.
Bom sem mais, desejo que Deus continue iluminando essas cabeças maravilhosas de vocês aqui do forum.
Ao Ryan e a todos do forum um Ano novo de saúde, paz, felicidades e muitos chips pra ferver a cabeça de vocês todos.   
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Dezembro 31, 2008, 06:01:37 pm
Olá a todos.
Gostaria de agradecer ao Zeurt pela disponibilização do firmware v2.6.  :clapping:
Comprei este equipamento e o famoso Timing Bug (que eu não conhecia de nome), me incomodava muito. Sou "chato" com legendas. :)
Resolvi arriscar (não tenho o cabo serial), peguei o firmware postado e fiz os procedimentos utilizando o MTKRemaker e o Xvi32.
Felizmente, deu tudo certo!  ;D

Gostaria de repassar algumas informações:

1) Ao menos comigo (no meu DV397H) o Bug não ocorre com outros tipos de legendas. Testei com "SubViewer 2.0" e com "MicroDVD" (ambas geram arquivos .SUB). Funciona "redondo" com as legendas entrando nos tempos certos.
Obs: Salvo engano, acho que isto também ocorre no famigerado gravador Philips 3355.
Diga-se de passagem, a pior compra que fiz na vida...  :dashhead1:

2) Seguem as informações sobre o meu DV397H, antes e depois do ajuste no firmware:

Model: LG_DV_LV81F33B40DMS / LG_DV_LV81F33B400MS
Chip: MT1389 S
Servo: 0D67
Micom: v2.301 / v2.6
Checksum: 4BB8 / 7FFC

3) Achei o avanço e retrocesso em USB (principalmente o segundo) em DIVx/Xvid sofríveis (lentos).
No retrocesso então, sem a menor precisão.
Talvez pelo fato da USB ser 1.1?

4) O "dito cujo" sofre com Packet Bitstream.
Tem que ser removido mesmo.

Abraço e um excelente 2009 a todos!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Dezembro 31, 2008, 06:52:35 pm
Olá a todos.
Gostaria de agradecer ao Zeurt pela disponibilização do firmware v2.6.  :clapping:
Comprei este equipamento e o famoso Timing Bug (que eu não conhecia de nome), me incomodava muito. Sou "chato" com legendas. :)
Resolvi arriscar (não tenho o cabo serial), peguei o firmware postado e fiz os procedimentos utilizando o MTKRemaker e o Xvi32.
Felizmente, deu tudo certo!  ;D

Legal que tenha dado certo! Você poderia confirmar se o DVD continua região 4? Vi que após a atualização você acessou a tela de serviço. Depois de entrar nessa tela, o player volta a configuração de fábrica (que no seu caso foi a configuração do novo firmware). Peço a você para entrar na tela de desbloqueio do DVD, para confirmar a região atual. Obrigado! Não sei se o método de desbloqueio é o mesmo do DV256K, DK194g, etc. : http://ryan.com.br/prod_dk194g_br.htm#region (http://ryan.com.br/prod_dk194g_br.htm#region).
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Dezembro 31, 2008, 09:02:35 pm
Zeurt,

O procedimento é o mesmo dos outros players que você citou.
O player "volta" como "Region 0".

Abraço.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 01, 2009, 02:21:56 am
Model: LG_DV_LV81F33B40DMS / LG_DV_LV81F33B400MS
Chip: MT1389 S
Servo: 0D67
Micom: v2.301 / v2.6
Checksum: 4BB8 / 7FFC

Model              : LG_DV_LV81F33B40DMS

CHIP I.D           : MT 1389 S

SERVO VER          : V.2.6

CHECKSUM           : 7F88

HDCP KEY IS VAILD  : YES

FACTORY RESET ..DONE .PLZ POWER DOWN! 

É estranho que Viper3M e Tardelli tenham telas de serviço tão diferentes. E o "PLZ POWER DOWN" da de Tardelli parece muito suspeito.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 01, 2009, 02:24:28 am
Comprei este equipamento e o famoso Timing Bug (que eu não conhecia de nome), me incomodava muito.

Incomodava?

Esse firmware corrigiu o problema?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 04:23:01 am
Esse firmware corrigiu o problema?

Pelo que eu entendi, ele fez a correção do Subtitle Timig Bug através do editor hexadecimal (usando o firmware disponível aqui como base). Inclusive, eu já até havia pesquisado e encontrado os bytes relacionados ao Subtitle Timing Bug nesse Firmware Original que enviei.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 01, 2009, 04:29:13 am
Esse firmware corrigiu o problema?

Pelo que eu entendi, ele fez a correção do Subtitle Timig Bug através do editor hexadecimal (usando o firmware disponível aqui como base).


Putz. Estava escrito e eu li duas vezes mas não vi.
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 12:13:45 pm
Model: LG_DV_LV81F33B40DMS / LG_DV_LV81F33B400MS
Chip: MT1389 S
Servo: 0D67
Micom: v2.301 / v2.6
Checksum: 4BB8 / 7FFC

Model              : LG_DV_LV81F33B40DMS

CHIP I.D           : MT 1389 S

SERVO VER          : V.2.6

CHECKSUM           : 7F88

HDCP KEY IS VAILD  : YES

FACTORY RESET ..DONE .PLZ POWER DOWN! 

É estranho que Viper3M e Tardelli tenham telas de serviço tão diferentes. E o "PLZ POWER DOWN" da de Tardelli parece muito suspeito.

Jefferson,

As duas linhas seguintes, também aparecem na minha tela de serviço.

HDCP KEY IS VAILD  : YES
FACTORY RESET ..DONE .PLZ POWER DOWN!

Eu as omiti, pois achei que seria redundância.

Esse firmware corrigiu o problema?

Pelo que eu entendi, ele fez a correção do Subtitle Timig Bug através do editor hexadecimal (usando o firmware disponível aqui como base). Inclusive, eu já até havia pesquisado e encontrado os bytes relacionados ao Subtitle Timing Bug nesse Firmware Original que enviei.


Correto, Zeurt!
Como citei que as legendas eram mostradas corretamente com o uso de legendas ".SUB", posso ter confundido a leitura do Jefferson.
Explicando melhor:
O Timing Bug "não ocorre" com legendas .SUB, seja no firmware original, seja no firmware alterado (após edição no Xvi32).
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 01, 2009, 12:42:10 pm
FACTORY RESET ..DONE .PLZ POWER DOWN!

Eu as omiti, pois achei que seria redundância.

"PLZ" é gíria. Para mim soa tão suspeito quanto ver aparelhos brasileiros dizendo "PQ", "VC", etc.

O Timing Bug "não ocorre" com legendas .SUB, seja no firmware original, seja no firmware alterado (após edição no Xvi32).

O "Timing bug" só ocorre com legendas SRT. Por isso é mais apropriado chamar de "SRT Timing Bug". Mas eu costumo esquecer e chamar de "Subtitle Timing Bug" nos meus textos.
Título: Re: Firmware do LG DV397H
Enviado por: sedm em Janeiro 01, 2009, 03:21:32 pm
Comprei o DVD da LG DV397H, e estou juntando as legendas com o programa  Sub2Divx ou AVIAddXsubs, para poder colocar as legendas amarelas e maiores, mas tenho reparado que as legendas as vezes somem muito rápido, não dá para ler, pensei que era porque a legenda estava com a duração muito curta, mas verifiquei no Subtitle Workshop e estava normal, e assistindo no computador a duração ficava maior, então gostaria de perguntar se isso poderia ser por causa do "timing bug",

e Viper3M, você poderia disponibilizar o firmware que você modificou?
Obrigado.

Sérgio
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 04:23:41 pm
Comprei o DVD da LG DV397H, e estou juntando as legendas com o programa  Sub2Divx ou AVIAddXsubs, para poder colocar as legendas amarelas e maiores, mas tenho reparado que as legendas as vezes somem muito rápido, não dá para ler, pensei que era porque a legenda estava com a duração muito curta, mas verifiquei no Subtitle Workshop e estava normal, e assistindo no computador a duração ficava maior, então gostaria de perguntar se isso poderia ser por causa do "timing bug",

Como o Ryan disse, o Timing Bug é relacionado apenas as legendas externas .srt.
Portanto, tal bug não influencia em nada as legendas embutidas XSUB que você tem usado. Não sei o que pode estar causando essa diferença de tempo em relação ao verificado no PC. Acontece tanto com o Sub2DivX como com o AVIAddXsubs? Nunca cheguei a notar esse problema. Inclusive o AVIAddXsubs tem uma opção para aumentar a duração das legendas (Increase Duration by), e já vem como Default para aumentar a duração de todas as legendas em 1 segundo (quando possível, não causando sobreposição).

Título: Re: Firmware do LG DV397H
Enviado por: sedm em Janeiro 01, 2009, 06:06:11 pm
Sim, acontece tanto com o Sub2DivX como com o AVIAddXsubs, e também acontece quanto eu coloco o avi normal junto com a legenda em srt.
A versão do meu firmware é 2.02, será que eu devo atualizar para a versão 2.6 que têm aqui?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 08:20:51 pm
Sim, acontece tanto com o Sub2DivX como com o AVIAddXsubs, e também acontece quanto eu coloco o avi normal junto com a legenda em srt.
A versão do meu firmware é 2.02, será que eu devo atualizar para a versão 2.6 que têm aqui?

1- Acho que vale a pena esperar para ouvirmos opiniões de outros proprietários deste player sobre problemas com a duração das legendas embutidas XSUB (peço a quem opinar, que informe a versão do firmware).

2- Este Firmware Original V2.6 que enviei no início deste tópico não irá resolver o problema do SRT Timing Bug. Apenas o Firmware com a correção de tal bug irá resolver (como o que Viper3M fez).
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 09:08:56 pm
Zeurt,
Em instantes postarei alguns testes com legendas.
Posso postar o firmware que alterei (baseado no que você enviou)?
Pelo jeito você não possui o aparelho. Poderia dizer onde o conseguiu?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 09:38:12 pm
Posso postar o firmware que alterei (baseado no que você enviou)?

Pode postar, sem problemas!

Pelo jeito você não possui o aparelho.

Não possuo o aparelho. Só estou colaborando com um pouquinho de experiência em LGs que acumulei estudando o LG DV256K e seus antecessores.
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 09:40:15 pm
Comprei o DVD da LG DV397H, e estou juntando as legendas com o programa  Sub2Divx ou AVIAddXsubs, para poder colocar as legendas amarelas e maiores, mas tenho reparado que as legendas as vezes somem muito rápido, não dá para ler, pensei que era porque a legenda estava com a duração muito curta, mas verifiquei no Subtitle Workshop e estava normal, e assistindo no computador a duração ficava maior, então gostaria de perguntar se isso poderia ser por causa do "timing bug",

e Viper3M, você poderia disponibilizar o firmware que você modificou?
Obrigado.

Sérgio

Sérgio,
Eu já havia pensado em enviar o firmware, mas não sei se há algum empecilho.
Sou novo no grupo e "NÃO SEI 1%" do que o pessoal que destrincha firmwares, sabe.
Tanto é, que nem tenho o cabo de dados e usei MTKRemaker pela 1ª vez!
Assim que eu tiver o sinal verde, enviarei o dito.

Acabei de fazer 2 testes idênticos, mas usando programas diferentes (o SRT2bmp e o AviAddXsub).
Utilizei o seguinte (sempre fiz desta forma no SRT2bmp):
Fonte: ANSI 22
Charset: Default
Cor: Amarela
Outline: Preto / 3

No SRT2bmp (que já uso há tempos), o dito desloca as legendas para a direita na TV.
No meu LG_9923, isto NUNCA aconteceu.
Logo, em linhas mais longas, não se consegue ler o final da linha.

No AviAddXsub, funcionou 99,9%.  :)
Tenho o hábito de colocar a primeira linha nas minhas legendas com tempo 0 (zero) e o valor dos FPS do filme/legenda (organização minha).
Esta linha não deveria aparecer. Mas no AviAddXsub, aparece!  :o
===============================================================================================
Salvo engano meu, acho que o sintoma que você reportou, acontecia no firmware original.
Voltarei com a v2.6 (limpa) e testarei. Informo depois o que aconteceu.

Abraço
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 10:17:09 pm
Comprei o DVD da LG DV397H, e estou juntando as legendas com o programa  Sub2Divx ou AVIAddXsubs, para poder colocar as legendas amarelas e maiores, mas tenho reparado que as legendas as vezes somem muito rápido, não dá para ler, pensei que era porque a legenda estava com a duração muito curta, mas verifiquei no Subtitle Workshop e estava normal, e assistindo no computador a duração ficava maior, então gostaria de perguntar se isso poderia ser por causa do "timing bug",

e Viper3M, você poderia disponibilizar o firmware que você modificou?
Obrigado.

Sérgio

Salvo engano meu, acho que o sintoma que você reportou, acontecia no firmware original.
Voltarei com a v2.6 (limpa) e testarei. Informo depois o que aconteceu.


Confirmado!
O que o Sérgio reportou com as legendas XSUB acontece mesmo na versão "limpa" do firmware v2.6.
Timing Bug em DMF?!  :-[
Voltarei com a versão que alterei e, na próxima msg, farei o upload da mesma (para ter certeza que estou enviando o arquivo certo  :)).

Em tempo:
Estou fazendo esses testes usando pendrive Kingston (2 Gb e 4 Gb).
Estou assistindo meus Divx's com sucesso, usando um case externo (para HD de laptop). HD de 40 Gb (Fat32).
Mas precisa de alimentação externa de 5v.
A porta USB não sustenta o HD. Será que é por ser USB 1.1?

Abraço
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 10:30:39 pm
Confirmado!
O que o Sérgio reportou com as legendas XSUB acontece mesmo na versão "limpa" do firmware v2.6.
Timing Bug em DMF?!  :-[

Legal! Muito interessante! Nunca havia lido nada a respeito (SRT Timing Bug também afetando as legendas XSUB/DMF).
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 10:35:16 pm
Confirmado!
O que o Sérgio reportou com as legendas XSUB acontece mesmo na versão "limpa" do firmware v2.6.
Timing Bug em DMF?!  :-[

Legal! Muito interessante! Nunca havia lido nada a respeito...


Zeurt,
Quanto mais mexo com esses DVD Players, mais doido fico... ;D

Em tempo: Sua versão 2.6 já vem setada como "Region 0".
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 10:43:46 pm
PessoALL,

Segue o firmware v2.6 (enviado pelo Zeurt) com a minha modesta alteração para a correção do Timing Bug.

ATENÇÃO:
Por favor, leiam a mensagem 01 (Zeurt) deste tópico, com relação à parte dos procedimentos e RISCOS no processo de atualização .


Um abraço.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 10:53:08 pm
3) Achei o avanço e retrocesso em USB (principalmente o segundo) em DIVx/Xvid sofríveis (lentos).
No retrocesso então, sem a menor precisão.
Talvez pelo fato da USB ser 1.1?

Você já leu a discussão aqui no Fórum sobre Formatação de Pendrives usando Clusters de 32K como forma de melhorar o desempenho desses dispositivos?
Link: http://ryan.com.br/smf/index.php?topic=452.msg9175787;topicseen#new (http://ryan.com.br/smf/index.php?topic=452.msg9175787;topicseen#new)
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 10:57:29 pm
Legal!
Já estou lendo.
Valeu pela dica!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 01, 2009, 11:21:16 pm
Viper3M, mais uma dica: caso você deseje modificar as fontes das legendas (criar fontes maiores, etc.), cuidado para que o Firmware não fique maior que 2MB (que provavelmente é o tamanho limite da Memória Flash). O Firmware Original é "grande" (1907KB), e portanto não resta mais tanto espaço.
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 01, 2009, 11:37:04 pm
Viper3M, mais uma dica: caso você deseje modificar as fontes das legendas (criar fontes maiores, etc.), cuidado para que o Firmware não fique maior que 2MB (que provavelmente é o tamanho limite da Memória Flash). O Firmware Original é "grande" (1907KB), e portanto não resta mais tanto espaço.

Ok, Zeurt.
Eu já estava pensando nisso, mas ainda não tenho conhecimento para tal. Vou tentar estudar o processo.

Quanto à "dica dos clusters em pendrives", acabei de testar.
Para não expandir o tópico (que é sobre firmware), caso queiram, postarei os resultados depois.

Um abraço.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 02, 2009, 03:24:58 pm
PessoALL,

Segue o firmware v2.6 (enviado pelo Zeurt) com a minha modesta alteração para a correção do Timing Bug.

ATENÇÃO:
Por favor, leiam a mensagem 01 (Zeurt) deste tópico, com relação à parte dos procedimentos e RISCOS no processo de atualização .


Um abraço.

Apenas um lembrete para quem pretende fazer o upgrade usando o Firmware que Viper3M enviou. Se estiver partindo do Firmware Original do Aparelho vendido no Brasil, deve-se renomear o arquivo como expliquei no primeiro post deste tópico. Provavelmente é só trocar "0" por "D". Assim: Renomear LG_DV_LV81F33B400MSMIS.ROM para LG_DV_LV81F33B40DMSMIS.ROM
De qualquer modo, é sempre bom checar antes o MODEL e a versão do Firmware em uso antes de atualizar (como expliquei no primeiro post).
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 02, 2009, 03:38:58 pm
PessoALL,

Segue o firmware v2.6 (enviado pelo Zeurt) com a minha modesta alteração para a correção do Timing Bug.

ATENÇÃO:
Por favor, leiam a mensagem 01 (Zeurt) deste tópico, com relação à parte dos procedimentos e RISCOS no processo de atualização .


Um abraço.

Apenas um lembrete para quem pretende fazer o upgrade usando o Firmware que Viper3M enviou. Se estiver partindo do Firmware Original do Aparelho vendido no Brasil, deve-se renomear o arquivo como expliquei no primeiro post deste tópico. Provavelmente é só trocar "0" por "D". Assim: Renomear LG_DV_LV81F33B400MSMIS.ROM para LG_DV_LV81F33B40DMSMIS.ROM
De qualquer modo, é sempre bom checar antes o MODEL e a versão do Firmware em uso antes de atualizar (como expliquei no primeiro post).

Ontem, eu mesmo esqueci de renomear o firmware no teste que fiz (voltar ao original v2.6 e depois retornar ao v2.6 "alterado" por mim).
Ao tentar retornar ao v2.6 "alterado", o player informava que não havia arquivo para ser lido.
Renomeei, e atualizou sem problemas.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 02, 2009, 05:35:56 pm
A porta USB não sustenta o HD. Será que é por ser USB 1.1?

Não. Não existe diferença entre as revisões USB nesse quesito.
Título: Re: Firmware do LG DV397H
Enviado por: sedm em Janeiro 02, 2009, 06:20:13 pm
Viper3M,
Atualizei para o firmware que você modificou e resolveu o problema, as legendas agora estão com a duração correta e também não entram mais adiantadas, como acontecia as vezes.
Agora só faltava as legendas do aparelho serem amarelas e maiores, pra ficar perfeito.

Obrigado a todos pela ajuda.

Sérgio
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 03, 2009, 08:31:36 pm
Estou enviando algumas informações úteis para modificação das Fontes desse Firmware (Tipo, Posição e Cor).

A Fonte correspondente ao Character Set CP-1252 é a 10.

A Janela de exibição das legendas é a 0x09.

A Color Palette de 16 células (32 bytes) correspondente a janela das legendas, provavelmente é a que se encontra no endereço 5341D:
45 F0 C6 0F 8E 10 52 10 6A 10 EA 10 45 F0 D2 2B AA 86 6E 4B 46 0D 12 10 DE 0F AD B1 81 92 55 B1 (é exatamente igual a do LG DV256K)
As células destacadas em vermelho são: Célula 05 (EA 10, que significa cor branca), responsável pela cor de preenchimento. Célula 0B (12 10, que significa cor preta), responsável pela cor de contorno.
Para mudar a cor de preenchimento, o método mais fácil e imediato seria trocar os valores da célula 05 de EA 10 (branco) para DE 40 (amarelo canário). Porém, outras coisas que eram brancas passarão a ser amarelas e isso pode ser indesejado. Tem que testar para ver.

Existem 5 Rotinas SubStyle (como nos outros LGs antecessores). Para achá-las, deve-se procurar por 74 0B F0 A3 74 05
0B corresponde a célula responsável pela cor de contorno.
05 corresponde a célula responsável pela cor de preenchimento.
Portanto se o primeiro método (mais fácil) de mudar a cor da fonte causar efeitos colaterais indesejáveis, pode-se mudar a célula responsável, até conseguir o melhor resultado. No LG DV256K, eu mudei a célula responsável pela cor de preenchimento para 07 (que no Firmware Original é um amarelo bem claro, que também é usado em outras telas). Por fim, eu troquei os bytes da color palette referentes a esse amarelo claro (D2 2B) para amarelo canário (DE 40). Com isso, praticamente não houveram efeitos colaterais, sendo que a única mudança foi que algumas palavras em algumas telas que estavam em amarelo claro passaram para amarelo canário. Observação: As alterações tem que ser feitas nas 5 Rotinas SubStyle
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 04, 2009, 09:29:04 pm
Porém, outras coisas que eram brancas passarão a ser amarelas e isso pode ser indesejado. Tem que testar para ver.


O método 1 não me gerou nenhum efeito colateral.
Fiquei com legenda amarela e não vi nada nos menus que tivesse mudado.

Mas empaquei mesmo foi no tamanho da fonte.
Já fiz N testes e sempre perco algum pedaço na parte inferior de algumas letras (ex: g, p, ç) da linha 1 para a 2.
Fiz um teste colocando uma 3ª linha e parece que o problema não ocore da linha 2 para a 3.
Aparentemente o mtkWindows (v0.8.5) não resolve nada pra mim, pois aumento a altura da janela das legendas (0x09 como citado pelo Zeurt) e o problema persiste.
Seria como se a linha 1 estivesse grudada na 2, aí quando aumento a altura da janela, ambas as linhas andam juntas, permanecendo o problema.
Como, pelo que percebi, o mtkWindows não se ajusta bem aos firmwares LG, o que eu poderia tentar?

Importei do firmware Xypro 5.1 a fonte intermediária (são 3), que é Arial Narrow 22, Bold, Ouline 2.
Fica MUITO bom, mas o problema relatado acima, volta a ocorrer....  :-[
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 04, 2009, 10:27:45 pm
Já fiz N testes e sempre perco algum pedaço na parte inferior de algumas letras (ex: g, p, ç) da linha 1 para a 2.
Fiz um teste colocando uma 3ª linha e parece que o problema não ocore da linha 2 para a 3.
Aparentemente o mtkWindows (v0.8.5) não resolve nada pra mim, pois aumento a altura da janela das legendas (0x09 como citado pelo Zeurt) e o problema persiste.
Seria como se a linha 1 estivesse grudada na 2, aí quando aumento a altura da janela, ambas as linhas andam juntas, permanecendo o problema.
Como, pelo que percebi, o mtkWindows não se ajusta bem aos firmwares LG, o que eu poderia tentar?

Deve-se ler o documentos Info - OSD Text Initialization do grupo mt13x9 do yahoo. Lá se explica como são definidas as coordenadas de tudo que é escrito na tela, em cada janela, além de outros parametros como um tal de "Int Height". Esse "Int Height" acaba limitando a altura das fontes. Pode-se alterar esse valor, mas pelo que li, não basta simplesmente trocar esse valor... É um pouco mais complicado... Além disso, a primeira coisa a fazer seria identificar as tais rotinas, e os respectivos pontos a serem alterados. Não precisei fazer isso no LG DV256K.
Enquanto isso não se resolve, você pode trocar a fonte por uma menor, até o ponto em que não aconteça o "corte" na parte inferior. A Arial Narrow é uma fonte compacta, mais alta do que larga. Você pode escolher uma fonte menos alta, como a Arial (normal). Além disso, no MtkFontCreator, você pode eliminar 1 ou 2 pixels dos caracteres, da parte de cima e da parte de baixo (existe uma opção para isso). Com isso eles ficarão menos altos ainda.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 04, 2009, 11:04:02 pm
A altura das linhas é definida em SetMPeg4SubtitleParams (http://ryan.com.br/smf/index.php?topic=179.msg9172548;topicseen#msg9172548)

Difícil é achar essa rotina (ou seu equivalente) nos firmwares LG.

Exemplos do que você deve encontrar em firmwares não-LG e não-Pioneer:

Philips DVP5980 (http://ryan.com.br/smf/index.php?topic=179.msg9172368)
Philips DVP3040K (http://ryan.com.br/smf/index.php?topic=179.msg9172364)
Philips DVP5140 (http://ryan.com.br/smf/index.php?topic=179.msg9172367)
Proview DVP858 (http://ryan.com.br/smf/index.php?topic=179.msg9172261)

Cada linha de legenda é desenhada dentro de um retângulo. Os retângulos superpostos precisam caber na janela de legendas.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 05, 2009, 11:55:32 pm
É realmente bem difícil achar essa rotina. Pelos critérios usuais, que funcionam para outros firmwares, não dá certo.
O mais próximo que eu encontrei foi a Rotina abaixo. Nem sei como chamá-la. A primeira parte parece com SubStyle. Inclusive o que está em verde eu tenho certeza.
Já a segunda parte, lembra alguns trechos de SetMepg4SubtitleParams de outros firmwares que vi.
É necessário ajuda do Ryan e de quem quiser colaborar para um melhor entendimento disso. Destaquei em azul os possíveis locais da Altura da Janela (Janela dentro da Janela das Legendas) e também do possível local da distância entre as linhas. Tem que testar modificar esses valores para ver os resultados. Eu não tenho certeza se o problema dos caracteres cortados é causado pela janela interna pouco alta, ou pela distancia entre as linhas pequena.
Obs: A altura da janela da legenda do Firmware Original é de 136 (88 em hexadecimal). Normalmente a altura da janela interna (dentro da janela da legenda) é do mesmo tamanho (ou talvez um pixel menor). Os valores que considero suspeitos são 87 e 88 (ver em azul abaixo). Já a largura da janela do Firmware Original é 700 (2BC em hexadecimal). Como o valor suspeito para wY2.high é 02BB ou 02A8, está compatível (ver abaixo).

B2:DA33             ; =============== S U B R O U T I N E =======================================
B2:DA33
B2:DA33
B2:DA33             BankSw_481_B2_DA33:                     ; CODE XREF: B2_8955+167p
B2:DA33                                                     ; DATA XREF: B0:B0_BS_481_B2_DA33o ...
B2:DA33 90 FC F6                    mov     DPTR, #XRAM_FCF6
B2:DA36 E0                          movx    A, @DPTR
B2:DA37 FF                          mov     R7, A
B2:DA38 13                          rrc     A
B2:DA39 13                          rrc     A
B2:DA3A 54 3F                       anl     A, #0x3F
B2:DA3C 20 E0 03                    jb      ACC.0, B2_DA42  ; Accumulator
B2:DA3F 02 DA E8                    ljmp    B2_DAE8
B2:DA42             ; ---------------------------------------------------------------------------
B2:DA42
B2:DA42             B2_DA42:                                ; CODE XREF: BankSw_481_B2_DA33+9j
B2:DA42 7F 02                       mov     R7, #2
B2:DA44 12 05 AD                    lcall   B2_BS_118_B5_B085
B2:DA47 D2 73                       setb    RAM_2E.3
B2:DA49 7F 09                       mov     R7, #9
B2:DA4B 12 05 C5                    lcall   B2_BS_122_B5_5E3E
B2:DA4E 7F 09                       mov     R7, #9
B2:DA50 12 05 CB                    lcall   B2_BS_123_B5_49DF
B2:DA53 90 FC 03                    mov     DPTR, #XRAM_FC03
B2:DA56 74 0B                       mov     A, #0xB          ; Cor do Contorno
B2:DA58 F0                          movx    @DPTR, A
B2:DA59 A3                          inc     DPTR
B2:DA5A 74 05                       mov     A, #5            ; Cor do Preenchimento
B2:DA5C F0                          movx    @DPTR, A
B2:DA5D E4                          clr     A
B2:DA5E FB                          mov     R3, A            ; Cor do Background
B2:DA5F FD                          mov     R5, A
B2:DA60 7F 09                       mov     R7, #9           ; Janela das Legendas (#9)
B2:DA62 12 05 E9                    lcall   B2_BS_128_B5_B84C; OSD_TextColor
B2:DA65 E4                          clr     A
B2:DA66 90 FB 43                    mov     DPTR, #XRAM_FB43 ; wX1.high ?
B2:DA69 F0                          movx    @DPTR, A
B2:DA6A A3                          inc     DPTR
B2:DA6B F0                          movx    @DPTR, A
B2:DA6C 90 FB 45                    mov     DPTR, #XRAM_FB45 ; wY1.high ?
B2:DA6F F0                          movx    @DPTR, A
B2:DA70 A3                          inc     DPTR
B2:DA71 F0                          movx    @DPTR, A
B2:DA72 90 FB 49                    mov     DPTR, #XRAM_FB49 ; wX2.high ?
B2:DA75 74 02                       mov     A, #2
B2:DA77 F0                          movx    @DPTR, A
B2:DA78 A3                          inc     DPTR
B2:DA79 74 BB                       mov     A, #0xBB ; '+'
B2:DA7B F0                          movx    @DPTR, A
B2:DA7C 90 FB 4D                    mov     DPTR, #XRAM_FB4D ; wY2.high ?
B2:DA7F E4                          clr     A
B2:DA80 F0                          movx    @DPTR, A
B2:DA81 A3                          inc     DPTR
B2:DA82 74 87                       mov     A, #0x87 ; 'ç'   ; Altura da Janela Interna?
B2:DA84 F0                          movx    @DPTR, A
B2:DA85 D2 78                       setb    RAM_2F.0
B2:DA87 E4                          clr     A
B2:DA88 90 FC 03                    mov     DPTR, #XRAM_FC03 ; Distância entre as linhas?
B2:DA8B F0                          movx    @DPTR, A
B2:DA8C FB                          mov     R3, A
B2:DA8D FD                          mov     R5, A
B2:DA8E 7F 09                       mov     R7, #9
B2:DA90 12 05 D7                    lcall   B2_BS_125_B5_B94D;  ?
B2:DA93 E4                          clr     A
B2:DA94 FD                          mov     R5, A
B2:DA95 7F 09                       mov     R7, #9
B2:DA97 12 05 D1                    lcall   B2_BS_124_B5_CF6B   ?
B2:DA9A 7F 09                       mov     R7, #9
B2:DA9C 12 05 DD                    lcall   B2_BS_126_B5_C2C6   ?
B2:DA9F 90 FB 43                    mov     DPTR, #XRAM_FB43  ; wX1.high ?
B2:DAA2 E4                          clr     A
B2:DAA3 F0                          movx    @DPTR, A
B2:DAA4 A3                          inc     DPTR
B2:DAA5 74 32                       mov     A, #0x32 ; '2'
B2:DAA7 F0                          movx    @DPTR, A
B2:DAA8 90 FB 45                    mov     DPTR, #XRAM_FB45  ; wY1.high ?
B2:DAAB E4                          clr     A
B2:DAAC F0                          movx    @DPTR, A
B2:DAAD A3                          inc     DPTR
B2:DAAE 74 04                       mov     A, #4
B2:DAB0 F0                          movx    @DPTR, A
B2:DAB1 90 FB 49                    mov     DPTR, #XRAM_FB49  ; wX2.high ?
B2:DAB4 74 02                       mov     A, #2
B2:DAB6 F0                          movx    @DPTR, A
B2:DAB7 A3                          inc     DPTR
B2:DAB8 74 A8                       mov     A, #0xA8 ; '¿'
B2:DABA F0                          movx    @DPTR, A
B2:DABB 90 FB 4D                    mov     DPTR, #XRAM_FB4D  ; wY2.high ?
B2:DABE E4                          clr     A
B2:DABF F0                          movx    @DPTR, A
B2:DAC0 A3                          inc     DPTR
B2:DAC1 74 88                       mov     A, #0x88 ; 'ê'    ; Altura da Janela Interna?
B2:DAC3 F0                          movx    @DPTR, A
B2:DAC4 7B 08                       mov     R3, #8
B2:DAC6 7D 81                       mov     R5, #0x81 ; 'ü'
B2:DAC8 7F 09                       mov     R7, #9
B2:DACA 12 0D 45                    lcall   B2_BS_442_B3_C274    ?
B2:DACD D2 7D                       setb    RAM_2F.5
B2:DACF 7F 8D                       mov     R7, #0x8D ; 'ì'
B2:DAD1 7E 00                       mov     R6, #0
B2:DAD3 12 03 A3                    lcall   B2_BS_31_B4_F1E6  ; Arm_GetChar
B2:DAD6 BF 08 0D                    cjne    R7, #8, B2_DAE6
B2:DAD9 90 FB 3E                    mov     DPTR, #XRAM_FB3E
B2:DADC E0                          movx    A, @DPTR
B2:DADD 64 11                       xrl     A, #0x11
B2:DADF 60 05                       jz      B2_DAE6
B2:DAE1 7F 08                       mov     R7, #8
B2:DAE3 12 98 CB                    lcall   BankSw_152_B2_98CB; ?
B2:DAE6
B2:DAE6             B2_DAE6:                                ; CODE XREF: BankSw_481_B2_DA33+A3j
B2:DAE6                                                     ; BankSw_481_B2_DA33+ACj
B2:DAE6 C2 7D                       clr     RAM_2F.5
B2:DAE8
B2:DAE8             B2_DAE8:                                ; CODE XREF: BankSw_481_B2_DA33+Cj
B2:DAE8 22                          ret
B2:DAE8             ; End of function BankSw_481_B2_DA33
B2:DAE8


Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 06, 2009, 08:04:58 pm
Funcionou no LG DV256K!  :yahoo!:

Fiz o seguinte teste:
Criei uma fonte gigante (Arial Narrow Bold 30).
Aumentei a altura da janela da legenda no MtkWindows para 225 (E1 em hexadecimal).
Troquei os 2 valores da Altura da Janela Interna (em azul na rotina do post anterior), de 87 par E0(que é E1 menos 1), e de 88 para E1.
... e funcionou: as linhas de legenda apareceram sem cortes (mesmo com a fonte gigante) e até que bem espaçadas umas das outras (também, com uma altura da janela de 225!).

Em resumo, para o DV397H: deve-se escolher a altura da janela no MtkWindows e converter para hexadecimal. Alterar o byte 87 do endereço 2DA83 para o valor em hexadecimal menos 1. Alterar o byte 88 do endereço 2DAC2 para o valor em hexadecimal.

Obs: Inicialmente eu tentei modificar apenas o primeiro byte (87): não deu certo, as legendas ficaram tremidas e esquisitas.
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 07, 2009, 11:32:03 am
Desculpem o sumiço, mas é que recebi um recorder (LG RH397H) e preciso testá-lo antes de completar os 7 dias, para uma eventual devolução.

Com relação ao firmware do DV397H, pergunto:

1) Quando você mostram essas "rotinas", estão sempre usando o IDA, certo?
Esse "bicho" me parece um "monstro". Quando o abro, fico totalmente perdido... tem "500" janelas, "N" funções.... nem sei pra que lado vou....  :dashhead1:

2) Estas operações poderiam ser feitas no "simples" Xvi32?

3) Estas alterações ocorrem abindo-se o firmware "inteiro", ou só uma parte específica, como exemplo, o 8032 (ou outra qualquer)?

Um abraço.
Título: Re: Firmware do LG DV397H
Enviado por: francisco em Janeiro 07, 2009, 01:51:23 pm
Amigos, agradeço à todos pelas informações. Tenho uma dúvida, não sei se alguém poderia me ajudar.
Estou tentando fazer upgrade de firmware no meu DV397H. Eu peguei o firmware aqui no fórum, a versão que já está com o timing bug srt corrigida. Alterei com o XVI32 (editor hexa) o  EA 10 por DE 40 no endereço  5341D exatamente como descrito por aqui e então salvei e coloquei o arquivo no raiz de um CD-R mudando o nome do arquivo para LG_DV_LV81F33B40DMSMIS.ROM. Mas quando eu coloco o CD no aparelho ele entra no modo de upgrade e fica com  a seguinte informação na tela:
Firmware Upgrade Mode
Current Version 2.301
E não sai disso nunca !! no display do aparelho fica aparecendo LOAD , mas fica assim eternamente. Eu percebi que pressionando a seta para a direita (nao a seta pra cima hehe...) o upgrade é cancelado e volta tudo  a funcionar.
Mas por que motivo não sai dessa tela, não deveria avançar na leitura do CD para depois gravar na flash do aparelho?
Já gravei dois CD-R e o problema é sempre o mesmo.
O que eu posso estar fazendo de errado? Por favor me ajudem...
Só uma observação , eu tentei gravar o firmware postado aqui sem alterar a legenda para amarelo e o upgrade funcionou!! por isto , tenho certeza que sou eu que estou fazendo algo de errado. Alem de alterar os dois bytes com editor hexadecimal, tem que fazer mais alguma coisa?
O que eu estou esquecendo de fazer?
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 07, 2009, 02:28:12 pm
Francisco,
É erro de CheckSum. Acredito que isto sempre ocorra após edição do firmware no Xvi32.
Aconteceu comigo. Porém eu utilizo pendrive, por ser mais prático e rápido.

Para resolver, você deve abrir o firmware (após edição no Xvi32) no mtkRemaker. Após a abertura, será informado sobre o erro e se você quer arrumar. Responda sim, salve o arquivo e tente o processo de atualização.

Abraço
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 07, 2009, 02:46:31 pm
PessoALL,

Segue o firmware v2.6 (enviado pelo Zeurt) com 2 pequenas modificações.

Histórico:

v1.0 - Corrigido Timing Bug.
v1.1 - Cor das legendas alterada para amarelo.
(Créditos para Zeurt: alterei a cor utilizando o "método 1" descrito por ele!)

ATENÇÃO:
Por favor, leiam a mensagem 01 (Zeurt) deste tópico, com relação à parte dos procedimentos e RISCOS no processo de atualização .


Um abraço.
Título: Re: Firmware do LG DV397H
Enviado por: francisco em Janeiro 07, 2009, 02:50:46 pm
Obrigado Viper 3M, mas como eu faço para abrir o arquivo? O firmware tem extensão .ROM e o MTK Remaker abre arquivos BIN. Se eu tento renomear o ROM para BIN dá um erro de Header Fails e o arquivo não abre.
Será que eu preciso de outra versão do Mtk Remaker? A que eu achei na internet é a "versão 0.2 RC3"...
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 07, 2009, 02:52:36 pm
Quanto à mensagem anterior:
Eu já deveria ter enviado, mas queria fazê-lo já com uma fonte melhor.
Do jeito que está, a fonte é idêntica a original, porém, amarela.
Como estou "me batendo" com isso, fica pra próxima.

Abraço
Título: Re: Firmware do LG DV397H
Enviado por: francisco em Janeiro 07, 2009, 02:56:46 pm
PessoALL,

Segue o firmware v2.6 (enviado pelo Zeurt) com 2 pequenas modificações.

Histórico:

v1.0 - Corrigido Timing Bug.
v1.1 - Cor das legendas alterada para amarelo.

ATENÇÃO:
Por favor, leiam a mensagem 01 (Zeurt) deste tópico, com relação à parte dos procedimentos e RISCOS no processo de atualização .


Um abraço.

WOW! obrigado Viper, assim fica mais fácil, mas estou ainda com problemas, o arquivo RAR dá erro de checksum ao ser extraido, por favor amigo, você poderia fazer um upload dele novamente?
Valeu mesmo  ;D
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 07, 2009, 03:00:26 pm
Obrigado Viper 3M, mas como eu faço para abrir o arquivo? O firmware tem extensão .ROM e o MTK Remaker abre arquivos BIN. Se eu tento renomear o ROM para BIN dá um erro de Header Fails e o arquivo não abre.
Será que eu preciso de outra versão do Mtk Remaker? A que eu achei na internet é a "versão 0.2 RC3"...

Francisco,
Eu faço examente isso: renomeio a "extensão" do arquivo.
Uso o mtkRemaker 0.23 beta 6. Pelo jeito, sua versão é bem mais antiga.
De qualquer forma, caso queira, acabei de enviar um "novo" firmware.

Abraço.
Título: Re: Firmware do LG DV397H
Enviado por: Viper3M em Janeiro 07, 2009, 03:15:32 pm
Francisco,
Acabei de baixar o arquivo e, para mim, abriu normal.
Dentro do WinRAR, na coluna CRC32 tem que aparecer EDF2F4AD.

Acredito que o "problema" esteja relacionado a uma função do WinRAR que empacota o(s) arquivo(s) com a função "Incluir verificação de autenticidade".
Salvo engano, quando a pessoa vai tentar descompactar o arquivo (sem ter o Winrar registrado/comprado), aparece um determinado erro que não lembro ao certo.

De qualquer forma, acabei de fazer novo upload.
Título: Re: Firmware do LG DV397H
Enviado por: francisco em Janeiro 07, 2009, 03:36:12 pm
Obrigado Viper, agora o Rar abriu ok para mim ;)

Você consegue fazer o upgrade de firmware usando pendrive em vez de CD? Qual o procedimento para fazer via pendrive?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 07, 2009, 06:01:04 pm
Com relação ao firmware do DV397H, pergunto:

1) Quando você mostram essas "rotinas", estão sempre usando o IDA, certo?
Esse "bicho" me parece um "monstro". Quando o abro, fico totalmente perdido... tem "500" janelas, "N" funções.... nem sei pra que lado vou....  :dashhead1:

2) Estas operações poderiam ser feitas no "simples" Xvi32?

3) Estas alterações ocorrem abindo-se o firmware "inteiro", ou só uma parte específica, como exemplo, o 8032 (ou outra qualquer)?

Um abraço.

1)No IDA não existe opção de edição. Serve só pra estudar o firmware, localizar rotinas, etc. Veja o início do tópico Log de Descobertas para uma introdução melhor.

2)A troca dos 2 bytes responsáveis pela altura da janela interna deve ser feita com o editor hexadecimal mesmo. Você deve fazer como expliquei aqui:
Em resumo, para o DV397H: deve-se escolher a altura da janela no MtkWindows e converter para hexadecimal. Alterar o byte 87 do endereço 2DA83 para o valor em hexadecimal menos 1. Alterar o byte 88 do endereço 2DAC2 para o valor em hexadecimal.
Explicando um pouco mais: Primeiro, com o MtkWindows, você escolhe a posição que considera ideal, e a altura ideal da janela das legendas. É melhor não mudar a largura da janela das legendas (pois não iremos alterar a largura da janela interna, apenas a altura). Sugiro que a altura da janela das legendas seja de no mínimo 4 vezes a altura da maior fonte que você pretenda usar no firmware, somado a mais alguns pixels (devido a distancia entre as linhas). Com isso será possível a exibição das 4 linhas de legenda (como no firmware original). Salve as modificações.
Converta a altura escolhida para a janela das legendas para hexadecimal. Modifique os bytes dos endereços acima, conforme orientei (87 e 88 por Altura da Janela das Legendas em Hexa menos 1, e Altura da Janela das Legendas em Hexa, respectivamente).

3)Você pode abrir o firmware inteiro ou apenas o 8032 no editor hexadecimal (esses bytes se encontram no 8032).

Obs: As vezes pode ser necessário realizar alguns testes (tentativa e erro) para encontrar a posição e a altura ideais da janela das legendas.
Título: Re: Firmware do LG DV397H
Enviado por: francisco em Janeiro 07, 2009, 09:20:32 pm
Viper consegui!! muitíssimo obrigado pela ajuda, o firmware com legendas amarelas funcionou perfeitamente !!!  :clapping: :yahoo!: ;)
Título: Re: Firmware do LG DV397H
Enviado por: cvalmeida em Janeiro 07, 2009, 11:20:59 pm
 :yahoo!:

Pessoal, eu só quero agradecer e dizer que fiz o update e tudo está funcionando muito bem até agora.

Muito obrigado!!
Título: Re: Firmware do LG DV397H
Enviado por: adcdenis em Janeiro 21, 2009, 01:50:58 am
Primeiramente Parabéns pela modificação  :clapping: do firmware, atualizei e esta funcionando perfeitamente, qualquer problema detectado eu relatarei aqui.
Segue os passos que segui para a modificação, de forma mais linear e mais fácil para leigos como eu.. rsrs.  :laugh:

Passo a passo para mudança de firmware: (Baseado nos posts dos colaboradores)


1) Baixar o firmware com correções e mudanças já postado aqui pelo VIPER3M
2) Verificar dados do player, anotando o MODEL através da tela de serviço:



    a) Como entrar na tela de serviço

    * Certifique-se de que não há disco no aparelho. Apertar EJECT basta;
    * No remoto, aperte Setup;

    b) Vá até "Tela" ou "Display", mova o cursor para a direita e selecione "16:9" ou "Widescreen"
    c) Com o teclado numérico, digite a seguinte seqüência: 1,3,9,7,1,3,9 e "Enter"

    d) Se ao aperta ENTER nada acontecer, volte a pôr o seleção sobre "16:9" e repita o processo mais rápido ou mais devagar até conseguir. Às vezes é

difícil acertar.

--> Mais detalhes e telas: http://ryan.com.br/prod_dk194g_br.htm#service


3) De posse do nome do MODEL, renomear o arquivo do firmware baixado da seguinte maneira: MODEL(anotado) + MIS.ROM (em resumo, adicionar MIS.ROM ao MODEL

anotado). Ficando assim (Meu exemplo): LG_DV_LV81F33B40DMSMIS.ROM , SENDO LG_DV_LV81F33B40DMS O MODEL.  :dashhead1:

4) Gravar na raiz do CD;

5) Abrir o compartimento do disco e inserir o cd com o firmware;

6) O Player irá automaticamente carregar o firmware, caso vc você tenha nomeado corretamente o arquivo conforme descrito acima:

7) O Player abrirá automaticamente o compartimento;

8 ) Retire o cd e aperte PLAYER, como pedido, para a confirmação da atualização. Este dura pouco tempo, uns dois ou três minutos.

9) Pronto software atualizado!  :yahoo!:


----------


Para desbloqueio caso necessário (Liberação de todas as áreas):


1) Ligue o DVD pelo controle remoto;
2) Abra a bandeja;
3) Tecle "0" no controle remoto 3 vezes (ou 4 vezes);
4) Aparecerá a tela para seleção de região. Tecle "0" e aperte "Pause";
5) Feche a bandeja e desligue o DVD player. Ao ligar estará habilitado!
Título: Re: Firmware do LG DV397H
Enviado por: rmarcus em Janeiro 25, 2009, 12:59:27 am
Primeiramente Parabéns pela modificação  :clapping: do firmware, atualizei e esta funcionando perfeitamente, qualquer problema detectado eu relatarei aqui.
Segue os passos que segui para a modificação, de forma mais linear e mais fácil para leigos como eu.. rsrs.  :laugh:


Show de bola esse resumo...PARABÉNS

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Janeiro 28, 2009, 06:48:04 pm
Olá pessoal!

Muito bom esse fórum e obrigado pelo firmware alterado!
Gostaria de fazer 3 comentários que acho que acabaram ficando para trás:

1. Como o Viper3M falou, e acrescentando ao resumo feito pelo adcdenis, é possível fazer a atualização de firmware no DV397H pela porta USB. Apenas grave o arquivo ROM explicado anteriormente na raiz do pendrive. Com a tela de serviço sendo exibida, insira o pendrive no aparelho. Após ele ser reconhecido, pressione a tecla "Return" e a atualização começará. Isso é bom para testes, pois economiza CDs e tempo.

2. Esse firmware corrigiu o problema do zoom na minha versão (2.02) que tinha 100%, 400% e os horríveis 1600%. Ele traz o zoom com 100%, 200%, 300% e 400% (uma maravilha!).

3. Essa versão mantém a língua portuguesa como uma das opções de exibição em tela (além das outras línguas).

[]s

EDITADO em 12/04/2009: Para atualizar o firmware pela USB (bem como por CD), não precisa entrar na tela de serviço. Basta inserir o pendrive com o arquivo ROM gravado na raiz, esperar o símbolo de USB reconhecido aparecer na tela e pressionar a tecla "Return" para entrar em modo de upgrade. Mas se você estiver fazendo o upgrade pela primeira vez, deve entrar na tela de serviço para se certificar que seu aparelho possui o chip MT1389S. Alguns usuários relataram que seus DV397H informam o chip MT1389M. Para esses modelos, deve-se esperar pelo firmware correto. Testes recentes (continuem lendo o tópico) mostraram que atualizar os modelos com os firmwares trocados inviabiliza os aparelhos até que se construa um cabo serial para recuperação. A tela de serviço também pode ser usada para verificar se o nome do arquivo do firmware está correto ou se é necessário renomeá-lo.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Janeiro 29, 2009, 06:15:12 pm
Olá Pessoal,

zeurt, segui os procedimentos indicados por você para alterar a altura da janela interna. Mas no DV397H não funciona como esperado. Realmente a janela aumenta sem erros na fonte, mas a distância entre as linhas continua a mesma (a quantidade de linhas aumenta) e o corte nas fontes aumentadas continua. Uma fonte Arial Narrow Bold 21, "podada" para ter altura máxima de 32 pixels, já é suficiente para ter cortado um pedacinho embaixo do "g" e do "q", por exemplo, mas somente quando na linha inferior há letras exatamente embaixo.

Também tentei alterar a suspeita distância entre linhas que vc apontou de azul:
Citar
B2:DA85 D2 78                       setb    RAM_2F.0
B2:DA87 E4                          clr     A
B2:DA88 90 FC 03                    mov     DPTR, #XRAM_FC03 ; Distância entre as linhas?
B2:DA8B F0                          movx    @DPTR, A
B2:DA8C FB                          mov     R3, A
B2:DA8D FD                          mov     R5, A

Meu Assembly está enferrujado. Tire uma dúvida: isso aí indica que uma posição da memória é carregada no registrador DPTR e depois o valor do acumulador é carregado na dita posição (FC03)?? Bom, o que eu fiz foi trocar o código 0xE4 em 0x2DA87 por 00 (nop). Assim, o acumulador deixou de ser zerado antes e talvez desse algum resultado no espaçamento entre linhas. Mas no teste, apenas apereceu um quadro rabiscado como background da janela de legendas na primeira vez que as legendas apareceram e depois sumiu. As linhas continuaram com espaçamento mínimo.

Se o meu entendimento estiver errado, qual seria a forma correta de testar essa possível distância entre as linhas?
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Janeiro 30, 2009, 04:03:31 am
Meu Assembly está enferrujado. Tire uma dúvida: isso aí indica que uma posição da memória é carregada no registrador DPTR e depois o valor do acumulador é carregado na dita posição (FC03)??

Sim.

Bom, o que eu fiz foi trocar o código 0xE4 em 0x2DA87 por 00 (nop). Assim, o acumulador deixou de ser zerado antes e talvez desse algum resultado no espaçamento entre linhas.

Isso não funciona bem. O valor do acumulador nesse ponto pode ser qualquer coisa entre 0 e 255 e a presença de um valor alto nesse caso (maior que 15, por exemplo) pode corromper tudo.

Eu estou falando de forma genérica, porque não conheço os firmwares LG.
Título: Re: Firmware do LG DV397H
Enviado por: SCLEROSIS em Janeiro 30, 2009, 10:36:29 am
HOLA AMIGOS BRASILEÑOS.

ESPERO COMPRENDAN QUE SOLO SE ESPAÑOL.

APENAS ADQUIRI UN DVD-LG DV397H  TODO ME GUSTA, PERO LOS SUBTITULOS DE LAS PELICULAS SON MUY PEQUEÑOS.
ALGUIEN TIENE UN FIRWARE MODIFICADO.

MODEL ID: LG_DV_LV81F33B400MM
CHIP ID:  MT1389M
SERVO VER: ODD200
MICOM VER: V3.33
CHECKSUM:  4246
HDCP KEY IS VALUE :YES

FACTORY RESET ... DONE
PLEASE POWER DOWN

THX.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 30, 2009, 12:09:53 pm
Se o meu entendimento estiver errado, qual seria a forma correta de testar essa possível distância entre as linhas?

rictad,
Não tenho certeza se a distância entre as linhas é definida nesse ponto. É muito provável que seja definida em algum ponto desse rotina que postei (que seria uma SetMpeg4SubtitleParam meio diferente).
Porém, teria que pesquisar melhor (e comparar com as rotinas de outros firmwares de outros aparelhos) para descobrir isso. Não possuo esse aparelho e não posso fazer testes. Eu estava apostando que aumentar a altura da janela interna resolveria o problema. Como não resolveu, teremos que descobrir como aumentar a distância entre as linhas. Enquanto você e outros interessados tentam aí, vou tentar descobrir no LG DV256K, e a assim depois tentar descobrir no LG DV397H. Estou saindo de viagem, e na volta, com tempo tentarei fazer isso...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Janeiro 30, 2009, 01:29:15 pm
Isso não funciona bem. O valor do acumulador nesse ponto pode ser qualquer coisa entre 0 e 255 e a presença de um valor alto nesse caso (maior que 15, por exemplo) pode corromper tudo.

Eu estou falando de forma genérica, porque não conheço os firmwares LG.

Certo, Jefferson. Minha idéia era essa mesmo: tentar aproveitar seja lá o que estiver no acumulador para ver se fazia alguma diferença. Mas a única coisa que mudou (um fundo na janela de legendas) só permaneceu na primeira fala de legenda. Vou tentar fazer outros tipos de teste.

HOLA AMIGOS BRASILEÑOS.

ESPERO COMPRENDAN QUE SOLO SE ESPAÑOL.

APENAS ADQUIRI UN DVD-LG DV397H  TODO ME GUSTA, PERO LOS SUBTITULOS DE LAS PELICULAS SON MUY PEQUEÑOS.
ALGUIEN TIENE UN FIRWARE MODIFICADO.

MODEL ID: LG_DV_LV81F33B400MM
CHIP ID:  MT1389M
SERVO VER: ODD200
MICOM VER: V3.33
CHECKSUM:  4246
HDCP KEY IS VALUE :YES

FACTORY RESET ... DONE
PLEASE POWER DOWN

THX.

Estamos tentando fazer testes com fontes maiores, mas as letras estão sendo cortadas. E cuidado se você utilizar o firmware com cor alterada. Pelo que vi na sua tela de serviço, o seu chip é o MT1389M e não MT1389S. Eu achei estranho, mas é melhor você esperar o pessoal mais experiente comentar.

rictad,
Não tenho certeza se a distância entre as linhas é definida nesse ponto. É muito provável que seja definida em algum ponto desse rotina que postei (que seria uma SetMpeg4SubtitleParam meio diferente).
Porém, teria que pesquisar melhor (e comparar com as rotinas de outros firmwares de outro aparelhos) para descobrir isso. Não possuo esse aparelho e não posso fazer testes. Eu estava apostando que aumentar a altura da janela interna resolveria o problema. Como não resolveu, teremos que descobrir como aumentar a distância entre as linhas. Enquanto você e outros interessados tentam aí, vou tentar descobrir no LG DV256K, e a assim depois tentar descobrir no LG DV397H. Estou saindo de viagem, e na volta, com tempo tentarei fazer isso...

Beleza! Vou continuar os testes aqui e tentar alterar outras coisas na rotina. Uma coisa que pensei foi no alinhamento vertical. As legendas parecem estar centralizadas verticalmente. E isso pode estar "juntando" as linhas. Quando aparece uma única linha, aparece na altura da segunda linha, e não na linha mais inferior como seria o normal. Isso inclusive incomoda a leitura. Comparando com outro firmware comentado, vi que
Código: [Selecionar]
B2:DAC6 7D 81                       mov     R5, #0x81 ; 'ü' deveria ser o responsável pelo alinhamento. Estranhei o 0x81, pois normalmente o valor deveria ser 0x00, 0x01 e 0x02. Pensei que podia ser alinhamento vertical e horizontal no mesmo byte, dividido nibble a nibble. Alterei para 0x02 e a legenda ficou com alinhamento horizontal à esquerda, mas o alinhamento vertical se manteve "centralizado". Farei outros testes.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 30, 2009, 10:51:28 pm
Uma coisa que pensei foi no alinhamento vertical. As legendas parecem estar centralizadas verticalmente. E isso pode estar "juntando" as linhas. Quando aparece uma única linha, aparece na altura da segunda linha, e não na linha mais inferior como seria o normal. Isso inclusive incomoda a leitura.

No LG DV256K e no LG DK194g o alinhamento vertical também é MIDDLE (ou seja, não é TOP nem BOTTOM). Até prefiro o MIDDLE do que o TOP. Nesses aparelhos que falei, o alinhamento ocorre da seguinte forma: quando há 1 linha, ela fica na altura da segunda linha; quando há 2 linhas, elas ficam na segunda e terceira linhas; quando há 3 linhas, elas ficam na primeira, segunda e terceira linhas; e quando há 4 linhas, elas ocupam as quatro linhas. Portanto, eu passei a chamar esse tipo de alinhamento de MIDDLE-TOP, já que quando há 1 linha, ela ocupa a segunda linha (e não a terceira, pois assim seria MIDDLE-BOTTOM), e quando há 3 linhas, elas ocupam as 3 linhas de cima (e não as 3 linhas de baixo).
De qualquer modo, deixando de divagações, o que quero dizer é: como o alinhamento vertical do DV397H parece ser igual ao dos aparelhos que descrevi, provavelmente essa não é a causa dos caracteres cortados. Em algum ponto deve haver algo que delimita, seja a distância entre as linhas, seja a altura máxima dos caracteres.

Comparando com outro firmware comentado, vi que
Código: [Selecionar]
B2:DAC6 7D 81                       mov     R5, #0x81 ; 'ü' deveria ser o responsável pelo alinhamento. Estranhei o 0x81, pois normalmente o valor deveria ser 0x00, 0x01 e 0x02. Pensei que podia ser alinhamento vertical e horizontal no mesmo byte, dividido nibble a nibble. Alterei para 0x02 e a legenda ficou com alinhamento horizontal à esquerda, mas o alinhamento vertical se manteve "centralizado". Farei outros testes.

Interessante! Eu também tinha achado estranho esse #0x81. Você acabou descobrindo onde é definido o Alinhamento Horizontal. Mais testes são bem vindos (por exemplo: o que acontece trocando esse valor por 0x00 e por 0x01?). Aos poucos a gente vai chegando lá...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Janeiro 31, 2009, 05:23:55 am
Interessante! Eu também tinha achado estranho esse #0x81. Você acabou descobrindo onde é definido o Alinhamento Horizontal. Mais testes são bem vindos (por exemplo: o que acontece trocando esse valor por 0x00 e por 0x01?). Aos poucos a gente vai chegando lá...

Certo, zeurt! Vou testar ;D. Outra coisa que encontrei (mas acho que é de pouco uso) foi:
Código: [Selecionar]
B2:DA93 E4       clr     A
B2:DA94 FD       mov     R5, A ; Cor de Background da Janela das Legendas

Já com relação àquele possível local para distância entre as linhas, fiz os seguintes testes:
Código: [Selecionar]
B2:DA87 74 10       mov     A, #10
B2:DA89 90 FC 03    mov     DPTR, #XRAM_FC03
B2:DA8C F0          movx    @DPTR, A
B2:DA8D FB          mov     R3, A
B2:DA8E 7F 09       mov     R7, #9
e
Código: [Selecionar]
B2:DA87 74 10       mov     A, #10
B2:DA89 90 FC 03    mov     DPTR, #XRAM_FC03
B2:DA8C F0          movx    @DPTR, A
B2:DA8D FD          mov     R5, A
B2:DA8E 7F 09       mov     R7, #9
E nenhum alterou a distância entre as linhas. Somados ao outro teste, acho que podemos concluir que o espaçamento não é definido nesse local. Também fiz vários outros testes deste tipo em outros pontos daquela rotina mas nenhum surtiu efeito no espaçamento entre linhas :(.

E por falar nisso, acho que o corte nas letras é definido mesmo pelo espaçamento entre as linhas e não pela altura máxima dos caracteres, pois no exemplo de legenda abaixo:
Citar
Linha 1   O gato, o gambá e o gorila
Linha 2         são vertebrados
Somente o "g" de "gambá" será cortado. O outros "g"s ficam normais.

E sobre o alinhamento vertical que você explicou, acho que o do DV397H é MIDDLE-BOTTOM. Veja como aparece as legendas:
Citar
Linha 1
Linha 2
Linha 3    O gato, o gambá e o gorila
Linha 4

Citar
Linha 1
Linha 2
Linha 3    O gato, o gambá e o gorila
Linha 4          são vertebrados

Citar
Linha 1
Linha 2    O gato, o gambá e o gorila
Linha 3    são vertebrados e também
Linha 4               mamíferos

Citar
Linha 1     Vários animais tais como
Linha 2    o gato, o gambá e o gorila
Linha 3    são vertebrados e também
Linha 4               mamíferos
Título: Re: Firmware do LG DV397H
Enviado por: FREDCASTRO em Janeiro 31, 2009, 04:01:07 pm
Comprei esse aparelho ontem, segui os passos na instalaçao do firmware 1.1. Foi muito fácil, rápido e deu tudo certo, a legenda ficou ótima amarela. Parabéns a todos os envolvidos, e muito obrigado! :clapping:

Em relação ao Time Bug, eu percebi uma melhora em algumas legendas, mas outras continuam entrando um pouco adiantadas (só uso .srt), e no computador rodam normal. O que será?

Alguém já mudou a tela de fundo desse modelo? Deu certo? É muito difícil? Obrigado!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Janeiro 31, 2009, 11:01:07 pm
Já com relação àquele possível local para distância entre as linhas, fiz os seguintes testes:
Código: [Selecionar]
B2:DA87 74 10       mov     A, #10
B2:DA89 90 FC 03    mov     DPTR, #XRAM_FC03
B2:DA8C F0          movx    @DPTR, A
B2:DA8D FB          mov     R3, A
B2:DA8E 7F 09       mov     R7, #9
e
Código: [Selecionar]
B2:DA87 74 10       mov     A, #10
B2:DA89 90 FC 03    mov     DPTR, #XRAM_FC03
B2:DA8C F0          movx    @DPTR, A
B2:DA8D FD          mov     R5, A
B2:DA8E 7F 09       mov     R7, #9
E nenhum alterou a distância entre as linhas. Somados ao outro teste, acho que podemos concluir que o espaçamento não é definido nesse local. Também fiz vários outros testes deste tipo em outros pontos daquela rotina mas nenhum surtiu efeito no espaçamento entre linhas :(.

Acho que essas "espremidas" que você deu nesse trecho para que coubesse a modificação podem ter prejudicado algo (não definir R3 ou R5 por exemplo).
No fim de cada banco há espaço livre. Acho que vale a pena fazer mais um teste assim:

Código: [Selecionar]
2DA87  E4           CLR A
2DA88  02 FE D9     LJMP B2_FED9
2DA8B  00           NOP
2DA8C  00           NOP
2DA8D  00           NOP
2DA8E  00           NOP
2DA8F  00           NOP
2DA80  00           NOP
2DA91  00           NOP
2DA92  00           NOP

Código: [Selecionar]
2FED9  74 20        MOV   A, #14   ; Tentativa de aumento da distância entre as linhas (20 em decimal)
2FEDB  90 FC 03     MOV   DPTR, #XRAM_FC03
2FEDE  F0           MOVX  @DPTR, A
2FEDF  E4           CLR   A
2FEE0  FB           MOV   R3, A
2FEE1  FD           MOV   R5, A
2FEE2  7F 09        MOV   R7, #09
2FEE4  12 05 D7     LCALL B2_BS_125_B5_05D7
2FEE7  02 DA 93     LJMP B2_DA93

Não tenho certeza se esse salto pode ser feito exatamente dessa maneira. Sei que pode ser feito algo assim. Só estou na dúvida se o salto deveria começar bem mais atrás na rotina (incluir uma parte maior da rotina)...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 01, 2009, 10:10:05 pm
Certo, zeurt! Bom saber que há espaço no final do bloco. Aproveitando sua dica de modificação, fiz uma parecida:
Código: [Selecionar]
B2:DA87 74 20        mov     A, #14   ; Tentativa de aumento da distância entre as linhas (20 em decimal)
B2:DA89 02 FE D9     ljmp B2_FED9
B2:DA8C FB           mov     R3, A
B2:DA8D FD           mov     R5, A
B2:DA8E 7F 09        mov     R7, #9
B2:DA90 12 05 D7     lcall   B2_BS_125_B5_B94D;  ?
...........
...........
...........
B2:FED9  90 FC 03    mov     DPTR, #XRAM_FC03
B2:FEDC  F0          movx    @DPTR, A
B2:FEDD  E4          clr   A
B2:FEDE  02 DA 8C    ljmp B2_DA8C

A única coisa que mudou foi aparecer novamente um background listrado na primeira fala de legenda, o qual sumiu depois. Bom, mas com esse espaço no final do bloco, é possível fazer testes mas bem elaborados agora.

Também testei o alinhamento horizontal com 01:
Código: [Selecionar]
B2:DAC6 7D 01                   mov     R5, #0x01E a legenda permanece centralizada. Então deve ser 00 (ainda não testado) alinhado à direita, 01 ou 81 (testados) centralizado e 02 (testado) à esquerda.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 01, 2009, 11:39:31 pm
Certo, zeurt! Bom saber que há espaço no final do bloco. Aproveitando sua dica de modificação, fiz uma parecida:
Código: [Selecionar]
B2:DA87 74 20        mov     A, #14   ; Tentativa de aumento da distância entre as linhas (20 em decimal)
B2:DA89 02 FE D9     ljmp B2_FED9
B2:DA8C FB           mov     R3, A
B2:DA8D FD           mov     R5, A
B2:DA8E 7F 09        mov     R7, #9
B2:DA90 12 05 D7     lcall   B2_BS_125_B5_B94D;  ?
...........
...........
...........
B2:FED9  90 FC 03    mov     DPTR, #XRAM_FC03
B2:FEDC  F0          movx    @DPTR, A
B2:FEDD  E4          clr   A
B2:FEDE  02 DA 8C    ljmp B2_DA8C

A única coisa que mudou foi aparecer novamente um background listrado na primeira fala de legenda, o qual sumiu depois.

Temos que ser bem detalhistas nesse negócio... Só uma dúvida: acho que teria que colocar CLR A antes de MOV A,#14. Pois, caso contrário, A ficará com um valor muito alto podendo corromper esse trecho...
(olhando a rotina, A ficaria com o valor de  #87 + #14). Ontem eu também esqueçi disso e enviei a sugestão sem esse detalhe (hoje cedo corrigi).
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 02, 2009, 12:06:02 am
Temos que ser bem detalhistas nesse negócio... Só uma dúvida: acho que teria que colocar CLR A antes de MOV A,#14. Pois, caso contrário, A ficará com um valor muito alto podendo corromper esse trecho...
Ontem eu também esqueçi disso e enviei a sugestão sem esse detalhe (hoje cedo corrigi).

Não entendi. O MOV A,#14 é atribuir 14 hex ao acumulador, não e? Então não precisa zerar o acumulador antes para fazer isso. É diferente de ADD A,#14.

Eu agora estou comparando com o firmware do Proview DP-858. Interessante que o valor para distância entre linhas é colocado junto com o alinhamento horizontal antes de chamar a outra função no final da sub-rotina:

Firmware do Proview DP-858:
Código: [Selecionar]
B1:F4FD E4     clr     A
B1:F4FE 90 FB 8E     mov     DPTR, #XRAM_FB8E ;      Distância entre as linhas
B1:F501 F0     movx    @DPTR, A
B1:F502 7B 08     mov     R3, #8;      Código Caracteres
B1:F504 7D 01     mov     R5, #1;      Alinhamento Horizontal
B1:F506 7F 13     mov     R7, #0x13;   Janela de Legenda
B1:F508 12 1E B8     lcall   B1_BS_228_B3_93B4

Estou tentando seguir as chamadas de sub-rotinas para ver onde esse valor é utilizado e comparar com sub-rotinas semelhantes no LG DV397H.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Fevereiro 02, 2009, 12:08:06 am
Temos que ser bem detalhistas nesse negócio... Só uma dúvida: acho que teria que colocar CLR A antes de MOV A,#14. Pois, caso contrário, A ficará com um valor muito alto podendo corromper esse trecho...
(olhando a rotina, A ficaria com o valor de  #87 + #14).

Não, nada disso. MOV não soma. Isso é tarefa de ADD.

CLR A = MOV A, #0
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 02, 2009, 12:27:44 am
Tá certo gente, falei besteira...  :dashhead1:
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 02, 2009, 12:48:46 am
Estou enviando a Rotina Equivalente do LG DV256K (que não apresenta esse problema dos caracteres cortados):

B2:D767             ; =============== S U B R O U T I N E =======================================
B2:D767
B2:D767
B2:D767             BankSw_447_B2_D767:                     ; CODE XREF: B2_B940+110p
B2:D767                                                     ; DATA XREF: B0:B0_BS_447_B2_D767o ...
B2:D767 90 FC DD                    mov     DPTR, #XRAM_FCDD
B2:D76A E0                          movx    A, @DPTR
B2:D76B FF                          mov     R7, A
B2:D76C 13                          rrc     A
B2:D76D 13                          rrc     A
B2:D76E 54 3F                       anl     A, #0x3F
B2:D770 20 E0 03                    jb      ACC.0, B2_D776  ; Accumulator
B2:D773 02 D8 1A                    ljmp    B2_D81A
B2:D776             ; ---------------------------------------------------------------------------
B2:D776
B2:D776             B2_D776:                                ; CODE XREF: BankSw_447_B2_D767+9j
B2:D776 7F 02                       mov     R7, #2
B2:D778 12 04 F9                    lcall   B2_BS_88_B4_CE62
B2:D77B D2 2B                       setb    RAM_25.3
B2:D77D 7F 09                       mov     R7, #9
B2:D77F 12 04 BD                    lcall   B2_BS_78_B4_4CAB
B2:D782 7F 09                       mov     R7, #9
B2:D784 12 04 C3                    lcall   B2_BS_79_B4_47CF
B2:D787 90 FB EB                    mov     DPTR, #XRAM_FBEB
B2:D78A 74 0B                       mov     A, #0xB
B2:D78C F0                          movx    @DPTR, A
B2:D78D A3                          inc     DPTR
B2:D78E 74 07                       mov     A, #7
B2:D790 F0                          movx    @DPTR, A
B2:D791 E4                          clr     A
B2:D792 FB                          mov     R3, A
B2:D793 FD                          mov     R5, A
B2:D794 7F 09                       mov     R7, #9
B2:D796 12 04 E1                    lcall   B2_BS_84_B4_D9E6
B2:D799 E4                          clr     A
B2:D79A 90 FB 39                    mov     DPTR, #XRAM_FB39
B2:D79D F0                          movx    @DPTR, A
B2:D79E A3                          inc     DPTR
B2:D79F F0                          movx    @DPTR, A
B2:D7A0 90 FB 3B                    mov     DPTR, #XRAM_FB3B
B2:D7A3 F0                          movx    @DPTR, A
B2:D7A4 A3                          inc     DPTR
B2:D7A5 F0                          movx    @DPTR, A
B2:D7A6 90 FB 3E                    mov     DPTR, #XRAM_FB3E
B2:D7A9 74 02                       mov     A, #2
B2:D7AB F0                          movx    @DPTR, A
B2:D7AC A3                          inc     DPTR
B2:D7AD 74 BB                       mov     A, #0xBB ; '+'
B2:D7AF F0                          movx    @DPTR, A
B2:D7B0 90 FB 42                    mov     DPTR, #XRAM_FB42
B2:D7B3 E4                          clr     A
B2:D7B4 F0                          movx    @DPTR, A
B2:D7B5 A3                          inc     DPTR
B2:D7B6 74 87                       mov     A, #0x87 ; 'ç'
B2:D7B8 F0                          movx    @DPTR, A
B2:D7B9 D2 30                       setb    RAM_26.0
B2:D7BB E4                          clr     A
B2:D7BC 90 FB EB                    mov     DPTR, #XRAM_FBEB
B2:D7BF F0                          movx    @DPTR, A
B2:D7C0 FB                          mov     R3, A
B2:D7C1 FD                          mov     R5, A
B2:D7C2 7F 09                       mov     R7, #9
B2:D7C4 12 04 CF                    lcall   B2_BS_81_B4_DA67
B2:D7C7 E4                          clr     A
B2:D7C8 FD                          mov     R5, A
B2:D7C9 7F 09                       mov     R7, #9
B2:D7CB 12 04 C9                    lcall   B2_BS_80_B4_EE7F
B2:D7CE 7F 09                       mov     R7, #9
B2:D7D0 12 04 D5                    lcall   B2_BS_82_B4_EF6F
B2:D7D3 90 FB 39                    mov     DPTR, #XRAM_FB39
B2:D7D6 E4                          clr     A
B2:D7D7 F0                          movx    @DPTR, A
B2:D7D8 A3                          inc     DPTR
B2:D7D9 74 28                       mov     A, #0x28 ; '('
B2:D7DB F0                          movx    @DPTR, A
B2:D7DC 90 FB 3B                    mov     DPTR, #XRAM_FB3B
B2:D7DF E4                          clr     A
B2:D7E0 F0                          movx    @DPTR, A
B2:D7E1 A3                          inc     DPTR
B2:D7E2 74 04                       mov     A, #4
B2:D7E4 F0                          movx    @DPTR, A
B2:D7E5 90 FB 3E                    mov     DPTR, #XRAM_FB3E
B2:D7E8 74 02                       mov     A, #2
B2:D7EA F0                          movx    @DPTR, A
B2:D7EB A3                          inc     DPTR
B2:D7EC 74 94                       mov     A, #0x94 ; 'ö'
B2:D7EE F0                          movx    @DPTR, A
B2:D7EF 90 FB 42                    mov     DPTR, #XRAM_FB42
B2:D7F2 E4                          clr     A
B2:D7F3 F0                          movx    @DPTR, A
B2:D7F4 A3                          inc     DPTR
B2:D7F5 74 88                       mov     A, #0x88 ; 'ê'
B2:D7F7 F0                          movx    @DPTR, A
B2:D7F8 7D 81                       mov     R5, #0x81 ; 'ü'
B2:D7FA 7F 09                       mov     R7, #9
B2:D7FC 12 0B CB                    lcall   B2_BS_379_B4_C12B
B2:D7FF D2 70                       setb    RAM_2E.0
B2:D801 7F 8D                       mov     R7, #0x8D ; 'ì'
B2:D803 7E 00                       mov     R6, #0
B2:D805 12 04 5D                    lcall   B2_BS_62_B0_EBE6
B2:D808 BF 08 0D                    cjne    R7, #8, B2_D818
B2:D80B 90 FB 35                    mov     DPTR, #XRAM_FB35
B2:D80E E0                          movx    A, @DPTR
B2:D80F 64 11                       xrl     A, #0x11
B2:D811 60 05                       jz      B2_D818
B2:D813 7F 08                       mov     R7, #8
B2:D815 12 7D A3                    lcall   BankSw_112_B2_7DA3
B2:D818
B2:D818             B2_D818:                                ; CODE XREF: BankSw_447_B2_D767+A1j
B2:D818                                                     ; BankSw_447_B2_D767+AAj
B2:D818 C2 70                       clr     RAM_2E.0
B2:D81A
B2:D81A             B2_D81A:                                ; CODE XREF: BankSw_447_B2_D767+Cj
B2:D81A 22                          ret
B2:D81A             ; End of function BankSw_447_B2_D767
B2:D81A
B2:D81B


Ainda não analisei com muito cuidado, mas já notei algumas coisas diferentes:

a-)Aqui não tem mov R3,#8:
B2:D7F4 A3                          inc     DPTR
B2:D7F5 74 88                       mov     A, #0x88 ; 'ê'
B2:D7F7 F0                          movx    @DPTR, A
B2:D7F8 7D 81                       mov     R5, #0x81 ; 'ü'
B2:D7FA 7F 09                       mov     R7, #9
B2:D7FC 12 0B CB                    lcall   B2_BS_379_B4_C12B

b-)Os valores de wX1 e wY2 são diferentes (na segunda parte, já que na primeira parte são iguais).




Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 03, 2009, 04:23:31 pm
Bom, dei um tempo aqui porque tive que fazer um cabo USB serial ;D. Quem está na chuva é para se molhar. O bom é que funcionou, mas agora estou com um problema esquisito! Acho que a saída HDMI queimou.

Pois é, comparando com a rotina do DV256K, a diferença é pouca. Então eu segui as rotinas até a chamada a uma função que o IDA chama de ARM_GetChar, que deve ser familiar a vocês. Eu achei que essa rotina deve ser responsável por algo referente a exibição de caracteres no Player, seja legenda ou qualquer outro. Então, vi uma pequena diferença:

DV397H:
Código: [Selecionar]
B4:F1F1 B4_F1F1:                                ; CODE XREF: ARM_GetChar+Fj
B4:F1F1 90 F8 60                    mov     DPTR, #BIM_STAT
B4:F1F4 E0                          movx    A, @DPTR
B4:F1F5 20 E5 F9                    jb      ACC.5, B4_F1F1  ; Accumulator
B4:F1F8 90 F8 61                    mov     DPTR, #BIM_MARH ; DRAM write port address High
B4:F1FB 74 74                       mov     A, #0x74 ; 't'
B4:F1FD F0                          movx    @DPTR, A
B4:F1FE 25 61                       add     A, RAM_61
B4:F200 A3                          inc     DPTR
B4:F201 F0                          movx    @DPTR, A
B4:F202 A3                          inc     DPTR
B4:F203 E5 62                       mov     A, RAM_62
B4:F205 F0                          movx    @DPTR, A
B4:F206 A3                          inc     DPTR
B4:F207 E0                          movx    A, @DPTR
B4:F208 F5 62                       mov     RAM_62, A

DV256K:
Código: [Selecionar]
B0:EBF1 B0_EBF1:                                ; CODE XREF: ARM_GetChar+Fj
B0:EBF1                 mov     DPTR, #BIM_STAT
B0:EBF4                 movx    A, @DPTR
B0:EBF5                 jb      ACC.5, B0_EBF1  ; Accumulator
B0:EBF8                 mov     DPTR, #BIM_MARH ; DRAM write port address High
B0:EBFB                 mov     A, #0x75 ; 'u'
B0:EBFD                 movx    @DPTR, A
B0:EBFE                 mov     A, RAM_5A
B0:EC00                 add     A, #0x4C ; 'L'
B0:EC02                 inc     DPTR
B0:EC03                 movx    @DPTR, A
B0:EC04                 inc     DPTR
B0:EC05                 mov     A, RAM_5B
B0:EC07                 movx    @DPTR, A
B0:EC08                 inc     DPTR
B0:EC09                 movx    A, @DPTR
B0:EC0A                 mov     RAM_5B, A

Além da soma colocada na posição de memória interna ser diferente (#74+alguma coisa implícita no DV397H e #75+#4C explícito no DV256K), o valor inicial carregado em uma posição da memória externa é diferente em 1 (#75 e #74). Pois bem, como sempre mantive a idéia de fazer o cabo de recuperação, não me importo em fazer testes quaisquer. Assim, alterei o valor de #75 para #74 no firmware do DV397H. Ao reiniciar, vi que após o HELLO aparecer no visor, a palavra seguinte ficou toda truncada. Não dava para ler. Além disso, a tela (eu uso a saída HDMI) ficou preta. Mas ao ligar a TV na saída AV do aparelho, vi que a janela de background estava aparecendo, mas travada. Ou seja, o HDMI não estava funcionando mas o AV sim. Os botões eject e liga-desliga estavam funcionando, mas o aparelho não lia mais cd e nem usb. Então, finalmente tinha que fazer o cabo. Segui os passos indicados pelo Ryan. O cabo é um USB de celular siemens e ficou ótimo. Soldei um conector de placa de som na placa controladora e deixei um rabicho com conector para fora. Além disso, no Linux, o upgrade com o MTKTOOL no WINE levou de 3 a 4 minutos usando o cabo USB (o driver para os cabos Prolific 2303 são nativos no linux desde o kernel 2.4 e parece ser menos problemático que o do Windows - você conecta o cabo e a porta serial é criada). Após a gravação do firmware original, a surpresa!! O player voltou a funcionar, mas a saída HDMI não!! Continua em tela preta e sem áudio. Mas a AV funciona normalmente. Verifiquei todas as conexões internas. Gravei outros firmware e continua sem funcionar o HDMI. E não achei nada na Internet a esse respeito.

Sem querer fugir muito do assunto do tópico, alguém já viu isso acontecer? Uma alteração no firmware pode danificar a saída HDMI do player ou a entrada HDMI da TV?

Voltando ao assunto do tópico, posso disponibilizar o firmware que deu problema para alguém, que tenha conexão por cabo e coragem, testar ;D! É só pedir! Vou fazer mais testes aqui e tentar usar outro cabo ou adaptadores para saber se o problema é no player ou na TV.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 03, 2009, 06:31:30 pm
Então eu segui as rotinas até a chamada a uma função que o IDA chama de ARM_GetChar, que deve ser familiar a vocês.
ARM_GetChar serve para o 8032 ler conteúdo da memória em determinado endereço do ARM.
Para maiores detalhes veja esse site (http://personal.inet.fi/cool/mediatek/documents/index.html) - tópico MTK FIRMWARE ARM.

Sem querer fugir muito do assunto do tópico, alguém já viu isso acontecer? Uma alteração no firmware pode danificar a saída HDMI do player ou a entrada HDMI da TV?
Que pena esse efeito colateral que você teve... :( Os maiores danos que eu já ouvi falar, relacionados a modificações e atualizações de firmware foram na maioria devido a atualização mal-sucedida, seguida de tentativas intempestivas de soldagem do cabo, o que danificava a placa e/ou a porta serial, inutilizando o aparelho. Já no seu caso foi algo estranho que nunca ouvi falar. Talvez outros colegas do forum possam opinar com mais propriedade...
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 04, 2009, 01:45:41 am
Comparando a Rotina do DV397H com as de outros players, chego a conclusão que o tipo de alinhamento vertical pode ser definido em (destacado em verde):
B2:DAC4 7B 08                       mov     R3, #8
B2:DAC6 7D 81                       mov     R5, #0x81 ; 'ü'
B2:DAC8 7F 09                       mov     R7, #9

rictad, como você observou que o tipo de alinhamento vertical do DV397H é MIDDLE-BOTTOM, enquanto o do DV256K é MIDDLE-TOP, talvez mudar isso possa corrigir o problema dos caracteres cortados. O curioso é que no LG DV256K esse parametro não é definido nesse trecho (como disse alguns post atrás R3 não é usado).
De acordo com as observações do Ryan, nas rotinas que ele descreveu, mov R3,#8 nesses trechos pode definir não apenas o tipo de alinhamento vertical, como também o suporte a todos os caracteres (256 caracteres). Teria que testar outros valores para ver o que acontece. Você tem razão: nas rotinas dos outros firmwares, a distância entre as linhas é enviada junto com os 3 parametros acima (R3, R5 e R7).
Não sei se você está com disposição para insistir com isso tudo, considerando o problema que aconteceu com o seu player, mas caso estiver, está aqui mais uma sugestão...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 04, 2009, 02:30:52 am
Comparando a Rotina do DV397H com as de outros players, chego a conclusão que o tipo de alinhamento vertical pode ser definido em (destacado em verde):
B2:DAC4 7B 08                       mov     R3, #8
B2:DAC6 7D 81                       mov     R5, #0x81 ; 'ü'
B2:DAC8 7F 09                       mov     R7, #9

rictad, como você observou que o tipo de alinhamento vertical do DV397H é MIDDLE-BOTTOM, enquanto o do DV256K é MIDDLE-TOP, talvez mudar isso possa corrigir o problema dos caracteres cortados. O curioso é que no LG DV256K esse parametro não é definido nesse trecho (como disse alguns post atrás R3 não é usado).
De acordo com as observações do Ryan, nas rotinas que ele descreveu, mov R3,#8 nesses trechos pode definir não apenas o tipo de alinhamento vertical, como também o suporte a todos os caracteres (256 caracteres). Teria que testar outros valores para ver o que acontece. Você tem razão: nas rotinas dos outros firmwares, a distância entre as linhas é enviada junto com os 3 parametros acima (R3, R5 e R7).
Não sei se você está com disposição para insistir com isso tudo, considerando o problema que aconteceu com o seu player, mas caso estiver, está aqui mais uma sugestão...

Obrigado pela informação, zeurt! Certamente vou continuar com os testes, afinal o video componente ainda está funcionando. Vou testar vários valores para R3 nesse trecho. Mas vai ser um pouco mais lento porque também estou tentando descobrir o que aconteceu com o HDMI.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 05, 2009, 03:32:43 pm
Oi rictad, vale a pena ler o documento do NewAge: MPEG4 Subtitle Display in ARM (do yahoo group mt13x9). Tem muitas informações lá que podem ajudar a achar o que estamos buscando.
Tirei uma parte de lá:
 
"Let’s see what is passed to ARM:

byte Window ID   : the mpeg4 subtitle window
word X1      : subtitle_rect.left
word Y1      : subtitle_rect.top
word X2      : subtitle_rect.right
word Y2      : subtitle_rect.bottom
byte H_Align   : Horizontal alignment
            0x00: Left
            0x01: Center
            0x02: Right
byte Settings   : Miscellaneous purpose (bits)
            .......0: 0x00 Top alignment
            .......1: 0x01 Bottom alignment
            ....1...: 0x08 display all 256 characters in subtitles
            ...1....: 0x10 only ASCII 0x20..0x7E characters will be displayed
byte Space      : line spacing (space between subtitle lines in pixels)

So to call SetMpeg4SubtitleParams the input parameters must be in.

   Window ID      : R7
X1, Y1, X2, Y2   : global variables in xram
H_Align      : R5
Settings      : R3
Space         : xram"


Nesse Firmware analisado, R3 também é responsável por Settings. Veja que a opção TOP Alignment seria 0x00.

Estou enviando o documento.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 05, 2009, 05:25:16 pm
Olá zeurt! Sim, já havia percebido que valores ímpares (bit 0 setado) causavam alinhamento superior. Isso quer dizer que é ao contrário do texto. Por exemṕlo, o valor original #08=#B00001000. De qualquer forma, o alinhamento superior não funciona corretamente. Quando seto o bit 0 (#09, #01 etc) aparece só a primeira linha da legenda, alinhada a cima, e com um efeito flicker. Os testes continuam... :)

Editado: Após fazer as modificações para o firmware 1.3 (postado mais abaixo), verifiquei que o bit 0 setado é responsável pelo alinhamento inferior, mas o parâmetro de espaçamento entre linhas estava bugado, fazendo com que a legenda ficasse alta, o que parecia alinhamento superior. Para mais informações, veja os próximos posts.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 11, 2009, 05:07:33 pm
Bom, consegui! ;D A documentação recomendada pelo zeurt foi fundamental.
O problema está no ARM. No DV397H, a distância entre linhas é definida de forma absoluta (não depende do tamanho da fonte e nem de um "offset" externo) na rotina do ARM responsável por processar a legenda na tela. Isso deu trabalho para descobrir. Depois de extrair os códigos ARM no MTKRemaker, achei a seguinte rotina:
Código: [Selecionar]
ROM:0003FB1A             sub_3FB1A                               ; CODE XREF: sub_29CE2+4BC_p
ROM:0003FB1A 02 78                       LDRB    R2, [R0]
ROM:0003FB1C 4E 49                       LDR     R1, =unk_9EB88
ROM:0003FB1E 0A 72                       STRB    R2, [R1,#8]
ROM:0003FB20 83 78                       LDRB    R3, [R0,#2]
ROM:0003FB22 42 78                       LDRB    R2, [R0,#1]
ROM:0003FB24 1B 02                       LSLS    R3, R3, #8
ROM:0003FB26 1A 43                       ORRS    R2, R3
ROM:0003FB28 0A 80                       STRH    R2, [R1]
ROM:0003FB2A 03 79                       LDRB    R3, [R0,#4]
ROM:0003FB2C C2 78                       LDRB    R2, [R0,#3]
ROM:0003FB2E 1B 02                       LSLS    R3, R3, #8
ROM:0003FB30 1A 43                       ORRS    R2, R3
ROM:0003FB32 4A 80                       STRH    R2, [R1,#2]
ROM:0003FB34 83 79                       LDRB    R3, [R0,#6]
ROM:0003FB36 42 79                       LDRB    R2, [R0,#5]
ROM:0003FB38 1B 02                       LSLS    R3, R3, #8
ROM:0003FB3A 1A 43                       ORRS    R2, R3
ROM:0003FB3C 8A 80                       STRH    R2, [R1,#4]
ROM:0003FB3E 03 7A                       LDRB    R3, [R0,#8]
ROM:0003FB40 C2 79                       LDRB    R2, [R0,#7]
ROM:0003FB42 1B 02                       LSLS    R3, R3, #8
ROM:0003FB44 1A 43                       ORRS    R2, R3
ROM:0003FB46 CA 80                       STRH    R2, [R1,#6]
ROM:0003FB48 42 7A                       LDRB    R2, [R0,#9]
ROM:0003FB4A 4A 72                       STRB    R2, [R1,#9]
ROM:0003FB4C 82 7A                       LDRB    R2, [R0,#0xA]
ROM:0003FB4E 8A 72                       STRB    R2, [R1,#0xA]
ROM:0003FB50 C0 7A                       LDRB    R0, [R0,#0xB]
ROM:0003FB52 C8 72                       STRB    R0, [R1,#0xB] ; deveria ser o espaço entre linhas!!!!
ROM:0003FB54 70 47                       BX      LR
ROM:0003FB54             ; End of function sub_3FB1A

Segundo o documento indicado por zeurt (MPEG4 Subtitle Display in ARM, do NewAge) esta rotina é idêntica a SUB_FillMpeg4SubtitleParamsRecord do Yamada6700v1. Ela processa os parâmetros enviados pela SetMPE4SubtitleParams do 8032. A penúltima linha guarda o parâmetro que normalmente é responsável pela distância entre linhas. No caso do firmware do DV256K, as duas últimas linhas não existem. Isso já era esperado, já que o DV256K faz o espaçamento "automaticamente". Mas no DV397H elas estão lá. Então tentei setar o registrador R0 diretamente na rotina para ver se fazia alguma diferença:
Código: [Selecionar]
....................
....................
ROM:0003FB4E 8A 72                       STRB    R2, [R1,#0xA]
ROM:0003FB50 C0 7A                       MOVS    R0, #08
ROM:0003FB52 C8 72                       STRB    R0, [R1,#0xB] ; deveria ser o espaço entre linhas!!!!
ROM:0003FB54 70 47                       BX      LR
ROM:0003FB54             ; End of function sub_3FB1A

Mas não obtive resultado (fazendo esse "gato" com o parâmetro imediatamente anterior, responsável pelo alinhamento vertical, obtemos resultado). Lendo mais a documentação do NewAge, observamos que a distância entre linhas é definitivamente calculada na rotina de impressão dos caracteres como função da posição da linha anterior + delta Y. Já o delta Y é calculado pela rotina SUB_CalcNewLineDeltaY, sendo a soma do tamanho da fonte com o offset guardado na rotina acima. Mas SUB_CalcNewLineDeltaY não existe no DV397H. E na rotina de impressão, enorme por sinal, e diferente da apresentada pelo NewAge, consegui achar o valor de distância entre linhas, que é fixo:
Código: [Selecionar]
0348             ; =============== S U B R O U T I N E =======================================
ROM:00040348
ROM:00040348
ROM:00040348             sub_40348                               ; CODE XREF: sub_408FC:loc_4092E_p
ROM:00040348
ROM:00040348             var_68          = -0x68
ROM:00040348             var_64          = -0x64
ROM:00040348             var_60          = -0x60
ROM:00040348             var_5C          = -0x5C
ROM:00040348             var_58          = -0x58
ROM:00040348             var_54          = -0x54
ROM:00040348             var_4C          = -0x4C
ROM:00040348             var_48          = -0x48
ROM:00040348             var_44          = -0x44
ROM:00040348             var_42          = -0x42
ROM:00040348             var_40          = -0x40
ROM:00040348             var_3C          = -0x3C
ROM:00040348             var_38          = -0x38
ROM:00040348             var_34          = -0x34
ROM:00040348             var_30          = -0x30
ROM:00040348             var_2C          = -0x2C
ROM:00040348             var_28          = -0x28
ROM:00040348             var_24          = -0x24
ROM:00040348             var_20          = -0x20
ROM:00040348             var_1C          = -0x1C
ROM:00040348             var_18          = -0x18
ROM:00040348
ROM:00040348 35 48                       LDR     R0, =unk_9AE62
ROM:0004034A F0 B5                       PUSH    {R4-R7,LR}
ROM:0004034C 03 78                       LDRB    R3, [R0]
ROM:0004034E 95 B0                       SUB     SP, SP, #0x54
ROM:00040350 34 49                       LDR     R1, =SHAREMEM_ADDR
ROM:00040352 02 93                       STR     R3, [SP,#0x68+var_60]
ROM:00040354 08 68                       LDR     R0, [R1]
ROM:00040356 BB 22 52 01                 MOVLS   R2, 0x1760
ROM:0004035A 82 18                       ADDS    R2, R0, R2
ROM:0004035C 12 78                       LDRB    R2, [R2]
ROM:0004035E 00 2A                       CMP     R2, #0
ROM:00040360 01 D1                       BNE     loc_40366
ROM:00040362 04 22                       MOVS    R2, #4
ROM:00040364 00 E0                       B       loc_40368
.........................................
......................................... essa rotina é enorme, então tive que saltar linhas
.........................................
 loc_406D2                               ; CODE XREF: sub_40348+366_j
ROM:000406D2 20 1C                       ADDS    R0, R4, #0
ROM:000406D4 FF 30                       ADDS    R0, #0xFF
ROM:000406D6 04 9A                       LDR     R2, [SP,#0x68+var_58]
ROM:000406D8 00 06                       LSLS    R0, R0, #0x18
ROM:000406DA 00 0E                       LSRS    R0, R0, #0x18
ROM:000406DC 02 9B                       LDR     R3, [SP,#0x68+var_60]
ROM:000406DE 1E 32                       ADDS    R2, #0x1E                        ; distancia entre linhas
ROM:000406E0 00 25                       MOVS    R5, #0
ROM:000406E2 5F 49                       LDR     R1, =unk_9E868
ROM:000406E4 01 33                       ADDS    R3, #1
ROM:000406E6 0F 93                       STR     R3, [SP,#0x68+var_2C]
ROM:000406E8 11 92                       STR     R2, [SP,#0x68+var_24]
ROM:000406EA 10 90                       STR     R0, [SP,#0x68+var_28]
ROM:000406EC 0E 91                       STR     R1, [SP,#0x68+var_30]
ROM:000406EE C1 E0                       B       loc_40874
................................................
................................................ continua!
................................................

Alterando a distância para #25 já é suficiente para suportar fonte Arial Narrow 23. Estou tentando agora bolar um jeito de deixar isso em função do tamanho da fonte, pois com fontes menores o espaço fica muito grande (o espaço é fixo).
Não consegui encontrar a correspondência para isso no DV256K, mas pelo menos naquele player a distância entre linhas parece funcionar corretamente. Já o DV397H, apesar de possuir a rotina SUB_FillMpeg4SubtitleParamsRecord completa, com todos os parâmetros, não possui um espaçamento entre linhas funcional, que utilize o parâmetro que seria reservado a isso. Parece um firmware feito às pressas, com retalhos de rotinas.

Nota: o MTKRemaker extrai os códigos ARM, mas não está me permitindo trocá-los pelos modificados (não sei se é problema da versão ou porque não suporta o firmware do DV397H). Então eu usei o MTKReplacer.
   


Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 11, 2009, 07:58:25 pm
Bom, consegui! ;D
Parabéns rictad!!  :clapping:

E na rotina de impressão, enorme por sinal, e diferente da apresentada pelo NewAge, consegui achar o valor de distância entre linhas, que é fixo...
Alterando a distância para #25 já é suficiente para suportar fonte Arial Narrow 23. Estou tentando agora bolar um jeito de deixar isso em função do tamanho da fonte, pois com fontes menores o espaço fica muito grande (o espaço é fixo).
Eu estava fazendo toda essa investigação também (apenas no LG DV256K por enquanto), e realmente fiquei perdido com essa rotina enorme e bem diferente daquela do documento do NewAge. Também tentei encontrar o ponto responsável pela distância entre as linhas, mas não achei. No DV256K, provavelmente a distância entre as linhas é definida apenas pela altura da fonte, enquanto que no DV397H a distância é fixa e não depende da altura da fonte... Muito legal você ter encontrado finalmente o ponto chave!  :laugh:

Não consegui encontrar a correspondência para isso no DV256K, mas pelo menos naquele player a distância entre linhas parece funcionar corretamente. Já o DV397H, apesar de possuir a rotina SUB_FillMpeg4SubtitleParamsRecord completa, com todos os parâmetros, não possui um espaçamento entre linhas funcional, que utilize o parâmetro que seria reservado a isso. Parece um firmware feito às pressas, com retalhos de rotinas.
Acho que vale a pena continuar tentando decifrar essas rotinas (tanto do DV256K como do DV397H, e também dos LGs 8xxx e 9xxx originais e modificados pelo br0max e pelo xypro respectivamente, isso porque eles modificaram vários pontos dessas rotinas do ARM, implementando quebra de linha inteligente com reformatação, e muitas outras melhorias).
Quanto ao firmware parecer ter sido feito as pressas, com retalhos de rotinas, fico com a impressão que isso acaba se evidenciando em alguns pontos de praticamente todos os firmwares de Divx players que existem...

Nota: o MTKRemaker extrai os códigos ARM, mas não está me permitindo trocá-los pelos modificados (não sei se é problema da versão ou porque não suporta o firmware do DV397H). Então eu usei o MTKReplacer
Isso também ocorre comigo (com todos os firmwares que testei) e não sei muito bem porque. Também uso o MTK Replacer...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 12, 2009, 05:02:53 pm
Bom, consegui! ;D
Parabéns rictad!!  :clapping:

Obrigado zeurt! Bom, logo postarei um firmware com essa alteração e com 6 tipos de fontes selecionáveis, do jeito que você ensinou no tópico do DV256K. Já está quase pronto. Mas estou tentando agora fazer o file browser mostrar os caracteres acentuados. Alterei o filtro no ARM (caracteres no intervalo 20 a 7E) e aqueles dois no 8032 que são iguais aos do DV256K (20 a 5F). Mas não funciona. Continua mostrando "_" no lugar dos caracteres acentuados. Também alterei a fonte do filebrowser, que no DV391H é a número 14 e não possui acentos, mas de nada adiantou. Eu não entendi direito se só isso foi suficiente no DV256K, ou ainda foi necessário implementar a rotina de conversão Unicode.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 12, 2009, 07:10:08 pm
Mas estou tentando agora fazer o file browser mostrar os caracteres acentuados. Alterei o filtro no ARM (caracteres no intervalo 20 a 7E) e aqueles dois no 8032 que são iguais aos do DV256K (20 a 5F). Mas não funciona. Continua mostrando "_" no lugar dos caracteres acentuados. Também alterei a fonte do filebrowser, que no DV391H é a número 14 e não possui acentos, mas de nada adiantou. Eu não entendi direito se só isso foi suficiente no DV256K, ou ainda foi necessário implementar a rotina de conversão Unicode.

É necessário:
1- Modificar os 2 filtros do 8032 como expliquei aqui: http://ryan.com.br/smf/index.php?topic=232.msg9175428#msg9175428 (http://ryan.com.br/smf/index.php?topic=232.msg9175428#msg9175428)
2- Implementar a Rotina de Conversão Unicode. Ver a introdução aqui: http://ryan.com.br/smf/index.php?topic=232.msg9175252#msg9175252 (http://ryan.com.br/smf/index.php?topic=232.msg9175252#msg9175252). Seguir os passos:
a-) Encontrar os 2 pontos que chamarão a nova rotina.
b-) Usei a Rotina de Conversão Unicode criada pelo br0max para os LGs8xxx. Estou enviando essa rotina abaixo:

Código: [Selecionar]
ROM:0000FD98             ; =============== S U B R O U T I N E =======================================
ROM:0000FD98
ROM:0000FD98
ROM:0000FD98             sub_FD98                                ; CODE XREF: sub_24258+132p
ROM:0000FD98                                                     ; sub_24258+166p
ROM:0000FD98 01 B4                       PUSH    {R0}
ROM:0000FD9A 10 39                       SUBS    R1, #0x10
ROM:0000FD9C 88 7B                       LDRB    R0, [R1,#0xE]
ROM:0000FD9E C9 7B                       LDRB    R1, [R1,#0xF]
ROM:0000FDA0 21 28                       CMP     R0, #0x21 ; '!'
ROM:0000FDA2 03 D1                       BNE     loc_FDAC
ROM:0000FDA4 22 29                       CMP     R1, #0x22 ; '"'
ROM:0000FDA6 01 D1                       BNE     loc_FDAC
ROM:0000FDA8 99 21                       MOVS    R1, #0x99 ; 'Ö'
ROM:0000FDAA 19 E0                       B       loc_FDE0
ROM:0000FDAC             ; ---------------------------------------------------------------------------
ROM:0000FDAC
ROM:0000FDAC             loc_FDAC                                ; CODE XREF: sub_FD98+Aj
ROM:0000FDAC                                                     ; sub_FD98+Ej
ROM:0000FDAC 20 28                       CMP     R0, #0x20 ; ' '
ROM:0000FDAE 11 D1                       BNE     loc_FDD4
ROM:0000FDB0 18 29                       CMP     R1, #0x18
ROM:0000FDB2 03 D3                       BCC     loc_FDBC
ROM:0000FDB4 19 29                       CMP     R1, #0x19
ROM:0000FDB6 01 D8                       BHI     loc_FDBC
ROM:0000FDB8 79 31                       ADDS    R1, #0x79 ; 'y'
ROM:0000FDBA 11 E0                       B       loc_FDE0
ROM:0000FDBC             ; ---------------------------------------------------------------------------
ROM:0000FDBC
ROM:0000FDBC             loc_FDBC                                ; CODE XREF: sub_FD98+1Aj
ROM:0000FDBC                                                     ; sub_FD98+1Ej
ROM:0000FDBC 1A 29                       CMP     R1, #0x1A
ROM:0000FDBE 01 D1                       BNE     loc_FDC4
ROM:0000FDC0 82 21                       MOVS    R1, #0x82 ; 'é'
ROM:0000FDC2 0D E0                       B       loc_FDE0
ROM:0000FDC4             ; ---------------------------------------------------------------------------
ROM:0000FDC4
ROM:0000FDC4             loc_FDC4                                ; CODE XREF: sub_FD98+26j
ROM:0000FDC4 39 29                       CMP     R1, #0x39 ; '9'
ROM:0000FDC6 01 D1                       BNE     loc_FDCC
ROM:0000FDC8 8B 21                       MOVS    R1, #0x8B ; 'ï'
ROM:0000FDCA 09 E0                       B       loc_FDE0
ROM:0000FDCC             ; ---------------------------------------------------------------------------
ROM:0000FDCC
ROM:0000FDCC             loc_FDCC                                ; CODE XREF: sub_FD98+2Ej
ROM:0000FDCC 3A 29                       CMP     R1, #0x3A ; ':'
ROM:0000FDCE 05 D1                       BNE     loc_FDDC
ROM:0000FDD0 9B 21                       MOVS    R1, #0x9B ; 'ø'
ROM:0000FDD2 05 E0                       B       loc_FDE0
ROM:0000FDD4             ; ---------------------------------------------------------------------------
ROM:0000FDD4
ROM:0000FDD4             loc_FDD4                                ; CODE XREF: sub_FD98+16j
ROM:0000FDD4 01 28                       CMP     R0, #1
ROM:0000FDD6 01 D0                       BEQ     loc_FDDC
ROM:0000FDD8 02 28                       CMP     R0, #2
ROM:0000FDDA 01 D1                       BNE     loc_FDE0
ROM:0000FDDC
ROM:0000FDDC             loc_FDDC                                ; CODE XREF: sub_FD98+36j
ROM:0000FDDC                                                     ; sub_FD98+3Ej
ROM:0000FDDC 01 48                       LDR     R0, =unk_280B0
ROM:0000FDDE 41 5C                       LDRB    R1, [R0,R1]
ROM:0000FDE0
ROM:0000FDE0             loc_FDE0                                ; CODE XREF: sub_FD98+12j
ROM:0000FDE0                                                     ; sub_FD98+22j ...
ROM:0000FDE0 01 BC                       POP     {R0}
ROM:0000FDE2 70 47                       BX      LR
ROM:0000FDE2             ; End of function sub_FD98
ROM:0000FDE2
ROM:0000FDE2             ; ---------------------------------------------------------------------------
ROM:0000FDE4 B0 80 02 00 off_FDE4        DCD unk_280B0           ; DATA XREF: sub_FD98:loc_FDDCr
ROM:0000FDE8 00                          DCB    0
ROM:0000FDE9 00                          DCB    0
ROM:0000FDEA 00                          DCB    0
ROM:0000FDEB 00                          DCB    0
ROM:0000FDEC 00                          DCB    0
ROM:0000FDED 00                          DCB    0
ROM:0000FDEE 00                          DCB    0
ROM:0000FDEF 00                          DCB    0
ROM:0000FDF0 00                          DCB    0
ROM:0000FDF1 00                          DCB    0
ROM:0000FDF2 00                          DCB    0
ROM:0000FDF3 00                          DCB    0
ROM:0000FDF4 00                          DCB    0
ROM:0000FDF5 00                          DCB    0
ROM:0000FDF6 00                          DCB    0
ROM:0000FDF7 00                          DCB    0
ROM:0000FDF8 00                          DCB    0
ROM:0000FDF9 00                          DCB    0
ROM:0000FDFA 00                          DCB    0
ROM:0000FDFB 00                          DCB    0
ROM:0000FDFC 00                          DCB    0
ROM:0000FDFD 00                          DCB    0
ROM:0000FDFE 00                          DCB    0
ROM:0000FDFF 00                          DCB    0
ROM:0000FE00 00                          DCB    0
ROM:0000FE01 00                          DCB    0
ROM:0000FE02 00                          DCB    0
ROM:0000FE03 00                          DCB    0
ROM:0000FE04 00                          DCB    0
ROM:0000FE05 00                          DCB    0
ROM:0000FE06 00                          DCB    0
ROM:0000FE07 00                          DCB    0
ROM:0000FE08 00                          DCB    0
ROM:0000FE09 00                          DCB    0
ROM:0000FE0A 00                          DCB    0
ROM:0000FE0B 00                          DCB    0
ROM:0000FE0C 00                          DCB    0
ROM:0000FE0D 00                          DCB    0
ROM:0000FE0E 00                          DCB    0
ROM:0000FE0F 00                          DCB    0
ROM:0000FE10

ROM:000280B0 5F          unk_280B0       DCB 0x5F ; _            ; DATA XREF: ROM:off_FDE4o
ROM:000280B0                                                     ; sub_256B0+10o
ROM:000280B1 5F                          DCB 0x5F ; _
ROM:000280B2 C3                          DCB 0xC3 ; +
ROM:000280B3 E3                          DCB 0xE3 ; Ò
ROM:000280B4 A5                          DCB 0xA5 ; Ñ
ROM:000280B5 B9                          DCB 0xB9 ; ¦
ROM:000280B6 C6                          DCB 0xC6 ; ã
ROM:000280B7 E6                          DCB 0xE6 ; µ
ROM:000280B8 5F                          DCB 0x5F ; _
ROM:000280B9 5F                          DCB 0x5F ; _
ROM:000280BA 5F                          DCB 0x5F ; _
ROM:000280BB 5F                          DCB 0x5F ; _
ROM:000280BC C8                          DCB 0xC8 ; +
ROM:000280BD E8                          DCB 0xE8 ; Þ
ROM:000280BE CF                          DCB 0xCF ; ¤
ROM:000280BF EF                          DCB 0xEF ; ´
ROM:000280C0 D0                          DCB 0xD0 ; ð
ROM:000280C1 F0                          DCB 0xF0 ; ­
ROM:000280C2 5F                          DCB 0x5F ; _
ROM:000280C3 96                          DCB 0x96 ; û
ROM:000280C4 97                          DCB 0x97 ; ù
ROM:000280C5 5F                          DCB 0x5F ; _
ROM:000280C6 5F                          DCB 0x5F ; _
ROM:000280C7 5F                          DCB 0x5F ; _
ROM:000280C8 CA                          DCB 0xCA ; -
ROM:000280C9 EA                          DCB 0xEA ; Û
ROM:000280CA CC                          DCB 0xCC ; ¦
ROM:000280CB EC                          DCB 0xEC ; ý
ROM:000280CC 93                          DCB 0x93 ; ô
ROM:000280CD 94                          DCB 0x94 ; ö
ROM:000280CE 84                          DCB 0x84 ; ä
ROM:000280CF 5F                          DCB 0x5F ; _
ROM:000280D0 86                          DCB 0x86 ; å
ROM:000280D1 87                          DCB 0x87 ; ç
ROM:000280D2 95                          DCB 0x95 ; ò
ROM:000280D3 5F                          DCB 0x5F ; _
ROM:000280D4 5F                          DCB 0x5F ; _
ROM:000280D5 5F                          DCB 0x5F ; _
ROM:000280D6 85                          DCB 0x85 ; à
ROM:000280D7 5F                          DCB 0x5F ; _
ROM:000280D8 5F                          DCB 0x5F ; _
ROM:000280D9 5F                          DCB 0x5F ; _
ROM:000280DA 5F                          DCB 0x5F ; _
ROM:000280DB 5F                          DCB 0x5F ; _
ROM:000280DC 5F                          DCB 0x5F ; _
ROM:000280DD 5F                          DCB 0x5F ; _
ROM:000280DE 5F                          DCB 0x5F ; _
ROM:000280DF 5F                          DCB 0x5F ; _
ROM:000280E0 89                          DCB 0x89 ; ë
ROM:000280E1 5F                          DCB 0x5F ; _
ROM:000280E2 5F                          DCB 0x5F ; _
ROM:000280E3 5F                          DCB 0x5F ; _
ROM:000280E4 5F                          DCB 0x5F ; _
ROM:000280E5 5F                          DCB 0x5F ; _
ROM:000280E6 5F                          DCB 0x5F ; _
ROM:000280E7 5F                          DCB 0x5F ; _
ROM:000280E8 5F                          DCB 0x5F ; _
ROM:000280E9 C5                          DCB 0xC5 ; +
ROM:000280EA E5                          DCB 0xE5 ; Õ
ROM:000280EB 5F                          DCB 0x5F ; _
ROM:000280EC 5F                          DCB 0x5F ; _
ROM:000280ED BC                          DCB 0xBC ; +
ROM:000280EE BE                          DCB 0xBE ; ¥
ROM:000280EF 5F                          DCB 0x5F ; _
ROM:000280F0 5F                          DCB 0x5F ; _
ROM:000280F1 A3                          DCB 0xA3 ; ú
ROM:000280F2 B3                          DCB 0xB3 ; ¦
ROM:000280F3 D1                          DCB 0xD1 ; Ð
ROM:000280F4 F1                          DCB 0xF1 ; ±
ROM:000280F5 5F                          DCB 0x5F ; _
ROM:000280F6 5F                          DCB 0x5F ; _
ROM:000280F7 D2                          DCB 0xD2 ; Ê
ROM:000280F8 F2                          DCB 0xF2 ; =
ROM:000280F9 5F                          DCB 0x5F ; _
ROM:000280FA 5F                          DCB 0x5F ; _
ROM:000280FB 5F                          DCB 0x5F ; _
ROM:000280FC 5F                          DCB 0x5F ; _
ROM:000280FD 5F                          DCB 0x5F ; _
ROM:000280FE 5F                          DCB 0x5F ; _
ROM:000280FF 5F                          DCB 0x5F ; _
ROM:00028100 D5                          DCB 0xD5 ; i
ROM:00028101 F5                          DCB 0xF5 ; §
ROM:00028102 5F                          DCB 0x5F ; _
ROM:00028103 5F                          DCB 0x5F ; _
ROM:00028104 C0                          DCB 0xC0 ; +
ROM:00028105 E0                          DCB 0xE0 ; Ó
ROM:00028106 5F                          DCB 0x5F ; _
ROM:00028107 5F                          DCB 0x5F ; _
ROM:00028108 D8                          DCB 0xD8 ; Ï
ROM:00028109 F8                          DCB 0xF8 ; °
ROM:0002810A 8C                          DCB 0x8C ; î
ROM:0002810B 9C                          DCB 0x9C ; £
ROM:0002810C 5F                          DCB 0x5F ; _
ROM:0002810D 5F                          DCB 0x5F ; _
ROM:0002810E AA                          DCB 0xAA ; ¬
ROM:0002810F BA                          DCB 0xBA ; ¦
ROM:00028110 8A                          DCB 0x8A ; è
ROM:00028111 9A                          DCB 0x9A ; Ü
ROM:00028112 DE                          DCB 0xDE ; Ì
ROM:00028113 FE                          DCB 0xFE ; ¦
ROM:00028114 8D                          DCB 0x8D ; ì
ROM:00028115 9D                          DCB 0x9D ; Ø
ROM:00028116 5F                          DCB 0x5F ; _
ROM:00028117 5F                          DCB 0x5F ; _
ROM:00028118 5F                          DCB 0x5F ; _
ROM:00028119 5F                          DCB 0x5F ; _
ROM:0002811A 5F                          DCB 0x5F ; _
ROM:0002811B 5F                          DCB 0x5F ; _
ROM:0002811C 5F                          DCB 0x5F ; _
ROM:0002811D 5F                          DCB 0x5F ; _
ROM:0002811E D9                          DCB 0xD9 ; +
ROM:0002811F F9                          DCB 0xF9 ; ¨
ROM:00028120 DB                          DCB 0xDB ; ¦
ROM:00028121 FB                          DCB 0xFB ; ¹
ROM:00028122 5F                          DCB 0x5F ; _
ROM:00028123 5F                          DCB 0x5F ; _
ROM:00028124 5F                          DCB 0x5F ; _
ROM:00028125 5F                          DCB 0x5F ; _
ROM:00028126 5F                          DCB 0x5F ; _
ROM:00028127 5F                          DCB 0x5F ; _
ROM:00028128 5F                          DCB 0x5F ; _
ROM:00028129 8F                          DCB 0x8F ; Å
ROM:0002812A 9F                          DCB 0x9F ; ƒ
ROM:0002812B AF                          DCB 0xAF ; »
ROM:0002812C BF                          DCB 0xBF ; +
ROM:0002812D 8E                          DCB 0x8E ; Ä
ROM:0002812E 9E                          DCB 0x9E ; ×
ROM:0002812F 5F                          DCB 0x5F ; _
ROM:00028130 5F                          DCB 0x5F ; _
ROM:00028131 5F                          DCB 0x5F ; _
ROM:00028132 5F                          DCB 0x5F ; _
ROM:00028133 5F                          DCB 0x5F ; _
ROM:00028134 5F                          DCB 0x5F ; _
ROM:00028135 5F                          DCB 0x5F ; _
ROM:00028136 5F                          DCB 0x5F ; _
ROM:00028137 5F                          DCB 0x5F ; _
ROM:00028138 5F                          DCB 0x5F ; _
ROM:00028139 5F                          DCB 0x5F ; _
ROM:0002813A 5F                          DCB 0x5F ; _
ROM:0002813B 5F                          DCB 0x5F ; _
ROM:0002813C 5F                          DCB 0x5F ; _
ROM:0002813D 5F                          DCB 0x5F ; _
ROM:0002813E 5F                          DCB 0x5F ; _
ROM:0002813F 5F                          DCB 0x5F ; _
ROM:00028140 5F                          DCB 0x5F ; _
ROM:00028141 5F                          DCB 0x5F ; _
ROM:00028142 5F                          DCB 0x5F ; _
ROM:00028143 5F                          DCB 0x5F ; _
ROM:00028144 5F                          DCB 0x5F ; _
ROM:00028145 5F                          DCB 0x5F ; _
ROM:00028146 5F                          DCB 0x5F ; _
ROM:00028147 5F                          DCB 0x5F ; _
ROM:00028148 5F                          DCB 0x5F ; _
ROM:00028149 5F                          DCB 0x5F ; _
ROM:0002814A 5F                          DCB 0x5F ; _
ROM:0002814B 5F                          DCB 0x5F ; _
ROM:0002814C 5F                          DCB 0x5F ; _
ROM:0002814D 5F                          DCB 0x5F ; _
ROM:0002814E 5F                          DCB 0x5F ; _
ROM:0002814F 5F                          DCB 0x5F ; _
ROM:00028150 5F                          DCB 0x5F ; _
ROM:00028151 5F                          DCB 0x5F ; _
ROM:00028152 5F                          DCB 0x5F ; _
ROM:00028153 5F                          DCB 0x5F ; _
ROM:00028154 5F                          DCB 0x5F ; _
ROM:00028155 5F                          DCB 0x5F ; _
ROM:00028156 5F                          DCB 0x5F ; _
ROM:00028157 5F                          DCB 0x5F ; _
ROM:00028158 5F                          DCB 0x5F ; _
ROM:00028159 5F                          DCB 0x5F ; _
ROM:0002815A 5F                          DCB 0x5F ; _
ROM:0002815B 5F                          DCB 0x5F ; _
ROM:0002815C 80                          DCB 0x80 ; Ç
ROM:0002815D 5F                          DCB 0x5F ; _
ROM:0002815E 5F                          DCB 0x5F ; _
ROM:0002815F 5F                          DCB 0x5F ; _
ROM:00028160 5F                          DCB 0x5F ; _
ROM:00028161 5F                          DCB 0x5F ; _
ROM:00028162 5F                          DCB 0x5F ; _
ROM:00028163 5F                          DCB 0x5F ; _
ROM:00028164 5F                          DCB 0x5F ; _
ROM:00028165 5F                          DCB 0x5F ; _
ROM:00028166 5F                          DCB 0x5F ; _
ROM:00028167 5F                          DCB 0x5F ; _
ROM:00028168 5F                          DCB 0x5F ; _
ROM:00028169 5F                          DCB 0x5F ; _
ROM:0002816A 5F                          DCB 0x5F ; _
ROM:0002816B 5F                          DCB 0x5F ; _
ROM:0002816C 5F                          DCB 0x5F ; _
ROM:0002816D 5F                          DCB 0x5F ; _
ROM:0002816E 5F                          DCB 0x5F ; _
ROM:0002816F 5F                          DCB 0x5F ; _
ROM:00028170 5F                          DCB 0x5F ; _
ROM:00028171 5F                          DCB 0x5F ; _
ROM:00028172 5F                          DCB 0x5F ; _
ROM:00028173 5F                          DCB 0x5F ; _
ROM:00028174 5F                          DCB 0x5F ; _
ROM:00028175 5F                          DCB 0x5F ; _
ROM:00028176 5F                          DCB 0x5F ; _
ROM:00028177 A1                          DCB 0xA1 ; í
ROM:00028178 5F                          DCB 0x5F ; _
ROM:00028179 5F                          DCB 0x5F ; _
ROM:0002817A 5F                          DCB 0x5F ; _
ROM:0002817B 5F                          DCB 0x5F ; _
ROM:0002817C 5F                          DCB 0x5F ; _
ROM:0002817D 5F                          DCB 0x5F ; _
ROM:0002817E 5F                          DCB 0x5F ; _
ROM:0002817F 5F                          DCB 0x5F ; _
ROM:00028180 5F                          DCB 0x5F ; _
ROM:00028181 5F                          DCB 0x5F ; _
ROM:00028182 5F                          DCB 0x5F ; _
ROM:00028183 5F                          DCB 0x5F ; _
ROM:00028184 5F                          DCB 0x5F ; _
ROM:00028185 5F                          DCB 0x5F ; _
ROM:00028186 5F                          DCB 0x5F ; _
ROM:00028187 5F                          DCB 0x5F ; _
ROM:00028188 A2                          DCB 0xA2 ; ó
ROM:00028189 FF                          DCB 0xFF
ROM:0002818A 5F                          DCB 0x5F ; _
ROM:0002818B B2                          DCB 0xB2 ; ¦
ROM:0002818C 5F                          DCB 0x5F ; _
ROM:0002818D BD                          DCB 0xBD ; ¢
ROM:0002818E 5F                          DCB 0x5F ; _
ROM:0002818F 5F                          DCB 0x5F ; _
ROM:00028190 5F                          DCB 0x5F ; _
ROM:00028191 5F                          DCB 0x5F ; _
ROM:00028192 5F                          DCB 0x5F ; _
ROM:00028193 5F                          DCB 0x5F ; _
ROM:00028194 5F                          DCB 0x5F ; _
ROM:00028195 5F                          DCB 0x5F ; _
ROM:00028196 5F                          DCB 0x5F ; _
ROM:00028197 5F                          DCB 0x5F ; _
ROM:00028198 5F                          DCB 0x5F ; _
ROM:00028199 5F                          DCB 0x5F ; _
ROM:0002819A 5F                          DCB 0x5F ; _
ROM:0002819B 5F                          DCB 0x5F ; _
ROM:0002819C 5F                          DCB 0x5F ; _
ROM:0002819D 5F                          DCB 0x5F ; _
ROM:0002819E 5F                          DCB 0x5F ; _
ROM:0002819F 5F                          DCB 0x5F ; _
ROM:000281A0 5F                          DCB 0x5F ; _
ROM:000281A1 5F                          DCB 0x5F ; _
ROM:000281A2 5F                          DCB 0x5F ; _
ROM:000281A3 5F                          DCB 0x5F ; _
ROM:000281A4 5F                          DCB 0x5F ; _
ROM:000281A5 5F                          DCB 0x5F ; _
ROM:000281A6 5F                          DCB 0x5F ; _
ROM:000281A7 5F                          DCB 0x5F ; _
ROM:000281A8 5F                          DCB 0x5F ; _
ROM:000281A9 5F                          DCB 0x5F ; _
ROM:000281AA 5F                          DCB 0x5F ; _
ROM:000281AB 5F                          DCB 0x5F ; _
ROM:000281AC 5F                          DCB 0x5F ; _
ROM:000281AD 5F                          DCB 0x5F ; _
ROM:000281AE 5F                          DCB 0x5F ; _

Como se pode ver, essa rotina usa uma tabela com 256 bytes (acho que tem relação com os caracteres, mas eu nem cheguei a procurar entender com detalhes o funcionamento disso).

c-) Agora é necessário encontrar espaço para colocar a rotina e a tabela. Encontrei 2 áreas de erros no DV256K, e coloquei a rotina em uma, e a tabela na outra. Para encontrar as rotinas de erros, de uma olhada nesses 2 trechos do DV256K para depois achar os equivalentes no DV397H: 270F6 e 298B4.

d-) Observação: Usar o BCalc, para calcular o salto entre os 2 pontos que chamarão a rotina e o local que você decidiu colocá-la.

e-) Não é necessário mexer em nehum filtro do ARM, nem alterar nehuma fonte.

   
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 13, 2009, 12:03:50 am
e-) Não é necessário mexer em nehum filtro do ARM, nem alterar nehuma fonte.

Dei uma olhada nas fontes do DV397H. Se a fonte usada pelo FileBrowser for realmente a 14, você tem razão: ela tem que ser trocada. Sugiro que você a troque pela fonte 1 do DV256K (essa fonte é CP-1252).
Editado: Eu esqueçi de dizer que eu eliminei os caracteres acima de 256 dessa fonte (não sei se isso é realmente necessário: fiz essa alteração no início da investigação e depois deixei assim mesmo...).
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 13, 2009, 02:35:53 pm
e-) Não é necessário mexer em nehum filtro do ARM, nem alterar nehuma fonte.

Dei uma olhada nas fontes do DV397H. Se a fonte usada pelo FileBrowser for realmente a 14, você tem razão: ela tem que ser trocada. Sugiro que você a troque pela fonte 1 do DV256K (essa fonte é CP-1252).
Editado: Eu esqueçi de dizer que eu eliminei os caracteres acima de 256 dessa fonte (não sei se isso é realmente necessário: fiz essa alteração no início da investigação e depois deixei assim mesmo...).

É a fonte 14 sim. Eu troquei a 14 pela 1 e ao menos as tags mp3 passaram a ser acentuadas, sem necessidade de implementar a rotina ou modificar os 2 filtros do 8032. Os nomes dos arquivos (que são da mesma fonte, pois eu já troquei por uma Arial 23 só para testar) continuaram sem acentos. Bom, ainda não implementei a rotina, mas acabei de localizar os 2 pontos de chamada. Vou implementar agora.

Nota: Nos 2 filtros do 8032, alterei a instrução MOV R3, #5F para que fosse colocado outro caractere no lugar do "_", apenas para testar. Coloquei "a". Mas os nomes dos arquivos continuaram com "_". Estou achando que apesar de existirem os filtros no código 8032, eles não são usados da mesma forma que no DV256K. Quando implementar a rotina posto as novidades.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 13, 2009, 10:13:20 pm
Consegui! :yahoo!: Estou enviando um novo firmware modificado.

A implementação da rotina não resolveu a acentuação no filebrowser, o que era esperado após os testes anteriores. Novamente havia algo de diferente no DV397H (e novamente estava no ARM). Com a troca da fonte 14 pela fonte 1, os acentos apareceram nas tags, mas não nos nomes dos arquivos. Como é a mesma fonte, só poderia ser um filtro para o filebrowser. Procurando no ARM, descobri um filtro um pouco diferente do normal. Ele filtra caracteres abaixo de #18 (ainda não tenho certeza) e acima de #80 (certeza absoluta). Então alterei o #80 para #FE (não precisamos de caracteres abaixo de #20, pois são de controle, e nem do 255).

Código: [Selecionar]
ROM:0002C53E             ; =============== S U B R O U T I N E =======================================
ROM:0002C53E
ROM:0002C53E
ROM:0002C53E             sub_2C53E                               ; CODE XREF: sub_297F0+38E_p
ROM:0002C53E                                                     ; sub_297F0+41C_p ...
ROM:0002C53E F8 B5                       PUSH    {R3-R7,LR}
ROM:0002C540 0C 1C                       ADDS    R4, R1, #0
ROM:0002C542 8D 49                       LDR     R1, =SHAREMEM_ADDR
ROM:0002C544 15 1C                       ADDS    R5, R2, #0
ROM:0002C546 5D 22                       MOVS    R2, #0x5D ; ']'
ROM:0002C548 09 68                       LDR     R1, [R1]
ROM:0002C54A 92 01                       LSLS    R2, R2, #6
ROM:0002C54C 8A 18                       ADDS    R2, R1, R2
ROM:0002C54E D2 78                       LDRB    R2, [R2,#3]
ROM:0002C550 00 2A                       CMP     R2, #0
ROM:0002C552 32 D1                       BNE     loc_2C5BA
ROM:0002C554 89 4A                       LDR     R2, =off_1750
ROM:0002C556 8A 18                       ADDS    R2, R1, R2
ROM:0002C558 93 7A                       LDRB    R3, [R2,#0xA]
ROM:0002C55A FF 2B                       CMP     R3, #0xFF
ROM:0002C55C 65 D0                       BEQ     loc_2C62A
ROM:0002C55E 92 7A                       LDRB    R2, [R2,#0xA]
ROM:0002C560 87 4E                       LDR     R6, =unk_9AE61
ROM:0002C562 13 2A                       CMP     R2, #0x13
ROM:0002C564 32 70                       STRB    R2, [R6]
ROM:0002C566 01 D0                       BEQ     loc_2C56C
ROM:0002C568 18 2A                       CMP     R2, #0x18       ; ?filtro caracteres abaixo de #18 (duvida)??
ROM:0002C56A 0B D1                       BNE     loc_2C584
ROM:0002C56C
ROM:0002C56C             loc_2C56C                               ; CODE XREF: sub_2C53E+28_j
ROM:0002C56C 83 4B                       LDR     R3, =off_1750
ROM:0002C56E 20 33                       ADDS    R3, #0x20 ; ' '
ROM:0002C570 C9 18                       ADDS    R1, R1, R3
ROM:0002C572 89 7B                       LDRB    R1, [R1,#0xE]
ROM:0002C574 01 29                       CMP     R1, #1
ROM:0002C576 05 D1                       BNE     loc_2C584
ROM:0002C578 FA 28                       CMP     R0, #0xFA ; '·'
ROM:0002C57A 01 D2                       BCS     loc_2C580
ROM:0002C57C
ROM:0002C57C             loc_2C57C                               ; CODE XREF: sub_2C53E+4C_j
ROM:0002C57C 13 1C                       ADDS    R3, R2, #0
ROM:0002C57E 11 E0                       B       loc_2C5A4
ROM:0002C580             ; ---------------------------------------------------------------------------
ROM:0002C580
ROM:0002C580             loc_2C580                               ; CODE XREF: sub_2C53E+3C_j
ROM:0002C580 53 1C                       ADDS    R3, R2, #1
ROM:0002C582 14 E0                       B       loc_2C5AE
ROM:0002C584             ; ---------------------------------------------------------------------------
ROM:0002C584
ROM:0002C584             loc_2C584                               ; CODE XREF: sub_2C53E+2C_j
ROM:0002C584                                                     ; sub_2C53E+38_j
ROM:0002C584 01 0A                       LSRS    R1, R0, #8
ROM:0002C586 03 D1                       BNE     loc_2C590
ROM:0002C588 80 28                       CMP     R0, #0x80 ; 'Ç' ; filtro caracteres acima de #80 (certeza)
ROM:0002C58A F7 D3                       BCC     loc_2C57C
ROM:0002C58C 13 1C                       ADDS    R3, R2, #0
ROM:0002C58E 7C E0                       B       loc_2C68A
..................................
..................................   continua
..................................
Substituindo o CMP R0, #0x80 por CMP R0, #0xFE, o problema foi resolvido (além de ter que substituir a fonte 14). Não foi necessário implementar a rotina de conversão e nem modificar nenhum filtro no 8032.

O novo firmware que envio inclui:

A seleção de fontes segue a seguinte correspondência:
1. Arial NB    --->  Arial Narrow Bold 23
2. Arial N      --->  Arial Narrow 23
3. Impact     --->  Impact 21
4. CourierNB  --->  Courier New Bold 21
5. CourierNB  --->  Courier New Bold 21
6. Verdana    --->  Verdana 22
7. Original     --->  Original do DV397H

As fontes são todas cp1252 (suporte às línguas européias ocidentais de alfabeto latino) e substituem as demais codificações (no firmware original, ao apertar por 3 segundos a tecla "subtitle", muda-se a codificação das legendas). Portanto, se você usa legendas em outras codificações (alfabeto cirílico, grego, hebreu, árabe etc) não deve atualizar o firmware, pois perderá o suporte a esses sistemas.

A fonte Courier New Bold 21 aparece duas vezes pois foi incluída no lugar da fonte cp1255, a qual possui dois subsistemas (1255-1 e 1255-2 usam a mesma fonte).

O que ainda pretendo estudar para incluir no futuro:
1. Incluir a seleção de cor da legenda no setup.
2. Aumentar o campo que informa o nome da fonte, para poder apresentar o nome completo da fonte.
3. Excluir a chamada para cp1255-2, o que excluiria uma das duas fontes Courier repetidas.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 13, 2009, 11:07:03 pm
Consegui! :yahoo!: Estou enviando um novo firmware modificado.

Parabéns de novo rictad!!  :clapping:
Só por curiosidade: uma coisa que descobri quando tentei implementar caracteres acentuados no FileBrowser foi que isso podia ser feito pelo menos por 2 modos diferentes: o FallenAngel implentou para o LG9xxx sem a Rotina de Conversão (provavelmente só alterando filtros), enquanto o xypro (seguindo  o br0max) chegou ao mesmo resultado usando a Rotina de Conversão e o filtro do 8032...
 
O que ainda pretendo estudar para incluir no futuro:
1. Incluir a seleção de cor da legenda no setup.
2. Aumentar o campo que informa o nome da fonte, para poder apresentar o nome completo da fonte.
3. Excluir a chamada para cp1255-2, o que excluiria uma das duas fontes Courier repetidas.

1. Já sei como fazer isso (todas as etapas). Só não fiz ainda (e enviei) por preguiça...  :-[ Pretendo enviar um pequeno roteiro mostrando como fazer isso nos LGs.
2. Não sei como fazer (não pesquisei).
3. Não sei, mas gostaria de saber (não pesquisei o suficiente).

Gostaria de fazer agora uma lista do que eu descobri que PODE ser implementado nos LGs (já que já foi implementado nos LGs8xxx e 9xxx, os quais tem estrutura com várias semelhanças com os LGs mais recentes):
1. Seleção da Posição (vertical) das legendas pelo menu.
2. Seleção do Tipo de Alinhamento (vertical) pelo menu.
3. Possibildade de reconhecimento de legendas externas com nomes diferentes dos arquivos .avi.
4. Possibilidade de seleção da Palete de cores (RGB ou YUV) para legendas .idx .sub
5. Implementação de TEMPO RESTANTE.
6. Quebra de linhas inteligente (que respeita os espaços entre as palavras), e balanceada (com a linha superior com tamanho o mais próximo possível da linha inferior).

É possível identificar os trechos dos Firmwares br0max e xypro responsáveis por cada uma dessas modificações. Porém, essa é uma tarefa muito demorada e que exige paciência. Deve-se fazer estudos comparativos entre as várias versões desses firmwares, e também com os originais. Não consegui encontrar todas as versões (as mais antigas sumiram). Além disso, uma versão mais recente de firmware alternativo as vezes é baseada numa versão mais recente de firmware original, impedindo que se compare diretamente uma versão recente com uma antiga. Outras peculiaridades: o xypro usa o ARM modificado do br0max (LG8xxx) para o seu firmware alternativo LG9xxx, e mantém o 8032 do LG9xxx.
Título: Re: Firmware do LG DV397H
Enviado por: sedm em Fevereiro 14, 2009, 01:42:20 pm
Rictad,

Atualizei com seu firmware e correu tudo bem, as legendas melhoraram,
os únicos problemas que eu percebi, foram que as legendas do primeiro segundo do filme não aparecem e quando a legenda tem uma linha somente, ela fica na posição que ela ficaria se tivesse duas linhas, o normal é ela descer para a segunda linha, mas acho que esses problemas já tinham no firmware original.

Também achei que as legendas ficaram um pouco altas na tela e que poderiam ser maiores ainda, fonte 24 ou 25 e com o outline maior.

Mesmo assim já está ótimo, muito obrigado.

Sérgio
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 14, 2009, 02:46:39 pm
Rictad,

Atualizei com seu firmware e correu tudo bem, as legendas melhoraram,
os únicos problemas que eu percebi, foram que as legendas do primeiro segundo do filme não aparecem e quando a legenda tem uma linha somente, ela fica na posição que ela ficaria se tivesse duas linhas, o normal é ela descer para a segunda linha, mas acho que esses problemas já tinham no firmware original.

É verdade, isso já acontecia antes. O problema da primeira linha não ficar mais para baixo é devido ao tipo de alinhamento. Estamos tentando mudar isso :). Como zeurt escreveu acima, a seleção do alinhamento vertical pelo menu seria ideal.


Também achei que as legendas ficaram um pouco altas na tela e que poderiam ser maiores ainda, fonte 24 ou 25 e com o outline maior.

A janela de legendas teve que ser aumentada para poder comportar o novo espaçamento entre linhas mantendo a quantidade de linhas em 4. Isso é normal. Mas a sensação de legendas mais altas se dá devido ao alinhamento citado anteriormente, que joga as primeiras linhas mais para cima do que para baixo. Se eu conseguir arrumar isso, a legenda ficará alinhada de baixo para cima.

zeurt, consegui criar o seguinte submenu dentro do menu display:

  1. SRT@Subtitle@Color
     00 01A6 0014 002B 04 00 01 FFFEE2 0C3D - ROM:2E4D
    1. White
       0020 00 - ROM:FED3
 => 2. Gray
       0021 01 - ROM:FED6
    3. Cyan
       0022 02 - ROM:FED9
    4. Yellow
       0023 03 - ROM:FEDC
    5. Gold
       0024 04 - ROM:FEDF

Os valores ainda são provisórios (bem como os nomes das cores). Mas como consigo saber ou determinar em qual endereço de memória o valor selecionado foi capturado? Parece que no formato de menus usado nos LGs essa informação não fica clara.

Das mudanças que você pretende fazer, a mais importante que eu acho no momento é a do alinhamento vertical. Isso ia ajudar muito na estética das legendas.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 14, 2009, 10:00:24 pm
Pronto! ;D Consegui implementar as cores de legenda selecionáveis no setup! Também deixei a opção de ligar ou desligar a cor de background. Vou agora tentar fazer pequenos ajustes e acrescentar as cores também ao menu em português. Depois posto a modificação mais completa, bem como as informações "técnicas".
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 14, 2009, 10:29:35 pm
Que é isso rictad!!  :o Você está muito rápido... Mal deu tempo de fazer um roteiro sobre como fazer isso e você já terminou o  serviço...  ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 15, 2009, 04:22:38 pm
Que é isso rictad!!  :o Você está muito rápido... Mal deu tempo de fazer um roteiro sobre como fazer isso e você já terminou o  serviço...  ;D
Estou estudando muito!  :laugh:

Bom, também acabei de implementar o alinhamento vertical no setup! Legendas altas corrigidas! O problema do alinhamento vertical que não podia ser alterado corretamente era devido àquela rotina retalhada no ARM. O alinhamento inferior usava o valor correspondente ao que seria o espaçamento entre linhas (que deveria ser repassado pelo 8032). Como isso foi retirado do firmware, o valor usado podia ser qualquer coisa que estivesse carregado no registrador referente. Eu corrigi esse bug incluindo um valor fixo, assim pude selecionar o alinhamento vertical inferior, o que acabou com a sensação de legendas altas! Depois eu posto mais informações. Vamos ao novo firmware.

Esse novo firmware (versão 1.3) que envio inclui:

Nota 1: As novas opções também foram incluídas em língua portuguesa (nas demais línguas, permanecem em inglês). Se o alinhamento vertical for alterado durante a execução de um filme, é necessário parar e reiniciar a exibição para que tenha efeito, pois a rotina que aplica o alinhamento só é executada uma vez. As demais opções são aplicadas em tempo real.

Nota 2: Eu tive que excluir a opção de língua vietnamita no menu. Eu aumentei o número de palavras na língua padrão (de 771 para 786) e essa era uma das línguas que precisava aumentar o número de palavras também pois estava dando erro no menu (travamento) com as novas opções (as outras foram o espanhol e o italiano, mas corrigi com o MTKLangEditor). Como o MTKLangEditor não consegue manter os caracteres vietnamitas, tive que excluí-la. Se no futuro conseguir editar essa língua sem corrompê-la, volto a incluí-la.

Mais tarde posto as informações técnicas.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 15, 2009, 05:31:06 pm
Realmente, ótimo trabalho, rictad!!  :clapping:

Estou curioso em relação a 3 pontos:

1- O DV397H também apresenta o Bug de Centralização da Primeira Linha de Legenda (deslocada em relação as outras linhas), como ocorre no DV256K (como descrevi aqui (http://ryan.com.br/smf/index.php?topic=232.msg9175006#msg9175006))?

2- Como é a quebra de linha do DV397H? Seria igual a do DV256K, ou seja, não respeitando os espaços entre as palavras, e fazendo uma reformatação do tipo em que a linha de cima fica maior que a linha de baixo (mais ou menos o dobro)?

3- Com o seu método de exibir caracteres especiais no FileBrowser e nas ID3 Tags, como ficou a linha que exibe o arquivo corrente, tipo: Oswaldo Montenegro/Millenium/20- Drops de Hortel_.mp3 ? Exibe os caracteres acentuados nessa linha, ou não? No DV256K não consegui consertar isso ainda...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 15, 2009, 06:20:24 pm
1- O DV397H também apresenta o Bug de Centralização da Primeira Linha de Legenda (deslocada em relação as outras linhas), como ocorre no DV256K (como descrevi aqui (http://ryan.com.br/smf/index.php?topic=232.msg9175006#msg9175006))?
Não, linhas iguais ficam totalmente alinhadas horizontalmente. Exemplo:

Citar
Isso é um teste!
Isso é um teste!
Isso é um teste!
Isso é um teste!

2- Como é a quebra de linha do DV397H? Seria igual a do DV256K, ou seja, não respeitando os espaços entre as palavras, e fazendo uma reformatação do tipo em que a linha de cima fica maior que a linha de baixo (mais ou menos o dobro)?
A quebra de linha é "semi-inteligente". Ele não quebra as palavras no meio. Divide a frase nos espaços entre as palavras. Portanto, não há problemas de hifenização. Mas como ele deixa a maior quantidade possível de palavras na primeira linha, ela tende a ser maior que a segunda. Por exemplo, a frase "Certamente certamente certamente certamente" fica assim:

Citar
Certamente certamente certamente
certamente

3- Com o seu método de exibir caracteres especiais no FileBrowser e nas ID3 Tags, como ficou a linha que exibe o arquivo corrente, tipo: Oswaldo Montenegro/Millenium/20- Drops de Hortel_.mp3 ? Exibe os caracteres acentuados nessa linha, ou não? No DV256K não consegui consertar isso ainda...
Sim, exibe. Todas as informações do arquivo e das tags são mostradas com acentos.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 15, 2009, 06:33:16 pm
São ótimas essas informações: é muito raro achar um DVD/DivX player que apresente a quebra respeitando os espaços entre as linhas (já no firmware original). Também fico satisfeito em saber que está tudo OK com a primeira linha.
Finalmente, vou procurar achar no DV256K o filtro do ARM que você modificou no DV397H.
Título: Re: Firmware do LG DV397H
Enviado por: cvalmeida em Fevereiro 15, 2009, 10:41:02 pm
Pessoal,

Eu só posso mesmo agradecer demais a vocês. A última alteração ficou fantástica.

Parabéns!
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Fevereiro 16, 2009, 03:05:07 am
Aviso do moderador:

Agora que eu falei no blog (http://jefferson-ryan.blogspot.com/2009/02/mais-um-firmware-alternativo-para-o-lg.html) sobre o firmware de Rictad o tráfego aqui deve aumentar de novo. Quero lembrar a todos que este tópico é da área de desenvolvimento de firmware e não deve ser tumultuado com questões que não tenham a ver com programação.

É claro que o feedback é necessário e bem vindo. Digam se funcionou, o que acharam, etc. Mas também lembro que a forma mais duradoura de agradecer ao Rictad é clicar no link "[Bom]" sob o seu nickname e deixar uma mensagem positiva.

Edit: Os últimos posts de sedm e cvalmeida são bons exemplos de "feedback necessário e bem vindo".

Título: Re: Firmware do LG DV397H
Enviado por: alxfrmmng em Fevereiro 17, 2009, 04:20:11 pm
 :clapping: Srs ! Muito obrigado !!!! Esta última atualização está EXCELENTE...... parodiando aquele comercial de cartão de crédito... "Tem coisas que o dinheiro não compra" .... Só um forum como este proporciona...

Abs     Alexandre
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 17, 2009, 08:04:00 pm
Obrigado, pessoal!

Bom, consegui fazer com que as mudanças de alinhamento sejam aplicadas em tempo real, adicionei opção para o alinhamento horizontal também (esquerda e centro) e estou a um passo de adicionar uma opção para posicionamento vertical da legenda. Mas estou esbarrando no problema dos menus ocultos. Antes de mostrar o que está acontecendo, vamos às explicações técnicas do que eu já fiz até agora:

Menus

O menu Outros no firmware original era assim (visto com o MTKRemaker, dentro de "code 8032", "page 2"):

Citar
5. OTHERS
   010B 03 FF2D2A - ROM:2D36
  1. PBC
     00 0075 0023 003D 01 00 00 FF2CAF 0C3D - ROM:2CB5
 => 1. On
       0040 00 - ROM:2CA9
    2. Off
       0041 01 - ROM:2CAC

  2. B.L.E.
     00 00D1 0010 0000 01 00 01 FF2CCA 0C6D - ROM:2CD0
    1. On
       0040 00 - ROM:2CC4
 => 2. Off
       0041 01 - ROM:2CC7

  3. DivX(R)@VOD
     01 0187 0000 0000 00 00 00 000000 0000 - ROM:2D1B

  4. Score
     00 01C0 0055 0000 01 00 00 FF2BEF 0A39 - ROM:2BF5
 => 1. On
       0040 00 - ROM:2BE9
    2. Off
       0041 01 - ROM:2BEC

A estrutura de menus está no banco 2. Esses menus são cansativos para trabalhar e a estrutura é basicamente a já explicada pelo Ryan no tópico log de descobertas MT13x9, mas com algumas peculiaridades (acho que de vários LGs). Na segunda linha, temos:
010B 03 FF2D2A - ROM:2D36 - isso quer dizer que no offset #2D36 (#22D36) temos o seguinte código: 01 0B 03 FF 2D 2A, sendo que 010B é o código hexa da string "OTHERS", que pode ser visto em Languages (ou com o MTKLangEditor), 03 é a quantidade de submenus, começando em 0 (então serão aguardados 4 submenus) e FF 2D 2A é o ponteiro dos ponteiros dos submenus.

Como são 4 submenus, então teremos quatro ponteiros em #22D2A: FF 2C B5 FF 2C D0 FF 2D 1B FF 2B F5. Eles apontam os endereços para ler as configurações de cada submenu. Destaquei o primeiro, FF 2C B5, pois vou pegá-lo como exemplo. Como podemos ver pelo próprio MTKRemaker, em #22CB5
 teremos:
00 0075 0023 003D 01 00 00 FF2CAF 0C3D

O primeiro byte ainda não sei o que representa, mas nos submenus normais é sempre 00 (01 no especial DviX Vod e 02 nos travados de senha e código de área). 0075 novamente é o código hexa da string que será o "nome" do submenu, no caso PBC, 0023 é o endereço da EEPROM que guardará valor de retorno da opção escolhida (vai de #0000 a #007F), 01 é a quantidade de opções do submenu, começando em 0 (no caso, temos 2 opções), 00 é o valor padrão que será carregado na EEPROM (corresponde ao valor retornado por uma das opções, então é o que indica a opção padrão) e FF2CAF é o ponteiro para os ponteiros (acredite, ainda tem mais!) das opções finais. Pelas opções mostradas no texto do MTKRemaker, teremos em #22CAF dois ponteiros (são duas opções, como esperado):
FF 2C A9 FF 2C AC
e em  #22CA9, por exemplo, teremos 0040 00, no que 0040 é o código hexa da string "nome" da opção ("On"), e 00 é valor repassado ao endereço 23 da EEPROM se a opção for escolhida. Como esse valor é o padrão, essa é a opção padrão.

Para fazer as modificações, usei um pouco do espaço que havia no final da estrutura de menus e, principalmente, o espaço no final do bloco 2. O menu Outros ficou assim:

Citar
5. OTHERS
   010B 07 FF2E3E - ROM:2D36
  1. MPEG Subtitle Color
     00 01D7 0013 0000 09 00 05 FFFEF1 0C3D - ROM:2E56
    1. White
       01D9 0C - ROM:FED3
    2. Light Gray
       01DA 01 - ROM:FED6
    3. Gray
       01DB 02 - ROM:FED9
 => 4. Yellow
       01DC 05 - ROM:FEDC
    5. Gold
       01DD 08 - ROM:FEDF
    6. Sandy Brown
       01DE 09 - ROM:FEE2
    7. Light Cyan
       01DF 0D - ROM:FEE5
    8. Sky Blue
       01E0 0E - ROM:FEE8
    9. Teal
       01E1 0F - ROM:FEEB
    10. Inverse White
       01E2 0B - ROM:FEEE

  2. MPEG Subtitle BGR
     00 01D8 0012 0000 01 00 00 FFFF15 0C3D - ROM:FF1B
    1. On
       0040 06 - ROM:FF0F
 => 2. Off
       0041 00 - ROM:FF12

  3. DivX(R)@VOD
     01 0187 0000 0000 00 00 00 000000 0000 - ROM:2D1B

  4. MPEG Subtitle V-Alg
     00 01E3 0011 0000 01 00 09 FFFF30 0C3D - ROM:FF36
    1. Middle-top
       01E4 08 - ROM:FF2A
 => 2. Bottom
       01E5 09 - ROM:FF2D

  5. MPEG Subtitle H-Alg
     00 01E6 001B 0000 01 00 81 FFFF4E 0C3D - ROM:FF57
    1. Left
       01E7 82 - ROM:FF45
 => 2. Center
       01E8 81 - ROM:FF48

  6. PBC
     00 0075 0023 003D 01 00 00 FF2CAF 0C3D - ROM:2CB5
 => 1. On
       0040 00 - ROM:2CA9
    2. Off
       0041 01 - ROM:2CAC

  7. B.L.E.
     00 00D1 0010 0000 01 00 01 FF2CCA 0C6D - ROM:2CD0
    1. On
       0040 00 - ROM:2CC4
 => 2. Off
       0041 01 - ROM:2CC7

  8. Score
     00 01C0 0055 0000 01 00 00 FF2BEF 0A39 - ROM:2BF5
 => 1. On
       0040 00 - ROM:2BE9
    2. Off
       0041 01 - ROM:2BEC

A principal mudança na estrutura antiga é indicar a nova quantidade de submenus (07, indicando 8 submenus) e um novo local (#22E3E, final da estrutura de menus) para os ponteiros dos submenus (como aumentaram de 4 para 8, necessitei de um espaço maior para a nova cadeia de ponteiros). Desses 8 ponteiros, 4 continuaram apontando para os endereços anteriores, pois não mudei a estrutura antiga, e 4 passam apontar para novos submenus criados no final do bloco 2, como o das cores das legendas (#2FEF1). E aí vem a trabalheira de criar os próprios submenus, criar novas strings com o MTKLangEditor etc ;D.

Rotinas

Agora vejamos as rotinas modificadas. Como o zeurt ensinou, existem 5 rotinas SubStyle, sendo que a primeira, e somente a primeira, é uma mistura com um tipo de SetMepg4SubtitleParams. O motivo de várias SubStyle o Ryan já explicou em outro tópico. É devido ao fato de que o estilo das legendas é aplicado não só quando se inicia o filme, mas também quando damos um stop e depois continuamos o filme de onde parou ou quando entramos no setup e voltamos ao filme. Em cada caso, uma rotina SubStyle diferente será chamada. Isso só teria uso se quiséssemos aplicar estilos diferentes em cada caso. Mas, no geral, é um desperdício de código. Bastava uma única rotina e mais 4 chamadas para ela (caso a chamada fosse em outro banco, seria só usar o Bank Switching ensinado pelo Ryan). Já a parte modificada de SetMepg4SubtitleParams, como está somente na primeira SubStyle, só é executada uma vez. Por isso quando alterávamos o alinhamento vertical no setup do firmware modificado, a alteração só era aplicada caso reiniciássemos o filme. Mas isso não acontece mais. Eu coloquei um Call Bank Switch no final de cada SubStyle para a SetMepg4SubtitleParams modificada, o que faz com que o alinhamento vertical (bem como as futuras opções alinhamento horizontal e ṕosição das legendas, que pretendo incluir no próximo firmware) seja aplicado imediatamente!  ;D.

Assim ficou a primeira SubStyle (que é misturada com SetMepg4SubtitleParams):

Código: [Selecionar]
...............
...............
...............
B2:DA42             B2_DA42:                                ; CODE XREF: BankSw_481_B2_DA33+9_j
B2:DA42 7F 02                       mov     R7, #2
B2:DA44 12 05 AD                    lcall   B2_BS_118_B5_B085
B2:DA47 D2 73                       setb    RAM_2E.3
B2:DA49 7F 09                       mov     R7, #9
B2:DA4B 12 05 C5                    lcall   B2_BS_122_B5_5E3E
B2:DA4E 7F 09                       mov     R7, #9
B2:DA50 12 05 CB                    lcall   B2_BS_123_B5_49DF
B2:DA53 12 FF 2A                    lcall   apply_subtitle_color_and_background
B2:DA56 00                          nop
B2:DA57 00                          nop
B2:DA58 00                          nop
B2:DA59 00                          nop
B2:DA5A 00                          nop
B2:DA5B 00                          nop
B2:DA5C 00                          nop
B2:DA5D 00                          nop
B2:DA5E 00                          nop
B2:DA5F FD                          mov     R5, A
B2:DA60 7F 09                       mov     R7, #9
B2:DA62 12 05 E9                    lcall   B2_BS_128_B5_B84C
B2:DA65 E4                          clr     A             ; inicio SetMepg4SubtitleParams
B2:DA66 90 FB 43                    mov     DPTR, #XRAM_FB43
B2:DA69 F0                          movx    @DPTR, A
B2:DA6A A3                          inc     DPTR
B2:DA6B F0                          movx    @DPTR, A
B2:DA6C 90 FB 45                    mov     DPTR, #XRAM_FB45
B2:DA6F F0                          movx    @DPTR, A
B2:DA70 A3                          inc     DPTR
B2:DA71 F0                          movx    @DPTR, A
B2:DA72 90 FB 49                    mov     DPTR, #XRAM_FB49
B2:DA75 74 02                       mov     A, #2
B2:DA77 F0                          movx    @DPTR, A
B2:DA78 A3                          inc     DPTR
B2:DA79 74 BB                       mov     A, #0xBB ; '¬'
B2:DA7B F0                          movx    @DPTR, A
B2:DA7C 90 FB 4D                    mov     DPTR, #XRAM_FB4D
B2:DA7F E4                          clr     A
B2:DA80 F0                          movx    @DPTR, A
B2:DA81 A3                          inc     DPTR
B2:DA82 74 AF                       mov     A, #0xAF ; '»'
B2:DA84 F0                          movx    @DPTR, A
B2:DA85 D2 78                       setb    RAM_2F.0
B2:DA87 E4                          clr     A
B2:DA88 90 FC 03                    mov     DPTR, #XRAM_FC03
B2:DA8B F0                          movx    @DPTR, A
B2:DA8C FB                          mov     R3, A
B2:DA8D FD                          mov     R5, A
B2:DA8E 7F 09                       mov     R7, #9
B2:DA90 12 05 D7                    lcall   B2_BS_125_B5_B94D
B2:DA93 E4                          clr     A
B2:DA94 FD                          mov     R5, A
B2:DA95 7F 09                       mov     R7, #9
B2:DA97 12 05 D1                    lcall   B2_BS_124_B5_CF6B
B2:DA9A 7F 09                       mov     R7, #9
B2:DA9C 12 05 DD                    lcall   B2_BS_126_B5_C2C6
B2:DA9F 90 FB 43                    mov     DPTR, #XRAM_FB43
B2:DAA2 E4                          clr     A
B2:DAA3 F0                          movx    @DPTR, A
B2:DAA4 A3                          inc     DPTR
B2:DAA5 74 32                       mov     A, #0x32 ; '2'
B2:DAA7 F0                          movx    @DPTR, A
B2:DAA8 90 FB 45                    mov     DPTR, #XRAM_FB45
B2:DAAB E4                          clr     A
B2:DAAC F0                          movx    @DPTR, A
B2:DAAD A3                          inc     DPTR
B2:DAAE 74 04                       mov     A, #4
B2:DAB0 F0                          movx    @DPTR, A
B2:DAB1 90 FB 49                    mov     DPTR, #XRAM_FB49
B2:DAB4 74 02                       mov     A, #2
B2:DAB6 F0                          movx    @DPTR, A
B2:DAB7 A3                          inc     DPTR
B2:DAB8 74 A8                       mov     A, #0xA8 ; '¿'
B2:DABA F0                          movx    @DPTR, A
B2:DABB 90 FB 4D                    mov     DPTR, #XRAM_FB4D
B2:DABE E4                          clr     A
B2:DABF F0                          movx    @DPTR, A
B2:DAC0 A3                          inc     DPTR
B2:DAC1 74 B0                       mov     A, #0xB0 ; '?'
B2:DAC3 F0                          movx    @DPTR, A
B2:DAC4 12 FF 69                    lcall   apply_subtitle_alignment
B2:DAC7 00                          nop
B2:DAC8 7F 09                       mov     R7, #9
B2:DACA 12 0D 45                    lcall   B2_BS_442_B3_C274
...................
...................
...................

Rotinas apply_subtitle_color_and_background e apply_subtitle_alignment criadas por mim. Elas usam a técnica ensinada pelo Ryan para ler o conteúdo da EEPROM (que guarda as opções do menu). Vejam que quando se seleciona cor preta para a fonte, o outline é alterado para branco (daí eu ter chamado a cor de branco inverso):

Código: [Selecionar]
B2:FF66             ; =============== S U B R O U T I N E =======================================
B2:FF66
B2:FF66
B2:FF66             apply_subtitle_color_and_background:    ; CODE XREF: BankSw_481_B2_DA33+20_p
B2:FF66 7F 13                       mov     R7, #0x13
B2:FF68 7E 00                       mov     R6, #0
B2:FF6A 12 04 03                    lcall   B2_BS_47_B1_F213 ; le endereco #13 (cor da fonte) da eeprom
B2:FF6D EF                          mov     A, R7
B2:FF6E 64 0B                       xrl     A, #0xB         ; é cor preta?
B2:FF70 70 04                       jnz     black_outline   ; se nao, va para contorno preto
B2:FF72 74 0C                       mov     A, #0xC         ; se sim, aplica contorno branco
B2:FF74 80 02                       sjmp    apply_colors    ; contorno em #XRAM_FC03
B2:FF76             ; ---------------------------------------------------------------------------
B2:FF76
B2:FF76             black_outline:                          ; CODE XREF: apply_subtitle_color_and_background+A_j
B2:FF76 74 0B                       mov     A, #0xB
B2:FF78
B2:FF78             apply_colors:                           ; CODE XREF: apply_subtitle_color_and_background+E_j
B2:FF78 90 FC 03                    mov     DPTR, #XRAM_FC03 ; contorno em #XRAM_FC03
B2:FF7B F0                          movx    @DPTR, A
B2:FF7C A3                          inc     DPTR
B2:FF7D EF                          mov     A, R7
B2:FF7E F0                          movx    @DPTR, A        ; ; cor da fonte em XRAM_FC04
B2:FF7F 7F 12                       mov     R7, #0x12       ; le endereco #12 (background da legenda) da eeprom
B2:FF81 7E 00                       mov     R6, #0
B2:FF83 12 04 03                    lcall   B2_BS_47_B1_F213
B2:FF86 EF                          mov     A, R7
B2:FF87 FB                          mov     R3, A           ; Background em R3
B2:FF88 E4                          clr     A
B2:FF89 22                          ret
B2:FF89             ; End of function apply_subtitle_color_and_background
B2:FF89
B2:FF8A
B2:FF8A             ; =============== S U B R O U T I N E =======================================
B2:FF8A
B2:FF8A
B2:FF8A             apply_subtitle_alignment:               ; CODE XREF: BankSw_481_B2_DA33+91_p
B2:FF8A 7F 11                       mov     R7, #0x11
B2:FF8C 7E 00                       mov     R6, #0
B2:FF8E 12 04 03                    lcall   B2_BS_47_B1_F213 ; le endereco #11 (alinhamento vertical) da eeprom
B2:FF91 8F F0                       mov     B, R7           ; guarda em B para que nao seja alterado
B2:FF93 7F 1B                       mov     R7, #0x1B
B2:FF95 7E 00                       mov     R6, #0
B2:FF97 12 04 03                    lcall   B2_BS_47_B1_F213 ; le endereco #1B (alinhamento horizontal) da eeprom
B2:FF9A EF                          mov     A, R7
B2:FF9B FD                          mov     R5, A           ; horizontal em R5
B2:FF9C AB F0                       mov     R3, B           ; vertical em R3
B2:FF9E 22                          ret
B2:FF9E             ; End of function apply_subtitle_alignment


E aqui a modificação básica feita em todas as demais SubStyle:

Código: [Selecionar]
B4:3ABE 7F 09                       mov     R7, #9
B4:3AC0 12 05 CB                    lcall   B4_BS_123_B5_49DF
B4:3AC3 90 FF 66                    mov     DPTR, #0xFF66   ; chama apply_subtitle_color_and_background
B4:3AC6 12 02 58                    lcall   B4_Bank_2       ; no banco 2
B4:3AC9 FD                          mov     R5, A
B4:3ACA 7F 09                       mov     R7, #9
B4:3ACC 12 05 E9                    lcall   B4_BS_128_B5_B84C
B4:3ACF E4                          clr     A
B4:3AD0 FD                          mov     R5, A
B4:3AD1 7F 09                       mov     R7, #9
B4:3AD3 12 05 D1                    lcall   B4_BS_124_B5_CF6B
B4:3AD6 7F 09                       mov     R7, #9
B4:3AD8 12 05 DD                    lcall   B4_BS_126_B5_C2C6
B4:3ADB 90 DA 65                    mov     DPTR, #0xDA65   ; chama a SetMepg4SubtitleParams
B4:3ADE 12 02 58                    lcall   B4_Bank_2       ; no banco 2
B4:3AE1
B4:3AE1             B4_3AE1:                                ; CODE XREF: B4_39CC:B4_3A85_j
B4:3AE1                                                     ; B4_39CC+D0_j ...
B4:3AE1 00                          nop
B4:3AE2 22                          ret

A chamada no final ao endereço #2DA65 permite que o alinhamento seja aplicado imediatamente, bem como abre a possibilidade para deslocarmos a legenda para cima.

Mas agora o problema:

O menu Outros já está cheio. Para evitar o trabalho de modificar as dimensões das janelas do menu, preferi transferir os submenus PBC e P.L.E. para o menu Display (foi isso que o Br0max fez). Bom, ao fazer isso, tenho o seguinte no MTKRemaker:

Citar
2. DISPLAY
   00EA 05 FF29B8 - ROM:29CA
  1. TV@Aspect
     00 00E8 0014 0000 01 00 01 FF294C 0C3D - ROM:2952
    1. 4@:@3
       00E5 00 - ROM:2946
 => 2. 16@:@9
       00E6 01 - ROM:2949

  2. Display@Mode
     00 0064 0015 002B 01 00 00 FF2967 0C3D - ROM:296D
    1. Letterbox
       010E 01 - ROM:2964
 => 2. Panscan
       010C 00 - ROM:2961

  3. Progressive@Scan
     00 0072 0047 02C1 03 00 01 FF2988 0C43 - ROM:2994
    1. On
       0040 00 - ROM:297C
    2. YPbPr
       017E 02 - ROM:297F
    3. VGA
       019B 03 - ROM:2982
 => 4. Off
       0041 01 - ROM:2985

  4. TV@Output@Select
     00 0145 0046 02C0 01 00 2D FF2D2A 0C43 - ROM:29A9
    1. RGB
       0148 6D - ROM:29A3
 => 2. YPbPr
       0147 2D - ROM:29A6

  5. PBC
     00 0075 0023 003D 01 00 00 FF2CAF 0C3D - ROM:2CB5
 => 1. On
       0040 00 - ROM:2CA9
    2. Off
       0041 01 - ROM:2CAC

  6. B.L.E.
     00 00D1 0010 0000 01 00 01 FF2CCA 0C6D - ROM:2CD0
    1. On
       0040 00 - ROM:2CC4
 => 2. Off
       0041 01 - ROM:2CC7

Tudo funcionaria corretamente, se não fosse o caso de que os submenus 3 e 4 deste menu são ocultos. Por causa disso, a navegação só ficou permitida aos submenus 1 e 2. Do jeito que está aí, o player exibe os submenus 1, 2, 5 e 6 (3 e 4 são ocultos) mas só posso navegar nos 2 primeiros. Caso troque a ordem, por exemplo, jogue PBC e BLE para 3 e 4, eles passam a ficar ocultos, Progressive Scan e TV Output Select passam a ser exibidos, mas a navegação continua só nos 2 primeiros. Seja como for, a navegação está travada nos 2 primeiros itens, o 3º e o 4º itens são ocultos e os demais ficam aparecendo inutilmente. Já li as informações do Ryan sobre menus ocultos e li as informações do Grupo MT13x89, mas não estou encontrando a rotina que manipula os menus. Acho que só achando essa rotina é que poderemos resolver o problema.

zeurt, você sabe como funcionam esses menus ocultos no DV256K?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 17, 2009, 10:38:11 pm
O primeiro byte ainda não sei o que representa, mas nos submenus normais é sempre 00 (01 no especial DviX Vod e 02 nos travados de senha e código de área).

Pelos estudos que fiz da estrutura dos menus dos LGs, cheguei a seguinte conclusão em relação ao primeiro byte:

Byte 1: Tipo de Item (00=comum, seleção de uma opção(texto); 01=seleção de opções através de um desenho, como no 5.1 Speaker Set Up dos Home-Theaters; 02=seleção de valores, utilizando as setas do controle remoto: podem ser números como no Sub-Menu Password, ou letras como no Sub-Menu Area Code)

E aqui a modificação básica feita em todas as demais SubStyle:

Para criar a seleção de Cor da Legenda pelo menu eu não precisei modificar as 5 SubStyle. Se você reparar bem essa linha:
B2:DA62 12 05 E9                    lcall   B2_BS_128_B5_B84C; OSD_TextColor
... a chamada utilizando o Bank Switch leva para o mesmo endereço em todas as 5 SubStyle: 5B84C. Portanto eu fiz um desvio nessa rotina (que no DV256K fica no Bank 4 e não no 5), e criei apenas uma rotina para pegar os valores dos endereços EEPROM e colocar nos locais desejados. No fim dá na mesma: é só uma economia de trabalho  ;D

zeurt, você sabe como funcionam esses menus ocultos no LG256K?

Eu já sabia que os menus poderiam apresentar comportamento dinâmico (ao acrescentar alguns itens, se modifica o acesso a outros), pois isso aconteceu com os Firmwares br0max e xypro (versões iniciais), sendo que ao adicionar novos Submenus no Menu OTHERS, a função BLE ficou inacessível. Eles resolveram o problema, mas eu não descobri como... Como não fiz muitas experiências práticas com os menus, não precisei pesquisar sobre esse problema. Vou tentar pesquisar alguma coisa...

Editado:: Corrigi a linha da chamada para OSD Text Color.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Fevereiro 17, 2009, 11:07:01 pm

E aqui a modificação básica feita em todas as demais SubStyle:

Para criar a seleção de Cor da Legenda pelo menu eu não precisei modificar as 5 SubStyle. Se você reparar bem essa linha:
B2:DA62 12 05 E9                    lcall   B2_BS_128_B5_B84C; OSD_TextColor
... a chamada utilizando o Bank Switch leva para o mesmo endereço em todas as 5 SubStyle: 5B84C. Portanto eu fiz um desvio nessa rotina (que no DV256K fica no Bank 4 e não no 5), e criei apenas uma rotina para pegar os valores dos endereços EEPROM e colocar nos locais desejados. No fim dá na mesma: é só uma economia de trabalho  ;D

É verdade! Boa observação! Não precisava que eu chamasse 5 vezes a minha rotina. Bastava chamar uma vez dessa OSD_TextColor. E é provável que dessa rotina eu ainda possa chamar a SetMepg4SubtitleParams, para que as alterações na janela de legendas seja aplicada em tempo real. Matava 2 coelhos com uma só cajadada. Depois vou fazer essa modificação para deixar o código mais enxuto!

Sobre a identificação do tipo de itens dos menus, isso agora pode ser muito útil! Talvez possa modificar a disposição dos submenus.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Fevereiro 18, 2009, 01:28:13 am
É verdade! Boa observação! Não precisava que eu chamasse 5 vezes a minha rotina. Bastava chamar uma vez dessa OSD_TextColor.

Esqueçi de dizer que o desvio nessa rotina precisa ser condicional: só desviar se R7 for #09 (janela da legenda).
Título: Re: Firmware do LG DV397H
Enviado por: adcdenis em Fevereiro 22, 2009, 10:57:54 pm
 :clapping:Muito bom! Parabéns pelo novo Firmware com cores selecionáveis via Menu. Agora ficou perfeito! Fonte maior e mais legível tb também. Por que não contratam pessoas com vcs vocês pra fazer estes firmwares, de qualidade! Abraços!  :yahoo!: :yahoo!:
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 01, 2009, 12:47:44 am
Bom, mais uma informação importante sobre a estrutura de menus. Na seqüência

00 0075 0023 003D 01 00 00 FF2CAF 0C3D

os últimos dois bytes destacados, após o endereço dos ponteiros, indicam o endereço (no banco 2) da rotina que será executada após aplicação da opção. Isso facilita muito as coisas!

Estou com um novo firmware quase pronto, em que adiciono opção de alinhamento horizontal da legenda, seleção da posição vertical da legenda, seleção de sistema PAL G/B e NTSC pelo menu, além de outras coisinhas corrigidas. Logo devo lançar uma versão para testes e uma explicação das mudanças.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 07, 2009, 07:44:33 pm
Nova versão do Firmware Rictad! Depois de algum tempo estudando, consegui implementar mais algumas opções.

Preciso que testem essas modificações, principalmente as feitas no menu Display para ver se há algum bug. Por exemplo, os submenus Progressive Scan e TV Output Select estavam ocultos. As rotinas que os tornavam ocultos faziam isso, aparentemente, de forma incondicional. Ou seja, eu estou quase certo que independente do tipo de conexão, essas opções jamais seriam mostradas (de fato, no DV397H, o Progressive Scan depende da resolução selecionada e as saídas de vídeo estão todas ativadas simultaneamente). Então, para adicionar novos submenus ao menu Display, eu os deixei visíveis, mas não selecionáveis (cor cinza). No entanto, preciso ter certeza de que isso funcione para todos os tipos de conexões que as pessoas usam.

Firmware Rictad versão 2.0:

* Correção do timing bug e cor amarelo canário (créditos para Viper3M e Zeurt).
* Espaçamento entre as linhas da legenda aumentado para poder comportar fontes maiores.
* 6 tipos de fontes para a legenda selecionáveis - para selecionar as fontes, deve-se manter pressionada a tecla "subtitle" por 3 segundos durante a exibição do filme.
* Suporte à acentuação e aos caracteres especiais nos nomes de arquivos mostrados no filebrowser, bem como nas ID3 tags.
* Opção de 10 cores (branco, cinza claro, cinza, amarelo canário, ouro, marrom areia, ciano claro, azul celeste, verde azulado e preto com contorno branco) para a legenda incluída no menu Others do Setup.
* Opção de ligar/desligar o background da legenda incluída no menu Others do Setup.
* Opção de alinhamento vertical (middle-top ou bottom) da legenda incluída no menu Others do Setup.
* Opção de alinhamento horizontal (centro ou esquerda) da legenda incluída no menu Others do Setup.
* Opção de posição vertical da legenda incluída no menu Others do Setup (+20, normal, -20, -40 ou -60; a opção +20 significa 20 pontos mais abaixo e a opção -60 significa 60 pontos mais acima).
* Opção de seleção do sistema de TV (NTSC ou PAL B/G) incluída no menu Display do Setup.
* Legendas no modo PAL e NTSC ocupam a mesma posição.
* Opção de ligar/desligar o Screensaver incluída no menu Display do Setup (modificação idêntica a do firmware Xypro 5.1).
* Opção B.L.E. movida para o menu Display do Setup.
* Língua vietnamita reincluída.

* Baseado no firmware original versão 2.6.

Nota 1: Todas as opções foram incluídas em língua inglesa e língua portuguesa. Para as demais línguas, as novas opções permanecem em língua inglesa.
Nota 2: As fontes das legendas são todas CP1252.

Agradecimentos ao Zeurt pela ajuda e ao Ryan pelo fórum com sua infinidade de informações.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 11, 2009, 07:10:21 pm
Olá pessoal,

Ainda não tive tempo de explicar como foram feitas as últimas modificações. Na verdade, explicar é mais complicado do que descobrir e fazer :laugh:. Mas eu tive uma idéia (ou ideia, ainda não me acostumei com o acordo ortográfico). Vou disponibilizar meu arquivo idb do IDA com a identificação e os comentários de todas as modificações. Acho que é a melhor coisa!

Bom, no momento estou concluindo a opção de mostrar o tempo restante do filme. Para DivX está quase pronto. Para DVD ainda vou ter que trabalhar um pouco. Analisando o firmware Xypro 5.1, vi onde ele fez as modificações, mas está difícil de entender. Então resolvi fazer do meu próprio jeito. Os endereços 0260, 0261 e 0262 compartilhados com o ARM (função ARM_GetChar) retornam o tempo (H, M e S) em BCD. Eu não sei se o Xypro (na verdade, segundo o Xypro, as rotinas foram feitas pelo Br0max, apesar de o mesmo não as ter aplicado em seu firmware) mudou algo no ARM também, mas eu descobri que os endereços 0270, 0271 e 0272 retornam o tempo total. Assim, é só criar uma rotinazinha no próprio 8032 que faça a subtração (não é tão simples, tem que transformar o BCD em binário, fazer os cálculos considerando o "empresta 1" e tranformar de novo em BCD - o bom é que o próprio firmware tem rotinas que transformam BCD em binário e vice-versa, são as BCD2BIN e BIN2BCD). Assim, vou criar uma opção no menu Display em que o usuário escolhe se quer ver no OSD o tempo restante, o tempo progressivo ou o tempo total (no painel frontal, as coisas continuam iguais). Isto está quase pronto, mas tenho minhas dúvidas se é um jeito bom. Em um fórum, vi que no Xypro 5.1 o tempo restante e o tempo total também são mostrados quando se aperta Display. Mas não entendi direito se é quando se navega até a função go to (para quem não lê o manual, ao selecionar o tempo, pode-se digitar a posição para a qual o player salte diretamente) ou se é de outro jeito.

Assim, peço que alguém que já usou ou conhece o firmware Xypro pudesse me informar como é exibido de fato o tempo restante naquele firmware.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 11, 2009, 08:33:12 pm
Rictad, muito obrigado pelas últimas e valiosíssimas contribuições e descobertas!  :clapping:

Bom, mais uma informação importante sobre a estrutura de menus. Na seqüência

00 0075 0023 003D 01 00 00 FF2CAF 0C3D

os últimos dois bytes destacados, após o endereço dos ponteiros, indicam o endereço (no banco 2) da rotina que será executada após aplicação da opção. Isso facilita muito as coisas!
Muito interessante essa descoberta: ainda não tinha descoberto o significado desses 2 últimos bytes.

Ainda não tive tempo de explicar como foram feitas as últimas modificações. Na verdade, explicar é mais complicado do que descobrir e fazer :laugh:. Mas eu tive uma idéia (ou ideia, ainda não me acostumei com o acordo ortográfico). Vou disponibilizar meu arquivo idb do IDA com a identificação e os comentários de todas as modificações. Acho que é a melhor coisa!
Novamente obrigado por compartilhar tudo isso! Vou aproveitar bastante o arquivo idb do IDA quando você disponibilizá-lo.
Tenho algumas perguntas, curiosidades:
1- Como você identificou os endereços EEPROM livres (e se certificou de que eles não interfeririam em nenhuma outra função)?
2- Você conseguiu remover a fonte 6 ou 7 (que eram iguais)? Se sim, como?
3- Acho que as descobertas sobre os menus ocultos você irá incluir no arquivo do IDA, não é?

Bom, no momento estou concluindo a opção de mostrar o tempo restante do filme. Para DivX está quase pronto. Para DVD ainda vou ter que trabalhar um pouco. Analisando o firmware Xypro 5.1, vi onde ele fez as modificações, mas está difícil de entender. Então resolvi fazer do meu próprio jeito. Os endereços 0260, 0261 e 0262 compartilhados com o ARM (função ARM_GetChar) retornam o tempo (H, M e S) em BCD. Eu não sei se o Xypro (na verdade, segundo o Xypro, as rotinas foram feitas pelo Br0max, apesar de o mesmo não as ter aplicado em seu firmware) mudou algo no ARM também, mas eu descobri que os endereços 0270, 0271 e 0272 retornam o tempo total. Assim, é só criar uma rotinazinha no próprio 8032 que faça a subtração (não é tão simples, tem que transformar o BCD em binário, fazer os cálculos considerando o "empresta 1" e tranformar de novo em BCD - o bom é que o próprio firmware tem rotinas que transformam BCD em binário e vice-versa, são as BCD2BIN e BIN2BCD). Assim, vou criar uma opção no menu Display em que o usuário escolhe se quer ver no OSD o tempo restante, o tempo progressivo ou o tempo total (no painel frontal, as coisas continuam iguais). Isto está quase pronto, mas tenho minhas dúvidas se é um jeito bom. Em um fórum, vi que no Xypro 5.1 o tempo restante e o tempo total também são mostrados quando se aperta Display. Mas não entendi direito se é quando se navega até a função go to (para quem não lê o manual, ao selecionar o tempo, pode-se digitar a posição para a qual o player salte diretamente) ou se é de outro jeito.
Muito legal que você esteja trabalhando nessa implementação (TEMPO RESTANTE/TOTAL). Para mim, essa seria realmente a próxima prioridade...
Tudo que você descobriu até agora em relação a isso, para mim é novidade. Vou tentar ir assimilando aos poucos para tentar depois implementar no DV256K. Falando nisso, qual é o trecho do 8032 do xypro 5.1 que contêm essa implementação? Gostaria de complementar dizendo que, se foi feita alguma modificação no ARM do xypro 5.1, foi muito pequena, pois comparando o ARM do xypro 5.1 com o ARM do br0max 4 (ambos se baseiam no mesmo ARM original), existem apenas 117 bytes diferentes. Inclusive você pode até dar uma olhadinha nesse bytes pra ver se tem algo que interessa...
Também tentei descobrir como se seleciona o tempo restante no xypro 5.1, lendo os tópicos relacionados nos fóruns, porém também não vi nehuma referência a isso. Para mim, o ideal seria: pressionar DISPLAY, ir até a linha onde é exibido o TEMPO CORRENTE, e com as setas laterais (ou apenas a seta da direita), alternar entre TEMPO CORRENTE, TEMPO RESTANTE, TEMPO TOTAL (opcional) e função GOTO. Ou seja, se alternaria entre esses itens da mesma forma que se pode alternar as legendas e as trilhas de áudio (inclusive, os itens do menu DISPLAY que podem ser selecionados dessa maneira apresentam um seta para esquerda no início e uma seta para direita no fim, indicando essa possibildade de alternancia).
Espero que de tudo certo!   :)

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 12, 2009, 03:42:46 am
Olá zeurt,

Ainda não tive tempo de explicar como foram feitas as últimas modificações. Na verdade, explicar é mais complicado do que descobrir e fazer :laugh:. Mas eu tive uma idéia (ou ideia, ainda não me acostumei com o acordo ortográfico). Vou disponibilizar meu arquivo idb do IDA com a identificação e os comentários de todas as modificações. Acho que é a melhor coisa!
Novamente obrigado por compartilhar tudo isso! Vou aproveitar bastante o arquivo idb do IDA quando você disponibilizá-lo.
Tenho algumas perguntas, curiosidades:
1- Como você identificou os endereços EEPROM livres (e se certificou de que eles não interfeririam em nenhuma outra função)?
2- Você conseguiu remover a fonte 6 ou 7 (que eram iguais)? Se sim, como?
3- Acho que as descobertas sobre os menus ocultos você irá incluir no arquivo do IDA, não é?

1- Para identificar os endereços EEPROM, acho que o mais correto seria usar o MTKTool para ler um determinado endereço online, criando um log enquanto você faz as mais diversas operações no player. Mas o meu MTKTool não consegue ler os endereços EEPROM, não sei se é bug no programa ou incompatibilidade com o chip (ou se não sei usar direito). Então eu primeiro dei uma olhada no menu, para ver os endereços usados ali e depois eu fiz uma busca no 8032, procurando as sequências 7F XX 7E 00 12 (endereço do PrefGet) e 7E 00 7F XX 12 (endereço do PrefGet). Não tendo nenhuma delas, já é uma boa chance de não ser usado (99%), pois ainda tem o ARM. O 1% restante é na sorte mesmo! Mas os testes ajudam na confirmação final.

2- Ainda não removi a fonte repetida. Fiz uma pequena busca infrutífera e deixei para depois.

3- Sim, vou colocar. Mas posso resumir alguma coisa. Todas as rotinas que trabalham o menu estão no banco 2 (no DV397H). São várias rotinas. Tem a que desenha e atualiza o menu geral quando você navega por ele, a que desenha e atualiza o menu quando você entra em um submenu (entra pela direita) e outra quando você sai (esquerda). Há a rotina que desenha o menu quando você navega pelos submenus, a que desenha o menu quando você entra nas opções (direita) etc. Enfim, se você destrava um submenu, tem que fazer em todas as rotinas, pois, caso contrário, ele voltará a ficar travado dependendo do que estiver fazendo.

Antes de irmos para as subrotinas, devo dizer que tudo que descobri foi graças a três endereços de memória importantíssimos (no DV397H). #FD87, que guarda o número do menu corrente selecionado (de 0 até 4), #FD88, que guarda o número do submenu (também começa em 0) e #FD8B, que guarda o número da opção em que o cursor está (começa em 0 também). Então, para descobrir como os submenus do menu Display ficavam travados, procurei algo que fosse simultanemente condicional a #FD87=#1 (segundo menu, que é o Display) e a #FD88=#2 (terceiro submenu, que está travado). Vamos às rotinas. Vou colocar apenas o endereço inicial delas. Aí fica fácil de procurar no IDA e comparar as modificações que eu fiz com o firmware original:

* Aplica (chama) opções dos submenus: B2_13E4.
* Desenha opções dos submenus, quando você navega por eles: B2_3722.

Nessa rotina, por exemplo, há o trecho:
Código: [Selecionar]
B2:39EB 90 FD 87                    mov     DPTR, #XRAM_FD87
B2:39EE E0                          movx    A, @DPTR
B2:39EF B4 01 2A                    cjne    A, #1, B2_3A1C  ; desloca opcoes,
B2:39EF                                                     ; apos submenu 3,
B2:39EF                                                     ; menu 1
B2:39F2 90 FB D6                    mov     DPTR, #XRAM_FBD6
B2:39F5 E0                          movx    A, @DPTR
B2:39F6 FF                          mov     R7, A
B2:39F7 C3                          clr     C
B2:39F8 94 03                       subb    A, #3
B2:39FA 40 20                       jc      B2_3A1C
Esse trecho checa se estamos no menu 1 (Display) para depois deslocar a posição das opções a partir da terceira (3) posição. Isso faz com que mesmo que se destrave os submenus após a segunda posição, suas opções sejam mostradas como se você estivesse dois submenus abaixo.

* Desenha menu durante navegação principal: B2:4378.
Nesse trecho, os comentários falam por si:
Código: [Selecionar]
B2:43FB EF                          mov     A, R7
B2:43FC B4 01 08                    cjne    A, #1, B2_4407  ; analisa menu 1
B2:43FF ED                          mov     A, R5
B2:4400 64 02                       xrl     A, #2           ; corta submenu 2 do menu 1
B2:4402 70 03                       jnz     B2_4407
B2:4404 02 48 FC                    ljmp    B2_48FC
B2:4407             ; ---------------------------------------------------------------------------
B2:4407
B2:4407             B2_4407:                                ; CODE XREF: B2_4378+84_j
B2:4407                                                     ; B2_4378+8A_j
B2:4407 EF                          mov     A, R7
B2:4408 64 01                       xrl     A, #1           ; analisa menu 1
B2:440A 70 2E                       jnz     B2_443A
B2:440C ED                          mov     A, R5
B2:440D 64 03                       xrl     A, #3           ; corta submenu 3 do menu 1
B2:440F 70 29                       jnz     B2_443A
Outros trechos:
Código: [Selecionar]
B2:44F8 90 FD 87                    mov     DPTR, #XRAM_FD87
B2:44FB E0                          movx    A, @DPTR
B2:44FC B4 01 23                    cjne    A, #1, B2_4522
B2:44FF 90 FB D6                    mov     DPTR, #XRAM_FBD6
B2:4502 E0                          movx    A, @DPTR
B2:4503 B4 03 1C                    cjne    A, #3, B2_4522  ; cor cinza submenu 3, menu 1
Código: [Selecionar]
B2:4F33 90 FD 87                    mov     DPTR, #0xFD87
B2:4F36 E0                          movx    A, @DPTR
B2:4F37 B4 01 28                    cjne    A, #1, B2_4F62  ; salta submenu 3, menu 1
Código: [Selecionar]
B2:4839 90 FD 87                    mov     DPTR, #0xFD87
B2:483C E0                          movx    A, @DPTR
B2:483D B4 01 23                    cjne    A, #1, B2_4863
B2:4840 90 FB D6                    mov     DPTR, #XRAM_FBD6
B2:4843 E0                          movx    A, @DPTR
B2:4844 B4 03 1C                    cjne    A, #3, B2_4863  ; cor cinza opcao do submenu 3, menu 1
B2:4847 7F 47                       mov     R7, #0x47 ; '

* Navega submenus: B2:53C0.
Código: [Selecionar]
B2:548A 20 E0 0E                    jb      ACC.0, B2_549B  ; menu 1, submenu 1 dependente?
B2:548D 90 FD 87                    mov     DPTR, #XRAM_FD87
B2:5490 E0                          movx    A, @DPTR
B2:5491 B4 01 07                    cjne    A, #1, B2_549B  ; navegacao menu 1 baixo
B2:5494 A3                          inc     DPTR
B2:5495 E0                          movx    A, @DPTR
B2:5496 70 03                       jnz     B2_549B
B2:5498 E0                          movx    A, @DPTR
B2:5499 04                          inc     A               ; pula submenu 1 dependente

* Desenha menu ao entrar pela direita: B2:5840.
Código: [Selecionar]
B2:58ED             B2_58ED:                                ; CODE XREF: B2_5840+A8_j
B2:58ED EF                          mov     A, R7
B2:58EE B4 01 08                    cjne    A, #1, B2_58F9  ; analisa menu 1
B2:58F1 ED                          mov     A, R5
B2:58F2 64 02                       xrl     A, #2           ; corta submenu 2 do menu 1
B2:58F4 70 03                       jnz     B2_58F9
B2:58F6 02 5C 77                    ljmp    B2_5C77

* Navega opções dos submenus: B2:76A6.
* Desenha menu após aplicar opções: B2:948C.
* Navegacao cima/baixo menu principal: B2:C9B0.


Além disso, havia o problema do submenu VoD DivX. As rotinas tratam esse submenu de forma fixa. Seja o que for que estiver selecionado na posição 3 do quinto menu terá como opção a palavra "Select" e, ao ser pressionado Enter, será chamada a tela do VoD DivX. Não seria problema nenhum deixá-lo na posição 3 e continuar adicionando submenus abaixo dele, mas a idéia de jogá-lo para o fim (oitavo submenu) é boa (exatamente o que Br0max e Xypro fizeram), pois o mesmo só tem uma opção, fazendo com que a sua caixa de opções não invada o borda do menu. Do contrário, deixando, por exemplo, o submenu PBC por último, a opção Off (segunda opção) não cabe na tela, invadindo a borda inferior do menu. Então, para que coubesse oito submenus no menu Outros, tive que mudar o submenu Vod DivX para o oitavo lugar. Além de mudar a estrutura de menus, foi necessário alterar o byte #2 (posição 3) para #7 (posição 8 ) nos seguintes pontos:

Código: [Selecionar]
B2:17A2 B4 02 1B                    cjne    A, #2, B2_17C0  ; DivX VOD 1
............
B2:3D3E B4 02 27                    cjne    A, #2, B2_3D68  ; DivX VOD 2
............
B2:469F 64 02                       xrl     A, #2           ; DivX VOD 3
............
B2:4714 64 02                       xrl     A, #2           ; DivX VOD 4
   
Muito legal que você esteja trabalhando nessa implementação (TEMPO RESTANTE/TOTAL). Para mim, essa seria realmente a próxima prioridade...
Tudo que você descobriu até agora em relação a isso, para mim é novidade. Vou tentar ir assimilando aos poucos para tentar depois implementar no DV256K. Falando nisso, qual é o trecho do 8032 do xypro 5.1 que contêm essa implementação? Gostaria de complementar dizendo que, se foi feita alguma modificação no ARM do xypro 5.1, foi muito pequena, pois comparando o ARM do xypro 5.1 com o ARM do br0max 4 (ambos se baseiam no mesmo ARM original), existem apenas 117 bytes diferentes. Inclusive você pode até dar uma olhadinha nesse bytes pra ver se tem algo que interessa...
Também tentei descobrir como se seleciona o tempo restante no xypro 5.1, lendo os tópicos relacionados nos fóruns, porém também não vi nehuma referência a isso. Para mim, o ideal seria: pressionar DISPLAY, ir até a linha onde é exibido o TEMPO CORRENTE, e com as setas laterais (ou apenas a seta da direita), alternar entre TEMPO CORRENTE, TEMPO RESTANTE, TEMPO TOTAL (opcional) e função GOTO. Ou seja, se alternaria entre esses itens da mesma forma que se pode alternar as legendas e as trilhas de áudio (inclusive, os itens do menu DISPLAY que podem ser selecionados dessa maneira apresentam um seta para esquerda no início e uma seta para direita no fim, indicando essa possibildade de alternancia).
Espero que de tudo certo!   :)

Acho que você está certo. Deve ter sido assim que ele fez mesmo. Mas é meio complicado de entender. Então eu passei logo a analisar as rotinas que ele modificou e cheguei às minhas descobertas. A primeira coisa que vi foi a diferença na seguinte rotina (firmware Xypro 5.1):

Código: [Selecionar]
; mostra tempo?

B4_A274:

; FUNCTION CHUNK AT B4:FFA0 SIZE 0000002C BYTES

mov     DPTR, #XRAM_FBC3
mov     A, R6
movx    @DPTR, A
inc     DPTR
mov     A, R7
movx    @DPTR, A

Ao procurar por rotinas parecidas com essa (procure por EF 24 30 90 ? ? F0 80 06 90 ? ? 74 2D), achamos 4. Duas no banco 1 e 2 no banco 4 (Xypro 5.1) ou no banco 3 (DV397H). 1 eu já descobri que é responsável por exibir o tempo de DVD (está no banco 1) e a outra exibe o tempo de DivX (banco 3, no caso do DV397H). Para descobrir o que cada uma faz, teste colocando um 22 (ret) no início da rotina. Isso "desliga" a função. Foi assim que eu descobri que a rotina B3_9F60 (mostra tempo) é responsável pela exibição do tempo de um DivX no DV397H. Seguindo as chamadas desta, e também quem a chama, descobri as seguintes rotinas ou trechos de rotinas:

Tratamento inicial antes de chamar "mostra tempo": B3:9F49.
Mostra tempo quando aperta display: B3:3A50.
Atualiza tempo: B3:BA70.
Aplica tempo função go to: B3:A6A8.

E analisando mais, vi que dando um Arm_GetChar com 7F 60 7E 02, temos o valor das horas em BCD, com 7F 61 7E 02, o valor dos minutos e com 7F 62 7E 02, o valor dos segundos. Já 0270, 0271 e 0272 nos dão o tempo total, formato H M S como no caso anterior (acabei de descobrir que para o modo DVD, esse é o tempo total do capítulo, não do filme inteiro; para o filme inteiro, os endereços são 0274, 0275 e 0276).

Vejamos a seguinte rotina, chamada pela que processa o função go to. Ela analisa se o tempo digitado é válido, ou seja, se segundos ou minutos não são maiores que 59 e nem se o tempo digitado é maior que o tempo total do DivX. Note que antes de fazer comparações, os valores de tempo são transformados em binário pela função BCD2BIN (B5_D726):

Código: [Selecionar]
B1:CCBC             ; tempo digitado
B1:CCBC             ; funcao go to
B1:CCBC             ; restringe valores
B1:CCBC
B1:CCBC             BankSw_480_B1_CCBC:                     ; CODE XREF: B1_416B+10B_p
B1:CCBC                                                     ; DATA XREF: B0:B0_BS_480_B1_CCBC_o ...
B1:CCBC 90 FB D6                    mov     DPTR, #XRAM_FBD6
B1:CCBF EF                          mov     A, R7
B1:CCC0 F0                          movx    @DPTR, A
B1:CCC1 A3                          inc     DPTR
B1:CCC2 ED                          mov     A, R5
B1:CCC3 F0                          movx    @DPTR, A
B1:CCC4 A3                          inc     DPTR
B1:CCC5 EB                          mov     A, R3
B1:CCC6 F0                          movx    @DPTR, A
B1:CCC7 90 FB D7                    mov     DPTR, #XRAM_FBD7
B1:CCCA E0                          movx    A, @DPTR
B1:CCCB D3                          setb    C
B1:CCCC 94 3B                       subb    A, #0x3B ; ';'  ; maior que 59
B1:CCCE 40 01                       jc      B1_CCD1
B1:CCD0 22                          ret
B1:CCD1             ; ---------------------------------------------------------------------------
B1:CCD1
B1:CCD1             B1_CCD1:                                ; CODE XREF: BankSw_480_B1_CCBC+12_j
B1:CCD1 90 FB D8                    mov     DPTR, #XRAM_FBD8
B1:CCD4 E0                          movx    A, @DPTR
B1:CCD5 D3                          setb    C
B1:CCD6 94 3B                       subb    A, #0x3B ; ';'  ; maior que 59
B1:CCD8 40 01                       jc      B1_CCDB
B1:CCDA 22                          ret
B1:CCDB             ; ---------------------------------------------------------------------------
B1:CCDB
B1:CCDB             B1_CCDB:                                ; CODE XREF: BankSw_480_B1_CCBC+1C_j
B1:CCDB 90 FC 5A                    mov     DPTR, #XRAM_FC5A
B1:CCDE E0                          movx    A, @DPTR
B1:CCDF B4 02 19                    cjne    A, #2, B1_CCFB
B1:CCE2 90 FB D6                    mov     DPTR, #XRAM_FBD6
B1:CCE5 E0                          movx    A, @DPTR
B1:CCE6 FF                          mov     R7, A
B1:CCE7 D3                          setb    C
B1:CCE8 94 01                       subb    A, #1
B1:CCEA 40 01                       jc      B1_CCED
B1:CCEC 22                          ret
B1:CCED             ; ---------------------------------------------------------------------------
B1:CCED
B1:CCED             B1_CCED:                                ; CODE XREF: BankSw_480_B1_CCBC+2E_j
B1:CCED EF                          mov     A, R7
B1:CCEE 64 01                       xrl     A, #1
B1:CCF0 70 2D                       jnz     B1_CD1F         
B1:CCF2 90 FB D7                    mov     DPTR, #XRAM_FBD7
B1:CCF5 E0                          movx    A, @DPTR
B1:CCF6 24 3C                       add     A, #0x3C ; '<'
B1:CCF8 F0                          movx    @DPTR, A
B1:CCF9 80 24                       sjmp    B1_CD1F         
B1:CCFB             ; ---------------------------------------------------------------------------
B1:CCFB
B1:CCFB             B1_CCFB:                                ; CODE XREF: BankSw_480_B1_CCBC+23_j
B1:CCFB 7F 70                       mov     R7, #0x70 ; 'p' ; tempo total, H
B1:CCFD 7E 02                       mov     R6, #2
B1:CCFF 12 03 A3                    lcall   B1_BS_31_B4_F1E6
B1:CD02 12 04 F3                    lcall   B1_BS_87_B5_D726
B1:CD05 90 FB D9                    mov     DPTR, #XRAM_FBD9
B1:CD08 EF                          mov     A, R7
B1:CD09 F0                          movx    @DPTR, A
B1:CD0A 90 FB D6                    mov     DPTR, #XRAM_FBD6
B1:CD0D E0                          movx    A, @DPTR
B1:CD0E FE                          mov     R6, A
B1:CD0F D3                          setb    C
B1:CD10 9F                          subb    A, R7
B1:CD11 40 01                       jc      B1_CD14
B1:CD13 22                          ret
B1:CD14             ; ---------------------------------------------------------------------------
B1:CD14
B1:CD14             B1_CD14:                                ; CODE XREF: BankSw_480_B1_CCBC+55_j
B1:CD14 90 FB D9                    mov     DPTR, #XRAM_FBD9
B1:CD17 E0                          movx    A, @DPTR
B1:CD18 FF                          mov     R7, A
B1:CD19 EE                          mov     A, R6
B1:CD1A C3                          clr     C
B1:CD1B 9F                          subb    A, R7
B1:CD1C 50 01                       jnc     B1_CD1F         
B1:CD1E 22                          ret
B1:CD1F             ; ---------------------------------------------------------------------------
B1:CD1F
B1:CD1F             B1_CD1F:                                ; CODE XREF: BankSw_480_B1_CCBC+34_j
B1:CD1F                                                     ; BankSw_480_B1_CCBC+3D_j ...
B1:CD1F 7F 71                       mov     R7, #0x71 ; 'q' ; tempo total, M
B1:CD21 7E 02                       mov     R6, #2
B1:CD23 12 03 A3                    lcall   B1_BS_31_B4_F1E6
B1:CD26 12 04 F3                    lcall   B1_BS_87_B5_D726
B1:CD29 90 FB D9                    mov     DPTR, #XRAM_FBD9
B1:CD2C EF                          mov     A, R7
B1:CD2D F0                          movx    @DPTR, A
B1:CD2E 90 FB D7                    mov     DPTR, #XRAM_FBD7
B1:CD31 E0                          movx    A, @DPTR
B1:CD32 FE                          mov     R6, A
B1:CD33 D3                          setb    C
B1:CD34 9F                          subb    A, R7
B1:CD35 40 01                       jc      B1_CD38
B1:CD37 22                          ret
B1:CD38             ; ---------------------------------------------------------------------------
B1:CD38
B1:CD38             B1_CD38:                                ; CODE XREF: BankSw_480_B1_CCBC+79_j
B1:CD38 90 FB D9                    mov     DPTR, #XRAM_FBD9
B1:CD3B E0                          movx    A, @DPTR
B1:CD3C FF                          mov     R7, A
B1:CD3D EE                          mov     A, R6
B1:CD3E C3                          clr     C
B1:CD3F 9F                          subb    A, R7
B1:CD40 50 01                       jnc     B1_CD43         
B1:CD42 22                          ret
B1:CD43             ; ---------------------------------------------------------------------------
B1:CD43
B1:CD43             B1_CD43:                                ; CODE XREF: BankSw_480_B1_CCBC+84_j
B1:CD43 7F 72                       mov     R7, #0x72 ; 'r' ; tempo total, S
B1:CD45 7E 02                       mov     R6, #2
B1:CD47 12 03 A3                    lcall   B1_BS_31_B4_F1E6
B1:CD4A 12 04 F3                    lcall   B1_BS_87_B5_D726
B1:CD4D 90 FB D9                    mov     DPTR, #XRAM_FBD9
B1:CD50 EF                          mov     A, R7
B1:CD51 F0                          movx    @DPTR, A
B1:CD52 90 FB D8                    mov     DPTR, #XRAM_FBD8
B1:CD55 E0                          movx    A, @DPTR
B1:CD56 D3                          setb    C
B1:CD57 9F                          subb    A, R7
B1:CD58 40 01                       jc      B1_CD5B
B1:CD5A 22                          ret
B1:CD5B             ; ---------------------------------------------------------------------------
B1:CD5B
B1:CD5B             B1_CD5B:                                ; CODE XREF: BankSw_480_B1_CCBC+9C_j
B1:CD5B D3                          setb    C
B1:CD5C 22                          ret

Se não conseguir implementar a mudança usando a navegação na função go to, vou ao menos deixar a opção no Setup, pois já será de grande ajuda. Será possível o usuário ver no painel frontal o tempo progressivo e no OSD deixar o tempo restante.

Já que estou empolgado agora, vou escrever um pouco mais.

A mudança no Screensaver foi a mais simples. Eu copiei a modificação feita pelo Xypro. O Xypro usa o endereço 75 da EEPROM. Então, procurando por 7F 75 7E 00 12 achei a função:

Código: [Selecionar]
B2:F2A0             B2_F2A0:                                ; CODE XREF: B2_CB61+18_j
B2:F2A0 7F 75                       mov     R7, #0x75 ; 'u'
B2:F2A2 7E 00                       mov     R6, #0
B2:F2A4 12 09 49                    lcall   B2_BS_272_B1_CF1E
B2:F2A7 EF                          mov     A, R7
B2:F2A8 70 06                       jnz     B2_F2B0
B2:F2AA 90 FC 43                    mov     DPTR, #0xFC43
B2:F2AD 02 CB 7C                    ljmp    B2_CB7C
B2:F2B0             ; ---------------------------------------------------------------------------
B2:F2B0
B2:F2B0             B2_F2B0:                                ; CODE XREF: B2_CB61+2747_j
B2:F2B0 C3                          clr     C
B2:F2B1 22                          ret

Mudando para visão gráfica, vemos que não passa de um gancho da rotina B2_CB61, que é a rotina do Screensaver. No DV397H há uma rotina idêntica. Foi só criar o mesmo gancho. O gancho aí em cima apenas verifica se o Screensaver está habilitado. Se estiver, devolve o controle para a rotina do Screensaver. Se não, vai embora.

Bom, por último, temos a opção NTSC / PAL. No firmware Xypro e no Br0max, o endereço de EEPROM utilizado é 0F. Isso não faz a menor diferença no DV397H. E também não entendi como eles fizeram. Mas analisando a rotina BankSw_453_B5_7F1E do DV397H, responsável pela alteração de resolução (o DV397H permite 480i, 480p, 720p, 1080i e 1080p), descobri que o sistema é definido pelo endereço #002A compartilhado com o ARM. Se fizermos um Arm_PutChar nesse endereço com o valor #2, mudamos para NTSC. O valor 0, muda para PAL B/G. O problema é que a mudança não é imediata. Precisamos reiniciar o aparelho. No entanto, descobri uma rotina que, se chamada com o endereço correspondente, aplica a mudança imediatamente. Talvez já seja conhecida do pessoal do fórum. Eu ainda não procurei se há algum texto sobre ela. Começa no endereço B1:DE40. Após fazer a mudança no endereço, deve-se chamar a rotina zerando todos os registradores R's, com excessão de R6 e R7, que levam o endereço da modificação. Por exemplo, no seguinte trecho, envia-se o byte #2 para #002A, e depois chama-se a rotina B1:DE40 para que a mudança seja aplicada imediatamente:

Código: [Selecionar]
7D 02                       mov     R5, #2
7F 2A                       mov     R7, #0x2A
7E 00                       mov     R6, #0
12 03 A9                    lcall   B1_BS_32_B4_F36A
E4                          clr     A
FB                          mov     R3, A
FA                          mov     R2, A
FD                          mov     R5, A
FC                          mov     R4, A
7F 2A                       mov     R7, #0x2A
FE                          mov     R6, A
12 DE 40                    lcall   BankSw_327_B1_DE40

Mas aí havia o problema da resolução. Na verdade, há duas cadeias de resoluções: 480i, 480p, 720p, 1080i e 1080p para NTSC e 576i, 576p, 720p, 1080i e 1080p para PAL, que estão em forma de tabela:

Código: [Selecionar]
B5:01EF 06          B5_1EF:         .byte    6   ;480p       ; DATA XREF: BankSw_453_B5_7F1E+2C_o
B5:01EF                                                     ; BankSw_453_B5_7F1E+79_o ...
B5:01F0 02                          .byte    2   ;720p
B5:01F1 03                          .byte    3   ;1080i
B5:01F2 0A                          .byte  0xA   ;1080p
B5:01F3 04                          .byte    4   ;480i
B5:01F4 09          B5_1F4:         .byte    9   ;576p      ; DATA XREF: BankSw_453_B5_7F1E+3A_o
B5:01F4                                                     ; BankSw_453_B5_7F1E+9B_o ...
B5:01F5 07                          .byte    7   ;720p
B5:01F6 08                          .byte    8   ;1080i
B5:01F7 0B                          .byte  0xB   ;1080p
B5:01F8 05                          .byte    5   ;576i

Se alterarmos apenas o sistema, quando tentarmos mudar a resolução, o player irá travar. A solução foi descobrir, após mudar o sistema, em qual resolução estava e mudar para a resolução correspondete da outra cadeia. A resolução deve ser enviada (ou lida) ao endereço compartilhado #0F82. Depois do PutChar, então é só chamar BankSw_327_B1_DE40 com R6=#0F e R7=82 para aplicar a mudança de resolução imediatamente (o que aplicará também a mudança de sistema, gravada em #002A).

No final, foi só acertar a posição das legendas com MTKWindows. Aumentei a defasagem PALDY de 48 para 90 (eu acho).

Bom, é isso. Espero ter ajudado!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 12, 2009, 10:59:47 pm
Bom, é isso. Espero ter ajudado!

Com certeza ajudou muito!   :) Novamente, obrigado pela disposição e pela paciência para compartilhar todas as descobertas. Tem tanta informação nova... Vou estudar aos poucos, comparando o Firmware Original com o seu Firmaware Alternativo para entender bem tudo o que você destacou...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 18, 2009, 01:30:20 am
Entretanto no DV397H apenas é possível alterar a resolução usando o controle remoto próprio (pois os demais controles remoto da LG não tem a opção "Resolution").

Fica aqui então uma "low priority feature request" para adicionar um *novo menu* no DV397H que permitiria a selecção da resolução HDMI (480i, 480p, 720p, 1080i, 1080p). Aí qquer qualquer controle remoto de DVD da LG poderia ser usado com o DV397H!  :)

A idéia é interessante. Essa compatibilidade ajudaria aqueles que por algum motivo perderam o remoto original. Só uma pergunta, esses controles de outros aparelhos LG são aqueles que possuem a tecla Random? (no lugar da Resolution). 
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 18, 2009, 01:59:24 am
Firmware Rictad versão 2.1!  :yahoo!:

*Incluídas funções tempo restante e tempo total para arquivos DivX e funções tempo restante, tempo total, tempo de capítulo, tempo restante de capítulo e tempo total de capítulo para DVD e SVCD/VCD.

Nota 1: Para selecionar as opções, o usuário deve apertar a tecla display e navegar até a posição que mostra o tempo, do mesmo modo que faria para entrar na função GO TO. Além dos traços de tempo a digitar (função GO TO), também aparecerão os símbolos < e >. Basta o usuário usar as setas esquerda e direita para navegar nas opções de tempo, as quais são mostradas dinamicamente na parte inferior da tela, onde ficava estaticamente a palavra time (tempo). A função GO TO continua inalterada, bastando digitar a posição a qualquer momento (e independentemente da opção de tempo escolhida, a função GO TO sempre irá se referir ao tempo total do filme).

Nota 2: Alguns poucos filmes de DVD possuem títulos, geralmente reservados aos conteúdos extras, para os quais o firmware original não permite a função GO TO. Para esses casos, a navegação até a posição de tempo foi destravada para que o usuário possa alterar as opções de tempo. A função GO TO, no entanto, permance desativada (ao tentar digitar o tempo, os traços continuarão sendo mostrados e o aviso de proibido será exibido na tela).

Nota 3: Para VCD e SVCD, no firmware original a tecla display mostrava apenas o tempo decorrido no capítulo, mesmo que o VCD/SVCD contivesse vários capítulos no menu. Isso foi corrigido e agora é possível ver os tempos totais do disco (como em um DVD). No entanto, a função GO TO continua limitada ao tempo do capítulo. Por exemplo, se seu VCD tiver 3 capítulos de 20 minutos cada e você quiser ir para para a posição 35 minutos, deverá ir primeiro para o capítulo 2 e depois para a posição 15 minutos.

Amanhã eu posto informações sobre as modificações. Acho que fiz algumas descobertas importantes.
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Março 18, 2009, 02:08:50 pm
Olá.

Primeiro quero dizer que eu falo espanhol e isto está traduzido por um software asi que peço desculpas se há algum erro.

Minha pergunta é a seguinte: ¿Existe a possibilidade de uma adaptação deste firmware para o chip MT1389M?.

Obrigado de antemão e felicitaciones pelo foro. É genial o que estão a fazer.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 19, 2009, 11:46:24 pm
Minha pergunta é a seguinte: ¿Existe a possibilidade de uma adaptação deste firmware para o chip MT1389M?.
Mas isso seria para outro aparelho ou seria mais um caso de LG DV397H que possui o chip MT1389M?

Pessoal, estou fazendo um resumo das minhas modificações para a exibição do tempo restante e de capítulo. Como foram muitas modificações (porém simples), ainda não consegui terminar. Espero terminar até amanhã para postar aqui. Isso será útil para modificações em outros firmwares. Mas confesso, é mais fácil fazer do que explicar! ;D
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 20, 2009, 12:11:23 am
Fica tranquilo Rictad, não tenha pressa...  ;D
Essa implementação do TEMPO TOTAL/RESTANTE, pela sua descrição, ficou muito legal! Aparentemente, ficou até mais completa do que a do xypro 5.1. Parabéns!
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Março 20, 2009, 01:51:10 pm
Mas isso seria para outro aparelho ou seria mais um caso de LG DV397H que possui o chip MT1389M?

Efectivamente rictad, eu tenho um LG DV397H que segundo a tela de serviço tem um chip MT1389M. Num post anterior li que um utente chamado SCLEROSIS tinha o mesmo problema.

Lamentavelmente eu não tenho o firmware original para este chip, mas seria excelente se pudessem me ajudar.

Obrigado por responder
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 21, 2009, 12:21:32 am
Bom, acho que ficou um pouco grande. Ryan, se estiver ruim pode deletar.  :-\
Acho que a melhor maneira de entender o que foi feito é ir seguindo as explicações e visualizar, no IDA, as diferenças entre o firmware original e o modificado. Mas vamos às modificações.

Eu já tinha feito a rotina de cálculo do tempo restante inteira, com todas as considerações possíveis (minuto zera, roda para 59 e decrementa hora, segundo zera, roda para 59 e decrementa minuto e, se este estiver zerado, roda para 59 e decrementa hora, desde que a hora não seja 0...). Para os cálculos, transformava BCD em binário e depois em BCD de novo. Estava tudo funcionando, e então descobri que não precisava nada disso. O código ARM já tem tudo pronto. Além dos endereços 0260, 0261 e 0262 com o tempo total progressivo, 0270, 0271 e 0272 com o tempo total do capítulo e 0274, 0275 e 0276 com o tempo total do filme, descobri que para VCD o firmware usava os endereços 0268, 0269 e 026A para mostrar o tempo. E esse tempo é por capítulo!

Analisando os endereços a partir de 0270, vemos que estão em sequênca de 3, pula 1 e nova sequência de 3. Então, se tinha 0260, 0261 e 0262, poderia ser o caso de saltar o 0263, e alguma coisa haveria na sequência 0264, 0265 e 0266. E havia! E, para completar a lista de endereços, 026C, 026D e 026E! Dái, obtive a seguinte tabela para usar com ARM_GetChar:

R6   R7   Valor retornado em R7 (em BCD)
02   60   Horas, tempo total progressivo
02   61   Minutos, tempo total progressivo
02   62   Segundos, tempo total progressivo

02   64   Horas, tempo total restante
02   65   Minutos, tempo total restante
02   66   Segundos, tempo total restante

02   68   Horas, tempo progressivo do capítulo
02   69   Minutos, tempo progressivo do capítulo
02   6A   Segundos, tempo progressivo do capítulo

02   6C   Horas, tempo restante do capítulo
02   6D   Minutos, tempo restante do capítulo
02   6E   Segundos, tempo restante do capítulo

02   70   Horas, tempo do capítulo
02   71   Minutos, tempo do capítulo
02   72   Segundos, tempo do capítulo

02   73   Horas, tempo total
02   74   Minutos, tempo total
02   75   Segundos, tempo total


Para arquivos DivX, tempo de capítulo e tempo total são iguais.

Ao identificar a rotina que mostra o tempo na tela, vi que existiam 4 iguais. Uma para DivX (banco 3), outra para DVD (banco 1), outra para VCD/SVCD (banco 1) e a última eu não consegui descobrir para que tipo de filme seria (a deixei intocada). Para mp3 e CDs eu sei que não é, pois para esse tipo de conteúdo a forma de mostrar o tempo é diferente (a tela fica permanentemente no file browser, mostrando o tempo). Temos, então, algumas rotinas de sincronização do tempo, que chamam a respectiva "mostra tempo", sendo que uma delas sempre fica na rotina principal, chamada ao se apertar a tecla display. Além disso, cada rotina "mostra tempo" chama uma rotina que mostra a string "time" no final da página, no campo específico, quando o menu tempo está selecionado (função GO TO). Também, para cada tipo de conteúdo, temos uma rotina que mostra as setas < > nos menus da tecla display que possuem opções navegáveis à esquerda e à direita. E, por último, temos a rotina de roteamento do controle remoto que executa rotinas para algumas teclas pressionadas, levando em consideração o menu selecionado. Assim, foram feitas basicamente 4 alterações para cada tipo de conteúdo (DivX, DVD e VCD/SVCD):
1. Desvios nas rotinas de atualização/sincronia de tempo para uma rotina própria que possa condicionar os endereços de sincronia de tempo à opção escolhida pelo usuário.
2. Remoção do filtro que verifica se o menu tempo está selecionado e não imprime os símbolos < >.
3. Desvio na rotina que imprime a string "time" para uma rotina própria que possa condicionar a string exibida à opção escolhida pelo usuário.
4. Remoção de filtro e inclusão de desvio nas rotinas executadas após pressionar esquerda/direita quando o menu tempo está selecionado, para alterar as opções de exibição de tempo.

Vejamos as modificações para DivX:

A rotina mostra tempo começa em:
Código: [Selecionar]
; mostra tempo DivX
B3:9F60
B3:9F60             B3_9F60:                                ; CODE XREF: B3_3827+22B_p
B3:9F60                                                     ; B3:8A71_p ...
B3:9F60 90 FB E0                    mov     DPTR, #XRAM_FBE0
B3:9F63 EE                          mov     A, R6
B3:9F64 F0                          movx    @DPTR, A
B3:9F65 A3                          inc     DPTR
B3:9F66 EF                          mov     A, R7
B3:9F67 F0                          movx    @DPTR, A
B3:9F68 A3                          inc     DPTR
B3:9F69 EC                          mov     A, R4
....

Ela possui uma flag (RAM_2E.2) que identifica se a posição tempo está selecionada ou não. Se estiver, o texto passa a ser de cor preta e fundo amarelo.
Código: [Selecionar]
B3_A003:                                ; CODE XREF: B3_9F60+9B_j
B3:A003 30 72 1A                    jnb     RAM_2E.2, B3_A020       ;flag
B3:A006 7F 01                       mov     R7, #1
B3:A008 12 56 38                    lcall   B3_5638
B3:A00B 90 FC 03                    mov     DPTR, #XRAM_FC03
B3:A00E 74 05                       mov     A, #5
B3:A010 F0                          movx    @DPTR, A
B3:A011 A3                          inc     DPTR
B3:A012 74 0F                       mov     A, #0xF
B3:A014 F0                          movx    @DPTR, A
B3:A015 7B 05                       mov     R3, #5
B3:A017 7D 05                       mov     R5, #5
B3:A019 7F 02                       mov     R7, #2
B3:A01B 12 05 E9                    lcall   B3_BS_128_B5_B84C
B3:A01E 80 13                       sjmp    B3_A033
B3:A020             ; ---------------------------------------------------------------------------
B3:A020
B3:A020             B3_A020:                                ; CODE XREF: B3_9F60:B3_A003_j
B3:A020 90 FC 03                    mov     DPTR, #XRAM_FC03
B3:A023 74 01                       mov     A, #1
B3:A025 F0                          movx    @DPTR, A
B3:A026 A3                          inc     DPTR
B3:A027 74 0E                       mov     A, #0xE
B3:A029 F0                          movx    @DPTR, A
B3:A02A 7B 01                       mov     R3, #1
B3:A02C 7D 01                       mov     R5, #1
B3:A02E 7F 02                       mov     R7, #2
B3:A030 12 05 E9                    lcall   B3_BS_128_B5_B84C
B3:A033

Os endereços de memória que guardam horas, minutos e segundos são #FDC1, #FDC2 e #FDC3, respectivamente.

São quatro rotinas que atualizam o tempo DivX e chamam a mostra tempo DivX:

Uma começa em B3_3827 e é a principal. É responsável por desenhar o menu quando apertamos a tecla display. O trecho que atualiza o tempo é o seguinte:
Código: [Selecionar]
B3:38A5 7F 60                       mov     R7, #0x60 ; '`' ; atualiza tempo. tecla display pressionada
B3:38A7 7E 02                       mov     R6, #2
B3:38A9 12 03 A3                    lcall   B3_BS_31_B4_F1E6
B3:38AC 90 FD C1                    mov     DPTR, #XRAM_FDC1
B3:38AF EF                          mov     A, R7
B3:38B0 F0                          movx    @DPTR, A
B3:38B1 7F 61                       mov     R7, #0x61 ; 'a'
B3:38B3 7E 02                       mov     R6, #2
B3:38B5 12 03 A3                    lcall   B3_BS_31_B4_F1E6
B3:38B8 90 FD C2                    mov     DPTR, #XRAM_FDC2
B3:38BB EF                          mov     A, R7
B3:38BC F0                          movx    @DPTR, A
B3:38BD 7F 62                       mov     R7, #0x62 ; 'b'
B3:38BF 7E 02                       mov     R6, #2
B3:38C1 12 03 A3                    lcall   B3_BS_31_B4_F1E6
B3:38C4 90 FD C3                    mov     DPTR, #XRAM_FDC3
B3:38C7 EF                          mov     A, R7
B3:38C8 F0                          movx    @DPTR, A

As outras começam em  B3_5F36, B3_9E0B e B3_BA70 e possuem o mesmo trecho acima (uma atualiza o tempo enquanto os menus da tecla display são exibidos, outra quando saímos da função GO TO e outra acho que para quando navegamos pelos menus). Então, fiz uma interceptação em cada uma delas para a minha própria rotina que atualiza o tempo conforme a escolha do usuário (conforme o conteúdo do endereço #74 da EEPROM, escolhido por mim). No caso de DivX, para cada valor em #74 (0, 1 ou 2) ele vai atualizar os endereços de memória #FCC1, #FCC2 e #FCC3 com ARM_GetChar diferente (0260, 0261 e 0262 ou 0264, 0265 e 0266 ou 0274, 0275 e 0276). Só tive que tomar cuidado com a primeira rotina, na chamada principal da tecla display. Como não há opção no menu de preferência de tempo, inicialmente, quando se atualiza o firmware e o player resseta pela primeira vez, o valor no endereço #74 pode ser qualquer coisa. Então, a interceptação naquela rotina é um pouco diferente. Eu primeiro analiso se o valor é diferente de 0, 1 ou 2. Se for, atribuo 0 ao endereço #74. A melhor forma de ver como eu fiz isso é analisando o firmware com o IDA e analisar as modificações.

Mas como fazer a preferência do usuário ser gravada no endereço #74, da forma que o zeurt sugeriu? Aí tive que modificar mais três rotinas e criar mais duas. A primeira rotina alterada foi a que exibe os símbolos < > (as setas de navegação esquerda e direita para sinalizar ao usuário que aquele menu possui opções selecionáveis à esquerda e à direita).

O começo dessa rotina é o seguinte e a parte a se modificar está comentada. Aquele trecho analisa qual a posição está selecionada. Se for a 1 (a segunda posição, começando em 0), é o menor tempo. Ao retirar o filtro, a posição 1 também passa a exibir as setas < e >.
Código: [Selecionar]
B3_B6A2:                                ; CODE XREF: B3_32B3+3F_p
B3:B6A2                                                     ; B3_5F36+E6_p ...
B3:B6A2 90 FB F2                    mov     DPTR, #XRAM_FBF2
B3:B6A5 EF                          mov     A, R7
B3:B6A6 F0                          movx    @DPTR, A
B3:B6A7 90 FC 87                    mov     DPTR, #XRAM_FC87
B3:B6AA E0                          movx    A, @DPTR
B3:B6AB B4 17 03                    cjne    A, #0x17, B3_B6B1
B3:B6AE D3                          setb    C
B3:B6AF 80 01                       sjmp    B3_B6B2
B3:B6B1             ; ---------------------------------------------------------------------------
B3:B6B1
B3:B6B1             B3_B6B1:                                ; CODE XREF: B3_B6A2+9_j
B3:B6B1 C3                          clr     C
B3:B6B2
B3:B6B2             B3_B6B2:                                ; CODE XREF: B3_B6A2+D_j
B3:B6B2 40 03                       jc      B3_B6B7
B3:B6B4 02 B7 96                    ljmp    B3_B796
B3:B6B7             ; ---------------------------------------------------------------------------
B3:B6B7
B3:B6B7             B3_B6B7:                                ; CODE XREF: B3_B6A2:B3_B6B2_j
B3:B6B7 90 FB F2                    mov     DPTR, #XRAM_FBF2
B3:B6BA E0                          movx    A, @DPTR
B3:B6BB 64 01                       xrl     A, #1           ; evita simbolos < > no menu tempo
B3:B6BD 70 03                       jnz     B3_B6C2
B3:B6BF 02 B7 96                    ljmp    B3_B796
.....

Agora a parte mais interessante: a rotina de roteamento das teclas do controle remoto quando se aperta a tecla display. O seu começo é o seguinte:
Código: [Selecionar]
B3:891B             ; Roteamento teclas do controle remoto
B3:891B
B3:891B             BankSw_249_B3_891B:                     ; DATA XREF: B0:B0_BS_249_B3_891B_o
B3:891B                                                     ; B1:B1_BS_249_B3_891B_o ...
B3:891B
B3:891B             ; FUNCTION CHUNK AT B3:888A SIZE 00000008 BYTES
B3:891B             ; FUNCTION CHUNK AT B3:8AD6 SIZE 00000003 BYTES
B3:891B
B3:891B D2 70                       setb    RAM_2E.0
B3:891D 90 FB 00                    mov     DPTR, #XRAM_FB00
B3:8920 E0                          movx    A, @DPTR
B3:8921 12 22 9A                    lcall   B3_?C?CCASE
B3:8921             ; End of function BankSw_249_B3_891B
B3:8921
B3:8921             ; ---------------------------------------------------------------------------
B3:8924 8A 7B                       .word B3_8A7B
B3:8926 00                          .byte 0
B3:8927 8A 7B                       .word B3_8A7B
B3:8929 01                          .byte 1
B3:892A 8A 7B                       .word B3_8A7B
B3:892C 02                          .byte 2
B3:892D 8A 7B                       .word B3_8A7B
B3:892F 03                          .byte 3
B3:8930 8A 7B                       .word B3_8A7B
B3:8932 04                          .byte 4
B3:8933 8A 7B                       .word B3_8A7B
B3:8935 05                          .byte 5
B3:8936 8A 7B                       .word B3_8A7B
B3:8938 06                          .byte 6
B3:8939 8A 7B                       .word B3_8A7B
B3:893B 07                          .byte 7
B3:893C 8A 7B                       .word B3_8A7B
B3:893E 08                          .byte 8
B3:893F 8A 7B                       .word B3_8A7B
B3:8941 09                          .byte 9
B3:8942 8A 26                       .word B3_8A26
B3:8944 0D                          .byte 0xD
B3:8945 8A 36                       .word B3_8A36           ; Navega esquerda, menus tecla display
B3:8947 0E                          .byte 0xE
B3:8948 8A 3E                       .word B3_8A3E           ; Navega direita, menus tecla display
B3:894A 0F                          .byte 0xF
B3:894B 8A 2E                       .word B3_8A2
....

Como explicado pelo pessoal do mt13x9 group, esta é um Char Case (?C?CCASE). Esta rotina, especificamente, verifica o valor de #FB00 (endereço que guarda a tecla pressionada no remoto) e chama rotinas de acordo com a tabela abaixo da chamada a ?C?CCASE. A tabela segue o padrão pule para a rotina "word XXYY" se o valor abaixo, "byte ZZ", estiver no endereço #FB00. Então, para os valores de 00 a 09, por exemplo, que são os códigos das teclas numéricas, ela chama a rotina B3_8A7B, que é a rotina reponsável por capturar os números digitados no remoto e repassar à rotina correspondente ao menu selecionado (função GO TO, se estivermos no menu tempo, função que chama o filme pelo número se estivermos na menu de filmes, função que chama as legendas pelo número etc).

Estamos preocupados com as teclas esquerda/direita. Como os valores #0E e #0F (eu testei com o MTKTool, enviando dados ao endereço #FB00) correspondem aos códigos das teclas esquerda e direita, seguimos as rotinas B3_8A36 e B3_8A3E e suas chamadas. A rotina B3_8A3E (seta direita), por exemplo, chama a rotina B3_6766, a qual, por sua vez, executa rotinas diferentes, conforme o menu selecionado. Ela possui um trecho que ignora (não faz nada) se a seleção estiver no menu tempo (posição 1). Temos que ter um cuidado, pois há um artifício hexadecimal aqui. Inicialmente ao valor da posição, é somado o valor #FE. Isso quer dizer que se a posição inicial for 2, passa a ser 0 (em 8 bits, 254 + 2 = 256 = 0 + carry), se for 1, passar a ser #FF, etc. Seguindo as contas após a soma e os decrementos, podemos achar o trecho em que se ignora a posição 1 (menu tempo):
Código: [Selecionar]
B3:6766             ; Navega direita, menus tecla display
B3:6766
B3:6766             B3_6766:                                ; CODE XREF: B3:B3_8A3E_p
B3:6766 90 FD BD                    mov     DPTR, #XRAM_FDBD
B3:6769 E0                          movx    A, @DPTR
B3:676A FF                          mov     R7, A
B3:676B 74 01                       mov     A, #1
B3:676D 7E 00                       mov     R6, #0
B3:676F C8                          xch     A, R0
B3:6770 EF                          mov     A, R7
B3:6771 C8                          xch     A, R0
B3:6772 08                          inc     R0
B3:6773 80 05                       sjmp    B3_677A
B3:6775             ; ---------------------------------------------------------------------------
B3:6775
B3:6775             B3_6775:                                ; CODE XREF: B3_6766:B3_677A_j
B3:6775 C3                          clr     C
B3:6776 33                          rlc     A
B3:6777 CE                          xch     A, R6
B3:6778 33                          rlc     A
B3:6779 CE                          xch     A, R6
B3:677A
B3:677A             B3_677A:                                ; CODE XREF: B3_6766+D_j
B3:677A D8 F9                       djnz    R0, B3_6775
B3:677C FF                          mov     R7, A
B3:677D 90 FD C4                    mov     DPTR, #XRAM_FDC4
B3:6780 E0                          movx    A, @DPTR
B3:6781 FD                          mov     R5, A
B3:6782 E4                          clr     A
B3:6783 EF                          mov     A, R7
B3:6784 5D                          anl     A, R5
B3:6785 70 0E                       jnz     B3_6795
B3:6787 7D 04                       mov     R5, #4
B3:6789 7F 02                       mov     R7, #2
B3:678B 12 CA 78                    lcall   BankSw_147_B3_CA78
B3:678E 7F 0A                       mov     R7, #0xA
B3:6790 12 05 FB                    lcall   B3_BS_131_B2_FDBD
B3:6793 D3                          setb    C
B3:6794 22                          ret
B3:6795             ; ---------------------------------------------------------------------------
B3:6795
B3:6795             B3_6795:                                ; CODE XREF: B3_6766+1F_j
B3:6795 90 FD BD                    mov     DPTR, #XRAM_FDBD
B3:6798 E0                          movx    A, @DPTR
B3:6799 24 FE                       add     A, #0xFE ; '¦'
B3:679B 70 03                       jnz     B3_67A0
B3:679D 02 68 48                    ljmp    B3_6848
B3:67A0             ; ---------------------------------------------------------------------------
B3:67A0
B3:67A0             B3_67A0:                                ; CODE XREF: B3_6766+35_j
B3:67A0 14                          dec     A
B3:67A1 70 03                       jnz     B3_67A6
B3:67A3 02 68 B0                    ljmp    B3_68B0
B3:67A6             ; ---------------------------------------------------------------------------
B3:67A6
B3:67A6             B3_67A6:                                ; CODE XREF: B3_6766+3B_j
B3:67A6 24 03                       add     A, #3
B3:67A8 60 03                       jz      B3_67AD         ; nao zero, menu tempo tecla display
B3:67AA 02 69 78                    ljmp    B3_6978

Então, alterei o endereço B3:67AA para que chame uma rotina que criei no final do bloco, a qual pega o valor do endereço #74 da EEPROM e o incrementa (é a tecla direita, certo?). Como são 3 opções para DivX (tempo, tempo restante e tempo total), se o valor chegar a 3, deve ser rodado para 0. Além disso, ela chama a rotina mostra tempo novamente para atualizar a string de exibição do tipo de tempo, modificação que veremos mais à frente. Para a tecla esquerda, a modificação é similar, pois as rotinas são praticamente iguais. Uma coisa importante: ao fazer as primeiras tentativas de modificações nessas rotinas, elas funcionaram, mas mesmo que eu continuasse mudando as opções, o menu sumia depois de um tempo (como se nenhuma tecla havia sido pressionada). Bom, seguindo a execução das rotinas para os outros menus, vi que havia sempre uma execução: carregar o registrador R7 com o valor #0A ou #03 e chamar a rotina B3_05FB (isso é para dar mais 10 ou 3 segundos de tempo de exibição do menu da tecla display). Assim, atribuí um valor de 3 a R7 e chamei B3_05FB no final das novas rotinas esquerda e direita, o que faz com que o menu continue sendo exibido enquanto estivermos navegando nas opções de tempo, por pelo menos 3 segundos após a última alteração.

A string "time" é a de número #0119 (podemos verificar com o MTK Lang Editor). E a rotina que mostra as strings com a descrição dos menus da tecla display para DivX começa em B3_5638 e o trecho responsável pela string "time", quando o menu tempo estiver selecionado, é o seguinte:
Código: [Selecionar]
B3:56E0             B3_56E0:                                ; CODE XREF: B3_5638+90_j
B3:56E0 90 FB F3                    mov     DPTR, #XRAM_FBF3 ; string tempo?
B3:56E3 74 01                       mov     A, #1
B3:56E5 F0                          movx    @DPTR, A
B3:56E6 A3                          inc     DPTR
B3:56E7 74 19                       mov     A, #0x19
B3:56E9 F0                          movx    @DPTR, A
B3:56EA 80 16                       sjmp    B3_5702

Vemos que em #FBF3 é colocado o valor #01 e em #FBF4 o valor #19. Bom, como eu usei as strings #01A6 e #01E9 para tempo restante e tempo total, respectivamente (ainda criei as strings 01F2, 01F3 e 01F4 para os tempos de capítulo, mas isso não se aplica a DivX), eu fiz um salto nesse trecho, após armazenar o valor #1 em #FBF3, para uma rotina que novamente irá verificar o conteúdo do endereço #74 da EEPROM e decidir qual dos valores, #19, #A6 ou #E9, armazena em #FBF4. Assim, toda vez que selecionarmos o menu tempo, a string correta será exibida. Além disso, como dito anteriormente, quando o usuário navegar para a direita ou para a esquerda, as rotinas que atualizam o valor do endereço #74 EEPROM também chamam a "mostra tempo", fazendo a string se atualizar imediatamente.

Tempo de DVD:

Para o caso do tempo de DVD, as mudanças praticamente são as mesmas. A posição do menu tempo agora é a 2 (terceiro menu). Uma das dificuldades foi que os scripts feitos para o IDA não identificaram essas rotinas corretamente. Alguns trechos ficaram truncados, como se fossem bytes perdidos, sem opção de visão gráfica. Mas as instruções estão lá. Basta termos mais cuidado. Em alguns casos, o IDA considerou que as instruções eram outras, cortando os opcodes no meio. Mas nesses poucos casos não houve modificações.

A rotina "mostra tempo" está em B1_A9B8. A maior diferença está nos endereços de memória usados agora para armazenar o tempo: #FDD0, #FDD1 e #FDD2 para horas, minutos e segundos, respectivamente. A flag de memória para indicar se o menu tempo está selecionado também é outro (RAM_2E.4). Os trechos das rotinas que atualizam o tempo são: B1_314D (não consegui identificar de forma rápida o início da rotina, devido ao problema no reconhecimento dos scripts, citado anteriormente, mas não perdi tempo com isso, pois não foi necessário), B1_4FB1 (que pertence à rotina principal do menu da tecla display, iniciada em B1_4F54), B1_7E00 (da rotina iniciada em B1_7DF4) e B1_9FAD (pertencente à rotina BankSw_381_B1_9F86). Aqui, a modificação é como antes: desvio para uma rotina que verifica a posição #74 da EEPROM e atualiza o tempo com os respectivos ARM_GetChar (mas agora são 6 opções, pois também há as opções de tempo por capítulo). E, na rotina principal, a verificação inicial do endereço #74 é para valores não maiores que 5.

Nota 1: Temos uma situação interessante. Se o usuário escolher como opção o tempo restante, será gravado o valor 1 na EEPROM, e esse ficará mantido para todo o tipo de filme que ele assistir depois, até que o usuário resolva mudar. Mas se ele preferir um tempo de capítulo, por exemplo, o tempo progressivo do capítulo (valor 3), quando ele for assistir um DivX, a rotina principal do menu display do DivX irá fazer aquela verificação inicial (se o valor é maior que 2) e retornará o valor para 0 (já que para DivX não há opção de tempo por capítulo) e o tempo ficará sendo o tempo normal (até que o usuário mude). Uma solução para isso seria usar endereços de EEPROM diferentes, mas também teríamos o problema de ter criado duas preferências diferentes, o que poderia confundir o usuário. Bom, isso é para pensar.

A rotina de roteamento das teclas, seguida por sua tabela de rotinas para cada tecla, é a BankSw_199_B1_2880. Seguindo a tabela, vemos que a rotina para a tecla esquerda começa em B1_2B80 e a da tecla direita começa em B1_2DDE. A rotina que põe os símbolos < e > nos menus começa em B1_8061 e o trecho que exibe a string "time" está em B1_70FA, sendo que o início exato da rotina está numa faixa não corretamente identificada pelos scripts (como citado anteriormente). Lembrando que agora são 6 strings.

Nota 2: Outra coisa importante: como no caso do DivX, foi necessário adicionar um valor (escolhi 3 segundos de novo) a R7 e chamar #05FB no final das novas rotinas esquerda e direita. Mas, além disso, o sinal de proibido era exibido no canto da tela, como se as teclas não estivessem funcionando (apesar de estarem). Isso acontecia devido a outra execução (que não está presente nas rotinas correspondentes de DivX), que é atribuir o valor #1 a R7 e chamar a rotina B1_733D. Então, ao final das rotinas, também tive que realizar essa operação.

Outra peculiaridade dos menus da tecla display para DVD está nos casos em que é impossível selecionar a função GO TO em alguns títulos de alguns filmes. Mudar isso é opcional, mas achei ruim o fato de o usuário selecionar um tipo de tempo no filme e, se entrar nos extras de alguns DVDs, ficar impossibilitado de alterar o tipo de tempo até que volte ao filme ou bote outro. Bom, as travas de navegação ao menu tempo estavam, como esperado, nas rotinas das teclas de navegação (direita, esquerda, cima e baixo). Elas foram tiradas nos seguintes trechos (lembrando que o menu tempo para DVDs está na posição 2):

Navegação tecla esquerda (inicio em B1_2B80):
Código: [Selecionar]
B1:2B9E 5D                          anl     A, R5
B1:2B9F 70 0F                       jnz     B1_2BB0         ; se zero, titulo nao aceita tecla
B1:2BA1 7D 04                       mov     R5, #4
B1:2BA3 7F 02                       mov     R7, #2
B1:2BA5 12 06 5B                    lcall   B1_BS_147_B3_CA78
B1:2BA8 7F 0A                       mov     R7, #0xA
B1:2BAA 12 05 FB                    lcall   B1_BS_131_B2_FDBD
B1:2BAD 02 33 E0                    ljmp    B1_33E0

Navegação tecla direita (início em B1_2DDE). Obs: há um erro dos que eu citei na identificação desta rotina pelo IDA. A quebra não existe e temos, na verdade, um LCALL para 065B:
Código: [Selecionar]
B1:2DFB EF                          mov     A, R7
B1:2DFC 5D                          anl     A, R5
B1:2DFD 70 0F                       jnz     B1_2E0E         ; se zero, titulo nao aceita tecla
B1:2DFF 7D 04                       mov     R5, #4
B1:2E01 7F 02                       mov     R7, #2
B1:2E01             ; ---------------------------------------------------------------------------
B1:2E03 12                          .byte 0x12
B1:2E04 06                          .byte    6
B1:2E05
B1:2E05             ; =============== S U B R O U T I N E =======================================
B1:2E05
B1:2E05
B1:2E05             B1_2E05:                                ; CODE XREF: B1_2832_p
B1:2E05 5B                          anl     A, R3

Navegação tecla cima (início em B1_2914):
Código: [Selecionar]
B1:2A19 90 FB D4                    mov     DPTR, #XRAM_FBD4
B1:2A1C E0                          movx    A, @DPTR
B1:2A1D 64 02                       xrl     A, #2           ; proibe funcao go to em alguns titulos nao principais do DVD
B1:2A1F 70 03                       jnz     B1_2A24
B1:2A21 02 29 72                    ljmp    B1_2972
B1:2A24             ; -----------------------------

Navegação tecla baixo (início em B1_2A39)
Código: [Selecionar]
B1:2B60 90 FB D4                    mov     DPTR, #XRAM_FBD4
B1:2B63 E0                          movx    A, @DPTR
B1:2B64 64 02                       xrl     A, #2           ; proibe funcao go to em alguns titulos nao principais do DVD
B1:2B66 70 03                       jnz     B1_2B6B
B1:2B68 02 2A 97                    ljmp    B1_2A97

E ainda havia uma "trava" na rotina principal de exibição do menu display, em que a modificação não se limitou apenas em retirar o filtro, como nas anteriores. Foi necessário saltar para uma rotina própria para tratar o caso melhor (se o menu tempo fosse o último a ser selecionado, ao apertar a tecla display novamente, ele estaria selecionado, mas o tempo congelado era mostrado, em vez dos traços da função GO TO):
Código: [Selecionar]
B1:53AC 90 FD CC                    mov     DPTR, #XRAM_FDCC
B1:53AF E0                          movx    A, @DPTR
B1:53B0 64 02                       xrl     A, #2           ; proibe menu tempo em alguns titulos
B1:53B2 70 31                       jnz     B1_53E5

E, para finalizar, VCD/SVCD:

Novamente foram feitas as mesmas modificações, sem muito novidade. Não houve muitos problemas, como no caso do DVD. Na verdade, o menu é mais simples que o de DivX e as modificações são mais fáceis. O detalhe é que essas rotinas também ficam no bloco 1 e podem confundir com as de DVD. Além disso, como usam outros endereços de memória e outras flags, tive que criar rotinas só para elas também.

Rotina "mostra tempo": B1_A74D
Trechos que atualizam tempo: B1_40EA, B1_6D99 (rotina principal), B1_78CE e B1_7DF4.
Trecho que põe simbolos < >:
Código: [Selecionar]
B1_C785:
mov     DPTR, #XRAM_FBF0
mov     A, R7
movx    @DPTR, A
movx    A, @DPTR
xrl     A, #1           ; impede simbolos < > opcao tempo
jnz     B1_C792

Rotina roteamento controle remoto: BankSw_202_B1_3B81
Trecho da string "time":
Código: [Selecionar]
B1:73E2             B1_73E2:                                ; CODE XREF: B1_733D+90_j
B1:73E2 90 FB F1                    mov     DPTR, #XRAM_FBF1
B1:73E5 74 01                       mov     A, #1
B1:73E7 F0                          movx    @DPTR, A
B1:73E8 A3                          inc     DPTR
B1:73E9 74 19                       mov     A, #0x19        ; string tempo VCD
B1:73EB F0                          movx    @DPTR, A
B1:73EC 80 0A                       sjmp    B1_73F8
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Março 21, 2009, 02:11:57 pm
Bom, acho que ficou um pouco grande. Ryan, se estiver ruim pode deletar.  :-\

Nem em sonho  ;D
Quanto mais informação, melhor.

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 21, 2009, 03:58:02 pm
Mas isso seria para outro aparelho ou seria mais um caso de LG DV397H que possui o chip MT1389M?

Efectivamente rictad, eu tenho um LG DV397H que segundo a tela de serviço tem um chip MT1389M. Num post anterior li que um utente chamado SCLEROSIS tinha o mesmo problema.

Lamentavelmente eu não tenho o firmware original para este chip, mas seria excelente se pudessem me ajudar.

Obrigado por responder

Ok, então é o caso de termos o mesmo modelo com duas versões de hardware diferentes. Posso estar errado, mas acho que, dependendo da arquitetura usada nos aparelhos, é possível que aceitem o mesmo firmware. Acho que você deveria tentar extrair seu firmware, usando os métodos indicados pelo Ryan aqui no fórum. Estou curioso para verificá-lo. Isso é arriscado! Se não tiver conhecimentos em eletrônica, você pode tentar a ajuda de algum técnico em eletrônica de sua confiança. É o único jeito de termos certeza se trata-se do mesmo firmware ou se pelo menos é trivial fazer as mesmas modificações. Caso o firmware seja relativamente diferente (como se fossem modelos LGs diferentes), as modificações ainda poderão ser feitas, desde que com algum esforço de quem possua essa outra versão do aparelho e que analise as modificações que eu fiz.

Bom, acho que ficou um pouco grande. Ryan, se estiver ruim pode deletar.  :-\

Nem em sonho  ;D
Quanto mais informação, melhor.

Beleza!
 
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 21, 2009, 11:23:40 pm
Analisando os endereços a partir de 0270, vemos que estão em sequênca de 3, pula 1 e nova sequência de 3. Então, se tinha 0260, 0261 e 0262, poderia ser o caso de saltar o 0263, e alguma coisa haveria na sequência 0264, 0265 e 0266. E havia! E, para completar a lista de endereços, 026C, 026D e 026E! Dái, obtive a seguinte tabela para usar com ARM_GetChar:

R6   R7   Valor retornado em R7 (em BCD)
02   60   Horas, tempo total progressivo
02   61   Minutos, tempo total progressivo
02   62   Segundos, tempo total progressivo

02   64   Horas, tempo total restante
02   65   Minutos, tempo total restante
02   66   Segundos, tempo total restante

02   68   Horas, tempo progressivo do capítulo
02   69   Minutos, tempo progressivo do capítulo
02   6A   Segundos, tempo progressivo do capítulo

02   6C   Horas, tempo restante do capítulo
02   6D   Minutos, tempo restante do capítulo
02   6E   Segundos, tempo restante do capítulo

02   70   Horas, tempo do capítulo
02   71   Minutos, tempo do capítulo
02   72   Segundos, tempo do capítulo

02   73   Horas, tempo total
02   74   Minutos, tempo total
02   75   Segundos, tempo total


Para arquivos DivX, tempo de capítulo e tempo total são iguais.
É interessante saber que todos os valores já estejam prontos, a nossa disposição...

Nota 1: Temos uma situação interessante. Se o usuário escolher como opção o tempo restante, será gravado o valor 1 na EEPROM, e esse ficará mantido para todo o tipo de filme que ele assistir depois, até que o usuário resolva mudar. Mas se ele preferir um tempo de capítulo, por exemplo, o tempo progressivo do capítulo (valor 3), quando ele for assistir um DivX, a rotina principal do menu display do DivX irá fazer aquela verificação inicial (se o valor é maior que 2) e retornará o valor para 0 (já que para DivX não há opção de tempo por capítulo) e o tempo ficará sendo o tempo normal (até que o usuário mude). Uma solução para isso seria usar endereços de EEPROM diferentes, mas também teríamos o problema de ter criado duas preferências diferentes, o que poderia confundir o usuário. Bom, isso é para pensar.
Andei refletindo sobre essa questão, e visualizei 3 alternativas:
1- A alternativa ideal (para mim, é claro  :laugh:): Ao se iniciar um filme (PLAY), o endereço EEPROM seria zerado. Assim, ao se pressionar DISPLAY, apareceria sempre o TEMPO TOTAL PROGRESSIVO. Ao se modificar a preferência de TEMPO (RESTANTE, TOTAL, etc.), essa preferência seria memorizada enquanto o arquivo estivesse sendo executado (continuaria memorizada mesmo depois de pressionar PAUSE ou STOP uma vez). Vantagens:a-) é legal deixar uma preferência de TEMPO na memória enquanto se assiste a determinado filme. b-) a preferência de TEMPO, ao se iniciar um novo arquivo seria sempre a mesma, independente do último tipo de arquivo exibido. Desvantagens: não sei se é fácil achar o ponto certo para se zerar o endereço EEPROM ao se iniciar um novo arquivo.
2- Segunda alternativa : é como ocorre na maioria dos DVD-players que já vi até hoje e que apresentam essa função. Ao se pressionar DISPLAY, automaticamente o endereço EEPROM seria zerado. Deste modo a opção de TEMPO não seria memorizada durante a exibição. Vantagem: A preferência de TEMPO seria sempre a mesma ao se pressionar DISPLAY, não seria dependente do último arquivo executado, e deste modo teria um comportamento mais previsível: nunca causaria confusão...b-) parece fácil de implementar. Desvantagem: Assim se perderia a interessante opção de memorizar a opção durante  a execução do arquivo.
3- Terceira alternativa: foi a que você já fez. Vantagem: A interessante possibilidade de memorizar a opção durante a execução de determinado arquivo. Por exemplo: algum usuário que goste de visualizar o TEMPO RESTANTE, de vez em quando, durante o filme, pode, na primeira vez, pressionar DISPLAY e escolher TEMPO RESTANTE. Nas próximas vezes, seria necessário apenas pressionar DISPLAY para se visualizar o TEMPO RESTANTE. Desvantagem: ao se iniciar um novo arquivo, a opção de TEMPO é variável, dependendo do último tipo de arquivo que foi executado (como você descreveu).

Finalmente, gostaria de dizer que todas as suas descobertas a respeito do funcionamento do menu que se mostra ao se pressionar DISPLAY, abrem caminho para futuras modificações do tipo "on the fly" que possa se desejar implementar. Exemplos: Modificação da posição das legendas "on the fly"; Sincronia entre audio e vídeo (lipsync) "on the fly", etc.

Novamente, parabéns por tudo o que foi feito até agora.  :clapping: Você já é o recordista no quesito "Documentação Didática" de modificações de firmwares de DVD-Players LG.


Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 22, 2009, 02:02:35 pm
Obrigado zeurt!

Mais uma possibilidade:

4. Usar dois endereços de EEPROM diferentes, mas com as opções dependentes. Se o usuário deixar para DVD ou VCD uma das três primeiras opções (tempos por filme inteiro), as opções são mantidas para DivX (e vice-versa). Mas se deixar nas três últimas opções (por capítulo), basta "converter" a opção para filme inteiro subtraindo 3 da opção. Por exemplo, tempo restante por capítulo (opção 4). Em DivX será 4-3=1 (tempo restante do filme). Em DVD continuará 3 (pois usa outro endereço de memória). Enquanto o usuário não mudar, ficará assim (seria parecido se eu tivesse deixado as opções por capítulo também para DivX, pois elas são redundantes, iguais às do filme inteiro). Mas se o usuário mudar a opção no DivX, esta também será aplicada a DVD, sem conversão.

Isto seria útil para os usuários que gostam de ver tempos por capítulo de DVD mas assistem DivX também. A preferência seria guardada sem incomodá-los. Para outros usuários, a opção continuaria a ser bastante cômoda também.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 24, 2009, 12:52:30 am
rictad,
A sua alternativa 4 também é interessante... Porém, fico um pouco na dúvida se eu preferiria deixar os 2 tipos de preferência de TEMPO EEPROM (DivX e DVD/VCD) dependentes (como você explicou) ou independentes mesmo (como você até já tinha cogitado na Nota 1). Isso porque, para mim, assitir DivX é uma experiência bem "separada" de assistir DVD.
No fim, tudo isso é muito subjetivo... Cabe a você, criador do firmware, decidir...  ;D
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Março 24, 2009, 01:22:18 pm
Mas isso seria para outro aparelho ou seria mais um caso de LG DV397H que possui o chip MT1389M?

Efectivamente rictad, eu tenho um LG DV397H que segundo a tela de serviço tem um chip MT1389M. Num post anterior li que um utente chamado SCLEROSIS tinha o mesmo problema.

Lamentavelmente eu não tenho o firmware original para este chip, mas seria excelente se pudessem me ajudar.

Ok, então é o caso de termos o mesmo modelo com duas versões de hardware diferentes. Posso estar errado, mas acho que, dependendo da arquitetura usada nos aparelhos, é possível que aceitem o mesmo firmware. Acho que você deveria tentar extrair seu firmware, usando os métodos indicados pelo Ryan aqui no fórum. Estou curioso para verificá-lo. Isso é arriscado! Se não tiver conhecimentos em eletrônica, você pode tentar a ajuda de algum técnico em eletrônica de sua confiança. É o único jeito de termos certeza se trata-se do mesmo firmware ou se pelo menos é trivial fazer as mesmas modificações. Caso o firmware seja relativamente diferente (como se fossem modelos LGs diferentes), as modificações ainda poderão ser feitas, desde que com algum esforço de quem possua essa outra versão do aparelho e que analise as modificações que eu fiz.


Perfeito rictad, como não tenho conhecimentos de electrónica procurarei a algum técnico de confiança para que me ajude. Oxalá que seja o mesmo firmware. Quando tenha notícias lhes conto.
Título: Re: Firmware do LG DV397H
Enviado por: leonardofrazao em Março 24, 2009, 08:14:59 pm
Olá! Realmente o firmware ficou excelente! Muito bem acabado e com funcionalidades excelentes!
Eu só queria discutir dois pontos:
1)   Depois que o DVD é desligado a opção de fonte selecionada para a legenda é perdida;
2)   Teria como implementar a função aleatório? Só não sei em qual botão do controle remoto poderia ser.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 24, 2009, 11:47:30 pm
2)   Teria como implementar a função aleatório? Só não sei em qual botão do controle remoto poderia ser.

Algumas informações adicionais:
1- A tecla RANDOM dos LGs anteriores (DV256K e DK194g por exemplo) fica no lugar da tecla RESOLUTION do DV397H. Portanto, a função RANDOM foi eliminada para dar lugar a RESOLUTION (obs: isso já havia sido observado pelo rictad e pelo drsouza).
2- Será que com o controle do LG256K ou DK194g, pressionando a tecla RANDOM, a função RANDOM funciona no DV397H? Ou seja, será que a função já está implementada no firmware, faltando apenas encontrar um tecla para ela? Isso o drsouza poderá confirmar (já que ele está usando o controle do DK194g no DV397H).
3- Se estiverem "faltando" teclas para serem usadas para novas funções, pode-se tentar descobrir como funciona o mecanismo de pressionar determinada tecla por 3 segundos (ex: SUBTITLE por 3 segundos). rictad, como você descreveu anteriormente que com o MTKTOOL você descobriu códigos responsáveis por algumas teclas que interessavam, também pode ser possível descobrir algo sobre o mecanismo de 3 segundos. Com isso, inúmeras novas teclas (com 3 segundos) estariam disponíveis para novos usos.
Título: Re: Firmware do LG DV397H
Enviado por: leonardofrazao em Março 25, 2009, 12:00:49 am
2)   Teria como implementar a função aleatório? Só não sei em qual botão do controle remoto poderia ser.
Algumas informações adicionais:
2- Será que com o controle do LG256K ou DK194g, pressionando a tecla RANDOM, a função RANDOM funciona no DV397H?
Como eu tinha o controle do DK194G eu fiz esse teste e, quando apertei a tecla RANDOM, nada aconteceu: nem habilitou o aleatório, nem alterou a resolução.

3- Se estiverem "faltando" teclas para serem usadas para novas funções, pode-se tentar descobrir como funciona o mecanismo de pressionar determinada tecla por 3 segundos
Achei a ideia excelente. Poderia ser feito com a tecla REPEAT, por exemplo.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 25, 2009, 08:39:38 pm
Olá pessoal,

3- Se estiverem "faltando" teclas para serem usadas para novas funções, pode-se tentar descobrir como funciona o mecanismo de pressionar determinada tecla por 3 segundos
Achei a ideia excelente. Poderia ser feito com a tecla REPEAT, por exemplo.

Infelizmente, como eu já imaginava, o mecanismo de 3 segundos não faz parte do firmware. É o controle remoto que o faz. Se você aperta a tecla Subtitle, o controle não envia nenhum código ao player até que a tecla seja solta (código #29) ou até que totalize 3 segundos (código #A6). É como se fossem duas teclas separadas, o que não acontece com a tecla Repeat.

O bom disso tudo é que juntando os códigos descobertos com a estrutura das rotinas de roteamento de teclas, estou chegando às rotinas que mudam as fontes (para tentar eliminar a fonte extra e tentar deixar a opção gravável).

Quanto à função Random, ela muito provavelmente não existe no firmware do DV 397H (já que não funcionou com o outro remoto). Dúvida: nos demais LGs ela só funciona em MP3 e CD?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 25, 2009, 09:03:51 pm
Em relação a interessante investigação sobre o roteamento das teclas do controle, gostaria de dar a seguinte sugestão:
Como o Ryan descreveu no Log de Descobertas ao se referir a RC_TAB, podem existir algumas funções "ocultas" para as quais não há nehuma tecla associada (http://ryan.com.br/smf/index.php?topic=179.msg9171930#msg9171930 (http://ryan.com.br/smf/index.php?topic=179.msg9171930#msg9171930)). Portanto, colocando teclas para essas funções (para testar), pode-se chegar a descobertas inesperadas (ex: pode existir uma função ZOOM OUT, ou uma função RANDOM sem teclas definidas). Para isso, antes é necessário encontrar os códigos de cada tecla existente. Daí, pode-se testar os códigos que sobraram. Não lembro muito bem os detalhes, mas acho que é mais ou menos isso.
Rictad, usar o MTKTOOL para encontrar os códigos correspondentes como você descreveu anteriormente, me parece que facilita um pouco esse trabalho. De qualquer modo, continua trabalhoso... Se você tiver tempo, podem surgir surpresas daí...
A função RANDOM só funciona em MP3 e CD.
No fim, se nada disso der certo, pelo menos conseguir eliminar a fonte repetida e deixar a opção gravável já vai ser ótimo.  :)

P.S.: Só pra complementar, dá pra usar várias teclas livres para outras funções: as 4 setas e os 10 números.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Março 26, 2009, 04:20:49 am
Portanto, colocando teclas para essas funções (para testar), pode-se chegar a descobertas inesperadas (ex: pode existir uma função ZOOM OUT, ou uma função RANDOM sem teclas definidas). Para isso, antes é necessário encontrar os códigos de cada tecla existente. Daí, pode-se testar os códigos que sobraram. Não lembro muito bem os detalhes, mas acho que é mais ou menos isso.
Rictad, usar o MTKTOOL para encontrar os códigos correspondentes como você descreveu anteriormente, me parece que facilita um pouco esse trabalho. De qualquer modo, continua trabalhoso... Se você tiver tempo, podem surgir surpresas daí...

Eu fiz um software que simplifica esse trabalho, mas ainda está em versão ALFA (tem mais bugs que features).

Se alguém quiser testar, eu posto aqui.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 26, 2009, 04:52:47 pm
Consegui remover a fonte extra e deixar a opção gravável. Depois eu posto como (é bem simples).

Portanto, colocando teclas para essas funções (para testar), pode-se chegar a descobertas inesperadas (ex: pode existir uma função ZOOM OUT, ou uma função RANDOM sem teclas definidas). Para isso, antes é necessário encontrar os códigos de cada tecla existente. Daí, pode-se testar os códigos que sobraram. Não lembro muito bem os detalhes, mas acho que é mais ou menos isso.
Rictad, usar o MTKTOOL para encontrar os códigos correspondentes como você descreveu anteriormente, me parece que facilita um pouco esse trabalho. De qualquer modo, continua trabalhoso... Se você tiver tempo, podem surgir surpresas daí...

Eu já testei vários códigos com o MTKTool, mas não todos (não tive paciência). Mas o ZOOM possui normalmente 3 códigos #3D, #3E e #3F (um deles é o ZOOM OUT). No entanto, no DV397H, todos os três executam o ZOOM normal. :( Mas isso não quer dizer que outras rotinas não existam. Tenho que testar todos os códigos primeiro (e mesmo que não funcionem, ainda assim as rotinas podem estar lá, soltas).

Eu fiz um software que simplifica esse trabalho, mas ainda está em versão ALFA (tem mais bugs que features).
Se alguém quiser testar, eu posto aqui.

Claro, Ryan! Poste-o aí que pode facilitar as coisas!
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Março 26, 2009, 06:10:08 pm
Claro, Ryan! Poste-o aí que pode facilitar as coisas!

http://ryan.com.br/smf/index.php?topic=530
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 27, 2009, 10:06:25 pm
Rictad meu amigo, necessito de ajuda...

Já li alguns posts aqui, de uma galera que comprou o dv397h, e veio com o chipset MT1389M, eu sou um deles.

Estou muito querendo poder usar seu firmware, os comentários sobre ele são muito positivos, mas sei que se eu tentar atualizar posso estar fazendo besteira, já que o firmware é para o MT1389S.

Mas a minha dúvida é a seguinte: Cara, será mesmo que vai dar problema se eu atualizar, o DVD é o mesmo, e suas funções tb também, seu chipset é do mesmo fabricante, só muda o "S" rsrs.., o que de errado pode dar.

Meu medo é de dar algo errado, e eu acabar perdendo a garantia....

Será que tenho alguma solução, estou muito ancioso pra ver suas modificações....

Espero que me ajude, abração !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 27, 2009, 10:20:40 pm
Mas a minha dúvida é a seguinte: Cara, será mesmo que vai dar problema se eu atualizar, o DVD é o mesmo, e suas funções tb, seu chipset é do mesmo fabricante, só muda o "S" rsrs.., o que de errado pode dar.

Meu medo é de dar algo errado, e eu acabar perdendo a garantia....

Volto a dizer que o risco é grande! Se der "algo errado", significa que provavelmente não vai funcionar mais nada, e você terá que fazer um cabo para recuperação (ou procurar alguém que faça).

Nós precisávamos ver o firmware desse player para comparar. Se ele aparecer, a primeira coisa que farei será colocá-lo no meu player para testar.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Março 27, 2009, 10:23:22 pm
Meu medo é de dar algo errado, e eu acabar perdendo a garantia....

Se seu aparelho está na garantia, arrisque. A assistência não tem como saber o que aconteceu se você não disser e em geral eles sequer sabem o que danado é firmware. O máximo que vai acontecer é você levar uma canseira esperando o conserto.

Mas, como disse RICTAD. O risco é grande de que você tenha que acionar a garantia.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 27, 2009, 10:44:18 pm
Entendi rapazes, reconheço que realmente o risco é grande, vai parecer óbvio, mas se não tem o mesmo nome, algo tem de diferente...

Como ele chegou tem 2 dias, estou com medo de ficar sem ele por muito tempo, afinal como o Jefferson disse, pode ser que demore muito a volta dele e estou adorando a performance dele, mesmo sem o firmware  :-\ rsrs..

Bom, vou esperar passar um tempinho, até eu "enjoar um pouquinho" dele, aí, caso vocês não testem o com o MT1389M, eu atualizo, sem medo rs !

Mas, obrigado pela atenção de vocês, respostas bem rápidas, vou estar sempre por aqui observando as táticas de vocês rs... !!

Valeuuuuuuu !!! :clapping:

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 27, 2009, 10:48:00 pm
Entendi rapazes, reconheço que realmente o risco é grande, vai parecer óbvio, mas se não tem o mesmo nome, algo tem de diferente...

Como ele chegou tem 2 dias, estou com medo de ficar sem ele por muito tempo, afinal como o Jefferson disse, pode ser que demore muito a volta dele e estou adorando a performance dele, mesmo sem o firmware  :-\ rsrs..

Bom, vou esperar passar um tempinho, até eu "enjoar um pouquinho" dele, aí, caso vocês não testem o com o MT1389M, eu atualizo, sem medo rs !

Mas, obrigado pela atenção de vocês, respostas bem rápidas, vou estar sempre por aqui observando as táticas de vocês rs... !!

Valeuuuuuuu !!! :clapping:


Só por curiosidade, onde você comprou esse player? É brasileiro mesmo? Veja atrás dele onde foi produzido.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 27, 2009, 11:57:35 pm
Comprei no CompraFácil, na net, o lugar mais barato que achei.. e ele é brasileiro sim.. diretamente do Amazonas, só pra vc ter um controle maior, o número de série dele começa com: 902AZ...

Doidera, não ? rs...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 28, 2009, 12:37:57 am
Também diminuí o tempo em que a informação de zoom aparece na tela (achei 15 segundos muito tempo). Além disso, as legendas DivX agora continuam sendo exibidas em zoom acima de 100% (algumas pessoas podem querer assistir o filme com zoom, ainda que isso as faça perder partes das cenas). Vamos às últimas modificações (depois eu posto o novo firmware):

Zoom

Esse é o começo da rotina que "desenha" o ícone de zoom e o valor:

Código: [Selecionar]
B3:3C47             BankSw_379_B3_3C47:                     ; CODE XREF: B3:1529_p
B3:3C47                                                     ; B3:1557_p ...
B3:3C47 90 FE 13                    mov     DPTR, #XRAM_FE13
B3:3C4A E0                          movx    A, @DPTR
B3:3C4B FC                          mov     R4, A
B3:3C4C A3                          inc     DPTR
B3:3C4D E0                          movx    A, @DPTR
B3:3C4E FD                          mov     R5, A
B3:3C4F A3                          inc     DPTR
B3:3C50 E0                          movx    A, @DPTR
B3:3C51 FE                          mov     R6, A
B3:3C52 A3                          inc     DPTR
B3:3C53 E0                          movx    A, @DPTR
B3:3C54 54 04                       anl     A, #4
B3:3C56 FF                          mov     R7, A
B3:3C57 E4                          clr     A
B3:3C58 FE                          mov     R6, A
B3:3C59 FD                          mov     R5, A
B3:3C5A FC                          mov     R4, A
B3:3C5B EF                          mov     A, R7
B3:3C5C 60 0A                       jz      B3_3C68
B3:3C5E 7F 02                       mov     R7, #2
B3:3C60 12 06 49                    lcall   B3_BS_144_B2_EB30
B3:3C63 7F 02                       mov     R7, #2
B3:3C65 12 05 AD                    lcall   B3_BS_118_B5_B085
....

No final dela, temos o seguinte (como ocorria com o menu da tecla display):

Código: [Selecionar]
....
B3:405F             B3_405F:                                ; CODE XREF: BankSw_379_B3_3C47+410_j
B3:405F 7F 0A                       mov     R7, #0xA        ; tempo para informacoes da tecla zoom
B3:4061 02 05 FB                    ljmp    B3_BS_131_B2_FDBD

Alterei o valor para #2, o que dá a uns 3 segundos (o #0A dava uns 15 segundos).

Vendo quais rotinas chamam essa última, cheguei à seguinte (apenas começo):

Código: [Selecionar]
B3:AD73
B3:AD73             BankSw_243_B3_AD73:                     ; DATA XREF: B0:B0_BS_243_B3_AD73_o
B3:AD73                                                     ; B1:B1_BS_243_B3_AD73_o ...
B3:AD73 90 FB D2                    mov     DPTR, #XRAM_FBD2
B3:AD76 EF                          mov     A, R7
B3:AD77 F0                          movx    @DPTR, A
B3:AD78 7F 0A                       mov     R7, #0xA
B3:AD7A 12 05 AD                    lcall   B3_BS_118_B5_B085
B3:AD7D 90 FE 13                    mov     DPTR, #XRAM_FE13
B3:AD80 E0                          movx    A, @DPTR
B3:AD81 FC                          mov     R4, A
B3:AD82 A3                          inc     DPTR
B3:AD83 E0                          movx    A, @DPTR
B3:AD84 FD                          mov     R5, A
B3:AD85 A3                          inc     DPTR
B3:AD86 E0                          movx    A, @DPTR
B3:AD87 FE                          mov     R6, A
B3:AD88 A3                          inc     DPTR
B3:AD89 E0                          movx    A, @DPTR
B3:AD8A E4                          clr     A
B3:AD8B FF                          mov     R7, A
B3:AD8C EE                          mov     A, R6
B3:AD8D 54 02                       anl     A, #2
B3:AD8F FE                          mov     R6, A
B3:AD90 E4                          clr     A
B3:AD91 FD                          mov     R5, A
B3:AD92 FC                          mov     R4, A
B3:AD93 EE                          mov     A, R6
B3:AD94 60 05                       jz      B3_AD9B
B3:AD96 7F 09                       mov     R7, #9          ; desabilita legendas DviX em modo zoom
B3:AD98 12 07 27                    lcall   B3_BS_181_B5_D0EA
....

Em B3:AD94, trocando o 60 05 por 80 05 (jz por sjmp), faz saltar o trecho que desabilita as legendas. Assim, no momento em que ícone de zoom sumir, as legendas voltam normalmente (antes, dava para fazer as legendas voltarem, mas tinha que apertar a tecla subtitle, o que desligava o scan do zoom, e esperar a seleção de legenda sumir).

Fonte repetida

A rotina que escolhe o tipo de fonte (inicialmente o codepage) é a seguinte (início):

Código: [Selecionar]
B3:C5D7             ; modifica fontes
B3:C5D7
B3:C5D7             BankSw_273_B3_C5D7:                     ; DATA XREF: B0:B0_BS_273_B3_C5D7_o
B3:C5D7                                                     ; B1:B1_BS_273_B3_C5D7_o ...
B3:C5D7 90 FB 00                    mov     DPTR, #XRAM_FB00
B3:C5DA E0                          movx    A, @DPTR
B3:C5DB 24 F2                       add     A, #0xF2 ; '='
B3:C5DD 60 26                       jz      B3_C605
B3:C5DF 14                          dec     A
B3:C5E0 60 39                       jz      B3_C61B
B3:C5E2 24 FE                       add     A, #0xFE ; '¦'
B3:C5E4 60 15                       jz      B3_C5FB
B3:C5E6 24 E8                       add     A, #0xE8 ; 'Þ'
B3:C5E8 60 31                       jz      B3_C61B
B3:C5EA 24 C8                       add     A, #0xC8 ; '+'
B3:C5EC 60 12                       jz      B3_C600
B3:C5EE 14                          dec     A
B3:C5EF 60 0F                       jz      B3_C600
B3:C5F1 24 BC                       add     A, #0xBC ; '+'
B3:C5F3 60 06                       jz      B3_C5FB
B3:C5F5 24 09                       add     A, #9
B3:C5F7 70 37                       jnz     B3_C630
B3:C5F9 C3                          clr     C
B3:C5FA 22                          ret
....

Mais à frente, temos o seguinte trecho:

Código: [Selecionar]
B3:C613
B3:C613             B3_C613:                                ; CODE XREF: BankSw_273_B3_C5D7+35_j
B3:C613 90 FD C8                    mov     DPTR, #XRAM_FDC8
B3:C616 74 06                       mov     A, #6           ; 7 fontes, reduzir para 6 (#5)
B3:C618 F0                          movx    @DPTR, A
B3:C619 80 17                       sjmp    B3_C632
B3:C61B             ; ---------------------------------------------------------------------------
B3:C61B
B3:C61B             B3_C61B:                                ; CODE XREF: BankSw_273_B3_C5D7+9_j
B3:C61B                                                     ; BankSw_273_B3_C5D7+11_j
B3:C61B 90 FD C8                    mov     DPTR, #XRAM_FDC8
B3:C61E E0                          movx    A, @DPTR
B3:C61F C3                          clr     C
B3:C620 94 06                       subb    A, #6           ; 7 fontes, reduzir para 6 (#5)
B3:C622 50 05                       jnc     B3_C629
B3:C624 E0                          movx    A, @DPTR
B3:C625 04                          inc     A
....

É só seguirmos as modificações propostas nos comentários (trocar o #6 por #5), o que reduzirá o número de fontes de 7 para 6. Esse trecho é justamente o que "passa" as fontes, de #0 a #6, e ainda roda de #0 para #6 ou de #6 para #0. Como as fontes #5 e #6 são iguais, é só cortarmos a última.

Uma outra solução seria mexer no trecho:

Código: [Selecionar]
B3_C632:                                ; CODE XREF: BankSw_273_B3_C5D7+3A_j
B3:C632                                                     ; BankSw_273_B3_C5D7+42_j ...
B3:C632 90 FD C8                    mov     DPTR, #XRAM_FDC8
B3:C635 E0                          movx    A, @DPTR
B3:C636 FF                          mov     R7, A
B3:C637 24 FB                       add     A, #0xFB ; '¹'
B3:C639 50 08                       jnc     B3_C643         ; se carry, faz algumas manobras nos codepages
B3:C639                                                     ; (e repete a fonte #5)
....


Trocar 50 08 por 80 08 em B3:C639 faz com que todas as fontes sejam tratadas da mesma forma, seguindo a tabela de fontes de forma linear. Assim, a última fonte passa a ser a apontada no MTKRemaker como fonte 14. O problema é que o nome dela ainda continua repetido (igual ao da penúltima). Além disso, essa fonte 14 é a usada pelo filebrowser, sendo muito pequena. Ainda podemos brincar mais, aumentando para 8 fontes (substituindo os #6 por #7 nos trechos mostrados mais acima). Isso faz com que a fonte 15 mostrada no MTKRemaker também seja usada (mas ela não é cp1252, é pequena como a 14, além de não ter nome).

Opção de fonte gravável

Verifiquei que além da opção ser guardada na memória, é guardada também na EEPROM, como preferência (endereço #2E). Porém, ao iniciar o player, há uma rotina (BankSw_63_B1_C10D) que sempre coloca o valor #2 nesse endereço, fazendo com que a terceira fonte seja a inicial. Segue o trecho em que isso ocorre:

Código: [Selecionar]
B1:C15E             B1_C15E:                                ; CODE XREF: BankSw_63_B1_C10D+3D_j
B1:C15E 7F 44                       mov     R7, #0x44 ; 'D'
B1:C160 7E 00                       mov     R6, #0
B1:C162 12 F2 13                    lcall   PREF_GetChar
B1:C165 EF                          mov     A, R7
B1:C166 60 09                       jz      B1_C171
B1:C168 7D 02                       mov     R5, #2          ; opcao de fonte de legenda inicial
B1:C16A 7F 2E                       mov     R7, #0x2E ; '.'
B1:C16C 7E 00                       mov     R6, #0
B1:C16E 12 F3 3A                    lcall   PREF_SetChar??
....

Eu removi essa verificação inicial do endereço #44, já que ela zerava (ou "doisava", para falar a verdade  :laugh: ) a opção de fonte, dependendo do seu conteúdo. Além de removê-la, incluí uma pequena checagem do endereço #2E, para verificar se o valor inicial não está fora dos limites das fontes (maior que #5). Somente se estiver é que atribui-se #2. Isso é feito pelo mesmo motivo que foi feito na opção de tempo incluída há alguns dias. Na primeira vez que você atualiza o firmware, o valor na EEPROM pode ser qualquer um (e de fato é, a fonte fica em árabe e demora muito para se acertar). Estando dentro dos limites (de #0 a 5#), nada é feito, mantendo a opção.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 29, 2009, 01:01:46 am
Versão 2.2 disponível!

*Opção do tipo de fonte fica gravada, mesmo após desligar o player.
*Removida fonte Courier duplicada.
*Legendas DivX permanecem habilitadas em modo Zoom.
*Informação de Zoom desaparece em 3 segundos (originalmente desaparecia em 15 segundos).
*Trocada string de informação de versão do firmware de V2.6 para V2.6-Rictad-2.2
*Opções de tempo para DivX independentes de opções de tempo para DVD e VCD/SVCD .


Para trocar a versão, alterei o trecho:

Código: [Selecionar]
B5:3640  FF 35 AB FF 35 56 FF 35  BC 02 04 10 00 15 3A 20   5½ 5V 5+.....:
B5:3650  4C 47 5F 44 56 5F 4C 56  38 31 46 33 33 42 34 30  LG_DV_LV81F33B40
B5:3660  30 4D 53 06 3A 20 56 32  2E 36 0A 3A 20 30 37 2F  0MS.: V2.6.: 07/
B5:3670  30 31 2F 30 38 0A 3A 20  4D 54 31 33 38 39 20 53  01/08.: MT1389 S
B5:3680  02 01 02 06 00 00 00 00  02 01 00 04 09 09 04 05  ................
B5:3690  06 02 05 08 00 11 01 03  09 07 01 03 09 11 00 00  ................

por:

Código: [Selecionar]
B5:3640  FF 35 AB FF 35 56 FF 35  BC 02 04 10 00 15 3A 20   5½ 5V 5+.....:
B5:3650  4C 47 5F 44 56 5F 4C 56  38 31 46 33 33 42 34 30  LG_DV_LV81F33B40
B5:3660  30 4D 53 11 3A 20 56 32  2E 36 2D 52 69 63 74 61  0MS.: V2.6-Ricta
B5:3670  64 2D 32 2E 32 0A 3A 20  4D 54 31 33 38 39 20 53  d-2.2.: MT1389 S
B5:3680  02 01 02 06 00 00 00 00  02 01 00 04 09 09 04 05  ................
B5:3690  06 02 05 08 00 11 01 03  09 07 01 03 09 11 00 00  ................

Cada string é antecedida por um delimitador que determina o tamanho dela. Por exemplo, 06 3A 20 56 32 2E 36  : V2.6, significa que após o 06, temos a string com 6 caracteres (contando os dois pontos e o espaço). Tentei alterar esse valor e empurrar as strings mais abaixo, mas a informação na tela de serviço ficou truncada. A solução foi retirar a string com a data do firmware, que não é usada na tela de serviço e nem na tela de upgrade. Além disso, como em B5:3690  06 02 05 08 00 11 01 03  09 07 01 03 09 11 00 00 temos o código que deve ser digitado para entrar na tela de serviço, empurrando as strings para baixo atrapalha a entrada naquela tela.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 29, 2009, 01:13:57 am
Obrigado pelas informações do post retrasado, rictad. Já encontrei a rotina de seleção das fontes de legendas no DV256K (equivalente a do DV397H que você descreveu). Consegui alterar (reduzir) o número de fontes, etc. Porém, estou tendo um problema relacionado com a fonte 13 do firmware (que é originalmente a CP-1255). Vou descrever esse problema com mais detalhes no tópico do Firmware do DV256K, porém já adianto que nesse player NÃO há a fonte repetida (mesma fonte usada para 2 opções, os 2 subsistemas de CP-1255 como você descreveu para o DV397H).
Além disso, vale a pena destacar que no DV256K NÃO há o problema da fonte não ser gravada. Portanto não precisarei mexer nisso.
Desculpem-me pela parte "off-topic".
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 29, 2009, 04:44:22 pm
Algo que me ocorreu agora. Talvez todos os DV397H sejam MT1389S e a informação de chip MT1389M pode ser apenas um erro no firmware. É só terem trocado o S por M no trecho aí embaixo:

Código: [Selecionar]
B5:3640  FF 35 AB FF 35 56 FF 35  BC 02 04 10 00 15 3A 20   5½ 5V 5+.....:
B5:3650  4C 47 5F 44 56 5F 4C 56  38 31 46 33 33 42 34 30  LG_DV_LV81F33B40
B5:3660  30 4D 53 06 3A 20 56 32  2E 36 0A 3A 20 30 37 2F  0MS.: V2.6.: 07/
B5:3670  30 31 2F 30 38 0A 3A 20  4D 54 31 33 38 39 20 53  01/08.: MT1389 S
B5:3680  02 01 02 06 00 00 00 00  02 01 00 04 09 09 04 05  ................
B5:3690  06 02 05 08 00 11 01 03  09 07 01 03 09 11 00 00  ................

Quem tiver o DV397H informando chip MT1389M pode tentar abrir o player cuidadosamente e fotografar o chip principal para a gente verificar. Isso é bem mais seguro do que atualizar o firmware 8).
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 29, 2009, 06:16:27 pm
Aqui estão as especificações dos 2 chipsets (tirado do site da Mediatek):

MT1389/M

DVD Player SOC with HDMI™ Tx

● Integrated RF/Servo/MPEG in 128-pin QFP
● MPEG2/MPEG4 video decoder
● MediaTek’s MDDi™ motion-adaptive de-interlace
● Support DivX/DivX Ultra
● TV encoder with 4ch video DACs
● 6ch audio DACs
● 2ch audio ADCs for karaoke
● USB2.0 high speed host
● Card reader


MT1389/S

DVD Player SOC with HDMI Tx and WMV support

 Integrated RF/Servo/MPEG in 256-pin QFP
● HDMI 1.2 Tx up to 1080p output with CEC support
● MPEG2/MPEG4/WMV9 video decoder
● MediaTek’s MDDi™ motion-adaptive de-interlace
● Support DivX/DivX Ultra
● Support HD-JPEG
● TV encoder with 6ch video DACs
● Support SACD 2.0 and DVD-Audio
● 8ch audio DACs
● USB2.0 high speed host
● Card reader

Deve-se notar que essas especificações refletem características POTENCIAIS dos chipsets (não necessariamente o player que use o chipset irá apresentar todas elas).

Olhando a tela enviada pelo usuário SCLEROSIS:

MODEL ID: LG_DV_LV81F33B400MM
CHIP ID:  MT1389M
SERVO VER: ODD200
MICOM VER: V3.33
CHECKSUM:  4246
HDCP KEY IS VALUE :YES

FACTORY RESET ... DONE
PLEASE POWER DOWN

Reparando em alguns dados (como: MODEL  LG_DV_LV81F33B400MM ao invés de LG_DV_LV81F33B40DMS / LG_DV_LV81F33B400MS; e versão V3.33, ao invés de V2...), penso que provavelmente esses players tenham CHIPSET MT1389M mesmo. Mas, vale a pena conferir!  ;D



Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 29, 2009, 09:10:36 pm
Ok, tirei a foto !

É e parece que realmente é o MT1389M   :dashhead1: rs..

É só baixar e dar zoom, fica bem vísivel a foto ;)

Até a placa, se comparada com a outra do MT1389S, é levemente diferente, alguns capacitores e tal....

E outra, pelas características citadas acima pelo Zeurt, tirada do site da Mediatek, comprova sua diferença...

Meus dedos ainda coçam, uma coisa me irrita um pouco e já vi que foi corrigida por vocês, a legenda de filmes em Dvix às vezes saem de sincronia... aí eu pauso e aperto player e elas voltam ao normal !!

Continuarei F5 !!

Abraços !
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 29, 2009, 09:59:39 pm
É realmente um MT1389M. A letra M antes de ESL (MESL) prova isso.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 30, 2009, 12:25:33 am
É! E o chip S parece ser bem maior. Pela informação do zeurt, são 256 pinos contra 128 do M, não é isso?
As duas fotos que seguem foram tiradas por mim. O conector a mais, na placa principal, é o que eu coloquei para usar o cabo serial (como ensinado pelo Ryan).
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 30, 2009, 01:51:24 am
É, então está resolvido !

Vou então aguardar vocês colocarem a mão no firmware do MT1389M, espero que arrumem ou alguém up (não serei eu, nem o cabo sei fazer rs) ele !

Valeuu pessoal !!  :clapping:

Se eu souber de algo relevante, comunico  ;)  !!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 31, 2009, 12:06:33 am
Consegui os firmwares dos LG DV392H com os seguintes modelos de fábrica: DV392H-P (chipset MT1389S) versão 2.6, e DV392H-N (chipset MT1389M) versão 3.33. São provenientes da Argentina.  :yahoo!:
Comparei o firmware do DV392H-P v2.6 com o do DV397H v2.6 que eu já tinha enviado. Pelo menos o RISC dos dois é idêntico. Há várias diferenças no restante, mas não chequei mais detalhes.
Rictad, você poderia testar os 2 firmwares no seu DV397H (como você havia sugerido, já que você tem o cabo...).
Caso o firmware do DV392H-P funcione sem problemas no DV397H(MT1389S), provavelmente o firmware do DV392H-N (MT1389M) irá funcionar no DV397H (MT1389M). Provavelmente o firmware do DV392H-N (MT1389M) não funcionará no DV397H (MT1389S), mas caso funcione, o problema dos colegas com o DV397H (MT1389M) estaria perto do fim, pois provavelmente o contrário seria verdadeiro, e o firmware do DV397H (MT1389S, firmwares do rictad) funcionaria no DV397H (MT1389M).

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 01:56:55 am
Consegui os firmwares dos LG DV392H com os seguintes modelos de fábrica: DV392H-P (chipset MT1389S) versão 2.6, e DV392H-N (chipset MT1389M) versão 3.33. São provenientes da Argentina.  :yahoo!:
Comparei o firmware do DV392H-P v2.6 com o do DV397H v2.6 que eu já tinha enviado. Pelo menos o RISC dos dois é idêntico. Há várias diferenças no restante, mas não chequei mais detalhes.
Rictad, você poderia testar os 2 firmwares no seu DV397H (como você havia sugerido, já que você tem o cabo...).
Caso o firmware do DV392H-P funcione sem problemas no DV397H(MT1389S), provavelmente o firmware do DV392H-N (MT1389M) irá funcionar no DV397H (MT1389M). Provavelmente o firmware do DV392H-N (MT1389M) não funcionará no DV397H (MT1389S), mas caso funcione, o problema dos colegas com o DV397H (MT1389M) estaria perto do fim, pois provavelmente o contrário seria verdadeiro, e o firmware do DV397H (MT1389S, firmwares do rictad) funcionaria no DV397H (MT1389M).

Valeu, zeurt.

Bom, primeiro, observando os manuais do DV397H e do DV392H de forma superficial, não consegui perceber nenhuma diferença. Parecem o mesmo equipamento.

O firmware do DV392H-P funcionou sem problemas. A única coisa que deixou de funcionar foi a tecla resolution, apesar do DV392H ter essa funcionalidade e seu controle ser o mesmo graficamente (não descobri o modelo ainda, mas não deve ser o mesmo, pois o código daquela tecla deve ser outro).

Já o firmware do DV392H-N não funcionou. O player nem liga. Pior, agora nem com cabo quer atualizar. O MTKTool não consegue conectar corretamente com o chip. Aparece apenas a mensagem LOG: Start to upgrade e não sai disso. :-[ Mas ele sabe que tem algo ligado, pois se o player estiver fora da tomada, o MTKTool dá o erro normal (chip não reconhecido). Vou tentar resolver isso aqui agora. Depois dou uma olhada comparando os dois firwmares do DV392H.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 31, 2009, 02:06:17 am
Já o firmware do DV392H-N não funcionou. O player nem liga. Pior, agora nem com cabo quer atualizar. O MTKTool não consegue conectar corretamente com o chip. Aparece apenas a mensagem LOG: Start to upgrade e não sai disso. :-[ Mas ele sabe que tem algo ligado, pois se o player estiver fora da tomada, o MTKTool dá o erro normal (chip não reconhecido). Vou tentar resolver isso aqui agora. Depois dou uma olhada comparando os dois firwmares do DV392H.

Nossa! Espero que você consiga resolver. Não entendo nada dessa parte, e só de ouvir falar de um problema assim dá um frio na barriga...  :(
Mas, vamos confiar que vai dar tudo certo!  :)
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Março 31, 2009, 02:07:25 am

Já o firmware do DV392H-N não funcionou. O player nem liga. Pior, agora nem com cabo quer atualizar. O MTKTool não consegue conectar corretamente com o chip. Aparece apenas a mensagem LOG: Start to upgrade e não sai disso. :-[

Isso é provavelmente uma coincidência. Todos os testes que fiz indicam que a capacidade de atualização está "hardcoded" no chip.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 02:19:04 am

Já o firmware do DV392H-N não funcionou. O player nem liga. Pior, agora nem com cabo quer atualizar. O MTKTool não consegue conectar corretamente com o chip. Aparece apenas a mensagem LOG: Start to upgrade e não sai disso. :-[

Isso é provavelmente uma coincidência. Todos os testes que fiz indicam que a capacidade de atualização está "hardcoded" no chip.

Pois é, não faz muito sentido. Mas meu HDMI nunca mais funcionou depois daquela atualização. Esses MT esquentam muito. Pode acontecer de entrar em loop infinito, superaquecer e adeus chip.

Bom, mas a memória flash é externa ao MT1389 ou faz parte dele? Se for externa, para funcionar (ligar) ela precisa do MT1389 para gerar tensão ou independe dele?
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Março 31, 2009, 02:38:08 am

Pois é, não faz muito sentido. Mas meu HDMI nunca mais funcionou depois daquela atualização. Esses MT esquentam muito. Pode acontecer de entrar em loop infinito, superaquecer e adeus chip.

Isso já é diferente. O firmware pode depender de encontrar um determinado valor setado na EEPROM para saber que existe uma interface HDMI no aparelho. E um firmware de outro aparelho pode sobreescrever esse valor com outra coisa.

Bom, mas a memória flash é externa ao MT1389 ou faz parte dele?

Sempre externa. Nunca vi uma especificação de chip MT13x9 que incluísse flash embutida. Até mesmo porque é um chip caro cujo tamanho depende do que o fabricante do DVD player quer incluir e costuma variar de 1M a 4MB nos aparelhos à venda no Brasil.

Se for externa, para funcionar (ligar) ela precisa do MT1389 para gerar tensão ou independe dele?

A comunicação é sempre feita através do MT13x9. Quando a flash é do tipo paralelo é tecnicamente impossível gravar nela através de uma interface serial sem a ajuda de um chip intermediário. Quando a flash é do tipo serial seria tecnicamente possível "conversar" diretamente com ela, mas até onde sei mesmo nesse caso a comunicação passa pelo MT13x9.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 02:56:57 am

A comunicação é sempre feita através do MT13x9. Quando a flash é do tipo paralelo é tecnicamente impossível gravar nela através de uma interface serial sem a ajuda de um chip intermediário. Quando a flash é do tipo serial seria tecnicamente possível "conversar" diretamente com ela, mas até onde sei mesmo nesse caso a comunicação passa pelo MT13x9.


Resolvi testar o MTK Flasher, que não é plenamente funcional (não confundir com o MT1389 Flasher, do New Age), para tentar fazer um backup de firmware. Se o player está desligado, ele faz o óbvio, dá erro:

Citar
Started Jun 28 2005 18:30:50
- Output file created
- COM Port opened
- Init (Top Align)
- Flash Chip
   Vendor : 0x21
   Type1  : 0x55
   Type2  : 0x22
   Model  : Unknown Chip
   Size   : 0x00000800

Mas se eu ligo na tomada, o erro é esse:

Citar
-----------------------------------------------
Started Jun 28 2005 18:30:50
- Output file created
- COM Port opened
- Init (Top Align)
-----------------------------------------------
ERROR : No answer from player. Please check COM
port and try power cycle the Player !
-----------------------------------------------

Outra coisa que notei é que quando atualizava com um firmware errado, apesar do aparelho não ligar, ao apertar power, o usb era alimentado (p. ex., um pendrive era ligado). Mas agora, nada acontece.

Bom, mas amanhã tentarei outras coisas. Testarei cabo, porta, computador... E talvez haja uma forma de forçar o MTKTool enviar o arquivo para um determinado chip sem esperar qualquer retorno. Se não der certo, vou começar a pensar em comprar outro DVD.  ;D
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 31, 2009, 03:04:38 am
Se não der certo, vou começar a pensar em comprar outro DVD.  ;D

Bom, se isso for necessário, sugiro que a comunidade de usuários que apreciam, utilizam ou pretendem utilizar os firmwares modificados por você se organize para criar uma vaquinha para repor esse DVD. Eu já sou o primeiro da lista.  ;D
Título: Re: Firmware do LG DV397H
Enviado por: leonardofrazao em Março 31, 2009, 03:12:43 am
Está na garantia?  ;)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 03:35:12 am
Se não der certo, vou começar a pensar em comprar outro DVD.  ;D

Bom, se isso for necessário, sugiro que a comunidade de usuários que apreciam, utilizam ou pretendem utilizar os firmwares modificados por você se organize para criar uma vaquinha para repor esse DVD. Eu já sou o primeiro da lista.  ;D

hahahahahahahaha
Legal, zeurt. 8) Mas acho que não vai precisar. Isso deve ser cabo, não é possível.  :blink:

Está na garantia?  ;)

Já tem um tempo que comprei, mas de qualquer forma já até soldei conector na placa...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 04:27:34 pm
Tentei agora usar o Flasher do New Age.

Não tem R (resposta) no modo debug e o chip não é identificado (como se o cabo estivesse desligado). Mas abri o player, testei o cabo no Hyper Terminal e parece estar tudo certo. Além disso, ontem, as duas atualizações que fiz foi com o cabo, até a última matar o player. Eu não mexi em nada. Outra coisa que ocorre é que seu retiro o player da tomada, aparecem os R's no modo debug, mas obviamente o chip também não é reconhecido. Então acho que o cabo está ok.

Identifiquei e baixei o data sheet do chip de memória flash (segue em anexo). A especificação dele é a 48 TSOP, meio quadradinho. Ao medir a tensão no Vcc, deu +3,64 V (ou seja, está alimentado).

Observei que o MT1389S está aquecendo rapidamente quando liga, mas não chega a queimar o dedo. No entanto, se espero uns 10 minutos, fica bem quente, quase queimando. Isso é normal, para um chip que deveria estar ocioso?

Vejo duas possibilidades para o que está ocorrendo:

1. Logo após o boot, o MT1389S lê o firmware e entra em loop, cortando qualquer comunicação serial (isso é possível?).
2. Logo após o boot, o MT1389S lê o firmware e ativa o modo de ler ou gravar a flash, fazendo com que este último chip não responda a outros comandos (pois está em modo leitura/gravação).

No data sheet não consegui ver um modo de apagar o chip na marra. Talvez zerando o chip as coisas voltem ao normal.

Também alterei o ini do Flasher para que o mesmo, ao detectar um chip 0xFF (não identificado), o considerasse MXIC(A29LV160ATT/MX29LV160BT) e enviasse os códigos de gravação de forma forçada. Inicialmente ele tenta gravar, mas depois dá erro, dizendo que não há comunicação.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 07:37:29 pm
Funcionou!!! :yahoo!: Incrível! Vou explicar como e postar a foto para Ryan ver, pois isso pode interessar a ele.

Eu pensei que o chip principal estava, de algum modo, bloqueando a flash, certo? Então primeiro pensei em alimentar a flash diretamente, sem ligar o player. Depois, pensei em fazer uma experiência doida. Tentar soltar o conector da fonte na placa principal aos poucos, na tentativa de deixar passar somente a tensão para a flash. E funcionou! Bom, tava no windows e levou 30 minutos para atualizar (o driver prolific, no linux leva 3 minutos), mas depois eu pude testar e está tudo funcionando normal agora. Inclusive a detecção da flash. Durante o upgrade, eu toquei no MT1389S e o mesmo estava quente (não tanto como antes, mas bem quentinho), o que significa que nem toda a alimentação dele foi cortada (mas alguma parte dele não estava funcional, certamente, durante o upgrade).

Em tempo: o modelo exato desse DVD é DV397H-N. Só agora depois do zeurt postar os firmwares dos submodelos do 392H é que reparei. Assim, o outro, com chip MT1389M, deve ter outra letra no final. Vou estudar esses firmwares durante a semana e continuar com desenvolvimento aqui.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 31, 2009, 08:02:14 pm
Cara, acompanhei agora o seu sofrimento, pô que bom que deu certo essa sua doidera aí, senão, eu ia ficar com peso na consciência aqui  :laugh: !!

E sobre o MT1389M ter outra letra no final... infelizmente não tem, aqui atrás é representado pela N também.. tanto atrás do aparelho, como dentro, lembro que quando tirei a foto, tinha uma etiquetinnha dizendo DV397H-N.

Eu estava pra te dizer isso mas esqueci ...

Me tira uma dúvida, em que linguagem os firmwares são programados ?
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 31, 2009, 09:57:55 pm
E sobre o MT1389M ter outra letra no final... infelizmente não tem, aqui atrás é representado pela N também.. tanto atrás do aparelho, como dentro, lembro que quando tirei a foto, tinha uma etiquetinnha dizendo DV397H-N.

??? Estranho, pode ser erro da LG. O completo aqui é DV397H-N_AZ.

Eu estava pra te dizer isso mas esqueci ...

Me tira uma dúvida, em que linguagem os firmwares são programados ?

Não sei, mas deve ser C. Além disso, partes diferentes do firmware são compiladas para processadores/controladores diferentes (há ao menos dois processadores dentro do chip, o 8032, de 8 bits e arquitetura CISC, e um poderoso ARM, de 32 bits e arquitetura RISC).

Mais informações: http://ryan.com.br/smf/index.php?topic=179.0
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 01:14:19 am
Mas meu HDMI nunca mais funcionou depois daquela atualização.

Eu estava pensando numa possibilidade a respeito da HDMI que parou de funcionar:
Existem alguns valores de endereços EEPROM (conhecidos como OPTION CODES) que são acessados ao se pressionar PAUSE, 1, 4, 7, 2 (na tela com logotipo LG e SEM DISCO). Pode-se editar esses valores com as setas do controle remoto. Ao terminar, pressionar PAUSE. As modificações se efetivam ao desligar e ligar o player.
Penso que talvez, quando seu player "morreu" esses valores podem ter sido perdidos. Portanto, é necessário verificar esses valores, e pedir para outro usuário que tenha o DV397H verficar também, para comparar.
Tive essa idéia pois lembrei que li uma vez num forum, um caso de um usuário que zerou esses valores (de outro player LG) na tentativa de tornar o player Region Free. Ele conseguiu, mas depois foi constatado que a HDMI parou de funcionar (e ainda por cima o usuário nem havia anotado os valores originais para voltar ao estado anterior  :dashhead1: ).
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 01, 2009, 02:01:12 am
Mas meu HDMI nunca mais funcionou depois daquela atualização.

Eu estava pensando numa possibilidade a respeito da HDMI que parou de funcionar:
Existem alguns valores de endereços EEPROM (conhecidos como OPTION CODES) que são acessados ao se pressionar PAUSE, 1, 4, 7, 2 (na tela com logotipo LG e SEM DISCO). Pode-se editar esses valores com as setas do controle remoto. Ao terminar, pressionar PAUSE. As modificações se efetivam ao desligar e ligar o player.
Penso que talvez, quando seu player "morreu" esses valores podem ter sido perdidos. Portanto, é necessário verificar esses valores, e pedir para outro usuário que tenha o DV397H verficar também, para comparar.
Tive essa idéia pois lembrei que li uma vez num forum, um caso de um usuário que zerou esses valores (de outro player LG) na tentativa de tornar o player Region Free. Ele conseguiu, mas depois foi constatado que a HDMI parou de funcionar (e ainda por cima o usuário nem havia anotado os valores originais para voltar ao estado anterior  :dashhead1: ).

Hum... Obrigado zeurt, depois vou dar uma olhada nisso (se alguém puder digitar a sequência dita pelo zeurt e me passar os valores mostrados, eu agradeço  ;D). Parece está relacionado com o que o Ryan falou anteriormente. Deve ser algo nesse nível mesmo, algum endereço não flasheado no upgrade, mas que é lido para o HDMI funcionar (segundo o data sheet, esta flash possui um lock para evitar que alguns setores sejam gravados.

Olha só, fiz um firmware híbrido, com o RISC do 397H de chip S e o 8032 do 397H de chip M. E deu o mesmo problema (é no 8032!). O player morreu e não atualizava mais o firmware. Mas eu já recuperei usando o método anterior. Mas só que agora, depois que o upgrade começou a ser feito, eu empurrei e encaixei o conector completamente. O upgrade continuou. Ou seja, o problema era só para iniciar o upgrade. Como eu falei antes, acho que no momento que se inicia a alimentação do chip principal, algo ocorre e não permite iniciar o upgrade. Deixando alguns pontos sem alimentação, torna-se possível entrar no modo de upgrade.

EDIT: O código não funcionou. O de região funciona, mas esse não. Talvez para o DV397H seja outro. Vou procurar.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 02:35:18 am
EDIT: O código não funcionou. O de região funciona, mas esse não. Talvez para o DV397H seja outro. Vou procurar.[/b]

Nos LGs antigos até o DV256K o código era esse. Realmente, nos novos (como o DV397H) deve ter mudado. Tem que procurar no firmaware. Tem uma área onde se encontram todos os códigos.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 01, 2009, 04:51:33 am
EDIT: O código não funcionou. O de região funciona, mas esse não. Talvez para o DV397H seja outro. Vou procurar.[/b]

Nos LGs antigos até o DV256K o código era esse. Realmente, nos novos (como o DV397H) deve ter mudado. Tem que procurar no firmaware. Tem uma área onde se encontram todos os códigos.

Obrigado de novo, zeurt. Aqui está o código (em vermelho):
#0536A2:   03 01 04 01 05 09 13 02 04 08 06 05 13 01 04 07 08 09 13
Não é possível editar as opções, mas a tecla skip passa de página e na última informa que o HDMI está com saída RGB.

Novidade para quem tem o DV392H:
Bom, eu testei novamente o firmware do DV392H (com chip S) e vi que a tecla resolution funciona sim. Só não funciona no momento em que se liga o player pela primeira vez. Depois que entra em um filme ou desliga/liga o player, funciona. A única diferença que eu vi foi no menu áudio, que há um opção para o vocal.

Então, quem tiver o DV392H, com chipset MT1389S, provavelmente poderá usar o firmware 2.2 que está neste tópico
, mas precisamos que alguém teste e verifique todas as funcionalidades.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 03:00:46 pm
Não é possível editar as opções, mas a tecla skip passa de página e na última informa que o HDMI está com saída RGB.

Eu esqueçi de dizer que, no DV256K, as opções são editadas com as teclas numéricas do controle (0 a 9, sendo que, se não me engano deve-se pressionar 0 a 5 por 3 segundos para A a F).

Nota 1: No DV256K não dá para passar de página com SKIP (só tem uma página).

Nota 2: Caso se possa editar as opções como descrevi acima, também no DV397H, estão descobertas novas possíveis teclas para serem utilizadas para outras funções no futuro: 0 a 5, pressionando por 3 segundos.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 01, 2009, 03:20:06 pm
Hum... Obrigado zeurt, depois vou dar uma olhada nisso (se alguém puder digitar a sequência dita pelo zeurt e me passar os valores mostrados, eu agradeço  ;D). Parece está relacionado com o que o Ryan falou anteriormente. Deve ser algo nesse nível mesmo, algum endereço não flasheado no upgrade, mas que é lido para o HDMI funcionar

Não é bem isso. O upgrade grava apenas na flash e os parâmetros estão gravados na EEPROM.

O que pode acontecer é que um dos firmwares está programado para mudar certos valores da EEPROM quando resetado (depois do upgrade).

Esse problema ocorreu com o Philips DVP5980 de Rafalibrenz. Durante testes com um firmware de DVP5960 o aparelho dele "mudou de identidade" para DVP5982 e não houve jeito de fazê-lo se identificar novamente como DVP5980.

http://ryan.com.br/smf/index.php?topic=170.msg9173157#msg9173157

Acreditamos que o firmware de DVP5960 mude um valor na EEPROM que é justamente o usado pela Philips para saber de que aparelho se trata (o firmware do DVP5980 serve em outros seis modelos e diferencia os aparelhos por algum byte na EEPROM).

(segundo o data sheet, esta flash possui um lock para evitar que alguns setores sejam gravados.

Boot sector. Esse recurso não é usado em nenhum MT13x9 que eu conheça.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 08:02:40 pm
Percebi uma coisa: a diferença principal entre o DV392H e o DV397H é que o segundo possui a função Karaoke, enquanto que o primeiro não. Rictad, provavelmente, além da presença da função VOCAL no Menu AUDIO (que não existe no DV397H) com o Firmware do DV392H, não deve existir a função PONTUÇÃO (RATING) do Karaoke, não é?
Portanto, quem tem o DV392H provavelmente não terá problemas em usar o Firmware do DV397H (em termos de perda de funções só faltaria a função VOCAL - ver obs. abaixo). Já quem tem o DV397H pode perder a função Karaoke se usar o firmware do DV392H (caso não seja possível modificar o Firmware de alguma maneira para contornar isso...).

Obs: Não entendi muito bem para que serve a função VOCAL. Penso que usando determinados discos de Karaoke ela alternaria entre: música sem voz, e música com voz. Quem tem esse player e gosta de cantar Karaoke, tem que fazê-lo usando um microfone ligado a um reciever.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 01, 2009, 09:51:37 pm
Eu esqueçi de dizer que, no DV256K, as opções são editadas com as teclas numéricas do controle (0 a 9, sendo que, se não me engano deve-se pressionar 0 a 5 por 3 segundos para A a F).

Nota 1: No DV256K não dá para passar de página com SKIP (só tem uma página).

Nota 2: Caso se possa editar as opções como descrevi acima, também no DV397H, estão descobertas novas possíveis teclas para serem utilizadas para outras funções no futuro: 0 a 5, pressionando por 3 segundos.


Realmente, as teclas de 1 a 6 geram outros códigos se pressionadas por 3 segundos.
Mas acho que estamos falando de outra tela. Essa aqui não mostra valores numéricos. Na primeira página tenho o seguinte:

Citar
1. EDID

  -TV SYSTEM :NTSC
-AUTO MODE:  OFF
-VSDB Match:  Fail
-EDID parsing:  Fail

2. Supported by sink

-408i/576i:    No /No
-480p/576p:  No /No
-720p/720p:  No /No
-1080i/1080i:  No /No
-1080p/1080p:  No /No

Please press F-Skip key to see next page..

E na segunda página:

Citar
3. HDCP

-AKSV & BKSV:   Fail Fail
-R0 & R0':   Fail
-Rl & Rl':   Fail
-Repeater Bit:   OFF
-Support Al Bit:  OFF
-HDCP Authentication:  Fail

4. Current Status

-Video Mode:   YPbPr  480i
-Audio Mode:   PCM
-HDMI Format:  RGB

Qualquer coisa que aperte, mesmo os números, sai da tela.

Percebi uma coisa: a diferença principal entre o DV392H e o DV397H é que o segundo possui a função Karaoke, enquanto que o primeiro não. Rictad, provavelmente, além da presença da função VOCAL no Menu AUDIO (que não existe no DV397H) com o Firmware do DV392H, não deve existir a função PONTUÇÃO (RATING) do Karaoke, não é?
Portanto, quem tem o DV392H provavelmente não terá problemas em usar o Firmware do DV397H (em termos de perda de funções só faltaria a função VOCAL - ver obs. abaixo). Já quem tem o DV397H pode perder a função Karaoke se usar o firmware do DV392H (caso não seja possível modificar o Firmware de alguma maneira para contornar isso...).

Isso! Então está aí a diferença. O DV392H não possui Karaoke.

Não é bem isso. O upgrade grava apenas na flash e os parâmetros estão gravados na EEPROM.

O que pode acontecer é que um dos firmwares está programado para mudar certos valores da EEPROM quando resetado (depois do upgrade).

Esse problema ocorreu com o Philips DVP5980 de Rafalibrenz. Durante testes com um firmware de DVP5960 o aparelho dele "mudou de identidade" para DVP5982 e não houve jeito de fazê-lo se identificar novamente como DVP5980.

Certo, me expressei mal. Como disse o zeurt, se o HDMI necessita de algum parâmetro na EEPROM, pode ter acontecido desse parâmetro ter sido modificado após aquela antiga atualização mal sucedida que eu fiz. Não durante a gravação da Flash em si, mas após a inicialização do player. Veja que eu, naquele momento, ainda estava iniciando meus "estudos" do firmware  ;D e fiz uma modificação maluca justamente na rotina ARM_GetChar. Eu nem sabia o que era, parece que faz uma eternidade :laugh:. Eu alterei um endereço, não lembro mais. Como a ARM_GetChar é usada inúmeras vezes, o player fez várias operações erradas após o boot, inclusive aquelas em que ele lê algo e depois grava com a ARM_PutChar. Isso teve um lado positivo, claro, foi por causa disso que eu fiz o cabo...  :laugh:
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 10:47:32 pm
Mas acho que estamos falando de outra tela. Essa aqui não mostra valores numéricos.

Estamos falando de telas diferentes: na minha apenas aparecem alguns valores (bytes) no alto da tela. Editado: aparece a string EEPROM antes dos bytes. Com as setas se navega por eles e com os números do controle pode-se editar esses valores.
Acho que você ainda não achou o código certo...  ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 01, 2009, 11:22:22 pm
Mas acho que estamos falando de outra tela. Essa aqui não mostra valores numéricos.

Estamos falando de telas diferentes: na minha apenas aparecem alguns valores (bytes) no alto da tela. Com as setas se navega por eles e com os números do controle pode-se editar esses valores.
Acho que você ainda não achou o código certo...  ;D

Provavelmente. Existem outras sequências lá. Testei todas, mas elas não funcionam, pelo menos não na tela de logotipo.

Será que seria perigoso criar uma rotina que zere a EEPROM inteira?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 11:33:50 pm
Rictad, só por curiosidade: você chegou a testar a HDMI com o firmware do DV392H?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 01, 2009, 11:45:34 pm
Outra coisa: esse código PAUSE 1, 4, 7, 8, 9 está bem parecido com o PAUSE 1, 4, 7, 2. Você poderia testar com a bandeja do dvd aberta, teclando STOP, e depois PAUSE, etc. Já vi gente recomendando isso, não sei se ajuda alguma coisa, mas vale a pena tentar. Pode-se tentar essa sequencia em outros lugares também (ex: no menu Vídeo/Formato/16:9, etc.).
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 02, 2009, 12:09:54 am
Encontrei mais essas informações referentes ao LG DVX9900H:

Citar
Region code + HDCP + Macrovision

HDCP off/on:
PAUSE,1,2,3,6,9
on screen: "OK H" or "Default H" (Status)
(2xPAUSE to leave)

Macrovision off/on:
Pause,7,4,1,5,3,6,9
on screen: "OK M" oder "Default M" (Status)
(2xPAUSE to leave)

EDID off/on: (Extended Display Identification Data)
Pause,1,4,7,8,9
on screen: "OK E" oder "Default E" (Status)
(2xPAUSE to leave)

Region Code:
Pause,3,1,4,1,5,9
0=all

Video/HDMI Info Page:
Pause,2,4,8,6,5

Factory reset + SYSTEM INFORMATION page
go to Setup/video/TV Aspect/16:9
and press 1,3,9,7,1,3,9,ENTER


after disabling macro and hdcp componant now works on all res 720p and 1080i

Esses códigos são exatamente os mesmos existentes no DV397H. O estranho é que não tem referência aos OPTION CODES dos outros LGs. Novamente recomendam abrir a bandeja antes de digitar os códigos.

P.S.: O único código do DV397H que não está nessa lista é o PAUSE 3, 2, 1, 4, 7, 8, 9.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 02, 2009, 12:49:33 am
Rictad, só por curiosidade: você chegou a testar a HDMI com o firmware do DV392H?

Não. Pensei em fazer, mas ainda não fiz por preguiça. Só testei com o do DV397H mesmo, inclusive ontem, depois de ressucitá-lo.

Outra coisa: esse código PAUSE 1, 4, 7, 8, 9 está bem parecido com o PAUSE 1, 4, 7, 2. Você poderia testar com a bandeja do dvd aberta, teclando STOP, e depois PAUSE, etc. Já vi gente recomendando isso, não sei se ajuda alguma coisa, mas vale a pena tentar. Pode-se tentar essa sequencia em outros lugares também (ex: no menu Vídeo/Formato/16:9, etc.).

Aparentemente, todos os códigos estão aqui:

DV256K:

B0:13B0  37 0A 3A 20 4D 54 31 33  38 39 20 45 02 01 01 03  7.: MT1389 E....
B0:13C0  00 00 00 07 02 01 00 04  09 09 04 05 06 02 05 08  ................
B0:13D0  00 11 01 03 09 07 01 03  09 11 00 00 00 13 03 01  ................
B0:13E0  04 01 05 09 13 01 04 07  02 00 00 00 00 00 00 00  ................


DV397H:

B5:3670  30 31 2F 30 38 0A 3A 20  4D 54 31 33 38 39 20 53  01/08:. MT1389 S
B5:3680  02 01 02 06 00 00 00 00  02 01 00 04 09 09 04 05  ................
B5:3690  06 02 05 08 00 11 01 03  09 07 01 03 09 11 00 00  ................
B5:36A0  00 13 03 01 04 01 05 09  13 02 04 08 06 05 13 01  ................
B5:36B0  04 07 08 09 13 01 02 03  06 09 13 03 02 01 04 07  ................
B5:36C0  08 09 13 07 04 01 05 03  06 09 00 00 00 00 00 00  ................


O #13 é o código de PAUSE e o #11 o código de ENTER.

Esses 4 últimos não consegui fazer funcionar, mas a sua tabela mostra que três deles existem. Vou tentar tudo isso que você sugeriu. Muito obrigado, zeurt!
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Abril 02, 2009, 02:16:31 pm
Faz um tempo que não lia o foro e me assustei bastante quando li o que lhe tinha passado a rictad, de facto ia participar da vaquinha...

Eu não pude obter o firmware do DV397H com chip MT1389M ainda, mas pelo visto é possível que vocês possam ter algum bom resultado ao respecto.

Saludos a todos desde Chile.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 02, 2009, 04:56:40 pm
Ariel, vocês se preocupam demais  ;D.

Bom, eu vasculhei o firmware do DV392H com chip MT1389M e vi que todas as rotinas que eu modifiquei estão lá também, o que era esperado, já que ao nível do usuário, os firmwares são idênticos. Trata-se do mesmo firmware, compilado para um processador diferente. Portanto, as únicas diferenças nas rotinas se referem a endereços de memória (EEPROM, RAM, ROM etc) diferentes. Também alguns outros dados podem ser diferentes, como o número da janela de legenda, que é #8, e não #9.

Isso significa que poderei fazer todas as mesmas modificações para o DV397H com chip MT1389M. Já poderia fazer agora, com o firmware do DV392H. Só não vou fazer porque aquele player, como o zeurt já apontou, não possui Karaoke, o que deixaria o DV397H sem esse recurso. Assim, seria melhor esperar um pouco mais até o firmware do próprio DV397H aparecer. E depois, os usuários do DV392H poderão usar o mesmo firmware.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 02, 2009, 08:38:37 pm
drsouza,
Tenho que dar uma olhada: se for parecido com o DV256K será fácil. O engraçado é que esse ponto foi um dos mais diferentes até agora entre o DV256K e o DV397H (a maneira de corrigir o problema foi diferente).
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 03, 2009, 11:58:28 pm
Acho que o problema está resolvido! Estou enviando firmware do LG DV397H v3.33 provavelmente para o subtipo com MT1389M.  :yahoo!:
Tem que testar. O firmware é da America Latina (portanto NTSC).
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 04, 2009, 01:44:49 am
Acho que o problema está resolvido! Estou enviando firmware do LG DV397H v3.33 provavelmente para o subtipo com MT1389M.  :yahoo!:
Tem que testar. O firmware é da America Latina (portanto NTSC).

Grande zeurt, o garimpeiro de firmwares! Vou trabalhar nele aos poucos!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 04, 2009, 04:30:20 am
Firmware alfa 1.0 para o DV397H com chip MT1389M:

Possui:
1) Correção do timing bug.
2) Cor da legenda trocada para amarelo canário.
3) Fonte da legenda alterada para Arial Narrow Bold 23 *.

Atenção, essa é uma versão de testes e apenas para quem tem o DV397H com chip MT1389M! Antes de testá-la, atualize com a versão original postada pelo zeurt para termos certeza da compatibilidade. Se necessário, renomeie o arquivo conforme explicado no início deste tópico. E vale lembrar que quem tem o DV397H com chip MT1389S não deve utilizar esta versão.

Há algum risco na atualização (como sempre há), já que eu mesmo não pude testar (mas é pequeno, pois as modificações que fiz foram mínimas e em pontos já bem conhecidos). Espero que alguém teste e poste os resultados aqui para que os demais usuários possam atualizar.

*A minha maior dúvida é saber se a legenda ficará cortada ou não (problema no espaçamento entre linhas), pois não sei se o código ARM do modelo com MT1389M possui o mesmo bug do modelo com MT1389S. Apesar de eu ter falado anteriormente que as rotinas eram as mesmas para os dois modelos, observei que no ARM a coisa não é tão trivial.

EDIT: Caso as legendas fiquem cortadas, o usuário poderá gravar novamente o firmware original até eu corrigir o problema. Se não ficarem cortadas, poderei prosseguir com as outras modificações. Mas preciso de ao menos uma pessoa para testar. Um usuário "beta tester"! Quem quiser ser usuário de testes, pode me mandar uma mensagem privada com o seu email para eu poder enviar o firmware com uma tag de beta na tela de background. Depois de testado e confirmado, eu posto para todos. Acho melhor do que postar o firmware às escuras.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 04, 2009, 05:44:24 am
(Para todos: por favor desculpem o "off-topic", será a única mensagem que postarei sobre este assunto, já que fui ameaçado de  expulsão em público neste tópico, portanto faço esta resposta também pública.)

Quem desrespeita regras que foram claramente expostas antecipadamente não deve esperar a simpatia da moderação. Se você estivesse fazendo algo "nebuloso", teria sido repreendido em particular.

E não fiz uma ameaça. Eu lhe dei uma oportunidade.


26/04/2009 o usuário drsouza (http://ryan.com.br/smf/index.php?action=profile;u=1117) apagou as mensagens relacionadas com esta resposta minha e está sem conseguir fazer logon novamente por culpa inteiramente dele (http://ryan.com.br/smf/index.php?topic=335.msg9176654#msg9176654).
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 04, 2009, 06:26:24 am

Eu pensei que o chip principal estava, de algum modo, bloqueando a flash, certo? Então primeiro pensei em alimentar a flash diretamente, sem ligar o player. Depois, pensei em fazer uma experiência doida. Tentar soltar o conector da fonte na placa principal aos poucos, na tentativa de deixar passar somente a tensão para a flash. E funcionou!

Isso é estranho. A única diferença entre os LGs e o "padrão" é que nos aparelhos LG (pelo menos nos que eu testei) você precisa apertar o botão Power após energizar (mesmo que o aparelho esteja "morto"), senão a comunicação não funciona. Edit: Esqueçam que eu disse essa bobagem. Essa particularidade nem é exclusiva dos LGs, nem todo LG se comporta assim.

Mas eu esqueci de comentar uma coisa. O meu DK194G também apresentou o mesmo problema quase no mesmo dia que o seu.  :blink: Ainda vou testar esse seu "vodu"  ;D

Se você tivesse conseguido usar o MTKRemote eu iria teorizar que ele fosse (embora isso seja improvável) o culpado por isso.

Edit: bobeira minha. O que aconteceu foi que eu deixei o DK194G conectado ao PC e fui dormir. Quando acordei o aparelho estava morto. Fui tentar reinstalar o firmware usando o Mtktool 1.31 e como não funcionou assumi algo mais sério e fiquei cego para as explicações mais óbvias. Na verdade o DK194g requer o Mtktool 2.35  :dashhead1:


Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 04, 2009, 01:46:05 pm
Isso é estranho. A única diferença entre os LGs e o "padrão" é que nos aparelhos LG (pelo menos nos que eu testei) você precisa apertar o botão Power após energizar (mesmo que o aparelho esteja "morto"), senão a comunicação não funciona. Edit: Esqueçam que eu disse essa bobagem. Essa particularidade nem é exclusiva dos LGs, nem todo LG se comporta assim.

E no caso do DV397H com chip S, não precisa aperta power. A comunicação funciona sempre, desde que você não já tenha começado um processo leitura/gravação. Se já iniciou, tem que tirar o cabo e conectar de novo.

Mas eu esqueci de comentar uma coisa. O meu DK194G também apresentou o mesmo problema quase no mesmo dia que o seu.  :blink: Ainda vou testar esse seu "vodu"  ;D
(...)
Fui tentar reinstalar o firmware usando o Mtktool 1.31 e como não funcionou assumi algo mais sério e fiquei cego para as explicações mais óbvias. Na verdade o DK194g requer o Mtktool 2.35  :dashhead1:

Bom, ainda bem que não era o caso do "vodu"  ;D. Porque o ponto é um pouco difícil de acertar. Tem que ir soltando aos poucos, mas às vezes passa e desliga mais do que o necessário (como a fonte é meio ruidosa, eu ainda ia ouvindo a mudança do som à medida em que a carga aumentava ou diminuía - eu sei, isso parece mais "vodu" ainda, mas as fontes, em geral, emitem ruídos conforme a potência usada). Eu acho que isso é uma particularidade desse chip MT1389S. Ele deve ser mais "chato" para deixar atualizar a flash. O correto seria ligar cada um dos fios da alimentação em interruptores e ir desligando um a um, da esquerda para a direita (na referência da foto). Assim, saberia exatamente qual a tensão ou tensões estaria cortando (tem o esquema desenhado na placa da fonte). E com isso, dava também para saber qual ou quais componentes deixariam de ser alimentados. Edit: Como não sou técnico, não vou fazer isso. Mas eu sei que se um dia você pegar um player desse, fará alguns testes  :laugh:.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 04, 2009, 07:50:11 pm
O firmware original... FUNCIONOUUUU !!!!!

 :clapping:  :yahoo!:

Agora vou por o do rictad !!
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 04, 2009, 08:14:43 pm
Não sei o que está havendo ...

Não consigo fazer o firmware do Rictad atualizar..... Já tentei renomear de tudo o que é forma ....

Qual é maneira correta ? tentei fazer da mesma forma que fiz o primeiro ..... apenas colocoando meu modelo + rom !!

Ajudem-me !!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 04, 2009, 08:16:06 pm
Não sei o que está havendo ...

Não consigo fazer o firmware do Rictad atualizar..... Já tentei renomear de tudo o que é forma ....

Qual é maneira correta ? tentei fazer da mesma forma que fiz o primeiro ..... apenas colocoando meu modelo + rom !!

Ajudem-me !!

Aparece a tela de atualização ou nem isso aparece?
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 04, 2009, 08:22:08 pm
Se você entrar na tela de serviço, verá que o nome que eu botei estava errado. O certo é LG_DV_LV81F32B400MM.ROM. Acabei deixando o nome errado :dashhead1:. Mas era só o nome ;D. Eu já atualizei o arquivo com o nome correto. Já estou com mais atualizações quase prontas, mas só posso disponibilizá-las depois que vocês testarem.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 04, 2009, 09:50:17 pm
BELEZA... agora sim !!

A cor ficou perfeita, e a fonte também, (modifiquei meu último recado, é que eu olhei o modelo dele denovo na tela de serviço e esqueci que reinicia as configurações, os caracteres tinham ficados em árabe rs) !!

PERFEITO CARA, OBRIGADO !!

E pode continuar, que vou atualizando !!

Manda bala !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 04, 2009, 11:53:31 pm
BELEZA... agora sim !!

A cor ficou perfeita, e a fonte também, (modifiquei meu último recado, é que eu olhei o modelo dele denovo na tela de serviço e esqueci que reinicia as configurações, os caracteres tinham ficados em árabe rs) !!

PERFEITO CARA, OBRIGADO !!

E pode continuar, que vou atualizando !!

Manda bala !

allanzin,

Tire-me umas dúvidas. Aliás, pegue um filme com legendas até 4 linhas ou melhor, use a legenda que envio em anexo, renomeando o arquivo para o mesmo nome do filme. Se você puder tirar fotos dos 5 primeiros trechos de legenda, eu agradeço. O primeiro tem 1 linha, o segundo 2... e o quinto 5 (cinco linhas não são mostradas, mas é só para testar mesmo). Não se preocupe com o conteúdo, a legenda é só para teste mesmo.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 05, 2009, 01:01:26 am
Estão aí !!

;)


Editado pelo moderador: Eu processei os arquivos e re-anexei como imagens para facilitar a visualização e comentários.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 05, 2009, 01:13:59 am
Nossa! Parece o LG DV256K  :o

1- Tem o bug da primeira linha deslocada a esquerda.
2- A quebra de linha não respeita os espaços entre as palavras.
3- O lado bom é que não tem o bug das legendas cortadas devido ao espaço entre as linhas, que aqui não é fixo.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 05, 2009, 01:24:47 am
Nossa! Parece o LG DV256K  :o

1- Tem o bug da primeira linha deslocada a esquerda.
2- A quebra de linha não respeita o espaço entre as palavras.
3- O lado bom é que não tem o bug das legendas cortadas devido ao espaço entre as linhas, que aqui não é fixo.

E também não suprime as tags de itálico.
No outro modelo, até agora não consegui achar a rotina do ARM responsável por ignorar as tags. Estranhamente nada na rotina que processa a legenda parece fazer isso. E eu preferia que não ignorasse também, pois daria para fazer coisas mais interessantes, como colocar aspas no lugar da tag.

Obrigado, pelas fotos allanzin. A próxima modificação vai demorar um pouco mais, pois resolvi adicionar mais coisas de uma vez, e tenho que tomar cuidado com os menus.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 05, 2009, 02:39:44 pm
E também não suprime as tags de itálico.
No outro modelo, até agora não consegui achar a rotina do ARM responsável por ignorar as tags. Estranhamente nada na rotina que processa a legenda parece fazer isso. E eu preferia que não ignorasse também, pois daria para fazer coisas mais interessantes, como colocar aspas no lugar da tag.

Normalmente, há um filtro que elimina tudo o que está entre < >.
Rictad, aproveitando a deixa: até agora eu não cheguei a fazer nehum PEDIDO explícito a você, a respeito de novas implementações (apenas dei sugestões, tentei ajudar com alguma coisinha que pude, etc.). Se eu pudesse escolher apenas um pedido, seria esse que vou fazer agora:
Implementação de Suporte a <i> tags, possibilitando a exibição correta de legendas em itálico.
Essa implementação não existe em nehum DVD/DivX player no planeta (incluindo todos o firmwares alternativos existentes até o momento).
Vale a pena ver isso (http://ryan.com.br/divx_compara.htm#tags) que o Ryan escreveu a respeito da importância das legendas em itálico.
Caso você conseguisse, as legendas externas baseadas em texto não ficariam devendo em praticamente nada importante quando comparadas as legendas baseadas em gráficos (XSUB, idx/.sub, etc.).
Já se discutiu esse tema algumas vezes aqui no forum e as conclusões foram:
1- Deve se colocar um filtro para <i> e para </i> nessa rotina do ARM, no meio do loop, perto dos locais onde se faz a verificação dos caracteres (carcteres válidos, etc.).
2- Ao se detectar <i> há duas opções:
a- Trocar de fonte (da fonte normal para fonte em itálico correspondente). Nesse caso deveria se criar 2 grupos de fontes (ex: 1, 2, e 3 normais e 4, 5 e 6 correspondentes em itálico).
b- A outra alternativa seria criar fontes que contenham os caracteres normais e em seguidas os correspondentes em itálico (nas mesmas fontes). Então, ao se detectar <i>, se somaria determinado valor fixo ao código do caractere, e isso faria a transformação.
3- Ao se detectar </i> ocorreria o inverso do descrito acima.
4- No início de cada novo parágrafo poderia haver uma verificação: se a fonte estivesse em itálico, deveria voltar para a normal correspondente (pois as vezes se esqueçe de colocar </i> no final do parágrafo).

Alguns problemas a vista:
-Tem que ver se tem espaço suficiente no ARM para essa implementação (áreas de erro). Se não tiver, deve-se usar o ARMResizer (é mais complicado quando o ARM tem mais que 2 ou 3 blocos, como é o caso de DVD players com USB: tem que pesquisar).
-Eu não sei muito bem como faria para o ARM trocar a fonte. Você já descobriu e descreveu como é feita a seleção da fonte pelo 8032. Espero que seja possível o ARM interferir nessa seleção (memória compartilhada?).

Eu estou fazendo esse pedido pois não consigo fazer isso sozinho. Cada nova coisa que aprendo é um pequeno capítulo no meu "Curso Auto-Didata de Assembly para ARM e 8032". Antes de me interessar por DivX players e conhecer o Forum do Ryan, o único conhecimento de programação que eu tinha era de Linguagem Basic, o qual adquiri na década de 80, e desde então estive afastado da Computação, e das Ciências Exatas em geral (minha profissão não tem nada a ver com isso).
Desde já, obrigado!  :)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 05, 2009, 02:56:26 pm

Normalmente, há um filtro que elimina tudo o que está entre < >.
Rictad, aproveitando a deixa: até agora eu não cheguei a fazer nehum PEDIDO explícito a você, a respeito de novas implementações (apenas dei sugestões, tentei ajudar com alguma coisinha que pude, etc.). Se eu pudesse escolher apenas um pedido, seria esse que vou fazer agora:
Implementação de Suporte a <i> tags, possibilitando a exibição correta de legendas em itálico.
Essa implementação não existe em nehum DVD/DivX player no planeta (incluindo todos o firmwares alternativos existentes até o momento).

Já tem 1 semana que me dedico a isso!  :laugh:.

O problema é que já passei e repassei por vários pontos do ARM que processam a legenda e não consigo ver o diabo do filtro das tags. Na rotina que processa os caracteres, as tags já chegam filtradas!! Eu, por exemplo, interceptei a rotina e troquei a exibição do caracter "a" pelo caracter "<" e o mesmo é mostrado normalmente. Assim, isso parece que não está na rotina que mostra a legenda. A legenda já é lida e jogada na memória cortando-se as tags. Então, agora, estou na busca da rotina que lê a legenda. E não consigo achar nada que filtre alguma coisa entre #3C "<" e #3E ">". Já cheguei a suspeitar que isso não seria feito pelo ARM... Se eu tivesse o player com o MT1389M já estaria progredindo nisso. No mínimo eu teria colocado uma opção para substituir as tags por aspas, o que já seria algo mais interessante do que suprimi-las. As outras opções, já li todas. A mais interessante que eu achei seria aumentar os caracteres da fonte, para incluir os itálicos. Depois, seria dar um offset quando encotrar as tags. Resta saber se o código ARM está preparado para processar a fonte com mais de 255 caracteres. Se o itálico vai ficar feio ou não, devido ao serrilhado, seria outro detalhe.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 05, 2009, 03:24:06 pm
Se o itálico vai ficar feio ou não, devido ao serrilhado, seria outro detalhe.

Legal que você já esteja investigando tudo isso! Pode ficar feio e com serrilhado à vontade: com certeza será MUITO melhor do que sem nada!  ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 05, 2009, 06:06:07 pm
allanzin,

Se você puder, confirme quantos codepages para legendas seu modelo possui. Segure a tecla subtitile por 3 segundos durante a exibição de um filme e anote os códigos cp's que aparecem. Depois, desligue e ligue o player e veja se ele sempre volta para algum padrão (cp1252 ou cp1250). E depois, digite o código da tela de serviço para zerar o player e veja em qual cp ficou. Estranhamente a rotina que muda a fonte parece ter somente 4 itens.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 05, 2009, 09:27:12 pm
Fiz...

Os códigos são: CP1250, CP1251, CP1252, CP1253.

Ao desligar e ligar ele manteve o último que estava... que no caso era o 1253.
Quando eu reiniciei ele foi para o CP1252.

 ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 05, 2009, 09:31:57 pm
Fiz...

Os códigos são: CP1250, CP1251, CP1252, CP1253.

Ao desligar e ligar ele manteve o último que estava... que no caso era o 1253.
Quando eu reiniciei ele foi para o CP1252.

 ;D

Obrigado!

Firmware Rictad versão 2 beta para o DV397H com chip MT1389M. Por favor, testem todas as mudanças:

* Incluídos 6 tipos de fontes para legendas DivX, usando o método do zeurt. Todas são cp1252. Para alterar a fonte, pressione a tecla subtitle por 3 segundos durante a exibição de um filme DivX. Aparentemente, a opção é gravada mesmo após desligar o aparelho.
* Legendas DivX são exibidas durante o zoom.
* Ícone de zoom desaparece em 3 segundos, em vez de 15 segundos.
* Nomes de arquivos no filebrowser, bem como informações das tags ID3, exibidos com acentuação e caracteres especiais.


Nota 1: As 6 opções de fonte precisam ser testadas. Esse modelo só alterna entre 4 codepages. Então eu forcei mais 2 itens, já que possui a mesma quantidade de fontes do outro aparelho e uma rotina de seleção de fontes idêntica.
Nota 2: A versão para o chip MT1389M segue numeração diferente da versão para o chip MT1389S.
Nota 3: String da versão alterada para V3.33-Rictad-2.0, a qual será modificada a cada versão.

Atenção: usuários do DV397H com chip MT1389S não devem atualizar com essa versão!

EDIT: Arquivo alterado para tentar resolver o problema de tela em preto e branco relatada pelo allanzin.
EDIT2: Alterado novamente.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 06, 2009, 12:07:22 am
TUDO TESTADO!

As legendas estão perfeitas, entraram as 6, o zoom mantendo a legenda também, os caracteres no filebrowser também estão acentuados, porém, a letra u, acentuada, não aparece...

Só uma coisa ficou fora do comum, ao ligar o player a imagem fica preta e branca, e só volta a ficar colorida depois que eu entro e saio do setup... :blink:

Mais uma vez grato !!

Se precisar de ajuda é só postar !!

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 06, 2009, 12:15:20 am
TUDO TESTADO!

As legendas estão perfeitas, entraram as 6, o zoom mantendo a legenda também, os caracteres no filebrowser também estão acentuados, porém, a letra u, acentuada, não aparece...

Só uma coisa ficou fora do comum, ao ligar o player a imagem fica preta e branca, e só volta a ficar colorida depois que eu entro e saio do setup... :blink:

Mais uma vez grato !!

Se precisar de ajuda é só postar !!

Acho que já tinha visto alguma coisa dessa letra "u" aí! ;D . Mas o estranho mesmo é esse preto e branco. Eu não mexi no sistema PAL/NTSC e, pelo que você falou, deve ser isso. Vou verificar.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 06, 2009, 12:23:19 am
Nunca tinha notado, mas no meu também não aparece o "u" minúsculo com acento agudo!  :blink:
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 06, 2009, 12:41:45 am
Você disse que a legenda é exibida durante o zoom, mas o ícone de zoom some rápido? Mais ou menos em 3 segundos?
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 06, 2009, 12:52:20 am
Você disse que a legenda é exibida durante o zoom, mas o ícone de zoom some rápido? Mais ou menos em 3 segundos?

Sim sim, em 3s mais ou menos, antes demorava bem mais, uns 10s, 15s !
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 06, 2009, 01:05:16 am
Nunca tinha notado, mas no meu também não aparece o "u" minúsculo com acento agudo!  :blink:

Acho que talvez a solução para isso seja a Rotina Convert Unicode to CP125x. Faz tempo que eu estava tentando entender porque o br0max tinha feito aquelas rotinas daquele jeito, com aquelas tabelas de 255 bytes que postei vários posts atrás. Parece que numa versão do firmware dele, foi destacado que o suporte a caracteres acentuados havia ficado mais completo, incluindo ú, ü, e outros carcteres que não lembro...  :-[
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 06, 2009, 01:10:15 am
Você disse que a legenda é exibida durante o zoom, mas o ícone de zoom some rápido? Mais ou menos em 3 segundos?

Sim sim, em 3s mais ou menos, antes demorava bem mais, uns 10s, 15s !

Bom, eu verifiquei tudo que mudei e não entendi o porquê do preto e branco. Vou refazer todo o processo de modificação a partir da versão anterior e trocarei o arquivo para a gente ver.

Acho que talvez a solução para isso seja a Rotina Convert Unicode to CP125x. Faz tempo que eu estava tentando entender porque o br0max tinha feito aquelas rotinas daquele jeito, com aquelas tabelas de 255 bytes que postei vários posts atrás. Parece que numa versão do firmware dele, foi destacado que o suporte a caracteres acentuados havia ficado mais completo, incluindo ú, ü, e outros carcteres que não lembro...  :-[

Sim, faltam o ú, o ü e o û. Então, depois eu vejo essa parte.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 06, 2009, 01:15:44 am
Nunca tinha notado, mas no meu também não aparece o "u" minúsculo com acento agudo!  :blink:

Esse é um problema comum.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 06, 2009, 01:21:00 am
Sim, faltam o ú, o ü e o û. Então, depois eu vejo essa parte.

Veja este post:
http://ryan.com.br/smf/index.php?topic=179.msg9172147;topicseen#msg9172147

Não tenho certeza agora, mas se não me engano ele está falando deste problema.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 06, 2009, 01:47:16 am
Não tenho certeza agora, mas se não me engano ele está falando deste problema.

É sim. Quando eu estava tentando implementar Caracteres Acentuados no FileBrowser, primeiro tentei usar essa Rotina de Conversão Unicode para CP125x que o jmaraujo descreveu nesse post. Depois, eu vi que o br0max usou uma outra Rotina de Conversão Unicode, que usava uma tabela de 255 bytes (diferente para cada Character Set: CP1250, CP1251, etc.), enquanto que a rotina do jmaraujo não tem essa tabela.
Agora estou me lembrando que tem um documento sobre isso (inclusive explica essa tabela, etc.). O difícil é entender (o Inglês está um pouco precário...). Estou enviando o documento.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 06, 2009, 01:53:06 am
allanzin,

Alterei o arquivo lá no post de lançamento do 2.0. Quando puder, baixe-o novamente para verificar se a tela em preto e branco continua. Caso continue, baixe novamente a versão alfa e teste-a também, pois eu alterei o arquivo lá e não tenho certeza se você baixou antes ou depois da alteração. Pode ser que o problema já esteja naquele arquivo.

Não tenho certeza agora, mas se não me engano ele está falando deste problema.

É sim. Quando eu estava tentando implementar Caracteres Acentuados no FileBrowser, primeiro tentei usar essa Rotina de Conversão Unicode para CP125x que o jmaraujo descreveu nesse post. Depoi, eu vi que o br0max usou uma outra Rotina de Conversão Unicode, que usava uma tabela de 255 bytes (diferente para cada Character Set: CP1250, CP1251, etc.), enquanto que a rotina do jmaraujo não tem essa tabela.
Agora estou me lembrando que tem um documento sobre isso (inclusive explica essa tabela, etc.). O difícil é entender (o Inglês está um pouco precário...). Estou enviando o documento.

É isso mesmo! ú, û e ü são 251, 252 e 253. Parece que tudo depois de 250 está cortado. Estranho isso. Já tinha visto esse post do jmaraujo, mas jurava que isso não acontecia no DV397H. Vou ler com calma depois. Obrigado, gente.
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Abril 06, 2009, 03:01:35 pm
Espectacular!

É genial voltar do fim de semana e encontrar-se com a excelente informação sobre o firmware para o chip MT1389M.

Muito obrigado rictad por dedicar-lhe tempo a este trabalho, obrigado também a allanzin por ser beta tester e em general, graças a todos os que participam deste foro. Espero poder provar a versão beta hoje na noite.
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Abril 06, 2009, 08:50:07 pm
Uma pergunta: ¿é possível uma nova opção de zoom via firmware?
Pergunto-o porque alguns arquivos AVI em minha televisão não atingem a se ver completamente e com zoom de redução (ao menos 1/2) estaria genial.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 06, 2009, 09:21:27 pm
allanzin,

Alterei o arquivo lá no post de lançamento do 2.0. Quando puder, baixe-o novamente para verificar se a tela em preto e branco continua. Caso continue, baixe novamente a versão alfa e teste-a também, pois eu alterei o arquivo lá e não tenho certeza se você baixou antes ou depois da alteração. Pode ser que o problema já esteja naquele arquivo.


É, testei e tirei a conclusão, no primeiro, o Alfa, ao ligar a tela aparece colorida, mesmo esse que você modificou por ultímo. Já no outro continua preto e branco ao ligar, mas após entrar e sair do setup fica tudo OK !

É estranho, mesmo entrando no filebrowser, continua preto e branco, é somente se eu entrar e sair do setup que volta a cor...

Você alterou a tela inicial, colocando sua identificação no firmware correto ? Então tente deixá-la padrão.. não sei nem se isso tem haver rsrs... Mas é uma tentativa...

Abraços !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 06, 2009, 09:59:05 pm
Uma pergunta: ¿é possível uma nova opção de zoom via firmware?
Pergunto-o porque alguns arquivos AVI em minha televisão não atingem a se ver completamente e com zoom de redução (ao menos 1/2) estaria genial.

Eu já pensei em verificar os níveis de zoom, mas vou deixar isso mais para frente. Como são os níveis nesse modelo, antes e após a atualização com o novo firmware? 100, 200, 300 e 400?

É, testei e tirei a conclusão, no primeiro, o Alfa, ao ligar a tela aparece colorida, mesmo esse que você modificou por ultímo. Já no outro continua preto e branco ao ligar, mas após entrar e sair do setup fica tudo OK !

É estranho, mesmo entrando no filebrowser, continua preto e branco, é somente se eu entrar e sair do setup que volta a cor...

Você alterou a tela inicial, colocando sua identificação no firmware correto ? Então tente deixá-la padrão.. não sei nem se isso tem haver rsrs... Mas é uma tentativa...
Abraços !

Ok, já modifiquei o arquivo de novo. Testa lá!
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 07, 2009, 12:24:36 am
TESTADO, FUNCIONOU PERFEITAMENTE..

Talvez tenha sido sua identificação na tela inicial !

E rictad, lendo posts antigos aqui do tópico, notei que várias modificações foram feitas no MT1389S, se eles tem as mesmas rotinas, é viável mexer nos menus e botões do MT1389M ?

Não dá pra copiar e colar rs ?

Abraços !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 12:40:04 am
TESTADO, FUNCIONOU PERFEITAMENTE..

Talvez tenha sido sua identificação na tela inicial !

E rictad, lendo posts antigos aqui do tópico, notei que várias modificações foram feitas no MT1389S, se eles tem as mesmas rotinas, é viável mexer nos menus e botões do MT1389M ?

Não dá pra copiar e colar rs ?

Abraços !

Pode deixar que isso eu vou fazendo aos poucos. Não vou deixar essa parte de fora não. Agora estou resolvendo o problema da acentuação. Tá quase pronto.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 03:03:03 pm
Firmware Rictad Versão 2.3 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

*Suporte total a caracteres ISO 8859-1 nos nomes dos arquivos exibidos no filebrowser.
*Suporte total a caracteres ISO 8859-1 nas ID3 tags e conversão de alguns caracteres CP1252, confome exemplos abaixo (entre outros):



*Correção na língua polonesa.
*Correção da fonte 11 (Arial Narrow), que estava em CP1250.


Nota: Não foi necessária a implementação da tabela de conversão de caracteres. Mais tarde mostro como foi feito.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 03:05:26 pm
Firmware Rictad Versão 2.1 beta para DV397H com chip MT1389M

ATENÇÃO, usuários do modelo DV397H com chip MT1389S não devem atualizar com essa versão!

*Suporte total a caracteres ISO 8859-1 nos nomes dos arquivos exibidos no filebrowser.
*Suporte total a caracteres ISO 8859-1 nas ID3 tags e conversão de alguns caracteres CP1252, confome exemplos abaixo (entre outros):



Nota: Coloquei a tela inicial (background) com a versão do firmware novamente, pois quero saber se ainda ficará preto e branco. É só mais um teste!

EDIT: Arquivo modificado. Tentativa de forçar temporariamente NTSC, até ser incluída opção de sistema de TV.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 07, 2009, 07:06:01 pm
Ok, os caracteres ficaram bem legais !

Tudo acentuado, inclusive o u ...

Porém ao ligar, preto e branco novamente.... se isso realmente é muito estranho alguém deveria testar e comentar se aconteceu no aparelho deles tb também, pode ser que seja a minha TV bem velhinha...

Abração, e obrigado novamente !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 08:13:02 pm
A rotina de seleção NTSC/PAL desse modelo é semelhante a do DV383, que o zeurt mostrou. O que acontece é que o modo automático parece selecionar o sistema de acordo com o filme e não com a TV. Acho que é assim que funciona o modo AUTO no br0max e no xypro. É um procedimento estranho. O background moficado que eu ponho trata-se de um filme, de apenas um quadro, em formato PAL (para manter as proporções) e feito com o TMPGEnc para manter a qualidade.

Eu fiz uma nova modificação no arquivo, tentando forçar o sistema NTSC no início, até eu implantar a opção de mudança de sistema no menu. Allanzin, quando puder, teste de novo.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 07, 2009, 08:14:31 pm
EDIT: Arquivo modificado. Tentativa de forçar temporariamente NTSC, até ser incluída opção de sistema de TV.

Testei o novo .... não funcionou por aqui ..!!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 08:18:47 pm
EDIT: Arquivo modificado. Tentativa de forçar temporariamente NTSC, até ser incluída opção de sistema de TV.

Testei o novo .... não funcionou por aqui ..!!

Ok, vou verificar mais um pouco, se não conseguir achar nada vou alterar a tela de novo.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 07, 2009, 08:26:05 pm
O que acontece é que o modo automático parece selecionar o sistema de acordo com o filme e não com a TV. Acho que é assim que funciona o modo AUTO no br0max e no xypro. É um procedimento estranho.

Eu não sei se entendi a dúvida, mas excetuando (provavelmente) a conexão HDMI, não existe meio eletrônico pelo qual o DVD player possa saber se a TV é PAL ou NTSC. Sempre que um DVD player está em AUTO a decisão é baseada no filme.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 08:29:41 pm
O que acontece é que o modo automático parece selecionar o sistema de acordo com o filme e não com a TV. Acho que é assim que funciona o modo AUTO no br0max e no xypro. É um procedimento estranho.

Eu não sei se entendi a dúvida, mas excetuando (provavelmente) a conexão HDMI, não existe meio eletrônico pelo qual o DVD player possa saber se a TV é PAL ou NTSC. Sempre que um DVD player está em AUTO a decisão é baseada no filme.

Essa era minha dúvida. :) A TV, sim, pode ser AUTO baseado no player, devido ao sinal.  :dashhead1:
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 07, 2009, 08:35:31 pm
EDIT: Arquivo modificado. Tentativa de forçar temporariamente NTSC, até ser incluída opção de sistema de TV.

Testei o novo .... não funcionou por aqui ..!!

Ok, vou verificar mais um pouco, se não conseguir achar nada vou alterar a tela de novo.

Ok, se você fizer este filme em NTSC ?, como o padrão do firmware é NTSC, talvez funcione !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 10:12:42 pm
Isso vai ficar resolvido de vez quando eu implementar a opção NTSC/PAL, o que também deixará livre o menu display para adicionar as outras coisas. Estou trabalhando nisso agora. Allanzin, no setup, quando você entra no menu display, quantos submenus aparecem?
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 07, 2009, 10:41:24 pm
Isso vai ficar resolvido de vez quando eu implementar a opção NTSC/PAL, o que também deixará livre o menu display para adicionar as outras coisas. Estou trabalhando nisso agora. Allanzin, no setup, quando você entra no menu display, quantos submenus aparecem?

3
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 07, 2009, 10:54:50 pm
TV Aspect, Display Mode e TV Output Select?
Hum, para que vai ser mais fácil do que no meu modelo. Daqui umas horas vou postar uma versão alfa para a gente testar o novo menu. Vou voltar com a tela padrão. Será alfa porque o menu não será funcional e talvez com bug nele. Mas quando estiver ajeitado, vai vir um monte de mudanças.

EDIT: Vamos fazer o seguinte. Mande uma mensagem privada com seu email. Eu mando as versões alfa para o email do seu profile. Depois que você me confirmar alguma funcionalidade, eu posto aqui as versões beta. Para não entulhar o fórum.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 08, 2009, 02:00:15 am
Rictad recebi o seu email e confirmei com uma resposta...

Mas o firmware que me mandou é o mesmo anterior, já com o flibrowser aceitando todos os caractres atualizado, mas ainda com sua identificação na tela inicial, e sem a adição de menu, no display...

Vê aí mas acho que deve ter se enganado na hora de enviar !!

Abração, e só reenviar que eu atualizo !

E os três menus são aqueles mesmo que você escrveu no seu último post !
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Abril 08, 2009, 02:41:51 pm
Já provei a última versão disponível para o chip MT1389M e as modificações indicadas funcionam perfeito. De todos modos tenho o mesmo problema de allanzin onde o reproductor começa em PAL, mas tenho muita fé no trabalho de rictad e estarei atento às novas actualizações.

Saludos a todos.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 08, 2009, 04:43:00 pm
Ok, então vamos para mais um teste:

Firmware Rictad Versão 2.2 alfa para DV397H com chip MT1389M

ATENÇÃO, usuários do modelo DV397H com chip MT1389S não devem atualizar com essa versão!

*Incluídas todas as modicações nos menus do setup feitas para o outro modelo afim de que sejam utilizadas no futuro (ex: cor da legenda, fundo da legenda, posição vertical etc).
*Tela inicial original.


Esse firmware é alfa, as novas opções colocadas nos menus não são funcionais ainda (e podem nem mesmo aparecer).
Preciso que testem se as novas opções são mostradas, que testem a navegação em todos as opções dos menus (novas e antigas), que testem se as novas opções são salvas ao desligar e ligar o aparelho e que testem a opção BLE (movido para o menu Display) e o DivX VOD (movido para o final do menu Others).

Se tudo der certo, as opções poderão ser implementadas brevemente.

EDIT: Arquivo alterado (2.2 alfa 2)
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 08, 2009, 06:02:15 pm
Vamos ao resultado...

A tela inicial novamente entrou em cores !

No menu Display apareceram 3 novos submenus: TVSystem, B.L.E(remanejado), e Screensaver. Eles ficaram apenas vísiveis, não foi possível navegar sobre eles, nem apontar o cursor neles.

No menu Others apareceram 5 submenus: MPEG Subtitle Color, RGB, V-Position, V-Align e H-Align. Ao tentar entrar no submenu Mpeg Subtitle Color, o DVD trava, a tela fica numa cor esquizita e me força a ter que retirá-lo da tomada. Nos outros 4, a navegação fica normal, podendo ser escolhida qualquer uma das opções. As opções ficam salvas, mesmo após desligar o aparelho.

Todas as outras estão funcionando normalmente.

Ps.: No MPEG Subtitle Color eu até vejo que tem lá as cores, yellow, blue ... etc ... mas quando aperto enter ou ponho pro lado para entrar o DVD trava, pode ser porque ainda não estão com as cores efetivamente lá !

Valeuu rictad !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 08, 2009, 06:53:26 pm
Obrigado, allanzin.

Isso foi feito com a língua inglesa selecionada? Esqueci de dizer que era para fazer tudo isso na língua padrão do player, que imagino que seja inglesa. Mas, se ao resetar o player, a língua padrão não for a inglesa (me diga qual é), mude para inglês e teste as cores de novo.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 08, 2009, 06:58:22 pm
Obrigado, allanzin.

Isso foi feito com a língua inglesa selecionada? Esqueci de dizer que era para fazer tudo isso na língua padrão do player, que imagino que seja inglesa. Mas, se ao resetar o player, a língua padrão não for a inglesa (me diga qual é), mude para inglês e teste as cores de novo.

Ok, com a língua original funcionou !!

É english !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 08, 2009, 07:02:34 pm
Outra coisa, no menu display, você diz que vê as novas opções, mas elas não são selecionáveis. Elas ficaram em qual cor? Branco ou cinza?
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 08, 2009, 07:04:35 pm
Outra coisa, no menu display, você diz que vê as novas opções, mas elas não são selecionáveis. Elas ficaram em qual cor? Branco ou cinza?

Brancas !

Assim como as acessíveis, porém, o cursor não pega nelas !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 09, 2009, 12:40:42 am
Certo. Alterei o arquivo de novo para tentar liberar a navegação para baixo nos novos submenus do menu display. Lembro que no meu modelo isso deu um certo trabalho, mas fazendo testes eu consegui liberar. Nesse modelo as coisas são um pouco diferentes, já que o submenu Video Output não é oculto. Allanzin, teste essa versão também, que eu agradeço. Veja se mudou algo na navegação para baixo (navegar para cima ainda será impossível nas novas opções). Se funcionar, tente navegar nas opções internas também, salve-as e veja o que acontece ao entrar e sair dos menus (esquerda / direita).
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 09, 2009, 03:22:40 am
Certo. Alterei o arquivo de novo para tentar liberar a navegação para baixo nos novos submenus do menu display. Lembro que no meu modelo isso deu um certo trabalho, mas fazendo testes eu consegui liberar. Nesse modelo as coisas são um pouco diferentes, já que o submenu Video Output não é oculto. Allanzin, teste essa versão também, que eu agradeço. Veja se mudou algo na navegação para baixo (navegar para cima ainda será impossível nas novas opções). Se funcionar, tente navegar nas opções internas também, salve-as e veja o que acontece ao entrar e sair dos menus (esquerda / direita).

Ok, ficou quase tudo certo...

Os 3 submenus novos dentro de display, continuam aparecendo, em ordem TV System, B.L.E e Screensaver.
Quando entro em display, o cursor começa no Tv Aspect, se for 16:9 o debaixo, Display Mode fica inativo, se for 4:3 o Display Mode acende e posso escolher entre Letterbox ou Panscan, embaixo dele vem o Tv Output (YPbPr ou S-video), aí depois vem o TV System, quando desço o cursor pra cima dele ele pula pra baixo e aparece outro Tv System, um bugzinho, mas que funciona, esse é acessível, consigo mexer normalmente e selecionar entre NTSC ou Pal, aí o Screensaver some do menu ( porque o TV System tá duplicado ), desço até o B.L.E, consigo ativá-lo normalmente e funcionando já, aí quando ponho pra baixo novamente, o Screensaver, até então sumido, aparece novamente e consigo selecionar entre ON e OFF normalmente.

Resumindo, o TV system dá uma duplicada quando desço nele, o primeiro inacessível apesar de branco e o segundo normal, quando aparece outro TV System, imediatamente o Scrennsaver dá uma sumida do menu, mas basta continuar descendo após o B.L.E que ele aparece...

TODAS AS OPÇÕES SALVAM e o resto continua funcionando normalmente...

Tentei te explicar o máximo possível, porque sei que é chato fazer uma coisa que não está vendo rs...

Abração !!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 09, 2009, 04:18:58 am
Entendi sim. Acontecia algo semelhante com o outro modelo. Estamos no caminho. ;D 

EDIT:Versão 2.2 alfa 3, somente para DV387H com chip MT1389M.
Por favor, testem a navegação para baixo no menu display para ver se mudou alguma coisa.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 10, 2009, 02:30:41 pm
EDIT:Versão 2.2 alfa 3, somente para DV387H com chip MT1389M.
Por favor, testem a navegação para baixo no menu display para ver se mudou alguma coisa.
Agora, o que acontecia com o TV System, acontece com o Output Select, o mesmo bugzinho, idêntico, e ele continua funcionando !

;)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 10, 2009, 06:14:20 pm
EDIT:Versão 2.2 alfa 3, somente para DV387H com chip MT1389M.
Por favor, testem a navegação para baixo no menu display para ver se mudou alguma coisa.
Agora, o que acontecia com o TV System, acontece com o Output Select, o mesmo bugzinho, idêntico, e ele continua funcionando !

;)


Certo, vamos tentar mais uma vez. Estou enviando o alfa 4. É uma tentativa de fazer aparecer um menu que estava oculto, como no outro modelo: o Progressive Scan. Mas nesse modelo ele está com o nome 2. Se der certo, depois eu mudo o nome dele.

A ideia é ele aparecer cinza e não ser selecionável, como aconteceu no meu modelo após eu desbloqueá-lo. Como o Output Select está dobrado, e pulando para baixo, talvez esse menu acerte as coisas ao aparecer. Outra coisa, as opções dos menus estão alinhadas com eles ou aparecem deslocadas de suas posições?
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 10, 2009, 08:47:22 pm
Fiz um vídeo para ver como ficou... Estou mandando para o seu e-mail ( aquele o qual me manda os firmwares ).

E eles ficam todos alinhadinhos sim ! Vendo vai ser melhor !  ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 10, 2009, 09:06:41 pm
Posta o vídeo aqui, para todos verem!  ;)

Acho que é muito grande.  :(

Isso vai dar um trabalho...  :laugh:
Tem como você fazer videos do alfa 2 e do alfa 3?
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 10, 2009, 09:23:24 pm
Posta o vídeo aqui, para todos verem!  ;)

Acho que é muito grande.  :(

Isso vai dar um trabalho...  :laugh:
Tem como você fazer videos do alfa 2 e do alfa 3?

Sim dá ! Aguarde um pouquinho que vou lhe mandar os 2 de uma vez. (gmail suporta 20MB de anexo)

;)
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 11, 2009, 02:52:08 am
Tá enviado, olha lá, mandei o 2 e o 3, já que tens o 4.

O 2 acho que é o melhor, aparentemente !

Vê aí o que acha !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 11, 2009, 05:59:29 am
Firmware Rictad Versão 2.4 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

* Modificação/correção no alinhamento vertical das legendas DivX: agora as opções são verdadeiramente "superior" e "inferior", sendo que esta última dá um aspecto mais profissional às legendas.
* Fonte para legendas original LG trocada por Helvetica Bold 22.
* Fonte para legendas Courier New Bold 21 trocada por Comic Sans MS 19.
* Todas as fontes agora possuem contorno 2, melhorando a visibilidade.
* Corrigido "bug" no ARM que fazia com que nem todos os caracteres da fonte 13 (a antiga fonte dobrada, atualmente Comic Sans) pudessem ser exibidos corretamente.


Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 11, 2009, 06:07:13 am
Tá enviado, olha lá, mandei o 2 e o 3, já que tens o 4.

O 2 acho que é o melhor, aparentemente !

Vê aí o que acha !

Certo allanzin. Aqui está o alfa 5. O bug no menu Others foi erro meu. Tem que ter sumido agora. Também tentei liberar a navegação acima. Vamos ver como vai ficar. O submenu "2" foi renomeado para Progressive Scan. A idéia é deixá-lo visível, mas travado. Essa modificação é mais fácil para ser feita, acredite. Se ele saltar esse menu, acho que vai ficar quase no ponto. Senão, terei que ajustar mais coisa. Testa aí.

ATENÇÃO, usuários do modelo DV397H com chip MT1389S não devem atualizar com essa versão!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 11, 2009, 08:20:59 pm
* Modificação/correção no alinhamento vertical das legendas DivX: agora as opções são verdadeiramente "superior" e "inferior", sendo que esta última dá um aspecto mais profissional às legendas.
...
...
...
* Corrigido "bug" no ARM que fazia com que nem todos os caracteres da fonte 13 (a antiga fonte dobrada, atualmente Comic Sans) pudessem ser exibidos corretamente.


Interessantes essas modificações! Rictad, quando você tiver tempo, e se não for muito trabalhoso, gostaria de saber como você fez (principalmente a primeira modificação). Não sei se vou poder aproveitar para o LG DV256K, já que aquela rotina do ARM que processa as legendas é bem diferente. Por outro lado, talvez o LG DV397H com MT1389M tenha a rotina mais parecida com a do DV256K, e se você conseguir modificar também para o MT1389M, talvez a correspondência seja mais fácil. Obrigado!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 11, 2009, 11:12:26 pm
Correção nos caracteres no filebrowser e nas tags ID3:

O grande problema dos caracteres é que eles parecem ser lidos no padrão Unicode, enquanto as fontes são CP Windows. Então daí a ideia daquela tabela. Resumindo de forma grosseira:

Todos esses padrões de codificação de caracteres, sejam eles ISO 8859, UTF/Unicode ou CP Windows, têm em comum, ao menos, o núcleo do antigo ASCII, que são os caracteres de #20 a #7F. Os caracteres Unicode são muito mais que 255. O padrão CP Windows pega esses caracteres Unicode extras e os distribui entre o pequeno espaço dos caracteres de controle que existe no meio do ISO 8859. Assim, criam-se vários CPs (1250, 1251, 1252...) com partes do Unicode misturadas ao ISO.

O que aquela rotina faz é verificar se o caracter lido no nome do arquivo ou nas tags ID3 é maior que 255 (ou seja, Unicode) para então modificar o seu valor com base na tabela Unicode -> CP1252, caso ele exista na CP1252. Se for um caracter Unicode que estiver na CP1253, por exemplo, nada acontecerá. Assim, a tabela vai depender da fonte utilizada no firmware. Não basta copiar a rotina no ARM. Se for o caso, deve-se também adaptar a tabela. Além disso, há uma limitação que faz com que os caracteres a partir de 250 não sejam exibidos. Isso é uma limitação de firmware, não de hardware. A solução dada no texto do mt13x9 Group é modificar a fonte de exibição, colocando os caracteres 250 a 255 no lugar dos caracteres 0 a 5, e incluir isso na tabela de conversão. 250-0, 251-1, e assim por diante.

No caso do DV397H, tive muito sorte, pois nada disso precisou ser feito! A fonte para nomes de arquivos é a de número 14. Inicialmente, essa fonte era muito limitada em termos de caracteres. Uma mistura de caracteres latinos com cirílicos, eu acho. Como não era CP1252 (e nem possuía qualquer acento) a tabela de conversão não serviria de nada. Quando a troquei pela fonte que está na posição 1, começaram a aparecer os caracteres acentuados nas ID3 tags imediatamente, mas não nos nomes de arquivos. Aí, como relatei num post anterior, modifiquei aquele filtro diferente no ARM (que limitava acima de #80, trocando por #FE = 254) e achei que tudo estava certo...

Até o allanzin relatar que o "ú" não aparecia. Verifiquei que nos nomes de arquivos, todos os caracteres a partir de 250 não eram exibidos. Mas nas tags ID3, somente o 250 não era (de 251 a 254 eram). A nova fonte 14 (igual a fonte 1), não é CP1252, mas é compatível com ISO 8859-1. No lugar dos caracteres de controle, foram repetidos alguns caracteres do próprio ISO. Além disso, possui caracteres acima de 255 (mas inúteis até agora).

Então fui verificar no ARM aquela rotina do filtro e vi que já havia uma tentativa mal sucedida de converter os caracteres Unicode e de exibir os acima de 250.

Código: [Selecionar]
ROM:0002C53E             ; processa nomes de arquivos no filebrowser
ROM:0002C53E
ROM:0002C53E             sub_2C53E                               ; CODE XREF: sub_297F0+38E_p
ROM:0002C53E                                                     ; sub_297F0+41C_p ...
ROM:0002C53E F8 B5                       PUSH    {R3-R7,LR}
ROM:0002C540 0C 1C                       ADDS    R4, R1, #0
ROM:0002C542 8D 49                       LDR     R1, =SHAREMEM_ADDR
ROM:0002C544 15 1C                       ADDS    R5, R2, #0
ROM:0002C546 5D 22                       MOVS    R2, #0x5D ; ']'
ROM:0002C548 09 68                       LDR     R1, [R1]
ROM:0002C54A 92 01                       LSLS    R2, R2, #6
(..............................)
(..............................)
(..............................)
ROM:0002C584
ROM:0002C584             loc_2C584                               ; CODE XREF: sub_2C53E+2C_j
ROM:0002C584                                                     ; sub_2C53E+38_j
ROM:0002C584 01 0A                       LSRS    R1, R0, #8
ROM:0002C586 03 D1                       BNE     loc_2C590
ROM:0002C588 80 28                       CMP     R0, #0x80 ; 'Ç' ; filtro caracteres acima de #80 (certeza)
ROM:0002C588                                                     ; trocar por #FF
ROM:0002C58A F7 D3                       BCC     loc_2C57C       ; alterar para BLS loc_2C59E (08 D9)
ROM:0002C58C 13 1C                       ADDS    R3, R2, #0
ROM:0002C58E 7C E0                       B       loc_2C68A
ROM:0002C590             ; ---------------------------------------------------------------------------
ROM:0002C590
ROM:0002C590             loc_2C590                               ; CODE XREF: sub_2C53E+48_j
ROM:0002C590 FC F7 98 FA                 BL      sub_28AC4
ROM:0002C594 00 04                       LSLS    R0, R0, #0x10
ROM:0002C596 00 0C                       LSRS    R0, R0, #0x10
ROM:0002C598 01 D1                       BNE     loc_2C59E
ROM:0002C59A 5F 20                       MOVS    R0, #0x5F ; '_'
ROM:0002C59C 01 E0                       B       loc_2C5A2
ROM:0002C59E             ; ---------------------------------------------------------------------------
ROM:0002C59E
ROM:0002C59E             loc_2C59E                               ; CODE XREF: sub_2C53E+5A_j
ROM:0002C59E FA 28                       CMP     R0, #0xFA ; '·'  Tratar caracteres a partir de 250
ROM:0002C5A0 03 D2                       BCS     loc_2C5AA
ROM:0002C5A2
ROM:0002C5A2             loc_2C5A2                               ; CODE XREF: sub_2C53E+5E_j
ROM:0002C5A2                                                     ; sub_2C53E+82_j
ROM:0002C5A2 33 78                       LDRB    R3, [R6]
(........................)
(........................)
(........................)

Em #2C59E, há um tratamento para caracteres a partir de 250 (ou seja, não é uma limitação de hardware, é erro de programação do firmware mesmo e aqui temos uma tentativa de correção feita de "fábrica"), mas essa chamada só era realizada em certas condições (outras fontes, outros CPs, não sei ao certo). Então eu desviei para esse tratamento a partir do filtro, em #2C588, caso o caracter seja igual ou menor que 255. Pronto! Funcionou. Como a nova fonte 14, até a posição 255, é compatível com o ISO 8859-1 (e não CP1252), alguns poucos caracteres esquisitos ficaram de fora, mas nada que atrapalhe a acentuação em português ou espanhol. Ainda tentei deixar passar todos os caracteres para ver se eram mostrados, mas nada é exibido, apesar da fonte ter mais que 255 caracteres. Isso poderia ser feito, se entendêssemos mais a parte do ARM que manipula as fontes, o que seria útil para implementar o itálico (como o ARM tem 32 bits, o conteúdo de seus registradores não são bytes, mas palavras de 4 bytes; um caracter Unicode tem seu código carregado normalmente em R0 no trecho #2C588; é possível fazer, por exemplo, CMP  R0, #0x3000).

Com as tags ID3, foi ainda mais fácil. Já estava funcionando quase 100%. Só o "ú" não era mostrado. Além disso, os caracteres Uncode presentes no CP1252 eram convertidos, conforme as convenções usuais, segundo a Wikipedia. Por exemplo, o raro caracter francês "Œ" é usualmente convertido para "OE" quando se trabalha com 8859-1. Mas e o "ú"? O "ú" não era exibido por causa de um bug na rotina responsável pela exibição das ID3 tags (e também dos nomes no filebrowser, já que ela chama a rotina anterior).

Código: [Selecionar]
ROM:0003D7C6             ; exibe nome de arquivos filebrowser e ID3 tags
ROM:0003D7C6
ROM:0003D7C6             sub_3D7C6                               ; CODE XREF: sub_29CE2+302_p
ROM:0003D7C6
ROM:0003D7C6             var_38          = -0x38
ROM:0003D7C6             var_34          = -0x34
ROM:0003D7C6             var_30          = -0x30
ROM:0003D7C6             var_2C          = -0x2C
ROM:0003D7C6             var_28          = -0x28
ROM:0003D7C6             var_24          = -0x24
ROM:0003D7C6             var_20          = -0x20
ROM:0003D7C6             var_1C          = -0x1C
ROM:0003D7C6             var_18          = -0x18
ROM:0003D7C6
ROM:0003D7C6 F0 B5                       PUSH    {R4-R7,LR}
ROM:0003D7C8 81 78                       LDRB    R1, [R0,#2]
ROM:0003D7CA 89 B0                       SUB     SP, SP, #0x24
ROM:0003D7CC 00 AB                       ADD     R3, SP, #0x38+var_38
ROM:0003D7CE 46 78                       LDRB    R6, [R0,#1]
ROM:0003D7D0 19 76                       STRB    R1, [R3,#0x38+var_20]
ROM:0003D7D2 C1 78                       LDRB    R1, [R0,#3]
ROM:0003D7D4 59 76                       STRB    R1, [R3,#0x38+var_20+1]
ROM:0003D7D6 01 79                       LDRB    R1, [R0,#4]
ROM:0003D7D8 99 76                       STRB    R1, [R3,#0x38+var_20+2]
ROM:0003D7DA 41 79                       LDRB    R1, [R0,#5]
ROM:0003D7DC D9 76                       STRB    R1, [R3,#0x38+var_20+3]
(..................)
(..................)
(..................)
ROM:0003D86E
ROM:0003D86E             loc_3D86E                               ; CODE XREF: sub_3D7C6+96_j
ROM:0003D86E                                                     ; sub_3D7C6+A0_j
ROM:0003D86E 20 78                       LDRB    R0, [R4]
ROM:0003D870 FA 28                       CMP     R0, #0xFA ; '·' ; pequeno bug na exibicao de caracteres
ROM:0003D870                                                     ; nas id3 tags, que impede mostrar "ú"
ROM:0003D870                                                     ; deve ser #F9 e nao #FA!
ROM:0003D872 06 D9                       BLS     loc_3D882
ROM:0003D874 1C 49                       LDR     R1, =unk_9AE61
ROM:0003D876 FA 38                       SUBS    R0, #0xFA ; '·'
ROM:0003D878 0B 78                       LDRB    R3, [R1]
ROM:0003D87A 00 04                       LSLS    R0, R0, #0x10
ROM:0003D87C 00 0C                       LSRS    R0, R0, #0x10
(...................)
(...................)
(...................)

Oras, em #3D870, só se fazia o tratamento dos caracteres se não fossem menores ou iguais a #FA (250) = "ú". Assim, o "ú" não entrava. Ou tinha que ser menor que #FA ou menor e igual a #F9!

Essas rotinas são idênticas nos dois modelos de DV397H. Assim, a exibição dos caracteres no filebrowser e nas tags ID3 foi melhorada nos dois.

Correções no alinhamento

Eu ainda não verifiquei as rotinas do DV397H com chip MT1389M, e acho que são diferentes. Mas talvez, nessa parte, sejam semelhantes em alguma coisa.

Bom, o DV397H MT1389S já é capaz de exibir, originalmente, até 4 linhas de legenda. Mas isso é feito por uma rotina que é capaz de exibir 1 ou 2 linhas de legendas e mais 2 remendos que adicionam a terceira e a quarta linha. Sim, "remendos", porque tudo indica que, inicialmente, só eram exibidas até 2 linhas e, aí, remendaram de "fábrica", e 2 vezes! O resultado foi que, em cada uma dessas partes, o alinhamento era calculado com um argumento diferente. E ainda, na parte principal, no núcleo, digamos assim, a posição da primeira linha variava conforme tivéssemos 1 ou 2 linhas. Ou seja, era um carnaval de linhas dançantes para cima e para baixo, fazendo alinhamentos meio esquisitos. Podíamos classificar o alinhamento apenas como mais ou menos inferior e mais ou menos superior. Nem mesmo middle-top e middle-bottom serviam para classificá-lo corretamente, pois com 4 linhas as coisas mudavam.

Código: [Selecionar]
ROM:00040348             ; =============== S U B R O U T I N E =======================================
ROM:00040348
ROM:00040348             ;exibe legendas
ROM:00040348
ROM:00040348             sub_40348                               ; CODE XREF: sub_408FC:loc_4092E_p
ROM:00040348
ROM:00040348             var_68          = -0x68
ROM:00040348             var_64          = -0x64
ROM:00040348             var_60          = -0x60
ROM:00040348             var_5C          = -0x5C
ROM:00040348             var_58          = -0x58
ROM:00040348             var_54          = -0x54
ROM:00040348             var_4C          = -0x4C
ROM:00040348             var_48          = -0x48
ROM:00040348             var_44          = -0x44
ROM:00040348             var_42          = -0x42
ROM:00040348             var_40          = -0x40
ROM:00040348             var_3C          = -0x3C
ROM:00040348             var_38          = -0x38
ROM:00040348             var_34          = -0x34
ROM:00040348             var_30          = -0x30
ROM:00040348             var_2C          = -0x2C
ROM:00040348             var_28          = -0x28
ROM:00040348             var_24          = -0x24
ROM:00040348             var_20          = -0x20
ROM:00040348             var_1C          = -0x1C
ROM:00040348             var_18          = -0x18
ROM:00040348
ROM:00040348 35 48                       LDR     R0, =unk_9AE62
ROM:0004034A F0 B5                       PUSH    {R4-R7,LR}
ROM:0004034C 03 78                       LDRB    R3, [R0]
ROM:0004034E 95 B0                       SUB     SP, SP, #0x54
ROM:00040350 34 49                       LDR     R1, =SHAREMEM_ADDR
ROM:00040352 02 93                       STR     R3, [SP,#0x68+var_60]
ROM:00040354 08 68                       LDR     R0, [R1]
ROM:00040356 BB 22 52 01                 MOVLS   R2, 0x1760
ROM:0004035A 82 18                       ADDS    R2, R0, R2
ROM:0004035C 12 78                       LDRB    R2, [R2]
ROM:0004035E 00 2A                       CMP     R2, #0
ROM:00040360 01 D1                       BNE     loc_40366
ROM:00040362 04 22                       MOVS    R2, #4
ROM:00040364 00 E0                       B       loc_40368
(......................)
(......................)
(......................)
ROM:000404F0
ROM:000404F0             loc_404F0                               ; CODE XREF: sub_40348+12C_j
ROM:000404F0                                                     ; sub_40348+136_j
ROM:000404F0 00 2E                       CMP     R6, #0          ; alterando para 01 2E, última linha fica deslocada
ROM:000404F0                                                     ; (igual outros LGs?)
ROM:000404F2 3E D0                       BEQ     loc_40572
(.............................)
(.............................)
(.............................)
ROM:0004067A
ROM:0004067A             loc_4067A                               ; CODE XREF: sub_40348+304_j
ROM:0004067A 73 4D                       LDR     R5, =unk_9EB88
ROM:0004067C 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:0004067E 28 88                       LDRH    R0, [R5]
ROM:00040680 03 99                       LDR     R1, [SP,#0x68+var_5C]
ROM:00040682 75 4E                       LDR     R6, =unk_9E614
ROM:00040684 40 18                       ADDS    R0, R0, R1
ROM:00040686 98 84                       STRH    R0, [R3,#0x68+var_44]
ROM:00040688 F0 78                       LDRB    R0, [R6,#3]
ROM:0004068A 01 28                       CMP     R0, #1          ; 2 linhas?
ROM:0004068C 0E D8                       BHI     loc_406AC       ; se maior
ROM:0004068E 73 48                       LDR     R0, =SHAREMEM_ADDR
ROM:00040690 BB 21                       MOVS    R1, #0xBB ; '+'
ROM:00040692 00 68                       LDR     R0, [R0]
ROM:00040694 49 01                       LSLS    R1, R1, #5
ROM:00040696 40 18                       ADDS    R0, R0, R1
ROM:00040698 00 78                       LDRB    R0, [R0]
ROM:0004069A 01 28                       CMP     R0, #1
ROM:0004069C 02 D1                       BNE     loc_406A4
ROM:0004069E D8 8C                       LDRH    R0, [R3,#0x68+var_42]
ROM:000406A0 38 30                       ADDS    R0, #0x38 ; '8' ; deslocamento legenda 1 e 2 linhas
ROM:000406A2 14 E0                       B       loc_406CE
ROM:000406A4             ; ---------------------------------------------------------------------------
ROM:000406A4
ROM:000406A4             loc_406A4                               ; CODE XREF: sub_40348+354_j
ROM:000406A4 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:000406A6 D8 8C                       LDRH    R0, [R3,#0x68+var_42]
ROM:000406A8 30 30                       ADDS    R0, #0x30 ; '0'
ROM:000406AA 10 E0                       B       loc_406CE
ROM:000406AC             ; ---------------------------------------------------------------------------
ROM:000406AC
ROM:000406AC             loc_406AC                               ; CODE XREF: sub_40348+344_j
ROM:000406AC 02 28                       CMP     R0, #2          ; 3 linhas?
ROM:000406AE 10 D1                       BNE     loc_406D2       ; se não
ROM:000406B0 6A 48                       LDR     R0, =SHAREMEM_ADDR
ROM:000406B2 BB 21                       MOVS    R1, #0xBB ; '+'
ROM:000406B4 00 68                       LDR     R0, [R0]
ROM:000406B6 49 01                       LSLS    R1, R1, #5
ROM:000406B8 40 18                       ADDS    R0, R0, R1
ROM:000406BA 00 78                       LDRB    R0, [R0]
ROM:000406BC 01 28                       CMP     R0, #1
ROM:000406BE 03 D1                       BNE     loc_406C8
ROM:000406C0 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:000406C2 D8 8C                       LDRH    R0, [R3,#0x68+var_42]
ROM:000406C4 1C 30                       ADDS    R0, #0x1C       ; deslocamento legenda 3 linhas
ROM:000406C6 02 E0                       B       loc_406CE
ROM:000406C8             ; ---------------------------------------------------------------------------
ROM:000406C8
ROM:000406C8             loc_406C8                               ; CODE XREF: sub_40348+376_j
ROM:000406C8 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:000406CA D8 8C                       LDRH    R0, [R3,#0x68+var_42]
ROM:000406CC 18 30                       ADDS    R0, #0x18
ROM:000406CE
ROM:000406CE             loc_406CE                               ; CODE XREF: sub_40348+35A_j
ROM:000406CE                                                     ; sub_40348+362_j ...
ROM:000406CE 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:000406D0 D8 84                       STRH    R0, [R3,#0x68+var_42]
ROM:000406D2
ROM:000406D2             loc_406D2                               ; CODE XREF: sub_40348+366_j
ROM:000406D2 20 1C                       ADDS    R0, R4, #0
ROM:000406D4 FF 30                       ADDS    R0, #0xFF
ROM:000406D6 04 9A                       LDR     R2, [SP,#0x68+var_58]
ROM:000406D8 00 06                       LSLS    R0, R0, #0x18
ROM:000406DA 00 0E                       LSRS    R0, R0, #0x18
ROM:000406DC 02 9B                       LDR     R3, [SP,#0x68+var_60]
ROM:000406DE 1E 32                       ADDS    R2, #0x1E       ; distancia entre linhas
ROM:000406E0 00 25                       MOVS    R5, #0
ROM:000406E2 5F 49                       LDR     R1, =unk_9E868
ROM:000406E4 01 33                       ADDS    R3, #1
ROM:000406E6 0F 93                       STR     R3, [SP,#0x68+var_2C]
ROM:000406E8 11 92                       STR     R2, [SP,#0x68+var_24]
ROM:000406EA 10 90                       STR     R0, [SP,#0x68+var_28]
ROM:000406EC 0E 91                       STR     R1, [SP,#0x68+var_30]
ROM:000406EE C1 E0                       B       loc_40874
ROM:000406F0             ; ---------------------------------------------------------------------------
ROM:000406F0
ROM:000406F0             loc_406F0                               ; CODE XREF: sub_40348+5AA_j
ROM:000406F0 59 48                       LDR     R0, =unk_9E614
ROM:000406F2 59 4A                       LDR     R2, =unk_9E614
ROM:000406F4 00 79                       LDRB    R0, [R0,#4]
ROM:000406F6 0C 32                       ADDS    R2, #0xC
ROM:000406F8 11 5C                       LDRB    R1, [R2,R0]
ROM:000406FA A9 42                       CMP     R1, R5
ROM:000406FC 4F D1                       BNE     loc_4079E
ROM:000406FE 0E 99                       LDR     R1, [SP,#0x68+var_30]
ROM:00040700 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:00040702 49 78                       LDRB    R1, [R1,#1]
ROM:00040704 50 4E                       LDR     R6, =unk_9EB88
ROM:00040706 D9 8C                       LDRH    R1, [R3,#0x68+var_42] ; posicao linha anterior
ROM:00040708 11 9A                       LDR     R2, [SP,#0x68+var_24] ; distancia entre linhas
ROM:0004070A 89 18                       ADDS    R1, R1, R2      ; atualiza posicao
ROM:0004070C D9 84                       STRH    R1, [R3,#0x68+var_42]
ROM:0004070E D9 8C                       LDRH    R1, [R3,#0x68+var_42]
ROM:00040710 F2 88                       LDRH    R2, [R6,#6]
ROM:00040712 1D 31                       ADDS    R1, #0x1D
ROM:00040714 91 42                       CMP     R1, R2
ROM:00040716 71 DC                       BGT     loc_407FC
ROM:00040718 71 7A                       LDRB    R1, [R6,#9]
ROM:0004071A C9 07                       LSLS    R1, R1, #0x1F
ROM:0004071C 35 D5                       BPL     loc_4078A
ROM:0004071E 4E 4E                       LDR     R6, =unk_9E614
ROM:00040720 F1 78                       LDRB    R1, [R6,#3]
ROM:00040722 01 39                       SUBS    R1, #1
ROM:00040724 88 42                       CMP     R0, R1
ROM:00040726 15 DA                       BGE     loc_40754
(.........................)
(.........................)
(.........................)

Primeiro, ressalto que deixei aparecendo um trecho em que alterei o valor do CMP e as linhas da legenda ficaram horizontalmente deslocadas, como acontece na maioria dos LGs. De repente, naqueles modelos podemos ter um bug desse tipo que precisa ser corrigido. Verifiquem.

Em #4068A, é verificado se a legenda tem mais de duas linhas (CMP  R0, #1). Se não tiver, impõe-se um deslocamento de #38 (#406A0 ADDS  R0, #0x38) ou #30 (#406A8 ADDS  R0, #0x30), devido a uma condição ainda obscura (na verdade, depois de vários testes, aparentemente o lado do deslocamento de #30 nunca é executado). Caso contrário, se for mais de 2 linhas, calculam-se deslocamentos diferentes, dependendo de ter ou não mais de 3 linhas, o que é verificado em #406AC.

Vai ser um pouco difícil de explicar agora. A melhor forma de entender é seguir no IDA as modificações que eu fiz no código ARM. Tentei ir acertando os valores (se forem iguais, não resolve) dos casos em que temos 1 linha e em que temos 3 linhas, até visualmente ficarem alinhados ao caso com 4 linhas (eu alinhei a exibição de 1 linha com a exibição de 4 linhas e depois a exibição de 3 linhas com a exibição de 4 linhas também, deixando tudo alinhado, primeiro superiormente). Fiz vários testes até conseguir. Além disso, tem que se ter deslocamentos diferentes para quando o alinhamento é inferior e para quando é superior. Então, depois tive que fazer novamente o acerto do deslocamento, mas para o alinhamento inferior. Anotei os valores de ambos, pois iria precisar fazer um condicional para cada tipo de alinhamento.

Para resolver isso, cavei espaço dentro do próprio código da rotina. Usando a condição obscura relatada anteriormente. Por exemplo, para até 2 linhas, tínhamos o seguinte:

Código: [Selecionar]
ROM:0004069A 01 28                       CMP     R0, #1  ; condicao nao identificada
ROM:0004069C 02 D1                       BNE     loc_406A4
ROM:0004069E D8 8C                       LDRH    R0, [R3,#0x68+var_42]
ROM:000406A0 38 30                       ADDS    R0, #0x38 ; '8' ; deslocamento legenda 1 e 2 linhas
ROM:000406A2 14 E0                       B       loc_406CE
ROM:000406A4             ; ---------------------------------------------------------------------------
ROM:000406A4
ROM:000406A4             loc_406A4                               ; CODE XREF: sub_40348+354_j
ROM:000406A4 00 AB                       ADD     R3, SP, #0x68+var_68
ROM:000406A6 D8 8C                       LDRH    R0, [R3,#0x68+var_42]
ROM:000406A8 30 30                       ADDS    R0, #0x30 ; '0'
ROM:000406AA 10 E0                       B       loc_406CE

Assim, aproveitei essa parte para modificá-la e fazer a condição do alinhamento: se for inferior, segue um lado, se for superior, segue o outro (verificar no IDA como ficou o novo código). E depois de fazer a mesma modificação na parte que trata a legenda com 3 linhas, ficou quase tudo certo. Só restava um pequeno problema no alinhamento inferior, para os casos em que tínhamos 1 linha ou 2 linhas (no alinhamento superior ficava tudo certo, mas no inferior, somente quando havia 2 linhas, desalinhava um pouco, apesar de 1 linha ficar alinhada). A parte responsável por dividir a legenda em 1 ou 2 linhas é outra, como disse antes. Ela está na rotina que identifiquei como sendo a SUB_CalcStartPosY relatada nos documentos do mt13x9 Group e fazia um deslocamento estranho quando tínhamos o alinhamento inferior. Quando havia 2 linhas, deslocava a posição da primeira linha em meia linha acima, dando um ar de centralizado (quando tínhamos apenas uma linha, esta era exibida exatamente no centro de quando tínhamos 2 linhas). Identifiquei o trecho responsável por esse pequeno deslocamento e o eliminei:

Código: [Selecionar]
ROM:0003FDA4             SUB_CalcStartPosY__sub_3FDA4            ; CODE XREF: sub_40348+23E_p
ROM:0003FDA4 F8 B5                       PUSH    {R3-R7,LR}
ROM:0003FDA6 AD 49                       LDR     R1, =unk_9EB88
ROM:0003FDA8 4E 88                       LDRH    R6, [R1,#2]
ROM:0003FDAA 89 7A                       LDRB    R1, [R1,#0xA]   ; opcao de alinhamento
ROM:0003FDAC C9 07                       LSLS    R1, R1, #0x1F
ROM:0003FDAE 44 D5                       BPL     loc_3FE3A
ROM:0003FDB0 04 1C                       ADDS    R4, R0, #0
ROM:0003FDB2 01 25                       MOVS    R5, #1
ROM:0003FDB4 A8 4F                       LDR     R7, =unk_A4E70
ROM:0003FDB6 16 E0                       B       loc_3FDE6
(......................)
(......................)
(......................)
ROM:0003FE1C 47 88                       LDRH    R7, [R0,#2]
ROM:0003FE1E C0 7A                       LDRB    R0, [R0,#0xB]   ; alterar para valor fixo que seja suficiente,
ROM:0003FE1E                                                     ; exemplo, MOV R0, #0x1A (posicao primeira linha alinhamento inferior)
ROM:0003FE20 C9 1B                       SUBS    R1, R1, R7
ROM:0003FE22 00 19                       ADDS    R0, R0, R4
ROM:0003FE24 11 F0 62 FD                 BL      sdiv
ROM:0003FE28 00 06                       LSLS    R0, R0, #0x18
ROM:0003FE2A 00 0E                       LSRS    R0, R0, #0x18
ROM:0003FE2C A8 42                       CMP     R0, R5
ROM:0003FE2E 04 D9                       BLS     loc_3FE3A
ROM:0003FE30 40 1B                       SUBS    R0, R0, R5      ; deslocamento incorreto
ROM:0003FE30                                                     ; alinhamento inferior: substituir por 00 00 (NOP)
ROM:0003FE32 60 43                       MULS    R0, R4

Eu cheguei a falar, em posts anteriores, do bug que impedia a seleção do alinhamento inferior. Como a distância entre linhas não era repassada pelo 8032, então o valor da posição inicial (primeira linha) estava bugado. É isso o que está comentado em #3FE1E. Além disso, a rotina só é executada no caso da opção de alinhamento ser inferior, devido ao salto em #3FDAE, no início da rotina, que é executado se o alinhamento for superior. Seguindo a rotina, o bug do deslocamento no alinhamento inferior está em #3FE30.

E, para fechar, o bug da fonte 13.

A fonte 13 é a fonte que ficava duplicada anteriormente, pois as duas últimas escolhas de código de caracteres compartilhavam a mesma fonte. No 8032, eu eliminei a última escolha. Mas essa fonte deveria receber um tratamento diferente, dependendo do código de caracteres escolhido. Olhando no ARM, descobri onde isso é feito. Depois, ao testar a legenda, verifiquei que nem todos os caracteres realmente estavem sendo exibidos na fonte que deixei. Zeurt, verifica isso também, pois pode acontecer o mesmo no DV256K.

Código: [Selecionar]
ROM:0003FB56             ; le caracteres da legenda (jah processados)
ROM:0003FB56
ROM:0003FB56             sub_3FB56                               ; CODE XREF: sub_3FB7A+20_p
ROM:0003FB56                                                     ; sub_3FB7A+36_p ...
ROM:0003FB56 42 49                       LDR     R1, =unk_9AE62
ROM:0003FB58 09 78                       LDRB    R1, [R1]
ROM:0003FB5A 14 29                       CMP     R1, #0x14       ; se fonte 13, tratamento especial
ROM:0003FB5C 09 D1                       BNE     loc_3FB72    ; trocar por 09 E0 (B)
ROM:0003FB5E 41 49                       LDR     R1, =SHAREMEM_ADDR
ROM:0003FB60 41 4A                       LDR     R2, =loc_1770
ROM:0003FB62 09 68                       LDR     R1, [R1]
ROM:0003FB64 89 18                       ADDS    R1, R1, R2
ROM:0003FB66 89 7B                       LDRB    R1, [R1,#0xE]
ROM:0003FB68 01 29                       CMP     R1, #1
ROM:0003FB6A 02 D1                       BNE     loc_3FB72
ROM:0003FB6C 3F 49                       LDR     R1, =unk_9E624
ROM:0003FB6E 08 5C                       LDRB    R0, [R1,R0]
ROM:0003FB70 70 47                       BX      LR
ROM:0003FB72             ; ---------------------------------------------------------------------------
(................)
(................)
(................)

É só trocar #09 #D1 por #09 #E0 em #3FB5C (trocar o BNE por B normal) que tudo se resolve. Essa é a rotina que lê o buffer onde estão guardados os caracteres do trecho atual da legenda. Eu cheguei nela pois estou procurando uma forma de exibir os itálicos. Esse buffer, aparentemente, já está com as tags itálicas cortadas. Isso quer dizer que outra rotina é que processa isso antes. Mas ainda não consegui achar nada que preencha esse buffer ainda.

Usando esse endereço de memória que guarda o valor da fonte, cheguei a fazer um trecho que alterava o espaçamento entre linhas de acordo com a fonte escolhida. Assim, pude diminuir o espaçamento da legenda original para o seu valor default. Porém, depois que encontrei os trechos responsáveis pelos alinhamentos das linhas, vi que iria precisar fazer mais uma condição para acertar cada alinhamento (dependendo não só do tipo de alinhamento, mas também da fonte, os deslocamentos seriam outros). Aí, preferi eliminar de vez a fonte original. :laugh:

E em pensar que tudo isso foi fruto da busca pelo itálico....  ;D
Título: Re: Firmware do LG DV397H
Enviado por: leonardofrazao em Abril 12, 2009, 03:50:39 pm
Parabéns pelo firmware!! Ficou excelente mesmo! Eu só não gostei muito da fonte Comic Sans. Talvez, como sugestão, pudesse substituí-la pela Trebuchet MS.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 14, 2009, 02:38:25 am
Rictad,

Muito interessante o último capítulo da sua "Enciclopédia em construção".  ;D

Fiz umas buscas iniciais no DV256K ,tentando encontrar as correspondências para:
- Correção dos caracteres 200-255: não achei, já que não havia achado nem o filtro do ARM que você já tinha descrito antes.
- Correção da primeira linha deslocada a esquerda: não achei o trecho que você descreveu; não procurei tanto, mas como a rotina do ARM é bem diferente, talvez seja difícil mesmo...
- Correção da fonte 13: não encontrei trecho semelhante (novamente deve ser devido a diferença na rotina do ARM).
Pretendo procurar tudo de novo com mais atenção.

De qualquer modo, você forneceu tantas informações, que após um bom e calmo estudo, podem ajudar muito aos interessados no assunto. Fiquei até meio "tonto"  :-[ com tanta coisa nova...
Obrigado novamente!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 14, 2009, 12:38:26 pm
Eu que agradeço, zeurt, você ajudou bastante nesse processo. E o legal é ver as coisas dando frutos. Eu vi que você implementou o tempo restante/total no DV256K. ;D

Bom, eu estou trabalhando no zoom agora. Logo teremos novidades! :laugh: E quanto ao DV397H com chip MT1389M, o menu está definitivamente pronto. Em breve postarei versões alfa com as funções do menu sendo implementadas aos poucos. O Allanzin foi fundamental nos testes com o menu. Foram 11 alfas que enviei para ele, até acertar a posição do menu Display.
Título: Re: Firmware do LG DV397H
Enviado por: sedm em Abril 14, 2009, 03:29:31 pm
Rictad,

Atualizei para o último firmware que você modificou para o MT1389S, e estou achando que a distância entre as letras das palavras da legenda está muito grande, minha TV é widescreen, e mesmo assim em algumas falas, a legenda se divide em até 4 linhas.
Com o firmware anterior, isso não tinha chamado a minha atenção, não sei se já era assim.
Quando eu faço as legendas embutidas XSUB, as letras estão bem juntas.

Sérgio
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 14, 2009, 08:34:38 pm
Rictad,

Atualizei para o último firmware que você modificou para o MT1389S, e estou achando que a distância entre as letras das palavras da legenda está muito grande, minha TV é widescreen, e mesmo assim em algumas falas, a legenda se divide em até 4 linhas.
Com o firmware anterior, isso não tinha chamado a minha atenção, não sei se já era assim.
Quando eu faço as legendas embutidas XSUB, as letras estão bem juntas.

Sérgio

Mas a distância entre linhas não interfere na quantidade de linhas. A distância entre letras, bem como o tamanho da fonte, sim. Quando aumentei o contorno para 2, a fonte aumentou. A distância entre linhas foi aumentada em 2 pontos para que as letras não fossem cortadas na vertical e está no limite para caber as mesmas fontes anteriores, mas agora com 2 pontos de contorno. Além disso, alguns usuários chegaram a dizer que a fonte ainda estava pequena.

Com legendas SRT bem feitas, não há quebra de linhas. Você pode usar a fonte Impact, que é mais compacta, para o caso de legendas mais cheias. Cuidado com a fonte Helvética, que é mais gordinha.

Se mais usuários reclamarem disso, terei que ou diminuir o contorno (como antes) ou diminuir o tamanho da fonte (em ambos os casos, perde-se legibilidade). Vai depender de outros feedbacks.

Pessoal, o que vocês acham da questão?

Título: Re: Firmware do LG DV397H
Enviado por: sedm em Abril 14, 2009, 09:26:55 pm
Rictad, não foi a distância entre as linhas que eu achei muita, foi entre as letras das palavras.
Exempo:
"Boa noite"  - para mim parece que está assim:  "B o a  n o i t e"

O contorno ficou bom.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 14, 2009, 09:30:11 pm
Sugestão: vale a pena contar quantos caracteres (em média) cabem em uma linha de legenda, para as diversas fontes. Eu falei em média pois a maioria das fontes tem caracteres com largura variável.
Eu coloquei 4 fontes mais compactas no meu firmware do DV256K, de modo a garantir pelo menos 40 caracteres em média por linha. A maioria das legendas .srt bem feitas tem no máximo 40 caracteres. Quando há mais de 40 caracteres não fica legal. Nesse caso é melhor processar as legendas antes, limitando o número máximo de caracteres em 40 (recomendo o Subtitle Processor (http://sourceforge.net/project/showfiles.php?group_id=158915&package_id=217205) ou o DirectSub (http://www.sibit.si/directsub.html) para esse fim). Não tem mágica: com fontes maiores deve-se estar atento ao número máximo de caracteres por linha da legenda. Senão, deve-se estar preparado para quebra de linhas frequentes.
Em relação ao contorno 2, imagino, pelos comentários dos usuários que já ouvi nos últimos tempos, que seja a melhor opção (a que mais agrada). Quando eu aumentei o contorno de 1 para 2 em algumas fontes, eu acabei tendo que diminuir o tamanho de algumas delas para garantir um número de caracteres por linha aceitável.
Rictad, só pra confirmar: você reduziu os espaços entre os caracteres para o mínimo, no MTKFontCreator? No início eu não tinha percebido que esse espaço, por default, é de 2 (ou 3 não lembro). Acabei reduzindo para 0, o que gerou melhores resultados e permitiu maior número de caracteres por linha.

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 14, 2009, 10:11:19 pm
Sugestão: vale a pena contar quantos caracteres (em média) cabem em uma linha de legenda, para as diversas fontes. Eu falei em média pois a maioria das fontes tem caracteres com largura variável.
Eu coloquei 4 fontes mais compactas no meu firmware do DV256K, de modo a garantir pelo menos 40 caracteres em média por linha. A maioria das legendas .srt bem feitas tem no máximo 40 caracteres. Quando há mais de 40 caracteres não fica legal.

Quantidade de caracteres por linha com o antigo contorno 1:

Arial Narrow Bold: 35
Arial Narrow: 37
Impact: 35
Courier New Bold: 39
Verdana: 31
Original LG: 43

Quantidade de caracteres por linha com o novo contorno 2:

Arial Narrow Bold: 31
Arial Narrow: 33
Impact: 31
Comic: 29
Verdana: 28
Helvetica: 28

Rictad, só pra confirmar: você reduziu os espaços entre os caracteres para o mínimo, no MTKFontCreator? No início eu não tinha percebido que esse espaço, por default, é de 2 (ou 3 não lembro). Acabei reduzindo para 0, o que gerou melhores resultados e permitiu maior número de caracteres por linha.

Depois de aumentar o contorno, eu não alterei mais nada. Realmente houve uma perda de espaço horizontal após o contorno. E antes já era ruim, pois tínhamos menos de 40 caracteres por linha. ::)

Sérgio, vou tentar melhorar isso na próxima versão, em que mudarei algumas coisas no zoom também.

Parabéns pelo firmware!! Ficou excelente mesmo! Eu só não gostei muito da fonte Comic Sans. Talvez, como sugestão, pudesse substituí-la pela Trebuchet MS.

Essa fonte entrou no lugar da original LG para tampar buraco, mas eu gosto dela, pois me lembra as legendas usadas em Animes. Como são muitas fontes, acho que uma um pouco mais descontraída não é ruim.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 14, 2009, 10:29:19 pm
Rictad, só pra ter certeza:
No MtkFontCreator, em Font Character Generation Options, em Miscellaneous, em Right Margin, você reduziu de 2 (opção default) para 0? É necessário fazer isso para reduzir o espaço entre os caracteres. Como o sedm está dizendo que o espaço está grande, só gostaria de confirmar isso...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 14, 2009, 10:59:54 pm
Rictad, só pra ter certeza:
No MtkFontCreator, em Font Character Generation Options, em Miscellaneous, em Right Margin, você reduziu de 2 (opção default) para 0? É necessário fazer isso para reduzir o espaço entre os caracteres. Como o sedm está dizendo que o espaço está grande, só gostaria de confirmar isso...

Não, está 2 ainda. Eu lembro que havia mexido nisso, mas por algum motivo não deixei em 0. Não sei se ficou muito encostado. Mas depois vou colocar em 0 e testar. Estou com as fontes todas salvas aqui, será fácil. Se ficar bom, na próxima versão estará em 0.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 14, 2009, 11:16:14 pm
Legal! 0 ficará com um aspecto ótimo, parecido com as legendas que estamos acosumados a ver na TV por assinatura, etc.
Não sei porque os criadores do programa deixaram 2 como default. Com 2, temos a sensação que o sedm descreveu.
Além disso, haverá uma economia de espaço: 2 vezes 30 (ou 40) caracteres resulta em 60 ou 80 pixels sobrando (caberá mais uns 3 ou 4 caracteres por linha). No fim, isso acaba compensando o aumento do Outline. De qualquer modo, talvez seja necessário reduzir o tamanho de pelo menos uma ou outra fonte para garantir os famosos 40 caracteres.  :laugh:

P.S.: Como você fez as médias dos caracteres por linha? Se foi apenas com números (ex:0123456...) o resultado acaba enganando (para menos), pois os caracteres númericos em média acabam sendo mais largos que a média dos caracteres em frases e diálogos normais como vemos nos filmes.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 15, 2009, 12:00:52 am
P.S.: Como você fez as médias dos caracteres por linha? Se foi apenas com números (ex:0123456...) o resultado acaba enganando (para menos), pois os caracteres númericos em média acabam sendo mais largos que a média dos caracteres em frases e diálogos normais como vemos nos filmes.

Então isso é uma boa notícia, porque eu fiz com números de 0 a 9, repetindo as dezenas.  ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 17, 2009, 03:35:05 am
Firmware Rictad Versão 2.5 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

* Reduzido o espaçamento entre as letras de todas as fontes usadas nas legendas, o que compensa o aumento dado pelo contorno 2.
* Implementado zoom out, com opções de 96%, 71% e 57%.


Nota 1: Ao apertarmos a tecla zoom seguidamente, teremos as opções: 100%, 200%, 300%, 400%, 100% novamente, 96%, 71% e 57%, voltando ao início.
Nota 2: O zoom out não funciona com todo o tipo de conteúdo. Para DivX, todas as opções funcionaram em todos os meus testes. Em todos os DVDs e VCDs que testei, a opção de 96% não funciona. Já com fotos, nenhuma das novas opções funciona. Isso, provavelmente, é devido a alguma restrição no código ARM (ou mesmo à falta de trechos específicos para essas opções nas rotinas que manipulam o zoom desses formatos).
Nota 3: Um dos motivos para a repetição do 100% é manter esse valor quando uma opção não funcionar. Por exemplo, em DVDs, a opção de 96% será mostrada, mas o filme estará em 100% até mudarmos para 71%.

Por favor, reportem qualquer bug ou problema que encontrarem.

Depois eu postarei como foram feitas as mudanças no zoom.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 19, 2009, 02:20:10 am
Parabéns de novo, rictad!  :clapping:
Você foi o primeiro no planeta a implementar Zoom Out em um DVD Player LG!
Estou curioso para entender o porque desses valores: 96%, 71%, etc.
Mesmo sem entender ainda, esses valores de Zoom Out me parecem ideais para reduzir/eliminar o Overscan da TV. Os outros DVD players que vi com Zoom Out tinham valores mais exagerados apenas (tipo 50%, 25%, etc.).
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 19, 2009, 02:44:50 am
Parabéns de novo, rictad!  :clapping:
Você foi o primeiro no planeta a implementar Zoom Out em um DVD Player LG!
Estou curioso para entender o porque desses valores: 96%, 71%, etc.
Mesmo sem entender ainda, esses valores de Zoom Out me parecem ideais para reduzir/eliminar o Overscan da TV. Os outros DVD players que vi com Zoom Out tinham valores mais exagerados apenas (tipo 50%, 25%, etc.).

Que eu saiba, a única finalidade prática de ser ter Zoom Out é mesmo poder eliminar problemas com overscan (http://ryan.com.br/overscan.htm). Eu ainda não consegui imaginar uma aplicação diferente.

Embora eu também esteja curioso para saber de onde vieram esses números exatos, eu concordo que "96%" e "71%" são muito mais realistas do que os valores absurdos comumente implementados por aí. :clapping:

Se ninguém tiver objeções práticas, e considerando ser possível modificar esses valores, eu me arrisco a sugerir que essa faixa de zoom deveria ser mais "estreita". Algo como: 95%, 90% e 85%.

E, lógico, eu adoraria ver os detalhes divulgados  ;D
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 19, 2009, 10:03:35 pm
Bom, então vamos lá!

Uma outra utilidade para o Zoom Out é reduzir o tamanho do filme para compensar uma baixa resolução. Eu às vezes prefiro assistir a um filme em tamanho menor do que ver aqueles borrados gigantes. :laugh:

Os valores não podem ser modificados de forma precisa, pelo menos não no 8032. Talvez só diretamente no ARM, mas aí teríamos que descobrir as rotinas que realizam o redimensionamento. O nível de zoom depende de valores inteiros absolutos repassados a uma rotina que compartilha dados com o ARM (semelhante a ARM_PutChar). Muito provavelmente deve haver uma tabela no ARM (ou pelo menos uma sequência de CMPs) que aplica redimensionamentos diferentes para cada valor repassado. Eu testei valores diferentes e medi (sim, com uma régua mesmo) a variação na tela. Se algo era mostrado com 10cm de comprimento, passou a ter 9,6cm após aplicada a primeira escala modificada, portanto, com 96% do tamanho original. Não se trata do valor da redução e sim do resultado final, como acontece nos softwares gráficos. Por sinal, os 200%, 300% e 400% parecem estar errados. Em 200%, a meu ver, deveria ser dobrado tudo que tenha uma dimensão. Acho que já vi algum texto do Ryan falando sobre isso. ??? A área, então, quadriplicaria. Mas, pelo que medi, é a área que quase dobra. Os comprimentos aumentam só 1,4 vezes, aproximadamente. Fiquei com vontade de corrigir esses valores, mas deixei esse "bug" pra lá.

Implementação do Zoom Out
PARTE 1:


O sistema é relativamente simples:

Existe uma posição de memória que guarda o índice usado para selecionar o zoom, que no caso do DV397H com chip M é #FE06.
Existe uma rotina que aplica o zoom, enviando um determinado valor ao ARM, de acordo com o índice em #FE06.
Há a rotina que eu já relatei num post anterior, que exibe o valor de zoom na tela, conforme o índice em #FE06 (foi a que eu alterei para diminuir o tempo de exibição da informação de zoom).
Há a rotina que eu também já relatei anteriormente, que faz algumas atualizações no índice em #FE06, chama essas duas últimas rotinas e desabilita (desabilitava) a legenda DivX.
Além disso, existem as rotinas chamadas pela RC_Table que atualizam o índice em #FE06 e chamam as demais quando apertamos a tecla zoom e também as que executam o scan quando pressionamos as setas em modo zoom.

Antes de mostrar a rotina que aplica o zoom, vou explicar como funciona a atualização do índice, o que também explica a escolha da nova quantidade de escalas de zoom. Inicialmente, temos a seguinte correspondência entre o índice em #FE06 e o zoom:
#10 -> 100%
#11 -> 200%
#12 -> 300%
#13 -> 400%

Porém, o valor não é normalmente incrementando e, caso atinja 14, volte a 0, como estamos acostumados. As rotinas, de um modo geral, realizam um AND #3 com o valor. Ao realizarmos a função lógica AND #3 com qualquer valor hexadecimal, só podemos ter 4 resultados: 0, 1, 2 ou 3. A atualização do índice se faz da seguinte forma: incremente o índice e faça um AND #3. Assim, mesmo que se incremente de forma indefinida o valor do índice, temos sempre a sequência 0, 1, 2, 3, 0, 1, 2, 3, 0,... porque o AND #3 funciona como um limitante (funciona como módulo 3, em álgebra). E as rotinas irão aplicar / mostrar o zoom, seguindo a tabela:

#10 -> AND #3 -> #0 -> 100%
#11 -> AND #3 -> #1 -> 200%
#12 -> AND #3 -> #2 -> 300%
#13 -> AND #3 -> #3 -> 400%
#14 -> AND #3 -> #0 -> 100%
#15 -> AND #3 -> #1 -> 200%
#16 -> AND #3 -> #2 -> 300%
#17 -> AND #3 -> #3 -> 400%
.................
.................

Algumas vezes, porém, o índice é guardado após o AND #3. E além disso, para "zerar", quando necessário, faz-se um AND #FC (#FC é o inverso de #3, em binário). Assim, nem sempre o índice cresce indefinidamente.

Essa característica limitante do AND existe para todos os números na forma (2^n - 1), em que n é o número de bits setados à direita. Com 2 bits setados, temos 2^2-1 = 3. Com 3 bits setados, teremos 2^3 -1 = 7. Portanto, uma forma fácil de aumentar a quantidade de tipos de zoom, sem ter que alterar a estrutura das rotinas (o que demandaria também mais espaço para o código), é alterar o AND #3 para AND #7 (e o AND #FC para AND #F8, já que o inverso de #B00000111 = #B11111000) e passamos a ter a seguinte tabela:

#10 -> AND #7 -> #0 -> 100%
#11 -> AND #7 -> #1 -> 200%
#12 -> AND #7 -> #2 -> 300%
#13 -> AND #7 -> #3 -> 400%
#14 -> AND #7 -> #4 -> vago
#15 -> AND #7 -> #5 -> vago
#16 -> AND #7 -> #6 -> vago
#17 -> AND #7 -> #7 -> vago
#18 -> AND #7 -> #0 -> 100%
#19 -> AND #7 -> #1 -> 200%
.................
.................

Portanto, ao fazer isso, passei a ter mais 4 opções para o zoom. Como estava pensando em apenas mais 2 opções (algo em torno de 90% e algo em torno de 80%), tive que usar mais 2 opções para outros valores.

A rotina que aplica o zoom é a seguinte:

Código: [Selecionar]
B3:D95E             ; =============== S U B R O U T I N E =======================================
B3:D95E
B3:D95E             ; aplica zoom
B3:D95E
B3:D95E             B3_D95E:                                ; CODE XREF: B3:B3_1547_p
B3:D95E                                                     ; BankSw_243_B3_AD73:B3_AE72_p
B3:D95E 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:D961 E0                          movx    A, @DPTR
B3:D962 54 03                       anl     A, #3           ; alterar para anl A, #7
B3:D964 14                          dec     A
B3:D965 60 1E                       jz      B3_D985         ; se 0, após o dec, eh porque era #1 apos o AND
B3:D967 14                          dec     A
B3:D968 60 3A                       jz      B3_D9A4         ; se 0, após 2 decs, eh porque era #2 apos o AND
B3:D96A 14                          dec     A
B3:D96B 60 56                       jz      B3_D9C3         ; se 0, após 3 decs, eh porque era #3 apos o AND
B3:D96D 24 03                       add     A, #3           ; inserir jump para processar novos valores (#4, #5, #6 e #7)
B3:D96F 70 71                       jnz     B3_D9E2
B3:D971 90 FE 07                    mov     DPTR, #XRAM_FE07    ; inicio zoom 100%
B3:D974 74 07                       mov     A, #7
B3:D976 F0                          movx    @DPTR, A
B3:D977 A3                          inc     DPTR
B3:D978 F0                          movx    @DPTR, A
B3:D979 E4                          clr     A                   ; aplicar zoom 100%
B3:D97A 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:D97D F0                          movx    @DPTR, A
B3:D97E FB                          mov     R3, A
B3:D97F FD                          mov     R5, A               ; valor #0 em R5 = corresponde a 100%
B3:D980 7F 2E                       mov     R7, #0x2E ; '.'
B3:D982 02 06 01                    ljmp    B3_BS_132_B2_FB93   ; enviar para o ARM
B3:D985             ; ---------------------------------------------------------------------------
B3:D985
B3:D985             B3_D985:                                ; CODE XREF: B3_D95E+7_j
B3:D985 7D 03                       mov     R5, #3              ; inicio zoom 200%
B3:D987 7F 2C                       mov     R7, #0x2C ; ','
B3:D989 7E 07                       mov     R6, #7
B3:D98B 12 03 A9                    lcall   B3_BS_32_B4_F36A
B3:D98E 7D 03                       mov     R5, #3
B3:D990 7F 2B                       mov     R7, #0x2B ; '+'
B3:D992 7E 07                       mov     R6, #7
B3:D994 12 03 A9                    lcall   B3_BS_32_B4_F36A
B3:D997 E4                          clr     A                   ; aplicar zoom 200%
B3:D998 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:D99B F0                          movx    @DPTR, A
B3:D99C FB                          mov     R3, A
B3:D99D 7D 04                       mov     R5, #4              ; valor #4 em R5 = corresponde a 200%
B3:D99F 7F 2E                       mov     R7, #0x2E ; '.'
B3:D9A1 02 06 01                    ljmp    B3_BS_132_B2_FB93   ; enviar para o ARM
B3:D9A4             ; ---------------------------------------------------------------------------
B3:D9A4
B3:D9A4             B3_D9A4:                                ; CODE XREF: B3_D95E+A_j
B3:D9A4 7D 04                       mov     R5, #4              ; inicio zoom 300%
B3:D9A6 7F 2C                       mov     R7, #0x2C ; ','
B3:D9A8 7E 07                       mov     R6, #7
B3:D9AA 12 03 A9                    lcall   B3_BS_32_B4_F36A
B3:D9AD 7D 04                       mov     R5, #4
B3:D9AF 7F 2B                       mov     R7, #0x2B ; '+'
B3:D9B1 7E 07                       mov     R6, #7
B3:D9B3 12 03 A9                    lcall   B3_BS_32_B4_F36A
B3:D9B6 E4                          clr     A                   ; aplicar zoom 300%
B3:D9B7 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:D9BA F0                          movx    @DPTR, A
B3:D9BB FB                          mov     R3, A
B3:D9BC 7D 06                       mov     R5, #6              ; valor #6 em R5 = corresponde a 300%
B3:D9BE 7F 2E                       mov     R7, #0x2E ; '.'
B3:D9C0 02 06 01                    ljmp    B3_BS_132_B2_FB93   ; enviar para o ARM
B3:D9C3             ; ---------------------------------------------------------------------------
B3:D9C3
B3:D9C3             B3_D9C3:                                ; CODE XREF: B3_D95E+D_j
B3:D9C3 7D 05                       mov     R5, #5              ; inicio zoom 400%
B3:D9C5 7F 2C                       mov     R7, #0x2C ; ','
B3:D9C7 7E 07                       mov     R6, #7
B3:D9C9 12 03 A9                    lcall   B3_BS_32_B4_F36A
B3:D9CC 7D 05                       mov     R5, #5
B3:D9CE 7F 2B                       mov     R7, #0x2B ; '+'
B3:D9D0 7E 07                       mov     R6, #7
B3:D9D2 12 03 A9                    lcall   B3_BS_32_B4_F36A
B3:D9D5 E4                          clr     A                   ; aplicar zoom 400%
B3:D9D6 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:D9D9 F0                          movx    @DPTR, A
B3:D9DA FB                          mov     R3, A
B3:D9DB 7D 08                       mov     R5, #8              ; valor #8 em R5 = corresponde a 400%
B3:D9DD 7F 2E                       mov     R7, #0x2E ; '.'
B3:D9DF 12 06 01                    lcall   B3_BS_132_B2_FB93
B3:D9E2
B3:D9E2             B3_D9E2:                                ; CODE XREF: B3_D95E+11_j
B3:D9E2 22                          ret
B3:D9E2             ; End of function B3_D95E

Vemos que no início de cada segmento que aplica um zoom, com excessão do de 100%, temos 2 ARM_PutChar que não identifiquei o motivo. Nos testes, alterei os valores, eliminei esses trechos, e não fez qualquer diferença em nada. Mas o local que realmente define o nível de zoom está no final de cada segmento. Por exemplo, no caso do zoom de 200%:

Código: [Selecionar]
B3:D997 E4                          clr     A                   ; aplicar zoom 200%
B3:D998 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:D99B F0                          movx    @DPTR, A
B3:D99C FB                          mov     R3, A
B3:D99D 7D 04                       mov     R5, #4              ; valor #4 em R5 = corresponde a 200%
B3:D99F 7F 2E                       mov     R7, #0x2E ; '.'
B3:D9A1 02 06 01                    ljmp    B3_BS_132_B2_FB93   ; enviar para o ARM

Então fiz testes alterando o valor de R5 nesse trecho. Já tínhamos 0 para 100%, 4 para 200%, 6 para 300% e 8 para 400%. Testei 1, 2 e 3, e não fizeram nada em DivX. Posteriormente, ao testar com DVD, eles deram um pequeno aumento de zoom. Não medi, mas diria algo em torno de 110%, 120% e 130%. Os valores 5 e 7 também não fizeram nada em DivX e não testei em DVD. O valor #9 gera o zoom gigante, os horríveis 1600% (que, após medição, revelaram-se 800%), em todos os tipos de arquivos. Ao testar o valor #0A, vi que a tela ficou um pouquinho menor em DivX. Medi 96%. Em DVD e foto, não faz diferença. #0B dá 71% para DivX e DVD/VCD, mas nada para imagens. Já #0C, dá 57%. Ainda tem o #0D, que deu em torno de 45%, eu acho.

A minha escolha foi então deixar 1600% (mas corrigido para 800%), 96%, 71% e 57%. A razão do zoom gigante era apenas para os arquivos de foto, os únicos em que aquele zoom pode ter alguma utilidade. Mas tive 2 problemas com os 800% de zoom. O primeiro é que, como 96% não funciona em DVDs nem em fotos (e os demais só em vídeos), quando o usuário selecionasse 96%, ficaria com a tela ainda em 800% do zoom anterior, o que pareceria um bug horrível. O outro problema é que todo zoom in abre a função scan para que possamos navegar pela imagem com as setas. Na rotina que eu apresentarei a seguir, eu identifiquei o trecho que desenha o retângulo de scan, que diminui de tamanho de acordo com o zoom, mas ia dar um trabalho a mais para determinar os valores exatos da largura e da altura do retângulo, bem como os valores máximos e mínimos do deslocamento. Então deixei 100% repetido como quarta opção (o que deixou um aspecto bem legal, dando a ideia de que o zoom out simplesmente não funciona quando for o caso), seguido de 96%, 71% e 57%. Outra coisa interessante é que quando você deixa no segundo 100% e o ícone de zoom some, ao apertar zoom novamente, volta-se ao primeiro 100%, fazendo com que tenha que se percorrer a sequencia novamente (isso, obviamente, não ocorre quando deixamos nas opções de zoom out).
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 19, 2009, 10:08:12 pm
Implementação do Zoom Out
PARTE 2:


A rotina que desenha o ícone de zoom e informa o valor é a seguinte:

Código: [Selecionar]
B3:3C47             ; desenha icone e valor de zoom
B3:3C47
B3:3C47             BankSw_379_B3_3C47:                     ; CODE XREF: B3:1529_p
B3:3C47                                                     ; B3:1557_p ...
B3:3C47 90 FE 13                    mov     DPTR, #XRAM_FE13
B3:3C4A E0                          movx    A, @DPTR
B3:3C4B FC                          mov     R4, A
...........................
...........................
B3:3D6F
B3:3D6F             B3_3D6F:                                ; CODE XREF: BankSw_379_B3_3C47+C0_j
B3:3D6F 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:3D72 E0                          movx    A, @DPTR
B3:3D73 54 03                       anl     A, #3           ; alterar para anl A, #7
B3:3D75 14                          dec     A
B3:3D76 60 7C                       jz      B3_3DF4         ; se 0, apos o AND #7 era 1
B3:3D78 14                          dec     A
B3:3D79 70 03                       jnz     B3_3D7E         ; se nao 0, apos o AND #7 nao era 2
B3:3D7B 02 3E BF                    ljmp    B3_3EBF
B3:3D7E             ; ---------------------------------------------------------------------------
B3:3D7E
B3:3D7E             B3_3D7E:                                ; CODE XREF: BankSw_379_B3_3C47+132_j
B3:3D7E 14                          dec     A
B3:3D7F 70 03                       jnz     B3_3D84         ;se nao 0, apos o AND #7 nao era 3
B3:3D81 02 3F 8A                    ljmp    B3_3F8A
B3:3D84             ; ---------------------------------------------------------------------------
B3:3D84
B3:3D84             B3_3D84:                                ; CODE XREF: BankSw_379_B3_3C47+138_j
B3:3D84 24 03                       add     A, #3
B3:3D86 60 03                       jz      B3_3D8B        ; manter: se 0, entao era 0 apos o AND #7
B3:3D88 02 40 52                    ljmp    B3_4052        ; inserir jump para processar outros valores
B3:3D8B             ; ---------------------------------------------------------------------------
B3:3D8B
B3:3D8B             B3_3D8B:                                ; CODE XREF: BankSw_379_B3_3C47+13F_j
B3:3D8B 90 FB 43                    mov     DPTR, #XRAM_FB43
B3:3D8E E4                          clr     A
B3:3D8F F0                          movx    @DPTR, A
B3:3D90 A3                          inc     DPTR
B3:3D91 74 0F                       mov     A, #0xF
B3:3D93 F0                          movx    @DPTR, A
B3:3D94 90 FB 45                    mov     DPTR, #XRAM_FB45
B3:3D97 E4                          clr     A
B3:3D98 F0                          movx    @DPTR, A
B3:3D99 A3                          inc     DPTR
B3:3D9A 74 06                       mov     A, #6
B3:3D9C F0                          movx    @DPTR, A
B3:3D9D 7D 8F                       mov     R5, #0x8F ; 'Å'
B3:3D9F 7C 00                       mov     R4, #0
B3:3DA1 7F 08                       mov     R7, #8
B3:3DA3 12 06 19                    lcall   B3_BS_136_B5_AF48
B3:3DA6 90 FB 43                    mov     DPTR, #XRAM_FB43
B3:3DA9 E4                          clr     A
B3:3DAA F0                          movx    @DPTR, A
B3:3DAB A3                          inc     DPTR
B3:3DAC 74 3C                       mov     A, #0x3C ; '<'
B3:3DAE F0                          movx    @DPTR, A
B3:3DAF 90 FB 45                    mov     DPTR, #XRAM_FB45
B3:3DB2 E4                          clr     A
B3:3DB3 F0                          movx    @DPTR, A
B3:3DB4 A3                          inc     DPTR
B3:3DB5 74 0C                       mov     A, #0xC
B3:3DB7 F0                          movx    @DPTR, A
B3:3DB8 90 FB D3                    mov     DPTR, #XRAM_FBD3
B3:3DBB 74 04                       mov     A, #4            ; tamanho da string informacao de zoom, 4 caracteres?
B3:3DBD F0                          movx    @DPTR, A         
B3:3DBE A3                          inc     DPTR
B3:3DBF 74 31                       mov     A, #0x31 ; '1'   ; inicio da string, caracter "1"
B3:3DC1 F0                          movx    @DPTR, A
B3:3DC2 A3                          inc     DPTR
B3:3DC3 14                          dec     A                ; caracter "0", duas vezes
B3:3DC4 F0                          movx    @DPTR, A
B3:3DC5 A3                          inc     DPTR
B3:3DC6 F0                          movx    @DPTR, A
B3:3DC7 A3                          inc     DPTR
B3:3DC8 74 25                       mov     A, #0x25 ; '%'   ; caracter "%"
B3:3DCA F0                          movx    @DPTR, A
B3:3DCB 7B 01                       mov     R3, #1
B3:3DCD 7A FB                       mov     R2, #0xFB ; '¹'
B3:3DCF 79 D3                       mov     R1, #0xD3 ; 'Ë'
B3:3DD1 7F 08                       mov     R7, #8
B3:3DD3 12 06 B5                    lcall   B3_BS_162_B5_92E4
B3:3DD6 90 FB 43                    mov     DPTR, #XRAM_FB43
B3:3DD9 E4                          clr     A
B3:3DDA F0                          movx    @DPTR, A
B3:3DDB A3                          inc     DPTR
B3:3DDC 74 02                       mov     A, #2
B3:3DDE F0                          movx    @DPTR, A
B3:3DDF 90 FB 45                    mov     DPTR, #XRAM_FB45
B3:3DE2 E4                          clr     A
B3:3DE3 F0                          movx    @DPTR, A
B3:3DE4 A3                          inc     DPTR
B3:3DE5 74 28                       mov     A, #0x28 ; '('
B3:3DE7 F0                          movx    @DPTR, A
B3:3DE8 7D 93                       mov     R5, #0x93 ; 'ô'
B3:3DEA 7C 00                       mov     R4, #0
B3:3DEC 7F 08                       mov     R7, #8
B3:3DEE 12 06 19                    lcall   B3_BS_136_B5_AF48
B3:3DF1 02 40 52                    ljmp    B3_4052
B3:3DF4             ; ---------------------------------------------------------------------------
B3:3DF4
B3:3DF4             B3_3DF4:                                ; CODE XREF: BankSw_379_B3_3C47+12F_j
B3:3DF4 90 FB 43                    mov     DPTR, #XRAM_FB43
B3:3DF7 E4                          clr     A
B3:3DF8 F0                          movx    @DPTR, A
B3:3DF9 A3                          inc     DPTR
B3:3DFA 74 0F                       mov     A, #0xF       
B3:3DFC F0                          movx    @DPTR, A
B3:3DFD 90 FB 45                    mov     DPTR, #XRAM_FB45
B3:3E00 E4                          clr     A
B3:3E01 F0                          movx    @DPTR, A
B3:3E02 A3                          inc     DPTR
B3:3E03 74 06                       mov     A, #6
B3:3E05 F0                          movx    @DPTR, A
B3:3E06 7D 8F                       mov     R5, #0x8F ; 'Å'
B3:3E08 7C 00                       mov     R4, #0
B3:3E0A 7F 08                       mov     R7, #8
B3:3E0C 12 06 19                    lcall   B3_BS_136_B5_AF48
B3:3E0F 90 FB 43                    mov     DPTR, #XRAM_FB43
B3:3E12 E4                          clr     A
B3:3E13 F0                          movx    @DPTR, A
B3:3E14 A3                          inc     DPTR
B3:3E15 74 3C                       mov     A, #0x3C ; '<'
B3:3E17 F0                          movx    @DPTR, A
B3:3E18 90 FB 45                    mov     DPTR, #XRAM_FB45
B3:3E1B E4                          clr     A
B3:3E1C F0                          movx    @DPTR, A
B3:3E1D A3                          inc     DPTR
B3:3E1E 74 0C                       mov     A, #0xC
B3:3E20 F0                          movx    @DPTR, A
B3:3E21 90 FB D3                    mov     DPTR, #XRAM_FBD3
B3:3E24 74 04                       mov     A, #4
B3:3E26 F0                          movx    @DPTR, A
B3:3E27 A3                          inc     DPTR
B3:3E28 74 32                       mov     A, #0x32 ; '2'
B3:3E2A F0                          movx    @DPTR, A
B3:3E2B A3                          inc     DPTR
B3:3E2C 74 30                       mov     A, #0x30 ; '0'
B3:3E2E F0                          movx    @DPTR, A
B3:3E2F A3                          inc     DPTR
B3:3E30 F0                          movx    @DPTR, A
B3:3E31 A3                          inc     DPTR
B3:3E32 74 25                       mov     A, #0x25 ; '%'
B3:3E34 F0                          movx    @DPTR, A
B3:3E35 7B 01                       mov     R3, #1
B3:3E37 7A FB                       mov     R2, #0xFB ; '¹'
B3:3E39 79 D3                       mov     R1, #0xD3 ; 'Ë'
B3:3E3B 7F 08                       mov     R7, #8
B3:3E3D 12 06 B5                    lcall   B3_BS_162_B5_92E4
B3:3E40 90 29 52                    mov     DPTR, #B3_2952
B3:3E43 E4                          clr     A
B3:3E44 93                          movc    A, @A+DPTR
B3:3E45 FF                          mov     R7, A
B3:3E46 90 FE 07                    mov     DPTR, #XRAM_FE07
B3:3E49 E0                          movx    A, @DPTR
B3:3E4A C3                          clr     C
B3:3E4B 9F                          subb    A, R7
B3:3E4C 50 02                       jnc     B3_3E50
B3:3E4E EF                          mov     A, R7
B3:3E4F F0                          movx    @DPTR, A
................................
................................
B3:405F             B3_405F:                                ; CODE XREF: BankSw_379_B3_3C47+410_j
B3:405F 7F 0A                       mov     R7, #0xA        ; tempo para informacoes da tecla zoom
B3:4061 02 05 FB                    ljmp    B3_BS_131_B2_FDBD
B3:4061             ; End of function BankSw_379_B3_3C47

As modificações são um pouquinho diferentes das que foram feitas na rotina anterior. Mantive o add A, #3 em #3D84 e inseri o jump logo abaixo, que será executado só se o índice não for nenhum dos 4 primeiros valores. Olhando cada seguimento chamado após o AND #7, vemos que todos possuem a string correspondente ao zoom presente diretamente no código. Por exemplo, o seguimento que mostra 200%:

Código: [Selecionar]
B3:3E21 90 FB D3                    mov     DPTR, #XRAM_FBD3
B3:3E24 74 04                       mov     A, #4           4 caracteres? duvida...
B3:3E26 F0                          movx    @DPTR, A
B3:3E27 A3                          inc     DPTR
B3:3E28 74 32                       mov     A, #0x32 ; '2'  caracter "2"
B3:3E2A F0                          movx    @DPTR, A
B3:3E2B A3                          inc     DPTR
B3:3E2C 74 30                       mov     A, #0x30 ; '0'  caracter "0", 2 vezes
B3:3E2E F0                          movx    @DPTR, A
B3:3E2F A3                          inc     DPTR
B3:3E30 F0                          movx    @DPTR, A
B3:3E31 A3                          inc     DPTR
B3:3E32 74 25                       mov     A, #0x25 ; '%' caracter "%"
B3:3E34 F0                          movx    @DPTR, A

E todos, menos o de 100%, possuem sequências que são responsáveis por desenhar o retângulo do scan (a melhor forma de ver essa rotina é com a visão gráfica do IDA). Como as novas opções não possuem scan nenhum, pois são zoom out, o que eu fiz foi copiar o trecho de 100% e, dependendo do valor em #FE06, usar as strings correspondentes, sempre começando com o caracter #20 (espaço), já que agora são apenas 2 casas decimais. É isso que é feito seguindo-se o jump modificado em B3:3D88 (ver no IDA o código modificado).

Agora, as poucas alterações feitas na rotina que chama as duas anteriores:

Código: [Selecionar]
B3:AD73             ; =============== S U B R O U T I N E =======================================
B3:AD73
B3:AD73             ; mostra informacoes sobre zoom
B3:AD73
B3:AD73             BankSw_243_B3_AD73:                     ; DATA XREF: B0:B0_BS_243_B3_AD73_o
B3:AD73                                                     ; B1:B1_BS_243_B3_AD73_o ...
B3:AD73 90 FB D2                    mov     DPTR, #XRAM_FBD2
B3:AD76 EF                          mov     A, R7
B3:AD77 F0                          movx    @DPTR, A
B3:AD78 7F 0A                       mov     R7, #0xA
B3:AD7A 12 05 AD                    lcall   B3_BS_118_B5_B085
B3:AD7D 90 FE 13                    mov     DPTR, #XRAM_FE13
B3:AD80 E0                          movx    A, @DPTR
B3:AD81 FC                          mov     R4, A
B3:AD82 A3                          inc     DPTR
B3:AD83 E0                          movx    A, @DPTR
B3:AD84 FD                          mov     R5, A
B3:AD85 A3                          inc     DPTR
B3:AD86 E0                          movx    A, @DPTR
B3:AD87 FE                          mov     R6, A
B3:AD88 A3                          inc     DPTR
B3:AD89 E0                          movx    A, @DPTR
B3:AD8A E4                          clr     A
B3:AD8B FF                          mov     R7, A
B3:AD8C EE                          mov     A, R6
B3:AD8D 54 02                       anl     A, #2
B3:AD8F FE                          mov     R6, A
B3:AD90 E4                          clr     A
B3:AD91 FD                          mov     R5, A
B3:AD92 FC                          mov     R4, A
B3:AD93 EE                          mov     A, R6
B3:AD94 60 05                       jz      B3_AD9B
B3:AD96 7F 09                       mov     R7, #9          ; desabilita legendas DivX em modo zoom
B3:AD98 12 07 27                    lcall   B3_BS_181_B5_D0EA
B3:AD9B
B3:AD9B             B3_AD9B:                                ; CODE XREF: BankSw_243_B3_AD73+21_j
B3:AD9B 90 FE 13                    mov     DPTR, #XRAM_FE13
B3:AD9E E0                          movx    A, @DPTR
B3:AD9F FC                          mov     R4, A
B3:ADA0 A3                          inc     DPTR
B3:ADA1 E0                          movx    A, @DPTR
B3:ADA2 FD                          mov     R5, A
B3:ADA3 A3                          inc     DPTR
B3:ADA4 E0                          movx    A, @DPTR
B3:ADA5 FE                          mov     R6, A
B3:ADA6 A3                          inc     DPTR
B3:ADA7 E0                          movx    A, @DPTR
B3:ADA8 54 04                       anl     A, #4
B3:ADAA FF                          mov     R7, A
B3:ADAB E4                          clr     A
B3:ADAC FE                          mov     R6, A
B3:ADAD FD                          mov     R5, A
B3:ADAE FC                          mov     R4, A
B3:ADAF EF                          mov     A, R7
B3:ADB0 60 0A                       jz      B3_ADBC
B3:ADB2 7F 02                       mov     R7, #2
B3:ADB4 12 06 49                    lcall   B3_BS_144_B2_EB30
B3:ADB7 7F 02                       mov     R7, #2
B3:ADB9 12 05 AD                    lcall   B3_BS_118_B5_B085
......................................
......................................
B3:ADE1             B3_ADE1:                                ; CODE XREF: BankSw_243_B3_AD73+60_j
B3:ADE1 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:ADE4 E0                          movx    A, @DPTR
B3:ADE5 54 BF                       anl     A, #0xBF
B3:ADE7 F0                          movx    @DPTR, A
B3:ADE8 E0                          movx    A, @DPTR
B3:ADE9 FF                          mov     R7, A
B3:ADEA C4                          swap    A
B3:ADEB 13                          rrc     A
B3:ADEC 54 07                       anl     A, #7
B3:ADEE 30 E0 06                    jnb     ACC.0, B3_ADF7  ; Accumulator
B3:ADF1 EF                          mov     A, R7
B3:ADF2 54 DF                       anl     A, #0xDF
B3:ADF4 F0                          movx    @DPTR, A
B3:ADF5 80 1E                       sjmp    B3_AE15
B3:ADF7             ; ---------------------------------------------------------------------------
B3:ADF7
B3:ADF7             B3_ADF7:                                ; CODE XREF: BankSw_243_B3_AD73+7B_j
B3:ADF7 90 FC D4                    mov     DPTR, #XRAM_FCD4
B3:ADFA E0                          movx    A, @DPTR
B3:ADFB 20 E0 0A                    jb      ACC.0, B3_AE08  ; Accumulator
B3:ADFE 7F 03                       mov     R7, #3
B3:AE00 12 05 AD                    lcall   B3_BS_118_B5_B085
B3:AE03 E4                          clr     A
B3:AE04 90 FE 11                    mov     DPTR, #XRAM_FE11
B3:AE07 F0                          movx    @DPTR, A
B3:AE08
B3:AE08             B3_AE08:                                ; CODE XREF: BankSw_243_B3_AD73+88_j
B3:AE08 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:AE0B E0                          movx    A, @DPTR
B3:AE0C 54 FC                       anl     A, #0xFC        ; inverso da quantidade de tipos de zoom - alterar para #F8
B3:AE0E F0                          movx    @DPTR, A
B3:AE0F A3                          inc     DPTR
B3:AE10 74 07                       mov     A, #7
B3:AE12 F0                          movx    @DPTR, A
B3:AE13 A3                          inc     DPTR
B3:AE14 F0                          movx    @DPTR, A
B3:AE15
B3:AE15             B3_AE15:                                ; CODE XREF: BankSw_243_B3_AD73+82_j
B3:AE15 90 FC CF                    mov     DPTR, #XRAM_FCCF
B3:AE18 E0                          movx    A, @DPTR
B3:AE19 FF                          mov     R7, A
B3:AE1A 13                          rrc     A
B3:AE1B 13                          rrc     A
B3:AE1C 13                          rrc     A
B3:AE1D 54 07                       anl     A, #7
B3:AE1F 64 02                       xrl     A, #2
B3:AE21 70 33                       jnz     B3_AE56
B3:AE23 7F 9A                       mov     R7, #0x9A ; 'Ü'
B3:AE25 7E 02                       mov     R6, #2
B3:AE27 12 03 A3                    lcall   B3_BS_31_B4_F1E6
B3:AE2A EF                          mov     A, R7
B3:AE2B 64 02                       xrl     A, #2
B3:AE2D 70 27                       jnz     B3_AE56
B3:AE2F 7F 83                       mov     R7, #0x83 ; 'â'
B3:AE31 FE                          mov     R6, A
B3:AE32 12 03 A3                    lcall   B3_BS_31_B4_F1E6
B3:AE35 EF                          mov     A, R7
B3:AE36 64 07                       xrl     A, #7
B3:AE38 60 15                       jz      B3_AE4F
B3:AE3A E4                          clr     A
B3:AE3B 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:AE3E F0                          movx    @DPTR, A
B3:AE3F FB                          mov     R3, A
B3:AE40 FD                          mov     R5, A
B3:AE41 7F 04                       mov     R7, #4
B3:AE43 12 06 01                    lcall   B3_BS_132_B2_FB93
B3:AE46 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:AE49 E0                          movx    A, @DPTR
B3:AE4A 44 40                       orl     A, #0x40
B3:AE4C F0                          movx    @DPTR, A
B3:AE4D 80 07                       sjmp    B3_AE56
B3:AE4F             ; ---------------------------------------------------------------------------
B3:AE4F
B3:AE4F             B3_AE4F:                                ; CODE XREF: BankSw_243_B3_AD73+C5_j
B3:AE4F 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:AE52 E0                          movx    A, @DPTR
B3:AE53 44 40                       orl     A, #0x40
B3:AE55 F0                          movx    @DPTR, A
B3:AE56
B3:AE56             B3_AE56:                                ; CODE XREF: BankSw_243_B3_AD73+AE_j
B3:AE56                                                     ; BankSw_243_B3_AD73+BA_j ...
B3:AE56 7F 89                       mov     R7, #0x89 ; 'ë'
B3:AE58 7E 00                       mov     R6, #0
B3:AE5A 12 03 A3                    lcall   B3_BS_31_B4_F1E6
B3:AE5D EF                          mov     A, R7
B3:AE5E 70 12                       jnz     B3_AE72
B3:AE60 90 FB EA                    mov     DPTR, #XRAM_FBEA
B3:AE63 F0                          movx    @DPTR, A
B3:AE64 FB                          mov     R3, A
B3:AE65 FD                          mov     R5, A
B3:AE66 7F 2E                       mov     R7, #0x2E ; '.'
B3:AE68 12 06 01                    lcall   B3_BS_132_B2_FB93
B3:AE6B 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:AE6E E0                          movx    A, @DPTR
B3:AE6F 54 FC                       anl     A, #0xFC        ; inverso da quantidade de tipos de zoom - alterar para #F8
B3:AE71 F0                          movx    @DPTR, A
B3:AE72
B3:AE72             B3_AE72:                                ; CODE XREF: BankSw_243_B3_AD73+EB_j
B3:AE72 12 D9 5E                    lcall   B3_D95E         ; aplica zoom
B3:AE75 D2 72                       setb    RAM_2E.2
B3:AE77 12 3C 47                    lcall   BankSw_379_B3_3C47 ; desenha icone e valor de zoom
B3:AE7A 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:AE7D E0                          movx    A, @DPTR
B3:AE7E 44 10                       orl     A, #0x10
B3:AE80 F0                          movx    @DPTR, A
B3:AE81 22                          ret
B3:AE81             ; End of function BankSw_243_B3_AD73

Falta apenas mostrar os ajustes feitos nas atualizações dos índices após apertar zoom e as modificações feitas nas rotinas chamadas após pressionar as setas, pois, mesmo que o scan não seja feito, o ícone fica piscando caso aperte alguma seta. O ideal, então, foi deixar como em 100%: ao apertar uma seta, nada acontece, a informação de zoom some e, se tivermos assistindo DVD/VCD, o ícone de proíbido aparece. As rotinas a seguir seguem uma RC_Table. Acompanhem no IDA para ver as modificações quando envolver jumps:

Código: [Selecionar]
Tecla zoom:

B3:14F6             B3_14F6:                                ; DATA XREF: B3:1461_o
B3:14F6                                                     ; B3:1464_o ...
B3:14F6 D2 71                       setb    RAM_2E.1
B3:14F8 7F 81                       mov     R7, #0x81 ; 'ü'
B3:14FA 7E 00                       mov     R6, #0
B3:14FC 12 03 A3                    lcall   B3_BS_31_B4_F1E6
...............................
...............................
B3:152F             B3_152F:                                ; CODE XREF: B3:1524_j
B3:152F 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:1532 E0                          movx    A, @DPTR
B3:1533 FF                          mov     R7, A
B3:1534 54 FC                       anl     A, #0xFC        ; inverso da quantidade de tipos de zoom - alterar para #F8
B3:1536 FE                          mov     R6, A
B3:1537 EF                          mov     A, R7
B3:1538 04                          inc     A
B3:1539 54 03                       anl     A, #3           ; quantidade de tipos de zoom  - alterar para #7
B3:153B 4E                          orl     A, R6
B3:153C F0                          movx    @DPTR, A
B3:153D 54 03                       anl     A, #3           ; quantidade de tipos de zoom  - alterar para #7
B3:153F FF                          mov     R7, A
B3:1540 BF 04 04                    cjne    R7, #4, B3_1547 ; limite quantidade de tipos de zoom, alterar para #8??
B3:1543 E0                          movx    A, @DPTR
B3:1544 54 FC                       anl     A, #0xFC        ; inverso da quantidade de tipos de zoom - alterar para #F8
B3:1546 F0                          movx    @DPTR, A
B3:1547
B3:1547             B3_1547:                                ; CODE XREF: B3:1540_j
B3:1547 12 D9 5E                    lcall   B3_D95E         ; aplica zoom
B3:154A 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:154D E0                          movx    A, @DPTR
B3:154E 54 03                       anl     A, #3           ; quantidade de tipos de zoom - alterar para #7
B3:1550 C3                          clr     C
B3:1551 94 04                       subb    A, #4           ; limite quantidade de tipos de zoom - alterar para #8??
B3:1553 50 08                       jnc     B3_155D
B3:1555 C2 72                       clr     RAM_2E.2
B3:1557 12 3C 47                    lcall   BankSw_379_B3_3C47 ; desenha icone e valor de zoom
B3:155A 02 19 68                    ljmp    B3_1968
B3:155D             ; ---------------------------------------------------------------------------
B3:155D
B3:155D             B3_155D:                                ; CODE XREF: B3:1553_j
B3:155D 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:1560 E0                          movx    A, @DPTR
B3:1561 54 FC                       anl     A, #0xFC        ; inverso da quantidade de tipos de zoom - alterar para #F8
B3:1563 F0                          movx    @DPTR, A
.......................................
.......................................

Scan, para cada seta:

B3:1588             B3_1588:                                ; DATA XREF: B3:140D_o
B3:1588 D2 71                       setb    RAM_2E.1
B3:158A 90 FE 06                    mov     DPTR, #XRAM_FE06
B3:158D E0                          movx    A, @DPTR
B3:158E 54 03                       anl     A, #3           ; desviar para tirar scan
B3:158E                                                     ; dos novos niveis de zoom
........................................
........................................
B3:15F3 54 03                       anl     A, #3           ; desviar para tirar scan
B3:15F3                                                     ; dos novos niveis de zoom
........................................
........................................
B3:165A 54 03                       anl     A, #3           ; desviar para tirar scan
B3:165A                                                     ; dos novos niveis de zoom
........................................
........................................
B3:16C1 54 03                       anl     A, #3           ; desviar para tirar scan
B3:16C1                                                     ; dos novos niveis de zoom
........................................
........................................
B3:1988 A2 70                       mov     C, RAM_2E.0     ; se clear, entao mostra sinal de proibido
B3:198A 22                          ret

Para achar essas rotinas, basta procurar a rotina que aplica o zoom, que eu acho ser a mais fácil. Buscar algo do tipo 90 ? ? E0 54 03 14 60 1E 14 60 3A 14 deve funcionar em vários LGs que usam a mesma quantidade de níveis de zoom. Ao achar a rotina, pode-se usar o IDA para localizar as duas chamadas a ela. Uma das chamadas será da rotina de roteamento da tecla zoom e a outra da rotina que chama também a que mostra o valor de zoom.

Estou trabalhando na modificação do outro modelo de DV397H, pois a rotina é idêntica, com os mesmos valores. Só não sei se vai funcionar com os novos valores, mas vale a pena testar. ;D 
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 20, 2009, 01:40:22 pm
Obrigado, rictad!

Já encontrei as rotinas equivalentes no LG DV256K (que no Firmware Original alterna entre 100%, 400% e 1600%; #0, #8, e #9 em R5 respectivamente). Tentei colocar #0A (96%) e #0B (71%) no lugar de #8 e #9 e tive os seguintes resultados: em DivX só funcionou a opção 71%. E em DVD não funcionou nehuma das duas opções. Portanto, o DV256K está um pouco mais "chato" com isso. Vou testar ainda os outros valores (menores e maiores). Com tempo, vou tentar investigar alternativas. De qualquer modo, o Zoom Out de 71% para DivX já está garantido (penso que irá agradar usuários que sentem falta dessa função).
Desculpem-me pelo OFF TOPIC...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 20, 2009, 10:07:46 pm
Obrigado, rictad!

Já encontrei as rotinas equivalentes no LG DV256K (que no Firmware Original alterna entre 100%, 400% e 1600%; #0, #8, e #9 em R5 respectivamente). Tentei colocar #0A (96%) e #0B (71%) no lugar de #8 e #9 e tive os seguintes resultados: em DivX só funcionou a opção 71%. E em DVD não funcionou nehuma das duas opções. Portanto, o DV256K está um pouco mais "chato" com isso. Vou testar ainda os outros valores (menores e maiores). Com tempo, vou tentar investigar alternativas. De qualquer modo, o Zoom Out de 71% para DivX já está garantido (penso que irá agradar usuários que sentem falta dessa função).
Desculpem-me pelo OFF TOPIC...

É, o Allanzin acabou de me confirmar que apenas 71% e 57% funcionaram no outro modelo de DV397H. E só em DivX. Provavelmente é igual ao DV256K. Nesse modelo, então, vou deixar 71%, 57% e 48% (valor #0D), devido à forma que modifico as rotinas. Zeurt, se você conseguir outros valores de outras formas, avisa. ;D

EDIT: Vocês acham que os valores originais devem ser corrigidos para os valores reais medidos? Exemplo: 200%, na verdade, corresponde a um zoom de 140%.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 22, 2009, 11:38:03 pm
Vocês acham que os valores originais devem ser corrigidos para os valores reais medidos? Exemplo: 200%, na verdade, corresponde a um zoom de 140%.

Sim eu concordo em mostrar os valores reais, não tem porque manter um valor fictício... !!

Abraços !!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 23, 2009, 11:28:37 pm
Firmware Rictad Versão 2.6 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

Corrigidos definitivamente os alinhamentos das legendas.
Corrigidos os valores de zoom para os valores reais medidos. Os novos valores de zoom in são: 140%, 160% e 180%.
Corrigido um pequeno "bug" no final da rotina de exibição de legendas: um "nop" foi esquecido por mim no lugar de setar uma flag, o que poderia causar alguma falha na exibição das legendas.
Retirado trecho de código não utilizado esquecido por mim quando estava implementando os novos zooms.


Nota 1: Quando era exibida apenas uma linha, a posição vertical da linha única ainda estava com diferença de um ponto para a linha inferior de quando eram exibidas mais linhas. Além disso, a posição horizontal dessa linha única também era ligeiramente descentralizada com a relação à exibição de mais linhas, semelhante ao que ocorre a outros LGs, mas de difícil percepção, pois só ocorria com a linha única. Foi só alterar mais alguns valores na mesma rotina anterior, do ARM.
Nota 2: Os níveis de zoom in não foram alterados. Apenas os valores, que estavam errados.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 23, 2009, 11:29:53 pm
Firmware Rictad Versão 2.3 para DV397H com chip MT1389M

ATENÇÃO, usuários do modelo DV397H com chip MT1389S não devem atualizar com essa versão!

Possui quase todas as melhorias feitas para o outro modelo.

Diferenças entre esta versão e a versão 2.6 do outro modelo:
1.) Funções tempo restante e tempo total ainda não implementadas.
2.) Devido a diferenças no ARM, as legendas são exibidas com no máximo 3 linhas, com o bug do pequeno deslocamento da primeira linha, sem quebra inteligente de linhas, além de que as tags itálicas não são suprimidas (o que agrada uns e desagrada outros).
3.) Devido a diferenças no 8032, não foi possível implementar a opção de alinhamento vertical.
4.) Devido a diferenças no ARM, as opções de zoom out são 71%, 57% e 48%, e funcionam apenas em DivX.


Agradecimentos especiais ao Allanzin, que testou as várias versões alfas que enviei a ele, até podermos chegar a esta versão.

Nota 1: Todas as demais opções e melhorias implementadas no outro modelo estão presentes nesta versão.
Nota 2: Posterior análise no código ARM poderá solucionar os problemas de alinhamento na exibição da legenda, presentes no firmware original.
Nota 3: Com relação ao desenvolvimento, a única grande diferença encontrada até agora foi a necessidade de aumentar o tamanho do banco 5. Os bancos têm, normalmente, 64k. Mas nos dois modelos, o banco 5 tem menos (53k no de chip S e 62k no de chip M). No que seria o final do bloco, está o início do código ARM. Como as rotinas de zoom deste modelo ficam no banco 5, precisei de espaço. Extraí o código 8032, o aumentei em aproximadamente 1k com um editor hexadecimal normal e o reinseri no firmware usando o MTK Replacer.

EDITADO em 24/04/09: Problema no zoom out corrigido após o feedback do Allanzin aí embaixo.
Era só resetar a flag C antes de fazer a subtração no trecho que mostra os valores de zoom out.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Abril 24, 2009, 02:47:56 am
Os novos valores para o zoom in estão ok ! Porém o zoom out ficou na ordem incorreta, está assim 48, 71, 57...

Abraço !
Título: Re: Firmware do LG DV397H
Enviado por: alxfrmmng em Abril 25, 2009, 07:05:52 pm
Rictad ! Mais uma vez obrigado pelo firmware.
Acabei de atualizar o meu com a versão 2.6 chip MT1389S e gostaria de perguntar se há correção para o caso da fonte helvetica (minha preferida). Veja exemplo abaixo de como fica a divisão de linhas para um texto, que com outra fonte ocupa apenas 3 linhas.
É desenvolvido para criar novas safras
de
alimentos fortes e resistentes às secas
e insetos.
Obrigado !      Alexandre
Título: Re: Firmware do LG DV397H
Enviado por: Soultux em Abril 25, 2009, 08:36:56 pm
Olá caros

Sou novato no fórum mas já testei todas as versões dos firmwares estão funcionando 100% obrigado por isso mas sem querer tirar os méritos rictad não acha que deveria tirar aquela modificação onde você adicionou seu nome no background e na janela de serviço pois se tiver que levar a garantia não acha que já vão barrar de cara dizendo que foi modificado, vamos dizer que de um problema de hardware e tenha que levar o cara quando ligar e ver pode procurar onda pra realizar o serviço não?

agradeço a todos pelos firmwares mas se tivesse uma outra forma de marcar as atualizações mais discretas eu agradeceria.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 25, 2009, 10:31:51 pm
Rictad ! Mais uma vez obrigado pelo firmware.
Acabei de atualizar o meu com a versão 2.6 chip MT1389S e gostaria de perguntar se há correção para o caso da fonte helvetica (minha preferida). Veja exemplo abaixo de como fica a divisão de linhas para um texto, que com outra fonte ocupa apenas 3 linhas.
É desenvolvido para criar novas safras
de
alimentos fortes e resistentes às secas
e insetos.
Obrigado !      Alexandre

Só se diminuirmos o tamanho da fonte helvetica. "alimentos fortes e resistentes às secas" tem 39 caracteres, tá no limite dos 40, sugerido pelo zeurt. As melhores legendas se limitam a 30 por linha. Se os demais concordarem em diminuir, eu diminuo, sem problemas.

Olá caros

Sou novato no fórum mas já testei todas as versões dos firmwares estão funcionando 100% obrigado por isso mas sem querer tirar os méritos rictad não acha que deveria tirar aquela modificação onde você adicionou seu nome no background e na janela de serviço pois se tiver que levar a garantia não acha que já vão barrar de cara dizendo que foi modificado, vamos dizer que de um problema de hardware e tenha que levar o cara quando ligar e ver pode procurar onda pra realizar o serviço não?

agradeço a todos pelos firmwares mas se tivesse uma outra forma de marcar as atualizações mais discretas eu agradeceria.

Mesmo assim, identificar o firmware modificado será sempre possível, pois as alterações são gritantes. Você também pode usar a vasta informação que está aqui no forum e modificar o background com o MTK Remaker.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 25, 2009, 11:13:34 pm
Rictad ! Mais uma vez obrigado pelo firmware.
Acabei de atualizar o meu com a versão 2.6 chip MT1389S e gostaria de perguntar se há correção para o caso da fonte helvetica (minha preferida). Veja exemplo abaixo de como fica a divisão de linhas para um texto, que com outra fonte ocupa apenas 3 linhas.
É desenvolvido para criar novas safras
de
alimentos fortes e resistentes às secas
e insetos.
Obrigado !      Alexandre

Só se diminuirmos o tamanho da fonte helvetica. "alimentos fortes e resistentes às secas" tem 39 caracteres, tá no limite dos 40, sugerido pelo zeurt. As melhores legendas se limitam a 30 por linha. Se os demais concordarem em diminuir, eu diminuo, sem problemas.

É isso mesmo rictad. Só complementando: "É desenvolvido para criar novas safras de" tem 41 caracteres, ou seja, ultrapassa o famoso limite dos 40 caracteres, e o "de" acabou indo pra segunda linha. Portanto, o problema está nessa legenda, que tem linhas com mais de 40 caracteres. Como eu já disse antes, é bom verificar o número maximo de caracteres por linha da legenda que se pretende usar (o Subtitle Workshop mostra facilmente esse tipo de informação). Caso tenha mais que 40 caracteres por linha, o ideal é processar a legenda, limitando o número máximo de caracteres em 40 (até agora as opções que mais deram certo para mim foram o DirectSub e o Subtitle Processor, como já disse antes).
Vale sempre lembrar que trocar as fontes é algo que qualquer um pode fazer. Vejam o tutorial do Ryan: http://ryan.com.br/mtk_fontes.htm (http://ryan.com.br/mtk_fontes.htm)
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 26, 2009, 03:23:47 am
não acha que deveria tirar aquela modificação onde você adicionou seu nome no background e na janela de serviço pois se tiver que levar a garantia não acha que já vão barrar de cara dizendo que foi modificado,

Se quiser, você pode personalizar sua cópia retirando essas informações. É claro que você vai precisar estudar como isso é feito.

O background é (relativamente) simples de alterar:
http://ryan.com.br/mtk_mtkremaker.htm
Título: Re: Firmware do LG DV397H
Enviado por: Soultux em Abril 26, 2009, 12:39:47 pm
Vlw Valeu Galeraaaaa vcs vocês são SHOWWWW!!!

e que venham as modificações!

Oblrigado! Obrigado!



Editado pelo moderador: Leia (e respeite) as Regras ou será banido.
Título: Re: Firmware do LG DV397H
Enviado por: Soultux em Abril 26, 2009, 03:18:03 pm
Tudo bem desculpa mas não precisava me reprovar por causa disso.
já entendi o aviso só estou aqui tentando ajudar postando minhas experiências com as modificações não precisava ser tão drástico.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 26, 2009, 04:09:22 pm
Tudo bem desculpa mas não precisava me reprovar por causa disso.
já entendi o aviso só estou aqui tentando ajudar postando minhas experiências com as modificações não precisava ser tão drástico.

Está na página de inscrição:

ISTO É SÉRIO. Este é provavelmente o fórum mais severo que você já viu.

Ao registrar-se aqui você declara ter lido e entendido as Regras de Conduta e que só postará mensagens que estiverem em conformidade com as regras.

Regras de Conduta:
http://ryan.com.br/smf/index.php?topic=2

O desrespeito às regras poderá provocar, entre outras punições menores, seu banimento imediato.

VOCÊ FOI AVISADO!
Reclamações posteriores serão ignoradas!


Não reclame. (http://ryan.com.br/smf/index.php?topic=2.msg9176648#msg9176648) Em vez de te banir imediatamente eu te dei uma oportunidade. Aproveite-a.
Título: Re: Firmware do LG DV397H
Enviado por: Soultux em Abril 26, 2009, 07:09:06 pm
Ok entendido!

Pessoal no link que me passaram sobre alterar o background o software pedi o arquivo .bin para abrir e não o .rom que é o da firmware poderiam me dar uma dica?
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Abril 26, 2009, 07:13:00 pm
Ok entendido!

Pessoal no link que me passaram sobre alterar o background o software pedi o arquivo .bin para abrir e não o .rom que é o da firmware poderiam me dar uma dica?

Se o programa não enxerga .rom, renomeie para .bin.

Lembrando: Este é um tópico de desenvolvimento e não de suporte.
Título: Re: Firmware do LG DV397H
Enviado por: majzels em Abril 27, 2009, 12:05:13 am
Sou novato e adquiri o meu dvd há 1 semana, o meu menu de serviço tem as seguintes informações:
LG_DV_LV81F33B40DMS
MT 1389s
Servover: 0d67
Micom: V 2.803 ( aqui que tenho duvida. Posso colocar o 2.6 modificado?)
Checksum: 42b8
Teria problema em colocar uma versão anterior de firmware, se entendi bem a minha á a versão 2.8 certo?
Obrigado
Fernando
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Abril 27, 2009, 12:53:09 am
Teria problema em colocar uma versão anterior de firmware, se entendi bem a minha á a versão 2.8 certo?
Obrigado
Fernando

Não tem problema. O seu firmware original realmente é mais recente que o que vem sendo modificado pelo rictad. As modificações que a LG faz nos firmwares originais são na grande maioria muito sutis e não fazem muita diferença (ex: melhoria no suporte a legendas em hebraico, etc.  :laugh:).
Você pode atualizar com a versão mais recente do rictad para o MT1389S.
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Abril 27, 2009, 06:09:04 pm
Muito obrigado rictad!!!!!

Vou provar o novo firmware hoje mesmo e estou seguro de que funcionará de maneira impecable. Graças a Allanzin também por apoiar as versões alfa.

Sucesso com a análise do código ARM

Saludos
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Abril 28, 2009, 06:44:17 pm
Olá pessoal, minha primeira vez no forum. Sempre lancei mão de atualizações para os meus players graças a informações do Ryan. Só para dar minha contribuição, mesmo como simples usuário, sobre o firmware (estou com a 2.6): uma  coisa que percebi foi que agora as legendas externas não acompanham mais a “esticagem” da imagem quando você altera o formato de 4:3 para 16:9, o que era uma característica interessante do player, que o diferenciava dos demais que conheço, pois a legenda ficava exatamente com a mesma proporção que em 4:3 para quem assiste numa TV Wide. Nas legendas embutidas, (AVIAddXSub), ele não perdeu esta característica. Só gostaria de saber se é possível implementar esta funcionalidade nestas novas legendas, que diga-se de passagem ficaram excelentes. Parabéns pelo belo trabalho que vem sendo feito.
Valeu.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 28, 2009, 08:12:20 pm
Só para dar minha contribuição, mesmo como simples usuário, sobre o firmware (estou com a 2.6): uma  coisa que percebi foi que agora as legendas externas não acompanham mais a “esticagem” da imagem quando você altera o formato de 4:3 para 16:9, o que era uma característica interessante do player, que o diferenciava dos demais que conheço, pois a legenda ficava exatamente com a mesma proporção que em 4:3 para quem assiste numa TV Wide.

Olá Baroque,

Bom eu atualizei com o firmware original 2.6 só para conferir e não vi a legenda acompanhando o formato da imagem. Ela fica na mesma proporção. Isso acontecia com outra versão de firmware que você usava?
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Abril 28, 2009, 08:56:54 pm
O novo firmware funciona espectacular com todas as modificações mencionadas.

Rictad, de todos modos gostaria de saber se existe a possibilidade de que a futuro se possa implementar o zoom out a um 96% ou um valor próximo a este após analisar o código ARM mais a fundo.

Obrigado!
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Abril 28, 2009, 09:21:54 pm
Rictad, foi uma das coisas que me chamaram a atenção quando adquiri o player. Apesar de que eu uso bastante legendas embutidas (filme.divx) e elas neste player em especial, ficam com a mesma proporção tanto você assistindo numa TV 4:3 quanto numa 16:9, o que não acontece com outros que conheço (LG 9913, Philips DVP5100, DVP3254) e posso até estar enganado quanto a legendas externas, mas, apesar de tê-las visto em poucas oportunidades por serem bem inferiores às embutidas (antes da atualização, é claro), tenho a impressão de que se comportavam desta mesma forma quando o player ainda estava original antes do último domingo, 26/04. Mas independentemente disso, a título de sugestão, teria como fazê-las se comportarem da mesma forma que as embutidas?
Obrigado,
Farney
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 28, 2009, 09:39:07 pm
Rictad, foi uma das coisas que me chamaram a atenção quando adquiri o player. Apesar de que eu uso bastante legendas embutidas (filme.divx) e elas neste player em especial, ficam com a mesma proporção tanto você assistindo numa TV 4:3 quanto numa 16:9, o que não acontece com outros que conheço (LG 9913, Philips DVP5100, DVP3254) e posso até estar enganado quanto a legendas externas, mas, apesar de tê-las visto em poucas oportunidades por serem bem inferiores às embutidas (antes da atualização, é claro), tenho a impressão de que se comportavam desta mesma forma quando o player ainda estava original antes do último domingo, 26/04. Mas independentemente disso, a título de sugestão, teria como fazê-las se comportarem da mesma forma que as embutidas?
Obrigado,
Farney

Isso seria difícil de fazer no firmware atual. As letras das legendas são mostradas sempre no mesmo aspecto, dentro da janela de legendas, em cima da imagem.

O novo firmware funciona espectacular com todas as modificações mencionadas.

Rictad, de todos modos gostaria de saber se existe a possibilidade de que a futuro se possa implementar o zoom out a um 96% ou um valor próximo a este após analisar o código ARM mais a fundo.

Obrigado!

Ariel, só o tempo dirá. Atualmente, estou trabalhando nos itálicos do modelo de chip S e tenho que transportar as funções tempo total/tempo restante para o seu modelo. Quando eu analisar o ARM do seu modelo, vou estar mais preocupado com as legendas.
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Abril 29, 2009, 01:04:52 am
Olá pessoal
Estou sempre observando o comportamento do player, sempre com o intúito de o aprimorarmos ainda mais
Não sei como eram estas duas funcionalidades antes de eu atualizá-lo:
1 - Os três segundos na tecla subtitle não funciona em modo zoom diferente de 100%;
2 - O player não está reconhecendo o código de linguagem da legenda (filme.pt.srt);
Rictad, se você já havia detectado, por favor desconsidere.
Obrigado.

Farney
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 29, 2009, 02:14:19 am
Olá pessoal
Estou sempre observando o comportamento do player, sempre com o intúito de o aprimorarmos ainda mais
Não sei como eram estas duas funcionalidades antes de eu atualizá-lo:
1 - Os três segundos na tecla subtitle não funciona em modo zoom diferente de 100%;
2 - O player não está reconhecendo o código de linguagem da legenda (filme.pt.srt);
Rictad, se você já havia detectado, por favor desconsidere.
Obrigado.

Farney

As duas já existiam, mas ainda não tinha me atentado a isso.

A primeira se deve ao fato de que o player não foi concebido para assistirmos a filmes em modo zoom. Por isso não exibia legendas também. Para sanar o problema, além de obviamente poder voltar aos 100%, selecionar a legenda e voltar ao zoom, é possível pressionar rapidamente a tecla subtitle e esperar a informação de seleção de legendas sumir. Aí, subtitle por 3 segundos passa a funcionar. Mais para a frente, vou verificar se dá para "arrumar" isso também.

A segunda, acho que ocorre porque o player reconhece como extensão tudo o que estiver após o primeiro ponto. Para resolver isso, você pode renomear o nome da legenda, trocando o primeiro "." por "_", ou remover o ".". Esse player é capaz de reconhecer várias legendas que tenham nome que comecem com o mesmo nome do filme, podendo acrescentar caracteres ao final: "filme1.srt", "filme_pt.srt", ... Só não pode outro ponto, e deve ter algum limite.

Os firmwares br0max e xypro permitem selecionar a legenda até com outo nome, mas eu ainda não pensei em verificar como fizeram isso, já que o DV397H permite selecionar várias legendas usando o método acima.
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Abril 29, 2009, 12:58:26 pm
Rictad, você testou?
Eu pus nome de tudo quanto
foi jeito e não apareceu o "POR".
Testei com outras linguagens também.
Só mostra os números 1, 2....

Abraços
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 29, 2009, 01:31:35 pm
Sim, só números. No original também. Não sei como faz para aparecer "POR".
Título: Re: Firmware do LG DV397H
Enviado por: majzels em Abril 29, 2009, 11:32:52 pm
Obrigado Zeurt
Vou modificar e depois posto comentarios,
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 01, 2009, 03:57:17 pm
Firmware Rictad Versão 3.0 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

Adicionado suporte a itálico em legendas srt.

Adicionado submenu MPEG Subtitle Tags no menu Others, com 5 opções:

Submenus de alinhamento vertical e de alinhamento horizontal da legenda unificados no menu Others.
Removida fonte Arial Narrow (normal).
Corrigido pequeno bug, imperceptível, nas rotinas que processam os novos níveis de zoom.


Nota 1: O itálico só funciona na fonte Arial Narrow Bold, por enquanto. Nas demais fontes, quando o itálico estiver selecionado, a legenda não será exibida.
Nota 2: Tive que remover uma das fontes (Arial Narrow normal), pois a Arial Narrow Bold agora possui 512 caracteres. O firmware não funciona corretamente se aumentarmos muito o espaço reservado para as fontes. Por enquanto, no lugar dela aparece a opção "none" ou "nenhuma", e a legenda fica desabilitada.
Nota 3: Quando o itálico for exibido, poderá haver um pequeno deslocamento para direita nas linhas que começam com a tag <i>, devido ao código de controle que inseri na legenda. Tentarei arrumar isso nas próximas versões.
Nota 4: Esse firmware ainda precisa ser bastante testado.
Nota 5: Nas demais fontes que tentei, o itálico deixou os caracteres cortados, devido ao ângulo de inclinação que joga o caracter para fora da sua caixa horizontal. Na fonte Ariel, o corte é muito pequeno, quase imperceptível, e só ocorre em alguns caracteres.

Nas próximas versões, tentarei incluir o itálico em mais 2 fontes (e só teremos 3 fontes, não 6) e corrigir os problemas indicados acima.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Maio 01, 2009, 04:09:41 pm
  • Esconder todas as tags;
  • Mostrar todas as tags;
  • Mostrar somente <i> e </i>;
  • Substituir itálicas por aspas;
  • Habilitar itálicas em Arial.

 :clapping: :yahoo!: :clapping: :yahoo!: :clapping: :yahoo!:
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 02, 2009, 04:02:47 am
Pessoal,

Vocês irão notar que, caso uma fala comece com itálico e não seja fechada com </i>, o player continuará em itálico nas demais falas. Também, se estivermos no meio de uma fala em itálico e avançarmos rápido, ele pode permanecer em itálico depois que o avanço voltar ao normal. Já estou tentando corrigir essas coisas também.

E depois que arrumar esses detalhes, vou postar aqui como eu implementei o itálico.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Maio 02, 2009, 09:29:18 pm
Rictad,

Vou citar o Ryan:  :clapping: :yahoo!: :clapping: :yahoo!: :clapping: :yahoo!:

Parabéns!!! Você realmente foi o PRIMEIRO DO MUNDO a implementar suporte a <i> tags para legendas .srt em DVD players de mesa! Tenho certeza que você conseguirá resolver esses pequenos probleminhas que faltam. O principal você já conseguiu!
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Maio 02, 2009, 10:09:31 pm
Um dos motivos pelos quais eu optei muitas vezes por legendas embutidas, foi por elas suportarem "itálicos".
Mas agora já tô pensando seriamente em abandoná-las de vez. Depois desta...
Parabéns, Rictad!
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Maio 03, 2009, 02:08:06 am
Nota 5: Nas demais fontes que tentei, o itálico deixou os caracteres cortados, devido ao ângulo de inclinação que joga o caracter para fora da sua caixa horizontal. Na fonte Ariel, o corte é muito pequeno, quase imperceptível, e só ocorre em alguns caracteres.

rictad,

Tentei todas as opções de configuração do MTKFontCreator e realmente não consegui eliminar o problema dos caracteres cortados. Pensei em algo que pode ajudar: editar as fontes TrueType ou OpenType do seu PC (que você quer usar no DV397H) com um editor de fontes, de modo a criar uma fonte idêntica, porém em itálico. Teria que brincar um pouco com o um editor de fontes como o FontCreator (http://www.high-logic.com/fontcreator.html) que é gratuito por 30 dias. Apenas usar uma fonte em itálico não dá certo (baixei um fonte da internet em itálico e continuou cortada). Acho que teria que criar uma nova fonte, com os caracteres em italico, porém como se fosse uma fonte não itálica (um tipo de hack assim), e então abrir com o MTKFontCreator. E se desse certo, por fim era só fazer uma fusão da fonte normal com a itálica (pelo que entendi você deixou os caracteres normais e itálicos na mesma fonte). Que confusão...  :-[
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 03, 2009, 04:45:39 am
Pessoal, obrigado pela força!  ;D

Bom, já resolvi quase todos os problemas, falta apenas 1 que é quando só a última linha da legenda está em itálico (as outras ficam também).

rictad,

Tentei todas as opções de configuração do MTKFontCreator e realmente não consegui eliminar o problema dos caracteres cortados. Pensei em algo que pode ajudar: editar as fontes TrueType ou OpenType do seu PC (que você quer usar no DV397H) com um editor de fontes, de modo a criar uma fonte idêntica, porém em itálico. Teria que brincar um pouco com o um editor de fontes como o FontCreator (http://www.high-logic.com/fontcreator.html) que é gratuito por 30 dias. Apenas usar uma fonte em itálico não dá certo (baixei um fonte da internet em itálico e continuou cortada). Acho que teria que criar uma nova fonte, com os caracteres em italico, porém como se fosse uma fonte não itálica (um tipo de hack assim), e então abrir com o MTKFontCreator. E se desse certo, por fim era só fazer uma fusão da fonte normal com a itálica (pelo que entendi você deixou os caracteres normais e itálicos na mesma fonte). Que confusão...  :-[

Essa sua ideia era a que eu estava tentando fazer, porque o MTKFontCreator sempre corta partes dos caracteres à direita quando faz a transformação para itálico, independente da largura, espaçamento etc, como você falou. Mas como queria testar logo o itálico, saí mexendo nele mesmo. Eu criei a fonte primeiramente editando o ini do MTKFontCreator e adicionando um novo cp com 512 códigos, em que de 0x100 a 0x1FF repetem-se os códigos Unicodes linkados aos códigos de 0x0 a 0xFF. Olhando o INI, dá para entender essas tabelas. Usei o Calc (semelhante ao Excel) para fazer isso rapidamente. Depois, com meu novo CP1252 dobrado, criei duas fontes: 1 toda normal e outra toda itálica. Exportei ambas para modo texto no MTKFontCreator (isso é fantástico) e editei os arquivos manualmente, copiando os últimos 256 caracteres do arquivo texto da fonte itálica por cima dos da fonte normal, criando uma fonte híbrida. Aí salvei a fonte no formato MTK.

O modo texto é fantástico porque você pode editar os caracteres manualmente. Por exemplo, eu consegui arrumar o caracter "U" da fonte Impact para ele não ficar cortado. O problema desse método é que ele vai levar tempo para arrumar todos os caracteres e também que cada caracter vai ter, em média, 5 pontos a mais de largura. Veja:

Caracter 85: "U" Impact com largura 16 criado pelo MTKFontCreator:

Código: [Selecionar]
#G 85
#W 16
#l ................
#l ................
#l ................
#l ................
#l ................
#l ................
#l ................
#l ----------------
#l ----------------
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --*****--*****--
#l --************--
#l ---**********---
#l ----********----
#l .----******----.
#l ..------------..
#l ...----------...
#l ................
#l ................
#l ................
#l ................
#l ................
#A

Caracter 341: "U" Impact Itálico criado pelo MTKFontCreator (a largura aumentou para 17, mas não é suficiente):

Código: [Selecionar]
#G 341
#W 17
#l .................
#l .................
#l .................
#l .................
#l .................
#l .................
#l .................
#l ....-------------
#l ....-------------
#l ....--*****--**--
#l ....--*****--**--
#l ...---*****--**--
#l ...---*****--**--
#l ...--*****--***--
#l ...--*****--***--
#l ..---*****--***--
#l ..---*****--***--
#l ..--*****--****--
#l ..--*****--****--
#l .---*****--****--
#l .---*****--****--
#l .--*****--*****--
#l .--*****--*****--
#l ---*****--*****--
#l ---*****--*****--
#l --*****--*****---
#l --*****--*****---
#l --************--.
#l --***********---.
#l ---*********----.
#l -----*****-----..
#l .-------------...
#l ...---------.....
#l .................
#l .................
#l .................
#l .................
#l .................
#A

Caracter 85: "U" Impact Itálico modificado por mim, com largura 21 (como aumenta-se 1 ponto a cada 4 linhas, teremos sempre um aumento de 5 pontos em relação à largura original, desde que a altura seja a mesma, claro):

Código: [Selecionar]
#G 85
#W 21
#l .....................
#l .....................
#l .....................
#l .....................
#l .....................
#l .....................
#l .....................
#l ......---------------
#l .....----------------
#l .....--*****--*****--
#l .....--*****--*****--
#l .....--*****--*****--
#l ....--*****--*****--.
#l ....--*****--*****--.
#l ....--*****--*****--.
#l ....--*****--*****--.
#l ...--*****--*****--..
#l ...--*****--*****--..
#l ...--*****--*****--..
#l ...--*****--*****--..
#l ...--*****--*****--..
#l ..--*****--*****--...
#l ..--*****--*****--...
#l ..--*****--*****--...
#l ..--*****--*****--...
#l .--*****--*****--....
#l .--*****--*****--....
#l .--************--....
#l .---**********---....
#l ----********----.....
#l .----******----......
#l ..------------.......
#l ...----------........
#l .....................
#l .....................
#l .....................
#l .....................
#l .....................
#A

Esse último ficou certinho, mas é um trabalho chato fazer isso na mão. Mas acho que pode ser automatizado.
Tirando isso, o itálico fica perfeito. Não há nenhum problema de serrilhamento. A fonte Arial Narrow Bold foi a que apresentou o menor corte e só em alguns caracteres.

Há, esqueci de dizer. No linux, eu tenho os arquivos das fontes Arial instalados separadamente, um para normal, outro para itálico e outro para negrito. Quando retiro todos, menos o itálico, o MTKFontCreator já carrega em itálico mesmo, como você imaginou. Mas, infelizmente, fica cortado também, do mesmo jeito. :-[ Mas talvez porque está sinalizada como itálico no arquivo. Porém, a caixa de itálico não fica selecionada. :-[
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Maio 03, 2009, 06:18:01 pm
O modo texto é fantástico porque você pode editar os caracteres manualmente. Por exemplo, eu consegui arrumar o caracter "U" da fonte Impact para ele não ficar cortado. O problema desse método é que ele vai levar tempo para arrumar todos os caracteres e também que cada caracter vai ter, em média, 5 pontos a mais de largura.
Eu sabia que seria possível corrigir os caracteres pelo modo texto. Só não comentei sobre essa possibilidade pois me pareceu que seria realmente MUITO trabalhoso corrigir os caracteres um a um. Fiquei com pena de você.  :laugh:

Há, esqueci de dizer. No linux, eu tenho os arquivos das fontes Arial instalados separadamente, um para normal, outro para itálico e outro para negrito. Quando retiro todos, menos o itálico, o MTKFontCreator já carrega em itálico mesmo, como você imaginou. Mas, infelizmente, fica cortado também, do mesmo jeito. :-[ Mas talvez porque está sinalizada como itálico no arquivo. Porém, a caixa de itálico não fica selecionada. :-[
Provavelmente, como você pensou, ficou cortada pois o arquivo deve estar sinalizado como itálico mesmo (a caixa de itálico não fica selecionada, mas se você clicar em "A=Font Dialog..." verá que em Estilo de Fonte apenas estará disponível Itálico).
Portanto, acho que vale a pena tentar o hack que eu sugeri: criar uma fonte só com ITÁLICO porém sinalizada como NORMAL. O programa que indiquei é muito legal: FontCreator (http://www.high-logic.com/fontcreator.html). É para Windows mas provavelmente você poderá usar com o Wine, não é? (não entendo muito bem disso).

P.S.: Lembrei de outro Editor de Fontes, gratuito, que parece ser muito bom, e funciona com Linux: FontForge (http://fontforge.sourceforge.net/)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 03, 2009, 07:51:59 pm
É, eu não vou fazer na mão não. ;D

Eu tenho o fontforge aqui. Só não aprendi a mexer com ele ainda. Tem muitas opções.
Mas a saída vai ser isso mesmo. Criar um fonte itálica sinalizada como normal.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Maio 03, 2009, 08:42:48 pm
Bom, já resolvi quase todos os problemas, falta apenas 1 que é quando só a última linha da legenda está em itálico (as outras ficam também).
Como fica quando existe apenas uma palavra (ou poucas palavras) em itálico em determinado parágrafo (às vezes isso ocorre): está funcionando?
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 03, 2009, 10:01:02 pm
Sim, já estava funcionando ;).

E já tudo resolvido, só estou tentando agora acertar o alinhamento horizontal centralizado da primeira linha quando há linhas em itálico embaixo. O alinhamento das demais está funcionando perfeitamente. Uma linha com itálicos fica maior, então o alinhamento tem que se ajustar. E isso está acontecendo!  ;D. Porém, o da primeira linha ainda está um pouco desajustado devido ao problema anterior. Se tiver linhas em itálico embaixo, a linha de cima é alinhada como se ela toda estivesse em itálico.

E quando o itálico começa em um quadro e não é fechado, ele é cancelado no quadro posterior. Esse é um comportamento meio padrão, a princípio. Veja que a maioria das legendas que têm quadros seguidos em itálico, abrem e fecham o itálico em cada quadro.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 07, 2009, 03:31:25 am
Firmware Rictad Versão 3.1 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

Corrigidos os erros apontandos anteriormente referentes às legendas em itálico (desalinhamento, permanência do itálico, etc).
Modificada a fonte Arial Narrow Bold para retirar os poucos cortes que ainda haviam no itálico.
Adicionado o suporte a itálico em mais três fontes: Impact, Helvetica e Verdana, totalizando 4 fontes.
Retirada a fonte Comic Sans, para gerar espaço para as demais fontes, que tiveram o número de caracteres aumentado.


Bom, agora vou poder postar como foi implementado o itálico e também vou disponibizar as novas fontes sem cortes, feitas no FontForge. Aguardem um pouco.

Zeurt, não adiantou criar a fonte itálica como comum. Ao olhar os caracteres no FontForge, percebe-se que eles atravessam uma marcação de barras verticais. É justamente essa parte que era cortada no MTKFontCreator. Eu tive que editar as fontes para aumentar essa "largura" invisível. Mas não foi muito fácil e só funcionou corretamente ao gerar fontes OpenType. Por isso vou disponibilizar as fontes.

EDIT: Esta versão possuía um bug que impedia exibição dos acentos no filebrowser. A versão 3.1a, apresentada num post mais abaixo, corrige esse bug. Baixem a 3.1a, pois vou excluir o arquivo daqui para evitar downloads desnecessários.
Título: Re: Firmware do LG DV397H
Enviado por: leonardofrazao em Maio 07, 2009, 11:09:09 am
Rictad, com esta versão, no lugar dos caracteres acentuados do Filebrowser aparecem uns símbolos estranhos. Acho que ocorreu um problema com esta fonte.
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Maio 07, 2009, 11:57:29 am
O meu player com itálico nas "SRT's? :clapping: :yahoo!: :clapping:
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 07, 2009, 01:24:15 pm
Rictad, com esta versão, no lugar dos caracteres acentuados do Filebrowser aparecem uns símbolos estranhos. Acho que ocorreu um problema com esta fonte.

Bem observado. Isso deve ser um sintoma de ter adicionado o itálico a uma quarta fonte. Ficou sem "espaço". Vou verificar, mas acho que terei que deixar o itálico em apenas 3 fontes.
Título: Re: Firmware do LG DV397H
Enviado por: leonardofrazao em Maio 07, 2009, 01:36:07 pm
Rictad, com esta versão, no lugar dos caracteres acentuados do Filebrowser aparecem uns símbolos estranhos. Acho que ocorreu um problema com esta fonte.

Bem obsvervado. Isso deve ser um sintoma de ter adicionado o itálico a uma quarta fonte. Ficou sem "espaço". Vou verificar, mas acho que terei que deixar o itálico em apenas 3 fontes.

Se ajudar, a minha preferência pessoal das fontes do firmware é (nessa ordem): Verdana, Arial Narrow Bold, Arial Narrow (que foi retirada), Helvetica e Impact.
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Maio 07, 2009, 01:57:41 pm
O novo firmware funciona espectacular com todas as modificações mencionadas.

Rictad, de todos modos gostaria de saber se existe a possibilidade de que a futuro se possa implementar o zoom out a um 96% ou um valor próximo a este após analisar o código ARM mais a fundo.

Obrigado!

Ariel, só o tempo dirá. Atualmente, estou trabalhando nos itálicos do modelo de chip S e tenho que transportar as funções tempo total/tempo restante para o seu modelo. Quando eu analisar o ARM do seu modelo, vou estar mais preocupado com as legendas.

Perfeito rictad, esperarei tranquilo as próximas versões do firmware. Pelo cedo, felicitaciones por todos os lucros conseguidos, segue assim!!  :clapping: :yahoo!: :clapping:
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 08, 2009, 02:59:10 am
Firmware Rictad Versão 3.1a para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

Corrigida a exibição de caracteres acentuados no filebrowser.

Nota 1: Não foi necessário excluir mais nenhuma fonte. Porém, pelo espaço a mais ocupado pelas 4 fontes em itálico, as referências à fonte 14, que é a utilizada pelo filebrowser, ficaram apontadas para a fonte 15, mesmo eu tendo "tirado" 2 fontes. Então foi só alterar a fonte 15 e deixá-la igual a 14 (com os acentos). A fonte 15 possuía caracteres em hebraico para os menus, mas esse player firmware originalmente não possui suporte a hebraico nos menus (somente para a legenda), de forma que em tudo quanto é teste que fiz, esses caracteres nunca eram usados. no firmware original. Então, se alguém depois quiser alterar as fontes para seu próprio gosto, poderá encontrar alguns problemas. O ideal será utilizar fontes do mesmo tamanho.

Nota 2: Testem bastante este firmware. Se der tudo certo, irei fazer outra versão com 4 fontes Arial, mas cada uma em um CP diferente, para usuários que vêem filmes em várias línguas.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Maio 12, 2009, 01:24:12 am
Implementação do Itálico

PARTE 1:


Bom, pessoal, eu estou meio sem tempo para escrever, mas vou tentar começar agora. Vou colocar a ideia principal do itálico e depois como fazer as fontes para esse tipo de implementação. Posteriormente, posto mais detalhes sobre o código.

Itálico:

Analisando a rotina que lê os caracteres da legenda (aquela que mostrei anteriormente, que tinha uma verificação para saber se a fonte CP 1254 havia sido selecionada), vi que ela repassa o valor correspondente ao código de cada caracter para o rotina responsável pela impressão da legenda (aquela enorme, que tem os alinhamentos) no registrador R0. O ARM é um processador de 32 bits, então seus registradores armazenam valores com 32 bits. Bom, então eu coloquei uma fonte maior no lugar da fonte 10 (uma daquelas que o MTKFontCreator tem, com vários CPs misturados) e testei adicionar um valor de 256 ao registrador R0 na saída da rotina que lê os caracteres (ADD R0, #01, seguido de ADD R0, #FF). E funcionou! A legenda passou a ser impressa a partir do caracter de posição 256. Por exemplo, se o caracter lido fosse o 100, ele seria repassado como 100+256=356, e o carater que apareceria seria o 356. Essa foi a idéia básica da minha implementação do itálico. Fazer um fonte híbrida de normais + itálicos e somar um offset ao caracter lido da legenda quando estivesse em "modo itálico". Aí, tive que enfrentar alguns problemas, como achar o trecho que inibia as tags SRT, pois a legenda já chegava processada sem as tags itálicas. Um outro problema seria como repassar uma escolha de opção feita no 8032, para o ARM decidir se aplicava ou não o offset. Vou esclarecer esses e outros pontos num próximo post, quando tiver mais tempo. Espero que seja ainda esta semana.

Fontes:

Sobre as fontes, elas não são mais de 512 caracteres. Mas de 479. Como há 6 fontes para legendas no firmware, para cada uma que eu adicionasse o itálico teria que "apagar" outra, para garantir que coubessem no mesmo espaço (caso contrário, dá erros na impressão da legenda, aparecem artefatos na tela, travadas etc). Assim, seriam no máximo 3 fontes. Mas eu retirei os 33 primeiros caracteres da parte itálica de cada fonte, pois são os caracteres de controle e o espaço (que, obviamente, não mudam quando vão para itálico). Então ficaram 256 normais + 223 itálicos. Isso economizou um pouco de espaço e permitiu adicionar 4 fontes com itálico, ainda que tenha "empurrado" a fonte 14 para o lugar da 15 como efeito colateral.

O MTKRemaker não apaga as fontes corretamente nesse firmware. Ele só apaga a 4, trazendo a 5 para seu lugar, a 6 para 5 e assim por diante. Então, criei um preset de 1 caracter, o 0, para criar uma fonte mínima e colocá-la no lugar das que eu iria apagar. Assim, as fontes itálicas ficaram na posição 8, 9, 10 e 11 e a miníma ficou nas posições 12 e 13.

Em anexo, envio as fontes itálicas que consegui criar para que itálico seja exibido corretamente no MTKFontCreator (sem cortes), além do INI daquele software que possui os presets de 1 caracter, de 479 caracteres (cp 1252) e o que não uso mais, de 512 caracteres (cp 1252). Também envio a fonte de 1 caracter já pronta no formato MTF. Depois de instalar as novas fontes no SO, é possível criar a uma fonte híbrida no MTKFontCreator procedendo como disse num post anterior. Selecione o preset de 479 (ou 512, se preferir), selecione a fonte correspondente, desligue o itálico e exporte o arquivo como texto. Depois, repita os passos com a mesma fonte, mas com o itálico ligado. Num editor de texto qualquer, abra o arquivo texto da fonte em itálico, copie os caracteres superiores (acima de 256) e cole-os no lugar dos mesmos caracteres no arquivo texto de fonte normal. É só salvar e importar o novo arquivo texto no MTKFontCreator.
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Maio 13, 2009, 02:34:11 am
Rictad,
Só para relatar, hoje percebi que o zoom out 96% não está atuando em DVD-Video.
Raramente uso recurso de zoom. Na verdade este é o único valor que utilizo, mas como também raramente assisto DVD-video, não faz muita falta. Mas fica aí a sugestão.

Farney
Título: Re: Firmware do LG DV397H
Enviado por: Cadu em Maio 21, 2009, 12:54:53 pm
Ola pessoal....sou novato por aqui...
Mas já queria pedir ajuda.... estou  :dashhead1: e não consigo fazer o upgrade de firmware...

Baixei a ultima atualização feita pelo Rictad: Versão 3.1a para DV397H com chip MT1389S,
mas ao seguir o procedimento de upgrade a única tela que aparece tem as seguintes informações:

Firmware Upgrade Mode
Current Version : V2.803

Só isso..e nada mais...o upgrade não continua...

Alguem poderia me ajudar?


Editado pelo moderador: Sequestro de tópico e internetês no trecho que apaguei. Se não ler as Regras acabará expulso.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Maio 21, 2009, 08:16:46 pm
A provável resposta para o problema da atualização já foi dada anteriormente neste tópico:

PessoALL,

Segue o firmware v2.6 (enviado pelo Zeurt) com a minha modesta alteração para a correção do Timing Bug.

ATENÇÃO:
Por favor, leiam a mensagem 01 (Zeurt) deste tópico, com relação à parte dos procedimentos e RISCOS no processo de atualização .


Um abraço.

Apenas um lembrete para quem pretende fazer o upgrade usando o Firmware que Viper3M enviou. Se estiver partindo do Firmware Original do Aparelho vendido no Brasil, deve-se renomear o arquivo como expliquei no primeiro post deste tópico. Provavelmente é só trocar "0" por "D". Assim: Renomear LG_DV_LV81F33B400MSMIS.ROM para LG_DV_LV81F33B40DMSMIS.ROM
De qualquer modo, é sempre bom checar antes o MODEL e a versão do Firmware em uso antes de atualizar (como expliquei no primeiro post).

Além do que já foi explicado acima (que serve para atualização com qualquer firmware, inclusive os do rictad), deve-se confirmar se o CHIP I.D. é MT1389M ou MT1389S. Só atualizar com o firmware alternativo correspondente ao chipset correto.
Título: Re: Firmware do LG DV397H
Enviado por: zephiros em Maio 24, 2009, 11:15:48 pm
Meu amigo comprou um LG 397H (M), e testei o firmware do rictad.
Ficamos de queixo caído e ao mesmo tempo revoltados com a LG que não pensou em algo tão lógico e que agregaria muito valor ao seu produto.
Parabéns rictad!
Título: Re: Firmware do LG DV397H
Enviado por: Cadu em Maio 27, 2009, 01:30:33 am
zeurt, muito obrigado pela resposta!

Porém meu arquivo de atualização já está com "D" (LG_DV_LV81F33B40DMSMIS.ROM) e mesmo assim não está funcionando.

Alguma outra sugestão? O Chip ID também está correto.

mais uma vez obrigado...
Título: Re: Firmware do LG DV397H
Enviado por: zephiros em Maio 27, 2009, 02:38:31 am
zeurt, muito obrigado pela resposta!

Porém meu arquivo de atualização já está com "D" (LG_DV_LV81F33B40DMSMIS.ROM) e mesmo assim não está funcionando.

Alguma outra sugestão? O Chip ID também está correto.

mais uma vez obrigado...

Cadu, eu atualizei o meu com chip M com este nome abaixo, copiei na pasta raiz e finalizei o disco sem multisessão
LG_DV_LV81F33B40DMM.ROM
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Junho 22, 2009, 05:38:31 pm
Passou quase num mês desde a última actualização deste topic e não há sinais de rictad.

Enviei-lhe um correio perguntando-lhe se estava bem e não tive resposta. Espero que não lhe tenha passado nada mau.

Saludos a todos
Título: Re: Firmware do LG DV397H
Enviado por: iamhumble em Junho 22, 2009, 06:18:31 pm
Passou quase num mês desde a última actualização deste topic e não há sinais de rictad.

Enviei-lhe um correio perguntando-lhe se estava bem e não tive resposta. Espero que não lhe tenha passado nada mau.

Saludos a todos

De fato!

Tomara que a LG tenha contradado o rictad para que suas mudanças sejam incorporadas no firmware de fábrica!

A outra opção é que talvez ele tenha se descuidado, acabou usando "internetês" em alguma das mensages e foi expulso deste fórum! ;)
Título: Re: Firmware do LG DV397H
Enviado por: wica em Junho 22, 2009, 08:17:48 pm
olá, a,igos amigos comprei este DVD e até agora tudo OK. Vi um filem filme no pendrive sem problemas na legenda, digo, sem acentos, popis pois não fiz atualizações. Meu DVD tem algumas letras diferentes do que eu tenho visto neste fórm. Aí vai:

model LG-DV-LV81 F33B 40 DMM
chip MT 1389M
servover odd 200
Micom ver  v 3.33
checksum 4232
hdcp yes

Outra coisa. O chipset M é pior ou mias mais antigo que o S. Em uma página deste fórum vi as diferenças entre eles com pontos mais positivos para o S. Será que eu posso trocar meu DVD para ter o chip melhor?  Valeu!!


Editado pelo moderador: Seja mais cuidadoso com sua digitação.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Junho 23, 2009, 02:41:19 am
A outra opção é que talvez ele tenha se descuidado, acabou usando "internetês" em alguma das mensages e foi expulso deste fórum! ;)

Isso poderia acontecer com você, mas não com Rictad.

Além de não ser preciso fiscalizá-lo, Rictad é um "seeder" e por isso precisaria errar *muito* para ser expulso. Como ele é também "hacker honorário" eu até corrigiria silenciosamente qualquer erro dele, só para não atrapalhar sua concentração com reclamações.

Já no seu caso, basta errar uma vez.
Título: Re: Firmware do LG DV397H
Enviado por: iamhumble em Junho 23, 2009, 02:57:17 am
A outra opção é que talvez ele tenha se descuidado, acabou usando "internetês" em alguma das mensages e foi expulso deste fórum! ;)

Isso poderia acontecer com você, mas não com Rictad.

Além de não ser preciso fiscalizá-lo, Rictad é um "seeder" e por isso precisaria errar *muito* para ser expulso. Como ele é também "hacker honorário" eu até corrigiria silenciosamente qualquer erro dele, só para não atrapalhar sua concentração com reclamações.

Já no seu caso, basta errar uma vez.

Prezado Ryan,

Concordo contigo sobre o fato de você querer manter o Rictad em teu fórum, pois é por causa dele que eu e inúmeras pessoas frequentamos o TEU espaço.

Sinceramente tinha (isso mesmo, no passado) muito respeito por ti até ver como você trata teus convidados aqui. Realmente esse é meu segundo e último post aqui. Se eu tinha algo a contribuir, farei em outro lugar onde o moderador esteja mais preocupado em colaborar com informações construtivas do que ficar gastanto tempo com esse tipo de resposta onde nem o bom humor é tolerado (você deveria colocar isso nas regras do fórum, além de escrever mensagens sem abreviações, é proibido qualquer colocação bem humorada).

Bem, como dizem lá fora, GET A LIFE!

Fui.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Junho 23, 2009, 03:11:27 am
Se você é um usuário participativo do fórum e faz um comentário desses, eu vejo humor.

Quando um usuário novato (principalmente um que usa um "anonimyzer" para navegar) só se manifesta para fazer um comentário desses, eu vejo ironia, sarcasmo, deboche...

Se sua intenção era realmente "fazer uma colocação bem humorada" (eu duvido muitíssimo) você precisa prestar mais atenção ao que diz.

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Junho 24, 2009, 02:18:38 pm
Concordo contigo sobre o fato de você querer manter o Rictad em teu fórum, pois é por causa dele que eu e inúmeras pessoas frequentamos o TEU espaço.

Estou longe de ser o principal responsável por visitantes aqui. >:( Esse fórum sempre teve muitas contribuições de usuários expressivos, muito antes de eu participar de (praticamente) apenas um tópico dentre vários outros que são, muitas vezes, mais importantes que este do firmware do DV397H. E se não fossem as informações contidas no fórum, jamais consegueria ter feito as modificações nos firmwares dos dois modelos de DV397H. Existem muitas coisas no fórum que estão muito além de apenas um aparelho de DVD e que são úteis a várias pessoas que visitam as páginas do Ryan em busca de informações. O Ryan tem muito trabalho para manter isso tudo organizado, como único moderador, e ainda ter tempo para contribuir com muita informação. Não precisaria falar nada disso (que foge do assunto do tópico), pois a maioria dos usuários ativos percebe facilmente. Mas essa passagem do usuário iamhumble me incomodou.

Bom, pessoal, de qualquer forma, estou bem de saúde :). Só estou meio ocupado com uma mudança, por isso ainda não tive tempo de escrever uma última nota sobre o itálico e nem fazer mais algumas atualizações no firmware do DV397H com chipset M. Mas, a qualquer momento, eu posto aqui.
Título: Re: Firmware do LG DV397H
Enviado por: novaga em Junho 30, 2009, 02:14:45 am
Concordo contigo sobre o fato de você querer manter o Rictad em teu fórum, pois é por causa dele que eu e inúmeras pessoas frequentamos o TEU espaço.

Estou longe de ser o principal responsável por visitantes aqui. >:( Esse fórum sempre teve muitas contribuições de usuários expressivos, muito antes de eu participar de (praticamente) apenas um tópico dentre vários outros que são, muitas vezes, mais importantes que este do firmware do DV397H. E se não fossem as informações contidas no fórum, jamais consegueria ter feito as modificações nos firmwares dos dois modelos de DV397H. Existem muitas coisas no fórum que estão muito além de apenas um aparelho de DVD e que são úteis a várias pessoas que visitam as páginas do Ryan em busca de informações. O Ryan tem muito trabalho para manter isso tudo organizado, como único moderador, e ainda ter tempo para contribuir com muita informação. Não precisaria falar nada disso (que foge do assunto do tópico), pois a maioria dos usuários ativos percebe facilmente. Mas essa passagem do usuário iamhumble me incomodou.

Bom, pessoal, de qualquer forma, estou bem de saúde :). Só estou meio ocupado com uma mudança, por isso ainda não tive tempo de escrever uma última nota sobre o itálico e nem fazer mais algumas atualizações no firmware do DV397H com chipset M. Mas, a qualquer momento, eu posto aqui.

Boa Noite Rictad, atualizei hoje o meu MT1389M com a versão 2.3, ficou muitooo bom, notei que ainda esta mostrando os simbolos ( <i/> ) do Italico. outra coisa, o meu ja veio novo com a HDMI Pifada, não aparece nada e Diz "TV não Suportada ", tambem percebi que toda vez que ligo ele volta para a resolução 480P, tem como fazer com que ele memorize a ultima resolução usada, Tipo 1080i por exemplo ?, Obrigado.
Título: Re: Firmware do LG DV397H
Enviado por: duke70 em Julho 08, 2009, 04:25:42 am
Olá a todos, sou novo no fórum, gostaria de parabenizar a todos os envolvidos pelos firmwares. O que seria de nós se tivéssemos que ver filmes com essas legendas ridículas que os fabricantes nos empurram guela abaixo.

Rictad, baixei seu firmware 2.3 para o DV 397H, chipset 1389 M. Está pra lá de ótimo, agora pra ver filmes, com essas legendas, ficou fácil demais.

Gostaria apenas de ressaltar o que acontece, quando ponho as legendas na posição +20, e com o fundo ativado:


(http://www.mh2img.net/thumb-17913.jpg) (http://www.mh2img.net/showpic-17913/legendacomproblemab.jpg)

O final do fundo da legenda, aparece no meio da tela, isso para as fontes Arial NB, Arial N, Verdana e Helvétia. Já para as fontes Impact e Comic S não acontece o problema.

Já com a legenda sem fundo, e mantendo a posição +20, aparecem alguns pontinhos no meio da tela, segue a foto:

(http://www.mh2img.net/thumb-17912.jpg) (http://www.mh2img.net/showpic-17912/dsc02196.jpg)

Notei que esses pontinhos aparecem quando tem letras como: g, p, ç,  que no caso tem um formato que fica um pouco pra baixo da linha.

Pode até ser que minha TV esteja causando isto, mas acho que você tem capacidade técnica para informar o que pode estar havendo.

Fica aí o registro, nada que estrague o ótimo firmware, o qual esta sendo muito útil.

Muito obrigado desde já.

Cristiano.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Julho 09, 2009, 04:12:29 am
Pode até ser que minha TV esteja causando isto, mas acho que você tem capacidade técnica para informar o que pode estar havendo.

Fica aí o registro, nada que estrague o ótimo firmware, o qual esta sendo muito útil.

Muito obrigado desde já.

Cristiano.

Obrigado pela informação! Certamente não é sua TV. Vou tentar ajeitar isso mais tarde, e vou ver se acontece no de chip S também.

Boa Noite Rictad, atualizei hoje o meu MT1389M com a versão 2.3, ficou muitooo bom, notei que ainda esta mostrando os simbolos ( <i/> ) do Italico. outra coisa, o meu ja veio novo com a HDMI Pifada, não aparece nada e Diz "TV não Suportada ", tambem percebi que toda vez que ligo ele volta para a resolução 480P, tem como fazer com que ele memorize a ultima resolução usada, Tipo 1080i por exemplo ?, Obrigado.

O itálico ainda não foi implementado no modelo de chip M. Sobre a memorização da resolução, pelo menos no modelo de chip S ela existe e a opção permanece gravada. Não sei se posso conseguir isso no seu modelo.
Título: Re: Firmware do LG DV397H
Enviado por: Vestax em Julho 13, 2009, 12:33:50 am
Boa noite a todos,
Rictad, baixei seu firmware 2.3 para o DV 397H, chipset 1389M e sinto que estou com outro aparelho... Parabéns pelo trabalho!
Quando desligo o aparelho, o meu guarda a última opção de resolução (deixo em 1.080 P).
A única coisa que realmente sinto falta é a leitura de itálicos, fora isso, o firmware do chipset M esta perfeito!

 
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 16, 2009, 12:34:05 am
Andei pensando que seria útil tentarmos definir uma maneira de diferenciar os DV397H com chipset MT1389M dos com chipset MT1389S, analisando apenas os números de série e outros dados (números e letras) que constam na etiqueta de identificação do player. Caso isso seja possível, seria algo interessante, pois existe uma etiqueta na caixa de papelão do produto (que qualquer um pode checar antes de comprar), além da etiqueta que fica na parte de trás do aparelho. Assim, caso alguém preferir comprar o modelo com chipset MT1389S por exemplo, bastaria verificar a etiqueta antes de comprar...

Portanto, convido a todos os proprietários do player que queiram colaborar, que descrevam aqui as letras, números, e parte do número de série (para não causar nenhum problema a ninguém) encontrados na etiqueta, dizendo também qual o chipset do respectivo aparelho: M ou S.

Por exemplo, eu não possuo o DV397H, mas o que se encontra na etiqueta do meu LG DV256K é o seguinte:
DV256K   BRS  No.SÉRIE 705 AZZX 19xxx
Obs: xxx foram 3 números que eu suprimi para não divulgar o número de série completo.
O chipset é MT1389D
Título: Firmware do LG DV397H
Enviado por: dariojf em Julho 16, 2009, 08:04:14 am
No meu existem duas etiquetas com informações diferentes.
Na caixa de papelão e também no dvd:
DV397H-N.FBRALL2 - (BRS) N. SÉRIE 905AZTH4Cxxx

Apenas na caixa:
ACCRY DV397H-N

O meu infelizmente, embora eu nem saiba exatamente quais são as diferenças, é da série M.

Eu escolhi o modelo 397 depois de dicas e informações colhidas aqui.
Pena que não havia, até o momento da compra, forma de identificar facilmente - sem ter que ligar e digitar códigos - qual era o modelo.
Vamos realmente tentar salvar/alertar os futuros compradores.

Dário
Juiz de Fora/MG
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Julho 17, 2009, 01:44:49 pm
O meu, com chip S, tem o seguinte número atrás:
DV397H-N.FBRALLK - (BRS) N. SÉRIE 806AZRD72xxx

Será que a diferença está no FBRALLK e no FBRALL2? Precisamos de mais números para saber.

Pelos últimos movimentos aqui no tópico, suspeito que a LG só tem frabricado o DV397H com chip M, talvez para reduzir custos. Mas pode ser que ainda tenham o outro nos estoques. O chip S tem suporte a WMV, mas isso não foi implementado no firmware. Desistindo dessa ideia, seria quase igual e mais barato montar uma "cópia" do DV397H com chip M. :(
Título: Re: Firmware do LG DV397H
Enviado por: morc3go em Julho 17, 2009, 11:56:17 pm
Concordo com o rictad, provavelmente a diferença seja essa mesmo.
O meu, com chip M, tem o seguinte número atrás:
DV397H-N.FBRALL2 - (BRS) N. SÉRIE 902AZFMBRxxx
Título: Re: Firmware do LG DV397H
Enviado por: morc3go em Julho 18, 2009, 12:21:36 am
Boa noite a todos,
Rictad, baixei seu firmware 2.3 para o DV 397H, chipset 1389M e sinto que estou com outro aparelho... Parabéns pelo trabalho!
Quando desligo o aparelho, o meu guarda a última opção de resolução (deixo em 1.080 P).
A única coisa que realmente sinto falta é a leitura de itálicos, fora isso, o firmware do chipset M esta perfeito!

Concordo plenamente. O meu também grava a última resolução e todas as demais configurações.
Quando estiver com o itálico implementado estará perfeito.

 :clapping: Parabéns pelo trabalho rictad.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 18, 2009, 01:23:03 am
Será que a diferença está no FBRALLK e no FBRALL2? Precisamos de mais números para saber.

Pelos 3 relatos até agora, a diferença estaria entre FBRALLK (CHIP S) e FBRALL2 (CHIP M), e/ou entre N. SÉRIE 80... (CHIP S) e N.SÉRIE 90... (CHIP M). Só faltam mais algumas contribuições para batermos o martelo...  ;D
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Julho 18, 2009, 02:00:35 pm
Olá pessoal.
O meu é Ship S  e tem a inscrição FBRALL2. Portanto, não é este o critério.
Quanto ao N. de série, pode ser, pois o meu começa com o algarismo "8".

Abraços

Farney





Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 18, 2009, 05:04:57 pm
O meu é Ship S  e tem a inscrição FBRALL2. Portanto, não é este o critério.
Quanto ao N. de série, pode ser, pois o meu começa com o algarismo "8".

Interessante! Então, temos 2 relatos de chip S com N. SÉRIE 80... e 2 relatos de chip M com N. SÉRIE 90...
Mais algumas contribuições para aumentar a amostragem e chegamos lá...
Título: Re: Firmware do LG DV397H
Enviado por: alxfrmmng em Julho 20, 2009, 08:53:15 pm
Srs !

Meu é chip S e tem na identificação traseira N.FBRALL2 e número de série 809AZCQXXXXX.
A embalagem já era há muito tempo...
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Julho 22, 2009, 10:47:14 pm
Boa noite, este é meu primeiro post aqui.

Meu chipset é modelo M

Segue dados do número de série: FBRALL2 - 905AZYE4C162

Atualizei o firmware com a versao 2.3. Ficou bem bacana, mas, em alguns arquivos q que embutí a legenda, aparecem com problemas. Não são todos, apenas alguns.

Outro problema que acontece, é referente à legendas: todas as palavras que contém Ç ele troca as letras.

Ex: Resolução - na legenda aparece assim: resoluãçao


Abraços,


Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 22, 2009, 11:17:04 pm
Meu chipset é modelo M

Segue dados do número de série: FBRALL2 - 905AZYE4C162
Obrigado a todos que contribuiram até agora (3 chips S com N. SERIE 8... e 3 chips M com N. SERIE 9...)! Acho que o rictad tem razão: provavelmente TODOS os novos DV397H devem vir com N. SERIE 9 e portanto chip M. Se alguém comprou o player recentemente e o mesmo veio com chip S avise!

Atualizei o firmware com a versao 2.3. Ficou bem bacana, mas, em alguns arquivos q embutí a legenda, aparecem com problemas. Não são todos, apenas alguns.
Você embutiu as legendas com qual programa (e qual versão)? Que tipo de problema ocorreu?

Outro problema que acontece, é referente à legendas: todas as palavras que contém Ç ele troca as letras.

Ex: Resolução - na legenda aparece assim: resoluãçao
Isso ocorre com todas as fontes? É estranho que ninguém tenha notado isso ainda...
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Julho 23, 2009, 01:21:46 pm
Isso ocorre com todas as fontes? É estranho que ninguém tenha notado isso ainda...

Não testei com todas as fontes. A que estou utilizando atualmente é a Comic Sans. Hoje a noite, vou testar com outras fontes.

Você embutiu as legendas com qual programa (e qual versão)? Que tipo de problema ocorreu?

Embutí as legendas com o AVIaddXSubs v8.3. E o engraçado é que tem legendas embutidas que fiz no mesmo programa, no mesmo computador que funcionam e outras não. Vou tentar hoje a noite, tirar uma foto e postar aqui, mas, o que ocorre é: quando a legenda entra, aparece um monte de chuviscos coloridos na tela da tV inteira e a legenda em sí mesmo, não aparece.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 23, 2009, 11:25:14 pm
Você embutiu as legendas com qual programa (e qual versão)? Que tipo de problema ocorreu?

Embutí as legendas com o AVIaddXSubs v8.3. E o engraçado é que tem legendas embutidas que fiz no mesmo programa, no mesmo computador que funcionam e outras não. Vou tentar hoje a noite, tirar uma foto e postar aqui, mas, o que ocorre é: quando a legenda entra, aparece um monte de chuviscos coloridos na tela da tV inteira e a legenda em sí mesmo, não aparece.

Qual a resolução e o frame rate dos videos que deram problema (ver com o MediaInfo)? Qual resolução e V.P. você selecionou no AVIAddXsubs para esses vídeos? Você deixa a opção Full Screen marcada ou desmarcada?
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Julho 24, 2009, 02:24:08 pm
Você embutiu as legendas com qual programa (e qual versão)? Que tipo de problema ocorreu?

Embutí as legendas com o AVIaddXSubs v8.3. E o engraçado é que tem legendas embutidas que fiz no mesmo programa, no mesmo computador que funcionam e outras não. Vou tentar hoje a noite, tirar uma foto e postar aqui, mas, o que ocorre é: quando a legenda entra, aparece um monte de chuviscos coloridos na tela da tV inteira e a legenda em sí mesmo, não aparece.

Qual a resolução e o frame rate dos videos que deram problema (ver com o MediaInfo)? Qual resolução e V.P. você selecionou no AVIAddXsubs para esses vídeos? Você deixa a opção Full Screen marcada ou desmarcada?

Bem, sou muito leigo neste assunto, então, eu tenho uma configuração padrão para qualquer série que eu baixo.

As configurações são:

Subtitle Bitmap
720x480 (ntsc)
Oção full screen não marcada

Subtitle Position
Center: 350
Vertical: 450

Vale ressaltar que tenho um Panasonic S2, e estes problemas não ocorrem nele.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 24, 2009, 02:53:33 pm
Seria interessante que você informasse também a Resolução e o Frame Rate dos AVIs que deram problema (use o programa MediaInfo).
Vale a pena também tentar repetir o processo com a opção Full Screen marcada.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Julho 25, 2009, 01:24:24 pm
Bom dia a todos,

Apesar de não está postando, tenho sempre lido o que vocês escrevem aqui, e vim somente confirmar o que o duke70 notou. O pequeno erro acontece exatamente da forma como ele descreveu. Não sei se é só com o M poderiam testar no S.

E Rictad parabéns pelo itálico, virou ídolo dos felizes compradores do DV397h rs !!

Abração !
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Julho 26, 2009, 09:34:55 pm
Olá allanzin,

Estou começando a dar uma olhada no firmware do seu modelo para colocar a função tempo restante nele e também arrumar essa pequena falha aí. Ela não ocorre no modelo com chip S. Também já estou testando uma versão para o modelo de chip S que tenha mais codepages (e uma única fonte) para quem assiste a filmes com legendas em outros idiomas.

Se você ainda puder testar, talvez essa semana eu te mande umas versões alfa por email.
Título: Re: Firmware do LG DV397H
Enviado por: jmaraujo em Julho 27, 2009, 03:48:35 am
Acho muito legal o desenvolvimento feito neste firmware... Rictad, estou te enviando uma MP porque estou com umas dúvidas no que diz respeito ao firmware do LG.

Saudações!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Julho 27, 2009, 05:42:30 pm
Acho muito legal o desenvolvimento feito neste firmware... Rictad, estou te enviando uma MP porque estou com umas dúvidas no que diz respeito ao firmware do LG.

Saudações!

Certinho, jmaraujo. Fique à vontade.

Abraços
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Julho 28, 2009, 01:01:28 am
Olá allanzin,

Estou começando a dar uma olhada no firmware do seu modelo para colocar a função tempo restante nele e também arrumar essa pequena falha aí. Ela não ocorre no modelo com chip S. Também já estou testando uma versão para o modelo de chip S que tenha mais codepages (e uma única fonte) para quem assiste a filmes com legendas em outros idiomas.

Se você ainda puder testar, talvez essa semana eu te mande umas versões alfa por email.

Ric, se puder disponibilizar para mim. Agradeço.

Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Julho 30, 2009, 12:22:03 pm
Seria interessante que você informasse também a Resolução e o Frame Rate dos AVIs que deram problema (use o programa MediaInfo).
Vale a pena também tentar repetir o processo com a opção Full Screen marcada.

Vamos à primeira parte:

Arquivos que funcionam com a legenda embutida:

Arquivo X:

Vídeo
ID                               : 0
Formato                          : MPEG-4 Visual
Perfil do Formato                : Simple@L3
Conf do Formato, BVOP            : Não
Conf do Formato, QPel            : Não
Conf do Formato, GMC             : Sem warppoints
Conf do Formato, Matriz          : Default (H.263)
ID do Codec                      : DIVX
ID do Codec/Informações          : Project Mayo
ID do Codec/Dica                 : DivX 4
Duração                          : 45mn 10s
Taxa de bits                     : 956 Kbps
Largura                          : 624 pixels
Altura                           : 464 pixels
Proporção da imagem              : 4/3
Taxa de quadros                  : 23.976 fps
Resolução                        : 24 bits
Colorimetria                     : 4:2:0
Tipo de Scan                     : Progressivo
Bits/(Pixels*Quadros)            : 0.138
Tamanho da Faixa                 : 309 MiB (86%)
Título                           : Video
Biblioteca usada                 : XviD 0.0.12 (UTC 2003-06-11)


Knight Rider

Vídeo
ID                               : 0
Formato                          : MPEG-4 Visual
Perfil do Formato                : AdvancedSimple@L5
Conf do Formato, BVOP            : Sim
Conf do Formato, QPel            : Não
Conf do Formato, GMC             : Sem warppoints
Conf do Formato, Matriz          : Default (H.263)
Modo de Multiplexação            : Packed bitstream
ID do Codec                      : XVID
ID do Codec/Dica                 : XviD
Duração                          : 41mn 56s
Taxa de bits                     : 1 014 Kbps
Largura                          : 624 pixels
Altura                           : 352 pixels
Proporção da imagem              : 16/9
Taxa de quadros                  : 23.976 fps
Resolução                        : 24 bits
Colorimetria                     : 4:2:0
Tipo de Scan                     : Progressivo
Bits/(Pixels*Quadros)            : 0.193
Tamanho da Faixa                 : 304 MiB (87%)
Biblioteca usada                 : XviD 1.1.2 (UTC 2006-11-01)




Arquivos que não funcionam com a legenda embutida:

Fringe

Formato                          : MPEG-4 Visual
Perfil do Formato                : AdvancedSimple@L5
Conf do Formato, BVOP            : Sim
Conf do Formato, QPel            : Não
Conf do Formato, GMC             : Sem warppoints
Conf do Formato, Matriz          : Default (H.263)
ID do Codec                      : DIVX
ID do Codec/Informações          : Project Mayo
ID do Codec/Dica                 : DivX 4
Duração                          : 1h 20mn
Taxa de bits                     : 1 076 Kbps
Largura                          : 624 pixels
Altura                           : 352 pixels
Proporção da imagem              : 16/9
Taxa de quadros                  : 23.976 fps
Resolução                        : 24 bits
Colorimetria                     : 4:2:0
Tipo de Scan                     : Progressivo
Bits/(Pixels*Quadros)            : 0.204
Tamanho da Faixa                 : 619 MiB (88%)
Título                           : Video
Biblioteca usada                 : XviD 1.2.0.dev47 (UTC 2006-11-01)


Mental

ID                               : 0
Formato                          : MPEG-4 Visual
Perfil do Formato                : AdvancedSimple@L5
Conf do Formato, BVOP            : Sim
Conf do Formato, QPel            : Não
Conf do Formato, GMC             : Sem warppoints
Conf do Formato, Matriz          : Default (H.263)
ID do Codec                      : XVID
ID do Codec/Dica                 : XviD
Duração                          : 42mn 28s
Taxa de bits                     : 1 006 Kbps
Largura                          : 624 pixels
Altura                           : 352 pixels
Proporção da imagem              : 16/9
Taxa de quadros                  : 23.976 fps
Resolução                        : 24 bits
Colorimetria                     : 4:2:0
Tipo de Scan                     : Progressivo
Bits/(Pixels*Quadros)            : 0.191
Tamanho da Faixa                 : 306 MiB (87%)
Biblioteca usada                 : XviD 1.2.1 (UTC 2008-12-0

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Julho 30, 2009, 08:55:30 pm
leo-es,

Não consegui notar nada nesses arquivos que pudesse dar alguma pista sobre a causa do problema. Todos os arquivos são NTSC e as configurações que você usou para o AVIAddXsubs estão corretas.
É curioso que funcione no seu outro player Panasonic...
Sugestões: tentar embutir novamente as legendas usando a versão mais recente do AVIAddXSubs (9.3). Deixar a opção Full Screen marcada.
Se você ainda tiver paciência: se possível envie as legendas .srt que deram problema ao serem embutidas. Pode haver algo diferente com elas também (apesar de pouco provável...).
Se tudo der errado, concluiremos que é um bug do aparelho com firmware M.
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Julho 31, 2009, 11:55:07 am
leo-es,

Não consegui notar nada nesses arquivos que pudesse dar alguma pista sobre a causa do problema. Todos os arquivos são NTSC e as configurações que você usou para o AVIAddXsubs estão corretas.
É curioso que funcione no seu outro player Panasonic...
Sugestões: tentar embutir novamente as legendas usando a versão mais recente do AVIAddXSubs (9.3). Deixar a opção Full Screen marcada.
Se você ainda tiver paciência: se possível envie as legendas .srt que deram problema ao serem embutidas. Pode haver algo diferente com elas também (apesar de pouco provável...).
Se tudo der errado, concluiremos que é um bug do aparelho com firmware M.

Bom dia Zeurt,

Olha este player Panasonic para mim, em relação à exibição de imagens, não tenho nada a que reclamar. Só tem dois defeitos:

1) não ter usb
2) Problema de sincronia de áudio: Um amigo fez a ripagem de todas as temporadas de Arquivo X e 24 horas. As temporadas mais antigas apresentam problemas de sincronia de áudio. Fiz um procedimento até descrito pelo Ryan para converter o áudio em CBR para resolver o problema das sincronias, mas, é um grande inconveniente reconverter mais de 100 episódios.  ;D ;D

Sendo assim, procurei substitui-lo por este LG. E estou feliz, principalmente com as modificações no Firmware. A principal delas, foi o recurso de zoom out.

Paciência é que não falta. O importante é levantarmos qualquer informação que possa ajudar outros usuários. Vou embutir as legendas conforme você solicitou e durante o final de semana, vou postar os resultados.

Obrigado você pela dedicação.

Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Agosto 01, 2009, 08:57:24 pm
Citar
Atualizei o firmware com a versao 2.3. Ficou bem bacana, mas, em alguns arquivos q que embutí a legenda, aparecem com problemas. Não são todos, apenas alguns.

Leo-es, você já testou com a versão original do firmware que está no início do forum? Pois se for das atualizações o problema não deverá acontecer, ok?

Na verdade, o firmware original do início do tópico é para o MT1389S. Pelo que o leo-es disse, ele possui o modelo MT1389M. Eu disponibilizei o firmware original para o modelo M v.3.33 aqui: http://ryan.com.br/smf/index.php?topic=392.msg9176432#msg9176432 (http://ryan.com.br/smf/index.php?topic=392.msg9176432#msg9176432)
É sempre bom lembrar que usar o firmware para o modelo S no modelo M, ou vice-versa, pode causar sérias complicações (como já foi descrito pelo rictad neste tópico).
Título: Re: Firmware do LG DV397H
Enviado por: BAROQUE em Agosto 01, 2009, 10:05:22 pm
Citar
É sempre bom lembrar que usar o firmware para o modelo S no modelo M, ou vice-versa, pode causar sérias complicações (como já foi descrito pelo rictad neste tópico).


Bem lembrado, Zeurt! Não havia levado em conta o modelo do ship do Player do Leo.

Obrigado pela correção.
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Agosto 03, 2009, 12:43:06 pm
leo-es,

Não consegui notar nada nesses arquivos que pudesse dar alguma pista sobre a causa do problema. Todos os arquivos são NTSC e as configurações que você usou para o AVIAddXsubs estão corretas.
É curioso que funcione no seu outro player Panasonic...
Sugestões: tentar embutir novamente as legendas usando a versão mais recente do AVIAddXSubs (9.3). Deixar a opção Full Screen marcada.
Se você ainda tiver paciência: se possível envie as legendas .srt que deram problema ao serem embutidas. Pode haver algo diferente com elas também (apesar de pouco provável...).
Se tudo der errado, concluiremos que é um bug do aparelho com firmware M.

BOm dia,

Fiz os testes conforme solicitado. Baixei a versão nova e utilizei a opção FULL Screen. E o resultado???

Nada. Continua do mesmo jeito! Os problemas persistem.  :dashhead1:

Deve ser algo do chipset mesmo.




Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Agosto 18, 2009, 03:49:44 pm
Olá a todos!

Envio-lhes os dados de meu DVD Player, que tem chip M.
DV397H - NBCHLLLK, Depois sai: DV397H (BCHLLLK) N° Série 881P04XX - AXX
Provavelmente o código após NB identifique o país (eu vivo em Chile), de todos modos o número de série é mais estranho...

Abraços
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Agosto 19, 2009, 05:52:41 am
Olá a todos!

Envio-lhes os dados de meu DVD Player, que tem chip M.
DV397H - NBCHLLLK, Depois sai: DV397H (BCHLLLK) N° Série 881P04XX - AXX
Provavelmente o código após NB identifique o país (eu vivo em Chile), de todos modos o número de série é mais estranho...

Abraços

Interessante. Agora temos um com chipset M mas com serial que começa com 8. Eu estava mesmo curioso em saber como era o do Ariel, já que não é brasileiro.



Firmware Rictad Versão 2.4 alfa 1 para DV397H com chip MT1389M

ATENÇÃO:

Tentativa de subir Elevada em alguns pontos a posição da legenda para corrigir a pequena falha apresentada pelo usuário duke70.
Tentativa de incluir Incluídas as opções tempo restante / tempo total para arquivos DivX.

Teste das opções de tempo para DivX: Para selecionar as opções de tempo, o usuário deve apertar a tecla display e navegar até a posição que mostra o tempo, do mesmo modo que faria para entrar na função GO TO. Além dos traços de tempo a digitar (função GO TO), também deverão aparecer os símbolos < e >. As setas esquerda e direita deverão alterar as opções de tempo, as quais devem ser mostradas dinamicamente na parte inferior da tela, onde ficava estaticamente a palavra time (tempo), tanto em língua inglesa como em língua portuguesa.

Teste da correção da falha apontada por duke70: Por favor, verificar se o erro apontado em http://ryan.com.br/smf/index.php?topic=392.msg9176920#msg9176920 (http://ryan.com.br/smf/index.php?topic=392.msg9176920#msg9176920) ainda permanece.

Nota: Como esta versão ainda não foi testada, poderemos ter coisas estranhas (a legenda não ser exibida corretamente ou o menu da tecla display não ser exibido corretamente, entre outras).

Se tudo estiver funcionando, também vou tentar disponibilizar as novas opções de tempo para DVD e VCD.  


EDIT: Como tudo parece ter funcionado, esta versão não é mais alfa.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Agosto 24, 2009, 10:25:58 pm
Ontem recebi o seguinte e-mail do Allanzin sobre a versão 2.4 alfa para o modelo com chipset M:

Citar
Data 23 de agosto de 2009 13:08

Perfeitooo !!

E desculpe a demora, estou um pouco atrapalhado com os estudos... Mas ficou 10...

Aqueles pontilhados na tela não apareceram, e a função do tempo funcionou, porém, ela deveria aparecer no display do aparelho também ?

Pois aqui mesmo mudando no botão display, não mudou lá no display do DVD.

Parabéns, desta vez foi de prima rsrs !!

Abração e pode postar lá !!

Agora vou tentar adicionar as novas opções de tempo também para DVD e VCD.
Título: Re: Firmware do LG DV397H
Enviado por: duke70 em Agosto 25, 2009, 07:15:35 am
Olá a todos !!!

Ricted, atualizei para a versão 2.4.

Pra mim aqui tá tudo funcionando beleza. Só um detalhe, quanto o firmware atualizou e desligou e ligou o DVD, ele travou, ficou
lendo o cd e não saiu mais do lugar, tive que desligar da tomada, e ligar novamente, e aí tudo funcionou.

Os problemas com a legenda que eu havia mencionado no post anterior, tudo perfeito agora.

Também notei a inclusão da função do display com o tempo restante, além do total e do tempo corrido.

Todo o restante, pra mim, parece que tá tudo ok.

Qualquer problema eu informo aqui.

Desde já agradeço mais uma vez. Assistir filmes com essas legendas é um experiência sem igual. :yahoo!:

T+
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Agosto 26, 2009, 01:43:41 pm
Ricted, atualizei para a versão 2.4.

Pra mim aqui tá tudo funcionando beleza. Só um detalhe, quanto o firmware atualizou e desligou e ligou o DVD, ele travou, ficou
lendo o cd e não saiu mais do lugar, tive que desligar da tomada, e ligar novamente, e aí tudo funcionou.

Bom, acho que essa "travada" pode ter sido coincidência. Se puder, atualiza de novo para testar, tanto com a versão 2.3 como com a versão 2.4.

Abraços
Título: Re: Firmware do LG DV397H
Enviado por: leo-es em Agosto 27, 2009, 12:11:47 pm
Ricted, atualizei para a versão 2.4.

Pra mim aqui tá tudo funcionando beleza. Só um detalhe, quanto o firmware atualizou e desligou e ligou o DVD, ele travou, ficou
lendo o cd e não saiu mais do lugar, tive que desligar da tomada, e ligar novamente, e aí tudo funcionou.

Bom, acho que essa travada pode ter sido coincidência. Se puder, atualiza de novo para testar, tanto com a versão 2.3 como com a versão 2.4.

Abraços

Isto aconteceu comigo, quando atualizei com a versão 2.3

Como foi minha primeira vez, achei q que tinha estragado o aparelho. Mas foi só desligar da energia e ligar de novo, o bicho voltou supimpa.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 13, 2009, 02:14:01 am
Firmware Rictad Versão 3.2 para DV397H com chip MT1389S

ATENÇÃO, usuários do modelo DV397H com chip MT1389M não devem atualizar com essa versão!

* Corrigido pequeno bug que fazia aparecer o caractere "^" no final de algumas linhas de legenda.
* Corrigido pequeno bug que fazia aparecer 1 caractere adicional no final de algumas linhas.
* Corrigido bug que fazia com que todo o quadro ficasse em itálico se houvesse um trecho não fechado em itálico em uma linha inferior.

Nota 1: A versão 3.2a é a convencional. Possui 4 fontes (Arial Narrow Bold, Helvetica Bold, Impact e Verdana) todas em cp 1252.
Nota 2: A versão 3.2b possui apenas 1 fonte (Arial Narrow Bold), mas 4 codepages: cp 1250, cp 1251, cp 1252 e cp 1253. É ideal para quem quer ver filmes com legendas em russo ou grego.
Nota 3: Posteriormente posso incluir outras subversões com novos codepages.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 13, 2009, 03:15:47 am
Implementação do Itálico

PARTE 2


Faz um bom tempo, tive que lembrar muita coisa.  ;D
É melhor acompanharem no IDA as modificações e as novas rotinas.

Planejamento

Relembrando rapidamente, com o documento "MPEG4 Subtitle Display in ARM" (do NewAge), foi possível achar a rotina sub_3FB1A com o endereço base em que ficam gravadas as opções de legenda (#9EB88), a rotina responsável por exibir as legendas (que começa em #40348), a rotina responsável por ler os caracteres da legenda (que começa em #3FB56) e outras. Na rotina que lê os caracteres da legenda, é possível identificar o endereço base do buffer do quadro atual da legenda. Apenas 1 quadro é carregado no buffer por vez e seus caracteres são lidos um a um. O endereço base é #A4E70, sendo que na posição #A4E70+1 temos o total de caracteres do quadro e em #A4E70+2 temos o primeiro caractere do quadro.

Bom, como disse na PARTE 1, o primeiro passo foi adicionar um offset aos valores lidos desse buffer para ver se uma fonte com mais de 256 caracteres podia ser usada para colocar os caracteres itálicos. Essa foi uma das opções sugeridas no fórum do jmaraujo e também pelo zeurt. Como funcionou, passou a ser a idéia central do itálico.

O maior problema era que o modelo de chip S desse player originalmente não exibe as tags srt na legenda, e o buffer #A4E70 (por enquanto vou chamá-lo assim) já é preenchido sem as tags. Como eu disse antes, teria que haver alguma parte no ARM que carregasse o buffer eliminando as tags. Procurei várias vezes no código por rotinas que fizessem uso do endereço #A4E70 e que tivessem operações de comparação (CMP, SUB etc) com os bytes #3C ("<") e #3E (">"). Mas não conseguia achar. Porém, mexendo mais no IDA, descobri que havia certas regiões que os scripts do mt13x9 group não consideravam como que fossem código, mas que são código. Isso tem a ver com os ARM codes, dos quais vou falar um pouco mais a frente. Então, selecionei algumas partes e forcei o IDA a considerar como código. E pronto, lá estava a rotina que inibe as tags! Começa em #8CD44. Ela lê um outro buffer, que tem base em #9A610 (o qual vou chamar de buffer primário), e preenche o buffer #A4E70 (o qual passo a chamar de buffer secundário), com tudo que não estiver entre "<" e ">". O buffer primário, ao contrário do secundário, é pequeno. Cabe no máximo #20 (32) caracteres. Então ele é lido de 32 em 32 caracteres, os quais são transferidos para o buffer secundário, até que o fim do quadro seja encontrado. Cabe ressaltar que o buffer primário já está carregado apenas com os caracteres de texto da legendas. As posições de tempo já estão cortadas. Assim, ainda deve existir um pré-buffer que seleciona e corta as posições de tempo que estão no arquivo de legenda.

Agora, tinha que dar um jeito de repassar as opções das tags para o ARM. Eu pensei em usar a mesma opção de alinhamento horizontal (que chega ao ARM na posição #9EB88+9). Por quê? Porque ao fazer testes quando estava criando as opções do alinhamento da legenda, percebi que apenas o bit menos significativo era o que importava. Se repassamos o valor XXXXXXX1, o alinhamento é centralizado. Se for XXXXXXX0, o alinhamento é à esquerda. Assim, os outros bits podem ser usados para armazenar outras informações e teremos que usar operações lógicas tanto no 8032, para juntar as opções do alinhamento horizontal com as opções das tags srt, quanto no ARM, para separar essas mesmas informações. Usei o seguinte esquema para o byte do alinhamento horizontal:

ITTTXXXA,

em que I é a flag usada para indicar se o texto está em itálico, TTT são os 3 bits usados para as opções de tags (são 5 opções, precisamos de pelo menos 3 bits), XXX não interessa e A é o bit com a opção de alinhamento horizontal.

Houve um outro complicador nesse processo. Vou explicar para quem for verificar o código 8032 não ficar confuso. Como estava sem espaço no menu OTHERS para as opções de tags, eu juntei as opções de alinhamento horizontal e vertical numa única opção. Assim, quem olhar no 8032, verá que eu primeiro leio a EEPROM com a nova opção de alinhamento geral, separo-a nas opções de alinhamento vertical e horizontal, envio a opção de alinhamento vertical (que chega ao ARM em #9EB88+5), leio a EEPROM com a opção de exibição das tags, junto-a com a opção de alinhamento horizontal e envio ao ARM (que chega em #9EB88+9).

Para fazer as modificações no ARM, precisei de espaço no código. Tentei usar o famoso espaço das mensagens de erro, mas travava quando fazia a chamada lá dos endereços da rotina de inibição das tags. Era como se ela estivesse desconectada do restante do código. Então, percebi que o ARM também possui bancos, páginas separadas: os ARM codes. A rotina que exibe a legenda fica no ARM code 1, mesmo lugar das mensagens de erro. Já a rotina que inibe as tags e monta o buffer secundário fica no ARM code 5! Ainda não pesquisei como isso funciona, mas já deve ter sido revelado em algum documento do mtk group ou daqui do fórum. Não sei se há formas de pular de uma página a outra, se são independentes mesmo, pensando numa possível multitarefa, ou ainda se são carregados em outra ordem. De qualquer forma, para criar espaço, extraí o ARM code 5 com o MTK Remaker, acrescentei bytes ao final do código com um editor hexadecimal e o reinseri com o MTK Remaker. Assim, pude modificar a rotina que começa em #8CD44 e acrescentar a rotina sub_8E99C. Já para algumas modificações que fiz na rotina que lê o buffer secundário, pude utilizar tranquilamente o espaço das mensagens de erro, pois fica tudo no ARM code 1.

Explicando as Modificações

Primeiro, no ARM code 5, o itálico ainda não é acionado. Apenas é feita a codificação das opções de tags. Em sub_8E99C, verifica-se qual a opção de tag o usuário escolheu para que se possa montar o buffer secundário da forma correta. Como a tabela de palavras que começa em #8CECC não possui o endereço #9EB88, criei uma tabela em #8EB84 apenas para fazer essa referência (o código ARM é realmente estranho para quem está acostumado com CISC). Assim, podemos ler o endereço #9EB88+9 e, com as instruções lógicas, decifrar as opções (o que está em TTT no byte ITTTXXXA). Por exemplo, se for "mostrar todas as tags" (#20=#B00100000), o controle é devolvido para a outra rotina, que preenche o buffer secundário sem fazer qualquer restrição. Se for "esconder todas", o controle é devolvido e tudo passa a ser executado como antes. Já nas demais opções, é feita uma coisa importante. Temos que verificar se o atual caractere é "<", se o próximo é "i" e se o seguinte é ">", ou se atual caractere é "<", o próximo é "/", o seguinte é "i" e, finalmente, o da posição atual + 3 é ">". Para o caso de "substituir por aspas", simplesmente trocamos o atual caractere por ", e o contador da posição do buffer primário é atualizado com o valor de R4. Assim, o buffer secundário é montado com as tags itálicas sendo substituídas por aspas. Quando a opção for "habilitar itálicos", é feita uma codificação que será interpretada apenas pela rotina que lê os caracteres do buffer secundário, no ARM code 1. Se a tag <i> for encontrada, será substituída pelo código #03. Se for a </i>, será substituída por #04.

Ao trabalhar com esse buffer primário, de no máximo 32 caracteres, temos um problema. Se a tag começar antes do caractere 32 e terminar depois, não há como detectá-la. Por exemplo, se um texto no formato <i>456789012345678901234567890</i> for lido, quando a rotina encontrar o caractere "<" da tag final, que está na posição 30 (começa em 0), vai tentar achar os demais. Mas não vai encontrar o "i", que está na posição 30+2=32, fora do buffer. Assim, não irá substituir essa tag nem por " e nem por #04. Por isso, dependendo de onde estiver a tag, muitas vezes o itálico permanecerá ligado. Quando o buffer primário acabava, tínhamos o registro da posição (#20) em #8CDC4 antes de chamar uma rotina em #39356 (essa rotina não é a mesma loc_39356 que o IDA mostra erradamente, pois ele está mostrando a rotina do ARM code 1, mas essa posição, no momento em que é chamada, fica em outro ARM code, e muito provavelmente está envolvida com o pré-buffer que falei anteriormente, pois é ela que "enche" o buffer primário a partir de uma posição repassada). A solução foi modificar essa posição para que seja igual ao atual contador (em R4). Se for encontrada uma tag, por exemplo, que começa na posição 31, ela não será identificada, pois ficará "quebrada". Mas, ao acabar o buffer, na posição 32, será repassada a posição 31 (início da tag), para a rotina #39356. Sim, vai haver um salto para trás e o novo preenchimento do buffer vai começar no que seria a posição 31 do preenchimento anterior (a posição 31 será lida novamente). Esse artifício só ocorre se uma tag for "quebrada" no final do buffer primário.

Bom, agora vamos às modificações na parte que exibe a legenda, no ARM code 1. A rotina que lê o buffer secundário da legenda é a sub_3FB56. Essa rotina é chamada várias vezes pela rotina de exibição de legendas (sub_40348) para poder verificar quantas linhas serão necessárias, para calcular alinhamento vertical de 1 ou 2 linhas, o alinhamento vertical de 3 linhas, 4 linhas, a centralização etc. Assim, se mudarmos diretamente a rotina, iremos adicionar novas operações que serão executadas várias e várias vezes. O melhor foi alterar onde exatamente é repassado o caractere para exibição. Isto é feito em #407AA. Como eliminei o "bug" da fonte repetida anteriormente, a rotina sub_3FB56 foi bastante reduzida, sobrando espaço para criar uma nova rotina, a sub_3FB5E. Daí, em #407AA chamamos essa nova rotina que vai carregar a opção de tag e chamar uma rotina criada na área de mensagens de erro: sub_58A38. Ela verifica se o atual código de caractere é 03 (início itálico). Se for, ela vai setar o bit 7 da posição #9EB88+9 (o bit I de ITTTXXXA). Se o atual código de caractere é 04, ela reseta o bit 7. Mais à frente, se o caractere não for nem 03 e nem 04, for maior que #20, se o bit 7 estiver setado e se, somente se, a opção atual de tags for "habilitar itálicos", ao caractere lido será adicionado um offset de #DF (223, pois não há itálicos abaixo de #20 e o total de caracteres das fontes é 256+223).

Isso foi o suficiente para começarem a aparecer os itálicos, porém tive ainda 2 problemas. O alinhamento horizontal centralizado e as legendas em que a tag de fechamento </i> não é usada. Para resolver o problema do não uso da tag </i>, tive que incluir na rotina de exibição dois trechos que cancelam o itálico no início da exibição de um novo quadro de legenda. Dois trechos, pois a rotina tem duas partes independentes: uma para quando o quadro tem 1 ou 2 linhas e outra para quando tem mais de 3 linhas. Um dos desvios para cancelar o itálico é feito em #40642 e o outro é feito em #406D2. Tentei fazer apenas um único desvio no início da rotina, mas nem sempre funcionava.

Já a rotina que calcula a centralização é a sub_3FB7A (deveria ser a que os scripts identificaram como SUB_CalcTextLineWidth__sub_3FC98, mas essa não tem uso e é muito parecida com a anterior; suspeito que seja utilizada para alinhar a legenda à direita, no caso de línguas com esse tipo de alinhamento, como o árabe). Os caracteres itálicos ficaram com largura um pouco maior, devido à angulação (na verdade, o espaço vazio aumentou, pois a área do caractere continua sendo um retângulo). Assim, uma linha em itálico será ligeiramente maior que uma linha normal, com os mesmos caracteres. Quando o texto está alinhado à esquerda, não há problemas. As linhas começam sempre na esquerda, sendo que as itálicas ficam maiores. Porém, se tivermos usando a opção de centralização, as palavras em itálico serão centralizadas como se não estivessem em itálico (pois a rotina sub_3FB7A chama a antiga rotina de leitura de caracteres e não a nova, que habilita os itálicos). Assim, como a linha com itálico é maior, ele fica deslocada um pouco mais à direita (por ser maior do que foi considerada pelo cálculo de centralização). A primeira solução que usei foi também chamar a nova rotina sub_3FB5E de dentro da rotina de centralização. A princípio funcionou, mas tinha o inconveniente de que toda vez que a centralização era chamada (a centralização é chamada 1 vez para quando temos 1 ou 2 linhas, 3 vezes para 3 linhas e 5 vezes para 4 linhas), a legenda era percorrida de verdade, fazendo com que o itálico fosse ativado antes da hora. Por exemplo, vejamos o seguinte quadro:

Código: [Selecionar]
Primeira linha de teste.
Segunda linha de teste.
Terceira <i>linha de teste.
Quarta linha de teste.

O itálico deveria ser ligado após a tag e ficar assim até o fim do quadro. Porém, todo quadro estava ficando em itálico, pois a centralização da terceira linha (que ocorre antes da exibição de fato) liga o itálico e o mantém ligado (pois não encontra a tag </i>) antes de o quadro ser exibido.
A solução final foi modificar a rotina de centralização para que faça uma cópia da opção em #9EB88+9 antes de calcular a posição horizontal e, ao final, restaure a opção. Ou seja, se entramos na rotina com itálico desligado, saímos dela com o itálico desligado. Fazendo uma busca pelo código, não achei nenhuma referência à posição #9EB88+#0F. Assim, usei essa posição para guardar uma cópia de #9EB88+9 na rotina de centralização, que pode ser vista no IDA.

Bom, acho que é só isso que faltava ;D.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 13, 2009, 06:03:03 pm
Rictad,
Parabéns e Obrigado por mais essa contribuição!  :clapping:
Eu tenho a intenção de implementar o itálico no LG DV256K, com o auxílio das suas descobertas e explicações, porém da forma mais simples possível (sem as várias opções do menu, etc.), e mesmo assim não sei se consiguirei, e também não sei quando iniciarei essa tentativa...  :-\
De qualquer modo, já tenho uma dúvida genérica inicial: você fez as modificações no ARM (novos trechos do código) "na mão", ou você usou algum Assembler para ARM? Pergunto isso pois, para fazer as modificações no 8032, eu uso o RunTimeAssembler do NewAge, e fica muito mais tranquilo. Ainda não encontrei um Assembler para ARM, compatível com Windows, gratuito, e sem muitas complicações. Como você usa Linux, provavelmente você deve conhecer algo para Linux apenas, não é? Posso até começar a me aventurar no Linux só pra fazer isso (caso essa seja a única opção disponível)...  :)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 14, 2009, 03:42:36 am
Olá Zeurt!

Ainda que você não use muitas opções, deve deixar ao menos a opção de ligar ou não o itálico. Assim, precisará de pelo menos 1 bit de informação que deverá ser repassado ao ARM. E no ARM, você terá que ter pelo menos mais uma flag para indicar que o texto está em itálico ou não. São, ao menos, 2 bits de informação. Um endereço de memória já usado pelo ARM, mas que não faz uso de todos os bits do byte, como os normalmente usados para os alinhamentos vertical e horizontal são os candidatos ideiais para você mesclar esses bits.

Com relação às modificações, sempre fiz na mão. Infelizmente, grande parte dos Assemblers são comerciais. Assim, é mais fácil achar para Windows do que para Linux, principalmente para os processadores ARM (se fosse x86 seria mais fácil). (Esqueçam que eu disse isso. O zeurt, no post abaixo, mostra um assembler livre para o ARM, voltado para o projeto KMD, e que tem como principal plataforma alvo o Linux.) No caso do 8052, o código é fácil de entender e a documentação é vasta. Mas no caso do ARM, ainda que encontremos uma certa documentação, fica um pouco difícil "decifrar" o código correto das instruções, porque eles aparecem como esquemas de bits nos manuais. Lembrando que temos que considerar apenas o modo Thumb, em que as intruções têm 16 bits.

No entanto, a maior parte do código das instruções eu achei fazendo busca por strings no IDA mesmo. Algumas você pode deduzir. Se temos:

Código: [Selecionar]
02 70                       STRB    R2, [R0]
42 70                       STRB    R2, [R0,#1]
82 70                       STRB    R2, [R0,#2]

Podemos supor que STRB    R2, [R0,#3] tenha código C2 70 (mais #40). E se tivermos:

Código: [Selecionar]
4A 70                       STRB    R2, [R1,#1]
Com ajuda dos códigos anteriores, podemos supor que STRB    R2, [R1,#2] tenha código 8A 70. E se LDRB    R2, [R1,#1] tem código 4A 78, então LDRB    R2, [R1,#0] deve ter código 0A 78.
Veja que temos apenas 1 bit alguns bits variando de instrução para instrução. A posição desse bit desses bits é que muda dependendo de estarmos variando o registrador de carregamento (ou salvamento), o registrador objeto, a instrução (carregar ou salvar) ou o offset. Daí a importância de entender as tabelas de instruções / bits que aparecem nos manuais do ARM.

No geral, as instrução são similares às do 8052. Mas atentar para a instrução BX, para o registrador LR e para o carregamento indireto. O instrução BX "registrador" faz um salto para a posição de memória guardada no "registrador". O registrador LR guarda sempre o endereço de retorno da última rotina que originou a chamada. Assim, BX LR faz um retorno à rotina original. No entanto, se você fizer duas chamadas seguidas, a primeira será perdida. Por isso é comum vermos no código do firmware que antes de um segundo salto o valor de LR é guardado na pilha com um PUSH LR (ou LR mais outros registradores, se você quiser guardar o seu valor) e depois, no final da rotina, usa-se um POP R3 (R3 é o mais usado para isso nesses firmwares, mas pode-se usar qualquer outro), seguido de um BX R3.

Um carregamente indireto, como o seguinte

Código: [Selecionar]
ROM:00040830 05 49                       LDR     R1, =loc_9EB88
significa que você está carregando em R1 a palavra apontada pelo offset 05. Vejamos o trecho inteiro:

Código: [Selecionar]
ROM:00040830 05 49                       LDR     R1, =loc_9EB88
ROM:00040832 01 38                       SUBS    R0, #1
ROM:00040834 C9 88                       LDRH    R1, [R1,#6]
ROM:00040836 88 42                       CMP     R0, R1
ROM:00040838 5C DC                       BGT     loc_408F4
ROM:0004083A
ROM:0004083A             loc_4083A                               ; CODE XREF: sub_40348+4C6_j
ROM:0004083A FA 2E                       CMP     R6, #0xFA ; '·'
ROM:0004083C 12 D2                       BCS     loc_40864
ROM:0004083E 09 AA                       ADD     R2, SP, #0x68+var_44
ROM:00040840 30 1C                       ADDS    R0, R6, #0
ROM:00040842 0A 99                       LDR     R1, [SP,#0x68+var_40]
ROM:00040844 02 9B                       LDR     R3, [SP,#0x68+var_60]
ROM:00040846 13 E0                       B       loc_40870
ROM:00040846             ; ---------------------------------------------------------------------------
ROM:00040848 88 EB 09 00 off_40848       DCD loc_9EB88           ; DATA XREF: sub_40348+122_r
ROM:00040848                                                     ; sub_40348+232_r ...
ROM:0004084C 18 C2 09 00 off_4084C       DCD loc_9C218           ; DATA XREF: sub_40348:loc_40480_r
ROM:0004084C                                                     ; sub_40348+49C_r
ROM:00040850 14 C2 09 00 off_40850       DCD loc_9C212+2         ; DATA XREF: sub_40348+13A_r
ROM:00040850                                                     ; sub_40348+4A4_r
ROM:00040854 70 4E 0A 00 off_40854       DCD unk_A4E70           ; DATA XREF: sub_40348+1BE_r
ROM:00040854                                                     ; sub_40348+1E2_r ...
ROM:00040858 14 E6 09 00 off_40858       DCD loc_9E614           ; DATA XREF: sub_40348+246_r
ROM:00040858                                                     ; sub_40348+24C_r ...
ROM:0004085C 1C A9 05 00 off_4085C       DCD SHAREMEM_ADDR       ; DATA XREF: sub_40348+346_r
ROM:0004085C                                                     ; sub_40348+368_r ...
ROM:0004085C                                                     ; Pointer to ARM & 8032 Shared Mmemory
ROM:00040860 68 E8 09 00 off_40860       DCD loc_9E868           ; DATA XREF: sub_40348+39A_r

O offset 05 em #40830 significa que carregamos a palavra de 4 bytes que está a 4 + 4 x 5 = 24 endereços a abaixo (a palavra é escrita de trás para frente: 88 EB 09 00 = 0009EB88). Se quiséssemos que fosse LDR     R0, =loc_9C218, o código seria 06 48. Para LDR     R2,= loc_9C214, o código seria 07 4A.

Com excessão dos códigos encontrados com uma busca por strings, você deve testar as modificações no IDA para ver se as instruções deduzidas estão corretas. Às vezes, você acha que alterou o offset, mas alterou o registrador.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 14, 2009, 02:43:43 pm
Rictad, considerando que você fez todo o trabalho "na mão", devemos dar ainda mais valor a tudo o que você já fez!  :clapping:

Eu ainda não desisti de encontrar um Assembler para ARM. Achei esse aqui , mas ainda não consegui fazê-lo funcionar. É em C, e tem que compilá-lo para usar: http://intranet.cs.man.ac.uk/Study_subweb/Ugrad/coursenotes/komodo/assembler/ (http://intranet.cs.man.ac.uk/Study_subweb/Ugrad/coursenotes/komodo/assembler/)
Há alguns meses atrás, cheguei a conclusão que para fazer modificações nas legendas como essas dos itálicos, eu teria que aprender Assembly para ARM. Então, procurei fontes de informação disponíveis. A melhor que encontrei, e mais didática foi essa: http://www.peter-cockerell.net/aalp/ (http://www.peter-cockerell.net/aalp/) . É necessário apenas um conhecimento razoável em alguma linguagem da alto nível (ex: Basic, que é a única que eu conhecia até então). É uma ótima introdução para Assembly em geral, e para ARM em especial.
Se for ter que fazer tudo na mão mesmo, essa documentação com todas as instruções (e respectivas codificações) deve ser útil: http://netwinder.osuosl.org/pub/netwinder/docs/arm/ARM7500FEvB_3.pdf (http://netwinder.osuosl.org/pub/netwinder/docs/arm/ARM7500FEvB_3.pdf)

Obrigado mais uma vez!

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 14, 2009, 08:32:52 pm
Acho que se você conhece o Assembly do 8052, não terá muitas dificuldades com o ARM. Como se trata de uma máquina RISC, seu conjunto de instruções é bem mais simples, há poucas (poucos tipos de) instruções. Há, no entanto, muitos opcodes, pois temos que considerar a quantidade de variações no que diz respeito a registradores e offsets.  Por exemplo, a instrução ADDS R0, R0, #1, que na maioria dos casos é escrita simplesmente como ADDS R0,#1, tem um código diferente de ADDS R0,#2. A primeira, adiciona #1 ao valor de R0 e guarda em R0. A segunda, adiciona #2. São a mesma instrução, mas possuem uma diferença de 1 bit 2 bits no opcode. Todas as instruções ADDS são a mesma e, ainda, podem ser consideradas como um tipo de instrução MOVS. Justamente pela pouca quantidade de instruções realmente diferentes, os algoritmos passam a ser mais complexos (com menos instruções, mais combinações você precisa fazer para atingir seu objetivo). A primeira documentação que você indicou é muito boa. Ainda não havia visto. Ela ajuda a entender essas características. Veja como as instruções são divididas em apenas um pequeno grupo.

A segunda documentação eu já conhecia. Ela também explica as instruções, mas não traz os opcodes diretamente. É o caso que eu falei antes: há uma tabela de bits para que decifremos os opcodes. E nessa página, temos a tabela para instruções de 32 bits. Mas os nossos firmwares possum instruções no modo Thumb de 16 bits que, na verdade, não passa de um subconjunto do outro. Então, usar tabelas de instruções de 16 bits fica mais fácil. Há algumas documentações com o chamado Thumb Instruction Set.

Com 16 bits podemos ter até 65536 variações de instruções (provavelmente alguns desses 65536 opcodes são ignorados pelo processador). Acho que talvez seja melhor criarmos um arquivo binário com instruções de 00 00 a FF FF e abrirmos no IDA. Aí teremos todos os opcodes e todas as intruções reconhecidas pelo IDA no modo Thumb.

Depois vou dar uma olhada no Assembler que você achou. Isso facilitaria as coisas. E como tem o fonte, ajuda na portabilidade.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Setembro 14, 2009, 09:27:20 pm
Com 16 bits podemos ter até 65536 variações de instruções (provavelmente alguns desses 65536 opcodes são ignorados pelo processador). Acho que talvez seja melhor criarmos um arquivo binário com instruções de 00 00 a FF FF e abrirmos no IDA. Aí teremos todos os opcodes e todas as intruções reconhecidas pelo IDA no modo Thumb.


Sinto que é uma pergunta besta, mas aí vai:

Nenhuma instrução espera parâmetros? Com o instruction set do 8051 eu sei que não dá para fazer isso.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 15, 2009, 02:23:06 am
Com 16 bits podemos ter até 65536 variações de instruções (provavelmente alguns desses 65536 opcodes são ignorados pelo processador). Acho que talvez seja melhor criarmos um arquivo binário com instruções de 00 00 a FF FF e abrirmos no IDA. Aí teremos todos os opcodes e todas as intruções reconhecidas pelo IDA no modo Thumb.


Sinto que é uma pergunta besta, mas aí vai:

Nenhuma instrução espera parâmetros? Com o instruction set do 8051 eu sei que não dá para fazer isso.

Pelo que entendi do ARM Assembly, os parâmetros ficam embutidos nas instruções. Naquela primeira referência que enviei, isso é explicado de maneira bem didática.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 15, 2009, 02:49:37 am
A segunda documentação eu já conhecia. Ela também explica as instruções, mas não trás os opcodes diretamente. É o caso que eu falei antes: há uma tabela de bits para que decifremos os opcodes. E nessa página, temos a tabela para instruções de 32 bits. Mas os nossos firmwares possum instruções no modo Thumb de 16 bits que, na verdade, não passa de um subconjunto do outro. Então, usar tabelas de instruções de 16 bits fica mais fácil. Tem algumas documentações com o chamado Thumb Instruction Set.
Eu ainda não tinha percebido que os nossos firmwares usam instruções de 16 bits (modo Thumb) e não de 32 bits (modo ARM).  :dashhead1:
Acho que é porque até agora mexi muito pouco no ARM, e apenas para modificações mais simples, sendo que dava mais atenção às instruções do que à codificação das mesmas.

Com 16 bits podemos ter até 65536 variações de instruções (provavelmente alguns desses 65536 opcodes são ignorados pelo processador). Acho que talvez seja melhor criarmos um arquivo binário com instruções de 00 00 a FF FF e abrirmos no IDA. Aí teremos todos os opcodes e todas as intruções reconhecidas pelo IDA no modo Thumb.
Legal essa idéia! Se não der pra usar o Assembler, vai facilitar bastante.

Depois vou dar uma olhada no Assembler que você achou. Isso facilitaria as coisas. E como tem o fonte, ajuda na portabilidade.
Pelo manual, esse Assembler tem a opção de 16 bits (modo Thumb).
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 15, 2009, 04:47:05 am
Com 16 bits podemos ter até 65536 variações de instruções (provavelmente alguns desses 65536 opcodes são ignorados pelo processador). Acho que talvez seja melhor criarmos um arquivo binário com instruções de 00 00 a FF FF e abrirmos no IDA. Aí teremos todos os opcodes e todas as intruções reconhecidas pelo IDA no modo Thumb.


Sinto que é uma pergunta besta, mas aí vai:

Nenhuma instrução espera parâmetros? Com o instruction set do 8051 eu sei que não dá para fazer isso.


Pelo que entendi do ARM Assembly, os parâmetros ficam embutidos nas instruções. Naquela primeira referência que enviei, isso é explicado de maneira bem didática.

Isso! Então os parâmetros existem, mas eles não têm bytes dedicados, como nas máquinas CISC.

Por exemplo, na instrução 8052 mov A, #0xB0 nós temos um byte que identifica a instrução (#74) e outro exclusivo para o operando (#B0). Isso é a causa de um dos dois problemas da arquitetura CISC. Apesar de ter a seu favor uma grande quantidade de tipos de instruções mais complexas disponível ao programador, as intruções podem variar bastante na quantidade de bytes e no tempo de execução. Assim, só em olhar o assembly de duas rotinas diferentes que realizam a mesma função, um programador não pode dizer de imediato qual a que vai ocupar menos espaço e qual vai ser executada mais rapidamente. Existem instruções mais complexas que ocupam menos espaço que instruções mais complexas. Instruções menores podem gastar mais ciclos do processador do que instruções maiores. E os dois fatores importantes para o desempenho são o espaço e o tempo.

A arquitetura RISC, então, têm como objetivo instruções que ocupam sempre o mesmo espaço e gastam sempre o mesmo número de ciclos do processador. Na verdade, apenas 1 ciclo. O preço é que temos um conjunto de instruções mais simples, que podem exigir mais do programador. Isso é tudo na teoria, porém, na prática, os resultados são bem próximos dos ideais. O ARM, no modo Thumb, possui sempre instruções de 2 bytes e a maioria das instruções gasta apenas 1 ciclo por execução.

O seguinte documento do ARM10 (pela documentação, o ARM10 é compatível com o ARM7, mas não sei até que ponto) mostra o mapa de opcodes do modo Thumb: http://infocenter.arm.com/help/topic/com.arm.doc.dvi0014a/DVI0014A_ARM10T_PO.pdf (http://infocenter.arm.com/help/topic/com.arm.doc.dvi0014a/DVI0014A_ARM10T_PO.pdf). Ele não possui, porém, os valores dos opcodes dos bits exclusivos para a identificação das instruções, mas acredito que sejam os mesmos da documentação indicada pelo zeurt.

Na página 14 temos o mapa. A primeira instrução é o "deslocamento por valor imediato", que é nada mais que deslocar os bits de um valor para a esquerda (multiplicar por 2) ou para a direita (dividir por 2). Essa instrução possui 3 operandos: o valor constante que indica o número de deslocamentos (o número de bits deslocados), um registrador de origem e um registrador de destino. A instrução começa sempre com 000 e depois temos 2 bits para o opcode. Isso nos dá 4 variações na instrução (00, 01, 10 e 11), que eu acredito que deva ser deslocar à esquerda, deslocar à direita, rodar à esquerda e rodar à direita. Em seguida, temos 5 bits para identificar o operando constante e, por último, os bits que identificam o registrador de origem (leitura do valor que será deslocado) e os bits que identificam o registrador que irá guardar o resultado. Nenhum desses parâmetros possui um byte exclusivo. A instrução LSLS    R0, R0, #0x4, que significa pegar o valor em R0, deslocar 4 bits à esquerda (equivale a multiplicar o valor por 24) e guardar o resultado no próprio registrador R0, terá a seguinte codificação:

000 00 00100 000 000

Lembrando que #B00100=4. Agora, separando os bytes:

00000001 | 00000000 = #01 | #00

Como o código é formado começando pelo byte menos significativo, o opcode final será #00 #01.

Aqui cabe ressaltar a pseudo-instrução NOP. Esta instrução tem código 00 00 no modo Thumb. Assim, ela é, na verdade, um LSLS    R0, R0, #0, que significa pegar o valor de R0, deslocar 0 bits e guardar novamente em R0. Apesar de parecer complexa, esta instrução gasta somente 1 ciclo do processador, como um NOP.

Vamos analisar uma instrução de um único parâmetro: a instrução de salto relativo incondicional, o BRANCH. Olhando no mapa, a quarta instrução de baixo para cima, vemos que ela começa sempre com 11100. Ela possui mais 11 bits para o offset do salto relativo. Isso pode fazer parecer com que exista um byte de parâmetro. Por exemplo, o código 02 E0 signfica um salto de 2*16 bits (4 endereços) para frente. Já o código 04 E0 significa saltar para 8 endereços à frente. Assim, podemos pensar que XX E0 é o código do BRANCH, sendo que XX é o offset. Porém, é só uma coincidência. Se o offset for maior que 255, o outro valor não será mais E0. ;)

Acho que a única instrução que podemos considerar com parâmetro é o MOV (quarta instrução de cima para baixo). Isso porque, no modo Thumb, o valor do offset dessa instrução tem examente 8 bits. Mas isso é uma "coincidência" (cuidadosamente planejada pelos engenheiros) do modo Thumb. :) No modo 32 bits, o offset é maior.

Eu ainda não tinha percebido que os nossos firmwares usam instruções de 16 bits (modo Thumb) e não de 32 bits (modo ARM).  :dashhead1:
Acho que é porque até agora mexi muito pouco no ARM, e apenas para modificações mais simples, sendo que dava mais atenção às instruções do que à codificação das mesmas.
Aparentemente é o chamado Thumb-2 que, segundo a documentação do ARM, permite usar o modo Thumb juntamente com algumas instruções de 32 bits. É o caso dos BL (Branch with Link). Veja que os BLs têm 4 bytes. EDIT: Parece que o modo Thumb normal é o mais usado nesses firmwares, mas há algumas poucas rotinas em modo ARM também. Já o BL do modo Thumb tem prefixo de 16 bits e sufixo de 16 bits, sendo uma das poucas instruções daquele modo que possuem 4 bytes. Mais informações, neste tópico (http://ryan.com.br/smf/index.php?topic=601.0).
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Setembro 23, 2009, 04:24:26 am
Bom, como disse na PARTE 1, o primeiro passo foi adicionar um offset aos valores lidos desse buffer para ver se uma fonte com mais de 256 caracteres podia ser usada para colocar os caracteres itálicos. Essa foi uma das opções sugeridas no fórum do jmaraujo e também pelo zeurt. Como funcionou, passou a ser a idéia central do itálico.

Isso também foi discutido aqui:
http://ryan.com.br/smf/index.php?topic=170.msg9174127#msg9174127 (http://ryan.com.br/smf/index.php?topic=170.msg9174127#msg9174127)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 23, 2009, 06:05:10 am
Bom, como disse na PARTE 1, o primeiro passo foi adicionar um offset aos valores lidos desse buffer para ver se uma fonte com mais de 256 caracteres podia ser usada para colocar os caracteres itálicos. Essa foi uma das opções sugeridas no fórum do jmaraujo e também pelo zeurt. Como funcionou, passou a ser a idéia central do itálico.

Isso também foi discutido aqui:
http://ryan.com.br/smf/index.php?topic=170.msg9174127#msg9174127 (http://ryan.com.br/smf/index.php?topic=170.msg9174127#msg9174127)
Eu ainda não tinha visto aquele tópico, mas ficou exatamente como a idéia que você deixou lá.  8)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 25, 2009, 05:16:49 am
Firmware Rictad Versão 2.5 alfa 1 para DV397H com chip MT1389M

ATENÇÃO:

* Tentativa de incluir as opções tempo restante, tempo total, tempo do capítulo, tempo restante do capítulo e tempo total do capítulo para DVD e para VCD/SVCD.


Nota 1: Para alterar a opção de tempo, o usuário deve apertar a tecla display, ir até a posição que mostra o tempo, do mesmo modo que faria para entrar na função GO TO, e usar as setas esquerda e direita para navegar pelas opções de tempo.
Nota 2: As opções de tempo para arquivos DivX continuam sendo apenas 3.


Teste das opções de tempo para DVD e VCD/SVCD:

Por favor, verifiquem se:
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 28, 2009, 07:56:09 pm
Implementação do Itálico

PARTE 1:


(...)

Fontes:

Sobre as fontes, elas não são mais de 512 caracteres. Mas de 479. Como há 6 fontes para legendas no firmware, para cada uma que eu adicionasse o itálico teria que "apagar" outra, para garantir que coubessem no mesmo espaço (caso contrário, dá erros na impressão da legenda, aparecem artefatos na tela, travadas etc). Assim, seriam no máximo 3 fontes. Mas eu retirei os 33 primeiros caracteres da parte itálica de cada fonte, pois são os caracteres de controle e o espaço (que, obviamente, não mudam quando vão para itálico). Então ficaram 256 normais + 223 itálicos. Isso economizou um pouco de espaço e permitiu adicionar 4 fontes com itálico, ainda que tenha "empurrado" a fonte 14 para o lugar da 15 como efeito colateral.

O MTKRemaker não apaga as fontes corretamente nesse firmware. Ele só apaga a 4, trazendo a 5 para seu lugar, a 6 para 5 e assim por diante. Então, criei um preset de 1 caracter, o 0, para criar uma fonte mínima e colocá-la no lugar das que eu iria apagar. Assim, as fontes itálicas ficaram na posição 8, 9, 10 e 11 e a miníma ficou nas posições 12 e 13.

Será que podemos considerar essa necessidade de redução aproximadamente pela metade do número de fontes como uma regra geral quando se usa as fontes em itálico de 479 caracteres? Por exemplo, o LG DV256k tem 9 fontes para legendas (sendo que eu eliminei a fonte 9). Portanto, eu estarei seguro se reduzir de 9 fontes normais para 4 fontes de 479 caracteres (deixando as outras como mínimas - com 1 caractere), não é? Por curiosidade, isso tudo depende do número de caracteres, ou do espaço ocupado na memória?
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 29, 2009, 01:12:51 am
Será que podemos considerar essa necessidade de redução aproximadamente pela metade do número de fontes como uma regra geral quando se usa as fontes em itálico de 479 caracteres? Por exemplo, o LG DV256k tem 9 fontes para legendas (sendo que eu eliminei a fonte 9). Portanto, eu estarei seguro se reduzir de 9 fontes normais para 4 fontes de 479 caracteres (deixando as outras como mínimas - com 1 caractere), não é? Por curiosidade, isso tudo depende do número de caracteres, ou do espaço ocupado na memória?

Acho que sim, a regra é essa. Eu acho que isso depende do espaço de memória ocupado, pois parece haver um tamanho máximo para todas as fontes. Mas pode ser que no DV256k seja diferente. Tenta colocar novamente a fonte 9 (mais a itálica) para ver se todas as fontes ainda são exibidas. Antes de atualizar, veja no MTKRemaker se as posições dos códigos 8032 e ARM não foram afetadas.
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Setembro 29, 2009, 11:33:15 pm
Implementação do Itálico

PARTE 2


(...)

O maior problema era que o modelo de chip S desse player originalmente não exibe as tags srt na legenda, e o buffer #A4E70 (por enquanto vou chamá-lo assim) já é preenchido sem as tags. Como eu disse antes, teria que haver alguma parte no ARM que carregasse o buffer eliminando as tags. Procurei várias vezes no código por rotinas que fizessem uso do endereço #A4E70 e que tivessem operações de comparação (CMP, SUB etc) com os bytes #3C ("<") e #3E (">"). Mas não conseguia achar. Porém, mexendo mais no IDA, descobri que havia certas regiões que os scripts do mt13x9 group não consideravam como que fossem código, mas que são código. Isso tem a ver com os ARM codes, dos quais vou falar um pouco mais a frente. Então, selecionei algumas partes e forcei o IDA a considerar como código. E pronto, lá estava a rotina que inibe as tags! Começa em #8CD44. Ela lê um outro buffer, que tem base em #9A610 (o qual vou chamar de buffer primário), e preenche o buffer #A4E70 (o qual passo a chamar de buffer secundário), com tudo que não estiver entre "<" e ">".

(...)

Rictad, será que você poderia enviar esse trecho de modo que o IDA reconheça corretamente? Não estou conseguindo, e portanto não tenho como entender os detalhes do que você fez nesse trecho. Obrigado!
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 30, 2009, 01:10:46 am
Implementação do Itálico

PARTE 2


(...)

O maior problema era que o modelo de chip S desse player originalmente não exibe as tags srt na legenda, e o buffer #A4E70 (por enquanto vou chamá-lo assim) já é preenchido sem as tags. Como eu disse antes, teria que haver alguma parte no ARM que carregasse o buffer eliminando as tags. Procurei várias vezes no código por rotinas que fizessem uso do endereço #A4E70 e que tivessem operações de comparação (CMP, SUB etc) com os bytes #3C ("<") e #3E (">"). Mas não conseguia achar. Porém, mexendo mais no IDA, descobri que havia certas regiões que os scripts do mt13x9 group não consideravam como que fossem código, mas que são código. Isso tem a ver com os ARM codes, dos quais vou falar um pouco mais a frente. Então, selecionei algumas partes e forcei o IDA a considerar como código. E pronto, lá estava a rotina que inibe as tags! Começa em #8CD44. Ela lê um outro buffer, que tem base em #9A610 (o qual vou chamar de buffer primário), e preenche o buffer #A4E70 (o qual passo a chamar de buffer secundário), com tudo que não estiver entre "<" e ">".

(...)

Rictad, será que você poderia enviar esse trecho de modo que o IDA reconheça corretamente? Não estou conseguindo, e portanto não tenho como entender os detalhes do que você fez nesse trecho. Obrigado!

Certo zeurt, estou enviando os idbs do IDA em anexo. O primeiro é do ARM sem modificações (ou quase) mas com as rotinas identificadas. Já o teste 8 é com as últimas modificações (mas as rotinas não estão identificadas com comentários, mas estão todas lá).
Título: Re: Firmware do LG DV397H
Enviado por: jmaraujo em Setembro 30, 2009, 02:47:51 am
Desculpem, sem querer me intrometer mas já me intrometendo (somente estou querendo ajudar... ;) )

Um outro método para compartir os análises (no lugar de upar os arquivos .IDB) é zipar o arquivo .BIN analizado junto com um arquivo .IDC exportado (File -> Produce file -> Dump database to IDC file...) com todas as rotinas identificadas. Fica um arquivo .zip bem mais pequeno... Sem contar que pode ser aberto com quase qualquer IDA (v4.7, v5.1, etc.)
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Setembro 30, 2009, 03:24:28 am
Um outro método para compartir os análises (no lugar de upar os arquivos .IDB) é zipar o arquivo .BIN analizado junto com um arquivo .IDC exportado (File -> Produce file -> Dump database to IDC file...) com todas as rotinas identificadas. Fica um arquivo .zip bem mais pequeno... Sem contar que pode ser aberto com quase qualquer IDA (v4.7, v5.1, etc.)
Isso eu não sabia! Obrigado!
Título: Re: Firmware do LG DV397H
Enviado por: jmaraujo em Setembro 30, 2009, 03:33:12 am
É, fica bem mais fácil. Você somente precisa abrir o BIN, e daí carregar o script IDC exportado com o método de importação de IDC tradicional... ;D
Título: Re: Firmware do LG DV397H
Enviado por: Kernell em Outubro 05, 2009, 10:04:47 pm
Boa noite amigos, gostaria de pedir uma ajuda a vocês.
Há alguns dias atrás eu atualizei meu LG DV397H com este firmware disponibilizado pelo Rictad. A atualização ocorreu normalmente, sem problema algum. Nos primeiros dias o player aparentemente estava normal seu funcionamento, aliás bem melhor que o firmware original, as legendas em videos Divx ficaram mil vezes melhores com este novo firmware.
O que acontece é agora é o seguinte: meu aparelho deu um problema na gaveta do DVD, e como está na garantia, levei-o até a assistência técnica para poderm consertá-lo, mas a assistência se recusou a prestar o serviço porque disse que eu violei os termos da garantia ao ter atualizado o firmware, visto que ao ligar o aparelho, é possível ver na tela principal que se trata de um firmware modificado. Gostaria de saber de vocês se é possível fazer a reversão para o firmware original usando o mesmo método de criação do CD de boot, e caso seja possível, onde eu poderia encontrar um firmware original deste aparelho.
Na primeira mensagem deste tópico, ví que tem uma mensagem do membro zeurt disponibilizando uma firmware como sendo o original 2.6, gostaria de saber se este é realmente o firmware original ou se também é algum modificado.

Desculpe-me por tantas perguntas, fico no aguardo de uma ajuda de vocês por gentileza. Obrigado por enquanto!

William
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Outubro 05, 2009, 10:21:24 pm
Na primeira mensagem deste tópico, ví que tem uma mensagem do membro zeurt disponibilizando uma firmware como sendo o original 2.6, gostaria de saber se este é realmente o firmware original ou se também é algum modificado.

Primeiro, você tem que verificar se o seu LG DV397H usa Chipset MT1389 M ou S (entre na página de serviço como orientado no primeiro post).
Feito isso, caso o chipset seja S, atualize com o firmware do primeiro post. Caso o chipset seja M, atualize com o firmware deste post:
http://ryan.com.br/smf/index.php?topic=392.msg9176432#msg9176432 (http://ryan.com.br/smf/index.php?topic=392.msg9176432#msg9176432)
Ambos são originais (sem nehuma modificação).
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Outubro 06, 2009, 12:37:45 am
Um outro método para compartir os análises (no lugar de upar os arquivos .IDB) é zipar o arquivo .BIN analizado junto com um arquivo .IDC exportado (File -> Produce file -> Dump database to IDC file...) com todas as rotinas identificadas. Fica um arquivo .zip bem mais pequeno... Sem contar que pode ser aberto com quase qualquer IDA (v4.7, v5.1, etc.)
Isso eu não sabia! Obrigado!

Eu também não sabia. Obrigado a jmaraujo pela dica.
Título: Re: Firmware do LG DV397H
Enviado por: Kernell em Outubro 06, 2009, 01:06:18 am
Na primeira mensagem deste tópico, ví que tem uma mensagem do membro zeurt disponibilizando uma firmware como sendo o original 2.6, gostaria de saber se este é realmente o firmware original ou se também é algum modificado.

Primeiro, você tem que verificar se o seu LG DV397H usa Chipset MT1389 M ou S (entre na página de serviço como orientado no primeiro post).
Feito isso, caso o chipset seja S, atualize com o firmware do primeiro post. Caso o chipset seja M, atualize com o firmware deste post:
http://ryan.com.br/smf/index.php?topic=392.msg9176432#msg9176432 (http://ryan.com.br/smf/index.php?topic=392.msg9176432#msg9176432)
Ambos são originais (sem nehuma modificação).

Zeurt, primeiramente obrigado por me responder. O meu chipset é o MT1389S, já fiz o download do original que você citou. Só pra confirmar, o procedimento pra restaurar é igual ao procedimento de atualizar ?
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Outubro 06, 2009, 01:38:08 am
Sim.
Título: Re: Firmware do LG DV397H
Enviado por: Kernell em Outubro 06, 2009, 10:21:34 am
Sim.

Ok então zeurt, muito obrigado pela ajuda.

Abraço,

William
Título: Re: Firmware do LG DV397H
Enviado por: gaino em Outubro 07, 2009, 02:34:20 am
Olá pessoal!
Tenho este DVD a algum tempo....então  resolvi atualizar seu firmware...
Acessando seu setup tenho:
model LG-DV-LV81 F33B 40 0MM  /antes era : LG-DV-LV81 F33B 40 DMM
chip MT 1389M
servo ver. odd 200
Micom ver.  v 3.33 – Rictad 2,4
checksum 1015
etc...etc...

Usei o seguinte firmware : LG_DV_LV81F33B400MM_v2.4alfa1.zip

O renomei para: LG_DV_LV81F33B40DMM.ROM
 
Atualizou, porem a legenda em itálico não funciona, aparece:

<i>legenda legenda legenda...(sem estar em itálico e com o caracter <i> no início) :dashhead1:

ou seja, aparece exatamente como esta no arquivo .srt... (com o bsplayer no micro fica itálico!)

Alguém saberia o que fiz de errado?

Grato
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Outubro 07, 2009, 03:49:30 am
Alguém saberia o que fiz de errado?

Grato


Você não fez nada de errado, a não ser não ter lido o tópico inteiro. Veja que o itálico só está disponível para o DV397H com chipset MT1389S, pois é esse que eu tenho e fica muito mais fácil fazer os testes. Quero tentar (não sei se vou conseguir) implementar o itálico no seu aparelho também (chipset MT1389M). Porém é muito mais difícil, pois não tenho como testar o firmware diretamente e parece que o pessoal fica com um certo medo (e com razão, pois não tenho como garantir que o firmware não "matará" o player) de testar os alfas que eu envio.

Por exemplo, já tem uns 15 dias que postei a versão v2.5alfa1 e até agora não recebi feedback de ninguém para saber se as novas opções ficaram certas. Até mesmo essa versão que você baixou (2.4), que não é mais alfa (pois funcionou segundo relatos de allanzin e duke70), parece que ainda causa um certo medo.

Eu só poderei dar continuidade na tentativa e estudo do itálico para esse modelo quando tiver certeza de que a última versão ficou com as novas opções corretas.
Título: Re: Firmware do LG DV397H
Enviado por: gaino em Outubro 07, 2009, 12:09:07 pm
Ok, entendi! :P
Gostaria de ajudar, como posso fazer isto?
Como testo as novas opções? Precisa ser expert?
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Outubro 07, 2009, 03:34:14 pm
Baixe a versão 2.5 alfa e veja se as opções de tempo para DVD e VCD/SVCD funcionam como descrito no post de lançamento. Lembre-se: essa versão ainda não foi testada! Mas não creio que cause problemas.
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Outubro 09, 2009, 03:53:17 pm
parece que o pessoal fica com um certo medo (e com razão, pois não tenho como garantir que o firmware não "matará" o player) de testar os alfas que eu envio.
Tens razão, rictad. A meu dá-me um pouco de medo estragar meu DVD player, porque eu tenho nenhum conhecimento técnico ao respecto nem conheço a gente tão capacitada como quem cooperam neste foro.
No entanto vou provar a nova versão alfa do firmware e conto-lhes como me foi.

Saludos
Título: Re: Firmware do LG DV397H
Enviado por: fkruguer em Novembro 30, 2009, 08:11:07 pm
Só para constar, fiz a atualização para a versão 2.5 alfa disponibilizada pelo rictad no meu DV397H com chipset MT1389M e funcionou perfeitamente.
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Dezembro 04, 2009, 09:53:08 pm
Só para constar, fiz a atualização para a versão 2.5 alfa disponibilizada pelo rictad no meu DV397H com chipset MT1389M e funcionou perfeitamente.

Obrigado! O Ariel também já havia me confirmado isso por email, mas não tive tempo de registrar isso aqui. Ele disse que as novas opções de tempo total do capítulo e tempo restante por capítulo ficaram trocadas. Eu ainda não tive de tempo de arrumar isso, mas pretendo fazê-lo. Estou dando uma olhada com calma numa possível implementação do itálico (e aproveitando para ver se o zeurt consegue ressuscitar o player dele, pois os firmwares são parecidos e o itálico do LG DV 256k estava caminhando).
Título: Re: Firmware do LG DV397H
Enviado por: Raynor em Dezembro 12, 2009, 08:14:51 pm
Olá!

Primeiramente, quero agradecer ao rictad por tudo o que ele vem fazendo nos firmwares.
Eu venho acompanhando o fórum há algum tempo, o que me levou a adquirir o LG DV397H (MT1389M).

Estou me manifestando agora, pois gostaria de alterar as fontes do firmware, e modificar o contorno pra ficar mais legível do que esta.

Dei uma olhada nos tutoriais do Jefferson e me pareceu simples.

Eu crio uma fonte com o MtkFontCreator, e depois abro o firmware com o Mtk Remaker, substituo a fonte e então salvo o firmware....

É "só isso" mesmo ou tem algo mais?
Pois talvez o processo pode alterar alguma configuração de exibição das legendas...

Eu tenho como saber se o firmware não está corrupto, e se tem uma ferramente pra checar isso?
Ele também possui um extrablock como o do Philips, que possui um segundo checksum?

Obs.: Em que posição estão as fontes no firmware usando o Mtk Remake? (Font 1... Font 10...)

Até mais!
Obrigado.




Título: Re: Firmware do LG DV397H
Enviado por: rictad em Dezembro 13, 2009, 09:23:06 pm
Eu crio uma fonte com o MtkFontCreator, e depois abro o firmware com o Mtk Remaker, substituo a fonte e então salvo o firmware....

É "só isso" mesmo ou tem algo mais?
Pois talvez o processo pode alterar alguma configuração de exibição das legendas...

Eu tenho como saber se o firmware não está corrupto, e se tem uma ferramente pra checar isso?
Ele também possui um extrablock como o do Philips, que possui um segundo checksum?

Obs.: Em que posição estão as fontes no firmware usando o Mtk Remake? (Font 1... Font 10...)

Sim, o procedimento mais simples é esse. O próprio MTK Remaker se encarrega de corrigir o checksum. Mas lembre-se, sempre há riscos ao se atualizar um firmware. E se você usar/criar uma fonte muito grande (com vários caracteres ou com caracteres enormes), poderá corromper o firmware, mesmo este sendo "homologado" pelo MTK Remaker. Mas normalmente, com fontes de tamanho compatível e o MTK Remaker, você consegue fazer as alterações sem problemas.

As fontes de legendas são as de 8 a 13, o que depende do código de caracteres (ou fonte, no firmware modificado) escolhido ao se pressionar a tecla subtitle por mais de 3 segundos. As fontes dos menus e do filebrowser, se não me engano, são a 1 e a 14, respectivamente.
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Dezembro 13, 2009, 10:52:14 pm
Mas lembre-se, sempre há riscos ao se atualizar um firmware. E se você usar/criar uma fonte muito grande (com vários caracteres ou com caracteres enormes), poderá corromper o firmware, mesmo este sendo "homologado" pelo Mtk Remake.

Porém, se não me falha a memória, isso não "mata" o aparelho. O máximo que pode ocorrer nesse caso é este travar ao exibir uma legenda. E nesse caso você tem ampla oportunidade de instalar outro firmware.

Agora, se você corromper a fonte usada normalmente pelo aparelho para mensagens na tela, aí pode ser que você fique impedido de instalar um novo firmware, porque se o aparelho travar logo ao ligar...
Título: Re: Firmware do LG DV397H
Enviado por: Raynor em Dezembro 14, 2009, 11:23:13 pm
Obrigado pela resposta, rictad e Jefferson!

Eu vou apenas trocar uma ou duas fontes usadas nas legendas, usando o procedimento padrão, presente no tutorial do Jefferson, nada de excêntrico.

E sobre o que o Jefferson citou, isso já atenua o meu receio de matar o DVD.

Espero também que você consiga um tempo para implementar o itálico também nesse modelo M.

Até mais!
E tenham um feliz natal (caso eu não venha a escrever mais nada até lá).


Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 21, 2010, 09:50:59 pm
Olá pessoal. Consegui pôr as mãos em 1 modelo de chipset M. Fiz o cabo serial, extraí o firmware (ele possui flash serial, ainda bem que o Ryan identificou isso lá no tópico sobre a perda da HDCP key). Vi que esse modelo não possui uma HDCP key gravada na flash e a saída HDMI continua funcionando mesmo apagando a flash inteira. Mas isso é outro assunto. O que importa é que eu aproveitei para implementar o itálico e corrigir algumas coisas. Segue o novo firmware:

Firmware Rictad Versão 3.0 para DV397H com chip MT1389M

ATENÇÃO, usuários do modelo DV397H com chip MT1389S não devem atualizar com esta versão!

Adicionado suporte a itálico em legendas srt.
Adicionado submenu MPEG Subtitle Tags no menu Others, com 5 opções:

Corrigido o bug do alinhamento centralizado quando são exibidas 3 linhas na legenda.
Corrigida a ordem das opções de tempo por capítulo.
Corrigido o bug que fazia exibir caracteres em árabe na legenda quando se atualizava o firmware até que se alterasse a fonte das legendas pela primeira vez.
Reduzido o número de fontes de legenda para 4 (Arial Narrow Bold, Impact, Helvetica e Verdana) devido à inclusão dos caracteres itálicos.


Nota 1: As opções "Itálico por aspas" e "Mostrar Só <i> e </i>" podem não ser de muita utilidade. Foram criadas como testes iniciais e acabaram sendo mantidas no firmware do outro modelo. Resolvi incluí-las no modelo de chipset M por uma questão de compatibilidade entre os 2 firmwares.
Nota 2: O bug do alinhamento da legenda ocorria na segunda linha (deslocamento à direita) quando havia 3 linhas no quadro e na segunda e terceira linhas (também deslocamento à direita) quando havia mais de 3 linhas no quadro (mas apenas as 3 primeiras linhas são exibidas). Neste último caso, tínhamos a impressão de que era a primeira linha que estava deslocada à esquerda.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Março 22, 2010, 03:09:50 am
Pessoal, acabei de atualizar o firmware para o Chipset M, e ficou perfeito, com itálico e tudo mais rs...

Me pergunto se ainda existe algo que falte neste aparelho, acredito que só Bluray !

Parabéns Rictad, parece único no mundo a fazer a façanha!

Obrigado !
Título: Re: Firmware do LG DV397H
Enviado por: zeurt em Março 24, 2010, 11:24:23 pm
Nota 2: O bug do alinhamento da legenda ocorria na segunda linha (deslocamento à direita) quando havia 3 linhas no quadro e na segunda e terceira linhas (também deslocamento à direita) quando havia mais de 3 linhas no quadro (mas apenas as 3 primeiras linhas são exibidas). Neste último caso, tínhamos a impressão de que era a primeira linha que estava deslocada à esquerda.
Oi rictad,

Parabéns mais uma vez pelo trabalho!

Não entendi muito bem algumas coisas sobre o bug do alinhamento:
Neste post aqui (http://ryan.com.br/smf/index.php?topic=232.msg9175006#msg9175006 (http://ryan.com.br/smf/index.php?topic=232.msg9175006#msg9175006)) eu enviei fotos do LG DV256K com 2, 3 e 4 linhas de legenda, sendo que nessas 3 situações a primeira linha se encontra a esquerda das demais (a segunda, a terceira e a quarta apresentam o mesmo alinhamento).
Neste outro post do allanzin (http://ryan.com.br/smf/index.php?topic=392.msg9176448#msg9176448 (http://ryan.com.br/smf/index.php?topic=392.msg9176448#msg9176448)), vemos uma foto do LG DV397H M com 3 linhas de legenda, sendo que a primeira também se encontra a esquerda em relação a segunda e a terceira (sendo que estas últimas duas compartilham o mesmo alinhamento).
Portanto, concluí através dessas amostras, que tanto o DV256K como o DV397H M apresentavam o mesmo bug. Porém, lendo a sua descrição do bug fiquei confuso: você disse que apenas a segunda linha fica deslocada (e não a terceira)? Pela foto do allanzin, não é só a segunda que aparece deslocada...

De qualquer modo, fiquei curioso: corrigir esse bug exigiu alguma alteração pontual, simples, ou foi algo mais elaborado? Se o bug for o mesmo do LG DV256, talvez seja fácil corrigí-lo neste último player também. Eu poderia fazer isso no dia em que finalmente ressucitar o meu LG DV256K...  ;D

Concluindo: agora me parece que a diferença principal (em relação as legendas) entre o DV397H M e o S é a quebra de linha: burra no M, e inteligente (respeitando os espaços entre as palavras) no S. Você chegou a pensar em mexer nisso?
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Março 25, 2010, 04:39:23 am

Não entendi muito bem algumas coisas sobre o bug do alinhamento:
Neste post aqui (http://ryan.com.br/smf/index.php?topic=232.msg9175006#msg9175006 (http://ryan.com.br/smf/index.php?topic=232.msg9175006#msg9175006)) eu enviei fotos do LG DV256K com 2, 3 e 4 linhas de legenda, sendo que nessas 3 situações a primeira linha se encontra a esquerda das demais (a segunda, a terceira e a quarta apresentam o mesmo alinhamento).
Neste outro post do allanzin (http://ryan.com.br/smf/index.php?topic=392.msg9176448#msg9176448 (http://ryan.com.br/smf/index.php?topic=392.msg9176448#msg9176448)), vemos uma foto do LG DV397H M com 3 linhas de legenda, sendo que a primeira também se encontra a esquerda em relação a segunda e a terceira (sendo que estas últimas duas compartilham o mesmo alinhamento).
Portanto, concluí através dessas amostras, que tanto o DV256K como o DV397H M apresentavam o mesmo bug. Porém, lendo a sua descrição do bug fiquei confuso: você disse que apenas a segunda linha fica deslocada (e não a terceira)? Pela foto do allanzin, não é só a segunda que aparece deslocada...

De qualquer modo, fiquei curioso: corrigir esse bug exigiu alguma alteração pontual, simples, ou foi algo mais elaborado? Se o bug for o mesmo do LG DV256, talvez seja fácil corrigí-lo neste último player também. Eu poderia fazer isso no dia em que finalmente ressucitar o meu LG DV256K...  ;D

Olá zeurt. O bug é diferente. O que você vê na foto do allanzin é um quadro com 4 linhas. Mas no DV397H M apenas as 3 primeiras linhas são exibidas. E, neste caso, a primeira fica centralizada e as duas outras ficam deslocadas à direita (veja que o espaço entre o final das linhas e a borda direita da tv é menor que o espaço entre a borda esquerda e o início da linhas). Se for um quadro com 3 linhas, apenas a segunda fica deslocada à direita (a primeira e a terceira ficam alinhadas e centralizadas corretamente). Com uma ou duas linhas, não acontecem quaisquer problemas, ficam na mesma posição da primeira linha que é vista na foto do allanzin.

A resolução deste problema foi relativamente fácil e pontual. Relativamente, porque depende do player, mas acho que sempre deve ficar na rotina que exibe a legenda. Nessa rotina (a que trabalha com o buffer secundário nos LG's), sempre há pontos que adicionam deslocamentos horizontais e outros que adicionam deslocamentos verticais para cada linha (ou determinados conjuntos de linhas) da legenda. Por exemplo, neste caso específico eu localizei o seguinte trecho no código ARM:

Código: [Selecionar]
ROM:000120D8             loc_120D8                               ; CODE XREF: sub_11C76+45A_j
ROM:000120D8 1F 4B                       LDR     R3, =unk_A5CC0
ROM:000120DA 9A 7A                       LDRB    R2, [R3,#0xA]   ; opcao de alinhamento horizontal
ROM:000120DA                                                     ; 3 ultimas linhas
ROM:000120DC D2 07                       LSLS    R2, R2, #0x1F
ROM:000120DE 71 D5                       BPL     loc_121C4
ROM:000120E0 19 4A                       LDR     R2, =unk_A5B7C
ROM:000120E2 52 79                       LDRB    R2, [R2,#5]
ROM:000120E4 01 3A                       SUBS    R2, #1
ROM:000120E6 91 42                       CMP     R1, R2
ROM:000120E8 10 DA                       BGE     loc_1210C
ROM:000120EA 17 4F                       LDR     R7, =unk_A5B7C
ROM:000120EC 18 37                       ADDS    R7, #0x18
ROM:000120EE 78 18                       ADDS    R0, R7, R1
ROM:000120F0 40 78                       LDRB    R0, [R0,#1]
ROM:000120F2 FE 30                       ADDS    R0, #0xFE ; '¦' ; posicao do alinhamento horizontal
ROM:000120F2                                                     ; segunda linha de 3
ROM:000120F2                                                     ; e segunda e terceira
ROM:000120F2                                                     ; linhas de 4
ROM:000120F4 00 06                       LSLS    R0, R0, #0x18
ROM:000120F6 00 0E                       LSRS    R0, R0, #0x18
ROM:000120F8 FF F7 ED FB                 BL      sub_118D6       ; centraliza?


O ponto ROM:000120F2 FE 30 ADDS    R0, #0xFE subtrai 2 da posição inicial da segunda linha de três (ou segunda e terceira linhas de quatro). #FE, considerando o bit de sinal (complemento de 2, se não me falhe a memória) representa -2. As linhas estavam justamente 2 pontos deslocadas. Eu descobri isso testando, pois ao trocar o ponto por ROM:000120F2 00 30 ADDS    R0, #0, o alinhamento se acertou. Não é a subtração em si que está errada, pois ao olharmos o alinhamento das outras linhas nas outras situações, geralmente temos essa subtração. Então imagino que o bug está no valor que foi carregado ou calculado em #R0 antes da subtração.

No caso do DV256k, tem que dar uma olhada naquela rotina para procurar esses trechos. Pode ser que a correção seja simples, se tiver um ponto que altera só o alinhamento da primeira linha. Porém, pode ser um pouco mais chato se esse ponto alterar o alinhamento das duas primeiras linhas quando temos até duas linhas na legenda. É assim nos dois DV397H.

Concluindo: agora me parece que a diferença principal (em relação as legendas) entre o DV397H M e o S é a quebra de linha: burra no M, e inteligente (respeitando os espaços entre as palavras) no S. Você chegou a pensar em mexer nisso?

Tem ainda a quantidade de linhas da legenda (máximo 3 no M e máximo 4 no S) e o alinhamento vertical, que além de não possuir previsão de opção no 8032, é do tipo middle-top. Já consegui criar as opções de alinhamento diretamente no ARM e arrumei para bottom e top verdadeiros. Estou procurando onde se define o limite de linhas e procurando o local em que se calcula a quebra de linhas para ver se dá para trabalhar um pouco mais. :)

Me pergunto se ainda existe algo que falte neste aparelho, acredito que só Bluray !

Se eu conseguir e tiver tempo, gostaria de incluir essas últimas alterações que citei ao zeurt.  ;D
Título: Re: Firmware do LG DV397H
Enviado por: Ariel em Março 30, 2010, 05:44:07 pm
Parabéns rictad, actualizei o firmware pra chip MT1389M com a versão 3.0 e tudo funciona à perfección. É incrível o lucro que faz conseguido, muito obrigado!. :yahoo!:
Gostaria de saber se dentro de alguma nova actualização do firmware seria possível implementar o zoom a um rango entre 90%95%. Isso também seria genial.

Um abraço

Ariel
Título: Re: Firmware do LG DV397H
Enviado por: Marf em Março 31, 2010, 03:30:38 pm
Olá muito boa tarde a todos. Seguinte atualizei o firmware - Chipset M - V3.0. Mas percebi algo, que pelo menos não tinha percebido nas versões anteriores.
Quando tenho uma pasta no pendrive que contenha Ç, este é substituido por outra letra. Assim, será que acentuação e ç será que não estão funcionando? Quem tiver as versões anteriores deveriam testar.

No mais, as alterações estão perfeitas parabéns...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 01, 2010, 10:39:54 pm
Firmware Rictad Versão 3.1 para DV397H com chip MT1389M

ATENÇÃO, usuários do modelo DV397H com chip MT1389S não devem atualizar com esta versão!

Exibição de até 4 linhas de legenda por quadro.
Adicionada opção de alinhamento vertical da legenda, unificada com a opção de alinhamento horizontal no menu Others (como no modelo de chipset S).
Alinhamentos inferior e superior verdadeiros.
Corrigido bug que impedia a exibição dos caracteres acentuados no filebrowser.
Corrigido definitivamente o bug do alinhamento horizontal, que ainda acontecia em alguns casos.


Nota 1: As legendas agora estão posicionadas de forma idêntica às do modelo de chipset S, a única diferença é a quebra de linha burra.
Nota 2: Os caracteres acentuados não eram exibidos no filebrowser porque a fonte 14 foi "empurrada" para o lugar da fonte 15, como aconteceu no modelo de chipset S ao adicionar as fontes com itálico. A solução foi semelhante: copiei a fonte 14 para o lugar da fonte 15 (que possuía caracteres em hebraico e não é utilizada neste player). Mas, para economizar espaço, substituí a fonte 14, agora não utilizada, por uma fonte pequena inútil criada só para isso. Remover a fonte ou substituí-la pela fonte de 1 caractere não funcionou. Precisei economizar esse espaço porque o firmware não pode passar do endereço 0x1f0000, caso contrário coisas estranhas podem acontecer (esse era o motivo do preto e branco relatado pelo Allanzin nos primeiros firmwares que modifiquei para este modelo). Isto porque, assim como o outro modelo, esse player também grava blocos na flash a partir do endereço 0x1f0000 quando se reinicia após o upgrade e, principalmente, quando acionamos a opção DivX VOD pela primeira vez.
Título: Re: Firmware do LG DV397H
Enviado por: jangs em Abril 07, 2010, 07:31:45 pm
Prezados,

Utilizava a versão 2.3 sem maiores problemas, tentei atualizar para essa versão 3.1 e meu DVD nao liga mais  :(

Alguma ideia para recupera-lo ? Ou meu DVD foi pro espaço mesmo ?

Obrigado
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 08, 2010, 02:43:14 am
Prezados,

Utilizava a versão 2.3 sem maiores problemas, tentei atualizar para essa versão 3.1 e meu DVD nao liga mais  :(

Alguma ideia para recupera-lo ? Ou meu DVD foi pro espaço mesmo ?

Obrigado
Mas o que exatamente aconteceu? A atualização foi interrompida?
Bom, se algo deu errado na sua atualização e seu player morreu, você só conseguirá recuperá-lo com o cabo serial, como explicado aqui (http://ryan.com.br/wp/mtk-porta-serial/).
Título: Re: Firmware do LG DV397H
Enviado por: Marf em Abril 08, 2010, 11:40:32 am
Seguinte rapás, atualizei para a versão 3.1 - Chipset M , no início deu uma pala, o dvd travou, não iniciava de forma alguma. Aí tirei da tomada esperei um pouco, liguei novamente, funcionou blz beleza. Ontem estava ouvindo música e às vezes quando eu passava de uma para outra travava.
No mais todas as alterações foram feitas com sucesso, mas caso encontrem algo de errado no firmware lancem a versão 3.2.

Outra coisa, só para melhorar mais o aparelho mesmo. Seria possível fazer o seguinte:
- ao clicar no botão "display", seria possível fazer com que a legenda não sumisse? Seria sinistro, pois hoje quando clicamos a legenda demora um pouco a voltar...
Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 08, 2010, 10:14:22 pm
Pelos testes que fiz, percebi que o LG DV397H com chipset M tem uma certa instabilidade que o modelo de chipset S não tem. Apesar do acesso à entrada USB ser mais rápido e não ter o pequeno travamento temporário nos últimos 3 segundos de filme, o modelo de chipset M pode travar sem mais nem menos a qualquer instante. Mas o momento em que mais ocorre é quando desligamos o aparelho da tomada e o religamos, principalmente com algum dispositivo USB conectado, e então ele trava na tela de leitura do CD. Tem que desligar na tomada e ligar de novo. Acontece mesmo com o firmware original. Outro momento que isto pode ocorrer é após a atualização do firmware, logo depois do reset: ele trava na tela de leitura do CD e temos que desligar na tomada e ligar de novo. Pensava que podia ser somente o aparelho que está comigo, mas lembrei que isso foi relatado em pelo menos dois posts mais antigos, um do allanzin e outro do duke70. E agora, relatado pelo Marf.

Tocando música, ainda não testei. Marf, as músicas estavam em USB ou disco?
Título: Re: Firmware do LG DV397H
Enviado por: jangs em Abril 09, 2010, 03:00:23 am
rictad,

Durante o processo de atualização ele travou, esperei um pouco e tirei da tomada, depois disso nao ligou mais. Acabei de ligar novamente e nada. :-(

Vou tentar ler as instruções para construção e utilização do cabo serial e tentar recuperar.
A "sorte" é que peguei um PS3 e estou vendo os videos por ele. ;-)

Obrigado pelo retorno e parabéns pelo excelente trabalho no desenv. desse firmware.

Título: Re: Firmware do LG DV397H
Enviado por: rictad em Abril 09, 2010, 04:02:58 am
rictad,

Durante o processo de atualização ele travou, esperei um pouco e tirei da tomada, depois disso nao ligou mais. Acabei de ligar novamente e nada. :-(

Vou tentar ler as instruções para construção e utilização do cabo serial e tentar recuperar.
A "sorte" é que peguei um PS3 e estou vendo os videos por ele. ;-)

Obrigado pelo retorno e parabéns pelo excelente trabalho no desenv. desse firmware.
Infelizmente você não teve sorte. Como foi dito no início deste tópico, o processo de atualização de firmware não é 100% seguro e falhas podem ocorrer. Você parece ter sido o primeiro a sofrer isso aqui no tópico em todo esse tempo. Pelo menos foi o primeiro a reportar.

Vou abrir um pequeno off-topic, só para complementar meu post anterior sobre a recuperação por cabo. Esse modelo tem flash serial, então você terá que ler também isso aqui (http://jefferson-ryan.blogspot.com/2008/09/procedimento-de-leitura-da-flash-serial.html), como o Ryan já deixou indicado no início da página de construção do cabo serial. Para essa flash em especial, basta ligar o pino 1 (CSS) à carcaça (terra). O problema é que ela não é soquetada e isso dificulta um pouco o processo. Estou enviando o datasheet dela, para ajudar.

O off-topic foi só para deixar mais claro sobre a flash serial e ajudar no procedimento de confecção do cabo serial para o DV397H de chipset M, já que esse tópico deve ser usado apenas para desenvolvimento.  ;)
Título: Re: Firmware do LG DV397H
Enviado por: Marf em Abril 09, 2010, 04:59:43 pm
Pelos testes que fiz, percebi que o LG DV397H com chipset M tem uma certa instabilidade que o modelo de chipset S não tem. Apesar do acesso à entrada USB ser mais rápido e não ter o pequeno travamento temporário nos últimos 3 segundos de filme, o modelo de chipset M pode travar sem mais nem menos a qualquer instante. Mas o momento em que mais ocorre é quando desligamos o aparelho da tomada e o religamos, principalmente com algum dispositivo USB conectado, e então ele trava na tela de leitura do CD. Tem que desligar na tomada e ligar de novo. Acontece mesmo com o firmware original. Outro momento que isto pode ocorrer é após a atualização do firmware, logo depois do reset: ele trava na tela de leitura do CD e temos que desligar na tomada e ligar de novo. Pensava que podia ser somente o aparelho que está comigo, mas lembrei que isso foi relatado em pelo menos dois posts mais antigos, um do allanzin e outro do duke70. E agora, relatado pelo Marf.

Tocando música, ainda não testei. Marf, as músicas estavam em USB ou disco?

Blz Beleza rictad, seuinte seguinte o aparelho travou tocando música em um cd.
Título: Re: Firmware do LG DV397H
Enviado por: Marf em Abril 14, 2010, 08:58:50 pm
Sequinte rapás, efetuei mais alguns teste e não sei se o dvd estava arranhado, mas perto do fim, travou e dois filmes. Quanto a travar no pendrive, não está travando mais, pelo menos músicas.
Título: Re: Firmware do LG DV397H
Enviado por: allanzin em Maio 13, 2010, 05:56:51 pm
Pessoal só pra relatar,

Baixei a última versão do firmware para chipset M e tudo ocorreu normalmente, como todas as outras vezes que atualizei  ;). Acho que quem teve problemas, são casos isolados, talvez o pendrive ou problema na rede elétrica na hora na atualização, enfim  :-[. Por aqui, tudo OK!

Obrigado Rictad!

 :clapping:
Título: Re: Firmware do LG DV397H
Enviado por: KaguraWay em Julho 02, 2011, 04:32:26 am
Comprei o aparelho LG DV397H e ele chegou terça -feira, ja coloquei o dissipador conforme as instruções desse forum, agora o link para trocar a cor das legendas, e como desbloquear a gravação em Mpge-4.
Qual é o link da ultima versão de firmware para legendas amarelas?
Título: Re: Firmware do LG DV397H
Enviado por: Jefferson em Julho 02, 2011, 04:43:30 am
Desbloquear gravação? Do que você está falando?

E o link para o firmware está na primeira página do tópico.
Título: Re: Firmware do LG DV397H
Enviado por: dariojf em Agosto 06, 2012, 12:52:13 am
Vixe!

Estive aqui pela última vez, em julho de 2009, na página 34 deste fórum.
Havia feito a atualização para a versão 2.3 e tudo funcionou corretamente.
Estava satisfeito e queria compartilhar, mas vários e vários problemas pessoais me deixaram de fora.
Agora que as coisas melhoraram, resolvi ver como a coisa ia.
Parece que a versão mais atual para o 1389M é a 3.1, mas não a consegui para download pois o sistema informa um erro.
Esta é realmente a última versão?
Onde baixá-la?
Li que várias modificações foram implementadas. Confesso que nem sei quais são ao todo.
Tentando ajudar, se me derem alguns direcionamentos, me comprometo a fazer um "manual", sintetizando todas as novas funcionalidades e como fazê-las funcionar.
No mais, parabéns pelo trabalho.

Abraços.
Dário - dariojf encontrável no gmail
Juiz de Fora - Minas
Título: Re: Firmware do LG DV397H
Enviado por: dariojf em Agosto 06, 2012, 12:56:52 am
Ops...

Desculpe voltar logo em seguida, mas li algo que me deixou curioso (intrigado?).
O que o KaguraWay quis dizer com "ja coloquei o dissipador conforme as instruções desse forum"?

Que dissipador?
Que instruções desse fórum?

Será que perdi tanta coisa assim?

Abraços.
Dário - dariojf encontrável no gmail
Juiz de Fora - Minas