Autor Tópico: Firmware MT13x9: Log de Descobertas  (Lida 271784 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
Firmware MT13x9: Log de Descobertas
« Online: Julho 06, 2007, 09:08:27 am »
Para não entulhar meu blog com informação bruta e que de qualquer forma a maioria dos meus leitores não vai entender, mas que pode interessar muito quem modifica firmwares Mediatek, eu vou de vez em quando colocar neste tópico informações sobre trechos de código encontrados nos firmwares que estou estudando e o resultado de outras experiências.

Para entender as listagens você precisa ter alguma noção de assembly 8051. Consulte este site.

Todas as listagens são geradas pelo disassembler belga/russo IDA Pro (geralmente referido nos textos apenas como "IDA"). Para apenas aplicar os conceitos que vou explicar aqui você só precisa de um editor hexadecimal, mas se você deseja avançar a ponto de criar seus próprios hacks, precisa conseguir uma cópia funcional desse programa, que em conjunto com os scripts apropriados deixam o código bem mais fácil de acompanhar.

Para quem tem noções de assembly, lógico.

Eu não sou programador Assembly. Meus hacks estão saindo por pura teimosia, com a ajuda do fato de que eu tenho algum conhecimento em eletrônica e programação.

Eu quero registrar aqui meu respeito e agradecimento aos mestres do grupo MT13x9 . Sem as informações publicadas no grupo, os documentos que eles escreveram e os programas que eles criaram, eu jamais teria chegado ao ponto de fazer meus próprios hacks, como estou fazendo hoje.

Respect.:clapping:

Outra importante referência é o grupo MEDIATEK1389, do Cachirulo, que parece redundante mas contém muita informação que não existe no MT13x9 ou que foi porcamente (Babelfish) traduzida lá (Cachirulo é espanhol). Vários documentos do MT13x9 difíceis de decifrar pelo inglês ruim podem ser encontrados no original espanhol apenas no grupo de Cachirulo.

Se você tem experiência com C/C++, o grupo MT13x9 tem cópias reais de códigos-fonte genéricos da Mediatek  encontrados em um fórum chinês, que embora não sejam suficientes para se compilar um firmware completo podem ser usados por alguém que entenda a linguagem para assimilar como a coisa funciona sem precisar entender o resultado em Assembly.

Como abrir o firmware no IDA:

    * Instale o IDA. Não é necessário fazer nenhuma configuração especial;
    * Extraia do firmware o bloco 8032 inteiro com o MtkRemaker;
    * Abra com o IDA;
    * Processor Type: 8051;
    * YES;
    * ROM Size: 0x00080000;
    * Device Name: C517;
    * Rode os scripts MT1389_8032_FULL.idc e MT1389_MISC.idc (um de cada vez e nesta ordem) disponíveis no grupo MT13x9. Se der qualquer erro, você fez algo errado.
    * Espere alguns minutos enquanto o script formata o código.


Como regra geral (e excetuando menção em contrário nos posts), não espere que as informações mostradas aqui se apliquem a firmwares Pioneer e LG sem grandes adaptações (se é que se aplicarão). Philips, LG e Pioneer personalizam bastante seus aparelhos, mas LG e Pioneer fazem as personalizações mais drásticas, que se desviam muito do firmware padrão MT13x9


Outros textos do meu site relacionados:


Alguns softwares úteis:

  • Ultra Compare - Trial (30 a 45 dias). O melhor sofware que conheço para comparação de arquivos binários. Mostra os arquivos lado a lado destacando os bytes diferentes;
  • Treediff - Shareware, mas não expira.  Compara de uma só vez, rapidamente, enormes estruturas de arquivos, mostrando quais são diferentes ou foram movidos;
  • MagicIso - Shareware, mas não expira. Usado para criar e editar arquivos ISO nos poucos casos em que isso é realmente necessário. A versão não registrada tem limitações mas estas não afetam o trabalho com arquivos ISO do tamanho usado em firmwares.
  • XVI32 - Freeware. Editor hexadecimal com suporte a busca por joker/wildcard;
  • Hex Workshop - Trial. Tem muitos pontos positivos e recursos que o XVI32 não tem, mas é instável no meu PC e muitas vezes não funciona exatamente como esperado. Só costumo usar nos casos em análises mais complicadas, basicamente por sua capacidade de destacar trechos idênticos de código;
« Última modificação: Março 11, 2008, 06:12:30 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
Rotina Sub_Style do DVP5965K/93 (DVP5965K/55)
« Responder #1 Online: Julho 06, 2007, 09:10:28 am »
Rotina Sub_Style do DVP5965K/93 (DVP5965K/55)

Primária

É esta rotina a chave para se ter fontes e cores de fontes selecionáveis por menus.

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                     ; Para tornar a fonte do browser independente da fonte de legendas e/ou fazer fontes selecionáveis,
B1:D2C5                                           ; é preciso mexer aqui. No caso, a fonte da legenda é a zero (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                     ; 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:                      ; 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


Provavelmente esta é a Sub_Style secundária
Eu não tenho como testar porque não tenho um DVP5965. Acredito que é esta por causa da semelhança com a do DVP5960

B3:5B87             Sub_Style_Sec:                ; DATA XREF: BankSw_179_B3_58BA+6Bo
B3:5B87 90 FC 1A    mov     DPTR, #XRAM_FC1A
B3:5B8A E0          movx    A, @DPTR
B3:5B8B FF          mov     R7, A
B3:5B8C D2 75       setb    RAM_2E.5
B3:5B8E 12 4C F4    lcall   BankSw_176_B3_4CF4
B3:5B91 90 FC 1A    mov     DPTR, #XRAM_FC1A
B3:5B94 E0          movx    A, @DPTR
B3:5B95 FF          mov     R7, A
B3:5B96 12 72 CE    lcall   BankSw_177_B3_72CE
B3:5B99 90 FC 1A    mov     DPTR, #XRAM_FC1A
B3:5B9C E0          movx    A, @DPTR
B3:5B9D FF          mov     R7, A
B3:5B9E E4          clr     A
B3:5B9F 90 FC 1F    mov     DPTR, #XRAM_FC1F      ; OSD_Colors
B3:5BA2 F0          movx    @DPTR, A
B3:5BA3 A3          inc     DPTR
B3:5BA4 74 02       mov     A, #2
B3:5BA6 F0          movx    @DPTR, A
B3:5BA7 7B 03       mov     R3, #3                ; Cor do background
B3:5BA9 E4          clr     A
B3:5BAA FD          mov     R5, A
B3:5BAB 12 C3 99    lcall   OSD_textColor_BS      ; OSD_TExtcolor
B3:5BAE 90 FC 1A    mov     DPTR, #XRAM_FC1A
B3:5BB1 E0          movx    A, @DPTR
B3:5BB2 FF          mov     R7, A
B3:5BB3 E4          clr     A
B3:5BB4 FD          mov     R5, A
B3:5BB5 02 E4 D7    ljmp    BankSw_257_B3_E4D7
« Última modificação: Julho 19, 2007, 05:17:32 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

Rotina Sub_Style do DVP5965K/93 (DVP5965K/55)
« Responder #1 Online: Julho 06, 2007, 09:10:28 am »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Sub_Style do Lenoxx DV-406
« Responder #2 Online: Julho 06, 2007, 09:21:49 am »
Sub_Style do Lenoxx DV-406

B1:A49A             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:A49A
B1:A49A
B1:A49A             Sub_Style_B1_A49A:            ; CODE XREF: B1_E1B5+4Ap
B1:A49A EF          mov     A, R7
B1:A49B 24 FE       add     A, #0xFE ; '¦'
B1:A49D 70 03       jnz     B1_A4A2
B1:A49F 02 A5 35    ljmp    B1_A535
B1:A4A2             ; ---------------------------------------------------------------------------
B1:A4A2
B1:A4A2             B1_A4A2:                      ; CODE XREF: Sub_Style_B1_A49A+3j
B1:A4A2 14          dec     A
B1:A4A3 70 03       jnz     B1_A4A8
B1:A4A5 02 A5 35    ljmp    B1_A535
B1:A4A8             ; ---------------------------------------------------------------------------
B1:A4A8
B1:A4A8             B1_A4A8:                      ; CODE XREF: Sub_Style_B1_A49A+9j
B1:A4A8 24 02       add     A, #2
B1:A4AA 60 03       jz      B1_A4AF
B1:A4AC 02 A5 41    ljmp    B1_A541
B1:A4AF             ; ---------------------------------------------------------------------------
B1:A4AF
B1:A4AF             B1_A4AF:                      ; CODE XREF: Sub_Style_B1_A49A+10j
B1:A4AF 7F C9       mov     R7, #0xC9 ; '+'
B1:A4B1 7E 00       mov     R6, #0
B1:A4B3 12 04 63    lcall   B1_BS_63_B0_EA45
B1:A4B6 EF          mov     A, R7
B1:A4B7 60 3F       jz      B1_A4F8
B1:A4B9 90 FC 25    mov     DPTR, #XRAM_FC25
B1:A4BC E0          movx    A, @DPTR
B1:A4BD 70 06       jnz     B1_A4C5
B1:A4BF FF          mov     R7, A
B1:A4C0 12 06 F7    lcall   Set_Font_B1_BS
B1:A4C3 80 05       sjmp    B1_A4CA
B1:A4C5             ; ---------------------------------------------------------------------------
B1:A4C5
B1:A4C5             B1_A4C5:                      ; CODE XREF: Sub_Style_B1_A49A+23j
B1:A4C5 7F 06       mov     R7, #6                ; ;Número da fonte da legenda DivX
B1:A4C7 12 06 F7    lcall   Set_Font_B1_BS
B1:A4CA
B1:A4CA             B1_A4CA:                      ; CODE XREF: Sub_Style_B1_A49A+29j
B1:A4CA D2 44       setb    RAM_28.4
B1:A4CC 7F 12       mov     R7, #0x12
B1:A4CE 12 04 DB    lcall   B1_BS_83_B3_4717
B1:A4D1 7F 12       mov     R7, #0x12
B1:A4D3 12 04 E1    lcall   B1_BS_84_B3_70DD
B1:A4D6 90 FB DC    mov     DPTR, #XRAM_FBDC
B1:A4D9 74 03       mov     A, #3
B1:A4DB F0          movx    @DPTR, A
B1:A4DC A3          inc     DPTR
B1:A4DD 14          dec     A
B1:A4DE F0          movx    @DPTR, A
B1:A4DF E4          clr     A
B1:A4E0 FB          mov     R3, A
B1:A4E1 FD          mov     R5, A
B1:A4E2 7F 12       mov     R7, #0x12
B1:A4E4 12 04 AB    lcall   OSD_TextColor_B1_BS
B1:A4E7 E4          clr     A
B1:A4E8 FD          mov     R5, A
B1:A4E9 7F 12       mov     R7, #0x12
B1:A4EB 12 07 45    lcall   B1_BS_186_B3_EDE8
B1:A4EE 7F 12       mov     R7, #0x12
B1:A4F0 12 04 ED    lcall   B1_BS_86_B3_5810
B1:A4F3 7F 12       mov     R7, #0x12
B1:A4F5 12 04 F3    lcall   B1_BS_87_B3_F0C0
B1:A4F8
B1:A4F8             B1_A4F8:                      ; CODE XREF: Sub_Style_B1_A49A+1Dj
B1:A4F8 74 FF       mov     A, #0xFF
B1:A4FA 90 FC E8    mov     DPTR, #XRAM_FCE8
B1:A4FD F0          movx    @DPTR, A
B1:A4FE A3          inc     DPTR
B1:A4FF F0          movx    @DPTR, A
B1:A500 90 FC ED    mov     DPTR, #XRAM_FCED
B1:A503 F0          movx    @DPTR, A
B1:A504 A3          inc     DPTR
B1:A505 F0          movx    @DPTR, A
B1:A506 7D 6B       mov     R5, #0x6B ; 'k'
B1:A508 7F CB       mov     R7, #0xCB ; '-'
B1:A50A 7E 00       mov     R6, #0
B1:A50C 12 04 5D    lcall   B1_BS_62_B0_ED81
B1:A50F 7D 6F       mov     R5, #0x6F ; 'o'
B1:A511 7F CC       mov     R7, #0xCC ; '¦'
B1:A513 7E 00       mov     R6, #0
B1:A515 12 04 5D    lcall   B1_BS_62_B0_ED81
B1:A518 E4          clr     A
B1:A519 90 FB 48    mov     DPTR, #XRAM_FB48
B1:A51C F0          movx    @DPTR, A
B1:A51D
B1:A51D             B1_A51D:                      ; CODE XREF: Sub_Style_B1_A49A+94j
B1:A51D 7F CB       mov     R7, #0xCB ; '-'
B1:A51F 7E 00       mov     R6, #0
B1:A521 12 04 63    lcall   B1_BS_63_B0_EA45
B1:A524 90 FB 48    mov     DPTR, #XRAM_FB48
B1:A527 E0          movx    A, @DPTR
B1:A528 04          inc     A
B1:A529 F0          movx    @DPTR, A
B1:A52A E0          movx    A, @DPTR
B1:A52B C3          clr     C
B1:A52C 94 03       subb    A, #3
B1:A52E 40 ED       jc      B1_A51D
B1:A530 C2 43       clr     RAM_28.3
B1:A532 02 A8 6E    ljmp    B1_A86E
B1:A535             ; ---------------------------------------------------------------------------
B1:A535
B1:A535             B1_A535:                      ; CODE XREF: Sub_Style_B1_A49A+5j
B1:A535                                           ; Sub_Style_B1_A49A+Bj
B1:A535 7F 05       mov     R7, #5
B1:A537 12 F5 50    lcall   B1_F550
B1:A53A 50 05       jnc     B1_A541
B1:A53C 7F 01       mov     R7, #1
B1:A53E 12 C9 C6    lcall   B1_C9C6
B1:A541
B1:A541             B1_A541:                      ; CODE XREF: Sub_Style_B1_A49A+12j
B1:A541                                           ; Sub_Style_B1_A49A+A0j
B1:A541 22          ret
B1:A541             ; End of function Sub_Style_B1_A49A
B1:A541

« Última modificação: Julho 19, 2007, 05:26:44 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
Sub_Style do DVP5960/37
« Responder #3 Online: Julho 06, 2007, 09:35:54 am »
Sub_Style do DVP5960/37

Primária
B1:D2BC             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:D2BC
B1:D2BC
B1:D2BC             Sub_Style:                    ; CODE XREF: B1_8883+5Cp
B1:D2BC EF          mov     A, R7
B1:D2BD 24 FE       add     A, #0xFE ; '¦'
B1:D2BF 60 5B       jz      B1_D31C
B1:D2C1 14          dec     A
B1:D2C2 60 58       jz      B1_D31C
B1:D2C4 14          dec     A
B1:D2C5 60 61       jz      B1_D328
B1:D2C7 24 03       add     A, #3
B1:D2C9 70 60       jnz     B1_D32B
B1:D2CB E4          clr     A                     ; Número da fonte = 0
B1:D2CC FF          mov     R7, A
B1:D2CD 12 1E EA    lcall   OSD_SetFont_B1_BS
B1:D2D0 D2 75       setb    RAM_2E.5
B1:D2D2 7F 12       mov     R7, #0x12
B1:D2D4 12 1D 6A    lcall   B1_BS_179_B3_4CF4
B1:D2D7 7F 12       mov     R7, #0x12
B1:D2D9 12 1D 70    lcall   B1_BS_180_B3_72CE
B1:D2DC E4          clr     A
B1:D2DD 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B1:D2E0 F0          movx    @DPTR, A
B1:D2E1 A3          inc     DPTR
B1:D2E2 74 02       mov     A, #2
B1:D2E4 F0          movx    @DPTR, A
B1:D2E5 7B 03       mov     R3, #3
B1:D2E7 E4          clr     A
B1:D2E8 FD          mov     R5, A
B1:D2E9 7F 12       mov     R7, #0x12
B1:D2EB 12 1D 76    lcall   OSD_TextColor_B1_BS
B1:D2EE E4          clr     A
B1:D2EF FD          mov     R5, A
B1:D2F0 7F 12       mov     R7, #0x12
B1:D2F2 12 1F 50    lcall   B1_BS_260_B3_E41D
B1:D2F5 7F 12       mov     R7, #0x12
B1:D2F7 12 1D 7C    lcall   B1_BS_182_B3_58BA
B1:D2FA 7F 12       mov     R7, #0x12
B1:D2FC 12 1D 82    lcall   B1_BS_183_B3_E8F5
B1:D2FF 12 E0 A4    lcall   B1_E0A4
B1:D302 7F 19       mov     R7, #0x19
B1:D304 7E 00       mov     R6, #0
B1:D306 12 1B CC    lcall   B1_BS_110_B3_B6D8
B1:D309 74 FF       mov     A, #0xFF
B1:D30B 90 FD 74    mov     DPTR, #XRAM_FD74
B1:D30E F0          movx    @DPTR, A
B1:D30F A3          inc     DPTR
B1:D310 F0          movx    @DPTR, A
B1:D311 90 FD 7B    mov     DPTR, #XRAM_FD7B
B1:D314 F0          movx    @DPTR, A
B1:D315 A3          inc     DPTR
B1:D316 F0          movx    @DPTR, A
B1:D317 C2 74       clr     RAM_2E.4
B1:D319 02 1D 2E    ljmp    B1_BS_169_B4_AB59
B1:D31C             ; ---------------------------------------------------------------------------
B1:D31C
B1:D31C             B1_D31C:                      ; CODE XREF: Sub_Style+3j
B1:D31C                                           ; Sub_Style+6j
B1:D31C 7F 05       mov     R7, #5
B1:D31E 12 1E 48    lcall   B1_BS_216_B6_6C4E
B1:D321 50 08       jnc     B1_D32B
B1:D323 7F 01       mov     R7, #1
B1:D325 02 1E 66    ljmp    B1_BS_221_B4_A8C0
B1:D328             ; ---------------------------------------------------------------------------
B1:D328
B1:D328             B1_D328:                      ; CODE XREF: Sub_Style+9j
B1:D328 12 E0 A4    lcall   B1_E0A4
B1:D32B
B1:D32B             B1_D32B:                      ; CODE XREF: Sub_Style+Dj
B1:D32B                                           ; Sub_Style+65j
B1:D32B 22          ret
B1:D32B             ; End of function Sub_Style


SECUNDÁRIA (Chamada quando você sai do Setup)



B3:5B87
B3:5B87             Sub_Style_Sec:                ; DATA XREF: BankSw_182_B3_58BA+6Bo
B3:5B87 90 FC 19    mov     DPTR, #XRAM_FC19      ; Sub_style secundária
B3:5B8A E0          movx    A, @DPTR
B3:5B8B FF          mov     R7, A
B3:5B8C D2 75       setb    RAM_2E.5
B3:5B8E 12 4C F4    lcall   BankSw_179_B3_4CF4
B3:5B91 90 FC 19    mov     DPTR, #XRAM_FC19
B3:5B94 E0          movx    A, @DPTR
B3:5B95 FF          mov     R7, A
B3:5B96 12 72 CE    lcall   BankSw_180_B3_72CE
B3:5B99 90 FC 19    mov     DPTR, #XRAM_FC19      ; o número da janela 0x12 foi guardado aqui ao entrar no setup
B3:5B9C E0          movx    A, @DPTR
B3:5B9D FF          mov     R7, A
B3:5B9E E4          clr     A
B3:5B9F 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B3:5BA2 F0          movx    @DPTR, A
B3:5BA3 A3          inc     DPTR
B3:5BA4 74 02       mov     A, #2
B3:5BA6 F0          movx    @DPTR, A
B3:5BA7 7B 03       mov     R3, #3                ; A cor do background
B3:5BA9 E4          clr     A
B3:5BAA FD          mov     R5, A
B3:5BAB 12 C3 50    lcall   BankSw_181_B3_C350
B3:5BAE 90 FC 19    mov     DPTR, #XRAM_FC19
B3:5BB1 E0          movx    A, @DPTR
B3:5BB2 FF          mov     R7, A
B3:5BB3 E4          clr     A
B3:5BB4 FD          mov     R5, A
B3:5BB5 02 E4 1D    ljmp    BankSw_260_B3_E41D
« Última modificação: Julho 19, 2007, 05:40:39 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 #4 Online: Julho 06, 2007, 10:33:04 am »
Sub_Style secundária

Este é um nome inventado por mim, porque descobri a existência dessas rotinas na marra, investigando um problema com o DVP-858. Eu não tinha ainda visto nenhuma referência a elas no grupo MT13x9.

Alguns firmwares tem uma segunda rotina sub_style que é chamada quando você sai do setup e também precisa ser modificada, junto com a principal. A existência dessa rotina secundária pode ser vantajosa, porque pode permitir que mudanças na escolha de fontes feitas no setup sejam ativadas imediatamente, sem que seja necessário parar o filme e começar de novo, já que a Sub_Style principal só é executada uma vez, logo ao carregar o filme.

O sintoma da existência de uma sub_style secundária é apenas que qualquer alteração que você faça na principal é revertida quando você entra e sai do setup.

Também tenha em mente que a Sub_Style secundária não faz necessáriamente tudo o que a primária faz. Mas como ela é chamada quando você sai do Setup, você pode alterá-la para chamar um código colocado em outra parte do firmware que faça tudo o que você quer.

Firmwares que sabidamente tem uma Sub_Style secundária:

  • Proview DVP-858
  • Philips DVP5960/37
  • Philips DVP5100K/78
« Última modificação: Julho 06, 2007, 05:57:48 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 #5 Online: Julho 06, 2007, 10:53:13 am »
Philips DVP5960/37

A variável XRAM_FC19 pode conter o número da última janela desenhada

0x0A é a janela do Setup;
0x05 é a janela onde é exibida a mensagem "Press Play Key To Continue" do Resume DivX
« Última modificação: Julho 06, 2007, 11:25:51 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 #6 Online: Julho 06, 2007, 12:05:04 pm »
Uma coisa inédita para mim no firmware do DVP5960/37:

Inicialmente, a fonte usada por tudo é a 1, mas depois que você sai do Setup a fonte das legendas passa a ser a 7!

Isso me deu um nó aqui. Um hack que eu estou elaborando não parecia surtir efeito na rotina sub_style secundária, até eu me dar conta de que a fonte estava revertendo para a original!
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 #7 Online: Julho 06, 2007, 12:14:26 pm »
Como fazer com que o firmware Philips use fontes com cores normais.

É sabido que nos firmwares da Philips é preciso fazer uma "gambiarra" com as cores para poder desativar o background.

Eu descobri como fazer com que o firmware aceite fontes "normais".

Substitua:

E4          clr     A
90 xx xx    mov     DPTR, #XRAM_OSD_Colors      ; OSD_colors
F0          movx    @DPTR, A
A3          inc     DPTR
74 02       mov     A, #2
F0          movx    @DPTR, A
7B 03       mov     R3, #3                ; Cor de fundo. Zero para desabilitar o fundo.
E4          clr     A


por:

90 xx xx    mov     DPTR, #XRAM_OSD_Colors      ; OSD_colors
74 03       mov     A, #3
F0          movx    @DPTR, A
A3          inc     DPTR
74 02       mov     A, #2
F0          movx    @DPTR, A
E4          clr     A
FB          mov     R3, A                ; Cor de fundo=zero, desabilita o fundo


Exemplo do DVP5960

Sub_Style primária

B1:D2BC             Sub_Style:                    ; CODE XREF: B1_8883+5Cp
B1:D2BC EF          mov     A, R7
B1:D2BD 24 FE       add     A, #0xFE ; '¦'
B1:D2BF 60 5B       jz      B1_D31C
B1:D2C1 14          dec     A
B1:D2C2 60 58       jz      B1_D31C
B1:D2C4 14          dec     A
B1:D2C5 60 61       jz      B1_D328
B1:D2C7 24 03       add     A, #3
B1:D2C9 70 60       jnz     B1_D32B
B1:D2CB E4          clr     A                     ; Número da fonte = 0
B1:D2CC FF          mov     R7, A
B1:D2CD 12 1E EA    lcall   OSD_SetFont_B1_BS
B1:D2D0 D2 75       setb    RAM_2E.5
B1:D2D2 7F 12       mov     R7, #0x12
B1:D2D4 12 1D 6A    lcall   OSD_Text_Params_ARM_B1BS
B1:D2D7 7F 12       mov     R7, #0x12
B1:D2D9 12 1D 70    lcall   OSD_Text_Params_B1BS
B1:D2DC E4          clr     A
B1:D2DD 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B1:D2E0 F0          movx    @DPTR, A
B1:D2E1 A3          inc     DPTR
B1:D2E2 74 02       mov     A, #2
B1:D2E4 F0          movx    @DPTR, A
B1:D2E5 7B 03       mov     R3, #3                ; Cor de fundo. Zero para desabilitar o fundo.
B1:D2E7 E4          clr     A

B1:D2E8 FD          mov     R5, A
B1:D2E9 7F 12       mov     R7, #0x12
B1:D2EB 12 1D 76    lcall   OSD_TextColor_B1_BS


Substitua:
B1:D2DC - E4 90 FC 1E F0 A3 74 02 F0 7B 03 E4 FD 7F 12 12
por:
B1:D2DC - 90 FC 1E 74 03 F0 A3 74 02 F0 E4 FB FD 7F 12 12

Sub_Style secundária

B3:5B87             Sub_Style_Sec:                ; DATA XREF: OSD_Text_Init?+6Bo
B3:5B87 90 FC 19    mov     DPTR, #XRAM_FC19      ; Sub_style secundária
B3:5B8A E0          movx    A, @DPTR
B3:5B8B FF          mov     R7, A
B3:5B8C D2 75       setb    RAM_2E.5
B3:5B8E 12 4C F4    lcall   OSD_Text_Params_ARM
B3:5B91 90 FC 19    mov     DPTR, #XRAM_FC19      ; Número da Janela (OSD_TextInit)?
B3:5B94 E0          movx    A, @DPTR
B3:5B95 FF          mov     R7, A
B3:5B96 12 72 CE    lcall   OSD_Text_Params
B3:5B99 90 FC 19    mov     DPTR, #XRAM_FC19      ; Número da Janela (OSD_TextInit)?
B3:5B9C E0          movx    A, @DPTR
B3:5B9D FF          mov     R7, A
B3:5B9E E4          clr     A
B3:5B9F 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B3:5BA2 F0          movx    @DPTR, A
B3:5BA3 A3          inc     DPTR
B3:5BA4 74 02       mov     A, #2
B3:5BA6 F0          movx    @DPTR, A
B3:5BA7 7B 03       mov     R3, #3                ; A cor do background
B3:5BA9 E4          clr     A

B3:5BAA FD          mov     R5, A
B3:5BAB 12 C3 50    lcall   OSD_Text_Color
B3:5BAE 90 FC 19    mov     DPTR, #XRAM_FC19      ; Número da Janela (OSD_TextInit)?
B3:5BB1 E0          movx    A, @DPTR
B3:5BB2 FF          mov     R7, A
B3:5BB3 E4          clr     A
B3:5BB4 FD          mov     R5, A
B3:5BB5 02 E4 1D    ljmp    OSD_Textinit_END


Substitua:
B3:5B9E - E4 90 FC 1E F0 A3 74 02 F0 7B 03 E4 FD 12 C3 50
por:
B3:5B9E - 90 FC 1E 74 03 F0 A3 74 02 F0 E4 FB FD 12 C3 50

Com o mtkWindows, coloque Blend=3 na janela 0x12

Com o mtkRemaker coloque fontes "normais" com contorno

É isso. Nada mais de precisar inverter as cores da fonte para uso no firmware Philips :)

O que meu patch faz é desligar a definição de uma cor de background e ao mesmo tempo definir uma cor sólida para o contorno.
« Última modificação: Agosto 18, 2007, 08:57:01 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 #8 Online: Julho 06, 2007, 12:43:01 pm »
Como tornar a fonte de legendas independente da fonte do browser.
Este texto ja foi publicado por mim no htforum e estou repetindo aqui, porque está dose encontrar alguma coisa lá. :)

