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

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

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #10 Online: Julho 06, 2007, 02:52:30 pm »
Sub_Style do Proview DVP-858 - Versão 20.06

Primária

B1:DC7A Sub_Style:                              ; CODE XREF: B1_998C+5Cp
B1:DC7A                 mov     A, R7
B1:DC7B                 add     A, #0xFE ; '¦'
B1:DC7D                 jz      B1_DCD2
B1:DC7F                 dec     A
B1:DC80                 jz      B1_DCD2
B1:DC82                 dec     A
B1:DC83                 jz      B1_DCDE
B1:DC85                 add     A, #3
B1:DC87                 jnz     B1_DCE1
B1:DC89                 clr     A
B1:DC8A                 mov     R7, A
B1:DC8B                 lcall   SetFont_B1_BS_216_B5_E9E0
B1:DC8E                 setb    RAM_28.6
B1:DC90                 mov     R7, #0x13
B1:DC92                 lcall   B1_BS_190_B5_13F0
B1:DC95                 mov     R7, #0x13
B1:DC97                 lcall   B1_BS_191_B5_A4B2
B1:DC9A                 clr     A
B1:DC9B                 mov     DPTR, #XRAM_FC07 ; OSD_Colors
B1:DC9E                 movx    @DPTR, A
B1:DC9F                 inc     DPTR
B1:DCA0                 mov     A, #2
B1:DCA2                 movx    @DPTR, A
B1:DCA3                 clr     A
B1:DCA4                 mov     R3, A
B1:DCA5                 mov     R5, A
B1:DCA6                 mov     R7, #0x13
B1:DCA8                 lcall   OSD_TextColor_B1_BS_192_B5_D5F7 ; OSD_TextColor
B1:DCAB                 clr     A
B1:DCAC                 mov     R5, A
B1:DCAD                 mov     R7, #0x13
B1:DCAF                 lcall   B1_BS_227_B5_E5A7
B1:DCB2                 mov     R7, #0x13
B1:DCB4                 lcall   B1_BS_194_B3_6223
B1:DCB7                 mov     R7, #0x13
B1:DCB9                 lcall   B1_BS_195_B5_E991
B1:DCBC                 lcall   B1_E22E
B1:DCBF                 mov     A, #0xFF
B1:DCC1                 mov     DPTR, #XRAM_FD49
B1:DCC4                 movx    @DPTR, A
B1:DCC5                 inc     DPTR
B1:DCC6                 movx    @DPTR, A
B1:DCC7                 mov     DPTR, #XRAM_FD4E
B1:DCCA                 movx    @DPTR, A
B1:DCCB                 inc     DPTR
B1:DCCC                 movx    @DPTR, A
B1:DCCD                 clr     RAM_28.5
B1:DCCF                 ljmp    B1_BS_211_B3_B6E3


Secundária

