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) 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), 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...
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:
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.