Tomando como exemplo o Proview DVP-858 (firmware original):

Em B1:DC89 substitua
E4 FF
por
7F xx

onde xx é o número da fonte que você quer usar para as legendas.


Como funciona:

Eu já sabia que a escolha da fonte possivelmente era feita em sub_style, mas não havia conseguido achar o código baseado nos exemplos que havia visto. Hoje fiz uma nova pesquisa de outra forma e descobri por outros exemplos que a coisa estava na cara:

B1:DC91             Sub_Style:                    ; CODE XREF: B1_998C+5Cp
B1:DC91 EF          mov     A, R7
B1:DC92 24 FE       add     A, #0xFE ; '¦'
B1:DC94 60 53       jz      B1_DCE9
B1:DC96 14          dec     A
B1:DC97 60 50       jz      B1_DCE9
B1:DC99 14          dec     A
B1:DC9A 60 59       jz      B1_DCF5
B1:DC9C 24 03       add     A, #3
B1:DC9E 70 58       jnz     B1_DCF8
B1:DCA0 E4          clr     A                     ; Determina a fonte (0x0)
B1:DCA1 FF          mov     R7, A

B1:DCA2 12 1E 70    lcall   OSD_SetFont_B1_BS



O código original carrega R7 com o valor zero (o número da fonte no Proview), do jeito implícito típico do assembly, e chama a rotina que carrega a fonte. O meu patch permite carregar R7 explicitamente com o número de outra fonte.

