Author Topic: Firmware MT13x9: Log de Descobertas  (Read 60574 times)

0 Members and 4 Guests are viewing this topic.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #200 on: August 21, 2007, 08:54:43 PM »
Eneris,

Tem como dar isso tudo ao DVP5965, fazendo algumas modificações no menu original. Eu sei como trabalhar com menus, mas ensinar é muito complicado.

No caso dos Philips, que já tem menus "cheios", é mais prático criar um gancho para uma nova página (você pode ter até oito) e construi-la toda no espaço livre do mesmo banco. É quase a mesma coisa que fiz no Proview, mas como o Proview já tinha uma página quase vazia, a mudança no código original dos menus foi mínima. Para Philips é consideravelmente mais complicado, mas ainda é mais razoável do que tentar enxertar opções nos menus existentes.

Eu já tenho na fila os menus do DVP5960, DVP5980, DVP3040 e do Lenoxx DV-406. Posso fazer também do DVP5965, mas vai demorar.

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 jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #201 on: August 21, 2007, 10:14:29 PM »
Eneris,

Se entendí bem (não estou familiarizado com o firmware do DVP5965), para o menú de fontes já existe um menú de seleção, então não é preciso uma nova página. O mais fácil é aumentar o número de items do menú:

  8. No Pic. | Divx Subtitle | Divx Subtitle
     0008 FFFF 0505 0505 0059 0000 0001 0000 FF365A 0000 - ROM:3660
 => 1. Standard | Standard | [00]
       04BE 04BE 0561 00 - ROM:364C
    2. Cyrillic | Cyrillic | [00]
       0507 0507 0561 01 - ROM:3653


01 = número de items-1 (ou seja se quiser 6 items, 6-1=5 então 01 -> 05
365A = Pointer a pointer dos ítems de menú.

A primeira coisa e trocar o número de ítems (em vermelho). A segunda coisa e mudar o endereço dos pointers de ítems (em azul).

No exemplo, em ROM:365A temos os seguintes datos: FF 36 4C FF 36 53 (ou seja dois pointers, apontando a ROM:364C e ROM:3653).

Mude o pointer FF365A para, por exemplo, FFFA00. Em ROM:FA00 coloque todos os pointers para os items de menú. Asumindo que vamos manter as opções 1 y 2 e adicionar 4 opções novas: FF 36 4C FF 36 53 FF aa aa FF bb bb FF cc cc FF dd dd, onde aaaa, bbbb, cccc e dddd são os pointers para as novas definiçoes de idioma e valor de escolha da opção do menú.

  8. No Pic. | Divx Subtitle | Divx Subtitle
     0008 FFFF 0505 0505 0059 0000 0005 0000 FFFA00 0000 - ROM:3660
 => 1. Standard | Standard | [00]
       04BE 04BE 0561 00 - ROM:364C
    2. Cyrillic | Cyrillic | [00]
       0507 0507 0561 01 - ROM:3653
    3. Opcão 3 | Opcão 3 | [00]
       ???? ???? 0561 ? - ROM:aaaa
    4. Opcão 4 | Opcão 4 | [00]
       ???? ???? 0561 ? - ROM:bbbb
    5. Opcão 5 | Opcão 5 | [00]
       ???? ???? 0561 ? - ROM:cccc
    6. Opcão 6 | Opcão 6 | [00]
       ???? ???? 0561 ? - ROM:dddd


Espero que fique comprensivel... Jefferson tem razão, é mais fácil entender como funcionan os menús do que explicar.

Um abraço.
« Last Edit: August 21, 2007, 10:16:18 PM by jmaraujo »
Fórum do DVP5100
(novo endereço)

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #202 on: August 21, 2007, 10:39:47 PM »
Eneris,

Assim fica a mudança em um editor hexadecimal:

  8. No Pic. | Divx Subtitle | Divx Subtitle
     0008 FFFF 0505 0505 0059 0000 0001 0000 FF365A 0000 - ROM:3660


Em ROM:3660 está contida a linha a modificar:

Modificar pointer e número de opções de menú:
Antes:
00003660h: 00 08 FF FF 05 05 05 05 00 59 00 00 00 01 00 00
00003670h: FF 36 5A 00 00 02 60 00 9F 02 60 00 02 5C 00 9E


Depois:
00003660h: 00 08 FF FF 05 05 05 05 00 59 00 00 00 05 00 00
00003670h: FF FA 00 00 00 02 60 00 9F 02 60 00 02 5C 00 9E


Pointer a novas opções de menú:
0000fa00h: FF 36 4C FF 36 53 FF aa aa FF bb bb FF cc cc FF
0000fa10h: dd dd FF FF FF FF FF FF FF FF FF FF FF FF FF FF


É preciso adicionar também (em ROM:aaaa, ROM:bbbb... etc.) os bytes das definições de idioma e escolha de opção.

Os endereços no seu firmware são diferentes mas o procedimento é o mesmo.
Fórum do DVP5100
(novo endereço)

Offline eneris

  • Novato Prolixo
  • **
  • Posts: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • View Profile
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Reply #203 on: August 22, 2007, 09:22:17 AM »
Ryan e Jmaraujo, obrigado pelas super dicas, vou tentar hoje a noite, qualquer coisa eu posto aqui.
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline eneris

  • Novato Prolixo
  • **
  • Posts: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • View Profile
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Reply #204 on: August 22, 2007, 10:49:32 PM »
Jmaraujo, quem são os bytes das definições de idioma e escolha de opção?

Este é o menu existente no 5965.

8. No Pic. | Divx Subtitle | Divx Subtitle
     0008 FFFF 0447 0447 0044 0000 0000 0000 FF3EA6 0000 - ROM:3EA9
 => 1. Standard | Standard | [00]
       0401 0401 051E 00 - ROM:3E91


Agradeço.

The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #205 on: August 23, 2007, 12:14:06 AM »
8. No Pic. | Divx Subtitle | Divx Subtitle
     0008 FFFF 0447 0447 0044 0000 0000 0000 FF3EA6 0000 - ROM:3EA9
 => 1. Standard | Standard | [00]
       0401 0401 051E 00 - ROM:3E91


Vermelho = Definição 1 (no seu caso: "Standard")
Azul = Definição 2 (no seu caso: "Standard")
Verde = Definição 3 (no seu cazo: vazío) - Os firmwares Philips geralmente não usam a def.3 na escolha de opções.
Laranja = Opção a escolher

Veja no MTK Remaker, na parte "Languages", que 0x0401=Standard.
Faça novas definições de idioma para as novas opções.
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #206 on: August 28, 2007, 02:47:35 AM »
Como localizar Dir_Disp_DirLine

(também chamada de DirDispDirLine e DDDL)

Para refrescar a memória, essa rotina é responsável pela exibição da linha que mostra o diretório (pasta) onde você está:



Procure por:
EF 70 ? D2 ? 12 ? ? 80

Esta string não encontra a rotina, mas uma chamada para ela. Apenas um ponto será encontrado, parecido com este:

B1:9468 EF          mov     A, R7
B1:9469 70 07       jnz     B1_9472
B1:9469
B1:946B D2 43       setb    RAM_28.3
B1:946D 12 68 89    lcall   DirDispDirline


Como você pode ver, a primeira lcall é para DDDL

Funciona com:

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

Não funciona com
  • Philips PET 725

Para esse, use a string:
80 02 c2 ? 12 ? ? 90


DDDL é importante por algumas razões:

  • É nela que você faz o patch que corrige o número de caracteres exibidos na linha de diretório, como explicado por mim váaarios posts atrás;
  • Ela sempre tem tem duas chamadas a OSD_SetFont, uma chamada para OSD_TextColor e termina com uma chamada para ClearRect. De uma tacada só você descobre os endereços dessas rotinas e mais a janela usada pelo browser.

DDDL sempre inicia mais ou menos assim:

B1:6889             DirDispDirline:               ; CODE XREF: B1_93FD+70p
B1:6889                                           ; B1_93FD+77p
B1:6889 20 43 03    jb      RAM_28.3, B1_688F
B1:6889
B1:688C 02 69 B4    ljmp    Dir_DirLineClear


Dir_DirLineClear sempre é emendada ao final de DDDL, assim você sempre saberá onde a rotina termina

Este conhecimento está sendo incorporado ao MTK Patcher, para que este no futuro possa permitir a escolha da fonte usada na DirLine e corrigir seus bugs.
 
« Last Edit: August 28, 2007, 02:59:44 AM by 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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #207 on: August 28, 2007, 06:08:45 AM »
O tamanho da flash do DVP3040

Eu pesquisei o assunto, mas a melhor informação que obtive (praticamente a única), foi este post de Lisa_tv.

Quote
First about flash size, U can read it in the firmware, 8032 part
block 0:

first 3 bytes is a jump to Startup1 label: (example from 6700 fw)

ROM:0000 start:
ROM:0000 02 22 7B ljmp Startup1

At this label:

ROM:227B Startup1:
ROM:227B mov DPTR, #0xF86C
ROM:227E movx A, @DPTR
ROM:227F anl A, #0xF0

This 0xF0 ends with 4 zeroes, so number of address bits for flash =
4 + 16 = 20 bits -> 1MB flash

In 6600 fw:

ROM:22B2 Startup1:
ROM:22B2 mov DPTR, #0xF86C
ROM:22B5 movx A, @DPTR
ROM:22B6 anl A, #0xE0

this is a 0xE0, has 5 zeroes at the end, flash address is 5 + 15 =
21 bits -> 2 MB flash

I think this is true for all mt1389 firmwares.


Mas isso só serviu para tornar a coisa ainda mais confusa, porque o ponto indicado no firmware do DVP3040 é este:

B0:2294             B0_Start_Handler:             ; CODE XREF: FLASH_Reset:B0_Startj
B0:2294 90 F8 6C    mov     DPTR, #BIM_IODOM
B0:2297 E0          movx    A, @DPTR
B0:2298 54 E0       anl     A, #0xE0
B0:229A F0          movx    @DPTR, A
B0:229B 90 F8 69    mov     DPTR, #BIM_IOENM
B0:229E E0          movx    A, @DPTR
B0:229F 44 1F       orl     A, #0x1F
B0:22A1 F0          movx    @DPTR, A
B0:22A2 90 F8 66    mov     DPTR, #BIM_PCTL1      ; Pin Control 1 Register
B0:22A5 E0          movx    A, @DPTR
B0:22A6 44 30       orl     A, #0x30
B0:22A8 F0          movx    @DPTR, A
B0:22A9 C2 90       clr     P1.0                  ; Port 1
B0:22AB C2 91       clr     P1.1                  ; Port 1
B0:22AD C2 92       clr     P1.2                  ; Port 1
B0:22AF 90 F8 66    mov     DPTR, #BIM_PCTL1      ; Pin Control 1 Register
B0:22B2 E0          movx    A, @DPTR
B0:22B3 54 F8       anl     A, #0xF8
B0:22B5 F0          movx    @DPTR, A
B0:22B6 74 24       mov     A, #0x24 ; '$'
B0:22B8 90 F8 25    mov     DPTR, #AUD_IECCFG     ; IEC958 Configuration
B0:22BB F0          movx    @DPTR, A
B0:22BC 78 7F       mov     R0, #0x7F ; ''
B0:22BE E4          clr     A
B0:22BF
B0:22BF             B0_22BF:                      ; CODE XREF: FLASH_Reset-CD40j
B0:22BF F6          mov     @R0, A
B0:22C0 D8 FD       djnz    R0, B0_22BF
B0:22C2 75 A0 F9    mov     P2, #0xF9 ; '¨'       ; Port 2
B0:22C5 75 81 AE    mov     SP, #WMKEY            ; Stack Pointer
B0:22C8 02 23 06    ljmp    B0_2306
B0:22C8             ; END OF FUNCTION CHUNK FOR FLASH_Reset


E0 = flash de 2MB


já no firmware do DVP5140...


B0:2294             B0_Start_Handler:                       ; CODE XREF: FLASH_Reset:B0_Startj
B0:2294 90 F8 6C              mov   DPTR, #BIM_IODOM
B0:2297 E0                    movx  A, @DPTR
B0:2298 54 F0                 anl   A, #0xF0
B0:229A F0                    movx  @DPTR, A
B0:229B 90 F8 69              mov   DPTR, #BIM_IOENM
B0:229E E0                    movx  A, @DPTR
B0:229F 44 0F                 orl   A, #0xF
B0:22A1 F0                    movx  @DPTR, A
B0:22A2 90 F8 66              mov   DPTR, #BIM_PCTL1        ; Pin Control 1 Register
B0:22A5 E0                    movx  A, @DPTR
B0:22A6 44 10                 orl   A, #0x10
B0:22A8 54 DF                 anl   A, #0xDF
B0:22AA F0                    movx  @DPTR, A
B0:22AB C2 90                 clr   T2                      ; T2
B0:22AD C2 91                 clr   P1.A17                  ; A17
B0:22AF C2 92                 clr   P1.A18                  ; A18
B0:22B1 90 F8 66              mov   DPTR, #BIM_PCTL1        ; Pin Control 1 Register
B0:22B4 E0                    movx  A, @DPTR
B0:22B5 54 F8                 anl   A, #0xF8
B0:22B7 F0                    movx  @DPTR, A
B0:22B8 74 24                 mov   A, #0x24 ; '$'
B0:22BA 90 F8 25              mov   DPTR, #AUD_IECCFG       ; IEC958 Configuration
B0:22BD F0                    movx  @DPTR, A
B0:22BE 78 7F                 mov   R0, #0x7F ; ''
B0:22C0 E4                    clr   A
B0:22C0
B0:22C1
B0:22C1             B0_22C1:                                ; CODE XREF: FLASH_Reset-CD3Ej
B0:22C1 F6                    mov   @R0, A
B0:22C2 D8 FD                 djnz  R0, B0_22C1
B0:22C2
B0:22C4 75 A0 F9              mov   P2, #0xF9 ; '¨'         ; Port 2
B0:22C7 75 81 AE              mov   SP, #WMKEY              ; Stack Pointer
B0:22CA 02 23 08              ljmp  B0_2308
B0:22CA
B0:22CA             ; END OF FUNCTION CHUNK FOR FLASH_Reset


F0 =  Flash de 1MB

E é bom lembrar que mtkRemaker diz que ambos são de aparelhos com 1MB. Logo o mtkRemaker olha em outro lugar.
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #208 on: August 28, 2007, 07:00:21 AM »
Mais testes de flash no DVP3040K

Usando dois firmwares oficiais e dois propositalmente modificados (bloco MPEG) para ficarem com 1,5MB

Sempre instalando por CD (não usei o cabo)

Começando com firmware DVP5140 de 1,5MB instalado

Não lê mídia DVD

Instalei firmware DVP5140 oficial

Lê mídia DVD

Instalei firmware DVP3040K oficial

Continua lendo mídia DVD

Instalei firmware DVP3040K com 1,5MB

Continua lendo mídia DVD

Reinstalei firmware DVP5140 com 1,5MB

Não lê mais DVD

Com um editor hexa, modifiquei o byte (post anterior) que define o tamanho da flash para "E0" e instalei de novo.

Continua sem ler DVD


Conclusão até agora: Dá para ter DivX Ultra no DVP3040K, mas em um firmware pouco melhor que o oficial (respeitando o limite de 1MB do DVP5140), ou ter um firmware de DVP3040K bem incrementado :)


Note que eu estou usando a leitura de mídia DVD como teste porque foi o único efeito colateral que se manifestou até agora, mas podem existir outros problemas.


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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #209 on: August 28, 2007, 09:19:48 AM »
Problemas com o IDA

Eu não sei quanto ao resto de vocês, mas depois que eu instalei o IDA, meu Windows ficou ainda mais esquisito que o habitual.

Antes do IDA eu já tinha um problema sem solução: As hints/tooltips só aparecem quando querem. Mas surgiram outros.

Com o IDA aberto, dependendo da combinação de outros programas abertos, todo tipo de coisa esquisita acontece.

  • Às vezes o Delphi dá uma grande variedade de erros sem sentido e entra em colapso;
  • às vezes "Pesquisar" do Windows abre mas não exibe as opções;
  • Às vezes as caixas de diálogo (abrir, salvar, etc) dos programas (qualquer um, aleatoriamente) não querem abrir;
  • Etc, etc, etc.

A solução é sempre fechar alguns programas. Até parece o que acontece com o Windows 9X, quando os recursos do sistema são drenados e você tem que fechar algumas coisas para recuperá-los. Nunca soube de algo desse tipo ocorrendo com o Windows XP/2000, mas acontece na minha máquina por causa do IDA.

Eu tenho 1GB de RAM nesta máquina.

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 fabianr

  • Novato
  • *
  • Posts: 9
  • Aprovação: +0/-0
    • View Profile
Re: Firmware: log de descobertas
« Reply #210 on: August 28, 2007, 09:12:23 PM »
O tamanho da flash do DVP3040

Eu pesquisei o assunto, mas a melhor informação que obtive (praticamente a única), foi este post de Lisa_tv.


Hola  Jefferson... mirando el fw del 3040k encontre el codigo tambien en los otros bancos:

B1:2294
B2:2294
B3:2294
B4:2294
                   
No lo mire en el 5140 pero debe ser igual.... Cuando modficaste el byte F0 en el 5140 de 1.5MB lo hiciste
en todos los bancos?

Saludos,
FabianR
« Last Edit: August 29, 2007, 02:09:11 AM by Jefferson »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #211 on: August 29, 2007, 02:16:17 AM »
Hola  Jefferson... mirando el fw del 3040k encontre el codigo tambien en los otros bancos:

B1:2294
B2:2294
B3:2294
B4:2294
                   
No lo mire en el 5140 pero debe ser igual.... Cuando modficaste el byte F0 en el 5140 de 1.5MB lo hiciste
en todos los bancos?

Saludos,
FabianR

Não tinha. Nem sequer vi isso.

Eu fiz o teste agora e nada mudou.
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #212 on: August 30, 2007, 09:28:04 AM »
Firmwares Philips: Controle das Setas

Um mês atrás eu identifiquei as rotinas que exibem as setas do browser e expliquei aqui como movê-las. Mas ficaram faltando  respostas para alguns problemas, que espero ter solucionado agora.

Neste post eu vou introduzir três novas rotinas, temporariamente batizadas por mim por não conhecer nenhum trabalho anterior a respeito no grupo MT13x9:

  • ShowIcon - Espera coordenadas X e Y, janela e ícone a ser exibido;
  • ClearRect2 - Muito parecida com ClearRect, mas recebe os parâmetros de forma diferente. Enquanto ClearRect espera pelas coordenadas do ponto superior esquerdo do retângulo mais sua largura e altura, ClearRect2 recebe as coordenadas do ponto superior esquerdo e do ponto inferior direito. São duas formas de se fazer a mesma coisa. Deve haver alguma diferença para o firmware optar por usar uma ou outra, mas não captei ainda (exceto a troca dos registradores por endereços XRAM).
  • Arrows_Control - A rotina que explico adiante.

Arrows_Control

Esta rotina é responsável pela exibição das setas e é dividida em quatro sub-rotinas:

  • Arrows_ShowBoth - Exibe as duas setas;
  • Arrows_ShowUp - Exibe apenas a seta superior
  • Arrows_ShowDown - Exibe apenas a seta inferior
  • Arrows_Clear - Apaga as duas setas;

Arrows_Clear é a principal novidade deste post em relação ao meu post anterior sobre o assunto. Este procedimento desenha um retângulo acima e um retângulo abaixo da lista de arquivos, com o propósito de apagar as setas. O rpoblema é que quando mudamos as coordenadas das setas precisamos mudar as coordenadas desses retângulos também, senão as setas nunca vão ser apagadas quando você chegar no topo ou no fundo da lista de arquivos. 

A montagem abaixo mostra meu software MTK Patcher exibindo os dois retângulos criados por Arrows_Clear:



Para encontrar Arrows_Control na maioria dos firmwares Philips (exceto PET725), procure por
02 ? ? 14 70 03 02 ? ? 14 60 03 02.
O método que ensinei no post anterior, que requeria saber os números dos ícones com as setas, não é mais necessário.
 
Eu comentei o código abaixo (DVP5960/37) de forma a ser auto-explicativo:

B1:9E44             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:9E44
B1:9E44
B1:9E44             Arrows_Control:               ; CODE XREF: B1_89A3+5Dp
B1:9E44                                           ; B1_89A3+117p
B1:9E44 EF          mov     A, R7                 ; Esta rotina recebe um valor de 1 a 4 em R7, que determina o que será feito
B1:9E45 54 03       anl     A, #3
B1:9E47 FF          mov     R7, A
B1:9E48 60 44       jz      Arrows_Clear          ; Se R7 tinha #4
B1:9E4A 14          dec     A
B1:9E4B 70 03       jnz     B1_9E50
B1:9E4D 02 9E E1    ljmp    Arrows_ShowUP         ; Se R7 tinha #1
B1:9E50             ; ---------------------------------------------------------------------------
B1:9E50
B1:9E50             B1_9E50:                      ; CODE XREF: Arrows_Control+7j
B1:9E50 14          dec     A
B1:9E51 70 03       jnz     B1_9E56
B1:9E53 02 9E FA    ljmp    Arrows_ShowDown       ; Se R7 tinha #2
B1:9E56             ; ---------------------------------------------------------------------------
B1:9E56
B1:9E56             B1_9E56:                      ; CODE XREF: Arrows_Control+Dj
B1:9E56 14          dec     A
B1:9E57 60 03       jz      Arrows_ShowBoth       ; Se R7 tinha #3
B1:9E59 02 9F 13    ljmp    FunctionRET
B1:9E5C             ; ---------------------------------------------------------------------------
B1:9E5C
B1:9E5C             Arrows_ShowBoth:              ; CODE XREF: Arrows_Control+13j
B1:9E5C 90 FC 76    mov     DPTR, #XRAM_FC76      ; CoordX1.hiByte
B1:9E5F E4          clr     A
B1:9E60 F0          movx    @DPTR, A
B1:9E61 A3          inc     DPTR
B1:9E62 74 B4       mov     A, #0xB4 ; '¦'
B1:9E64 F0          movx    @DPTR, A
B1:9E65 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:9E68 E4          clr     A
B1:9E69 F0          movx    @DPTR, A
B1:9E6A A3          inc     DPTR
B1:9E6B 74 E8       mov     A, #0xE8 ; 'Þ'
B1:9E6D F0          movx    @DPTR, A
B1:9E6E 7D 25       mov     R5, #0x25 ; '%'       ; Seta inferior (ver no mtkremaker)
B1:9E70 7F 0F       mov     R7, #0xF
B1:9E72 12 1E BA    lcall   ShowIconB1BS
B1:9E75 90 FC 76    mov     DPTR, #XRAM_FC76      ; CoordX1.hiByte
B1:9E78 E4          clr     A
B1:9E79 F0          movx    @DPTR, A
B1:9E7A A3          inc     DPTR
B1:9E7B 74 B4       mov     A, #0xB4 ; '¦'
B1:9E7D F0          movx    @DPTR, A
B1:9E7E 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:9E81 E4          clr     A
B1:9E82 F0          movx    @DPTR, A
B1:9E83 A3          inc     DPTR
B1:9E84 74 36       mov     A, #0x36 ; '6'
B1:9E86 F0          movx    @DPTR, A
B1:9E87 7D 26       mov     R5, #0x26 ; '&'       ; Seta superior (ver no mtkremaker)
B1:9E89 7F 0F       mov     R7, #0xF              ; janela
B1:9E8B 02 1E BA    ljmp    ShowIconB1BS
B1:9E8E             ; ---------------------------------------------------------------------------
B1:9E8E
B1:9E8E             Arrows_Clear:                 ; CODE XREF: Arrows_Control+4j
B1:9E8E 90 FC 76    mov     DPTR, #XRAM_FC76      ; CoordX1.hiByte
B1:9E91 E4          clr     A
B1:9E92 F0          movx    @DPTR, A
B1:9E93 A3          inc     DPTR
B1:9E94 74 1E       mov     A, #0x1E
B1:9E96 F0          movx    @DPTR, A
B1:9E97 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:9E9A E4          clr     A
B1:9E9B F0          movx    @DPTR, A
B1:9E9C A3          inc     DPTR
B1:9E9D 74 3E       mov     A, #0x3E ; '>'
B1:9E9F F0          movx    @DPTR, A              ; Canto Superior Esquerdo= 30,62
B1:9EA0 90 FC 7C    mov     DPTR, #XRAM_FC7C      ; CoordX2.HiByte
B1:9EA3 74 01       mov     A, #1
B1:9EA5 F0          movx    @DPTR, A
B1:9EA6 A3          inc     DPTR
B1:9EA7 74 4A       mov     A, #0x4A ; 'J'
B1:9EA9 F0          movx    @DPTR, A
B1:9EAA 90 FC 80    mov     DPTR, #XRAM_FC80      ; CoordY2.HiByte
B1:9EAD E4          clr     A
B1:9EAE F0          movx    @DPTR, A
B1:9EAF A3          inc     DPTR
B1:9EB0 74 5C       mov     A, #0x5C ; '\'
B1:9EB2 F0          movx    @DPTR, A              ; Canto Inferior Direito: 330x92
B1:9EB3 D2 75       setb    RAM_2E.5
B1:9EB5 E4          clr     A
B1:9EB6 90 FB FD    mov     DPTR, #XRAM_FBFD
B1:9EB9 F0          movx    @DPTR, A
B1:9EBA FB          mov     R3, A
B1:9EBB FD          mov     R5, A
B1:9EBC 7F 0F       mov     R7, #0xF
B1:9EBE 12 1D 52    lcall   ClearRect2_B1BS       ; Apaga a seta superior, desenhando um retângulo em sua posição
B1:9EC1 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:9EC4 E4          clr     A
B1:9EC5 F0          movx    @DPTR, A
B1:9EC6 A3          inc     DPTR
B1:9EC7 74 DE       mov     A, #0xDE ; 'Ì'
B1:9EC9 F0          movx    @DPTR, A              ; Canto Superior Esquerdo agora é = 30,222
B1:9ECA 90 FC 80    mov     DPTR, #XRAM_FC80      ; CoordY2.HiByte
B1:9ECD E4          clr     A
B1:9ECE F0          movx    @DPTR, A
B1:9ECF A3          inc     DPTR
B1:9ED0 74 FC       mov     A, #0xFC ; '³'
B1:9ED2 F0          movx    @DPTR, A              ; Canto Inferior Direito agora é: 330x252
B1:9ED3 D2 75       setb    RAM_2E.5
B1:9ED5 E4          clr     A
B1:9ED6 90 FB FD    mov     DPTR, #XRAM_FBFD
B1:9ED9 F0          movx    @DPTR, A
B1:9EDA FB          mov     R3, A
B1:9EDB FD          mov     R5, A
B1:9EDC 7F 0F       mov     R7, #0xF
B1:9EDE 02 1D 52    ljmp    ClearRect2_B1BS       ; Apaga a seta inferior
B1:9EE1             ; ---------------------------------------------------------------------------
B1:9EE1
B1:9EE1             Arrows_ShowUP:                ; CODE XREF: Arrows_Control+9j
B1:9EE1 90 FC 76    mov     DPTR, #XRAM_FC76      ; CoordX1.hiByte
B1:9EE4 E4          clr     A
B1:9EE5 F0          movx    @DPTR, A
B1:9EE6 A3          inc     DPTR                  ; XRAM_FC77
B1:9EE7 74 B4       mov     A, #0xB4 ; '¦'
B1:9EE9 F0          movx    @DPTR, A
B1:9EEA 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:9EED E4          clr     A
B1:9EEE F0          movx    @DPTR, A
B1:9EEF A3          inc     DPTR
B1:9EF0 74 36       mov     A, #0x36 ; '6'
B1:9EF2 F0          movx    @DPTR, A
B1:9EF3 7D 26       mov     R5, #0x26 ; '&'       ; Seta inferior
B1:9EF5 7F 0F       mov     R7, #0xF
B1:9EF7 02 1E BA    ljmp    ShowIconB1BS
B1:9EFA             ; ---------------------------------------------------------------------------
B1:9EFA
B1:9EFA             Arrows_ShowDown:              ; CODE XREF: Arrows_Control+Fj
B1:9EFA 90 FC 76    mov     DPTR, #XRAM_FC76      ; CoordX1.hiByte
B1:9EFD E4          clr     A
B1:9EFE F0          movx    @DPTR, A
B1:9EFF A3          inc     DPTR
B1:9F00 74 B4       mov     A, #0xB4 ; '¦'
B1:9F02 F0          movx    @DPTR, A
B1:9F03 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:9F06 E4          clr     A
B1:9F07 F0          movx    @DPTR, A
B1:9F08 A3          inc     DPTR
B1:9F09 74 E8       mov     A, #0xE8 ; 'Þ'
B1:9F0B F0          movx    @DPTR, A
B1:9F0C 7D 25       mov     R5, #0x25 ; '%'       ; Seta superior
B1:9F0E 7F 0F       mov     R7, #0xF
B1:9F10 12 1E BA    lcall   ShowIconB1BS
B1:9F13
B1:9F13             FunctionRET:                  ; CODE XREF: Arrows_Control+15j
B1:9F13 22          ret
B1:9F13             ; End of function Arrows_Control



Eu descobri o funcionamento da rotina enquanto implementava a movimentação das setas no MTK Patcher. Eu já fiz isso, mas resta um problema: Por causa da forma como as rotinas são chamadas não é possível colocar as setas em qualquer lugar da tela por enquanto (talvez em um versão futura). 

Problema 1:  X1, da forma como está escrita a rotina, não pode ser maior que 255, embora X2 possa. Então se eu quiser colocar os ícones no canto direito da tela, tenho que desenhar um retângulo começando na coordenada 255 até eles. Se X1 pudesse ser maior que 255 eu poderia desenha um retângulo da largura exata do ícone.

Problema 2: Nem Y1 nem Y2 podem ser maiores que 255. Assim os ícones precisam ficar mais ou menos nos três quartos superiores da tela.

Os dois problemas podem ser resolvidos através de patches. O Problema 1 é bem simples, mas o Problema 2 requer acréscimo de código.

Como se livrar das setas

Isso é o mais simples. No início de Arrows_Control, substitua a instrução mov por uma ret, assim:

B1:9E44             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:9E44
B1:9E44
B1:9E44             Arrows_Control:               ; CODE XREF: B1_89A3+5Dp
B1:9E44                                           ; B1_89A3+117p
B1:9E44 22          ret
B1:9E45 54 03       anl     A, #3
B1:9E47 FF          mov     R7, A
B1:9E48 60 44       jz      Arrows_Clear          ; Se R7 tinha #4
B1:9E4A 14          dec     A
B1:9E4B 70 03       jnz     B1_9E50
B1:9E4D 02 9E E1    ljmp    Arrows_ShowUP         ; Se R7 tinha #1


E nada do código será executado. Mas aí é recomendável que você ative a exibição da scrollbar no firmware, como eu já expliquei.

Isso tudo já foi implementado na próxima versão 0.12 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
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #213 on: August 30, 2007, 11:06:15 AM »
Felizmente eu consegui me livrar de dos problemas que estava tendo com o filebrowser...

http://ryan.com.br/smf/index.php?topic=179.msg9172233#msg9172233

Quote from: jmaraujo
1) Quando o primer "lugar" do filebrowser é um diretório, a primeira linha não é visualizada (é visualizada mas logo apagada). O problema não acontece quando o primer lugar for um arquivo.
O primeiro problema era essa rotina de limpeza maldita que custou achar... Eu buscava rotinas que chamassem PS_ClearRect!!!

Não sei se é a mesma que voçê achou porque não comparei. Eu so achei ela porque contei com a ajuda visual invaluable do MTK Patcher!  ;D Sem ele não tería achado nunca...  :P

No momento que inseri as coordenadas já sabía que o problema estava aí. O que eu fiz foi zerar as coordenadas:

ROM:988F             ROM_988F:                               ; CODE XREF: ROM_9845+4j
ROM:988F 90 FB EC              mov   DPTR, #0xFBEC           ; x1 High
ROM:9892 E4                    clr   A
ROM:9893 F0                    movx  @DPTR, A
ROM:9894 A3                    inc   DPTR
ROM:9895 74 00                 mov   A, #0                   ; x1 = 0x001E
ROM:9897 F0                    movx  @DPTR, A
ROM:9898 90 FB EF              mov   DPTR, #0xFBEF           ; y1 High
ROM:989B E4                    clr   A
ROM:989C F0                    movx  @DPTR, A
ROM:989D A3                    inc   DPTR
ROM:989E 74 00                 mov   A, #0                   ; y1 = 0x003E
ROM:98A0 F0                    movx  @DPTR, A
ROM:98A1 90 FB F3              mov   DPTR, #0xFBF3           ; x2 High
ROM:98A4 74 00                 mov   A, #0
ROM:98A6 F0                    movx  @DPTR, A
ROM:98A7 A3                    inc   DPTR
ROM:98A8 74 00                 mov   A, #0                   ; x2 = 0x014A
ROM:98AA F0                    movx  @DPTR, A
ROM:98AB 90 FB F7              mov   DPTR, #0xFBF7           ; y2 High
ROM:98AE E4                    clr   A
ROM:98AF F0                    movx  @DPTR, A
ROM:98B0 A3                    inc   DPTR
ROM:98B1 74 00                 mov   A, #0                   ; y2 = 0x005C
ROM:98B3 F0                    movx  @DPTR, A
ROM:98B4 D2 75                 setb  RAM_2E.5
ROM:98B6 E4                    clr   A
ROM:98B7 90 FB A4              mov   DPTR, #0xFBA4
ROM:98BA F0                    movx  @DPTR, A
ROM:98BB FB                    mov   R3, A
ROM:98BC FD                    mov   R5, A
ROM:98BD 7F 0E                 mov   R7, #0xE
ROM:98BF 12 08 41              lcall PS_Rectangle
ROM:98BF
ROM:98C2 90 FB EF              mov   DPTR, #0xFBEF           ; y1 High
ROM:98C5 E4                    clr   A
ROM:98C6 F0                    movx  @DPTR, A
ROM:98C7 A3                    inc   DPTR
ROM:98C8 74 00                 mov   A, #0                   ; y1 = 0x00DE
ROM:98CA F0                    movx  @DPTR, A
ROM:98CB 90 FB F7              mov   DPTR, #0xFBF7           ; y2 High
ROM:98CE E4                    clr   A
ROM:98CF F0                    movx  @DPTR, A
ROM:98D0 A3                    inc   DPTR
ROM:98D1 74 00                 mov   A, #0                   ; y2 = 0x00FC
ROM:98D3 F0                    movx  @DPTR, A
ROM:98D4 D2 75                 setb  RAM_2E.5
ROM:98D6 E4                    clr   A
ROM:98D7 90 FB A4              mov   DPTR, #0xFBA4
ROM:98DA F0                    movx  @DPTR, A
ROM:98DB FB                    mov   R3, A
ROM:98DC FD                    mov   R5, A
ROM:98DD 7F 0E                 mov   R7, #0xE
ROM:98DF 02 08 41              ljmp  PS_Rectangle


Porém no meu caso não tive nenhum problema em por as setas na parte direita da tela. Mais tarde vou postar uma fotografía.

Quote from: jmaraujo
2) O primeiro arquivo fica seleccionado em cor laranja, mas o segundo arquivo também fica laranja (como se estivese seleccionado). Esse comportamente somente ocorre quando o primer arquivo for seleccionado. Ao seleccionar o segundo, tercer e quarto arquivos o comportamento do filebrowser é normal (somente o arquivo seleccionado fica laranja, os restantes ficam com a cor normal).

O segundo problema era um erro nas coordenadas do primeiro arquivo do filelist. Como as coordenadas também controlam o "selection bar", a barra era mais grande do que devería.

So está faltando um pequeno detalhe: O browser se comporta normalmente, exceto quando estou navegando de baixo para cima (de uma página inferior para uma superior), quando o filelist atua como se fosse de quatro arquivos.
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #214 on: August 30, 2007, 11:54:54 AM »

Não sei se é a mesma que voçê achou porque não comparei.

É a mesma coisa, mas no caso do DVP5100 existe uma estranha diferença.

No DVP5960, a rotina que batizei de "ClearRect2" (e você chama de "PS_Rectangle") parece ser completamente independente. Já no DVP5100, pelo menos na análise que fiz aqui, é a mesma rotina OSD_textColor!

O DVP5960 usa inclusive endereços XRAM distintos para as duas rotinas.

Isso me fez entender a razão de existirem duas rotinas. A rotina que chamei (erradamente) de "ClearRect2", na verdade não serve apenas para limpar um retângulo. Colocado as cores corretas nos respectivos endereços XRAM deve ser possível desenhar um retângulo de uma determinada cor. Eu vou renomear minha rotina para algo mais apropriado.

A propósito, você sabe o que raios significa esse prefixo "PS_" em "PS_Rectangle"? Eu vejo isso com frequencia sendo usado pelo MT13x9 mas não entendi ainda.

Eu so achei ela porque contei com a ajuda visual invaluable do MTK Patcher!  ;D Sem ele não tería achado nunca...  :P

Obrigado. É bom saber que ajuda mais alguém :)

Para quem faz um patch casual aquilo parece inútil. Mas para quem analisa o assembly, facilita muuuito mesmo. Foi dessa necessidade que nasceu o MTK Patcher :)


Porém no meu caso não tive nenhum problema em por as setas na parte direita da tela. Mais tarde vou postar uma fotografía.

Isso é muito estranho. Você anulou o retângulo e por isso as setas não teriam como ser apagadas. Outro dia eu vou analisar o firmware do DVP5100.

O segundo problema era um erro nas coordenadas do primeiro arquivo do filelist. Como as coordenadas também controlam o "selection bar", a barra era mais grande do que devería.

Verifique se a nova versão do MTK Patcher ajuda a fazer isso sem erros no DVP5100. Mas eu não implementei nenhuma redução na distância entre as linhas, nem na altura delas.

So está faltando um pequeno detalhe: O browser se comporta normalmente, exceto quando estou navegando de baixo para cima (de uma página inferior para uma superior), quando o filelist atua como se fosse de quatro arquivos.

Ahhhh... você está falando da sua nova versão com 6 arquivos..
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #215 on: August 30, 2007, 12:13:16 PM »
Consultando o documento "PScalls.doc" de Lisatv, constatei que a rotina que eu havia nomeado "ClearRect2" é mesmo a "PS_Rectangle", como jmaraujo havia nomeado. Mais tarde eu farei as devidas correções no post.

Eu cheguei a "PSCalls.doc" fazendo uma busca de texto por "PS_Rectangle" em todo o meu diretório de documentos. Essa é uma rotina da qual se fala pouquissimo (só achei quatro posts no MT13x9).

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
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #216 on: August 30, 2007, 12:41:21 PM »
Isso é muito estranho. Você anulou o retângulo e por isso as setas não teriam como ser apagadas. Outro dia eu vou analisar o firmware do DVP5100.
É, a rotina parece ser básicamente a mesma. No meu caso as setas sao limpas pela propia rotina de limpeza dos arquivos. Cada vez que voçê troca de página a rotina limpa a lista de arquivos, ¿certo?, e no meu caso a área é suficientemente larga para incluir as setas. Se for preciso, novas setas são desenhadas. Ao trocar de página o procedimento se repete. (So achei um "bug"... ao voltar do menú apareceu uma seta que não devia)

Estou postando as fotos que prometí. Não são de boa qualidade porque não sei tirar fotos da tv (acho que apagar todas as luzes não ajuda muito).

No DVP5960, a rotina que batizei de "ClearRect2" (e você chama de "PS_Rectangle") parece ser completamente independente. Já no DVP5100, pelo menos na análise que fiz aqui, é a mesma rotina OSD_textColor!
É possivel. Nos meus analises não achei nenhuma rotina chamada OSD_TextColor, achei OSD_SetColor (B3:D473), não é a mesma coisa, ¿certo? (Tenho PS_Rectangle em B3:C794 e PS_Rectangle2 em B3:E420)

Algums dos nomes eu tirei do documento PS_Calls.doc que estou anexando...

A propósito, você sabe o que raios significa esse prefixo "PS_" em "PS_Rectangle"? Eu vejo isso com frequencia sendo usado pelo MT13x9 mas não entendi ainda.
Eu sabía o significado exato de PS, mas agora não estou lembrando...

Update: Lembrei! PS = Packet Switching... Enquanto postava a mensagem vi que você achou o documento que anexei...
« Last Edit: August 30, 2007, 12:42:55 PM by jmaraujo »
Fórum do DVP5100
(novo endereço)

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #217 on: August 30, 2007, 12:47:46 PM »
Achei um firmware original e modificado (para comparação) com a posição dos MP3 tags separados (movidos separadamente).

Ainda não verifiquei mas se funcionar, amanhã eu posto aquí como foi feito em esse firmware... Todo o procedimento é feito na rotina MP3_TagsDisplay que Jefferson identificou (ver páginas anteriores).

No final da rotina a um jump para novo código no final do banco, mas acho que a parte nova é somente para adicionar as etiquetas "Album", "Song", "Artist" etc. antes dos tags mp3.
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #218 on: August 30, 2007, 01:05:29 PM »
É, a rotina parece ser básicamente a mesma. No meu caso as setas sao limpas pela propia rotina de limpeza dos arquivos. Cada vez que voçê troca de página a rotina limpa a lista de arquivos, ¿certo?,  e no meu caso a área é suficientemente larga para incluir as setas.

Na verdade, pelo menos na maioria dos firmwares, Dir_DispFileList chama ClearRect desenhando um retângulo em cima de cada nome de arquivo, em um loop. É possível que no caso do DVP5100 o loop comece uma linha antes e termine uma linha depois. Isso resolveria o problema.

