Autor Tópico: Reformatação e Quebra automática de Legendas (Philips DVP5965K/55)  (Lida 4143 vezes)

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

Offline doctorxyz

  • Novato Prolixo
  • **
  • Mensagens: 63
  • Aprovação: +4/-0
    • Ver Perfil
Ryan,

A casa é sua, veja se está de acordo.

Pessoal,

Prentendo ou compartilhar com vocês meus experimentos até resolver esta questão, de preferência com a ajuda da comunidade.

Estando o quebra-cabeças resolvido, fixo o post com todo o "how to" revisado para quem interessar possa.

-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-
Estou mapeando funções ARM no RISC do aparelho e lendo vários artigos em inglês, português e espanhol. O New Age e o JMAraujo já me deram umas dicas.
Já consegui mapear no IDA uma série de rotinas no ARM Code do fw, para em seguida poder aplicar os patches. Estou usando um documento da LizaTV e diagrama do Cachirulo (vale ouro!) que mostram o esquerma de comunicação 8032 e ARM, documentos do New Age sobre quebra de legendas, documento do Danny Moroz com a quebra inteligente, e por fim os ajustes neste algoritmo, que foram discutidos no forum Hej456.

Tenham apenas um pouco de paciência.

Saudações!

doctorxyz

Offline doctorxyz

  • Novato Prolixo
  • **
  • Mensagens: 63
  • Aprovação: +4/-0
    • Ver Perfil
Re: Reformatação e Quebra automática de Legendas (Philips DVP5965K/55)
« Responder #1 Online: Fevereiro 06, 2008, 04:07:11 pm »
Pessoal,

TRABALHO EM ANDAMENTO. O TEXTO AQUI AINDA É RASCUNHO.

Já compartilho algumas coisas. Ou vou sobrescrever seções de erro C, ou vou aumentar o ARM Code com MTKARMResizer.



Rotinas relacionadas
--------------------
Base: Documento (2)

Bloco 8032

   SetMpeg4SubtitleParams      B4 000086C5 00000155 R . . . . . .


Bloco RISC

   Is_R0_Between_0x20_and_0x7E       ROM 00034300 00000010 R . . . . . .
   Is_R0_Between_R1_and_R2           ROM 00034D3A 00000010 R . . . . . .
   OSD_DisplayCharacter              ROM 0003483A 000000B6 R . . . . . .
   SUB_CalcLineStartPosX             ROM 000349F4 0000004A R . . . . . .
   SUB_CalcStartPosY                 ROM 00034A3E 000000CE R . . . . . .
   SUB_CalcTextLineWidth             ROM 00034946 000000AE R . . . . . .
   SUB_ClearMpeg4SubtitleParams      ROM 000348F0 0000001A R . . . . . .
   SUB_FillMpeg4SubtitleParamsRecord ROM 0003490A 0000003C R . . . . . .
   SUB_Mpeg4SubtitleText_Display     ROM 00034B0C 000001F6 R . . . . . .


Anotar algumas referências dentro das rotinas
---------------------------------------------
Usarei como base o documento (3)

Localização de um espaço livre no ARM Code
------------------------------------------
Terei de saber qual é o OP Code do ARM para NOP.
RESPONDIDO! JMAraujo informou em 05.02.2008 --> Opcodes do NOP em ARM => "C0 46"

Não sei há alguma recomendação aqui para não fazer bobagem.

Inserção da rotina de quebra automática no ARM Code no espaço livre
-------------------------------------------------------------------
Pretendo inserir o código idêntico ao existente em (3) usando o utilitário XVI (5)
Abro no IDA Pro e vejo como ficou. Nisso anoto os endereços para arrumar as referências.
Uso o utilitário BCalc (4) como apoio para acertar os branches.
Uso o XVI32 (5) novamente e faço os ajustes.


Finalização
-----------
Deixo o documento (4) como apoio caso queira tirar alguma dúvida ou incrementar os recursos.


Pronto!


Referências
-----------

(1) Inspiração:
FORUM.RYAN.COM.BR > Forum > DVD players > DivX Players > Philips DVP5100 > Re: [download] Firmware alternativo 2.2a
http://ryan.com.br/smf/index.php?topic=205.msg9173648#msg9173648
No firmware JMAraujo 1.2 beta 1 implementa a quebra de linhas do Danny Moroz

(2) Documento do NA sobre exibição de legendas:
MPEG4 Subtitle Display in ARM
http://f1.grp.yahoofs.com/v1/MMmgR1GxS7XEXlqR8FlXuAaqkIAVibdchj3Xlowa90--jTD3aukXO53HbZSxXIvyTU2iMlReZ9vTCLWBUEEYV7Zy_bBKyg/Documents/MPEG4%20Subtitle%20Display%20in%20ARM.rar