Preste atenção ao fato de que você deve usar o número que aparece entre parênteses no mtkRemaker e não o número sequencial da fonte

Preste atenção às listagens que eu publicar de Sub_Style que eu devo sinalizar onde é feita essa mudança em cada firmware.
« Última modificação: Agosto 18, 2007, 08:59:57 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 #9 Online: Julho 06, 2007, 02:41:26 pm »
Sub_Style do Proview DVP-858 - Versão 20.07

Existe uma pequena diferença para a versão 20.06, que é devida à correção do bug da ausência de contorno de legendas pela Proview

Primária

B1:DC91             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:DC91
B1:DC91
B1:DC91             Sub_Style:                    ; CODE XREF: B1_998C+5Cp
B1:DC91 EF          mov     A, R7
B1:DC92 24 FE       add     A, #0xFE ; '¦'
B1:DC94 60 53       jz      B1_DCE9
B1:DC96 14          dec     A
B1:DC97 60 50       jz      B1_DCE9
B1:DC99 14          dec     A
B1:DC9A 60 59       jz      B1_DCF5
B1:DC9C 24 03       add     A, #3
B1:DC9E 70 58       jnz     B1_DCF8
B1:DCA0 E4          clr     A                     ; Determina a fonte (0x0)
B1:DCA1 FF          mov     R7, A
B1:DCA2 12 1E 70    lcall   OSD_SetFont_B1_BS
B1:DCA5 D2 46       setb    RAM_28.6              ; Não sei para que serve. Zerei mas nada pareceu mudar
B1:DCA7 7F 13       mov     R7, #0x13
B1:DCA9 12 1D D4    lcall   B1_BS_190_B5_13E8
B1:DCAC 7F 13       mov     R7, #0x13
B1:DCAE 12 1D DA    lcall   B1_BS_191_B5_A4B2
B1:DCB1 90 FC 07    mov     DPTR, #XRAM_FC07      ; OSD_Colors
B1:DCB4 74 03       mov     A, #3                 ; Em FC07 vai a cor do contorno e em FC08 a cor de preenchimento
B1:DCB6 F0          movx    @DPTR, A
B1:DCB7 A3          inc     DPTR
B1:DCB8 14          dec     A
B1:DCB9 F0          movx    @DPTR, A
B1:DCBA E4          clr     A
B1:DCBB FB          mov     R3, A
B1:DCBC FD          mov     R5, A
B1:DCBD 7F 13       mov     R7, #0x13
B1:DCBF 12 1D E0    lcall   OSD_TextColor_B1_BS
B1:DCC2 E4          clr     A
B1:DCC3 FD          mov     R5, A
B1:DCC4 7F 13       mov     R7, #0x13
B1:DCC6 12 1E B2    lcall   B1_BS_227_B5_E5A1
B1:DCC9 7F 13       mov     R7, #0x13
B1:DCCB 12 1D EC    lcall   B1_BS_194_B3_6222
B1:DCCE 7F 13       mov     R7, #0x13
B1:DCD0 12 1D F2    lcall   B1_BS_195_B5_E98B
B1:DCD3 12 E2 45    lcall   B1_E245
B1:DCD6 74 FF       mov     A, #0xFF
B1:DCD8 90 FD 49    mov     DPTR, #XRAM_FD49
B1:DCDB F0          movx    @DPTR, A
B1:DCDC A3          inc     DPTR
B1:DCDD F0          movx    @DPTR, A
B1:DCDE 90 FD 4E    mov     DPTR, #XRAM_FD4E
B1:DCE1 F0          movx    @DPTR, A
B1:DCE2 A3          inc     DPTR
B1:DCE3 F0          movx    @DPTR, A
B1:DCE4 C2 45       clr     RAM_28.5
B1:DCE6 02 1E 52    ljmp    B1_BS_211_B3_B567


