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

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

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Responder #320 Online: Fevereiro 10, 2008, 06:19:00 pm »
Sei que parece óbvio, mas você já tentou rastrear o fluxo de execução da tecla Stop?

Acho que agora entendí o que você quis dizer...

Em Remote_General não ha código de execução para "Stop".

Sim há em Remote_DVDPlayback e Remote_DivXPlayback, posso estar errado mas não quis olhar em essas rotinas porque o "press and hold" é feito sempre, e não somente em modo DVD ou ISO.

Agora vou dar uma olhada nas rotinas Remote_03 a Remote_08. (Remote_01 e Remote_02 nunca conseguí achar no meu firmware...)

Seria seguir o fluxo de execução desde a decodificação da tecla Stop até a execução da rotina de tratamento. Fiz um ensaio e encontrei um local bem suspeito de ser o que você está procurando. Pelo fluxo que segui, chega um ponto onde ele decide se vai repassar o código 5 (P&H + 1) ou o código 15 (Stop + 1) para o tratamento. A decisão é tomada baseando-se num valor lido 3 vezes num único endereço (acredito que este valor seja o tempo de pressionamento da tecla).

O que fiz:

1. Fui numa tabela de tratamento de códigos do RC (aquela usada no Auto Load).
2. Peguei o código #14 (Stop) e segui o fluxo.

Depois eu posto o código aqui, caso haja interesse.

Legal, obrigado ronison.

Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 356
  • Aprovação: +28/-0
    • Ver Perfil
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Responder #321 Online: Fevereiro 13, 2008, 12:55:39 pm »
O que você tem que fazer e mudar o '20' por '00', e o '7E' por 'FF', desse jeito ele vai buscar por carateres menores que 00 ou maiores que FF, o que claro, não existem.

Procedimento: Busque no bloco ArmCode completo a seqüencia "7E 22 20 21". [...] Isso é tudo.

Jmaraujo! :)

Eu tinha lido isso que você tinha falado, mas por algum descuido acabei esquecendo. Só depois que você me perguntou se eu tinha tentado isso é que eu tentei.

Mudou alguma coisa, mas não deu muito certo.

Vou te contar tim tim por tim tim o que eu fiz.

1. Abri o firmware (JE+RL v0.32a) no MtkReMaker, cliquei no "+" do RISC, botão direito em "Arm Codes", "Save". Perguntou se eu queria descompactar e eu disse SIM;
2. Abri o arquivo BIN no editor hexadecimal (Xvi32), procurei por "7E 22 20 21" e encontrei. Procurei novamente para ver se tinha mais uma vez e NÃO TINHA;
3. Alterei 7E para FF e 20 para 00. Ficou "FF 22 00 21". Salvei;
4. Voltei ao MtkRemaker, botão direito em "ArmCodes", "Replace" e peguei o arquivo BIN modificado;
5. Salvei o firmware e instalei no player.

Não sei se eu fiz algo de errado, mas pelo que eu entendi era isso.

Fui testar no player. Coloquei um DVD.

O que era pra ser "Ação" ficou assim:


"Invisível" ficou assim:


"Premonições" ficou assim.


Testei também via USB. Criei uma pasta chamada "ÇÔÁÃóã" (lindo nome, não?) no meu pendrive e ela apareceu assim:


Vale lembrar que o firmware está usando a fonte número 10 para exibir os nomes de arquivos e pastas no browser. Talvez seja esse o problema.

P.S.: Não estou conseguindo entrar no forodvp5100.com.ar! O Firefox está me dizendo que "A conexão atingiu o tempo limite".

FORUM.RYAN.COM.BR

Re: Firmware MT13x9: Log de Descobertas
« Responder #321 Online: Fevereiro 13, 2008, 12:55:39 pm »

Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 356
  • Aprovação: +28/-0
    • Ver Perfil
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Responder #322 Online: Fevereiro 13, 2008, 01:14:15 pm »
Mestre Jmaraujo!