Isso está explicado no documento "Info - File Browser.rtf", do MaBreaker:

ROM:B663 7B 1E                 mov   R3, #0x1E
ROM:B665 7A 00                 mov   R2, #0x00       ; R2R3 = Height = 0x001E = 30
ROM:B667 7D 1C                 mov   R5, #0x1C
ROM:B669 7C 01                 mov   R4, #0x01       ; R4R5 = Width  = 0x011C = 284
ROM:B669                                             ; 310 - 26
ROM:B66B 7F 0E                 mov   R7, #0x0E       ; Cleared area is
ROM:B66B                                             ; from 1A to (1A+11C=136)
ROM:B66D 12 05 71              lcall OSD_Clear_DirLine
ROM:B670 90 FB 52              mov   DPTR, #XRAM_FB52
ROM:B673 E0                    movx  A, @DPTR
ROM:B674 04                    inc   A
ROM:B675 F0                    movx  @DPTR, A
ROM:B676 E0                    movx  A, @DPTR
ROM:B677 C3                    clr   C
ROM:B678 94 06                 subb  A, #6
ROM:B67A 40 AB                 jc    Loop_clear_6_lines
ROM:B67C 22                    ret


Nota: Mabreaker chama a rotina de OSD_ClearLine ou OSD_ClearDirLine (ele faz uma confusão com os dois nomes no mesmo texto). Para completar, no documento "Info - File Browser (HowTo).rtf" ele chama a mesma rotina de OSD_Clear_Filename. Imagine a confusão que isso cria na cabeça de quem está aprendendo. Não é que MaBreaker não saiba o que está fazendo (ele sabe), mas seus documentos são muito antigos e desatualizados e se perde muito tempo com as inconsistências.

No DVP5960 é ClearRect que faz o serviço:

B1:E138 93          movc    A, @A+DPTR
B1:E139 90 FC 79    mov     DPTR, #XRAM_FC79      ; CoordY1.HiByte
B1:E13C CF          xch     A, R7                 ; A coordenada não é fixa, porque esta rotina é chamada
B1:E13C                                           ; uma vez para cada linha do browser
B1:E13D F0          movx    @DPTR, A
B1:E13E A3          inc     DPTR
B1:E13F EF          mov     A, R7
B1:E140 F0          movx    @DPTR, A
B1:E141 7B 1E       mov     R3, #0x1E             ; É aqui que o retângulo de cada linha da lista de arquivos é apagado
B1:E143 7A 00       mov     R2, #0
B1:E145 7D 2C       mov     R5, #0x2C ; ','       ; R5 e R4 precisam ser mudados se aumentarmos o número de caracteres
B1:E147 7C 01       mov     R4, #1
B1:E149 7F 0F       mov     R7, #0xF              ; Janela 0xF
B1:E14B 12 1E 54    lcall   ClearRectB1BS
B1:E14E 90 FB AF    mov     DPTR, #XRAM_FBAF
B1:E151 E0          movx    A, @DPTR
B1:E152 04          inc     A
B1:E153 F0          movx    @DPTR, A
B1:E154 E0          movx    A, @DPTR
B1:E155 C3          clr     C
B1:E156 94 04       subb    A, #4                 ; São 4 linhas no DVP5960
B1:E158 40 AB       jc      B1_E105
B1:E15A 22          ret


No DVP5100 parece ser a mesma coisa, com quatro passagens pelo loop (seria preciso haver duas a mais). Daí não sei ainda como suas setas são apagadas.

B1:D9CA 7B 1E       mov     R3, #0x1E
B1:D9CC 7A 00       mov     R2, #0
B1:D9CE 7D 2C       mov     R5, #0x2C ; ','
B1:D9D0 7C 01       mov     R4, #1
B1:D9D2 7F 0E       mov     R7, #0xE
B1:D9D4 12 08 11    lcall   ClearRectB1BS
B1:D9D7 90 FB 6C    mov     DPTR, #XRAM_FB6C
B1:D9DA E0          movx    A, @DPTR
B1:D9DB 04          inc     A
B1:D9DC F0          movx    @DPTR, A
B1:D9DD E0          movx    A, @DPTR
B1:D9DE C3          clr     C
B1:D9DF 94 04       subb    A, #4                 ; Número de arquivos
B1:D9E1 40 AB       jc      B1_D98E
B1:D9E3 22          ret



Update: Lembrei! PS = Packet Switching...

Obrigado!

Mas não faz o menor sentido para mim. Acho que vou usar os nomes sem esse prefixo, quando não criar nenhuma ambiguidade.
« Last Edit: August 30, 2007, 02:17:54 PM by 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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #219 on: August 30, 2007, 01:18:22 PM »
É possivel. Nos meus analises não achei nenhuma rotina chamada OSD_TextColor, achei OSD_SetColor (B3:D473), não é a mesma coisa, ¿certo? (Tenho PS_Rectangle em B3:C794 e PS_Rectangle2 em B3:E420)

Não conheço "OSD_SetColor". Fiz uma busca de texto nos meus documentos e não achei nenhuma referência. Também não retorna nenhum resultado na pesquisa do grupo MT13x9.

Eu acho que o que você chama de "OSD_SetColor" é a rotina "OSD_TextColor". Veja que esse último apareçe no documento "Info - File Browser.doc".

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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #220 on: August 30, 2007, 01:41:55 PM »
Eu verifiquei todos os firmwares Philips que fazem parte da minha bateria de testes e o resultado foi este:

Rotina PS_Rectangle e OSD_textColor são uma só:

DVP5100
DVP3040

Rotinas distintas:

DVP5140
DVP5960
DVP5965
DVP5980


Não tenho como verificar o PET725 agora porque a única pista de PS_Rectangle que eu tenho é a rotina Arrows_Control, que aparentemente nem existe no PET725.
« Last Edit: August 30, 2007, 01:44:17 PM by 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 jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #221 on: August 30, 2007, 03:07:41 PM »
Eu acho que o que você chama de "OSD_SetColor" é a rotina "OSD_TextColor". Veja que esse último apareçe no documento "Info - File Browser.doc".
Já me deparei varias vezes com acabar encontrando uma rotina com nome distinto dado pelos modders.

Eu não sabía que nome usar é acabei usando a primeira referencia que achei: "OSD_SetColor" na verdade e chamado PS_SetColor (é a PS_B_0x09) no documento PS_Calls do LisaTV.

Aquí é mencionado um par de vezes...
http://tech.groups.yahoo.com/group/mt13x9/msearch?query=setcolor&submit=Search&charset=windows-1252
« Last Edit: August 30, 2007, 03:10:29 PM by jmaraujo »
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #222 on: August 30, 2007, 07:37:09 PM »

So está faltando um pequeno detalhe: O browser se comporta normalmente, exceto quando estou navegando de baixo para cima (de uma página inferior para uma superior), quando o filelist atua como se fosse de quatro arquivos.

Eu implementei 6 linhas no firmware do DVP5960 e estou com o mesmo problema. :blink:
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
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #223 on: August 31, 2007, 04:45:48 AM »
É, a rotina parece ser básicamente a mesma. No meu caso as setas sao limpas pela propia rotina de limpeza dos arquivos. Cada vez que voçê troca de página a rotina limpa a lista de arquivos, ¿certo?,  e no meu caso a área é suficientemente larga para incluir as setas.

No DVP5100 parece ser a mesma coisa, com quatro passagens pelo loop (seria preciso haver duas a mais). Daí não sei ainda como suas setas são apagadas.

B1:D9CA 7B 1E       mov     R3, #0x1E
B1:D9CC 7A 00       mov     R2, #0
B1:D9CE 7D 2C       mov     R5, #0x2C ; ','
B1:D9D0 7C 01       mov     R4, #1
B1:D9D2 7F 0E       mov     R7, #0xE
B1:D9D4 12 08 11    lcall   ClearRectB1BS
B1:D9D7 90 FB 6C    mov     DPTR, #XRAM_FB6C
B1:D9DA E0          movx    A, @DPTR
B1:D9DB 04          inc     A
B1:D9DC F0          movx    @DPTR, A
B1:D9DD E0          movx    A, @DPTR
B1:D9DE C3          clr     C
B1:D9DF 94 04       subb    A, #4                 ; Número de arquivos
B1:D9E1 40 AB       jc      B1_D98E
B1:D9E3 22          ret

Exato, mas no meu caso as setas estam na mesma altura que os arquivos 1 e 6 da filelist... Estou anexando imagem (Nota: As setas e a segunda -sexta, na verdade- área de limpeza foram adicionadas com Photoshop).

Também é preciso mudar o "subb A, #4" (94 04) por "subb A, #6" (94 06).

ROM:D9CA             Área de limpieza del filebrowser
ROM:D9CA 7B 1E                 mov   R3, #0x1E
ROM:D9CC 7A 00                 mov   R2, #0
ROM:D9CE 7D 36                 mov   R5, #0x36 ; '6'
ROM:D9D0 7C 02                 mov   R4, #2
ROM:D9D2 7F 0E                 mov   R7, #0xE
ROM:D9D4 12 08 11              lcall PS_ClearRect            ; Limpia lista de archivos
ROM:D9D4
ROM:D9D7 90 FB 6C              mov   DPTR, #0xFB6C
ROM:D9DA E0                    movx  A, @DPTR
ROM:D9DB 04                    inc   A
ROM:D9DC F0                    movx  @DPTR, A
ROM:D9DD E0                    movx  A, @DPTR
ROM:D9DE C3                    clr   C
ROM:D9DF 94 06                 subb  A, #6
ROM:D9E1 40 AB                 jc    Loop_clear_6_lines
ROM:D9E1
ROM:D9E3 22                    ret
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #224 on: August 31, 2007, 12:45:53 PM »

So está faltando um pequeno detalhe: O browser se comporta normalmente, exceto quando estou navegando de baixo para cima (de uma página inferior para uma superior), quando o filelist atua como se fosse de quatro arquivos.

Eu implementei 6 linhas no firmware do DVP5960 e estou com o mesmo problema. :blink:

Eu coloquei 8 linhas no Proview DVP-858 e além do problema que se manifesta no Philips, ganhei mais um: Ao selecionar o sétimo ou o oitavo arquivos da lista o browser pára de funcionar.

O player continua funcionando. Posso entrar no setup. Mas o browser não responde mais a não ser que eu desligue o aparelho.

As oito linhas:



« Last Edit: August 31, 2007, 02:22:24 PM by 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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #225 on: August 31, 2007, 02:55:36 PM »
O problema não é exclusivo do Proview. Coloquei 8 linhas no DVP5960 e este também congela o browser se eu escolher o sétimo ou o oitavo arquivo da lista.

O DVP5960 com oito linhas (usando background do firmware eneris para DVP5965):



Estou sem pistas de onde olhar para corrigir o problema.
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #226 on: August 31, 2007, 02:58:44 PM »

Exato, mas no meu caso as setas estam na mesma altura que os arquivos 1 e 6 da filelist... Estou anexando imagem (Nota: As setas e a segunda -sexta, na verdade- área de limpeza foram adicionadas com Photoshop).

Ahhhh... Certo. Isso explica como as setas são apagadas  :)
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
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #227 on: August 31, 2007, 05:51:10 PM »
O problema não é exclusivo do Proview. Coloquei 8 linhas no DVP5960 e este também congela o browser se eu escolher o sétimo ou o oitavo arquivo da lista.

O DVP5960 com oito linhas (usando background do firmware eneris para DVP5965):



Estou sem pistas de onde olhar para corrigir o problema.
Busque por "8 rows" no grupo do Yahoo! Há uma discussão ao respeito.

Update: A discussão começa com o assunto "Dirname mess & 8 rows" e termina como "8-rows filebrowser for Pio470/575 is almost ready"...

Off-topic: Mais tarde vou enviar por email o documento com o patch dos tags mp3. Não apliquei no firmware do DVP5100 porque achei algumas partes diferentes na rotina... O que sim consegui aplicar com éxito foi uma rotina de word wrap no RISC do DVP5140 (na minha opinião gostei mais do que o wordwrap do NA).

Um abraço.
« Last Edit: August 31, 2007, 05:55:25 PM by jmaraujo »
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #228 on: August 31, 2007, 06:02:49 PM »

Busque por "8 rows" no grupo do Yahoo! Há uma discussão ao respeito.

Ahhhh... "rows"...

Eu estava teimando com "lines"  ;D

De qualquer forma, já achei a causa do problema. Mas vou ler os tópicos no Yahoo mais tarde para ver se aprendo mais alguma coisa.

Estou testando o browser do DVP5960 com oito linhas neste momento e parece OK, com exceção do problema do retorno para a quarta linha, que você tem com o DVP5100.

Mas pelo menos não congela mais...


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 alvarux

  • Novato
  • *
  • Posts: 1
  • Aprovação: +0/-0
    • View Profile
Re: Firmware: log de descobertas
« Reply #229 on: September 01, 2007, 08:09:43 AM »
Hola Jefferson:

Yo tengo un Pioneer 578 convertido a 575 con el Firmware Mod de Guffiak.
El File Browser soporta 8 renglones y funciona perfectamente.
Aunque los firmware de Pioneer tienen sus particularidades, a lo mejor te sirva analizar ese firmware.

Salu2.

Alvaro.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #230 on: September 01, 2007, 08:11:06 AM »
MtkWindows e palettes

Na semana passada eu entendi como se localiza as palettes no firmware. É muito simples, depois que você identifica as janelas, porque cada definição de janela tem um ponteiro para a palette que usa. Então eu tive a idéia adicionar ao MTK Patcher a capacidade de criar novas palettes para acabar com o velho problema que temos de alterar uma cor em uma janela e bagunçar outras. Cada palette apenas precisa de 32 bytes livres no código e assim como os menus pode ser colocada em qualquer lugar do mesmo banco.

O que surpreendentemente eu só descobri ontem é que o mtkWindows já faz isso! :dashhead1:

Por muito tempo eu usei o mtkWindows 0.8, que não cria novas palettes e nunca usei o recurso de abrir e salvar palettes, por isso ao passar para a versão 0.8.3 eu nunca me dei conta de que havia um minúsculo botão branco adicional que cria uma nova palette no firmware, para a janela selecionada.



Usando esse simples recurso você pode ter uma palette exclusiva para a janela e não se preocupar mais com a propagação de mudanças por outras janelas.

Arghhhhh. Deveria ter notado isso há meses!  :dashhead1:





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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #231 on: September 01, 2007, 08:17:24 AM »
Hola Jefferson:

Yo tengo un Pioneer 578 convertido a 575 con el Firmware Mod de Guffiak.
El File Browser soporta 8 renglones y funciona perfectamente.
Aunque los firmware de Pioneer tienen sus particularidades, a lo mejor te sirva analizar ese firmware.

Salu2.

Alvaro.

Alvaro,


Eu ainda nem comecei a tentar entender as particularidades dos firmwares LG e Pioneer. Mesmo entre os Philips já existem variações bem complicadas de se entender e sem ter dominado o funcionamento do browser nos firmwares que eu entendo melhor, tentar encontrar as respostas em firmwares que não entendo de jeito nenhum (nem os scripts entendem) só vai me complicar  ;D

Eu preciso de um firmware com oito linhas que seja ou da Philips ou Mediatek "padrão".

Lembrando: meu único problema agora é o mesmo de jmaraujo: ao rolar o browser de baixo para cima a barra de selação começa no quarto arquivo e não no oitavo.

« Last Edit: September 01, 2007, 08:20:05 AM by 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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #232 on: September 01, 2007, 11:33:07 AM »
Tags MP3 no DVP5980

De todos os Philips, este é o que está dando mais trabalho. Embora os indicadores do tamanho das tags (após a keyword "TAG" no 8032) indiquem que este é o primeiro firmware Philips com suporte a tags com mais de 30 caracteres (diz suportar 60), não consigo nem chegar aos 30 que dei ao DVP5960. Existe algum limitador extra que não encontrei ainda.

Eu investiguei a memória do aparelho com o MTKDump e as tags aparecem com 30 caracteres cada. Logo não deve ser um problema 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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #233 on: September 01, 2007, 10:18:50 PM »
Todo este trecho do firmware do Proview DVP-858 pode ser apagado para usar o espaço em outra coisa:

B1:A143 90 FC 44    mov     DPTR, #XRAM_FC44      ; Coordenada horizontal (HI)
B1:A146 F0          movx    @DPTR, A
B1:A147 A3          inc     DPTR
B1:A148 74 D0       mov     A, #0xD0 ; 'ð'
B1:A14A F0          movx    @DPTR, A
B1:A14B 90 FC 46    mov     DPTR, #XRAM_FC46      ; Coordenada vertical (HI)
B1:A14E E4          clr     A
B1:A14F F0          movx    @DPTR, A
B1:A150 A3          inc     DPTR
B1:A151 74 04       mov     A, #4
B1:A153 F0          movx    @DPTR, A
B1:A154 7D 12       mov     R5, #0x12             ; "Slide Show" em chinês
B1:A156 7F 11       mov     R7, #0x11
B1:A158 12 1E 22    lcall   ShowIconB1BS
B1:A15B 90 FC 44    mov     DPTR, #XRAM_FC44      ; Coordenada horizontal (HI)
B1:A15E 74 01       mov     A, #1
B1:A160 F0          movx    @DPTR, A
B1:A161 A3          inc     DPTR
B1:A162 74 38       mov     A, #0x38 ; '8'
B1:A164 F0          movx    @DPTR, A
B1:A165 90 FC 46    mov     DPTR, #XRAM_FC46      ; Coordenada vertical (HI)
B1:A168 E4          clr     A
B1:A169 F0          movx    @DPTR, A
B1:A16A A3          inc     DPTR
B1:A16B 74 04       mov     A, #4
B1:A16D F0          movx    @DPTR, A
B1:A16E 7D 13       mov     R5, #0x13             ; "Menu" em chinês
B1:A170 7F 11       mov     R7, #0x11
B1:A172 12 1E 22    lcall   ShowIconB1BS
B1:A175 90 FC 44    mov     DPTR, #XRAM_FC44      ; Coordenada horizontal (HI)
B1:A178 74 01       mov     A, #1
B1:A17A F0          movx    @DPTR, A
B1:A17B A3          inc     DPTR
B1:A17C 74 84       mov     A, #0x84 ; 'ä'
B1:A17E F0          movx    @DPTR, A
B1:A17F 90 FC 46    mov     DPTR, #XRAM_FC46      ; Coordenada vertical (HI)
B1:A182 E4          clr     A
B1:A183 F0          movx    @DPTR, A
B1:A184 A3          inc     DPTR
B1:A185 74 04       mov     A, #4
B1:A187 F0          movx    @DPTR, A
B1:A188 7D 14       mov     R5, #0x14             ; ícone "< PREV"em chinês
B1:A18A 7F 11       mov     R7, #0x11
B1:A18C 12 1E 22    lcall   ShowIconB1BS
B1:A18F 90 FC 44    mov     DPTR, #XRAM_FC44      ; Coordenada horizontal (HI)
B1:A192 74 01       mov     A, #1
B1:A194 F0          movx    @DPTR, A
B1:A195 A3          inc     DPTR
B1:A196 74 CC       mov     A, #0xCC ; '¦'
B1:A198 F0          movx    @DPTR, A
B1:A199 90 FC 46    mov     DPTR, #XRAM_FC46      ; Coordenada vertical (HI)
B1:A19C E4          clr     A
B1:A19D F0          movx    @DPTR, A
B1:A19E A3          inc     DPTR
B1:A19F 74 04       mov     A, #4
B1:A1A1 F0          movx    @DPTR, A
B1:A1A2 7D 15       mov     R5, #0x15             ; ícone "NEXT >"em chinês
B1:A1A4 7F 11       mov     R7, #0x11
B1:A1A6 02 1E 22    ljmp    ShowIconB1BS


Ele só é executado se o valor da EEPROM para "OSD Language" for "3". E o maior valor armazenado lá é "2".

De qualquer forma, quantos proprietários brasileiros iriam setar o player para chinês?  ;)
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #234 on: September 02, 2007, 10:23:15 AM »
SetMpeg4SubtitleParams e Janela de Legenda


Eu descobri um método alternativo para identificar ambos no firmware, de forma automática.


Procure por

7F xx 12 ? ? D3 22

Substituindo "xx" com 0x10 até 0x13 em um loop.

Mesmo tentando de 0x10 até 0x13 você vai encontrar uma e apenas uma ocorrência dessa string, em SetMpeg4SubtitleParams.

E quando encontrar um resultado, o número usado será a janela de legendas.

Eu já implementei esse novo método no MTK Patcher. O método que estava usando até agora ficava inutilizado se  SetMpeg4SubtitleParams tivesse sido modificada (patch de ajuste de posição vertical pelo menu).

Funciona com:

  • Punktal PK-DV246
  • Proview DVP-858
  • Lenoxx DV-406
  • Philips DVP5965
  • Philips DVP5960
  • Philips DVP5980
  • Philips DVP5140
  • Philips DVP3040
  • Philips DVP5100
  • Philips PET725
  • Philips DVP720

