Autor Tópico: Firmware MT13x9: Log de Descobertas  (Lida 272631 vezes)

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

Offline eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #70 Online: Julho 28, 2007, 11:56:04 am »

O documento das TAG MP3 é bem pratico, tem apenas duas paginas,

http://www.4shared.com/file/20785704/b56dcdf/Rout_-_MP3_TAGS.html

Tem certeza de que foi esse o documento que você usou para mover as tags? Tudo o que eu consegui obter dele (não entendo C ainda) foram as pistas necessárias para encontrar a rotina MP3_tagDisplay em qualquer firmware.

Mesmo assim, ajudou bastante!

Editado: Esse é o mesmo documento Info - MP3 tags.rtfescrito por lisatv_ e disponível no MT13x9, mas que eu não havia lido ainda.



Como eu disse no post anterior ao jmaraujo, estou usando ele tambem pra implementar MP3 TAG ao Proview 858, mas no estou encontrando algumas rotinas, se nao me engano este documento estar incompleto.

PS. Ryan existe alguma maneira de dar autoload nas legendas no 5965 sem dar pane nos menu DivX Ultra? Eu usei um documento presente no grupo do yahoo e a legenda até autocarrega mas em compensação dar pane nos filmes como menu DivX Ultra, deste jeito nao acho interessante coloca a função de autoload nas legendas, pois eu tenho muito filme com menu DivX Ultra.
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #71 Online: Julho 28, 2007, 12:10:43 pm »

PS. Ryan existe alguma maneira de dar autoload nas legendas no 5965 sem dar pane nos menu DivX Ultra? Eu usei um documento presente no grupo do yahoo e a legenda até autocarrega mas em compensação dar pane nos filmes como menu DivX Ultra, deste jeito nao acho interessante coloca a função de autoload nas legendas, pois eu tenho muito filme com menu DivX Ultra.

Eu nunca tentei fazer o autoload, mas eu dei uma olhada por alto no documento "Smart loading of text subtitles in DMF RISC’s" do HEJ e não deveria haver qualquer efeito colateral.

Outra hora eu darei uma olhada nisso. Neste momento eu estou estudando outra coisa.
http://jefferson-ryan.blogspot.com
http://ryan.com.br

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

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #71 Online: Julho 28, 2007, 12:10:43 pm »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #72 Online: Julho 28, 2007, 03:36:39 pm »
Eneris:
No grupo MT13x9 do Yahoo! tem um velho post meu (Jan 13, 2007) onde está explicado como eu fiz o "autoload" de legendas (é preciso ser usuario de Y! para acessar o grupo):

http://tech.groups.yahoo.com/group/mt13x9/message/8340

(Aclaração: Naquele momento eu não notei que deixei um par de comentarios em espanhol... por tanto "botón" = tecla)

Os endereços no meu post são do DVP5100. Voçê pode pegar o firmware jmaraujo 1.1 e o original 0E.0A (do fórum do DVP5100, ou do site do Ryan) para comparar. Também é preciso trocar o "12" (avi) nos ArmCodes, para "9" (mpeg).

Um abraço.
« Última modificação: Julho 28, 2007, 03:40:10 pm por jmaraujo »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #73 Online: Julho 28, 2007, 03:57:12 pm »
Primeiro gostaría de parabenizar o Ryan pelas descobertas...  :clapping:

Se voçês precisarem fazer espaço para botar os tags mp3 na parte de abaixo da tela, é possivel apertar a parte dos nomes de arquivo no filebrowser, mexendo nas coordenadas.

Primeiro é preciso achar a função "DIR_Disp_Filelist":

ROM:593C             DIR_Disp_Filelist:
ROM:593C 90 FB 6C              mov   DPTR, #0xFB6C
ROM:593F EF                    mov   A, R7
ROM:5940 F0                    movx  @DPTR, A
ROM:5941 D2 74                 setb  RAM_2E.4
ROM:5943 E0                    movx  A, @DPTR
ROM:5944 75 F0 10              mov   B, #0x10                ; B-Register
ROM:5947 A4                    mul   AB
ROM:5948 24 E0                 add   A, #0xE0 ; 'Ó'
ROM:594A FF                    mov   R7, A
ROM:594B E5 F0                 mov   A, B                    ; B-Register
ROM:594D 34 08                 addc  A, #8
... (cont)


