Detalhes técnicos a serem traduzidos e colocados no log de descobertas
(http://tech.groups.yahoo.com/group/mt13x9/messages/8104?threaded=1&m=e&var=1&tidx=1)
(http://tech.groups.yahoo.com/group/mt13x9/messages/8225?threaded=1&m=e&var=1&tidx=1)
Se com "traduzir" você quer dizer "explicar de uma maneira mais clara", então OK.
Meras traduções de idioma não devem ser colocadas neste tópico.
Jefferson,
Sim, a idéia é explicar de uma maneira mais clara. Quando conseguir atingir o objetivo "carregamento automático de legendas no DVP5965K/55" faço um passo-a-passo explicando claramente, para que outros colegas possam fazer o mesmo.
Mas antes, gostaria de usar este tópico para compartilhar o que estou descobrindo em termos de tabela de códigos ARM e funções ARM / 8032.
É aqui o local correto para postar isso?
Se sim, mantenha o texto; senão, indique um tópico para eu postar/criar, apague, ou ainda, envie para o lixão ok... Obrigado!
Ronison e pessoal,
Sobre Carregamento automático de legendas no DVP5965K/55
Se alguem já tentou fazer isso lendo...
- Smart Loading of text subtitles in DMF ->
http://hej456.fasthoster.de/Smart.Loading.of.subs.in.DMF.zip- mt13x9 Message Re Doc Autoload subtitles in DMF firmware ->
http://tech.groups.yahoo.com/group/mt13x9/message/8340Saiba que eu também já tentei, mas travei em um determinado ponto.
Bom, descobri onde está a Tabela de tipos de mídia no ARM Code – Philips DVP5965K/55...
ROM:0004A996 12 03 41 56 49 00 00 AVI
ROM:0004A99D 12 03 56 49 44 00 00 VID
ROM:0004A9A4 12 04 44 49 56 58 00 DIVX
ROM:0004A9AB 12 03 44 49 56 00 00 DIV
ROM:0004A9B2 14 03 4D 50 34 00 00 MP4
ROM:0004A9B9 14 03 4D 34 41 00 00 M4A
... a word que indica o endereço de chamada para rotina 8032 Remote_DivxPlayback, após pressionar a tecla subtitle (29) no DVP5965K/55...
B4:5FE8 61 8F .word B4_618F
B4:5FEA 29 .byte 0x29
... e por fim, a rotina 8032 Remote_DivxPlayback propriamente dita, que por sua vez chama a rotina 8032 Subtitle_loading (B4:2C28):
B4:618F Remote_DivxPlayback: ; DATA XREF: B4:5FE8 o
B4:618F
B4:618F ; FUNCTION CHUNK AT B4:6250 SIZE 00000003 BYTES
B4:618F
B4:618F 12 2C 28 lcall Subtitle_loading
B4:618F
B4:6192 EF mov A, R7
B4:6193 24 FF add A, #0xFF
B4:6195 92 6D mov RAM_2D.5, C
B4:6197 02 62 50 ljmp B4_6250
B4:6197
B4:6197 ; End of function DivX_Tecla_29
B4:6197
Se alguém me ajudar no que falta, podemos terminar, publicar o firmware, e testar. Daí, estando homologado, publico um passo-a-passo em português.
Lá vão as missões:
Missão 1: Achar a rotina 8032 GetFileType
Na documentação do hej456, logo após a rotina 8032 GetFileType, vem os ponteiros que indicam onde fazer as chamadas quando o tipo de mídia é MPG (byte 09) e quando é AVI (byte 12). Porém, no DVP5965K/55, "parece" que a rotina 8032 GetFileType fica num lugar e os ponteiros em outro.
Achei uma ***SUPOSTA*** GetFyleType, no endereço
B4:4D4D7
Missão 2: Achar os ponteiros (words de 2 bytes) que indicam onde fazer as chamadas quando o tipo de mídia é MPG (byte 09) e quando é AVI (byte 12).
Diante da suposição feita em "Missão 1", tenho três endereços ***SUSPEITOS***:
B3:58FE
B4:5F8B
B4:7AA5
Missão 3: Achar a rotina 8032 Video_play do DVP5965K/55
No DVP5965K/55, parece que a rotina 8032 Vídeo_play foi escrita um pouco diferente, então não dá para localizá-la usando a seqüência apontada por hej456 em
- Smart Loading of text subtitles in DMF ->
http://hej456.fasthoster.de/Smart.Loading.of.subs.in.DMF.zipAchei uma rotina ***SUSPEITA*** em B1:D2B6 através de uma busca fragmentada de padrões e de suposições; a seqüência de bytes utilizada foi “EF 75 F0 10 A4 24 E5 FF E5 F0 34 08 FE”. É bom olhar código abaixo (do DVP5965K) e CONFIRMAR SE DE FATO ELA É A TAL Vídeo_play...
*** SUPOSTA *** "Rotina Video_play"
B1:D2B6 *** SUPOSTA *** Video_Play: ; CODE XREF: B1_8883+5C p
B1:D2B6 EF mov A, R7
B1:D2B7 24 FE add A, #0xFE ; '¦'
B1:D2B9 60 5B jz B1_D316
B1:D2B9
B1:D2BB 14 dec A
B1:D2BC 60 58 jz B1_D316
B1:D2BC
B1:D2BE 14 dec A
B1:D2BF 60 61 jz B1_D322
B1:D2BF
B1:D2C1 24 03 add A, #3
B1:D2C3 70 60 jnz B1_D325
B1:D2C3
B1:D2C5 E4 clr A
B1:D2C6 FF mov R7, A
B1:D2C7 12 1E D8 lcall B1_BS_240_B3_E9FE
B1:D2C7
B1:D2CA D2 75 setb RAM_2E.5
B1:D2CC 7F 12 mov R7, #0x12
B1:D2CE 12 1D 58 lcall B1_BS_176_B3_4CF4
B1:D2CE
B1:D2D1 7F 12 mov R7, #0x12
B1:D2D3 12 1D 5E lcall B1_BS_177_B3_72CE
B1:D2D3
B1:D2D6 E4 clr A
B1:D2D7 90 FC 1F mov DPTR, #XRAM_FC1F
B1:D2DA F0 movx @DPTR, A
B1:D2DB A3 inc DPTR
B1:D2DC 74 02 mov A, #2
B1:D2DE F0 movx @DPTR, A
B1:D2DF 7B 03 mov R3, #3
B1:D2E1 E4 clr A
B1:D2E2 FD mov R5, A
B1:D2E3 7F 12 mov R7, #0x12
B1:D2E5 12 1D 64 lcall B1_BS_178_B3_C399
B1:D2E5
B1:D2E8 E4 clr A
B1:D2E9 FD mov R5, A
B1:D2EA 7F 12 mov R7, #0x12
B1:D2EC 12 1F 3E lcall B1_BS_257_B3_E4D7
B1:D2EC
B1:D2EF 7F 12 mov R7, #0x12
B1:D2F1 12 1D 6A lcall B1_BS_179_B3_58BA
B1:D2F1
B1:D2F4 7F 12 mov R7, #0x12
B1:D2F6 12 1D 70 lcall B1_BS_180_B3_E9AF
B1:D2F6
B1:D2F9 12 E0 FC lcall B1_E0FC
B1:D2F9
B1:D2FC 7F 19 mov R7, #0x19
B1:D2FE 7E 00 mov R6, #0
B1:D300 12 1B BA lcall B1_BS_107_B3_B645
B1:D300
B1:D303 74 FF mov A, #0xFF
B1:D305 90 FD 77 mov DPTR, #XRAM_FD77
B1:D308 F0 movx @DPTR, A
B1:D309 A3 inc DPTR
B1:D30A F0 movx @DPTR, A
B1:D30B 90 FD 7E mov DPTR, #XRAM_FD7E
B1:D30E F0 movx @DPTR, A
B1:D30F A3 inc DPTR
B1:D310 F0 movx @DPTR, A
B1:D311 C2 74 clr RAM_2E.4
B1:D313 02 1D 1C ljmp B1_BS_166_B4_ABBB
B1:D313
B1:D316 ; ---------------------------------------------------------------------------
B1:D316
B1:D316 B1_D316: ; CODE XREF: *** SUPOSTA *** Video_Play+3 j
B1:D316 ; *** SUPOSTA *** Video_Play+6 j
B1:D316 7F 05 mov R7, #5
B1:D318 12 1E 36 lcall B1_BS_213_B6_6CEB
B1:D318
B1:D31B 50 08 jnc B1_D325
B1:D31B
B1:D31D 7F 01 mov R7, #1
B1:D31F 02 1E 54 ljmp B1_BS_218_B4_2D0C
B1:D31F
B1:D322 ; ---------------------------------------------------------------------------
B1:D322
B1:D322 B1_D322: ; CODE XREF: *** SUPOSTA *** Video_Play+9 j
B1:D322 12 E0 FC lcall B1_E0FC
B1:D322
B1:D325
B1:D325 B1_D325: ; CODE XREF: *** SUPOSTA *** Video_Play+D j
B1:D325 ; *** SUPOSTA *** Video_Play+65 j
B1:D325 22 ret
B1:D325
B1:D325 ; End of function *** SUPOSTA *** Video_Play