Não funciona com

JTEC MTK7000 (este não tem nada sequer parecido)
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #235 on: September 05, 2007, 07:50:24 PM »
Como localizar de uma vez só:
  • ARM_PutChar
  • OSD_text_params
  • OSD_text_params_ARM
  • OSD_Text_Color (ou OSD_SetColor)
  • O número da janela do browser;
  • As cores usadas no texto do browser;
  • O número da janela do cabeçalho;
  • As cores usadas no texto do cabeçalho


Funciona para:
  • Philips DVP5100
  • Philips DVP5980
  • Philips DVP3040
  • Philips DVP5965
  • Philips DVP5960
  • Philips DVP5140
  • Philips PET725
  • Punktal PK-DV246
  • Proview DVP-858
  • Lenoxx DV406
  • Pioneer 575

Não funciona para:

  • LG DV8XXX
  • LG DK194g
  • JTEC MTK7000

Procure por:
7F ? 12 ? ? 7D ? 7F ? 7E 02 12 ? ? 7D ? 7F

Você vai ter uma, e apenas uma, resposta (exemplo do DVP5960/55):

B1:5233 7F 0E       mov     R7, #0xE
B1:5235 12 1D 6A    lcall   OSD_Text_Params_ARM_B1
B1:5238 7F 0E       mov     R7, #0xE
B1:523A 12 1D 70    lcall   OSD_Text_Params_B1BS
B1:523D 90 FC 1E    mov     DPTR, #XRAM_FC1E           ; OSD_colors
B1:5240 74 02       mov     A, #2                      ; Cor #2 para o contorno
B1:5242 F0          movx    @DPTR, A
B1:5243 A3          inc     DPTR
B1:5244 04          inc     A                          ; Cor #3 para o preenchimento
B1:5245 F0          movx    @DPTR, A
B1:5246 E4          clr     A
B1:5247 FB          mov     R3, A
B1:5248 FD          mov     R5, A
B1:5249 7F 0E       mov     R7, #0xE
B1:524B 12 1D 76    lcall   OSD_TextColor_B1_BS
B1:524E D2 75       setb    RAM_2E.5
B1:5250 7F 0F       mov     R7, #0xF                   ; Janela do Browser
B1:5252 12 1D 6A    lcall   OSD_Text_Params_ARM_B1
B1:5255 7F 0F       mov     R7, #0xF                   ; Janela do Browser
B1:5257 12 1D 70    lcall   OSD_Text_Params_B1BS
B1:525A E4          clr     A                          ; Cor #0 (transparente) para o contorno
B1:525B 90 FC 1E    mov     DPTR, #XRAM_FC1E           ; OSD_colors
B1:525E F0          movx    @DPTR, A
B1:525F A3          inc     DPTR
B1:5260 74 0E       mov     A, #0xE                    ; Cor #14 para o preenchimento
B1:5262 F0          movx    @DPTR, A
B1:5263 E4          clr     A
B1:5264 FB          mov     R3, A
B1:5265 FD          mov     R5, A
B1:5266 7F 0F       mov     R7, #0xF                   ; Janela do Browser
B1:5268 12 1D 76    lcall   OSD_TextColor_B1_BS
B1:526B 7D 01       mov     R5, #1
B1:526D 7F 9A       mov     R7, #0x9A ; 'Ü'
B1:526F 7E 02       mov     R6, #2
B1:5271 12 1B A8    lcall   Arm_PutCharB1BS
B1:5274 7D 6A       mov     R5, #0x6A ; 'j'
B1:5276 7F 9B       mov     R7, #0x9B ; 'ø'
B1:5278 7E 02       mov     R6, #2
B1:527A 12 1B A8    lcall   Arm_PutCharB1BS
B1:527D 7D 2C       mov     R5, #0x2C ; ','
B1:527F 7F 9C       mov     R7, #0x9C ; '£'
B1:5281 7E 02       mov     R6, #2
B1:5283 12 1B A8    lcall   Arm_PutCharB1BS



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
  • **
  • Posts: 71
  • Aprovação: +1/-0
  • My Name is Neo
    • View Profile
    • eXtremeMods
Re: Firmware: log de descobertas
« Reply #236 on: September 06, 2007, 08:25:40 PM »
Ryan,

Estive lendo e relendo o tópico - quem sabe não aprendo algo  :P ::)
Mas para efeito de curiosidade, algumas vezes percebi que você menciona o Jtec Mtk7000 - dizendo que não localizou determinadas rotinas na firmware...

O MTKRemaker 0.23 B5 / B6 - com a firmware modificada 1.0e 1.0f - habilita aquele curioso recurso de patch das cores da legenda. A curiosidade é que até onde me lembro nenhuma outra firmware que eu tenha aberto no MtkRemaker o recurso é habilitado - como DVP5100 modificadas pelo JmAraujo / Umbanda / Lennox / Proview / LG / e outros Philips.

Porque !? Algum tipo de rotina diferente das que vocês usam !?

Não seria o motivo das suas buscas não retornarem nenhum padrão proximo para essa firmware ? Achei curioso que o programa do MaBreaker consiga achar a rotina nessa firmware e em outras varias firmwares não.

« Last Edit: September 06, 2007, 08:27:44 PM by ygor.almeida »
www.eXtremeMods.com.br
Hardware IT News & OverClock

Offline fabianr

  • Novato
  • *
  • Posts: 9
  • Aprovação: +0/-0
    • View Profile
Re: Firmware: log de descobertas
« Reply #237 on: September 07, 2007, 11:24:55 PM »
Eu acabo de instalar o firmware do DVP5140 no DVP3040K e adivinhem...

Tá tudo funcionando!

Eu sou o feliz proprietário do primeiro DVP3040K do mundo com suporte a DivX Ultra:yahoo!:

Jefferson,

Una duda... el codigo perteneciente a las funiones de divx ultra.... es parte del codigo 8032 o del codigo ARM?

Saludos,
FabianR

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #238 on: September 08, 2007, 01:15:30 PM »

O MTKRemaker 0.23 B5 / B6 - com a firmware modificada 1.0e 1.0f - habilita aquele curioso recurso de patch das cores da legenda. A curiosidade é que até onde me lembro nenhuma outra firmware que eu tenha aberto no MtkRemaker o recurso é habilitado - como DVP5100 modificadas pelo JmAraujo / Umbanda / Lennox / Proview / LG / e outros Philips.

Eu não havia notado isso. Depois de não encontrar o recurso habilitado em vários firmwares eu já nem olho mais aquele menu.

Mas eu testei agora e o firmware do Punktal PK-DV246 também habilita as opções.

Porque !? Algum tipo de rotina diferente das que vocês usam !?

Sim. Sempre é esse o problema.

Não seria o motivo das suas buscas não retornarem nenhum padrão proximo para essa firmware ? Achei curioso que o programa do MaBreaker consiga achar a rotina nessa firmware e em outras varias firmwares não.

Às vezes ligeiras diferenças no código impedem um "match" durante a busca. Quando você me vê dizendo para usar o padrão " xx ?? YY ?? ..." e dar uma lista de vários firmwares onde o padrão funciona, não imagine que eu cheguei a esse padrão na primeira tentativa. Eu começo com um padrão que parece identificar a rotina e testo em cada um dos firmwares. Se não funcionar com um, refaço o padrão e tento de novo. Se funcionar com o novo padrão, analiso porque não funcionou com o primeiro e se for viável retesto com todos os outros.

No caso do JTEC, se não funcionar na primeira tentativa eu simplesmente anoto que com ele não funciona. Trata-se de um aparelho pouco popular, que já saiu de linha e que eu não possuo. Não vale a pena para mim perder tempo ajustando padrões para ele.

Porém ele tem diversas semelhanças com o Punktal e vai acabar se beneficiando do meu esforço para identificar as rotinas do uruguaio.

O caso do menu do mtkRemaker é especialmente complicado. Aquele patch é feito em Sub_Style, que é especialmente difícil de achar automaticamente.

A propósito, os firmwares do Punktal e do JTEC também são os únicos que conheço a ativar o patch de SetMPEG4SubtitleParams no mtkWindows. Confira.
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #239 on: September 08, 2007, 01: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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #240 on: September 09, 2007, 07: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?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #241 on: September 09, 2007, 07: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  :)
« Last Edit: January 10, 2008, 07:46:26 PM by 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
  • **
  • Posts: 71
  • Aprovação: +1/-0
  • My Name is Neo
    • View Profile
    • eXtremeMods
Re: Firmware MT13x9: Log de Descobertas
« Reply #242 on: September 09, 2007, 08:30:55 PM »
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #243 on: September 09, 2007, 09:30:19 PM »
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
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #244 on: September 10, 2007, 08:13:41 AM »
.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
  • **
  • Posts: 71
  • Aprovação: +1/-0
  • My Name is Neo
    • View Profile
    • eXtremeMods
Re: Firmware MT13x9: Log de Descobertas
« Reply #245 on: September 10, 2007, 01:12:45 PM »
Interessante :)  :clapping: :yahoo!:
Evb62 - muito obrigado.
www.eXtremeMods.com.br
Hardware IT News & OverClock

Offline fabianr

  • Novato
  • *
  • Posts: 9
  • Aprovação: +0/-0
    • View Profile
Re: Firmware: log de descobertas
« Reply #246 on: September 10, 2007, 07: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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Reply #247 on: September 14, 2007, 12: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
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Reply #248 on: September 14, 2007, 02: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).
Fórum do DVP5100
(novo endereço)

Offline Acheron

  • Novato
  • *
  • Posts: 4
  • Aprovação: +1/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #249 on: September 29, 2007, 03:30:53 AM »
Gracias al hecho de que ahora tengo un cable USB para conectar a la PC, he logrado comprobar algo que sospechaba desde hace tiempo: el FW del 3010/02 es compatible con el 3040K/55. En realidad este FW no tiene ventajas sobre el FW del 3040K (yo tenia la esperanza de que soportara multisesión) excepto una... permite actualizar FW de mas de 1MB mediante CD!!!! ;D ;D ;D

