Autor Tópico: Firmware do LG DV256k  (Lida 73155 vezes)

0 Membros e 1 Visitante estão vendo este tópico.

Offline blood_brother

  • Novato
  • *
  • Mensagens: 5
  • Aprovação: +0/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #50 Online: Maio 19, 2008, 01:23:36 am »
Primeiramente gostaria de parabenizar ao esforço de todos do fórum em tentar resolver os problemas com seus players.
Hoje confirmando o falecimento do meu dvp 5100, após ler a avaliação feita por vocês aqui do LG 256K resolvi adquirir um exemplar por 179,00 na loja ponto frio.
Achei o player muito bom, a primeira coisa que percebi foi o timing bug, logo já atualizei para a versão do firmware sem o bug (fico muito grato pela correção!). Já assisti 2 filmes e 2 eps de séries nele hoje, e achei realmente um player muito bom, gostei do tamanho das legendas, do contorno (bem legíveis). Enfim fiquei muito satisfeito pela compra e agradeço a todos vocês que alimentam este fórum com informações muito úteis pra quem já tem um player e pra quem pensa em comprar um.
« Última modificação: Maio 19, 2008, 01:29:52 am por blood_brother »

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #51 Online: Setembro 03, 2008, 12:04:32 am »
Estou tentando implementar Caracteres Acentuados no FileBrowser seguindo as orientações de jmaraujo sobre Conversão Unicode para 125x daqui: http://ryan.com.br/smf/index.php?topic=179.msg9172150#msg9172150

Citar
Rotina de conversão Unicode to CP125x

Eneris: Busque os seguintes dois pontos nos ArmCodes:

Lugar 1:
ROM:00025132             loc_25132
ROM:00025132 02 98                       LDR     R0, [SP,#0x30+var_28]
ROM:00025134 01 99                       LDR     R1, [SP,#0x30+var_2C]
ROM:00025136 80 19                       ADD     R0, R0, R6
ROM:00025138 41 18                       ADD     R1, R0, R1
ROM:0002513A 10 39                       SUB     R1, #0x10
ROM:0002513C C9 7B                       LDRB    R1, [R1,#0xF]

Lugar 2:
ROM:00025166             loc_25166
ROM:00025166 A8 19                       ADD     R0, R5, R6
ROM:00025168 01 99                       LDR     R1, [SP,#0x30+var_2C]
ROM:0002516A 05 06                       LSL     R5, R0, #0x18
ROM:0002516C 41 18                       ADD     R1, R0, R1
ROM:0002516E 10 39                       SUB     R1, #0x10
ROM:00025170 C9 7B                       LDRB    R1, [R1,#0xF]

Modificações:

Lugar a modificar 1:
ROM:00025132             loc_25132
ROM:00025132 02 98                       LDR     R0, [SP,#0x30+var_28]
ROM:00025134 01 99                       LDR     R1, [SP,#0x30+var_2C]
ROM:00025136 80 19                       ADD     R0, R0, R6
ROM:00025138 41 18                       ADD     R1, R0, R1
ROM:0002513A 50 F0 F9 F8                 BL      CP_conversion_routine

Lugar a modificar 2:
ROM:00025166             loc_25166
ROM:00025166 A8 19                       ADD     R0, R5, R6
ROM:00025168 01 99                       LDR     R1, [SP,#0x30+var_2C]
ROM:0002516A 05 06                       LSL     R5, R0, #0x18
ROM:0002516C 41 18                       ADD     R1, R0, R1
ROM:0002516E 50 F0 DF F8                 BL      CP_conversion_routine


Nova rotina: (exemplo com o firmware jmaraujo 1.x - RISC do Philips DVP5140)

ROM:00075330             CP_conversion_routine
ROM:00075330 10 39                       SUB     R1, #0x10
ROM:00075332 02 B4                       PUSH    {R1}
ROM:00075334 89 7B                       LDRB    R1, [R1,#0xE]
ROM:00075336 01 29                       CMP     R1, #1
ROM:00075338 02 BC                       POP     {R1}
ROM:0007533A C9 7B                       LDRB    R1, [R1,#0xF]
ROM:0007533C 03 D1                       BNE     loc_75346
ROM:0007533E 01 B4                       PUSH    {R0}
ROM:00075340 08 48                       LDR     R0, =unk_75368
ROM:00075342 41 5C                       LDRB    R1, [R0,R1]
ROM:00075344 01 BC                       POP     {R0}
ROM:00075346
ROM:00075346             loc_75346
ROM:00075346 C0 46                       NOP
ROM:00075348 F9 29                       CMP     R1, #0xF9 ; '¨'
ROM:0007534A 00 D9                       BLS     locret_7534E
ROM:0007534C FA 39                       SUB     R1, #0xFA ; '·'
ROM:0007534E
ROM:0007534E             locret_7534E
ROM:0007534E 70 47                       BX      LR

A nova rotina pode ser escrita por cima das mensagems de erros de C+, ou como no meu caso, após ampliar o RISC.

Para calcular os saltos BL, use o utilitario BCalc do grupo MT13x9.

Já encontrei o lugar 1 (25CB2), o lugar 2 (25CE6), e também  o trecho com mensagens de erro de C+ (de 27100 até 27178), onde pretendo sobrescrever a nova rotina.

Porém, estou com uma dúvida de principiante: a nova rotina (convert unicode to 125x) irá ocupar os endereços de 27100 até 2711F. O que eu devo fazer com os endereços de 27120 até 27178 (onde está o restante das mensagens de erro). Posso simplemente deixar como está, ou devo deletar esse trecho com o editor hexadecimal, ou devo substituir com alguma outra coisa?

FORUM.RYAN.COM.BR

Re: Firmware do LG DV256k
« Responder #51 Online: Setembro 03, 2008, 12:04:32 am »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware do LG DV256k
« Responder #52 Online: Setembro 03, 2008, 05:59:13 pm »
Faça como preferir. Se tiver dúvidas, zere tudo (com cuidado para zerar somente as mensagems de erro). Caso contrario deixe tudo como está.

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #53 Online: Setembro 04, 2008, 01:21:37 am »
Obrigado jmaraujo! Já resolvi o problema. Eu estava colocando a rotina num local inadequado (27100). Mudei para o endereço 2711A e deu certinho:

Código: [Selecionar]
ROM:0002711A
ROM:0002711A ; =============== S U B R O U T I N E =======================================
ROM:0002711A
ROM:0002711A
ROM:0002711A sub_2711A                               ; CODE XREF: sub_25B8C+12Ep
ROM:0002711A                                         ; sub_25B8C+162p
ROM:0002711A                 SUBS    R1, #0x10
ROM:0002711C                 PUSH    {R1}
ROM:0002711E                 LDRB    R1, [R1,#0xE]
ROM:00027120                 CMP     R1, #1
ROM:00027122                 POP     {R1}
ROM:00027124                 LDRB    R1, [R1,#0xF]
ROM:00027126                 BNE     loc_27130
ROM:00027126 ; End of function sub_2711A
ROM:00027126
ROM:00027128
ROM:00027128 ; =============== S U B R O U T I N E =======================================
ROM:00027128
ROM:00027128
ROM:00027128 sub_27128                               ; DATA XREF: sub_27060+30o
ROM:00027128                 PUSH    {R0}
ROM:0002712A                 LDR     R0, =loc_746C
ROM:0002712C                 LDRB    R1, [R0,R1]
ROM:0002712E                 POP     {R0}
ROM:00027130
ROM:00027130 loc_27130                               ; CODE XREF: sub_2711A+Cj
ROM:00027130                 NOP
ROM:00027132                 CMP     R1, #0xF9 ; '¨'
ROM:00027134
ROM:00027134 loc_27134                               ; DATA XREF: sub_27060+38o
ROM:00027134                 BLS     locret_27138
ROM:00027136                 SUBS    R1, #0xFA ; '·'
ROM:00027138
ROM:00027138 locret_27138                            ; CODE XREF: sub_27128:loc_27134j
ROM:00027138                 BX      LR
ROM:00027138 ; End of function sub_27128
ROM:00027138
ROM:00027138 ; ---------------------------------------------------------------------------

Agora, estou com um novo e mais complicado problema. :( Fiz o patch da Rotina Convert Unicode to 125x (alterando corretamente os pontos 1 e 2), criei as fontes adequadas (colocando os caracteres 250-255 nos locais 0-5), porém o aparelho continuou não mostrando os caracteres acentuados e especiais (mostra o caracter "_" no lugar). Eu já havia lido o documento Patching...A to Z, que mencionava um outro patch, desta vez no 8032, que deveria ser aplicado em conjunto com o do ARM (em alguns players):
Citar
==================================================================
3) Show cyrillics in file browser instead of '_' chars.

This patch works together with corresponding patch in ARM section - so you need to apply
both of them to see the result.

To see all chars in filebrowser patch the following bytes:

12DA4: 20 => 00
12DAA: 7E => FE

15EEC: 20 => 00
15EF2: 7E => FE

7F 06 02 05 9B
----------------------------------------------------------------
Howto:

In 8032 code look for ("XX" is a wildcard char):

90 XX XX E0 FF 90 XX XX E0 FE C3 9F 50 05 C3 EF (I found it at 15E9E).

Then skip until the following section of code and patch #0x20 and #0x7E:

ROM:00015EEB 94 20                 subb  A, #0x20
ROM:00015EED 40 06                 jc    ROM_5EF5
ROM:00015EEF E0                    movx  A, @DPTR
ROM:00015EF0 D3                    setb  C
ROM:00015EF1 94 7E                 subb  A, #0x7E
ROM:00015EF3 40 10                 jc    ROM_5F05

This code appears twice:
first time for current directory,
second time for names of files in the file browser

Note: it can be your firmware doesn't check the char boundaries.
In this case you cannot and don't need to apply this patch.

===============================================

Eu encontrei 2 sequencias assim: 90 XX XX E0 FF 90 XX XX E0 FE C3 9F 50 05 (os 2 últimos bytes da sequencia - C3 EF - não coincidiram). Estão nos endereços 7B82 e 7D8A. Transcrevo os trechos:

Código: [Selecionar]
B0:7B82 ; ---------------------------------------------------------------------------
B0:7B82
B0:7B82 B0_7B82:                                ; CODE XREF: B0_79F6+166j
B0:7B82                                         ; B0_79F6+172j
B0:7B82                 mov     DPTR, #XRAM_FDF1
B0:7B85                 movx    A, @DPTR
B0:7B86                 mov     R7, A
B0:7B87                 mov     DPTR, #XRAM_FDF0
B0:7B8A                 movx    A, @DPTR
B0:7B8B                 mov     R6, A
B0:7B8C                 clr     C
B0:7B8D                 subb    A, R7
B0:7B8E                 jnc     B0_7B95
B0:7B90                 mov     DPTR, #XRAM_FDF1
B0:7B93                 mov     A, R6
B0:7B94                 movx    @DPTR, A
B0:7B95
B0:7B95 B0_7B95:                                ; CODE XREF: B0_79F6+198j
B0:7B95                 mov     DPTR, #XRAM_FDF2
B0:7B98                 movx    A, @DPTR
B0:7B99                 mov     R7, A
B0:7B9A                 mov     A, R6
B0:7B9B                 setb    C
B0:7B9C                 subb    A, R7
B0:7B9D                 jc      B0_7BA1
B0:7B9F                 mov     A, R6
B0:7BA0                 movx    @DPTR, A
B0:7BA1
B0:7BA1 B0_7BA1:                                ; CODE XREF: B0_79F6+12Dj
B0:7BA1                                         ; B0_79F6+1A7j
B0:7BA1                 mov     DPTR, #XRAM_FDF0
B0:7BA4                 movx    A, @DPTR
B0:7BA5                 mov     DPTR, #XRAM_FDF4
B0:7BA8                 movx    @DPTR, A
B0:7BA9                 ljmp    B0_7ADB
B0:7BAC ; ---------------------------------------------------------------------------

Código: [Selecionar]
B0:7D8A ; ---------------------------------------------------------------------------
B0:7D8A
B0:7D8A B0_7D8A:                                ; CODE XREF: B0_7BFE+166j
B0:7D8A                                         ; B0_7BFE+172j
B0:7D8A                 mov     DPTR, #XRAM_FDF1
B0:7D8D                 movx    A, @DPTR
B0:7D8E                 mov     R7, A
B0:7D8F                 mov     DPTR, #XRAM_FDF0
B0:7D92                 movx    A, @DPTR
B0:7D93                 mov     R6, A
B0:7D94                 clr     C
B0:7D95                 subb    A, R7
B0:7D96                 jnc     B0_7D9D
B0:7D98                 mov     DPTR, #XRAM_FDF1
B0:7D9B                 mov     A, R6
B0:7D9C                 movx    @DPTR, A
B0:7D9D
B0:7D9D B0_7D9D:                                ; CODE XREF: B0_7BFE+198j
B0:7D9D                 mov     DPTR, #XRAM_FDF2
B0:7DA0                 movx    A, @DPTR
B0:7DA1                 mov     R7, A
B0:7DA2                 mov     A, R6
B0:7DA3                 setb    C
B0:7DA4                 subb    A, R7
B0:7DA5                 jc      B0_7DA9
B0:7DA7                 mov     A, R6
B0:7DA8                 movx    @DPTR, A
B0:7DA9
B0:7DA9 B0_7DA9:                                ; CODE XREF: B0_7BFE+12Dj
B0:7DA9                                         ; B0_7BFE+1A7j
B0:7DA9                 mov     DPTR, #XRAM_FDF0
B0:7DAC                 movx    A, @DPTR
B0:7DAD                 mov     DPTR, #XRAM_FDF4
B0:7DB0                 movx    @DPTR, A
B0:7DB1                 ljmp    B0_7CE3
B0:7DB4 ; ---------------------------------------------------------------------------

O problema é: esses trechos tem algumas semelhanças, mas não apresentam os pontos que deveriam ser trocados facilmente como descrito no documento. Meus limitadíssimos conhecimentos de Assembly 8052 estão me impedindo de avançar na tentativa de fazer patches nesses trechos, que sejam equivalentes ao descrito no documento Patching...A to Z. Aguardo a ajuda dos Mestres aqui do Forum. Enquanto isso vou tentando aprender um pouco mais sobre o assunto. Obrigado!  :)



« Última modificação: Setembro 04, 2008, 01:30:42 am por zeurt »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware do LG DV256k
« Responder #54 Online: Setembro 04, 2008, 01:53:53 am »
Pode postar de novo os mesmos trechos, mas com os opcodes?

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #55 Online: Setembro 04, 2008, 02:23:46 am »
Não estou conseguindo configurar o IDA pro para exibir os opcodes junto com as instruções.  :dashhead1:

Não sei se assim ajuda muito, mas estou enviando:

Trecho de 7B82 até 7BAB:
90 FD F1 E0 FF 90 FD F0 E0 FE C3 9F 50 05 90 FD F1 EE F0 90 FD F2 E0 FF EE D3 9F 40 02 EE F0 90 FD F0 E0 90 FD F4 F0 02 7A DB

Trecho de 7D8A até 7DB3:
90 FD F1 E0 FF 90 FD F0 E0 FE C3 9F 50 05 90 FD F1 EE F0 90 FD F2 E0 FF EE D3 9F 40 02 EE F0 90 FD F0 E0 90 FD F4 F0 02 7C E3

Editado: jmaraujo, só agora eu vi que voce enviou o link explicando como exibir os opcodes  :dashhead1:
Amanhã (quer dizer hoje, mais tarde) enviarei finalmente os trechos com os opcodes...
« Última modificação: Setembro 04, 2008, 03:13:05 am por zeurt »

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #56 Online: Setembro 04, 2008, 07:26:20 pm »
Pode postar de novo os mesmos trechos, mas com os opcodes?

Aqui estão os 2 trechos com os opcodes:

B0:7B82             B0_7B82:                                ; CODE XREF: B0_79F6+166j
B0:7B82                                                     ; B0_79F6+172j
B0:7B82 90 FD F1                    mov     DPTR, #XRAM_FDF1
B0:7B85 E0                          movx    A, @DPTR
B0:7B86 FF                          mov     R7, A
B0:7B87 90 FD F0                    mov     DPTR, #XRAM_FDF0
B0:7B8A E0                          movx    A, @DPTR
B0:7B8B FE                          mov     R6, A
B0:7B8C C3                          clr     C
B0:7B8D 9F                          subb    A, R7
B0:7B8E 50 05                       jnc     B0_7B95
B0:7B90 90 FD F1                    mov     DPTR, #XRAM_FDF1
B0:7B93 EE                          mov     A, R6
B0:7B94 F0                          movx    @DPTR, A
B0:7B95
B0:7B95             B0_7B95:                                ; CODE XREF: B0_79F6+198j
B0:7B95 90 FD F2                    mov     DPTR, #XRAM_FDF2
B0:7B98 E0                          movx    A, @DPTR
B0:7B99 FF                          mov     R7, A
B0:7B9A EE                          mov     A, R6
B0:7B9B D3                          setb    C
B0:7B9C 9F                          subb    A, R7
B0:7B9D 40 02                       jc      B0_7BA1
B0:7B9F EE                          mov     A, R6
B0:7BA0 F0                          movx    @DPTR, A
B0:7BA1
B0:7BA1             B0_7BA1:                                ; CODE XREF: B0_79F6+12Dj
B0:7BA1                                                     ; B0_79F6+1A7j
B0:7BA1 90 FD F0                    mov     DPTR, #XRAM_FDF0
B0:7BA4 E0                          movx    A, @DPTR
B0:7BA5 90 FD F4                    mov     DPTR, #XRAM_FDF4
B0:7BA8 F0                          movx    @DPTR, A
B0:7BA9 02 7A DB                    ljmp    B0_7ADB


B0:7D8A             ; ---------------------------------------------------------------------------
B0:7D8A
B0:7D8A             B0_7D8A:                                ; CODE XREF: B0_7BFE+166j
B0:7D8A                                                     ; B0_7BFE+172j
B0:7D8A 90 FD F1                    mov     DPTR, #XRAM_FDF1
B0:7D8D E0                          movx    A, @DPTR
B0:7D8E FF                          mov     R7, A
B0:7D8F 90 FD F0                    mov     DPTR, #XRAM_FDF0
B0:7D92 E0                          movx    A, @DPTR
B0:7D93 FE                          mov     R6, A
B0:7D94 C3                          clr     C
B0:7D95 9F                          subb    A, R7
B0:7D96 50 05                       jnc     B0_7D9D
B0:7D98 90 FD F1                    mov     DPTR, #XRAM_FDF1
B0:7D9B EE                          mov     A, R6
B0:7D9C F0                          movx    @DPTR, A
B0:7D9D
B0:7D9D             B0_7D9D:                                ; CODE XREF: B0_7BFE+198j
B0:7D9D 90 FD F2                    mov     DPTR, #XRAM_FDF2
B0:7DA0 E0                          movx    A, @DPTR
B0:7DA1 FF                          mov     R7, A
B0:7DA2 EE                          mov     A, R6
B0:7DA3 D3                          setb    C
B0:7DA4 9F                          subb    A, R7
B0:7DA5 40 02                       jc      B0_7DA9
B0:7DA7 EE                          mov     A, R6
B0:7DA8 F0                          movx    @DPTR, A
B0:7DA9
B0:7DA9             B0_7DA9:                                ; CODE XREF: B0_7BFE+12Dj
B0:7DA9                                                     ; B0_7BFE+1A7j
B0:7DA9 90 FD F0                    mov     DPTR, #XRAM_FDF0
B0:7DAC E0                          movx    A, @DPTR
B0:7DAD 90 FD F4                    mov     DPTR, #XRAM_FDF4
B0:7DB0 F0                          movx    @DPTR, A
B0:7DB1 02 7C E3                    ljmp    B0_7CE3

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware do LG DV256k
« Responder #57 Online: Setembro 04, 2008, 10:43:39 pm »
Exquisito... No meu firmware essa rotina corresponde ao servo (fgAinAdj)...

Você trocou o filtro no ARM?

ROM:0000DCF4             Is_R0_Between_0x20_and_0x7E
ROM:0000DCF4 7E 22                       MOV     R2, #0x7E
ROM:0000DCF6 20 21                       MOV     R1, #20
ROM:0000DCF8 F4 E7                       B       Is_R0_Between_R1_and_R2


R0 é filtrado se for menor que 20 ou maior que 7E.


(todos os caracteres com fundo branco são filtrados)

Para "remover" o filtro procure por "7E 22 20 21", e troque 7E->FF e 20->00.

ROM:0000DCF4             Is_R0_Between_0x20_and_0x7E
ROM:0000DCF4 FF 22                       MOV     R2, #0xFF
ROM:0000DCF6 00 21                       MOV     R1, #0
ROM:0000DCF8 F4 E7                       B       Is_R0_Between_R1_and_R2

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #58 Online: Setembro 04, 2008, 11:16:00 pm »
Eu não sabia desse filtro...
Encontrei essa sequencia 7 vezes no ARM code. Em 6 delas existe alguma instrução entre MOV R1,#0x20 e BL...
Apenas uma é bem semelhante a que você descreveu:

ROM:000117BA 07 1C                       ADDS    R7, R0, #0
ROM:000117BC 7E 22                       MOVS    R2, #0x7E ; '~'
ROM:000117BE 20 21                       MOVS    R1, #0x20 ; ' '
ROM:000117C0 FE F7 81 FB                 BL      sub_FEC6

Será que é essa mesmo? Pode haver mais de uma?

Offline zeurt

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 333
  • Aprovação: +47/-0
    • Ver Perfil
Re: Firmware do LG DV256k
« Responder #59 Online: Setembro 05, 2008, 12:02:40 am »
Substitui 7E e 20 por FF 00 na sequencia acima e não funcionou. Continua exibindo apenas "_" nos lugar dos carcteres acentuados. Estou pensando em fazer a substituição nas outras 6 sequências...

FORUM.RYAN.COM.BR

Re: Firmware do LG DV256k
« Responder #59 Online: Setembro 05, 2008, 12:02:40 am »