Secundária


B1:E9EF             ; START OF FUNCTION CHUNK FOR BankSw_338_B1_F916
B1:E9EF
B1:E9EF             Sub_StyleSec:                 ; CODE XREF: BankSw_338_B1_F916:B1_F930j
B1:E9EF 7F E2       mov     R7, #0xE2 ; 'Ô'
B1:E9F1 7E 07       mov     R6, #7
B1:E9F3 12 19 C6    lcall   B1_BS_17_B0_E87A
B1:E9F6 BF 01 05    cjne    R7, #1, B1_E9FE
B1:E9F9 D2 45       setb    RAM_28.5
B1:E9FB 12 1E 52    lcall   B1_BS_211_B3_B567
B1:E9FE
B1:E9FE             B1_E9FE:                      ; CODE XREF: BankSw_338_B1_F916-F20j
B1:E9FE 90 FC AB    mov     DPTR, #XRAM_FCAB
B1:EA01 E0          movx    A, @DPTR
B1:EA02 64 03       xrl     A, #3
B1:EA04 70 35       jnz     B1_EA3B
B1:EA06 7F 06       mov     R7, #6
B1:EA08 12 A9 48    lcall   BankSw_241_B1_A948
B1:EA0B 50 2E       jnc     B1_EA3B
B1:EA0D D2 46       setb    RAM_28.6
B1:EA0F 7F 13       mov     R7, #0x13
B1:EA11 12 1D D4    lcall   B1_BS_190_B5_13E8
B1:EA14 7F 13       mov     R7, #0x13
B1:EA16 12 1D DA    lcall   B1_BS_191_B5_A4B2
B1:EA19 90 FC 07    mov     DPTR, #XRAM_FC07      ; OSD_Colors
B1:EA1C 74 03       mov     A, #3
B1:EA1E F0          movx    @DPTR, A
B1:EA1F A3          inc     DPTR
B1:EA20 14          dec     A
B1:EA21 F0          movx    @DPTR, A
B1:EA22 E4          clr     A
B1:EA23 FB          mov     R3, A
B1:EA24 FD          mov     R5, A
B1:EA25 7F 13       mov     R7, #0x13
B1:EA27 12 1D E0    lcall   OSD_TextColor_B1_BS
B1:EA2A E4          clr     A
B1:EA2B FD          mov     R5, A
B1:EA2C 7F 13       mov     R7, #0x13
B1:EA2E 12 1E B2    lcall   B1_BS_227_B5_E5A1
B1:EA31 7F 13       mov     R7, #0x13
B1:EA33 12 1D EC    lcall   B1_BS_194_B3_6222
B1:EA36 7F 13       mov     R7, #0x13
B1:EA38 12 1D F2    lcall   B1_BS_195_B5_E98B
B1:EA3B
B1:EA3B             B1_EA3B:                      ; CODE XREF: BankSw_338_B1_F916-F12j
B1:EA3B                                           ; BankSw_338_B1_F916-F0Bj
B1:EA3B 22          ret
« Última modificação: Julho 18, 2007, 04:49:11 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 #9 Online: Julho 06, 2007, 02:41:26 pm »