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

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

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #240 Online: Setembro 08, 2007, 05:18:28 pm »
Una duda... el codigo perteneciente a las funiones de divx ultra.... es parte del codigo 8032 o del codigo ARM?

Pelo que eu sei, quase tudo está no ARM.
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 Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Responder #241 Online: Setembro 09, 2007, 11:10:25 pm »
A tabela de tipos de mídia no ARM

Entender o conteúdo deste post será importante para entender meus próximos posts.

Todo firmware Mediatek 13x9 tem uma tabela no ARM CODE que define quais são as extensões de mídia conhecidas pelo aparelho e, em parte, como tratar cada uma delas.

Fatos:

  • Se uma extensão não estiver na tabela, nem vai aparecer no browser;
  • Mesmo que uma extensão esteja na tabela, não significa que o arquivo vai aparecer no browser ou se aparecer, que é suportado de alguma forma.
  • É possível fazer com que um arquivo válido, mas com extensão desconhecida, seja reconhecido e executado pelo aparelho, editando essa tabela.

A estrutura de cada item na tabela é a seguinte:

  • "Tipo" de arquivo - um byte - Define como o arquivo vai ser tratado;
  • Tamanho da extensão - um byte
  • Extensão - cinco bytes - A extensão em ASCII


Para encontrar a tabela no firmware, salve o ARM CODES descomprimido e faça uma busca pela string "MP3".

A tabela do Proview DVP-858.
Estou usando o DVP-858 como exemplo por ser um dos aparelhos com suporte mais abrangente.

A extensão textual à direita foi adicionada por mim (ASCII já decodificado) para identificar cada item.

00 03 41 43 33 00 00 AC3
01 03 4D 50 33 00 00 MP3
02 03 4D 50 32 00 00 MP2
03 03 4D 50 31 00 00 MP1
04 03 57 41 56 00 00 WAV
05 03 4A 50 47 00 00 JPG
06 03 4D 4C 50 00 00 MLP
07 03 57 4D 41 00 00 WMA
08 03 41 53 46 00 00 ASF
09 03 4D 50 47 00 00 MPG
0A 03 44 41 54 00 00 DAT
0B 03 56 4F 42 00 00 VOB
0D 03 44 53 44 00 00 DSD
09 03 4D 50 45 00 00 MPE
09 03 4D 31 56 00 00 M1V
09 03 4D 32 56 00 00 M2V
05 03 4A 50 45 00 00 JPE
0C 03 41 41 43 00 00 AAC
09 04 4D 50 45 47 00 MPEG
05 04 4A 50 45 47 00 JPEG
0E 03 50 4D 46 00 00 PMF
0F 03 43 44 41 00 00 CDA
12 03 41 56 49 00 00 AVI
12 03 56 49 44 00 00 VID
12 04 44 49 56 58 00 DIVX
14 03 4D 50 34 00 00 MP4
14 03 4D 34 41 00 00 M4A
15 03 33 47 50 00 00 3GP
16 03 4D 34 56 00 00 M4V
17 03 44 53 54 00 00 DST
18 03 4F 47 47 00 00 OGG
18 03 4F 47 4D 00 00 OGM
19 02 52 41 00 00 00 RA
19 02 52 4D 00 00 00 RM
19 03 52 41 4D 00 00 RAM
19 03 52 4D 4D 00 00 RMM
19 04 52 4D 56 42 00 RMVB

A tabela do Punktal PK-246 é idêntica, mas sem o registro para a extensão .M4A

A mesma tabela, ordenada por código:
Os asteriscos sinalizam extensões que eu já testei e aparecem

00 03 41 43 33 00 00 AC3 - nem aparece no browser
01 03 4D 50 33 00 00 *MP3
02 03 4D 50 32 00 00 MP2
03 03 4D 50 31 00 00 MP1
04 03 57 41 56 00 00 WAV
05 03 4A 50 47 00 00 *JPG
05 04 4A 50 45 47 00 JPEG
05 03 4A 50 45 00 00 JPE
06 03 4D 4C 50 00 00 MLP
07 03 57 4D 41 00 00 *WMA
08 03 41 53 46 00 00 ASF
09 03 4D 50 47 00 00 *MPG
09 03 4D 50 45 00 00 MPE
09 04 4D 50 45 47 00 MPEG
09 03 4D 31 56 00 00 M1V
09 03 4D 32 56 00 00 M2V
0A 03 44 41 54 00 00 DAT
0B 03 56 4F 42 00 00 VOB
0C 03 41 41 43 00 00 AAC
0D 03 44 53 44 00 00 DSD
0E 03 50 4D 46 00 00 PMF
0F 03 43 44 41 00 00 CDA
12 03 41 56 49 00 00 *AVI
12 03 56 49 44 00 00 VID
12 04 44 49 56 58 00 *DIVX
14 03 4D 50 34 00 00 *MP4
14 03 4D 34 41 00 00 *M4A
15 03 33 47 50 00 00 *3GP
16 03 4D 34 56 00 00 M4V
17 03 44 53 54 00 00 DST
18 03 4F 47 47 00 00 *OGG
18 03 4F 47 4D 00 00 *OGM
19 02 52 41 00 00 00 RA - nem aparece no browser
19 02 52 4D 00 00 00 RM - nem aparece no browser
19 03 52 41 4D 00 00 RAM - nem aparece no browser
19 03 52 4D 4D 00 00 RMM - nem aparece no browser
19 04 52 4D 56 42 00 RMVB - nem aparece no browser