Deu certo sim!

Era a fonte o problema. Aquela fonte não tinha acentos. Coloquei uma que eu fiz e deu certo!!!

Lendo um DVD:


Mas lendo um USB não deu muito certo, apesar de estar melhor que antes.
Os nomes das pastas eram para ser: "ÇÔÁÃóã", "Ação" e "Visível" (tudo sem aspas, claro), e ficou assim:


Agora vou tentar colocar contorno nessa fonte (não tem jeito do contorno aparecer, mas se eu não conseguir vou explicar bem o meu problema e pedir ajuda depois) e publicar uma nova versão do firmware.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Responder #323 Online: Fevereiro 13, 2008, 07:23:41 pm »
Que bom que tenha funcionado, Rafa!

1) Com o problema do filtro "não funcionar" em USB, não posso ajudar pois o meu RISC não tem suporte a USB e por mais que eu tente achar as referencias a função do filtro, não vou achar nada porque "não ha nada para achar", he-he!...

2) Na fotografía estou vendo que o problema está no nome das pastas... Em algums firmwares existe um filtro no 8032 também.

Por exemplo, Ronison confirmou que no DVP5965 esse filtro não existe. Também não existe no DVP5100. Mas em players de outras marcas é comúm ver o filtro, e como a v43 do firmware do 5980 é um pouco diferente, quem sabe ela tenha o tal filtro...

Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 356
  • Aprovação: +28/-0
    • Ver Perfil
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Responder #324 Online: Fevereiro 14, 2008, 10:45:20 am »
Em algums firmwares existe um filtro no 8032 também. [...] e como a v43 do firmware do 5980 é um pouco diferente, quem sabe ela tenha o tal filtro...

Jmaraujo,

Com certeza o problema não é o tal filtro no 8032.

Peguei o firmware em que os acentos apareceram no browser lendo disco e substituí o RISC pelo RISC do firmware do DVP5160.

Este firmware é aquele que faz o player perder a saída HDMI, mas dá a capacidade de ler mais caracteres (em torno de 23) via USB.

E para minha surpresa, os caracteres acentuados apareceram perfeitamente via USB, inclusive a pasta "ÇÔÁÃóã".

Conclusão: O problema dos nomes USB deve estar no ARM mesmo.

Muito obrigado pela ajuda, Jmaraujo!

Offline doctorxyz

  • Novato Prolixo
  • **
  • Mensagens: 63
  • Aprovação: +4/-0
    • Ver Perfil
Nomes Longos a Partir da USB (Philips DVP5965K/55)
« Responder #325 Online: Fevereiro 15, 2008, 10:56:13 pm »
Ronison,

Caso sobre um tempo, dê uma olhadinha em

Nomes Longos a Partir da USB (Philips DVP5965K/55) -> http://ryan.com.br/smf/index.php?topic=319.0

Ao que parece, falta pouco!

Saudações,
doctorxyz

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Responder #326 Online: Março 04, 2008, 02:21:01 am »
Entendendo como os textos são armazenados no bloco Languages.

Ontem eu apanhei pela segunda vez com isso, por isso vou deixar a parte confusa documentada aqui. O básico sobre como localizar os textos está explicado no documento !Primeros_pasos_MT1389_v0_3b.rtf de Cachirulo. (evite tradução porca para o inglês de Mabreaker: Info - MT1389 v0.3b English.rtf, porque traduzir "IDA Pro" como "GOING Pro" é dose...), mas o que vou explicar aqui não está lá. Você só entende isso depois de fuçar com o MTK Lang Creator, o MTK Lang Editor e o próprio MTK Remaker.

Vou usar o MTK Remaker para mostrar como funciona:



Note que "\2dX" tem apenas quatro caracteres, mas na imagem eu digo que são cinco. Repare que existe um espaço antes da barra, que é o quinto caractere.