B1:E9D8 Sub_StyleSec:                           ; CODE XREF: BankSw_338_B1_F907:B1_F921j
B1:E9D8                 mov     R7, #0xE2 ; 'Ô'
B1:E9DA                 mov     R6, #7
B1:E9DC                 lcall   ARM_GETCHAR_B1_BS_17_B0_E87D
B1:E9DF                 cjne    R7, #1, B1_E9E7
B1:E9E2                 setb    RAM_28.5
B1:E9E4                 lcall   B1_BS_211_B3_B6E3
B1:E9E7
B1:E9E7 B1_E9E7:                                ; CODE XREF: BankSw_338_B1_F907-F28j
B1:E9E7                 mov     DPTR, #XRAM_FCAB ; TipoMidia
B1:E9EA                 movx    A, @DPTR
B1:E9EB                 xrl     A, #3
B1:E9ED                 jnz     B1_EA24
B1:E9EF                 mov     R7, #6
B1:E9F1                 lcall   BankSw_241_B1_A87D
B1:E9F4                 jnc     B1_EA24
B1:E9F6                 setb    RAM_28.6
B1:E9F8                 mov     R7, #0x13
B1:E9FA                 lcall   B1_BS_190_B5_13F0
B1:E9FD                 mov     R7, #0x13
B1:E9FF                 lcall   B1_BS_191_B5_A4B2
B1:EA02                 clr     A
B1:EA03                 mov     DPTR, #XRAM_FC07 ; OSD_Colors
B1:EA06                 movx    @DPTR, A
B1:EA07                 inc     DPTR
B1:EA08                 mov     A, #2         
B1:EA0A                 movx    @DPTR, A
B1:EA0B                 clr     A
B1:EA0C                 mov     R3, A
B1:EA0D                 mov     R5, A
B1:EA0E                 mov     R7, #0x13
B1:EA10                 lcall   OSD_TextColor_B1_BS_192_B5_D5F7 ; OSD_TextColor
B1:EA13                 clr     A
B1:EA14                 mov     R5, A
B1:EA15                 mov     R7, #0x13
B1:EA17                 lcall   B1_BS_227_B5_E5A7
B1:EA1A                 mov     R7, #0x13
B1:EA1C                 lcall   B1_BS_194_B3_6223
B1:EA1F                 mov     R7, #0x13
B1:EA21                 lcall   B1_BS_195_B5_E991
B1:EA24
B1:EA24 B1_EA24:                                ; CODE XREF: BankSw_338_B1_F907-F1Aj
B1:EA24                                         ; BankSw_338_B1_F907-F13j
B1:EA24                 ret

« Última modificação: Julho 06, 2007, 02:56:20 pm por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #11 Online: Julho 06, 2007, 03:40:26 pm »
Sub_Style Philips DVP5100K/78 - Versão 0E.0A

Primária
Veja o post de JMARAUJO mais adiante


Secundária (já testado no meu DVP5100)

B3:545E             Sub_StyleSec:                 ; DATA XREF: BankSw_223_B3_519C+63o
B3:545E 90 FB 8D    mov     DPTR, #XRAM_FB8D      ; Window_ID?
B3:5461 E0          movx    A, @DPTR
B3:5462 FF          mov     R7, A
B3:5463 D2 75       setb    RAM_2E.5
B3:5465 12 28 F1    lcall   BankSw_217_B3_28F1
B3:5468 90 FB 8D    mov     DPTR, #XRAM_FB8D      ; Window_ID?
B3:546B E0          movx    A, @DPTR
B3:546C FF          mov     R7, A
B3:546D 12 68 22    lcall   BankSw_218_B3_6822
B3:5470 90 FB 8D    mov     DPTR, #XRAM_FB8D      ; Window_ID?
B3:5473 E0          movx    A, @DPTR
B3:5474 FF          mov     R7, A
B3:5475 E4          clr     A
B3:5476 90 FB A4    mov     DPTR, #XRAM_FBA4      ; OSD_TextColor
B3:5479 F0          movx    @DPTR, A
B3:547A A3          inc     DPTR
B3:547B 74 02       mov     A, #2
B3:547D F0          movx    @DPTR, A
B3:547E 7B 03       mov     R3, #3                ; Define a cor do background
B3:5480 E4          clr     A
B3:5481 FD          mov     R5, A
B3:5482 12 D4 73    lcall   OSD_TextColorB1BS
B3:5485 90 FB 8D    mov     DPTR, #XRAM_FB8D      ; Window_ID?
B3:5488 E0          movx    A, @DPTR
B3:5489 FF          mov     R7, A
B3:548A E4          clr     A
B3:548B FD          mov     R5, A
B3:548C 02 EF D7    ljmp    BankSw_484_B3_EFD7

« Última modificação: Julho 30, 2007, 05:47:18 pm por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #11 Online: Julho 06, 2007, 03:40:26 pm »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #12 Online: Julho 06, 2007, 03:45:12 pm »
Como identificar a janela que é usada pelo bargraph no firmware

O bargraph a que me refiro não é o que aparece para MP3. É este, que existe no DVP-858, mas não pode ser exibido porque não existe comando no remoto para ele:



Saber em que janela é exibido é util caso você precise movê-lo para uma posição melhor.