Seguindo a rotina "DIR_Disp_Filelist", mais abaixo há o seguinte código:

ROM:5A1A             ROM_5A1A:
ROM:5A1A 90 FB 6C              mov   DPTR, #0xFB6C
ROM:5A1D E0                    movx  A, @DPTR
ROM:5A1E FF                    mov   R7, A
ROM:5A1F 75 F0 08              mov   B, #8                   ; B-Register
ROM:5A22 A4                    mul   AB
ROM:5A23 24 B3                 add   A, #0xB3 ; '¦'          ; Pointer a tabla de coordenadas
ROM:5A25 F5 82                 mov   DPL, A                  ; Data Pointer, Low Byte
ROM:5A27 E4                    clr   A
ROM:5A28 34 22                 addc  A, #0x22 ; '"'          ; Pointer a tabla de coordenadas
ROM:5A2A F5 83                 mov   DPH, A                  ; Data Pointer, High Byte
ROM:5A2C E4                    clr   A
... (cont)


Ahí está o pointer para a tabela de coordenadas do filebrowser. No caso do DVP5100: 0x22B3

Tabela de coordenadas do filebrowser:

ROM:22B3             DIR_CoordTable
ROM:22B3 00 1E       Archivo_1:.word 0x1E                    ; X1 = 30
ROM:22B5 00 5E                 .word 0x5E                    ; Y1 = 94
ROM:22B7 02 4A                 .word 0x24A                   ; X2 = 586
ROM:22B9 00 7C                 .word 0x7C                    ; Y2 = 124
ROM:22BB 00 1E       Archivo_2:.word 0x1E                    ; X1 = 30
ROM:22BD 00 7E                 .word 0x7E                    ; Y1 = 126
ROM:22BF 02 4A                 .word 0x24A                   ; X2 = 586
ROM:22C1 00 9C                 .word 0x9C                    ; Y2 = 156
ROM:22C3 00 1E       Archivo_3:.word 0x1E                    ; X1 = 30
ROM:22C5 00 9E                 .word 0x9E                    ; Y1 = 158
ROM:22C7 02 4A                 .word 0x24A                   ; X2 = 586
ROM:22C9 00 BC                 .word 0xBC                    ; Y2 = 188
ROM:22CB 00 1E       Archivo_4:.word 0x1E                    ; X1 = 30
ROM:22CD 00 BE                 .word 0xBE                    ; Y1 = 190
ROM:22CF 02 4A                 .word 0x24A                   ; X2 = 586
ROM:22D1 00 DC                 .word 0xDC                    ; Y2 = 220



X1-Y1 é a coordenada do canto superior esquerdo. X2-Y2 é a coordenada do canto inferior direito. Ajustando os valores de Y1 e Y2 é possivel apertar um pouco a visualização dos arquivos no filebrowser.

Un abraço.
« Última modificação: Julho 28, 2007, 04:22:03 pm por jmaraujo »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #74 Online: Julho 28, 2007, 05:23:43 pm »
Eu não tentei isso ainda, mas acho que não dá para ganhar muita coisa sem ter que mudar os ícones.

Se você ignorar os ícones ou conseguir ícones menores, aí já dá para ganhar bastante espaço.
http://jefferson-ryan.blogspot.com
http://ryan.com.br

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

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #75 Online: Julho 28, 2007, 05:31:29 pm »
Não tinha pensado em isso...

Em teoría sería possivel apertar um pixel por linha, assim como levantar todas as quatro linhas em conjunto mais perto da seta (sem ter que mexer na janela). Isso liberaría um bom espaço na parte de baixo.

O problema é que ainda não achei a parte onde mover as setas. Uma boa alternativa sería acomodar as setas na parte direita da tela (como se fosse parte da barra de rolagem)

« Última modificação: Julho 28, 2007, 05:33:59 pm por jmaraujo »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #76 Online: Julho 29, 2007, 12:53:57 pm »