(3) Patch do Danny Moroz:
New file uploaded to mt13x9 -> http://tech.groups.yahoo.com/group/mt13x9/message/8252
WordWrap Making in ARM - By_Moroz -> http://groups.yahoo.com/group/mt13x9/files/Documents/WordWrap_By_Moroz.rar

(4) Discussão sobre implementação do Patch do Danny Moroz em diversos Players:
post do fórum Hej456, analisei mensagens postadas entre 17.07.2007 (JMAraujo) e 26.12.2007 (Seb@stian)
Hej456 - [Help request] Word wrap and reformat...
http://www.hej456.com/forum/viewtopic_print.php?t=75&start=30

(5) Programa para calcular OP Codes de branches ARM
BCalc - Branch Calculator for ARM
http://f1.grp.yahoofs.com/v1/UIijR2jyAFpSILKikB7Nv0SKYc-X8h5fB41ZkCV9bLuQWqAjy-LSKLpaVTf_ysk0L5PSO30Ek3GNqv-M-PZyIQtAXT-Mog/PROGRAMS/BCalc.rar

(6) XVI32 2.51
http://www.chmaas.handshake.de

(7)

-x-x-x-x--x

ARM Codes.BIN
-------------

SUB_Mpeg4SubtitleDisplay
   ROM:00034B0C
   (...)

                                                       =#8 ------------------------------------+
                                                        |                                      |
                                              +---------+----------+                           |
                                              |                    |                           |
   ROM:00034B3A 02 9A         LDR R2,[SP,#30+SubtitleTextLength]                          |
                     00 20         MOV R0,#0                                                   |
                     89 18         ADD R1,R1,R2                                                |
                     88 70         STRB R0,[R1,#2]                                             |
De:     ROM:00034B42 00 24         MOV R4,#0                  Para: 69 46         MOV R1,SP    |
De:     ROM:00034B44 20 1C         ADD R0,R4,0                Para: 08 31         ADD R1,#8 ---+
De:     ROM:00034B46 FF 57 55 FF   BL SUB_CalcLineStartPosX   Para: ?? ?? ?? ??   BL SUB_WordWrap



Enxertar SUB_WordWrap em ?? ?? ?? ??
« Última modificação: Fevereiro 06, 2008, 04:30:16 pm por Jefferson »

FORUM.RYAN.COM.BR

Re: Reformatação e Quebra automática de Legendas (Philips DVP5965K/55)
« Responder #1 Online: Fevereiro 06, 2008, 04:07:11 pm »

Offline doctorxyz

  • Novato Prolixo
  • **
  • Mensagens: 63
  • Aprovação: +4/-0
    • Ver Perfil
Re: Reformatação e Quebra automática de Legendas (Philips DVP5965K/55)
« Responder #2 Online: Fevereiro 08, 2008, 05:59:07 pm »
O colega Ronison expôs o seguinte:


Temos, seguramente, 369 bytes de espaço nesta área. Existe uma área suspeita e o espaço pode aumentar para ~7,7K.


Segundo minha análise até o momento dos bytes relacionados com a cadeia mensagens de erro C (usei a opção de Graph View do IDA nos ARM Codes para checar visualmente a dependência entre rotinas e dados):

0x00046B00 até 0x00046B39 -> sub_46B00 -> Disponível: 0x40 bytes
0x00046B3A até 0x00046B43 -> A princípio não poderíamos usar, até sabermos a que rotina estes bytes pertencem.
0x00046B44 até 0x00046B85 -> sub_46B44 -> Disponível: 0x41 bytes
0x00046b86 até 0x00046BA3 -> A princípio não poderíamos usar, até sabermos a que rotina estes bytes pertencem.
0x00046BA4 até 0x00046C39 -> default_signal_handler -> Disponível: 0x96 bytes
0x00046C3A até 0x00046C43 -> A princípio não poderíamos usar, até sabermos a que rotina estes bytes pertencem.
0x00046C44 até 0x00046CB9 -> Cadeias de mensagens de erro C -> Disponível: 0x76 bytes
« Última modificação: Fevereiro 22, 2008, 12:45:45 pm por doctorxyz »

FORUM.RYAN.COM.BR

Re: Reformatação e Quebra automática de Legendas (Philips DVP5965K/55)
« Responder #2 Online: Fevereiro 08, 2008, 05:59:07 pm »