Manipulando a tabela do Proview DVP-858 já verifiquei o seguinte:

  • É possível fazer com que arquivos .aac sejam executados. Perceba que curiosamente consta um item para a extensão na tabela, mas nós já sabemos que arquivos .aac nem aparecem no browser (você precisa renomear para .m4a). Basta trocar o "0C" por "14" no tipo do item para corrigir isso.
  • Podemos adicionar até cinco extensões novas facilmente, apenas editando os cinco últimos itens;
  • Infelizmente, não dá para fazer com que AAC seja manipulado como se fosse MP3, dando a ele o código "01". Deve haver uma outra verificação mais adiante que rejeita o arquivo e volta para o browser;
  • Não adianta atribuir os códigos "14" ou "12" para AC3. O arquivo aparece no browser, mas é rejeitado.
  • Se você quiser que as legendas apareçam no browser, basta usar por exemplo os itens inúteis de RA a RMVB e atribuir um "tipo" que tenha visibilidade. É claro que selecionar as legendas não vai servir para nada e poderá até travar o aparelho.
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 MT13x9: Log de Descobertas
« Responder #241 Online: Setembro 09, 2007, 11:10:25 pm »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Responder #242 Online: Setembro 09, 2007, 11:33:38 pm »
DIR_SET_ICON (ou DIR_SetIcon)

Esta rotina determina que ícone vai ser exibido no browser para cada tipo de arquivo.

No documento "Info - File Browser.rtf", Mabreaker cita de passagem essa rotina, sem entrar em detalhes. Tão de passagem que eu passei várias vezes pelo parágrafo sem nunca entender do que ele estava falando.

Neste post eu explico em detalhes como a rotina funciona.

Para encontrar a rotina no seu firmware, procure por:
CE EF CE EE F4


Funciona com:

  • Philips DVP5960
  • Philips DVP5965
  • Philips DVP5980
  • Philips DVP5100
  • Philips DVP3040
  • Philips DVP5140
  • JTEC MTK 7000
  • Proview DVP-858
  • Punktal PK-DV246
  • Lenoxx DV-406

Não funciona com:
  • Philips PET725 (use EF F4 60 06  ou 90 ? ? 93 FF 22)
  • LG DK194g
  • Pioneer 575

Você vai encontrar algo assim (Proview DVP-858 20.07):

B1:FBC5             DIR_Set_Icon:                 ; CODE XREF: Dir_Disp_FileList+11Fp
B1:FBC5 CE          xch     A, R6
B1:FBC6 EF          mov     A, R7
B1:FBC7 CE          xch     A, R6
B1:FBC8 EE          mov     A, R6
B1:FBC9 F4          cpl     A
B1:FBCA 60 06       jz      Retorna6              ; Se o tipo for 0xFF, retorna 6
B1:FBCC EE          mov     A, R6
B1:FBCD D3          setb    C
B1:FBCE 94 1A       subb    A, #0x1A              ; Só manipula tipos de 1A para baixo
B1:FBD0 40 03       jc      IconLookup
B1:FBD2
B1:FBD2             Retorna6:                     ; CODE XREF: DIR_Set_Icon+5j
B1:FBD2 7F 06       mov     R7, #6                ; Qualquer tipo acima de 1A exibirá o ícone 6 (unknown)
B1:FBD4 22          ret
B1:FBD5             ; ---------------------------------------------------------------------------
B1:FBD5
B1:FBD5             IconLookup:                   ; CODE XREF: DIR_Set_Icon+Bj
B1:FBD5 EE          mov     A, R6
B1:FBD6 90 33 B5    mov     DPTR, #B1_33B5
B1:FBD9 93          movc    A, @A+DPTR            ; B1:33B5 + tipo = ícone a usar
B1:FBDA FF          mov     R7, A
B1:FBDB 22          ret
B1:FBDB             ; End of function DIR_Set_Icon


Em resumo, a rotina pega o "tipo" atribuído no ARM para cada extensão (veja o meu post anterior) e consulta uma pequena tabela no firmware, que começa no endereço destacado em vermelho, para saber qual o ícone será exibido para aquele tipo.

