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)
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!
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.
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:
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
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!
Comprei este equipamento e o famoso Timing Bug (que eu não conhecia de nome), me incomodava muito.
Esse firmware corrigiu o problema?
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).
Model: LG_DV_LV81F33B40DMS / LG_DV_LV81F33B400MS
Chip: MT1389 S
Servo: 0D67
Micom: v2.301 / v2.6
Checksum: 4BB8 / 7FFCModel : 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.
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.
FACTORY RESET ..DONE .PLZ POWER DOWN!
Eu as omiti, pois achei que seria redundância.
O Timing Bug "não ocorre" com legendas .SUB, seja no firmware original, seja no firmware alterado (após edição no Xvi32).
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",
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?
Posso postar o firmware que alterei (baseado no que você enviou)?
Pelo jeito você não possui o aparelho.
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
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?! :-[
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...
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?
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.
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.
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).
A porta USB não sustenta o HD. Será que é por ser USB 1.1?
Porém, outras coisas que eram brancas passarão a ser amarelas e isso pode ser indesejado. Tem que testar para ver.
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?
PessoALL,
Segue o 2º 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.
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"...
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.
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.
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:
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.
Se o meu entendimento estiver errado, qual seria a forma correta de testar essa possível distância entre as 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.
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.
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...
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.
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 queCó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á...
B2:DA93 E4 clr A
B2:DA94 FD mov R5, A ; Cor de Background da Janela das Legendas
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
eB2: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 :(.Linha 1 O gato, o gambá e o gorilaSomente o "g" de "gambá" será cortado. O outros "g"s ficam normais.
Linha 2 são vertebrados
Linha 1
Linha 2
Linha 3 O gato, o gambá e o gorila
Linha 4
Linha 1
Linha 2
Linha 3 O gato, o gambá e o gorila
Linha 4 são vertebrados
Linha 1
Linha 2 O gato, o gambá e o gorila
Linha 3 são vertebrados e também
Linha 4 mamíferos
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
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
e
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, #9Código: [Selecionar]B2:DA87 74 10 mov A, #10
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 :(.
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
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
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
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
B2:DAC6 7D 01 mov R5, #0x01
E a legenda permanece centralizada. Então deve ser 00 (ainda não testado) alinhado à direita, 01 ou 81 (testados) centralizado e 02 (testado) à esquerda.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...
Ontem eu também esqueçi disso e enviei a sugestão sem esse detalhe (hoje cedo corrigi).
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
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).
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
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
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.
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...
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...
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
....................
....................
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
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!
................................................
Bom, consegui! ;DParabé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...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:
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.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).
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 MTKReplacerIsso também ocorre comigo (com todos os firmwares que testei) e não sei muito bem porque. Também uso o MTK Replacer...
Bom, consegui! ;DParabéns rictad!! :clapping:
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.
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 ; _
e-) Não é necessário mexer em nehum filtro do ARM, nem alterar nehuma fonte.
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...).
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.Consegui! :yahoo!: Estou enviando um novo firmware modificado.
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.
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.
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... ;DEstou estudando muito! :laugh:
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:
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:
Certamente certamente certamentecertamente
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.
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
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
...............
...............
...............
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
...................
...................
...................
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
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
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
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).
E aqui a modificação básica feita em todas as demais SubStyle:
zeurt, você sabe como funcionam esses menus ocultos no LG256K?
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.
Bom, mais uma informação importante sobre a estrutura de menus. Na seqüênciaMuito interessante essa descoberta: ainda não tinha descoberto o significado desses 2 últimos bytes.
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!
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.
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...
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 é?
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.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: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
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
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 ; '
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
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
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! :)
; 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
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
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
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
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
Bom, é isso. Espero ter ajudado!
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íqquerqualquer controle remoto de DVD da LG poderia ser usado com o DV397H! :)
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?
Mas isso seria para outro aparelho ou seria mais um caso de LG DV397H que possui o chip MT1389M?
; 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
....
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
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
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
.....
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
....
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
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
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
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
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 ; -----------------------------
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
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
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
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
Bom, acho que ficou um pouco grande. Ryan, se estiver ruim pode deletar. :-\
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
Bom, acho que ficou um pouco grande. Ryan, se estiver ruim pode deletar. :-\
Nem em sonho ;D
Quanto mais informação, melhor.
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:É interessante saber que todos os valores já estejam prontos, a nossa disposição...
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.
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:
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.
2) Teria como implementar a função aleatório? Só não sei em qual botão do controle remoto poderia ser.
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.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?
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 segundosAchei a ideia excelente. Poderia ser feito com a tecla REPEAT, por exemplo.
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 segundosAchei a ideia excelente. Poderia ser feito com a tecla REPEAT, por exemplo.
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í...
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.
Claro, Ryan! Poste-o aí que pode facilitar as coisas!
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....
Meu medo é de dar algo errado, e eu acabar perdendo a garantia....
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:
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
....
....
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: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
....
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
....
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
....
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)
....
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??
....
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 ................
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 ................
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 ................
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).
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.
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. :-[
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?
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.
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
-----------------------------------------------
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 !
-----------------------------------------------
Se não der certo, vou começar a pensar em comprar outro DVD. ;D
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
Está na garantia? ;)
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 ?
Mas meu HDMI nunca mais funcionou depois daquela atualização.
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: ).
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]
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.
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.
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.
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.
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..
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
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...).
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.
Mas acho que estamos falando de outra tela. Essa aqui não mostra valores numéricos.
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
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
Rictad, só por curiosidade: você chegou a testar a HDMI com o firmware do DV392H?
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.).
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).
(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.)
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
(...)
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:
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 !!
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 !
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.
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).
Se o itálico vai ficar feio ou não, devido ao serrilhado, seria outro detalhe.
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
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 !!
Você disse que a legenda é exibida durante o zoom, mas o ícone de zoom some rápido? Mais ou menos em 3 segundos?
Nunca tinha notado, mas no meu também não aparece o "u" minúsculo com acento agudo! :blink:
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 !
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... :-[
Nunca tinha notado, mas no meu também não aparece o "u" minúsculo com acento agudo! :blink:
Sim, faltam o ú, o ü e o û. Então, depois eu vejo essa parte.
Não tenho certeza agora, mas se não me engano ele está falando deste problema.
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.
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.
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.
É, 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 !
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 !
EDIT: Arquivo modificado. Tentativa de forçar temporariamente NTSC, até ser incluída opção de sistema de TV.
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 ..!!
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 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.
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.
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?
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.
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?
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).
EDIT:Versão 2.2 alfa 3, somente para DV387H com chip MT1389M.Agora, o que acontecia com o TV System, acontece com o Output Select, o mesmo bugzinho, idêntico, e ele continua funcionando !
Por favor, testem a navegação para baixo no menu display para ver se mudou alguma coisa.
EDIT:Versão 2.2 alfa 3, somente para DV387H com chip MT1389M.Agora, o que acontecia com o TV System, acontece com o Output Select, o mesmo bugzinho, idêntico, e ele continua funcionando !
Por favor, testem a navegação para baixo no menu display para ver se mudou alguma coisa.
;)
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á 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 !
* 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.
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]
(........................)
(........................)
(........................)
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
(...................)
(...................)
(...................)
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
(.........................)
(.........................)
(.........................)
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
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
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 ; ---------------------------------------------------------------------------
(................)
(................)
(................)
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
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.
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.
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.
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...
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.
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.).
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
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: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
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
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
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
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...
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%.
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 safrasObrigado ! Alexandre
de
alimentos fortes e resistentes às secas
e insetos.
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.
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 safrasObrigado ! Alexandre
de
alimentos fortes e resistentes às secas
e insetos.
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.
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,
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.
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?
Teria problema em colocar uma versão anterior de firmware, se entendi bem a minha á a versão 2.8 certo?
Obrigado
Fernando
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.
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
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!
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
- Esconder todas as tags;
- Mostrar todas as tags;
- Mostrar somente <i> e </i>;
- Substituir itálicas por aspas;
- Habilitar itálicas em Arial.
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... :-[
#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
#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
#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
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).
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?
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.
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.
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.
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).
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...
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
A outra opção é que talvez ele tenha se descuidado, acabou usando "internetês" em alguma das mensages e foi expulso deste fórum! ;)
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.
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.
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.
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.
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.
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!
Será que a diferença está no FBRALLK e no FBRALL2? Precisamos de mais números para saber.
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".
Meu chipset é modelo MObrigado 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!
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 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.Isso ocorre com todas as fontes? É estranho que ninguém tenha notado isso ainda...
Ex: Resolução - na legenda aparece assim: resoluãçao
Isso ocorre com todas as fontes? É estranho que ninguém tenha notado isso ainda...
Você embutiu as legendas com qual programa (e qual versão)? Que tipo de problema ocorreu?
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?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?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.
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!
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.
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.
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.
CitarAtualizei 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?
É 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).
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.
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
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á !!
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.
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
Primeira linha de teste.
Segunda linha de teste.
Terceira <i>linha de teste.
Quarta linha de teste.
02 70 STRB R2, [R0]
42 70 STRB R2, [R0,#1]
82 70 STRB R2, [R0,#2]
4A 70 STRB R2, [R1,#1]
ROM:00040830 05 49 LDR R1, =loc_9EB88
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
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.
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.
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:
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).
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.
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.
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.
Eu ainda não tinha visto aquele tópico, mas ficou exatamente como a idéia que você deixou lá. 8)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)
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?
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 ">".
(...)
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!
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!
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.
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!
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).
Sim.
Alguém saberia o que fiz de errado?
Grato
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.
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.
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...)
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.
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,
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
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?
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?
Me pergunto se ainda existe algo que falte neste aparelho, acredito que só Bluray !
Prezados,Mas o que exatamente aconteceu? A atualização foi interrompida?
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
rictad,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.
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.
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?