A lógica 8032 deve entender essa string mais ou menos assim:

  • Reserve um buffer de 6 caracteres;
  • Selecione a fonte 09 e pegue o seguinte (um) caractere;
  • Selecione a fonte 00 e pegue os seguintes (cinco) caracteres.
« Última modificação: Março 04, 2008, 02:41:50 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 Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Responder #327 Online: Março 04, 2008, 03:49:13 am »
Como saber que células da palete corrente um determinado ícone usa.

Depois que você sabe como a coisa funciona, percebe que é isso que o MTK Remaker mostra, na aba MEMO:



As letras que você vê compondo a imagem do ícone não são escolhidas ao acaso. Cada uma delas é o númro em hexadecimal da cor na palete, de 0 a F. Assim como você pode ver, o fundo do ícone está na cor 0x0 (que é geralmente tratada como transparente na exibição) e a maior parte do corpo do cadeado está na cor 0xE. Que cor realmente será essa depende da palete em vigor onde o ícone é exibido.

Toda a explicação necessária para entender como o "bitmap" do ícone é armazenado está no documento !Primeros_pasos_MT1389_v0_3b.rtf de Cachirulo. Com base nessas informações eu já consegui fazer rotinas em Delphi que desenham ícones Mediatek e pretendo usar isso em uma futura versão do MTK Patcher.
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 MT13x9: Log de Descobertas
« Responder #328 Online: Setembro 03, 2008, 06:36:29 pm »
Como mover os tags mp3 e jpg preview para parte de baixo da tela:

Bem, a primeira parte (mover os tags mp3) Jefferson já explicou muito claramente como é que se faz.

Para mover o jpeg preview tem de se trocar as coordenadas absolutas (a diferença dos tags, que usam coordenadas relativas) da imagem...

Buscar a seqüencia "7D ? 7F 9A 7E 02 12 ? ? 7D ? 7F 9B 7E 02 12 ? ? 7D ? 7F 9C 7E 02 12 ? ? 7D ? 7F 9D 7E 02 12 ? ? 7D ? 7F 9E 7E 02 12 ? ? ", para achar uma parte onde ArmPutChar (WriteSInfo) é chamado cinco vezes com os valores 0x029A, 0x029B, 0x029C, 0x029D e 0x029E.

Deslize a rotina para cima até o começo e de nome a função: fgFlMnInit.

Voltem novamente até a parte da seqüencia achada. Se quiser podem colocar um nome local nesta parte da rotina. Aquí é definido o tamanho e posição da miniatura jpeg:

ROM:4FF8             fgFlMnInit:
(...)
ROM:50D4             Jpg_preview
ROM:50D4 7D 01               mov     R5, #1                    ; Mostrar jpg preview (1=Sim 0=não)
ROM:50D6 7F 9A               mov     R7, #0x9A ; 'Ü'
ROM:50D8 7E 02               mov     R6, #2
ROM:50DA 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50DA
ROM:50DD 7D 78               mov     R5, #0x78 ; 'x'           ; Preview JPG posX / 5 (coord. absoluta)
ROM:50DF 7F 9B               mov     R7, #0x9B ; 'ø'
ROM:50E1 7E 02               mov     R6, #2
ROM:50E3 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50E3
ROM:50E6 7D 4F               mov     R5, #0x4F ; 'O'           ; Preview JPG posY / 4 (coord. absoluta)
ROM:50E8 7F 9C               mov     R7, #0x9C ; '£'
ROM:50EA 7E 02               mov     R6, #2
ROM:50EC 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50EC
ROM:50EF 7D 23               mov     R5, #0x23 ; '#'           ; Preview JPG Largura / 5
ROM:50F1 7F 9D               mov     R7, #0x9D ; 'Ø'
ROM:50F3 7E 02               mov     R6, #2
ROM:50F5 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar
ROM:50F5
ROM:50F8 7D 14               mov     R5, #0x14                 ; Preview JPG Altura / 4
ROM:50FA 7F 9E               mov     R7, #0x9E ; '×'
ROM:50FC 7E 02               mov     R6, #2
ROM:50FE 12 05 F5            lcall   WriteSInfo                ; Arm_PutChar