O problema é que ainda não achei a parte onde mover as setas. Uma boa alternativa sería acomodar as setas na parte direita

da tela (como se fosse parte da barra de rolagem)

É mais fácil do que parece  :)

Philips DVP5960/37
Philips DVP5965K/55
Philips DVP5965/93
Philips DVP5980/12
Philips DVP3040/55
Philips DVP5100


  • Como localizar as rotinas que exibem as setas no browser
  • Como exibir as setas em outro lugar

Isto foi testado em um DVP5960/37 e as rotinas exibidas tem endereços desse aparelho, mas eu chequei os firmwares de todos os outros aparelhos indicados acima e as rotinas são exatamente iguais, em lugares diferentes, com janelas e números de ícones diferentes. Mas as idéias expostas aqui servem facilmente para todos eles.

Encontrar as rotinas é muito fácil, depois que você sabe como as setas são exibidas. Eu vou começar mostrando o jeito mais difícil, que foi o que usei por começar completamente no escuro.

Eu já sabia que as setas eram apenas ícones sendo exibidos (não são desenhadas). Então eu abri o firmware no mtkremaker e procurei pelos números dos respectivos ícones.

  • Seta superior: 0x26
  • Seta inferior: 0x25

E daí eu parti pro chute: No IDA, pedi para encontrar todas as ocorrências do byte 0x26 no firmware.

A princípio, parece coisa de doido. Eu sabia que teria uma quantidade enorme de respostas, mas eu esperava poder aplicar algum método extra para eliminar as possibilidades, e realmente pude.

Eu já sabia de antemão que as rotinas do browser no DVP5960 estão no banco 1, então eu supus que as rotinas de exibição das setas teriam que estar no mesmo banco. Isso já eliminou um monte de possibilidades, mas ainda assim sobrou muita coisa:



Das 305 ocorrências apenas 40 estavam no banco 1 (destacado em verde).

Eu estava disposto a testar todas as 40, mas não era preciso. Na maioria delas, "26" era parte de uma instrução mais complexa. Em apenas 4 pontos o byte significava mesmo "26" (destacado em vermelho) e destes apenas 3 estavam sendo usado em instruções MOV

Então em todas as três ocorrências com instruções MOV mudei "26" por "25" e, tcham! a seta inferior passou a aparecer também no lugar da superior!

Em mais cinco minutos eu já sabia quais eram os trechos corretos a mudar.

Este bloco é o responsável pela exibição das setas enquanto você se move pelo browser:

B1:9E5C
B1:9E5C             Exibe_Setas:                  ; CODE XREF: B1_9E44+13j
B1:9E5C 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:9E5F E4          clr     A
B1:9E60 F0          movx    @DPTR, A
B1:9E61 A3          inc     DPTR
B1:9E62 74 B4       mov     A, #0xB4 ; '¦'
B1:9E64 F0          movx    @DPTR, A
B1:9E65 90 FC 79    mov     DPTR, #XRAM_FC79
     ; Coordenada vertical (HI)
B1:9E68 E4          clr     A
B1:9E69 F0          movx    @DPTR, A
B1:9E6A A3          inc     DPTR
B1:9E6B 74 E8       mov     A, #0xE8 ; 'Þ'
B1:9E6D F0          movx    @DPTR, A
B1:9E6E 7D 25       mov     R5, #0x25 ; '%'       ; Seta inferior (ver no mtkremaker)
B1:9E70 7F 0F       mov     R7, #0xF
B1:9E72 12 1E BA    lcall   B1_BS_235_B3_2D12
B1:9E75 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:9E78 E4          clr     A
B1:9E79 F0          movx    @DPTR, A
B1:9E7A A3          inc     DPTR
B1:9E7B 74 B4       mov     A, #0xB4 ; '¦'
B1:9E7D F0          movx    @DPTR, A
B1:9E7E 90 FC 79    mov     DPTR, #XRAM_FC79 
    ; Coordenada vertical (HI)