Lamentablemente no es 100% compatible, por ejemplo, el audio se escucha horrible y el lector hace unos sonidos raros al cargar un video con varios subtitulos asi que no se puede usar. :(  :(  :(

Lo bueno es que podemos usarlo como herramienta para cargar mods del 3040K y del 5140 que tengan más de 1MB, mediante el siguiente procedimiento:

- Reducimos el FW del 3010 (DVP3010_02.BIN) a menos de 1MB (quitando idiomas y fuentes) y lo renombramos como DVP3040K_55.BIN
- Lo cargamos en el 3040K. En este punto, si el TV no soporta PAL, la imagen no se va a ver bien, hay ir al menu y seleccionar NTSC, ademas en la opción "component" se tiene que cambiar de RGB a YUV (Todo esto es opcional, pues el siguiente paso bien se puede hacer con la imagen en movimiento).
- Cargamos nuestro mod de más de 1MB previamente renombrado a DVP3010_02.BIN para que sea reconocido.

Y asi es como logramos sobrepasar el limite de 1MB de los FWs del 3040 y 5140 (yo ya lo he probado)  :yahoo!: :yahoo!: :yahoo!:
La verdad es que sólo Dios sabe porque Phillips pone 2MB de flash de hardware pero hace que el FW limite la actualización por CD a 1MB.

PD: Jefferson, por favor confirma que el procedimiento funciona.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #250 on: September 30, 2007, 01:04:13 AM »
Depois de descobrir que o RISC do DVP5160 tem suporte a multisessão em DVD-R, fiz algumas experiências (quase todas fracassadas) que vou resumir aqui:

Firmware DVP5160/12 no DVP5100K/78 - Nem liga
RISC DVP5160/12 no firmware DVP5100K/78 - trava exibindo "HELLO" no VFD

Firmware DVP5160/12 no DVP3040K/55 - Nem liga
RISC DVP5160/12 no firmware DVP5140, instalado no DVP3040K/55 - trava exibindo "PHILIPS" no VFD

O único sucesso foi que o RISC funciona no DVP5960 (e reportadamente no DVP5980)

Acheron: Depois eu farei o seu teste. Estou ocupado com outra experiência agora.
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
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #251 on: October 05, 2007, 03:33:35 AM »
Acheron,

Eu parei hoje para seguir seu procedimento e estou com uma dúvida.

Por que você está usando o firmware do DVP3010 para poder instalar um firmware de DVP3040 de mais de 1MB?

No meu último teste, eu consegui instalar o firmware de DVP3040K de 1,5MB logo depois de instalar o firmware oficial, sem problemas aparentes.

Seguindo esse procedimento, o firmware de DVP5140 de 1,5MB lê DVDs?

Eu não cheguei nessa parte do teste ainda. Parei para estudar por que o sistema de vídeo do DVP3010 não é reconhecido pela minha placa de captura, nem pela entrada de video composto de minha TV, apesar de ambas suportarem PAL e NTSC.
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 Acheron

  • Novato
  • *
  • Posts: 4
  • Aprovação: +1/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #252 on: October 08, 2007, 03:53:44 PM »
Hola Jefferson,

Algunas aclaraciones sobre el tema:

Por que você está usando o firmware do DVP3010 para poder instalar um firmware de DVP3040 de mais de 1MB?

No meu último teste, eu consegui instalar o firmware de DVP3040K de 1,5MB logo depois de instalar o firmware oficial, sem problemas aparentes.
El procedimiento "FW 3040 oficial" --> "FW>1MB" no funciona. Me parece que el FW de 1,5MB que usaste en tus pruebas lo hiciste agregando el bloque MPEG de un LG, pero como el FW no usa los MPEGs extras, no se nota la diferencia.

Lo mejor para testear es usar el FW original pero reemplazando el Wallpaper y el Filebrowser por otros de mayor tamaño (unos 100KB cada uno). De esta forma te aseguras que el FW va a usar el espacio extra. Prueba de nuevo así y verás que no funciona (hay errores en el WP y FB).

Seguindo esse procedimento, o firmware de DVP5140 de 1,5MB lê DVDs?
Yo me equivoqué en este punto, lamentablemente mi procedimiento sólo sirve para el FW del 3040, no para el del 5140  :dashhead1:.

Depois de descobrir que o RISC do DVP5160 tem suporte a multisessão em DVD-R, fiz algumas experiências (quase todas fracassadas) que vou resumir aqui:

(...)

Firmware DVP5160/12 no DVP3040K/55 - Nem liga
RISC DVP5160/12 no firmware DVP5140, instalado no DVP3040K/55 - trava exibindo "PHILIPS" no VFD
Yo tengo entendido que para que funcione el soporte multisesión, tanto el RISC como el 8032 deben soportarlo. El problema del FW del 3040K es que su 8032 no soporta multisesión, por eso es que aunque se le ponga el RISC del 5140 (que si soporta multisesión) no se le puede hacer funcionar.


Respecto al FW del 3010, te aconsejo que no te dediques a entenderlo. No tiene ninguna ventaja sobre el FW del 3040 (excepto por el tema del flash de 2MB) y falla en varios otros aspectos al usarse en el DVP3040, como en el audio y la carga de subtitulos. Aunque si puedes reparar esas fallas entonces sí sería posible usarlo.


Pasando a otro tema, quisiera pedirte que cuando tengas tiempo me ayudes con el RISC del 5140 (para ser mas especifico, los ARM Codes), que por alguna razón sólo muestra un máximo de 40 caracteres (sin contar la extensión) de los nombres de archivos en el FB (no afecta a los nombres de directorios) sin importar a cuánto se le aumente el límite en el 8032.

Saludos.

Offline Acheron

  • Novato
  • *
  • Posts: 4
  • Aprovação: +1/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #253 on: October 15, 2007, 04:25:19 PM »
Una pequeña contribución que creo que no ha sido mencionada todavía (si ya es conocida, borren este post). Revisando el FW del 5140 noté la existencia de una opción de menú para activar los closed captions de los DVDs, la cual también está presente, aunque sin usar, en el FW del 3040 (y supongo que en otros modelos).

Una vez que sabe que "existe" es fácil de encontrar. Yo la puse como sexta opción en el menu "Video Setup Page" (en el DVP5140 estaba ahí) quedando así:

  6. No Pic. | Closed Captions | Closed Caption
     0008 FFFF 009C 00BF 0019 0033 0001 0001 FF36E1 0A15 - ROM:36E7
    1. On | Closed Caption On | On
       0260 009F 0260 00 - ROM:36D3
 => 2. Off | Closed Caption Off | Off
       025C 009E 025C 01 - ROM:36DA

En la Pag2 del 8032 del DVP3040 está en el ROM 36E7, para encontrarlo en otros modelos basta buscar la secuencia inicial "0008 FFFF 009C 00BF". Por ejemplo en el DVP5100 (si no me equivoco) está en el ROM 3689.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #254 on: October 15, 2007, 10:38:05 PM »
Descoberta muito interessante, Acheron.  :)

No caso do DVP5100 não se trata somente de um menú oculto, mas sim de um menú que não estava nem "linkeado" sequer... Nenhuma das páginas do menú (usadas ou ocultas) fazem referencia ao "closed captions".

Parabéms pela descoberta.  :clapping:
Fórum do DVP5100
(novo endereço)

Offline LioZ

  • Novato
  • *
  • Posts: 3
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #255 on: October 19, 2007, 08:29:18 AM »
A tabela de tipos de mídia no ARM
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.

Bacana...
Como já devem saber, o Proview 858 não é compatível do DVD-VR (formato usado por gravadores de mesa em midia DVD-RW), porém consegue enchergar o disco

Como o arquivo de video do DVD-VR é a grosso um MPG2 com extensão VRO, daria p/ fazer o Proview 858 ler este VRO?

Pena q que sou totalmente ignorante nesta parte de assembler e ARM  :dashhead1:

Legal...
LioZ
« Last Edit: February 03, 2008, 04:27:06 AM by Jefferson »

Offline eneris

  • Novato Prolixo
  • **
  • Posts: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • View Profile
    • ENERIS Online :: No Need To Argue
Re: Firmware MT13x9: Log de Descobertas
« Reply #256 on: October 23, 2007, 08:35:05 AM »
Olá a todos!!

Ryan, você irá publicar como é feito o ajuste de legendas no Proview?
(se ja foi mostrado, perdão e pode apagar este post)

The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 353
  • Aprovação: +27/-0
    • View Profile
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Reply #257 on: October 23, 2007, 11:34:20 PM »
Talvez esse não seja o lugar ideal para falar isso, mas não achei pertinente abrir um tópico só pra isso, e aqui tem um monte de gente que mexe com isso.

Então, Jefferson, se quiser pode deletar isso depois, pra manter o tópico organizado no propósito inicial.

Instalei o IDA 5.1 no meu PC, abri o código 8032 e executei os scripts. Não deu nenhum erro, mas a formatação do código na aba "IDA View-A" tá diferente da formatação que aparece nos códigos postados aqui.

Tirei um print screen da minha tela:


Como pode ser visto, o código (aquele que aparece no editor hexadecimal) não aparece. Mas ele funciona. Fiz uma procura por um trecho conhecido por mim e o IDA o encontrou, até levou o cursor até lá, apesar do código não aparecer.

O que pode estar errado?

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #258 on: October 24, 2007, 04:09:13 AM »
Como pode ser visto, o código (aquele que aparece no editor hexadecimal) não aparece. Mas ele funciona. Fiz uma procura por um trecho conhecido por mim e o IDA o encontrou, até levou o cursor até lá, apesar do código não aparecer.

O que pode estar errado?
Tente com isto:

http://ryan.com.br/smf/index.php?topic=179.msg9171925;topicseen#msg9171925

Saudações!
Fórum do DVP5100
(novo endereço)

Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 353
  • Aprovação: +27/-0
    • View Profile
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Reply #259 on: October 24, 2007, 10:48:28 AM »
Tente com isto:

http://ryan.com.br/smf/index.php?topic=179.msg9171925;topicseen#msg9171925

Saudações!

Valeu, jmaraujo!!!!! :yahoo!:

Desculpa por perguntar algo que já tinha sido perguntado!

Eu até já tinha lido isso, mas faz tanto tempo que eu não lembrava mais.

Sem falar que quando li eu não entendi qual era a dúvida do Jefferson.

Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 353
  • Aprovação: +27/-0
    • View Profile
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Reply #260 on: October 24, 2007, 01:55:45 PM »
Acho que ainda tem alguma coisa errada com o meu IDA.

Na verdade está tudo meio confuso ainda, mas acho que isso aqui não está certo.

Não encontro a palavra "remote" procurando no código, por exemplo, e acho que eu deveria encontrar.

Aí fui olhar uma parte do código (do firmware que estou trabalhando, DVP5980) postada pelo Ryan neste tópico e estava assim:

B1:F6FE             Sub_Style:                    ; DATA XREF: B0:B0_BS_689_B1_F6FEo
B1:F6FE                                           ; B1:B1_BS_689_B1_F6FEo ...
B1:F6FE 90 FB D2    mov     DPTR, #XRAM_FBD2
B1:F701 EE          mov     A, R6


Só que pra mim aparece assim:

B1:F6FE             BankSw_689_B1_F6FE:                     ; DATA XREF: B0:B0_BS_689_B1_F6FEo
B1:F6FE                                                     ; B1:B1_BS_689_B1_F6FEo ...
B1:F6FE 90 FB D2    mov     DPTR, #XRAM_FBD2
B1:F701 EE          mov     A, R6


Não deveria ser assim, não é mesmo?

Será que pode ser os scripts que rodei? Peguei ambos (MT1389_8032_FULL.idc e MT1389_Misc.idc) no grupo mt13x9 do Yahoo. Um é de 7 de fevereiro de 2007 e o outro é de 28 de Outubro de 2006, respectivamente.

Cheguei a desinstalar o IDA 5.1, colocar o 5.0 e processar o código todo novamente, mas não adiantou. :(
« Last Edit: October 24, 2007, 02:00:42 PM by rafalibrenz »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #261 on: October 24, 2007, 02:43:26 PM »
Nem todas as funções são identificadas pelos scripts. Você tem que fazer click sobre o nome da função (no seu caso "BankSw_689_B1_F6FE") e trocar o nome dela.
Fórum do DVP5100
(novo endereço)

Offline fabianr

  • Novato
  • *
  • Posts: 9
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #262 on: October 24, 2007, 07:15:33 PM »
Nem todas as funções são identificadas pelos scripts. Você tem que fazer click sobre o nome da função (no seu caso "BankSw_689_B1_F6FE") e trocar o nome dela.

Creo que seria genial para los que somos nuevos en esto que Jefferson hiciera un dump a idc de sus bases de IDA
(idb) de los 8032/ARM codes de los diferentes modelos y los publicara. Es la forma que tiene IDA de poder "pasar el trabajo"
sin enviar el "ejecutable por temas legales" o incluir datos de usuario IDA, etc.

Estos idc comprimidos son bien pequeñitos... :)

Que opinan?

Han probado utilizar el Bindiff v2 de Sabre technologies para comparar firmwares? Es un plugin de IDA...


Saludos,
FabianR

PD el metodo es:


File-> Produce files -> Dump database to idc file


Offline rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 353
  • Aprovação: +27/-0
    • View Profile
    • Blog
Re: Firmware MT13x9: Log de Descobertas
« Reply #263 on: October 25, 2007, 11:26:53 AM »
Nem todas as funções são identificadas pelos scripts. Você tem que fazer click sobre o nome da função (no seu caso "BankSw_689_B1_F6FE") e trocar o nome dela.

Ah bom... É que eu achei que ele reconheceria essa. Na verdade eu achei que ele não tinha reconhecido nenhuma, mas já encontrei algumas (poucas) que ele reconheceu. Uma delas é a Video_Play.

Valeu, Jmaraujo. Agora estou começando a compreender o IDA. Já me foi útil para trocar a função de uma tecla do controle remoto.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #264 on: October 25, 2007, 12:22:42 PM »
Olá a todos!!

Ryan, você irá publicar como é feito o ajuste de legendas no Proview?
(se ja foi mostrado, perdão e pode apagar este post)


Não eu não mostrei ainda.

Eu pretendo fazer isso, mas não estou encontrando tempo no momento.

Você pode tentar comparando o código 8032 das minhas duas últimas versões do firmware com o UltraCompare.
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 rafalibrenz

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 353
  • Aprovação: +27/-0
    • View Profile
    • Blog
Re: Firmware: log de descobertas
« Reply #265 on: October 28, 2007, 09:48:08 PM »
Como usar o "Expert Mode" do mtkTool

[...]

Exemplo de uso:

    * Abra a janela "Memory Dump"
    * Em "type" selecione "DRAM (BYTE)"
    * Em "Address" coloque o endereço 376e599
    * Desmarque "Double Word" se existir essa opção na sua versão
    * Clique em Start

O resultado na tela será teóricamente o conteúdo da memória eeprom do aparelho.

Notas:

O endereço do conteúdo da eeprom não é fixo. É o endereço da Shared Memory (armAddressInfo) + 0x1999
http://tech.groups.yahoo.com/group/mt13x9/message/4339

Eu não estou certo de que 376e599 seja mesmo o endereço base da cópia da eeprom na Shared Memory. Os dados não batem com os exemplos que encontrei no MT13x9 e, embora os valores mudem quando eu mexo no setup, não estão mudando de forma consistente.

Testei isso aqui, com o DVP5980K/55.

Liguei o aparelho, deixei ele em uma pasta qualquer do disco que estava lendo, sem reproduzir nada.

Mandei o MtkTool ler 1024 bytes (é a capacidade do chip de memória eeprom que está na placa do DVD player) a partir do endereço 375E599 (como diz na mensagem de foncreator que o link indica e não 376E599 como disse o Jefferson, que provavelmente se enganou).

Salvei o conteúdo em um arquivo binário (eeprom01.bin).

Entrei no setup do aparelho e liguei o "Night Mode", em Audio Setup Page. Saí do Setup.

Li novamente o conteúdo da suposta eeprom e salvei novamente (eeprom02.bin).

Entrei no setup do aparelho e desliguei o "Night Mode". Saí do Setup.

Li novamente os 1024 bytes e salvei novamente (eeprom03.bin).

Deveria acontecer o seguinte, até onde eu sei:

Comparando eeprom01.bin com eeprom02.bin deveria haver um (ou alguns) bytes diferentes.

Comparando eeprom01.bin com eeprom03.bin deveria haver zero bytes diferentes. Os arquivos deveriam ser idênticos.

O que aconteceu:

Comparando eeprom01.bin com eeprom02.bin obtive um byte diferente: o primeiro. (obs.: outro dia fiz o mesmo teste mudando outra propriedade do setup, o Lip Sync, e o único byte que mudou também foi o primeiro!)

Comparando eeprom01.bin com eeprom03.bin obtive também um byte diferente: novamente o primeiro.

Comparando eeprom02.bin com eeprom03.bin obtive como resultado: os arquivos são idênticos.

Comparações feitas com o UltraCompare Professional 5.10.

Conclusão: Como disse o Jefferson, a maneira com que os bytes mudam é totalmente inconsistente. A teoria de que esse conteúdo é o da eeprom é, na minha opinião, uma inverdade. Hehe.

Talvez o furo do meu teste esteja no endereço da tal Shared Memory. Não sei o que é isso, e talvez isso mude de aparelho para aparelho, sei lá.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #266 on: November 05, 2007, 10:57:16 PM »
Una pequeña contribución que creo que no ha sido mencionada todavía (si ya es conocida, borren este post). Revisando el FW del 5140 noté la existencia de una opción de menú para activar los closed captions de los DVDs, la cual también está presente, aunque sin usar, en el FW del 3040 (y supongo que en otros modelos).
Após o "pequeno" susto que levei com o meu DVP5100, testei a descoberta do Acheron, e agora o DVP5100 tem -pela primeira vez- suporte a closed caption!!!

Obrigada, Acheron.
Fórum do DVP5100
(novo endereço)

Offline pauloturij

  • Novato
  • *
  • Posts: 16
  • Aprovação: +1/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #267 on: November 12, 2007, 07:54:08 PM »
Jefferson você poderia me emviar os mpeg[2] desses topicos aqui:

http://ryan.com.br/smf/index.php?topic=179.msg9172124#msg9172124


http://ryan.com.br/smf/index.php?topic=179.msg9172087#msg9172087


se possivel tambem em formato bitmap o original pelo qual voce vez eles pois eu não consegui transformar o mpeg em bitmap.

para não vim aqui só para me aproveitar do forum e de voce, deicho minha sinjela ajuda, a maior pasta skin do firmware do lg dk194g com 18 espaços
« Last Edit: November 13, 2007, 07:06:16 AM by pauloturij »

Offline naasom

  • Novato
  • *
  • Posts: 4
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #268 on: November 19, 2007, 02:39:48 PM »
Olá Ryan.
Eneris e eu estamos "suando" para fazer o menu de fontes do 5965k - que a Philips tentou matar - funcionar. Fizemos, onde tinha só Standard, aparecer 4 opções para fonte, porém, quando acionadas não fazem nenhuma modificação. Creio que tem mudar algo no código Assembly, e issoé que não sei fazer nada, a não ser que me digam os códigos que inserir.
Estive também tentando mudar os códigos sub_style e sec. para o menu de cores, com os pulos de banco (o que você mensionou numa página anterior), mas não ficou idêntica, mesmo colocando os códigos que são específicos do 5965k.

Mas voltando ao menu de fontes, ele ficou assim:


[O Eneris testou e disse que o menu aparece como está acima, mas não modifica a fonte do filme quando selecionado qualquer uma delas].


[Aqui está os códigos hexadecimais que acrescentei: Os pointers, como o JMaraujo instruiu].

Se puder nos ajudar de alguma forma eu agradeceria. Estou entrando nesse mundo de firmware agora, mas já estou fascinado.

Grande abraço.

O que tentamos fazer está aqui:
http://www.4shared.com/file/29757260/9bab3442/DVP5965K_93mod_Naasom.html?dirPwdVerified=67cd922f

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #269 on: January 07, 2008, 01:40:56 PM »
Olá Ryan.
Eneris e eu estamos "suando" para fazer o menu de fontes do 5965k - que a Philips tentou matar - funcionar. Fizemos, onde tinha só Standard, aparecer 4 opções para fonte, porém, quando acionadas não fazem nenhuma modificação. Creio que tem mudar algo no código Assembly, e issoé que não sei fazer nada, a não ser que me digam os códigos que inserir.
Estive também tentando mudar os códigos sub_style e sec. para o menu de cores, com os pulos de banco (o que você mensionou numa página anterior), mas não ficou idêntica, mesmo colocando os códigos que são específicos do 5965k.

Mas voltando ao menu de fontes, ele ficou assim:


[O Eneris testou e disse que o menu aparece como está acima, mas não modifica a fonte do filme quando selecionado qualquer uma delas].


[Aqui está os códigos hexadecimais que acrescentei: Os pointers, como o JMaraujo instruiu].

Se puder nos ajudar de alguma forma eu agradeceria. Estou entrando nesse mundo de firmware agora, mas já estou fascinado.

Grande abraço.

O que tentamos fazer está aqui:
http://www.4shared.com/file/29757260/9bab3442/DVP5965K_93mod_Naasom.html?dirPwdVerified=67cd922f

Me corrijam se eu estiver errado, mas o que o naason fez foi apenas adicionar opções ao menu. O próximo passo seria adicionar os novos tipos de fontes (ou usar as que já existem) na área de dados e usar a rotina que altera o tipo de fonte no registrador correspondente.

Um detalhe importante é que este item de menu não parece estar chamando nehuma rotina, pois sua posição 10 está com 0000. Isto está correto? Não seria interessante ele chamar a Sub_Style?

Outro detalhe é que a Font 1 é referenciada por 00-01 (Font[00-01]), Font 2 por 02-04, (Font 2[02-04]), e assim por diante,  no mtkRemaker. Não seria o caso de colocar estes valores: Font1=00, Font 2=02, Fonte 3=05, Font 4=07...

Abraço,
« Last Edit: January 08, 2008, 09:11:36 AM by ronison »

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #270 on: January 08, 2008, 03:43:06 PM »
Senhores, tenho o prazer de anunciar que terminei o firmware do DVP5965K com fontes selecionáveis no Menu! Está 100% funcional. Estou melhorando as fontes e postarei aqui o que fiz para avaliação! (quando chegar em casa eu posto o firmware).

Considerações iniciais:
  • É preciso alterar a subrotina que o Ryan colocou neste post para destravar a fonte 7 (e otimizá-la)
  • É preciso alterar Sub_Style para que a fonte escolhida seja carregada no início (e não apenas quando entrar no setup)
  • É preciso alterar o menu de legendas divx, adicionando as novas opções (podemos ter até 5). Cada item deve conter o valor da respectiva fonte, e não 1, 2, 3... como prefere a Philips  ;) (Esta parte não vou mostrar aqui pois já foi bastante discutido no post)

As alterações:

Primeiro na rotina de seleção das fontes (a BankSw_681_B1_E60B)


B1:E60B             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:E60B
B1:E60B
B1:E60B             BankSw_681_B1_E60B:           ; DATA XREF: B0:B0_BS_681_B1_E60Bo
B1:E60B 7F E2       mov     R7, #0xE2
B1:E60D 7E 07       mov     R6, #7
B1:E60F 12 1B 84    lcall   ARM_GetChar_B1_BS
B1:E612 BF 01 05    cjne    R7, #1, B1_E61A
B1:E615 D2 74       setb    RAM_2E.4
B1:E617 12 1D 1C    lcall   B1_BS_166_B4_ABBB
B1:E61A
B1:E61A             B1_E61A:                      ; Aqui começa o SWITCH-CASE das fontes
B1:E61A 7F 44       mov     R7, #0x44 ; 'D'       ; Pega o valor da epprom selecionada no menu  (que já existe)
B1:E61C 7E 00       mov     R6, #0
B1:E61E 12 1B 90    lcall   Pref_GetChar_B1BS
B1:E621 BF 01 07    cjne    R7, #1, B1_E62B
B1:E624 7F 0B       mov     R7, #0xB              ; Veja que aqui ele coloca, na marra, em R7 o valor da Fonte 7 (0xB)
B1:E626 12 1E D8    lcall   OSD_SetFont_B1_BS
B1:E629 80 27       sjmp    B1_E652
B1:E62B             ; ---------------------------------------------------------------------------
B1:E62B
B1:E62B             B1_E62B:                      ; CODE XREF: BankSw_681_B1_E60B+16j
B1:E62B 7F 44       mov     R7, #0x44 ; 'D'       ; Verifica o valor de "DivX Subtitle" na eeprom (sempre "0")
B1:E62D 7E 00       mov     R6, #0
B1:E62F 12 1B 90    lcall   Pref_GetChar_B1BS
B1:E632 EF          mov     A, R7
B1:E633 70 07       jnz     B1_E63C
B1:E635 7F 0B       mov     R7, #0xB              ; Aqui de novo R7 = 0xB
B1:E637 12 1E D8    lcall   OSD_SetFont_B1_BS
B1:E63A 80 16       sjmp    B1_E652
B1:E63C             ; ---------------------------------------------------------------------------
B1:E63C
B1:E63C             B1_E63C:                      ; CODE XREF: BankSw_681_B1_E60B+28j
B1:E63C 7F 44       mov     R7, #0x44 ; 'D'       ; Verifica o valor de "DivX Subtitle" na eeprom (sempre "0")
B1:E63E 7E 00       mov     R6, #0
B1:E640 12 1B 90    lcall   Pref_GetChar_B1BS
B1:E643 BF 02 07    cjne    R7, #2, B1_E64D
B1:E646 7F 0B       mov     R7, #0xB              ; Aqui de novo R7 = 0xB
B1:E648 12 1E D8    lcall   OSD_SetFont_B1_BS
B1:E64B 80 05       sjmp    B1_E652
B1:E64D             ; ---------------------------------------------------------------------------
B1:E64D
B1:E64D             B1_E64D:                      ; CODE XREF: BankSw_681_B1_E60B+38j
B1:E64D 7F 0B       mov     R7, #0xB              ; Aqui de novo R7 = 0xB - Enfim, numca será outra fonte diferente
B1:E64F 12 1E D8    lcall   OSD_SetFont_B1_BS
B1:E652
B1:E652             B1_E652:                      ; CODE XREF: BankSw_681_B1_E60B+1Ej
B1:E652                                           ; BankSw_681_B1_E60B+2Fj ...

B1:E652 7F 12       mov     R7, #0x12
B1:E654 12 1D 6A    lcall   OSD_Text_Init_B1BS
B1:E657 7F 12       mov     R7, #0x12
B1:E659 02 1D 70    ljmp    B1_BS_180_B3_E9AF
B1:E659             ; End of function BankSw_681_B1_E60B


O que está em vermelho some da rotina (há uma redundancia desnecessária aqui). O que está destacado em verde exeplicita como a Philips fez pra travar na fonte 7 (0xB).
A nova versão da rotina fica assim:


B1:E60B             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:E60B
B1:E60B             BankSw_681_B1_E60B:           
B1:E60B 7F E2       mov     R7, #0xE2
B1:E60D 7E 07       mov     R6, #7
B1:E60F 12 1B 84    lcall   ARM_GetChar_B1_BS
B1:E612 BF 01 05    cjne    R7, #1, B1_E61A
B1:E615 D2 74       setb    RAM_2E.4
B1:E617 12 1D 1C    lcall   B1_BS_166_B4_ABBB
B1:E61A             B1_E61A:               
B1:E61A 7F 44       mov     R7, #0x44
B1:E61C 7E 00       mov     R6, #0
B1:E61E 12 1B 90    lcall   Pref_GetChar_B1BS

B1:E621 12 1E D8    lcall   OSD_SetFont_B1_BS
B1:E624 7F 12       mov     R7, #0x12
B1:E626 12 1D 6A    lcall   OSD_Text_Init_B1BS
B1:E629 7F 12       mov     R7, #0x12
B1:E62B 02 1D 70    ljmp    B1_BS_180_B3_E9AFB
B1:E62E ;-----------------------------------------------------------------------------------------------------------
B1:E62E 00         nop
B1:E62F 00         nop
B1:E630 00         nop
B1:E631 00         nop
B1:E632 00         nop
B1:E633 00         nop
B1:E634 00         nop
B1:E635 00         nop
B1:E636 00         nop
B1:E637 00         nop
B1:E638 00         nop
B1:E639 00         nop
B1:E63A 00         nop
B1:E63B 00         nop
B1:E63C 00         nop
B1:E63D 00         nop
B1:E63E 00         nop
B1:E63F 00         nop
B1:E640 00         nop
B1:E641 00         nop
B1:E642 00         nop
B1:E643 00         nop
B1:E644 00         nop
B1:E645 00         nop
B1:E646 00         nop
B1:E647 00         nop
B1:E648 00         nop
B1:E649 00         nop
B1:E64A 00         nop
B1:E64B 00         nop
B1:E64C 00         nop
B1:E64D 00         nop
B1:E64E 00         nop
B1:E64F 00         nop
B1:E650 00         nop
B1:E651 00         nop
B1:E652 00         nop
B1:E653 00         nop
B1:E654 00         nop
B1:E655 00         nop
B1:E656 00         nop
B1:E657 00         nop
B1:E658 00         nop
B1:E659 00         nop
B1:E659 ;-----------------------------------------------------------------------------------------------------------


A parte destacada em azul é a mais importante. Ela lê da EPPROM o valor selecionado no Menu e o considera como sendo o número real da fonte, passando em seguida para a rotina que faz o resto do trabalho (OSD_SetFont_B1_BS).

Agora vamos à Sub_Style:

B1:D2B6             SUB_Style:                    ; CODE XREF: B1_8883+5Cp
B1:D2B6 EF          mov     A, R7
B1:D2B7 24 FE       add     A, #0xFE ; '¦'
B1:D2B9 60 5B       jz      B1_D316
B1:D2BB 14          dec     A
B1:D2BC 60 58       jz      B1_D316
B1:D2BE 14          dec     A
B1:D2BF 60 61       jz      B1_D322
B1:D2C1 24 03       add     A, #3
B1:D2C3 70 60       jnz     B1_D325
B1:D2C5 E4          clr     A                   
B1:D2C6 FF          mov     R7, A

B1:D2C7 12 1E D8    lcall   B1_BS_240_B3_E9FE
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:D2D1 7F 12       mov     R7, #0x12
B1:D2D3 12 1D 5E    lcall   B1_BS_177_B3_72CE

B1:D2D6 E4          clr     A                     
B1:D2D7 90 FC 1F    mov     DPTR, #XRAM_FC1F      ; OSD_Colors
B1:D2DA F0          movx    @DPTR, A
B1:D2DB A3          inc     DPTR
B1:D2DC 74 02       mov     A, #2                 ; Cor do preenchimento
B1:D2DE F0          movx    @DPTR, A
B1:D2DF 7B 03       mov     R3, #0                ; Define a cor de background. Coloque zero para livrar-se dela
B1:D2E1 E4          clr     A
B1:D2E2 FD          mov     R5, A
B1:D2E3 7F 12       mov     R7, #0x12
B1:D2E5 12 1D 64    lcall   OSD_TextColor_B1_BS_178_B3_C399
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:D2EF 7F 12       mov     R7, #0x12
B1:D2F1 12 1D 6A    lcall   B1_BS_179_B3_58BA
B1:D2F4 7F 12       mov     R7, #0x12
B1:D2F6 12 1D 70    lcall   B1_BS_180_B3_E9AF
B1:D2F9 12 E0 FC    lcall   B1_E0FC
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: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:D316             ; ---------------------------------------------------------------------------
B1:D316
B1:D316             B1_D316:                      ; CODE XREF: SUB_Style+3j
B1:D316                                           ; SUB_Style+6j
B1:D316 7F 05       mov     R7, #5
B1:D318 12 1E 36    lcall   B1_BS_213_B6_6CEB
B1:D31B 50 08       jnc     B1_D325
B1:D31D 7F 01       mov     R7, #1
B1:D31F 02 1E 54    ljmp    B1_BS_218_B4_2D0C
B1:D322             ; ---------------------------------------------------------------------------
B1:D322
B1:D322             B1_D322:                      ; CODE XREF: SUB_Style+9j
B1:D322 12 E0 FC    lcall   B1_E0FC
B1:D325
B1:D325             B1_D325:                      ; CODE XREF: SUB_Style+Dj
B1:D325                                           ; SUB_Style+65j
B1:D325 22          ret
B1:D325             ; End of function SUB_Style


Como já é sabido por todos, é no código marcado em vermelho que o tipo da fonte (no caso 0x0) é determinado pela Sub_Style. Como também já foi dito pelo Ryan em outro post, alterando este código por 7F XX (mov R7 XX), onde XX é o tipo da fonte, é possível alterar a fonte da legenda na inicialização.
Pois bem, no caso, o que queremos é que o tipo da fonte seja pego na EEPROM, no endereço usado pelo menu de seleção. Acontece que não temos como adicionar o código necessário nesta rotina sem deslocá-la. Para tanto, o que fiz foi tirar uma parte do código (vermelho + verde) e criei uma sub-rotina (aproveitando para liberar o espaço para a chamada) que realiza o trabalho de pegar o valor na EPPROM e altera o tipo de fonte.

Segue a Sub_Style alterada:

B1:D2B6             SUB_Style:
B1:D2B6 EF          mov     A, R7
B1:D2B7 24 FE       add     A, #0xFE ; '¦'
B1:D2B9 60 5B       jz      B1_D316
B1:D2BB 14          dec     A
B1:D2BC 60 58       jz      B1_D316
B1:D2BE 14          dec     A
B1:D2BF 60 61       jz      B1_D322
B1:D2C1 24 03       add     A, #3
B1:D2C3 70 60       jnz     B1_D325
B1:D2C5 12 F8 DB    lcall   B1_F8DB
B1:D2C8 ;-----------------------------------------------------------------------------------------------------------
B1:D2C8 00         nop
B1:D2C9 00         nop
B1:D2CA 00         nop
B1:D2CB 00         nop
B1:D2CC 00         nop
B1:D2CD 00         nop
B1:D2CE 00         nop
B1:D2CF 00         nop
B1:D2D0 00         nop
B1:D2D1 00         nop
B1:D2D2 00         nop
B1:D2D3 00         nop
B1:D2D4 00         nop
B1:D2D5 00         nop
B1:D2D5 ;-----------------------------------------------------------------------------------------------------------

B1:D2D6 E4          clr     A                     ; Aqui a cor de contorno da legenda é definida como transparente (zero).
B1:D2D6                                           ; É preciso mudar isso, principalmente se você desligar o background
B1:D2D7 90 FC 1F    mov     DPTR, #XRAM_FC1F      ; OSD_Colors
B1:D2DA F0          movx    @DPTR, A
B1:D2DB A3          inc     DPTR
B1:D2DC 74 02       mov     A, #2                 ; Cor do preenchimento
B1:D2DE F0          movx    @DPTR, A
B1:D2DF 7B 03       mov     R3, #3                ; Define a cor de background. Coloque zero para livrar-se dela
B1:D2E1 E4          clr     A
B1:D2E2 FD          mov     R5, A
B1:D2E3 7F 12       mov     R7, #0x12
B1:D2E5 12 1D 64    lcall   OSD_TextColor_B1_BS_178_B3_C399
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:D2EF 7F 12       mov     R7, #0x12
B1:D2F1 12 1D 6A    lcall   B1_BS_179_B3_58BA
B1:D2F4 7F 12       mov     R7, #0x12
B1:D2F6 12 1D 70    lcall   B1_BS_180_B3_E9AF
B1:D2F9 12 E0 FC    lcall   B1_E0FC
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: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:D316             ; ---------------------------------------------------------------------------
B1:D316
B1:D316             B1_D316:           
B1:D316 7F 05       mov     R7, #5
B1:D318 12 1E 36    lcall   B1_BS_213_B6_6CEB
B1:D31B 50 08       jnc     B1_D325
B1:D31D 7F 01       mov     R7, #1
B1:D31F 02 1E 54    ljmp    B1_BS_218_B4_2D0C
B1:D322             ; ---------------------------------------------------------------------------
B1:D322
B1:D322             B1_D322:           
B1:D322 12 E0 FC    lcall   B1_E0FC
B1:D325
B1:D325             B1_D325:
B1:D325 22          ret
B1:D325             ; End of function SUB_Style


O que está em Azul é a chamada a sub-rotina que engloba a parte retirada do código e a parte que pega o valor na EPPROM.
Segue a sub-rotina:

B1:F8DB     ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ NOVA S U B R O  T I N A ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦

B1:F8DB 7F 44       mov     R7, #0x44
B1:F8DD 7E 00       mov     R6, #0
B1:F8DF 12 1B 90    lcall   Pref_GetChar_B1BS

B1:F8E2 12 1E D8    lcall   B1_BS_240_B3_E9FE
B1:F8E5 D2 75       setb    RAM_2E.5
B1:F8E7 7F 12       mov     R7, #0x12
B1:F8E9 12 1D 58    lcall   B1_BS_176_B3_4CF4
B1:F8EC 7F 12       mov     R7, #0x12
B1:F8EE 12 1D 5E    lcall   B1_BS_177_B3_72CE
B1:F8F1 22          ret

Percebam aqui de novo a parte em azul que pega na EPPROM o valor da fonte selecionada no menu. Com isto está pronto.

E é isso pessoal, espero a avaliação e os comentários de vocês. Mais tarde coloco o firmware pra download. Quero discutir um pouco das minhas descobertas sobre o bug do "div by 4" das legendas.  8)

