Autor Tópico: Firmware do LG DV397H  (Lida 300600 vezes)

0 Membros e 3 Visitantes estão vendo este tópico.

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #90 Online: 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".

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #91 Online: 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

FORUM.RYAN.COM.BR

Re: Firmware do LG DV397H
« Responder #91 Online: Fevereiro 14, 2009, 10:29:35 pm »

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #92 Online: 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:
  • As modificações anteriores feitas pelo Viper3M (correção do timing bug e cor amarelo canário).
  • As modificações anteriores feitas por mim (espaçamento entre as linhas da legenda aumentado para poder comportar fontes maiores; 6 tipos de fontes 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 caracteres especiais nos nomes de arquivos mostrados no filebrowser, bem como nas ID3 tags).
  • Opção de 10 cores de legenda incluída no menu Outros do Setup.
  • Opção de ligar/desligar o background de legenda incluída no menu Outros do Setup.
  • Opção de alinhamento vertical (middle-top ou bottom) de legenda incluída no menu Outros do Setup.

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.

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #93 Online: 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)?

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...

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #94 Online: 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)?
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.
« Última modificação: Fevereiro 15, 2009, 07:26:02 pm por rictad »

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #95 Online: 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.

Offline cvalmeida

  • Novato
  • *
  • Mensagens: 2
  • Aprovação: +0/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #96 Online: 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!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware do LG DV397H
« Responder #97 Online: Fevereiro 16, 2009, 03:05:07 am »
Aviso do moderador:

Agora que eu falei no blog 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".

« Última modificação: Fevereiro 16, 2009, 03:11:24 am por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline alxfrmmng

  • Novato
  • *
  • Mensagens: 4
  • Aprovação: +0/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #98 Online: 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

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #99 Online: 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?
« Última modificação: Fevereiro 18, 2009, 10:57:53 am por rictad »

FORUM.RYAN.COM.BR

Re: Firmware do LG DV397H
« Responder #99 Online: Fevereiro 17, 2009, 08:04:00 pm »