Abra o firmware com o mtkWindows e procure por uma janela com uma palette parecida com esta:



Note que "Used by" mostra que esta palette é usada por uma janela apenas.

No Proview DVP-858, no Lenoxx DV-406 e nos Philips DVP3040, DVP5100, DVP5960 e DVP5965 é a janela 0x08

Atenção: Nem todo firmware tem bargraph ativo. No proview DVP-858 basta enviar o mtkCommand "4A" usando o Expert Mode do mtkTool para que ele apareça, mas isso não funciona com o DVP5960.
« Última modificação: Julho 07, 2007, 07:13:04 am por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #13 Online: Julho 06, 2007, 04:07:00 pm »
A busca pela RC_TAB do Proview
publicado originalmente no tópico do HTFORUM

Todo firmware MT13x9 tem uma ou mais tabelas (os Philips sabidamente tem duas) onde é feita a correspondência entre o código recebido do controle remoto e o código que será repassado para as rotinas. Os hackers do MT13x9 chamam esse último de "mtkCommand".

Para que cada fabricante de DVD player possa usar a codificação de controle remoto que achar mais apropriada, geralmente para encaixar em sua linha produtos, essa correspondência é inevitável. Depois que o firmware passa por essa tabela, chamada de RC_TAB, o firmware passa a trabalhar só com os mtkCommands e fica independente do remoto usado. Isso facilita bastante a programação.

Localizando essa tabela é possível mudar globalmente um comando do remoto. É possível por exemplo fazer com que ao apertar o botão PLAY do remoto seja repassado para todas as funções do firmware o mtkCommand IR_PLAY_PAUSE e não o IR_PLAY.

O problema é achar uma tabela de uns 256 bytes em um bloco de dados com mais de 400 mil, sem saber exatamente como ela se parece.

Baseado em algumas horas de chutes, eu achei uma com os seguintes botões (endereços da versão 20.06):

    * DISPLAY (B4:31E3)
    * BOOKMARK (B4:31E7)
    * GOTO (B4:31FB)
    * STOP (B4:31FF)
    * USB (B4:3227)
    * HDMI (B4:322B)
    * P/N (B4:322F)
    * VIDEO (B4:3233)

E já posso "transformar" qualquer desses botões no mtkCommand que eu quiser (basta mudar o valor no offset entre parênteses). Mas a tabela com o botão PLAY está muito difícil de achar.
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #14 Online: Julho 06, 2007, 04:25:31 pm »
Olá, Jefferson!

Infelizmente, eu não sei configurar o disassemblador para mostrar os códigos hexa ao lado dos mnemônicos, nem tenho tempo para fazer isso  manualmente.
Tente em:

Options -> General -> Disassembly -> Number of opcode bytes -> 4

Saudações!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #15 Online: Julho 06, 2007, 04:32:18 pm »
Caramba!

MUITO OBRIGADO!
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #16 Online: Julho 06, 2007, 04:37:59 pm »
Como fazer sumir o guia de Pan & Scan (modo ZOOM)

Testado com sucesso no Proview DVP-858

O guia de Pan&Scan é a caixa que se vê na imagem abaixo




Descubra em que janela ele é exibido (oriente-se pela posição onde ele aparece na tela e compare com o mtkWindows).

Basta reduzir o tamanho da janela para 1x1 pixels que ele vai continuar sendo exibido, mas não será visível.

No Proview DVP-858, o guia é exibido na janela 0x1C.

« Última modificação: Julho 06, 2007, 08:37:01 pm por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Firmware: log de descobertas
« Responder #17 Online: Julho 06, 2007, 04:39:46 pm »
Sub_Style Philips DVP5100K/78 - Versão 0E.0A

Estou com dificuldade para achar a primária


Secundária (ainda não foi testado)

B3:545E Sub_StyleSec:                           ; DATA XREF: BankSw_223_B3_519C+63o
B3:545E                 mov     DPTR, #XRAM_FB8D ; Window_ID?
B3:5461                 movx    A, @DPTR
...

