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

0 Membros e 2 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 #260 Online: 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.
« Última modificação: Abril 18, 2009, 04:03:10 am por rictad »

Offline zeurt

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

FORUM.RYAN.COM.BR

Re: Firmware do LG DV397H
« Responder #261 Online: Abril 19, 2009, 02:20:10 am »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware do LG DV397H
« Responder #262 Online: 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. 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
« Última modificação: Abril 19, 2009, 02:47:18 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 rictad

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

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #264 Online: 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 
« Última modificação: Abril 20, 2009, 02:45:39 pm por rictad »

Offline zeurt

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

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #266 Online: 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%.
« Última modificação: Abril 21, 2009, 03:22:03 pm por rictad »

Offline allanzin

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

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Firmware do LG DV397H
« Responder #268 Online: 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.
« Última modificação: Abril 25, 2009, 03:44:47 pm por rictad »

Offline rictad

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

FORUM.RYAN.COM.BR

Re: Firmware do LG DV397H
« Responder #269 Online: Abril 23, 2009, 11:29:53 pm »