Troque os valores em vermelho para mudar posição e tamanho do jpeg preview.

Notem que os valores a insertar tem que ser divididos entre 4 ou 5. Ou seja, se quiser uma largura de 200px, tem que fazer 200 / 5 = 40, é depois convertir o resultado de hexadecimal em decimal 40 => 28.
« Última modificação: Setembro 03, 2008, 06:50:21 pm por jmaraujo »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Responder #329 Online: Setembro 04, 2008, 03:02:18 am »
Como funciona o esquema de bancos nos novos firmwares

Isso é só um rascunho.

Recapitulando:

  • A arquitetura 8051 só suporta 64K de memória;
  • O truque que permite ao MT1389 usar um código 8032 maior que 64K, divide o código em segmentos de 64KB chamados de bancos e requer o uso de Bank Switch Tables (BSTs) idênticas em cada banco para que seja possível que um banco possa chamar rotinas que estão gravadas em outro.

O código 8032 é agora organizado das duas maneiras a seguir:



Eu não tenho certeza ainda, mas aparentemente no novo formato a BST tem um tamanho fixo de 12K e o espaço para o código de cada banco é fixo em 52K.

O esquema antigo produz um desperdício natural com a repetição da BST em cada banco. O novo esquema tem o objetivo de reclamar esse espaço desperdiçado, mas tenha em mente que nem um byte é ganho no espaço do código 8032 para patches. Um banco que só teria 100 bytes livres no esquema antigo continua com 100 bytes livres no esquema novo. Todo o espaço economizado com o novo esquema pode ser aproveitado basicamente com mais fontes e imagens.


E ainda é mais complicado do que parece:

A arquitetura 8051 requer que, pelo menos na memória RAM, o truque de bank switching seja implementado da forma tradicional: BST + banco 0 + BST + banco 1 + BST + banco 2, então apesar do chip MT1389L estar programado para carregar apenas uma BST, ele precisa gravar o código 8032 na memória da mesma forma que o chip tradicional MT1389. Todo o endereçamento das rotinas considera (e precisa ser dessa forma) que as BSTs estão lá, no início de cada banco. Por conta disso você não pode mais simplesmente carregar a parte 8032 do código no IDA ou num editor hexadecimal e fazer patches, porque não sendo no banco zero, vai dar tudo errado.

Para ter um bloco 8032 normal a partir de um bloco 8032 "L" de três bancos basta fazer o seguinte:

copy /b BST+bloco0+BST+bloco1+BST+bloco2 8032_normal.bin


Se você analisar com um comparador binário, é exatamente isso que New Age faz com o novo MtkExtract:
  • 8032__normal.bin -> É o bloco 8032 do jeito que vai para a memória.
  • 8032__flash.bin  -> É o bloco 8032 do jeito que está no firmware.

Note que New Age chama de "common code" o que eu chamo de BST.

Então, para analisar no IDA PRO, você precisa usar 8032__normal.bin

Porém um problema permanece. Após a análise no IDA, você precisa fazer as edições tembém em 8032__normal.bin (não é mais possível editar diretamente o firmware, porque os endereços vistos no IDA só vão corresponder para o banco zero). Depois 8032__normal.bin precisa ser "recortado" e "remontado" como um novo 8032__flash.bin, para só então substituir no firmware.

Esse é mais um motivo para que as ferramentas existentes não tenham condição de lidar com os firmwares novos. Muita coisa precisa ser adaptada para lidar com as duas situações.

« Última modificação: Setembro 06, 2008, 03:00:57 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?!

FORUM.RYAN.COM.BR

Re: Firmware MT13x9: Log de Descobertas
« Responder #329 Online: Setembro 04, 2008, 03:02:18 am »