Veja a tabela:

B1:33B5 06          B1_33B5:.byte    6            ; DATA XREF: DIR_Set_Icon+11o
B1:33B6 04          .byte    4
B1:33B7 0C          .byte  0xC
B1:33B8 0B          .byte  0xB
B1:33B9 06          .byte    6
B1:33BA 05          .byte    5
B1:33BB 06          .byte    6
B1:33BC 0D          .byte  0xD
B1:33BD 0D          .byte  0xD
B1:33BE 0A          .byte  0xA
B1:33BF 0A          .byte  0xA
B1:33C0 0A          .byte  0xA
B1:33C1 06          .byte    6
B1:33C2 06          .byte    6
B1:33C3 06          .byte    6
B1:33C4 06          .byte    6
B1:33C5 07          .byte    7
B1:33C6 06          .byte    6
B1:33C7 2D          .byte 0x2D ; -
B1:33C8 06          .byte    6
B1:33C9 2F          .byte 0x2F ; /
B1:33CA 32          .byte 0x32 ; 2
B1:33CB 06          .byte    6
B1:33CC 06          .byte    6
B1:33CD 31          .byte 0x31 ; 1
B1:33CE 06          .byte    6


Olhando assim não fica nada claro, então eu fiz uma ilustração que ajuda (atenção: alguns ícones parecem idênticos, mas não são):



Notas:

  • Os tipos de arquivo não-exibíveis são filtrados antes de chegar a essa rotina. Se chegassem, exibiriam o ícone "unknown". Eu ainda não sei se a filtragem ocorre no ARM ou no 8032 (pode ser em DIR_FilenameFilter);
  • Os números de ícone indicados podem variar de firmware para firmware, principalmente de 0xE em diante. Olhe no mtkRemaker qual a numeração correta do seu;
  • Mabreaker diz que além deste tipo de rotina existe um que usa um CASE para determinar o ícone. Eu ainda não vi esse tipo (e ele não dá nenhum exemplo), mas é provável que seja o tipo usado por Pioneer e LG;
  • Perceba que eu não coloquei descrição para os tipos 0x10, 0x11 e 0x13 porque eles não estão na tabela do ARM. Sabemos agora que 0x10 é "pasta" por causa de seu ícone, mas 0x11 e 0x13 eu ainda não sei o que são.
  • Manipulando esta tabela você pode dar ícones diferentes a tipos diferentes que estão usando o mesmo ícone, como é o caso de MPG, DAT e VOB. Mas não é possível dar ícones diferentes para arquivos de um mesmo tipo, como é o caso de AVI e DIVX;


DIR_SET_ICON é chamada apenas de um lugar no firmware, em DIR_DISP_FILELIST:

B1:6792 90 FB A0    mov     DPTR, #XRAM_FBA0      ; "Tipo" do arquivo
B1:6795 E0          movx    A, @DPTR
B1:6796 FF          mov     R7, A
B1:6797 12 FB C5    lcall   DIR_Set_Icon
B1:679A CD          xch     A, R5                 ; DIR_SET_ICON devolve o ícone em R7, mas SHOWICON espera
B1:679A                                           ; o ícone em R5, daí uma dança de bytes é necessária :)
B1:679B EF          mov     A, R7
B1:679C CD          xch     A, R5
B1:679D 7F 10       mov     R7, #0x10
B1:679F 12 1E 22    lcall   ShowIconB1


Nota: As instruções "xch" que você vê tanto aqui quanto na rotina DIR_SET_ICON me parecem desnecessárias e poderiam ser eliminadas reescrevendo DIR_SET_ICON, o que pouparia alguns bytes. Mas eu vou deixar para tentar provar essa teoria quando esses bytes livres forem úteis para alguma coisa  :)
« Última modificação: Janeiro 10, 2008, 11:46:26 pm 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 ygor.almeida

  • Novato Prolixo
  • **
  • Mensagens: 73
  • Aprovação: +1/-0
  • My Name is Neo
    • Ver Perfil
    • eXtremeMods
Re: Firmware MT13x9: Log de Descobertas
« Responder #243 Online: Setembro 10, 2007, 12:30:55 am »
Ryan,

Não sei se neste ou talvez em um outro tópico, você saberia / poderia colocar do que se trata as demais extensões que parecem estranhas na sua lista.
Suponho que se estão em um DVD Player que pode reproduzir DVD's e DATA, se tratem todos de arquivos multimídia, mas não fui muito feliz no google em identificar o que são alguns menos conhecidos.

Ex:

.DSD
.DST
.VID
.PMF
.MLP ( Encontrei algo sobre DVD-Audio ) mas o formato tanto para encode quanto decode é restrito. Não tem nada aberto

