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#msg9173648No 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/8252WordWrap 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 ?? ?? ?? ??