Abraços,
« Last Edit: January 09, 2008, 04:51:42 PM by ronison »

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #271 on: January 10, 2008, 12:12:57 AM »
ronison,

Torço para que você consiga postar logo este novo firmware.

Se me permite, uma pergunta:

Você usou base o firmware do naasom (feito com apoio do eneris), postado no HTFORUM sob o título "NOVO FIRMWARE 5965K COM GO-TO!!!" no htforum em 18-12-2007?

Todos,

Humilde sugestão: Sempre que possível, mantenham nos novos firmwares as funções dos firmwares imediatamente anteriores.

Estou estudando como agregar no Philips DVP-5965K/55...
A) Carregamento automático de legenda
 How to - Detalhes a serem traduzidos e colocados no log de descobertas
 (http://tech.groups.yahoo.com/group/mt13x9/message/8340)
B) Nomes longos de arquivos a partir da USB
 Implentação bem sucedida no 5980/12
(http://board.softpedia.com/index.php?s=&showtopic=8736&view=findpost&p=30575)
 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)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #272 on: January 10, 2008, 06:49:08 AM »
Gente,

Só estou vindo aqui agora porque recebi um e-mail de Ronison me pedindo para dar uma olhada neste tópico.

Infelizmente, estive "dando um tempo" com firmware porque preciso estudar coisas que são relacionadas com o meu ganha-pão. Talvez eu volte à ativa na próxima semana, mas isso ainda é incerto.

pauloturij,

Não faço a menor idéia agora de onde estão as imagens que você pediu. Lamento.
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 ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #273 on: January 10, 2008, 10:27:51 AM »
ronison,

Torço para que você consiga postar logo este novo firmware.
Infelizmente, não tive tempo de fazer isso ontem.  De toda forma, estou tentando decifrar o enigma do "div by 4" antes de fechar. O que descobri é que, no firmware baixado do site da Philips esta regra não é atendida, como também não é atendida a regra de inversão das cores da fonte. Outro detalhe importante é que, a Fonte 01 do firmware original possui 279 caracteres, e não 256.

Se me permite, uma pergunta:

Você usou base o firmware do naasom (feito com apoio do eneris), postado no HTFORUM sob o título "NOVO FIRMWARE 5965K COM GO-TO!!!" no htforum em 18-12-2007?

Todos,

Humilde sugestão: Sempre que possível, mantenham nos novos firmwares as funções dos firmwares imediatamente anteriores.
Concordo. E sim, usei a versão do naason.

Estou estudando como agregar no Philips DVP-5965K/55...
A) Carregamento automático de legenda
 How to - Detalhes a serem traduzidos e colocados no log de descobertas
 (http://tech.groups.yahoo.com/group/mt13x9/message/8340)
B) Nomes longos de arquivos a partir da USB
 Implentação bem sucedida no 5980/12
(http://board.softpedia.com/index.php?s=&showtopic=8736&view=findpost&p=30575)
 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)
Pelo que eu já vi no assembly aqui não está tão difícil fazer o carregamento automático. Será a próxima empreitada.  8)

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #274 on: January 10, 2008, 06:09:51 PM »
A tabela de tipos de mídia no ARM do Philips DVP5965K/55 possui todos os registros do Proview DVP-858, e também um registro específico para a extensão .DIV:

12 03 44 49 56 00 00 DIV
« Last Edit: January 10, 2008, 06:37:41 PM by doctorxyz »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #275 on: January 10, 2008, 08:09:41 PM »
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.

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 doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #276 on: January 11, 2008, 05:14:21 PM »
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/8340

Saiba 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.zip

Achei 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
« Last Edit: January 17, 2008, 06:06:09 AM by doctorxyz »

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #277 on: January 14, 2008, 06:55:03 PM »
estou tentando decifrar o enigma do "div by 4" antes de fechar. O que descobri é que, no firmware baixado do site da Philips esta regra não é atendida, como também não é atendida a regra de inversão das cores da fonte. Outro detalhe importante é que, a Fonte 01 do firmware original possui 279 caracteres, e não 256.

Ronison

Se eu entendi bem, você está amarrando o "bug" ao número de caracteres: Este tem que ser divisível por 4.

Mas pelo que li (posso estar equivocado), o "bug" está relacionado com largura dos caracteres: Isso sim tem que ser divísivel por 4.

Se meu entendimento está correto, então sugiro que não use o MTKReMaker para montar suas fontes, use o MTKFontCreator pois ele é específico para isso.

Neste link aqui (http://board.softpedia.com/lofiversion/index.php/t3474-50.html) juanma76 cita que fontes de 4 cores são ótimas com aparelhos Philips, mas alerta que você deve se assegurar de que a opção "Widths are div. by 4" está selecionada ou marcada, já que RISCs mais novos aceitam apenas fontes que são múltiplas de 4.
Esta opção, informa otuken, é nas configurações do utilitário "MTKFont Creator".
O MtkFontCreator v0.6.12 é encontrado no site do NA (http://newage.mpeg4-players.info/mt1389/tools/MtkFontCreator_0.6.12.rar)
E a opção está em
Font Creation -> Font Character Generation Options -> Widths are div. by 4.

O MTKFontCreator carregou automático como fonte inicial, a Arial Narrow (minha fonte predileta); note que:
- Com a opção desmarcada (é o valor default), a largura máxima é 22.
- Com a opção marcada, a largura máxima aumenta para 24 (número divisível por 4)!
É só olhar na última linha (linha de status), fique marcando e desmarcando a opção e confira.

Espero ter ajudado.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #278 on: January 14, 2008, 07:24:05 PM »
Para o problema dos RISC que requerem fontes com largura múltiplo de 4, sugiro que tente o seguinte patch, que apresenta uma solução ao problema, permitindo o uso de fontes de largura livre (bem melhores para legendas). Porém o patch não funciona em todos os RISCs (funcionou no meu do firmware "alternativo": RISC v05.00.05.07).

Funciona comprovadamente nos RISC v05.00.05.07, v05.00.05.09 e v05.00.06.00.

Vou explicar somento o problema mais comun ("tipo1").

Procedimento:

Tipo 1: Somente trocar algums bytes:

Busque:
04 93 01 23 09 9D 10 9A E8 18 40 08 40 06 06 0E 06 96 02 93

Troque por:
09 9D 04 93 E8 1C 80 08 80 06 06 0E 01 23 10 9A 02 93 06 96

O problema "tipo 2" apresentado en algums players (exemplo: Medion MD-80796) e mais complicado. Requer redimensionar os ArmCodes, adicionar código novo em espaço livre e fazer os saltos ao novo código...

Saudações!
Juan M. Araújo


PS: Aclaração...

Neste link aqui (http://board.softpedia.com/lofiversion/index.php/t3474-50.html) juanma76 cita que fontes de 4 cores são ótimas com aparelhos Philips, mas alerta que você deve se assegurar de que a opção "Widths are div. by 4" está selecionada ou marcada, já que RISCs mais novos aceitam apenas fontes que são múltiplas de 4.

O texto: "'Four color' fonts are fine with Philips players... Just be sure that you have the "Widths are div. by 4" selected (activated or marked)..." era em resposta a um usuario que indicava que tinha que se usar as fontes em "old-compatibility mode". Foi um mal entendido, eu achei que ele estava falando da primeira opção: fontes de duas cores. Daí a minha resposta (eu sou "juanma76"  :P) que fontes de quatro cores funcionavam bem...
Fórum do DVP5100
(novo endereço)

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #279 on: January 14, 2008, 08:03:14 PM »
Olá Pessoal,

    Pra falar a verdade jpa consegui fazer o player funcionar com fontes sem o "div by 4". Fiz vários tipos de testes. Em grande parte deles o que ocorreu foi que os textos do Setup simplesmente sumiram. Mas já estou contornando a situação. Consegui fazer com que tudo funcionasse a contento, e o player ficou com 5 fontes selecionáveis. Porém, fiz uma besteira no 8032 e o player faleceu. Agora tenho que ressussitá-lo para continuar com os testes e experimentos (estou a procura do conector de 4 pinos para a porta serial do aparelho).

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Sobre Carregamento automático de legendas no DVP5965K/55
« Reply #280 on: January 16, 2008, 07:57:54 AM »
jmaraujo,

Caso tenha disponibilidade, poderia me ajudar em alguma destas "missões" que postei acima?
Ficaria muito grato... Estou super empolgado tentando fazer o meu primeiro hack, mas confesso que está difícil... Até coloquei os códigos do firmware do hej546 e o do meu player (Firmware DVP5965K v2.2b by naasom -v.Packet Bitstream postado no htforum em 18.12.2007) lado a lado no Excel, mas não está adiantando. O código é diferente, não acho os padrões.

- Missão 1: Achar a rotina GetFileType do DVP5965K/55
- 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) do DVP5965K/55
- Missão 3: Achar a rotina Video_play do DVP5965K/55

Grato

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Sobre Carregamento automático de legendas no DVP5965K/55
« Reply #281 on: January 16, 2008, 10:54:53 AM »
jmaraujo,

Caso tenha disponibilidade, poderia me ajudar em alguma destas "missões" que postei acima?
Ficaria muito grato... Estou super empolgado tentando fazer o meu primeiro hack, mas confesso que está difícil... Até coloquei os códigos do firmware do hej546 e o do meu player (Firmware DVP5965K v2.2b by naasom -v.Packet Bitstream postado no htforum em 18.12.2007) lado a lado no Excel, mas não está adiantando. O código é diferente, não acho os padrões.

- Missão 1: Achar a rotina GetFileType do DVP5965K/55
- 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) do DVP5965K/55
- Missão 3: Achar a rotina Video_play do DVP5965K/55

Claro. Me passe o link para download do seu firmware para que eu possa dar uma olhada.

Você já viu o meu post no fórum do DVP5100? (É mais completo que o que eu postei no MT13x9)

Mas para ir adiantando o assunto:

Para achar GetFileType, busque "EF 75 F0 10 A4 24 ? FF E5 F0 34 ? FE 12 ? ? EF 12"

Para achar Video_Play, busque "EF 24 FE 60 ? 14 60 ? 24 02 70 ? 74 FF 90 ? ? F0 A3 F0 90 ? ? F0 A3 F0 C2 ? 12"
ou
"EF 24 FE 60 ? 14 60 ? 24 02 70 ? 74 FF 90 ? ? F0 A3 F0 90 ? ? F0 A3 F0 C2 ? 02"

A única diferença entre as duas seqüencias para achar Video_Play e que uma faz um ljmp ("02") para a rotina "Start_Playback" e a outra faz um lcall ("12").

Saudações!
Fórum do DVP5100
(novo endereço)

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Sobre Carregamento automático de legendas no DVP5965K/55
« Reply #282 on: January 16, 2008, 03:27:40 PM »
jmaraujo,

Caso tenha disponibilidade, poderia me ajudar em alguma destas "missões" que postei acima?
Ficaria muito grato... Estou super empolgado tentando fazer o meu primeiro hack, mas confesso que está difícil... Até coloquei os códigos do firmware do hej546 e o do meu player (Firmware DVP5965K v2.2b by naasom -v.Packet Bitstream postado no htforum em 18.12.2007) lado a lado no Excel, mas não está adiantando. O código é diferente, não acho os padrões.

- Missão 1: Achar a rotina GetFileType do DVP5965K/55
- 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) do DVP5965K/55
- Missão 3: Achar a rotina Video_play do DVP5965K/55

Claro. Me passe o link para download do seu firmware para que eu possa dar uma olhada.

Você já viu o meu post no fórum do DVP5100? (É mais completo que o que eu postei no MT13x9)

Mas para ir adiantando o assunto:

Para achar GetFileType, busque "EF 75 F0 10 A4 24 ? FF E5 F0 34 ? FE 12 ? ? EF 12"

Para achar Video_Play, busque "EF 24 FE 60 ? 14 60 ? 24 02 70 ? 74 FF 90 ? ? F0 A3 F0 90 ? ? F0 A3 F0 C2 ? 12"
ou
"EF 24 FE 60 ? 14 60 ? 24 02 70 ? 74 FF 90 ? ? F0 A3 F0 90 ? ? F0 A3 F0 C2 ? 02"

A única diferença entre as duas seqüencias para achar Video_Play e que uma faz um ljmp ("02") para a rotina "Start_Playback" e a outra faz um lcall ("12").

Saudações!

Mestre jmaraujo,

Acabei de ler e testar suas dicas daqui e do documento do forum DVP5100. Mesmo assim não consigo achar GetFileType e Video_Play com as sequências de busca informadas.

Nem no firmware modificado que estou usando...