Att
www.eXtremeMods.com.br
Hardware IT News & OverClock

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Responder #244 Online: Setembro 10, 2007, 01:30:19 am »
Não sei se neste ou talvez em um outro tópico, você saberia / poderia colocar do que se trata as demais extensões que parecem estranhas na sua lista.

Eu não faço a menor idéia do formato dos arquivos que usam essas extensões.
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 evb62

  • Novato
  • *
  • Mensagens: 14
  • Aprovação: +0/-0
    • Ver Perfil
Re: Firmware MT13x9: Log de Descobertas
« Responder #245 Online: Setembro 10, 2007, 12:13:41 pm »
.MLP ( Encontrei algo sobre DVD-Audio ) mas o formato tanto para encode quanto decode é restrito. Não tem nada aberto
Att
Meridian Lossless Packing. Comprime áudio PCM sem perda de qualidade (assim como FLAC, SHN, APE e outros). Suporta áudio estéreo ou multicanal. Existe um programa para codificar e decodificar esse formato.

Eu já usei algumas vezes. Baixei alguns DVDs Áudio decodificados em WAV, transformei em MLP, e "autorei" em DVD-A, com um programa próprio para isso. O DVD-A usa aquele diretório chamado AUDIO_TS dentro do DVD. As músicas e o conteúdo visual ficam em arquivos com extensão "AOB" dentro de AUDIO_TS.

Por que o DVD-A usa MLP? Além da economia de espaço, faça as contas: arquivos PCM com 24 bits, 96 kHz, multiplicados por 6 canais, por exemplo, ultrapassam o bitrate máximo de 9.6 Mbps do DVD. Se esse áudio é comprimido, o bitrate baixa na leitura, e o DVD-A player consegue lê-lo. Em seguida, a descompressão de MLP para PCM é feita no aparelho.

Não é necessário comprimir áudio estéreo de 24 bits, 192 kHz. Esse não ultrapassa o bitrate máximo do DVD.

Offline ygor.almeida

  • Novato Prolixo
  • **
  • Mensagens: 73
  • Aprovação: +1/-0
  • My Name is Neo
    • Ver Perfil
    • eXtremeMods
Re: Firmware MT13x9: Log de Descobertas
« Responder #246 Online: Setembro 10, 2007, 05:12:45 pm »
Interessante :)  :clapping: :yahoo!:
Evb62 - muito obrigado.
www.eXtremeMods.com.br
Hardware IT News & OverClock

Offline fabianr

  • Novato
  • *
  • Mensagens: 9
  • Aprovação: +0/-0
    • Ver Perfil
Re: Firmware: log de descobertas
« Responder #247 Online: Setembro 10, 2007, 11:29:34 pm »
Una duda... el codigo perteneciente a las funiones de divx ultra.... es parte del codigo 8032 o del codigo ARM?

Pelo que eu sei, quase tudo está no ARM.

Hmmm... y se pueden cambiar el codigo ARM del 3040K por el del 5140? De esta forma tendriamos divx ultra en el 3040K pero mantenrdiamos el codigo 8032 que por lo que entiendo de todos los analisis que he visto esta mas analizado y entendido que el del 5140, y sin mencionar que por tus descubrimientos podriamos utilizar 2MB en vez de 1MB...

Saludos,
FabianR

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #248 Online: Setembro 14, 2007, 04:43:28 am »

Hmmm... y se pueden cambiar el codigo ARM del 3040K por el del 5140? De esta forma tendriamos divx ultra en el 3040K pero mantenrdiamos el codigo 8032 que por lo que entiendo de todos los analisis que he visto esta mas analizado y entendido que el del 5140, y sin mencionar que por tus descubrimientos podriamos utilizar 2MB en vez de 1MB...


Eu testei e apresenta o mesmo problema que ocorre ao colocar o RISC do DVP5140 no DVP5100: os menus DivX Ultra aparecem, mas você não consegue selecionar nada.
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 #249 Online: Setembro 14, 2007, 06:46:01 am »

Hmmm... y se pueden cambiar el codigo ARM del 3040K por el del 5140? De esta forma tendriamos divx ultra en el 3040K pero mantenrdiamos el codigo 8032 que por lo que entiendo de todos los analisis que he visto esta mas analizado y entendido que el del 5140, y sin mencionar que por tus descubrimientos podriamos utilizar 2MB en vez de 1MB...


Eu testei e apresenta o mesmo problema que ocorre ao colocar o RISC do DVP5140 no DVP5100: os menus DivX Ultra aparecem, mas você não consegue selecionar nada.
Isso mesmo. É preciso adicionar código no 8032 (veja o firmware jmaraujo 1.2beta1 que postei no fórum: as teclas Ok/Play -11- e Title e Return -22 e 23- foram adicionadas. Falta somente o código das setas).

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #249 Online: Setembro 14, 2007, 06:46:01 am »