Seguindo as xrefs achei esta função ao qual estou 80% certo de ser a Sub_Style. Se puder confirmar isso ficarei muito grato...

No banco 1:
=========

ROM:CF79             ROM_CF79:
ROM:CF79 90 FB 60              mov   DPTR, #0xFB60
ROM:CF7C EE                    mov   A, R6
ROM:CF7D F0                    movx  @DPTR, A
ROM:CF7E A3                    inc   DPTR
ROM:CF7F EF                    mov   A, R7
ROM:CF80 F0                    movx  @DPTR, A
ROM:CF81 7F 03                 mov   R7, #3
ROM:CF83 12 07 21              lcall BS:180_B3:11FC
ROM:CF83
ROM:CF86 7F 01                 mov   R7, #1
ROM:CF88 12 07 21              lcall BS:180_B3:11FC
ROM:CF88
ROM:CF8B 7F 03                 mov   R7, #3
ROM:CF8D 12 F1 84              lcall ROM_F184
ROM:CF8D
ROM:CF90 7B FF                 mov   R3, #0xFF
ROM:CF92 7D EB                 mov   R5, #0xEB ; 'Ù'
ROM:CF94 7C 01                 mov   R4, #1
ROM:CF96 74 01                 mov   A, #1
ROM:CF98 FF                    mov   R7, A
ROM:CF99 FE                    mov   R6, A
ROM:CF9A 12 06 5B              lcall OSD_DispMsg2
ROM:CF9A
ROM:CF9D 7F 0E                 mov   R7, #0xE
ROM:CF9F 12 06 FD              lcall BS:174_B4:E80B
ROM:CF9F
ROM:CFA2 7F 59                 mov   R7, #0x59 ; 'Y'      <-- 59 = Valor EEPROM mudança fonte divx
ROM:CFA4 7E 00                 mov   R6, #0
ROM:CFA6 12 05 D7              lcall PREF_GetChar
ROM:CFA6
ROM:CFA9 BF 01 07              cjne  R7, #1, ROM_CFB3
ROM:CFA9
ROM:CFAC 7F 0F                 mov   R7, #0xF           <-- Fonte 0F (fonte 2)
ROM:CFAE 12 08 59              lcall SUB_SetFont
ROM:CFAE
ROM:CFB1 80 27                 sjmp  ROM_CFDA
ROM:CFB1
ROM:CFB3             ; ---------------------------------------------------------------------------
ROM:CFB3
ROM:CFB3             ROM_CFB3:
ROM:CFB3 7F 59                 mov   R7, #0x59 ; 'Y'     <-- EEPROM mudança fonte
ROM:CFB5 7E 00                 mov   R6, #0
ROM:CFB7 12 05 D7              lcall PREF_GetChar
ROM:CFB7
ROM:CFBA EF                    mov   A, R7
ROM:CFBB 70 07                 jnz   ROM_CFC4
ROM:CFBB
ROM:CFBD 7F 0D                 mov   R7, #0xD       <-- Fonte 0D (fonte 1)
ROM:CFBF 12 08 59              lcall SUB_SetFont
ROM:CFBF
ROM:CFC2 80 16                 sjmp  ROM_CFDA
ROM:CFC2
ROM:CFC4             ; ---------------------------------------------------------------------------
ROM:CFC4
ROM:CFC4             ROM_CFC4:
ROM:CFC4 7F 59                 mov   R7, #0x59 ; 'Y'
ROM:CFC6 7E 00                 mov   R6, #0
ROM:CFC8 12 05 D7              lcall PREF_GetChar
ROM:CFC8
ROM:CFCB BF 02 07              cjne  R7, #2, ROM_CFD5
ROM:CFCB
ROM:CFCE 7F 11                 mov   R7, #0x11         <-- Fonte 11 (não existente no fw orig)
ROM:CFD0 12 08 59              lcall SUB_SetFont
ROM:CFD0
ROM:CFD3 80 05                 sjmp  ROM_CFDA
ROM:CFD3
ROM:CFD5             ; ---------------------------------------------------------------------------
ROM:CFD5
ROM:CFD5             ROM_CFD5:
ROM:CFD5 7F 0D                 mov   R7, #0xD
ROM:CFD7 12 08 59              lcall SUB_SetFont
ROM:CFD7
ROM:CFDA
ROM:CFDA             ROM_CFDA:
ROM:CFDA 7F 11                 mov   R7, #0x11         <-- ID Janela legendas mpeg4
ROM:CFDC 12 08 23              lcall OSD_TextInit
ROM:CFDC
ROM:CFDF 7F 11                 mov   R7, #0x11
ROM:CFE1 12 08 29              lcall PS_A_0x04
ROM:CFE1
ROM:CFE4 22                    ret