B1:9E81 E4          clr     A
B1:9E82 F0          movx    @DPTR, A
B1:9E83 A3          inc     DPTR
B1:9E84 74 36       mov     A, #0x36 ; '6'
B1:9E86 F0          movx    @DPTR, A
B1:9E87 7D 26       mov     R5, #0x26 ; '&'       ; Seta superior (ver no mtkremaker)
B1:9E89 7F 0F       mov     R7, #0xF              ; janela
B1:9E8B 02 1E BA    ljmp    B1_BS_235_B3_2D12


E este bloco é responsável pela exibição inicial das setas


B1:9EE1
B1:9EE1             Config_SetaInferior:          ; CODE XREF: B1_9E44+9j
B1:9EE1 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:9EE4 E4          clr     A
B1:9EE5 F0          movx    @DPTR, A
B1:9EE6 A3          inc     DPTR                  ; XRAM_FC77
B1:9EE7 74 B4       mov     A, #0xB4 ; '¦'
B1:9EE9 F0          movx    @DPTR, A
B1:9EEA 90 FC 79    mov     DPTR, #XRAM_FC79
     ; Coordenada vertical (HI)
B1:9EED E4          clr     A
B1:9EEE F0          movx    @DPTR, A
B1:9EEF A3          inc     DPTR
B1:9EF0 74 36       mov     A, #0x36 ; '6'
B1:9EF2 F0          movx    @DPTR, A
B1:9EF3 7D 26       mov     R5, #0x26 ; '&'       ; Seta inferior
B1:9EF5 7F 0F       mov     R7, #0xF
B1:9EF7 02 1E BA    ljmp    B1_BS_235_B3_2D12
B1:9EFA             ; ---------------------------------------------------------------------------
B1:9EFA
B1:9EFA             Config_SetaSuperior:          ; CODE XREF: B1_9E44+Fj
B1:9EFA 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:9EFD E4          clr     A
B1:9EFE F0          movx    @DPTR, A
B1:9EFF A3          inc     DPTR
B1:9F00 74 B4       mov     A, #0xB4 ; '¦'
B1:9F02 F0          movx    @DPTR, A
B1:9F03 90 FC 79    mov     DPTR, #XRAM_FC79
     ; Coordenada vertical (HI)
B1:9F06 E4          clr     A
B1:9F07 F0          movx    @DPTR, A
B1:9F08 A3          inc     DPTR
B1:9F09 74 E8       mov     A, #0xE8 ; 'Þ'
B1:9F0B F0          movx    @DPTR, A
B1:9F0C 7D 25       mov     R5, #0x25 ; '%'       ; Seta superior
B1:9F0E 7F 0F       mov     R7, #0xF
B1:9F10 12 1E BA    lcall   B1_BS_235_B3_2D12
B1:9F13
B1:9F13             B1_9F13:                      ; CODE XREF: B1_9E44+15j
B1:9F13 22          ret
B1:9F13             ; End of function B1_9E44


Para poder deslocar as setas para a direita sem precisar escrever novas rotinas eu usei um pequeno truque.

Basta mudar em quatro lugares (os destacados em vermelho):

E4          clr     A
F0          movx    @DPTR, A
A3          inc     DPTR
74 B4       mov     A, #0xB4 ; '¦'
F0          movx    @DPTR, A
90 FC 79    mov     DPTR, #XRAM_FC79


por
74 02       mov     A, #0x2
F0          movx    @DPTR, A
A3          inc     DPTR
74 10       mov     A, #0x10
F0          movx    @DPTR, A
A3          inc     DPTR 
A3          inc     DPTR


Isto ocupa a mesma quantidade de bytes. O truque só é possível porque o próximo endereço XRAM carregado na rotina fica a apenas dois endereços de distância, daí fica mais "econômico" carregá-lo com duas instruções INC DPTR (dois bytes) do que uma instrução mov DPTR, # (três bytes).

O resultado foi esse:



Problemas pendentes


1) Ao selecionar um MP3 qualquer, a seta inferior está sumindo:



Resolvido! Tinha sido um erro meu ao inserir uma das modificações.