(naasom, publicado no HT Forum em 18.12.2007, e baseado na v2.2 Packet Bitstream do Eneris
http://www.4shared.com/file/32413050/81d9a4b2/DVP5965K_93GOTO_PB.html?dirPwdVerified=67cd922f


...tampouco no firmware original da Philips...
https://www.p4c.philips.com/cgi-bin/dcbint/eula.pl?slg=BRP&link=https://www.p4c.philips.com/files/d/dvp5965k_55/dvp5965k_55_fus_eng.zip

:-( .......

Bom, os links de ambos firmwares estão funcionando. Se puder dar uma "olhadinha"...

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
RESOLVIDO! Philips DVP5965K_55 - Carregamento Automático de Legendas
« Reply #283 on: January 20, 2008, 02:33:34 PM »
Ryan,

O que prefere, quando eu terminar a documentação das explicações (semana que vem)? Posto aqui ou em separado?

JMAraujo,

Não precisa mais esquentar a cabeça sobre o assunto carregamento automático de legendas no 5965K/55: Mistério resolvido!

Já achei as rotinas, o que era o mais difícil (elas não são descobertas pelas sequências de busca convencionais, tem que analisar código 8032 mesmo)...

Peguei o seu guia, entitulado "Carga automática de subtítulos (feito em cima daquele do hej456, porém mais completo e recente)", postado em http://www.forodvp5100.com.ar/viewtopic.php?f=16&t=591&sid=bfc4e9bfe41c1738f3b36daa306162a7

...e adaptei com as informações abaixo.

Fiz um patch beta - só para testar mesmo - alterando 5 bytes e funcionou (avi's carregam legenda automática, o único problema em potencial já que não pude testar - só li a teoria e apliquei - é que os arquivos DMF i.e. divx Ultra ficariam sem opção de seleção de legenda no menu interno).

E agora há pouco fiz o patch definitivo (muito mais trabalhoso, para endereçar a questão DMF adequadamente e pelo fato da rotina FileGetType ser diferente dos outros aparelhos), fiz o teste, funcionou e compartilho aqui (veja detalhes das rotinas no rodapé desta mensagem):

PASSO-A-PASSO

(Obs.: Ninguém é obrigado a usar os utilitários informados aqui)

- Executar o MTK ReMaker 0.2 (8 )

- Abrir o firmware-base (7) e no extrair o código 8032 e o ARM Code 1 dele
(opção File -> Open e MT13X9 -> Code Part -> 8032 -> Botão Direito -> Save)
e Code Part -> RISC -> ARM Codes -> ARM Code 1 -> Botão Direito -> Save)

- Executar o XVI32 2.51 (9)

- Abrir o bloco 1 do código ARM
 (opção File -> Open)

- Alterar um byte em B4:A996 (Está dentro da tabela de tipos de mídia do ARM Code)
 (opção Address -> Go to -> $4A996)

      De   12

      Para   09

- Salvar o bloco 1 do código ARM alterado com outro nome
  (opção File -> Save As)

- Fechar o bloco 1 do código ARM
 (opção File -> Close)

- Abrir o código 8032
 (opção File -> Open)

- Alterar 3 bytes em B4:D511 (Dentro da rotina GetFileType)
 (opção Address -> Go to -> $4D511)

      De   7F 04      mov   R7, #4
         22

      Para   02 FB 2C   ljmp  DMF_or_AVI

- Alterar 4 bytes em B4:FB2C (Criar rotina DMF_or_AVI onde só havia FF)
 (opção Address -> Go to -> $4FB2C)

      De   FF FF FF FF

      Para   24 08      add   A, #8
         70 10      jnz   B4_B1AVI_Counter

- Alterar 6 bytes em B4:FB30 (Criar rotina B4_B1DMF_Counter onde só havia FF)
 (opção Address -> Go to -> $4FB30)

      De   FF FF FF FF FF FF

      Para   90 FA F0   mov   DPTR, #DMF_Counter
         02 18 8F   ljmp  B4_Bank_1

- Alterar 6 bytes em B4:FB40 (Criar rotina B4_B1AVI_Counter onde só havia FF)
 (opção Address -> Go to -> $4FB40)

      De   FF FF FF FF FF FF

      Para   90 FB 00   mov   DPTR, #AVI_Counter
         02 18 8F   ljmp  B4_Bank_1

- Alterar 3 bytes em B1:D313 (Dentro da rotina Video_Play)
 (opção Address -> Go to -> $1D313)

      De   02 1D 1C   ljmp  B1_B4Playback_start

      Para   02 FB 10   ljmp  Autopress_subtitle

- Alterar 12 bytes em B1:FAF0 (Criar rotina DMF_Counter onde só havia FF)
 (opção Address -> Go to -> $1FAF0)

      De   FF FF FF FF FF FF FF FF FF FF FF FF

      Para   7F C4      mov   R7, #0xC4 ; '-'
         7E 13      mov   R6, #0x13
         7D 01      mov   R5, #1
         12 1B 96   lcall B1_B0Arm_PutChar
         74 04      mov   A, #4
         22      ret

- Alterar 12 bytes em B1:FB00 (Criar rotina AVI_Counter onde só havia FF)
 (opção Address -> Go to -> $1FB00)

      De   FF FF FF FF FF FF FF FF FF FF FF FF

      Para   7F C4      mov   R7, #0xC4 ; '-'
         7E 13      mov   R6, #0x13
         7D 00      mov   R5, #0
         12 1B 96   lcall B1_B0Arm_PutChar
         74 04      mov   A, #4
         22      ret

- Alterar 19 bytes em B1:FB10 (Criar rotina Autopress_subtitle onde só havia FF)
 (opção Address -> Go to -> $1FB10)

      De   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

      Para   12 1D 1C   lcall B1_B4Playback_start
         7F C4      mov   R7, #0xC4 ; '-'
         7E 13      mov   R6, #0x13
         12 1B 84   lcall B1_B0Arm_PutChar
         EF      mov   A, R7
         64 01      xrl   A, #1
         60 03      jz    B1_FB22
         02 2C 28   ljmp  B1_B1Subtitle_loading
         22      ret

- Salvar o código 8032 alterado com outro nome
  (opção File -> Save As)

- Fechar o código 8032
 (opção File -> Close)

- Executar o MtkReplacer v0.5 (10)

- Criar uma nova versão de firmware a partir do firmware-base (7) (input firmware) e a alteração no código 8032 (8032 Block) que acaba de ser feita pelo XVI32
  Proceder nesta ordem
  1o. Input firmware -> informar o caminho e o nome do firmware-base (7)
  2o. 8032 Block -> informar o caminho e nome do código 8032 que acaba de ser alterado
  3o. ARM Code 1 (uncompressed) -> informar o caminho e nome do bloco 1 do código ARM que acaba de ser alterado
  4o. Output firmware -> É sugerido um nome para o novo firmware, porém (importante!) informe nome DVP5965K_93.BIN e numa pasta em separado.
  5o. Clicar em Replace   

- Executar o DeepBurner Free Portable 1.8 (10), visando obter um CD de dados monosessão com um arquivo somente, nome em maiúsculas DVP5965K_93.BIN. Todas as letras em maíusculo, se não tiver este cuidado, ao inserir no DVD Player o CD não reconhecido(Aparecerá a mensagem "Disco Desconhecido"):

- Colocar uma mídia CD-R ou CD-RW virgem (e de qualidade) no gravador de CD

- Criar CD de dados monosessão
   Select project type: -> Project type: -> Create data CD/DVD -> Next ->
   New Project: -> Multisession: -> No Multissession -> Next ->

- Selecionar ícone CDRoot

- Teclar F2 (Change volume label) -> Informe DOCTORXYZ1.1 (para fins de controle de versão)

- Clicar no ícone Add files -> localizar e selecionar o novo firmware DVP5965K_93.BIN
(se não estiver com este nome, renomeio agora. Tudo deve estar em maiúsculas, inclusive a extensão)

- Clicar no item Burn Disk -> Speed -> Selecionar a menor velocidade possível

- Clicar em Burn

- Atualizar o firmware colocando o CD de dados no DVD Player, confirmar a atualização apertando a tecla Play, retirar o CD na hora informada e esperar alguns minutos. Durante a atualização do firmware, não mexer nem desligar o aparelho, senão você poderá ter problemas. Caso isso ocorra, você deverá providenciar um cabo de dados para recuperá-lo. (12)

-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-

Não fiz o upload do novo firmware por uma questão de tempo e saco, quem quiser fazê-lo fique à vontade, só não esqueça de citar o novato aqui ;-)

Ainda esta semana devo postar as instruções detalhadas de como cheguei até aqui.

Saudações!

doctorxyz

PS: Críticas ***construtivas*** sempre são bem-vindas!

-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-

Rotinas 8032(nome, localização e breve descrição) - Philips DVP5965K/55

Remote_DivXplayback   B4:5F6D -> Chama a função correspondente ao botão pressionado

Tecla29      B4:5FE8 -> Trata-se de uma palavra (dois bytes) contendo o endereço da rotina DivX_Tecla29 (B4:618F) e um byte com o código do botão subtitle (0x29)

DivX_Tecla29   B4:618F -> Chama B4_B1Subtitle_loading

GetFileType      B4:D4D7 -> Obtêm o código de tipo de mídia no ARM (13)

B4_B0Arm_GetChar   B4:1B84 -> Chaveia o 8032 do bloco 4 para 0 e chama Arm_GetChar

B1_B0Arm_GetChar   B1:1B84 -> Chaveia o 8032 do bloco 1 para 0 e chama Arm_GetChar

Arm_GetChar      B0:E8BB -> Obtêm um caractere

B4_B0Arm_PutChar   B4:1B96 -> Chaveia o 8032 do bloco 4 para 0 e chama Arm_PutChar

B1_B0Arm_PutChar   B1:1B96 -> Chaveia o 8032 do bloco 1 para 0 e chama Arm_PutChar

Arm_PutChar      B0:EBEF -> Armazena um caractere

Video_play      B1:D2B6   -> No endereço B1:D313, executa lcall B1_B3Playback_start

B1_B4Playback_start   B1:1D1C   -> Chaveia o 8032 do bloco 1 para 4 e chama Playback_start

Playback_start      B4:ABBB -> Inicia a reprodução

B4_B1Subtitle_loading   B4:2C28 -> Chaveia o 8032 do bloco 4 para 1 e chama Subtitle_loading

B1_B1Subtitle_loading   B1:2C28 -> Chaveia o 8032 do bloco 1 para 1 e chama Subtitle_loading (só não entendi porque chavear blocos, se não precisa!)

Subtitle_loading   B1:C619 -> Produz o mesmo efeito do pressionamento da tecla subtitle

DMF_or_AVI      B4:FB2C -> Decide qual contador (AVI ou DMF) utiliza em função do valor do acumulador que recebe de GetFileType

B4_B1DMF_Counter   B4:FB30 -> Chaveia o 8032 do bloco 4 para 1 e chama DMF_Counter

B4_B1AVI_Counter   B4:FB40 -> Chaveia o 8032 do bloco 4 para 1 e chama AVI_Counter

DMF_Counter      B1:FAF0 -> Sinaliza num flag que o arquivo é DMF.

AVI_Counter      B1:FB00 -> Sinaliza num flag que o arquivo é AVI.

Autopress_subtitle    B1:FB10 -> Lê o flag (preenchido por DMF_Counter ou AVI_Counter). Se for arquivo AVI, carrega a legenda antes de reproduzí-lo.


Tabela de tipos de mídia no ARM Code – Philips DVP5965K/55
Começa em ARM Code 1, ROM:0004A8FC. Os tipos que interessam:

ROM:0004A93B 09 03 4D 50 47 00 00 MPG
...
ROM:0004A957 09 03 4D 50 45 00 00 MPE
ROM:0004A95E 09 03 4D 31 56 00 00 M1V
ROM:0004A965 09 03 4D 32 56 00 00 M2V
...
ROM:0004A97A 09 04 4D 50 45 47 00 MPEG
...
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


-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-

Referências (algumas)

(1) Firmware MT13x9: Log de Descobertas
http://ryan.com.br/smf/index.php?topic=179.0

(2) Smart Loading of text subtitles in DMF (documento do hej456)
http://hej456.fasthoster.de/Smart.Loading.of.subs.in.DMF.zip

(3) Carga automática de subtítulos (documento do jmaraujo, feito em cima daquele do hej456, porém mais completo e recente)
http://www.forodvp5100.com.ar/viewtopic.php?f=16&t=591&sid=bfc4e9bfe41c1738f3b36daa306162a7

(4) Grupo MT13x9
http://tech.groups.yahoo.com/group/mt13x9/

(5) Grupo MEDIATEK1389 (do Cachirulo)
http://tech.groups.yahoo.com/group/MEDIATEK1389/

(6) Firmware Yamada 6700 Hej456.DSP.v5.0a (usado na explicação do documento do hej456)
http://www.hej456.com/forum/docs/Hej456.DSP.v5.0a.1252.zip

(7) Firmware DVP5965K by naasom -v.Packet Bitstream (18.12.2007)
(tem a função GO-TO e foi feito em cima do firmware do Eneris v2.2)
http://www.htforum.com/vb/showthread.php?t=60507&highlight=firmware

(8 ) MTK ReMaker 0.2
http://personal.inet.fi/cool/mediatek/programs/mtkremaker/MTKReMaker023b6.zip

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

(10) MtkReplacer v0.5
http://newage.mpeg4-players.info/mt1389/tools/MtkReplacer_0.5.rar

(11) DeepBurner Free Portable 1.8
http://www.deepburner.com/

(12) “Ressuscitando” o Player pela Serial
http://ryan.com.br/mtk_porta_serial.htm

(13) Tabela de tipos de mídia no ARM Code
http://ryan.com.br/smf/index.php?PHPSESSID=d842fc529d9bac6e705db40ddd1e9733&topic=179.msg9172607#msg9172607

(14) Scripts IDA do Grupo MT13x9
 http://tech.groups.yahoo.com/group/mt13x9/
(Files -> Disassembling -> !IDA Scripts -> MT1389_8032_ARM_IDA_SCRIPTS_2007.feb.7.RAR)


-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-

Agradecimentos

"Se fui mais longe, é porque me escorei no ombro de gigantes":
Ryan, hej456, JMAraujo, NA, MaBreaker, Eneris, Naasom, cachirulo, grupo MT13x9, grupo MEDIATEK1389.
« Last Edit: January 26, 2008, 09:07:29 PM by doctorxyz »

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #284 on: January 21, 2008, 02:32:29 AM »
Dois pontos:

1. A rotina Playback_start (B4:ABBB) é chamada em B1:D313, e não em B1:D2C7, conforme dito.

 e

2.Tem uma coisa aqui que eu não entendi:

ROM:FAF0 7F C4          mov   R7, #0xC4 ; '-'
ROM:FAF2 7E 13          mov   R6, #0x13
ROM:FAF4 7D 01          mov   R5, #1
ROM:FAF6 12 05 F5       lcall Arm_PutChar

Como  é que se coloca algo no endereço 0x13C4...

ROM:FB13 7F 46          mov   R7, #0x46 ; 'F'
ROM:FB15 7E 00          mov   R6, #0x00
ROM:FB17 12 04 7B       lcall Arm_GetChar

E depois lê do endereço 0x46? Alguem sabe explicar isso?

No mais, parabéns pelo trabalho doctorxyz.
« Last Edit: January 21, 2008, 02:59:20 AM by ronison »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #285 on: January 21, 2008, 07:47:09 AM »
Você está absolutamente certo, ronison.

Foi um error do Hej456 mesmo (eu nunca tinha percebido isso antes). Veja no documento do proprio Hej456:

ROM:0C13             play + press subtitle if avi:
ROM:0C13 12 A4 AD              lcall ROM_A4AD           ;the call that starts playback.
ROM:0C16 7F 46                 mov   R7, #0xC4 ; '-'
ROM:0C18 7E 00                 mov   R6, #13            ;get counter from shared memory
ROM:0C1A 12 F4 EF              lcall ARM_GetChar
ROM:0C1A
ROM:0C1D EF                    mov   A, R7
ROM:0C1E 64 01                 xrl   A, #1              ;if counter = 1 (divx)
ROM:0C20 60 03                 jz    ROM_C25            ;return
ROM:0C22 02 0B DD              ljmp  BS:382_B1:B753     ;else “press subtitle button”
ROM:0C25             ROM_C25:
ROM:0C25 22                    ret


Não coincide o disassembly (em azul) com os opcodes (vermelho).

Eu cometí o mesmo erro no meu firmware. Vou consertar agora mesmo.

Saudações!
« Last Edit: January 21, 2008, 07:53:18 AM by jmaraujo »
Fórum do DVP5100
(novo endereço)

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #286 on: January 21, 2008, 11:34:20 AM »
1. A rotina Playback_start (B4:ABBB) é chamada em B1:D313, e não em B1:D2C7, conforme dito.
Ronison,

Tem razão quanto ao endereço de chamada para Playback_start dentro da Video_Play

Já atualizei o texto no post principal (abaixo, colocos os detalhes a quem interessar possa):

Excluí a parte:
"- Alterar 2 bytes em B1:D2C8 (Dentro da rotina Video_Play)
 (opção Address -> Go to -> $1D2C8)

      De   1E D8

      Para   FB 10"

E coloquei em seu lugar:
"- Alterar 2 bytes em B1:D314 (Dentro da rotina Video_Play)
 (opção Address -> Go to -> $1D314)

      De   1D 1C

      Para   FB 10"



Excluí a parte:
"
- Alterar 19 bytes em B1:FB10 (Criar rotina Autopress_subtitle onde só havia FF)
 (opção Address -> Go to -> $1FB10)

      De   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
      Para   12 1E D8
         7F C4
         7E 13
         12 1B 84
         EF
         64 01
         60 03
         02 2C 28
         22"

E coloquei em seu lugar:
"- Alterar 19 bytes em B1:FB10 (Criar rotina Autopress_subtitle onde só havia FF)
 (opção Address -> Go to -> $1FB10)

      De   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
      Para   12 1D 1C
         7F C4
         7E 13
         12 1B 84
         EF
         64 01
         60 03
         02 2C 28
         22"


Excluí a parte:
"Video_play      B1:D2B6   -> No endereço B1:D2C7, executa lcall B1_B3Playback_start

B1_B3Playback_start   B1:1ED8   -> Chaveia o 8032 do bloco 1 para 3 e chama Playback_start

Playback_start      B3:E9FE -> Inicia a reprodução
"

E coloquei em seu lugar:
"Video_play      B1:D2B6   -> No endereço B1:D313, executa lcall B1_B3Playback_start

B1_B4Playback_start   B1:1D1C   -> Chaveia o 8032 do bloco 1 para 4 e chama Playback_start

Playback_start      B4:ABBB -> Inicia a reprodução"

2.Tem uma coisa aqui que eu não entendi:

ROM:FAF0 7F C4          mov   R7, #0xC4 ; '-'
ROM:FAF2 7E 13          mov   R6, #0x13
ROM:FAF4 7D 01          mov   R5, #1
ROM:FAF6 12 05 F5       lcall Arm_PutChar

Como  é que se coloca algo no endereço 0x13C4...

ROM:FB13 7F 46          mov   R7, #0x46 ; 'F'
ROM:FB15 7E 00          mov   R6, #0x00
ROM:FB17 12 04 7B       lcall Arm_GetChar

E depois lê do endereço 0x46? Alguem sabe explicar isso?

Você está absolutamente certo, ronison.

Foi um error do Hej456 mesmo (eu nunca tinha percebido isso antes). Veja no documento do proprio Hej456:

ROM:0C13             play + press subtitle if avi:
ROM:0C13 12 A4 AD              lcall ROM_A4AD           ;the call that starts playback.
ROM:0C16 7F 46                 mov   R7, #0xC4 ; '-'
ROM:0C18 7E 00                 mov   R6, #13            ;get counter from shared memory
ROM:0C1A 12 F4 EF              lcall ARM_GetChar
ROM:0C1A
ROM:0C1D EF                    mov   A, R7
ROM:0C1E 64 01                 xrl   A, #1              ;if counter = 1 (divx)
ROM:0C20 60 03                 jz    ROM_C25            ;return
ROM:0C22 02 0B DD              ljmp  BS:382_B1:B753     ;else “press subtitle button”
ROM:0C25             ROM_C25:
ROM:0C25 22                    ret


Não coincide o disassembly (em azul) com os opcodes (vermelho).

Eu cometí o mesmo erro no meu firmware. Vou consertar agora mesmo.

ronison e jmaraujo,

Obrigado pelo toque. Já consertei o meu texto lá em cima, conforme indicado abaixo:

"- Alterar 19 bytes em B1:FB10 (Criar rotina Autopress_subtitle onde só havia FF)
 (opção Address -> Go to -> $1FB10)


      De   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
      Para   12 1E D8
         7F C4 <------------------------------------Consertado; antes, estava 46
         7E 13 <------------------------------------Consertado; antes, estava 00
         12 1B 84
         EF
         64 01
         60 03
         02 2C 28
         22

(...)"

ronison,

Consertei um bug - Não tinha feito corretamente o teste de mesa na sequência de comparações 8032 que se iniciam na GetFileType (B4:D4D7) a partir de B4:D4E8 e terminam em B4:D509.
Agora está assim: GetFileType, em B4:D511 desvia para DMF_or_AVI (localizada em B4:FB2C). A rotina DMF_or_AVI decide para se vai desviar para AVI_counter (B4:FB40) ou para DMF_counter (B4:FB30), que está imediatamente no byte seguinte, em função do conteúdo do acumulador:
- quando o código de mídia é 0x9 (mpeg/avi) -> acumulador = 0xFD
- quando o código de mídia é 0x12 (DMF=.divx) -> acumulador = 0xF8
« Last Edit: January 22, 2008, 11:53:24 AM by doctorxyz »

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #287 on: January 21, 2008, 01:32:50 PM »
Temos algo estranho nesta função DMF_or_AVi:

24 08   ADD A, #0x08   ;Adiciona o valor 8 ao acumulador (qual seria o valor anterior?)
70 10   JNZ 10      ;Sempre salta para o endereço FB3E (FB2E + 0x10). O que tem neste endereço? Onde está a decisão de DMF ou AVI?


Abraço,
« Last Edit: January 21, 2008, 01:34:42 PM by ronison »

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #288 on: January 21, 2008, 03:35:37 PM »
Temos algo estranho nesta função DMF_or_AVi:

24 08   ADD A, #0x08   ;Adiciona o valor 8 ao acumulador (qual seria o valor anterior?)
70 10   JNZ 10      ;Sempre salta para o endereço FB3E (FB2E + 0x10). O que tem neste endereço? Onde está a decisão de DMF ou AVI?


Abraço,


Os valores anteriores do acumulador que podem chegar neste trecho de código é um destes aqui:
Acumulador = 0xFD -> chega assim quando o código de mídia é 0x09 (mpeg/avi)
Acumulador = 0xF8 -> chega assim quando o código de mídia é 0x12 (DMF=.divx)

Mestre Ronison,

Conferi no IDA Pro!

Na rotina DMF_or_AVI, no endereço B4:FB2E, o op code correto para jnz B4_FB40 é 70 10 mesmo.

É um salto para B4_B1_AVI_counter (B4:FB40).

A decisão de DMF ou AVI, vem quando somamos 0x08 ao acumulador e ele retorna flag "Zero" ou "Not Zero".

Exemplo1: Se chegar 0xF8, o código de mídia é 0x12 (DMF=.divx). 0xF8 + 0x08 = 0x00, ativando flag "Zero" e "Carry"("vai um"). Neste caso a jnz (Jump Not Zero) é ignorada e passamos para o próximo endereço de execução onde está B4_B1DMF_counter(FB30).

Exemplo1: Se chegar 0xFC, o código de mídia é 0x09 (mpeg/avi). 0xFC + 0x08 = 0x04, ativando flag "Not Zero" e "Carry"("vai um"). Neste caso a jnz (Jump Not Zero) é executada e passamos para endereço de execução onde está B4_B1AVI_counter(FB40).

Esta correção fiz após o teste de mesa (planilha Excel aqui anexa, tem a macro GetFileType dentro para testar o valor de entrada que quiser nela) na sequência de comparações 8032 que se iniciam na GetFileType (B4:D4D7) a partir de B4:D4E8 e terminam em B4:D509.

Por isso agora está assim: GetFileType, em B4:D511 desvia para DMF_or_AVI (localizada em B4:FB2C). A rotina DMF_or_AVI decide para se vai desviar para AVI_counter (B4:FB40) ou para DMF_counter (B4:FB30), que está imediatamente no byte seguinte, em função do conteúdo do acumulador:

Se tiver mais dúvidas, é só perguntar.

Saudações!
« Last Edit: January 22, 2008, 09:05:57 AM by doctorxyz »

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #289 on: January 22, 2008, 09:20:14 AM »
Ronison,

Por uma questão de controle de versões (e desencargo de consciência) faça um favor:

Certifique-se que no endereço B4:D517 (Dentro da rotina GetFileType) estão os op codes 7F 00 22.

É que tinha dito numa versão anterior do meu post
"- Alterar 3 bytes em B4:D517 (Dentro da rotina GetFileType)
 (opção Address -> Go to -> $4D517)

      De   7F 00
         22

      Para   02 FB 30"

Pois é, esqueça disso... Reverta! Tem que permanecer inalterado, ou seja, em B4:D517 (Dentro da rotina GetFileType) devem permanecer op codes 7F 00 22.

Poderia confirmar que leu?

Para evitarmos problemas no nosso glorioso firmware.

Grato!

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: Firmware MT13x9: Log de Descobertas
« Reply #290 on: January 22, 2008, 11:07:31 AM »
Olá doctorxyz,

   Eu já tinha feito assim.  ;)