EDIT: Atualizada rotina e comentarios adicionados.
« Última modificação: Agosto 20, 2007, 12:05:18 am por jmaraujo »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #18 Online: Julho 06, 2007, 05:25:31 pm »
Já testei. É esta mesmo!

Obrigado!
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #19 Online: Julho 06, 2007, 05:31:26 pm »
Como usar o "Expert Mode" do mtkTool
Publicado originalmente no tópico do DVP-858 no HTFORUM, corrigido e ampliado

Embora para leitura da flash o mtktool funcione mesmo com o aparelho só ligado na tomada e até mesmo travado depois de uma leitura anterior, para que as outras funções do "Expert Mode" funcionem o aparelho precisa estar em operação normal.

Ou seja, para usar o "Expert Mode":

    * Ligue o aparelho;
    * Inicie o mtktool com o comando "mtktool prassi";
    * Não use a janela "flash upgrade" para nada!

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.


Outro exemplo de uso:

    * Ligue o aparelho e coloque um filme para rodar;
    * Habilite o Expert Mode;
    * Abra a janela R/W Register;
    * Em "type" selecione 8032 XDATA;
    * Em "Addr" coloque "FB00"
    * Em "Data" coloque "13"
    * Clique em "Write"

O aparelho vai entrar em pausa!

Explicação:

A janela R/W Register lê e escreve diretamente em endereços de memória do MT1389, um endereço por vez.

    * 8032 XDATA é a memória externa do controlador 8032 embutido no chip;
    * FB00 é o endereço nessa memória externa onde é colocado o código ("mtkCommmand") dos comandos decodificados do controle remoto;
    * 13 é o mtkCommand da tecla pause

A tabela completa de mtkCommands está no arquivo IR.CFG que vem com o mtktool 2.42. Existe outra ligeiramente diferente no arquivo keydef.h do código fonte. Eu tenho a tabela completa do proview, que descobri por tentativa e erro mesmo, porque não tinha achado esses arquivos ainda.

A tabela em keydef.h "bate" melhor com os aparelhos que já testei.

Então com esse simples recurso podemos testar o aparelho procurando por funções ocultas que não foram implementadas no DVP-858 (ou qualquer aparelho, porque o endereço FB00 parece ser comum a todos) por não existirem botões suficientes no remoto.

Algumas funções ocultas do Proview:

    * STEP Rewind;
    * STEP Forward;
    * SLOW Rewind;
    * ZOOM OUT (um comando que faz só ZOOM OUT sem entrar no ZOOM IN primeiro);
    * Duas funções para digitar a senha do disco;
    * Alternar entre Normal/PS, Normal/LB e Widescreen


Existem outras funções ocultas que poderiam ser acessadas com o remoto adequado (ou a gambiarra adequada):

    * 0x46: Alterna entre modos de reverberação
    * 0x58: escurece um pouco a iluminação (leds azuis)
    * 0x59: Iluminação normal (brilho máximo)


E outras coisas, incluindo algumas sem utilidade alguma nesse aparelho, como funções de Karaokê.

« Última modificação: Julho 07, 2007, 07:16:30 am por Jefferson »
http://jefferson-ryan.blogspot.com
http://ryan.com.br

Se o que você escreve não merece sua atenção, vai merecer a atenção de quem?!

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #19 Online: Julho 06, 2007, 05:31:26 pm »