2) Ao mover a seleção para um arquivo diferente do que está tocando, uma faixa das tags é apagada e um grande retângulo à direita do browser também, o que apaga inclusive as duas setas:



O retângulo só é cortado no momento que você se move do arquivo que está tocando para outro ou quando o aparelho salta automaticamente para outra música. Esse problema do retângulo deve ser conhecido e simples de resolver e não tem nada a ver com a movimentação das tags e das setas. Eu estou trabalhando em um firmware "quase" original, daí os problemas.

Resolvido (o retângulo) ! Procure por isso no firmware:

B1:C77D 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:C780 74 01       mov     A, #1
B1:C782 F0          movx    @DPTR, A
B1:C783 A3          inc     DPTR
B1:C784 74 6F       mov     A, #0x6F ; 'o'
B1:C786 F0          movx    @DPTR, A
B1:C787 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:C78A E4          clr     A
B1:C78B F0          movx    @DPTR, A
B1:C78C A3          inc     DPTR
B1:C78D 74 37       mov     A, #0x37 ; '7'   
B1:C78F F0          movx    @DPTR, A
B1:C790 7B B4       mov     R3, #0xB4 ; '¦'       ; 0xB4: largura
B1:C792 7A 00       mov     R2, #0
B1:C794 7D DC       mov     R5, #0xDC ; '_'       ; 0xDC: altura
B1:C796 7C 00       mov     R4, #0
B1:C798 7F 0F       mov     R7, #0xF
B1:C79A 12 1E 54    lcall   ClearRect


Para eliminar o apagamento, mude nas linhas em azul:

B4 => 00
DC => 00
 
Para fazer com que o apagamento seja feito em outras coordenadas (no lugar onde estão as tags, por exemplo), mude as coordenadas nas linhas em vermelho.


3) Ao paginar, o browser é refeito, mas outro pedaço das tags é cortado:


 
É importante notar que isso só é um problema porque eu estou tentando mudar o comportamento normal do aparelho. O normal é as tags serem completamente apagadas quando não é o arquivo que está tocando que é selecionado. Eu estou tentando manter na tela as tags da música em execução, daí o problema.

Se você ficar satisfeito com o comportamento normal, é só dar um jeito de apagar todas as tags ao mover a barra de seleção. Existe uma rotina que faz isso.


Como localizar as rotinas no seu firmware

Eu expliquei o modo difícil, que acabou se tornando um modo bem fácil, mas que requer intuição humana para funcionar. comparando todas as rotinas que olhei, encontrei um modo mais "técnico", que pode ser usado em um patch automático. Procure por:

7D xx 7F yy

Onde xx é o número do ícone e yy é o número da janela onde o browser é desenhado. Em todos os firmwares testados, isso leva direto e apenas às rotinas certas.

Se você não souber ainda o número da janela, procure por

7D xx 7F

Isso vai retornar mais resultados, mas rapidamente você descartará os errados, porque ocorrem em outros bancos.
« Última modificação: Agosto 02, 2007, 10:26:18 am por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

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

Offline eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #77 Online: Julho 29, 2007, 01:28:20 pm »
Muito bom Ryan, Parabens! :clapping:

So nao captei a parte que troca 4 bytes.

EDITADO: Ryan, ao inves de mover as setas nao teria como apagar elas, e deixar como no Proview que as setas estao na imagem do background? O ruim é que nao iriamos saber se ainda tem mais arquivos abaixo ou acima, no Proview existe a barra de rolagem.
« Última modificação: Julho 29, 2007, 01:32:07 pm por eneris »
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #78 Online: Julho 29, 2007, 01:41:40 pm »
Não é quatro bytes. É quatro lugares :)

Se ainda não estiver claro, me avise.

E para apagar as setas, basta mandar ver NOPs em todas as rotinas. Mas eu não acho que isso seja uma boa idéia
http://jefferson-ryan.blogspot.com
http://ryan.com.br

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

Offline eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #79 Online: Julho 29, 2007, 01:51:53 pm »
Agora captei.  :dashhead1:

Obrigado!
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #79 Online: Julho 29, 2007, 01:51:53 pm »