Abraço,

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #291 on: February 06, 2008, 06:21:01 PM »
Jefferson, para responder a sua pergunta no tópico de desenvolvimento do firmware do Proview DVP816, fui dar uma olhada nas minhas anotações e no firmware do DVP5100 e achei um tipo de menú bem interessante: 0014.

Nas minhas anotações ainda não tinha identificado este tipo de menú. Agora estou achando que é um tipo de link especial que permite chamar um (sub)menú desde as opções de escolha de um outro (sub)menú, em lugar de ser chamado desde um (sub)menú.

Por exemplo, no DVP5100, dentro do menú de ajustes de cores ha quatro opções de escolha: Standard, Bright, Soft e Personal (mas este último não é uma opção, mas um link)



  4. No Pic. | Picture Setting | Picture Setting
     0008 FFFF 04E9 04E9 005C 0000 0003 0000 FF3D05 0A7B - ROM:3D11
 => 1. Standard | Standard | [00]
       04BE 04BE 0561 00 - ROM:3CE9
    2. Bright | Bright | [00]
       048F 048F 0561 01 - ROM:3CF0
    3. Soft | Soft | [00]
       04BF 04BF 0561 02 - ROM:3CF7
    4. Personal | Go To Personal Page | [00]
       04EB 0553 0561 03 - ROM:3CFE

Seguindo o link do "Personal" temos a página de configuração de brilho, contraste, etcétera.

23. [00] | Personal Picture Setup
   02 0561 04EC 05 FF3525 0000 - ROM:3534
  1. No Pic. | 0 | 0
     0014 FFFF 0000 0000 FFFF 0000 0000 0000 000000 0000 - ROM:2D03


  2. No Pic. | Brightness %f8%11d %f0%3d | Brightness
     000A FFFF 0093 0092 0084 0078 0014 0000 000000 0A51 - ROM:34D1

  3. No Pic. | Contrast %f8%11d %f0%3d | Contrast
     000A FFFF 00CF 00CE 0085 0079 0010 0000 000000 0A51 - ROM:34E6

  4. No Pic. | Saturation %f8%11d %f0%3d | Tint
     000A FFFF 03DD 0181 0088 0043 0009 0000 000000 0A51 - ROM:34FB

  5. No Pic. | Hue %f8%11d %f0%3d | Color
     000A FFFF 0182 03DC 0087 007A 0009 0000 000000 0A51 - ROM:3510

O menú "Personal Picture Setup" tem cinco opções, más somente as quatro que começam com 000A aparecem na tela.

Estou quase certo que o primeiro funciona como link entre a opção "Personal" do menú "Picture Setting", e a página "Personal Picture Setup".

Ainda não conseguí achar uma relaçao entre eles.

A definiçao do menú 0014 está prácticamente vazía: "0014 FFFF 0000 0000 FFFF 0000 0000 0000 000000 0000" -> 0014 tipo de menú, FFFF sem ícone, o segundo FFFF ?????.
« Last Edit: February 06, 2008, 06:38:22 PM by jmaraujo »
Fórum do DVP5100
(novo endereço)

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: PUOs - Prohibited User Operations
« Reply #292 on: February 06, 2008, 07:18:30 PM »
o MTKArmResizer não funciona em ARM de 3 códigos, como é o caso do DVP-858.
evb62,

Poderia confirmar e/ou completar esta afirmação?

O MTKArmResizer não funciona em nenhum firmware com três ARM Codes (ARM Code 1, ARM Code 2 e ARM Code 3), ou só não funcionou (empiricamente falando) no firmware do Proview DVP-858?

É que fiquei com a pulga atrás da orelha depois de ler a sua afirmação. O curioso é que no help do MKTArmResizer ele cita o código 3 desta forma:

"ARM Code 1 & 2 [&3]"

Grato

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #293 on: February 06, 2008, 10:35:18 PM »
O MTKWindows (0.8.3.) não "suporta" janelas de 256 cores... Estou modificando o firmware (quero liberdade para escolher as cores do ícones) e o MTK Windows mostra isto (somente 20 cores):



Vou ter que por as cores individualmente, mas não entendo a lógica detrás da conversão bytes->cor. Até agora somente sei que Magenta é "FF FF".

Será possivel agrandar esa janela com um resource editor?
Fórum do DVP5100
(novo endereço)

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Posts: 1705
  • Aprovação: +0/-0
    • View Profile
    • http://ryan.com.br
Re: Firmware MT13x9: Log de Descobertas
« Reply #294 on: February 07, 2008, 09:21:12 AM »
O MTKWindows (0.8.3.) não "suporta" janelas de 256 cores... Estou modificando o firmware (quero liberdade para escolher as cores do ícones) e o MTK Windows mostra isto (somente 20 cores):


Antes de comentar sobre esse assunto eu preciso perguntar: Como você chegou a essa janela com 20 células? :blink:


Vou ter que por as cores individualmente, mas não entendo a lógica detrás da conversão bytes->cor. Até agora somente sei que Magenta é "FF FF".

Se tudo o que você precisa é saber o valores, basta usar outro programa do New Age: MtkColorSpace.

Será possivel agrandar esa janela com um resource editor?

Aumentar o tamanho da janela, sim.
Colocar mais células, talvez.
Fazer com que o programa use essas células, não.
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
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: PUOs - Prohibited User Operations
« Reply #295 on: February 07, 2008, 09:28:46 AM »
Doctorxyz,

Realmente, o arquivo help mais recente, datado de 19/05/2005, menciona ARM de 3 codes. Em minha opinião, a menção não é uma afirmação de que há suporte para isso.

Em 23/05/2005, o NewAge afirmou que o MtkArmResizer e o MtkReplacer ainda não eram compatíveis com arms de 3 codes:
http://tech.groups.yahoo.com/group/mt13x9/message/5675

Quanto ao DVP-858, eu acho que tentei aplicar o MtkArmResizer e não deu certo. Mas é possível que eu nem tenha tentado, porque não liguei o cabo serial no meu aparelho. Faz tempo e não lembro direito. Para dizer a verdade, eu tinha esquecido tudo isso, mas felizmente tenho a assinatura deste tópico para visitá-lo quando há novidades.

o MTKArmResizer não funciona em ARM de 3 códigos, como é o caso do DVP-858.
evb62,
Poderia confirmar e/ou completar esta afirmação?
...
Grato

Offline ronison

  • Novato
  • *
  • Posts: 14
  • Aprovação: +0/-0
    • View Profile
Re: PUOs - Prohibited User Operations
« Reply #296 on: February 07, 2008, 11:08:36 AM »
o MTKArmResizer não funciona em ARM de 3 códigos, como é o caso do DVP-858.
evb62,

Poderia confirmar e/ou completar esta afirmação?

O MTKArmResizer não funciona em nenhum firmware com três ARM Codes (ARM Code 1, ARM Code 2 e ARM Code 3), ou só não funcionou (empiricamente falando) no firmware do Proview DVP-858?

É que fiquei com a pulga atrás da orelha depois de ler a sua afirmação. O curioso é que no help do MKTArmResizer ele cita o código 3 desta forma:

"ARM Code 1 & 2 [&3]"

Grato
Doctorxyz,

   Estou usando a área de mensagens de erro para trabalhar códigos no ARM. Certamente você já deve saber, mas isto dispensa o Resizer.

Abraço,

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: PUOs - Prohibited User Operations
« Reply #297 on: February 07, 2008, 11:33:10 AM »

Doctorxyz,

   Estou usando a área de mensagens de erro para trabalhar códigos no ARM. Certamente você já deve saber, mas isto dispensa o Resizer.

Abraço,
[/quote]

Legal Ronison,

Que bom que você já está conseguindo se virar com esta área.

Desabafo: Como ARM é bem mais complicado que 8051 hein!

Será que a gente conseguiria neste espaço alocar (no Philips 5965K/55) nomes longos a partir da USB + Word Wrap (algoritmo Danny Moroz) sem perder nenhuma funcionalidade (principalmente o HDMI)?

Bom, vou seguir a minha pesquisa sobre MtkArmResizer em paralelo, pode ser útil em algum momento para nós (ou para alguém da comunidade).

Estou querendo contribuir e documentar o Word Wrap com algoritmo Danny Moroz para a comunidade.

Caso seu word wrap seja Danny Moroz, esteja pronto e você tenha tempo (e não seja um incômodo) poderia disponibilizar as dicas no tópico específico que abri para isso neste fórum, dentro da seção Philips 5965K/55?

Obrigado

Offline doctorxyz

  • Novato Prolixo
  • **
  • Posts: 63
  • Aprovação: +4/-0
    • View Profile
Re: PUOs - Prohibited User Operations
« Reply #298 on: February 07, 2008, 11:35:40 AM »
Quanto ao DVP-858, eu acho que tentei aplicar o MtkArmResizer e não deu certo. Mas é possível que eu nem tenha tentado, porque não liguei o cabo serial no meu aparelho. Faz tempo e não lembro direito. Para dizer a verdade, eu tinha esquecido tudo isso, mas felizmente tenho a assinatura deste tópico para visitá-lo quando há novidades.
evb62,

Obrigado pelo seu pronto retorno. É, o NewAge deve ter feito uma versão melhorada depois disso.

Amigos,

Diante do exposto pelo colega evb62 e dos testes que acabei de fazer (abaixo), ao que tudo indica o MtkArmResizer "não gosta" - pelo menos parcialmente - dos firmwares do Proview DVP-858.

No MtkArmResizer, temos 4 opções de análise (o NA por algum motivo considera a opção 4 a mais indicada), são elas:
- Opção 1:32bit values
- Opção 2:code search
- Opção 3:code search + 32bit values
- Opção 4:code search + 32bit values at ARM1 end

Abrindo os binários dos "ARM Codes" no MtkArmResizer, notem o que constatei.

No Proview DVP-858 nos firmwares...
- Proview DVP-858 v20.06 (Original)
        Version: 05.00.06.05
   Block 1 Size: 0x000536F8
   Block 2 Size: 0x00024AFC
   Block 3 Size: 0x000228B4
     Total Size: 0x0009AAA8
      File Size: 0x0009AAA8

- Proview DVP-858 v20.07 (Original)
        Version: 05.00.06.05
   Block 1 Size: 0x00054F18
   Block 2 Size: 0x0002574C
   Block 3 Size: 0x000227D4
     Total Size: 0x0009CE38
      File Size: 0x0009CE38

- Proview DVP-858 v3.0 (Eneris)
        Version: 05.00.06.05
   Block 1 Size: 0x00054F18
   Block 2 Size: 0x0002574C
   Block 3 Size: 0x000227D4
     Total Size: 0x0009CE38
      File Size: 0x0009CE38

...as opções 1 e 3 não dão erro, já nas opções 2 e 4 aparece o erro "List index of bounds (0)".

No Philips DVP-5965K/55, nos firmwares...
- Philips DVP5965K/55 V.93.06.37.34 (Original)
        Version: 05.00.06.05
   Block 1 Size: 0x0004FDEC
   Block 2 Size: 0x0001FD1C
   Block 3 Size: 0x0001BD8C
     Total Size: 0x0008B894
      File Size: 0x0008B894

- Philips DVP5965K/55 v2.2 (eneris) v.PB
        Version: 05.00.06.05
   Block 1 Size: 0x0004FDD0
   Block 2 Size: 0x0001FD6C
   Block 3 Size: 0x0001BD8C
     Total Size: 0x0008B8C8
      File Size: 0x0008B8C8

- Philips DVP5965K/55 v2.2 (eneris) v.HDMI
        Version: 05.00.06.05
   Block 1 Size: 0x0004FDEC
   Block 2 Size: 0x0001FD1C
   Block 3 Size: 0x0001BD8C
     Total Size: 0x0008B894
      File Size: 0x0008B894

- Philips DVP5965K/55 v2.2b (naasom) v.PB
        Version: 05.00.06.05
   Block 1 Size: 0x0004FDD0
   Block 2 Size: 0x0001FD6C
   Block 3 Size: 0x0001BD8C
     Total Size: 0x0008B8C8
      File Size: 0x0008B8C8

- Philips DVP5965K/55 Beta 5 (ronison=NKVT)v.HDMI
        Version: 05.00.06.05
   Block 1 Size: 0x0004FDEC
   Block 2 Size: 0x0001FD1C
   Block 3 Size: 0x0001BD8C
     Total Size: 0x0008B894
      File Size: 0x0008B894

...todas as opções (1, 2, 3 e 4) funcionam.

A pergunta que fica é: Qual opção de análise no MtkArmResizer é - de fato - a melhor para o Philips DVP-5965K/55?

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Posts: 404
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • View Profile
    • Fórum DVP5100K
Re: Firmware MT13x9: Log de Descobertas
« Reply #299 on: February 07, 2008, 02:37:11 PM »
O MTKWindows (0.8.3.) não "suporta" janelas de 256 cores... Estou modificando o firmware (quero liberdade para escolher as cores do ícones) e o MTK Windows mostra isto (somente 20 cores):

Antes de comentar sobre esse assunto eu preciso perguntar: Como você chegou a essa janela com 20 células? :blink:

Antes que nada, esclareço que somente estou fazendo experimentos... Ainda há outras coisas a solucionar, como por exemplo: ¿Cómo faço um bitmap de 256 cores? ¿Um bitmap indexado de 256 cores serve? ¿Ou o bitmap, ao igual que os de 16 cores, é um tipo especial de arquivo?

Faz tempo (mais de um ano) que não tocava o tema das janelas no firmware... Bem, vamos ao que interessa:

Tenho lido e escutado sobre referencias no código fonte a 4/16/256/truecolor OSD bitmaps. (Aclaro que não chequei no código fonte).

No firmware do DVP5100, banco 3, temos a tabela (mais conhecida como OSD_AddrTable) das WB, ou White Boards, que é como as Windows IDs são chamadas no código fonte:
ROM:3BE7             OSD_AddrTable
ROM:3BE7 FF                    .byte 0xFF
ROM:3BE8 38 7A                 .word 0x387A                  ; Ventana 0x00
ROM:3BEA FF                    .byte 0xFF
ROM:3BEB 38 9C                 .word 0x389C                  ; Ventana 0x01
ROM:3BED FF                    .byte 0xFF
ROM:3BEE 38 8B                 .word 0x388B                  ; Ventana 0x02
...
ROM:3C11 FF                    .byte 0xFF
ROM:3C12 39 77                 .word 0x3977                  ; Ventana 0x0E
   <-- Link WB 0x0E

Seguindo o link da janela 0x0E:
ROM:3977             Ventana 0x0E
ROM:3977 00 34                 .word 0x34                    ; x1 = 52
ROM:3979 00 76                 .word 0x76                    ; y1 = 118
ROM:397B 02 A0                 .word 0x2A0                   ; x2 = 672
ROM:397D 01 AF                 .word 0x1AF                   ; y2 = 431
ROM:397F 00 30                 .word 0x30                    ; Pal DY (diferencia PAL-NTSC=DY)
ROM:3981 0E                    .byte  0xE                    ; Ventana 0x0E
ROM:3982 02                    .byte    2                    ; Cantidad de colores (1=4, 2=16)
ROM:3983 02                    .byte    2                    ; Transparencia
ROM:3984 00                    .byte    0                    ; ? ? ? ?
ROM:3985 FF                    .byte 0xFF                    ; Pointer byte
ROM:3986 39 44                 .word 0x3944                  ; Pointer a paleta de colores

Agora trocamos:
ROM:3982 02                    .byte    2
por
ROM:3982 08                    .byte    8

e...
ROM:3986 39 44                 .word 0x3944
por
ROM:3986 FA C2                 .word 0xFAC2

Abrindo o firmware com o MTK Windows obtem-se o resultado anteriomente descrito... Trocando as células visíveis e reanalizando o firmware com o IDA agora temos:



ROM:FAC2             Paleta de 256 colores - Ventana 0x0E
ROM:FAC2 5B D2                 .word 0x5BD2                  ; Color #00
ROM:FAC4 2E F1                 .word 0x2EF1                  ; Color #01
ROM:FAC6 8D D8                 .word 0x8DD8                  ; Color #02
ROM:FAC8 9C 49                 .word 0x9C49                  ; Color #03
ROM:FACA FF FF                 .word 0xFFFF                  ; Color #04 - FFFF=Magenta
ROM:FACC 85 F4                 .word 0x85F4                  ; Color #05
ROM:FACE E2 40                 .word 0xE240                  ; Color #06
ROM:FAD0 FF FF                 .word 0xFFFF                  ; Color #07 - FFFF=Magenta
ROM:FAD2 97 25                 .word 0x9725                  ; Color #08
ROM:FAD4 FF FF                 .word 0xFFFF                  ; Color #09 - FFFF=Magenta
ROM:FAD6 1D BF                 .word 0x1DBF                  ; Color #0A
ROM:FAD8 94 45                 .word 0x9445                  ; Color #0B
ROM:FADA 94 45                 .word 0x9445                  ; Color #0C
ROM:FADC 49 2A                 .word 0x492A                  ; Color #0D
ROM:FADE FF FF                 .word 0xFFFF                  ; Color #0F - FFFF=Magenta
ROM:FAE0 FF FF                 .word 0xFFFF                  ; Color #10 - FFFF=Magenta
ROM:FAE2 22 56                 .word 0x2256                  ; Color #11
ROM:FAE4 FF FF                 .word 0xFFFF                  ; Color #12 - FFFF=Magenta
ROM:FAE6 97 25                 .word 0x9725                  ; Color #13
ROM:FAE8 FF FF                 .word 0xFFFF                  ; Color #14 - FFFF=Magenta
ROM:FAEA FF FF                 .word 0xFFFF
ROM:FAEC FF FF                 .word 0xFFFF
ROM:FAEE FF FF                 .word 0xFFFF
ROM:FAF0 FF FF                 .word 0xFFFF
...

UPDATE: Se comparar as cores escritas no firmware pelo MTK Windows, com o MTKColorSpace que você sugeriu, vai ver que elas são exatamente as mesmas... ¡as 20 visíveis!


Se tudo o que você precisa é saber o valores, basta usar outro programa do New Age: MtkColorSpace.

Legal, vou tentar. UPDATE: Já testei, era exatamente o que eu procurava. Obrigado.

Aumentar o tamanho da janela, sim.
Colocar mais células, talvez.
Fazer com que o programa use essas células, não.

O programa usa as células... O problema é que eu somente posso modificar as células visíveis. Eu chequei o firmware após usar o programa e todas as 20 cores tinham sido corretamente trocadas...

Por outro lado, tentei agrandar a janela com os dois programas sugeridos no tópico do MTK Patcher (ResourceHacker e XNResourceEditor), mas nenhúm deles funciona corretamente com o arquivo executável do MTK Windows.
« Last Edit: February 07, 2008, 02:51:13 PM by jmaraujo »
Fórum do DVP5100
(novo endereço)