Exibir mensagens

Esta seção lhe permite ver todas as mensagens deste membro. Note que você só pode ver as mensagens das áreas às quais você tem acesso.


Mensagens - Jefferson

1321
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 20, 2007, 05:27:54 am »
Interessante... ¿Você sabe qual é o wildcard '?' no UltraEdit?

Faz um tempão que estou buscando (já li a ajuda, busquei no Google e nada...)  :-[

Desculpe. Eu estava tão acostumado com o XVI que achei que fosse algo "natural" em qualquer editor hexadecimal.

Até olhei agora o Hex Workshop e também não encontrei opção nem no software e nem no help para usar wildcards.  :o

O danado é que me parece "absurdo", porque até o mtkModToolbox faz busca baseado em wildcards. Não é nenhum segredo o algoritmo para se fazer isso.

1322
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 20, 2007, 05:21:04 am »

Ahora una duda...  estuve probando tu mtkModToolbox, informa que el tamaño del frimware 5140 y 3040,
es de 1MB... al menos los dos que estan en tu "pack de firmwares de referencia".

Como te diste cuenta que tu 3040k tiene 2MB?

Porque eu abri e olhei o chip de memória flash. Não há jeito mais seguro que este.
Além disso, o mtktool reconhece como um chip de 2MB.

1323
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 12:17:59 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!:

1324
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 12:02:13 pm »
DVP3040K/55 : 1MB sobrando na flash!

Eu não sei porque raios eu estive assumindo até agora que o DVP3040K tinha apenas 1MB de flash. Eu imagino que foi uma combinação de fatores:

  • Todos os firmwares que vi até agora, mesmo modificados, não passavam de 1MB;
  • Todas as modificações que vi até agora foram "tímidas"
  • O mtkRemaker diz que a flash é de 1MB;
  • Eu tenho certeza de que li mais de uma vez comentários de que o DVP3040K não podia ser melhor por causa da flash limitada;

Mas o fato é que a flash do meu tem 2MB!
Vai dar para fazer muuuita coisa com o bicho!  :yahoo!:


1325
Philips DVP5980 / Re: DVD/DivX Player Philips DVP5980K/55
« Online: Agosto 19, 2007, 08:33:11 am »
Rafa,

Eu fiz avanços importantes hoje na interpretação do firmware do DVP5980. Já é possível ter menus com seleção de fontes, cores e posição de legendas para o seu aparelho.

Eu posso ajudar com a parte mais complexa e cansativa das modificações, deixando para você as firulas de acabamento e o teste no seu aparelho. Eu estou propondo a você porque você tem o cabo e tem o mínimo de conhecimento necessário (e disposição para usar o Google) para entender as instruções lacônicas que eu vou dar.

Não pretendo fazer essa oferta a mais ninguém. Como regra geral eu não faço mods se eu não tiver o aparelho.

1326
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 08:09:32 am »
Dicas para localização de rotinas

Tenho que escrever essas coisas, antes que eu esqueça. Não espere entender muito do que está aqui, porque é um rascunho que posso usar para elaborar outro texto um outro dia :)

Se o firmware tiver uma SetMPeg4SubtitleParams mista (com leitura da eeprom), esta rotina é diretamente chamada por Sub_Style.

Para descobrir se o firmware tem rotinas de leituras de fontes na eeprom, mesmo que desativadas, procure pela string "DivX Subtitle" na estrutura de menus no mtkRemaker. Se o mtkRemaker não estiver achando os menus, vá no Language Code 00 e procure a string lá, pegue o seu código hexa e procure duas ocorrências seguidas dele com um editor hexadecimal. Alguns bytes à frente está o endereço eeprom usado pela fonte DivX.

Por exemplo, no DVP5980 o mtkRemaker não encontra os menus, mas o código hexa para o texto "DivX Subtitle" é 0503. Procurando "0503 0503" no firmware encontramos:

0008 FFFF 0503 0503 002C 0000 0000 0000 FF40 7000 00FF 402F FF40 36 

E 0x2C é o endereço eeprom procurado (a maioria dos firmwares Philips usa o 0x59).   

Sabendo o endereço eeprom onde está o número da fonte, procuramos por:

7F 2C 7E 00 

Todas as ocorrências dessa string são pontos onde o número da fonte é lido. Teoricamente isso só vai ocorrer na rotina SubStyle ou em rotinas chamadas por ela, como a SetMPeg4SubtitleParams mista.     

Sub_Style sempre tem pelo menos uma chamada do tipo:

B1:F720 7F 12       mov     R7, #0x12     ; onde 12 é o número da janela de legendas
B1:F722 12 1E 50    lcall   OSD_TextInit_B1BS


Sabendo onde está OSD_text_Init, olhe no seu CASE a chamada que usa o número de janela das legendas. Seguindo essa chamada você encontrará Sub_Style_Sec ou Sub_Style_2

Localizar OSD_SetFont pode ser essencial para achar Sub_Style direta ou indiretamente

1327
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 07:48:47 am »
SUB_Style e SetMPeg4SubtitleParams do Philips DVP5980

A Sub_Style Primária do DVP5980 se confunde com a rotina conhecida como Video_Play

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
B1:F702 F0          movx    @DPTR, A
B1:F703 A3          inc     DPTR
B1:F704 EF          mov     A, R7
B1:F705 F0          movx    @DPTR, A
B1:F706 E4          clr     A
B1:F707 FD          mov     R5, A                 ; Carrega o background zero
B1:F708 FC          mov     R4, A
B1:F709 7F 01       mov     R7, #1
B1:F70B 12 1D 2A    lcall   vPlayerShowLogo_B1BS
B1:F70B
B1:F70E 7F 03       mov     R7, #3
B1:F710 12 1D 30    lcall   B1_BS_173_B3_4C8F
B1:F710
B1:F713 7F 01       mov     R7, #1
B1:F715 12 1D 30    lcall   B1_BS_173_B3_4C8F
B1:F715
B1:F718 7F 03       mov     R7, #3
B1:F71A 12 1F 0A    lcall   B1_BS_252_B4_EA05
B1:F71A
B1:F71D 12 E2 25    lcall   SetMPeg4SubtitleParams
B1:F71D
B1:F720 7F 12       mov     R7, #0x12
B1:F722 12 1E 50    lcall   OSD_TextInit_B1BS
B1:F722
B1:F725 7F 12       mov     R7, #0x12
B1:F727 12 1E 56    lcall   B1_BS_222_B3_CE38
B1:F727
B1:F72A 22          ret


Sub_Style Secundária

B3:16B7             Sub_Style_Sec:                ; DATA XREF: OSD_Text_Init+6Bo
B3:16B7 90 FC 5B    mov     DPTR, #XRAM_FC5B      ; Tem o número da janela (OSD_Text_Init)
B3:16BA E0          movx    A, @DPTR
B3:16BB FF          mov     R7, A
B3:16BC D2 49       setb    RAM_29.1
B3:16BE 12 51 4D    lcall   OSD_Text_Params_ARM
B3:16BE
B3:16C1 90 FC 5B    mov     DPTR, #XRAM_FC5B      ; Tem o número da janela (OSD_Text_Init)
B3:16C4 E0          movx    A, @DPTR
B3:16C5 FF          mov     R7, A
B3:16C6 12 73 23    lcall   OSD_Text_Params
B3:16C6
B3:16C9 90 FC 5B    mov     DPTR, #XRAM_FC5B      ; Tem o número da janela (OSD_Text_Init)
B3:16CC E0          movx    A, @DPTR
B3:16CD FF          mov     R7, A
B3:16CE E4          clr     A                     ; Cor de contorno = 0
B3:16CF 90 FC 60    mov     DPTR, #XRAM_FC60      ; OSD_Colors
B3:16D2 F0          movx    @DPTR, A
B3:16D3 A3          inc     DPTR
B3:16D4 74 02       mov     A, #2                 ; Cor de Preenchimento = 2
B3:16D6 F0          movx    @DPTR, A
B3:16D7 7B 03       mov     R3, #3                ; Cor do fundo
B3:16D9 E4          clr     A
B3:16DA FD          mov     R5, A
B3:16DB 12 AE CA    lcall   OSD_Text_Color
B3:16DB
B3:16DE 90 FC 5B    mov     DPTR, #XRAM_FC5B      ; Tem o número da janela (OSD_Text_Init)
B3:16E1 E0          movx    A, @DPTR
B3:16E2 FF          mov     R7, A
B3:16E3 E4          clr     A
B3:16E4 FD          mov     R5, A
B3:16E5 02 C9 50    ljmp    BankSw_268_B3_C950





B1:E225             SetMPeg4SubtitleParams:       ; CODE XREF: BankSw_689_B1_F6FE+1Fp
B1:E225                                           ; BankSw_698_B1_FB93:B1_FBA2p
B1:E225 E4          clr     A                     ; Rotina onde podem ser ajustada a posicao das legendas, altura das linhas, etc
B1:E226 90 FC BD    mov     DPTR, #XRAM_FCBD      ; wX1.high
B1:E229 F0          movx    @DPTR, A
B1:E22A A3          inc     DPTR
B1:E22B F0          movx    @DPTR, A
B1:E22C 90 FC C0    mov     DPTR, #XRAM_FCC0      ; wY1.high
B1:E22F F0          movx    @DPTR, A
B1:E230 A3          inc     DPTR
B1:E231 F0          movx    @DPTR, A
B1:E232 90 FC C3    mov     DPTR, #XRAM_FCC3      ; wX2.high
B1:E235 74 02       mov     A, #2
B1:E237 F0          movx    @DPTR, A
B1:E238 A3          inc     DPTR
B1:E239 74 30       mov     A, #0x30 ; '0'
B1:E23B F0          movx    @DPTR, A
B1:E23C 90 FC C7    mov     DPTR, #XRAM_FCC7      ; wY2.high
B1:E23F E4          clr     A
B1:E240 F0          movx    @DPTR, A
B1:E241 A3          inc     DPTR
B1:E242 74 60       mov     A, #0x60 ; '`'        ; Altura da janela. Aumente se linhas estiverem deixando de aparecer
B1:E244 F0          movx    @DPTR, A
B1:E245 E4          clr     A
B1:E246 FD          mov     R5, A
B1:E247 7F 1D       mov     R7, #0x1D
B1:E249 7E 01       mov     R6, #1
B1:E24B 12 19 E8    lcall   B1_BS_33_B6_B7A7
B1:E24B
B1:E24E 7F 0A       mov     R7, #0xA              ; Fonte para as legendas DivX
B1:E250 12 1E BC    lcall   OSD_SetFont_B1BS
B1:E250
B1:E253 E4          clr     A
B1:E254 90 FB E6    mov     DPTR, #XRAM_FBE6      ; Espaço entre linhas
B1:E257 F0          movx    @DPTR, A
B1:E258 7B 09       mov     R3, #9                ; bit options
B1:E25A 7D 01       mov     R5, #1
B1:E25C 7F 12       mov     R7, #0x12
B1:E25E 12 1F 7C    lcall   PSB_Set_Param_B1BS
B1:E25E
B1:E261 7F 2C       mov     R7, #0x2C ; ','
B1:E263 7E 00       mov     R6, #0
B1:E265 12 1B C8    lcall   B1_BS_113_B5_DB60
B1:E265
B1:E268 EF          mov     A, R7
B1:E269 24 FE       add     A, #0xFE ; '¦'
B1:E26B 60 0C       jz      B1_E279
B1:E26B
B1:E26D 14          dec     A
B1:E26E 60 0E       jz      B1_E27E
B1:E26E
B1:E270 24 02       add     A, #2
B1:E272 70 18       jnz     B1_E28C
B1:E272
B1:E274 7F 0E       mov     R7, #0xE
B1:E276 02 1E BC    ljmp    OSD_SetFont_B1BS
B1:E276
B1:E279             ; ---------------------------------------------------------------------------
B1:E279
B1:E279             B1_E279:                      ; CODE XREF: SetMPeg4SubtitleParams+46j
B1:E279 7F 0C       mov     R7, #0xC
B1:E27B 02 1E BC    ljmp    OSD_SetFont_B1BS
B1:E27B
B1:E27E             ; ---------------------------------------------------------------------------
B1:E27E
B1:E27E             B1_E27E:                      ; CODE XREF: SetMPeg4SubtitleParams+49j
B1:E27E E4          clr     A
B1:E27F 90 FB E6    mov     DPTR, #XRAM_FBE6      ; Espaço entre linhas
B1:E282 F0          movx    @DPTR, A
B1:E283 7B 01       mov     R3, #1                ; bit Options
B1:E285 7D 01       mov     R5, #1
B1:E287 7F 12       mov     R7, #0x12
B1:E289 12 1F 7C    lcall   PSB_Set_Param_B1BS
B1:E289
B1:E28C
B1:E28C             B1_E28C:                      ; CODE XREF: SetMPeg4SubtitleParams+4Dj
B1:E28C 22          ret
B1:E28C
B1:E28C             ; End of function SetMPeg4SubtitleParams



Assim como o DVP5140, o DVP5980 também tem uma segunda SetMPeg4SubtitleParams:

B1:F646             SetMPeg4SubtitleParams_2:     ; DATA XREF: B0:B0_BS_682_B1_F646o
B1:F646                                           ; B1:B1_BS_682_B1_F646o ...
B1:F646 E4          clr     A                     ; Rotina onde podem ser ajustada a posicao das legendas, altura das linhas, etc
B1:F647 90 FC BD    mov     DPTR, #XRAM_FCBD      ; wX1.high
B1:F64A F0          movx    @DPTR, A
B1:F64B A3          inc     DPTR
B1:F64C F0          movx    @DPTR, A
B1:F64D 90 FC C0    mov     DPTR, #XRAM_FCC0      ; wY1.high
B1:F650 F0          movx    @DPTR, A
B1:F651 A3          inc     DPTR
B1:F652 F0          movx    @DPTR, A
B1:F653 90 FC C3    mov     DPTR, #XRAM_FCC3      ; wX2.high
B1:F656 74 02       mov     A, #2
B1:F658 F0          movx    @DPTR, A
B1:F659 A3          inc     DPTR
B1:F65A 74 30       mov     A, #0x30 ; '0'
B1:F65C F0          movx    @DPTR, A
B1:F65D 90 FC C7    mov     DPTR, #XRAM_FCC7      ; wY2.high
B1:F660 E4          clr     A
B1:F661 F0          movx    @DPTR, A
B1:F662 A3          inc     DPTR
B1:F663 74 60       mov     A, #0x60 ; '`'        ; Altura da janela. Aumente se linhas estiverem deixando de aparecer
B1:F665 F0          movx    @DPTR, A
B1:F666 E4          clr     A
B1:F667 90 FB E6    mov     DPTR, #XRAM_FBE6      ; Espaço entre linhas
B1:F66A F0          movx    @DPTR, A
B1:F66B 7B 09       mov     R3, #9                ; Bit Options
B1:F66D 7D 01       mov     R5, #1                ; alinhamento = 0x00 (esquerda), 0x01 (Centro)
B1:F66F 7F 12       mov     R7, #0x12             ; Janela da legenda
B1:F671 12 1F 7C    lcall   PSB_Set_Param_B1BS
B1:F671
B1:F674 D3          setb    C
B1:F675 22          ret
B1:F675
B1:F675             ; End of function SetMPeg4SubtitleParams_2


Com isso, temos os elementos necessários para criar menus com escolha de fontes, cor e posição para as legendas.

1328
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 06:42:55 am »
Philips DVP5140: Sub_style e SetMeg4SubtitleParams

O DVP5140 não é vendido no Brasil, mas faz parte dos meus testes porque tem caracterísiticas interessantes, não sendo igual a nenhum outro aparelho Philips que eu conheça. E quanto mais aparelhos distintos você analisar, mas fácil fica encontrar padrões.

Você poderá notar que o DVP5140 tem um código muito parecido com o do DVP3040

B1:F16C             Sub_Style:                              ; CODE XREF: B1_E132+3Ep
B1:F16C 90 FB 46              mov   DPTR, #XRAM_FB46
B1:F16F EE                    mov   A, R6
B1:F170 F0                    movx  @DPTR, A
B1:F171 A3                    inc   DPTR
B1:F172 EF                    mov   A, R7
B1:F173 F0                    movx  @DPTR, A
B1:F174 7F 03                 mov   R7, #3
B1:F176 12 07 1B              lcall B1_BS_179_B3_4B4F
B1:F176
B1:F179 7F 01                 mov   R7, #1
B1:F17B 12 07 1B              lcall B1_BS_179_B3_4B4F
B1:F17B
B1:F17E 7F 03                 mov   R7, #3
B1:F180 12 F6 C7              lcall B1_F6C7
B1:F180
B1:F183 7B FF                 mov   R3, #0xFF
B1:F185 7D EB                 mov   R5, #0xEB ; 'Ù'
B1:F187 7C 01                 mov   R4, #1
B1:F189 74 01                 mov   A, #1
B1:F18B FF                    mov   R7, A
B1:F18C FE                    mov   R6, A
B1:F18D 12 06 61              lcall OSD_DispMSG2_B1BS
B1:F18D
B1:F190 7F 0E                 mov   R7, #0xE
B1:F192 12 06 F7              lcall B1_BS_173_B4_EE4A
B1:F192
B1:F195 12 D7 CA              lcall SetMeg4SubtitleParams
B1:F195
B1:F198 7F 11                 mov   R7, #0x11
B1:F19A 12 08 1D              lcall OSD_textInit_B1BS
B1:F19A
B1:F19D 7F 11                 mov   R7, #0x11
B1:F19F 12 08 23              lcall B1_BS_223_B3_F09F
B1:F19F
B1:F1A2 22                    ret
B1:F1A2
B1:F1A2             ; End of function Sub_Style



B3:593C             Sub_Style_Sec:                          ; DATA XREF: OSD_Text_Init+63o
B3:593C 90 FB 88              mov   DPTR, #XRAM_FB88        ; Tem o número da janela (OSD_Text_Init)
B3:593F E0                    movx  A, @DPTR
B3:5940 FF                    mov   R7, A
B3:5941 D2 45                 setb  RAM_28.5
B3:5943 12 28 67              lcall OSD_Text_Params_ARM
B3:5943
B3:5946 90 FB 88              mov   DPTR, #XRAM_FB88        ; Tem o número da janela (OSD_Text_Init)
B3:5949 E0                    movx  A, @DPTR
B3:594A FF                    mov   R7, A
B3:594B 12 6C EF              lcall OSD_Text_Params
B3:594B
B3:594E 90 FB 88              mov   DPTR, #XRAM_FB88        ; Tem o número da janela (OSD_Text_Init)
B3:5951 E0                    movx  A, @DPTR
B3:5952 FF                    mov   R7, A
B3:5953 E4                    clr   A
B3:5954 90 FB A5              mov   DPTR, #XRAM_FBA5        ; OSD Colors
B3:5957 F0                    movx  @DPTR, A
B3:5958 A3                    inc   DPTR
B3:5959 74 02                 mov   A, #2
B3:595B F0                    movx  @DPTR, A
B3:595C 7B 03                 mov   R3, #3
B3:595E E4                    clr   A
B3:595F FD                    mov   R5, A
B3:5960 12 D2 9D              lcall OSD_Text_Color
B3:5960
B3:5963 90 FB 88              mov   DPTR, #XRAM_FB88        ; Tem o número da janela (OSD_Text_Init)
B3:5966 E0                    movx  A, @DPTR
B3:5967 FF                    mov   R7, A
B3:5968 E4                    clr   A
B3:5969 FD                    mov   R5, A
B3:596A 02 ED 66              ljmp  OSD_Text_Init_End




B1:D7CA             SetMeg4SubtitleParams:                  ; CODE XREF: Sub_Style+29p
B1:D7CA                                                     ; BankSw_336_B1_F860:B1_FB4Fp
B1:D7CA E4                    clr   A
B1:D7CB 90 FB ED              mov   DPTR, #XRAM_FBED        ; wX1.high
B1:D7CE F0                    movx  @DPTR, A
B1:D7CF A3                    inc   DPTR
B1:D7D0 F0                    movx  @DPTR, A
B1:D7D1 90 FB F0              mov   DPTR, #XRAM_FBF0        ; wY1.high
B1:D7D4 F0                    movx  @DPTR, A
B1:D7D5 A3                    inc   DPTR
B1:D7D6 F0                    movx  @DPTR, A
B1:D7D7 90 FB F4              mov   DPTR, #XRAM_FBF4        ; wX2.high
B1:D7DA 74 02                 mov   A, #2
B1:D7DC F0                    movx  @DPTR, A
B1:D7DD A3                    inc   DPTR
B1:D7DE 74 30                 mov   A, #0x30 ; '0'          ; 0x230 = 560
B1:D7E0 F0                    movx  @DPTR, A
B1:D7E1 90 FB F8              mov   DPTR, #XRAM_FBF8        ; wY2.high (define a altura)
B1:D7E4 E4                    clr   A
B1:D7E5 F0                    movx  @DPTR, A
B1:D7E6 A3                    inc   DPTR
B1:D7E7 74 60                 mov   A, #0x60 ; '`'          ; Altura da janela
B1:D7E9 F0                    movx  @DPTR, A
B1:D7EA E4                    clr   A
B1:D7EB FD                    mov   R5, A
B1:D7EC 7F 17                 mov   R7, #0x17
B1:D7EE 7E 01                 mov   R6, #1
B1:D7F0 12 05 FB              lcall Arm_PutChar_B1BS
B1:D7F0
B1:D7F3 7F 03                 mov   R7, #3                  ; Determina a fonte usada nas legendas
B1:D7F5 12 08 53              lcall OSD_SetFont_B1BS
B1:D7F5
B1:D7F8 E4                    clr   A
B1:D7F9 90 FB 5F              mov   DPTR, #XRAM_FB5F        ; Espaço entre linhas
B1:D7FC F0                    movx  @DPTR, A
B1:D7FD 7B 09                 mov   R3, #9                  ; 9= todos 255 caracteres + alinhamento bottom
B1:D7FF 7D 01                 mov   R5, #1                  ; alinhamento = 0x00 (esquerda), 0x01 (Centro), 0x02 (Direita)
B1:D801 7F 11                 mov   R7, #0x11               ; Janela da legenda
B1:D803 12 94 46              lcall PSB_Set_Param
B1:D803
B1:D806 7F 59                 mov   R7, #0x59 ; 'Y'         ; Pega o valor de "DivX Subtitle" na eeprom
B1:D808 7E 00                 mov   R6, #0
B1:D80A 12 04 ED              lcall Pref_Getchar_B1BS
B1:D80A
B1:D80D EF                    mov   A, R7
B1:D80E 24 FE                 add   A, #0xFE ; '¦'
B1:D810 60 11                 jz    B1_D823
B1:D810
B1:D812 14                    dec   A
B1:D813 60 09                 jz    B1_D81E
B1:D813
B1:D815 24 02                 add   A, #2
B1:D817 70 18                 jnz   B1_D831
B1:D817
B1:D819 7F 05                 mov   R7, #5
B1:D81B 02 08 53              ljmp  OSD_SetFont_B1BS
B1:D81B
B1:D81E             ; ---------------------------------------------------------------------------
B1:D81E
B1:D81E             B1_D81E:                                ; CODE XREF: SetMeg4SubtitleParams+49j
B1:D81E 7F 07                 mov   R7, #7
B1:D820 02 08 53              ljmp  OSD_SetFont_B1BS
B1:D820
B1:D823             ; ---------------------------------------------------------------------------
B1:D823
B1:D823             B1_D823:                                ; CODE XREF: SetMeg4SubtitleParams+46j
B1:D823 E4                    clr   A
B1:D824 90 FB 5F              mov   DPTR, #XRAM_FB5F        ; Espaço entre linhas
B1:D827 F0                    movx  @DPTR, A
B1:D828 7B 01                 mov   R3, #1                  ; Alinhamento bottom. Apenas 127 chars
B1:D82A 7D 01                 mov   R5, #1                  ; alinhamento = 0x00 (esquerda), 0x01 (Centro), 0x02 (Direita)
B1:D82C 7F 11                 mov   R7, #0x11               ; Janela da legenda
B1:D82E 12 94 46              lcall PSB_Set_Param
B1:D82E
B1:D831
B1:D831             B1_D831:                                ; CODE XREF: SetMeg4SubtitleParams+4Dj
B1:D831 22                    ret
B1:D831
B1:D831             ; End of function SetMeg4SubtitleParams



Uma surpresa: o DVP5140 tem uma segunda rotina SetMpeg4SubtitleParams:

B1:F366             SetMpeg4SubtitleParams2:                ; CODE XREF: BankSw_250_B1_D832+10p
B1:F366 E4                    clr   A
B1:F367 90 FB ED              mov   DPTR, #XRAM_FBED        ; wX1.high
B1:F36A F0                    movx  @DPTR, A
B1:F36B A3                    inc   DPTR
B1:F36C F0                    movx  @DPTR, A
B1:F36D 90 FB F0              mov   DPTR, #XRAM_FBF0        ; wY1.high
B1:F370 F0                    movx  @DPTR, A
B1:F371 A3                    inc   DPTR
B1:F372 F0                    movx  @DPTR, A
B1:F373 90 FB F4              mov   DPTR, #XRAM_FBF4        ; wX2.high
B1:F376 74 02                 mov   A, #2
B1:F378 F0                    movx  @DPTR, A
B1:F379 A3                    inc   DPTR
B1:F37A 74 30                 mov   A, #0x30 ; '0'          ; 0x230 = 560
B1:F37C F0                    movx  @DPTR, A
B1:F37D 90 FB F8              mov   DPTR, #XRAM_FBF8        ; wY2.high
B1:F380 E4                    clr   A
B1:F381 F0                    movx  @DPTR, A
B1:F382 A3                    inc   DPTR
B1:F383 74 60                 mov   A, #0x60 ; '`'          ; Altura da janela
B1:F385 F0                    movx  @DPTR, A
B1:F386 E4                    clr   A
B1:F387 90 FB 5F              mov   DPTR, #XRAM_FB5F        ; Espaço entre linhas
B1:F38A F0                    movx  @DPTR, A
B1:F38B 7B 09                 mov   R3, #9
B1:F38D 7D 01                 mov   R5, #1
B1:F38F 7F 11                 mov   R7, #0x11
B1:F391 12 94 46              lcall PSB_Set_Param
B1:F391
B1:F394 D3                    setb  C
B1:F395 22                    ret
B1:F395
B1:F395             ; End of function SetMpeg4SubtitleParams2


1329
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 06:07:02 am »
SUB_Style do Philips PET_725


B1:C16B             Sub_Style:                    ; CODE XREF: B1_D2D5+31p
B1:C16B 90 FB AF    mov     DPTR, #XRAM_FBAF
B1:C16E EE          mov     A, R6
B1:C16F F0          movx    @DPTR, A
B1:C170 A3          inc     DPTR
B1:C171 EF          mov     A, R7
B1:C172 F0          movx    @DPTR, A
B1:C173 7F 0F       mov     R7, #0xF
B1:C175 12 06 4F    lcall   B1_BS_145_B3_DE0F
B1:C175
B1:C178 7F 0E       mov     R7, #0xE
B1:C17A 12 06 4F    lcall   B1_BS_145_B3_DE0F
B1:C17A
B1:C17D 7F 01       mov     R7, #1
B1:C17F 12 06 4F    lcall   B1_BS_145_B3_DE0F
B1:C17F
B1:C182 7F 04       mov     R7, #4
B1:C184 12 05 0B    lcall   B1_BS_91_B3_2949
B1:C184
B1:C187 7F 02       mov     R7, #2
B1:C189 12 05 FB    lcall   OSD_TextInit_B1BS
B1:C189
B1:C18C 7F 02       mov     R7, #2
B1:C18E 12 06 01    lcall   B1_BS_132_B3_E31B
B1:C18E
B1:C191 7F 03       mov     R7, #3
B1:C193 12 DD 55    lcall   B1_DD55
B1:C193
B1:C196 E4          clr     A
B1:C197 FF          mov     R7, A
B1:C198 12 06 49    lcall   OSD_SetFont_B1BS
B1:C198
B1:C19B D2 49       setb    RAM_29.1
B1:C19D 7F 12       mov     R7, #0x12
B1:C19F 12 05 DD    lcall   B1_BS_126_B3_400F
B1:C19F
B1:C1A2 7F 12       mov     R7, #0x12
B1:C1A4 12 05 E3    lcall   B1_BS_127_B3_5B71
B1:C1A4
B1:C1A7 90 FB F1    mov     DPTR, #XRAM_FBF1      ; OSD_Colors
B1:C1AA 74 06       mov     A, #6                 ; Cor de contorno = 6
B1:C1AC F0          movx    @DPTR, A
B1:C1AD A3          inc     DPTR
B1:C1AE 74 02       mov     A, #2                 ; Cor do preenchimento = 2
B1:C1B0 F0          movx    @DPTR, A
B1:C1B1 7B 06       mov     R3, #6                ; Cor do background
B1:C1B3 E4          clr     A
B1:C1B4 FD          mov     R5, A
B1:C1B5 7F 12       mov     R7, #0x12             ; Janela
B1:C1B7 12 05 1D    lcall   OSD_TextColor_B1BS
B1:C1B7
B1:C1BA E4          clr     A
B1:C1BB FD          mov     R5, A
B1:C1BC 7F 12       mov     R7, #0x12
B1:C1BE 12 06 9D    lcall   B1_BS_158_B3_E074
B1:C1BE
B1:C1C1 7F 12       mov     R7, #0x12
B1:C1C3 12 05 FB    lcall   OSD_TextInit_B1BS
B1:C1C3
B1:C1C6 7F 12       mov     R7, #0x12
B1:C1C8 12 06 01    lcall   B1_BS_132_B3_E31B
B1:C1C8
B1:C1CB 90 FC 71    mov     DPTR, #XRAM_FC71
B1:C1CE E0          movx    A, @DPTR
B1:C1CF 54 C7       anl     A, #0xC7
B1:C1D1 F0          movx    @DPTR, A
B1:C1D2 22          ret
B1:C1D2
B1:C1D2             ; End of function Sub_Style


Como o PET725 tem espaço sobrando, com essa informação já é possível eliminar o background (tornando as fontes "normais") e criar menus de escolha de fontes e cores.

Mesmo sem ter o trabalho de fazer menus já dá para separar a fonte das legendas da usada no browser e corrigir as cores da fonte.

Note que pode existir uma Sub_Style_Sec, que não encontrei ainda.

1330
Firmware Mediatek MT13x9 - Desenvolvimento / Re: Firmware: log de descobertas
« Online: Agosto 19, 2007, 05:59:37 am »
Como encontrar OSD_SetFont em aparelhos Philips

  • DVP5100
  • DVP5140
  • DVP3040K
  • PET725

C2 AF 30 ? 0A 90 F8 86 E0 30 E3 03 20 ? F6 90 F8 E0
E4 F0 A3 74 37 F0 A3 EF F0 30 ? 0D 90 F8 60 E0 20 E5 F9 90 F8 86 74 08 F0 D2 AF 22

  • DVP5980
  • DVP5965
  • DVP5960

A rotina é radicalmente diferente

E4 FD 7F E0 FE 12 19 ? 7D 37 7F E1 7E 00 12 19 ? 90 FB ? E0 FD 7F E2 7E 00
12 19 ? 30 ? 14 7F 60 7E 00 12 19 ? EF 20 E5 F5 7D 08 7F 86 7E 00 12 19 ? D2 AF 22


Exemplo do DVP3040K:

B3:F045             OSD_SetFont:                  ; CODE XREF: B3_9091+6Fp
B3:F045                                           ; DATA XREF: B0:OSD_SetFont?_B0BSo ...
B3:F045 C2 AF       clr     IEN0.7                ; Interrupt Enable Register 0
B3:F047 30 1C 0A    jnb     RAM_23.4, B3_F054
B3:F04A
B3:F04A             B3_F04A:                      ; CODE XREF: OSD_SetFont+Cj
B3:F04A 90 F8 86    mov     DPTR, #BIM_ASSI       ; Assert RISC Interrupt Register
B3:F04D E0          movx    A, @DPTR
B3:F04E 30 E3 03    jnb     ACC.3, B3_F054        ; Accumulator
B3:F051 20 1C F6    jb      RAM_23.4, B3_F04A
B3:F054
B3:F054             B3_F054:                      ; CODE XREF: OSD_SetFont+2j
B3:F054                                           ; OSD_SetFont+9j
B3:F054 90 F8 E0    mov     DPTR, #BIM_GPR0       ; General Purpose Registers 0
B3:F057 E4          clr     A
B3:F058 F0          movx    @DPTR, A
B3:F059 A3          inc     DPTR
B3:F05A 74 37       mov     A, #0x37 ; '7'
B3:F05C F0          movx    @DPTR, A
B3:F05D A3          inc     DPTR
B3:F05E EF          mov     A, R7
B3:F05F F0          movx    @DPTR, A
B3:F060 30 1C 0D    jnb     RAM_23.4, B3_F070
B3:F063
B3:F063             B3_F063:                      ; CODE XREF: OSD_SetFont+22j
B3:F063 90 F8 60    mov     DPTR, #BIM_STAT
B3:F066 E0          movx    A, @DPTR
B3:F067 20 E5 F9    jb      ACC.5, B3_F063        ; Accumulator
B3:F06A 90 F8 86    mov     DPTR, #BIM_ASSI       ; Assert RISC Interrupt Register
B3:F06D 74 08       mov     A, #8
B3:F06F F0          movx    @DPTR, A
B3:F070
B3:F070             B3_F070:                      ; CODE XREF: OSD_SetFont+1Bj
B3:F070 D2 AF       setb    IEN0.7                ; Interrupt Enable Register 0
B3:F072 22          ret
B3:F072             ; End of function OSD_SetFont



Exemplo do DVP5965[/b]

B3:E9FE             OSD_SetFont:                  ; CODE XREF: B3_99EC+F8p
B3:E9FE                                           ; DATA XREF: B0:B0_BS_240_B3_E9FEo ...
B3:E9FE 90 FB B6    mov     DPTR, #XRAM_FBB6
B3:EA01 EF          mov     A, R7
B3:EA02 F0          movx    @DPTR, A
B3:EA03 C2 AF       clr     IEN0.7                ; Interrupt Enable Register 0
B3:EA05 30 1E 0E    jnb     RAM_23.6, B3_EA16
B3:EA08
B3:EA08             B3_EA08:                      ; CODE XREF: OSD_SetFont+15j
B3:EA08 7F 86       mov     R7, #0x86 ; 'å'
B3:EA0A 7E 00       mov     R6, #0
B3:EA0C 12 19 3E    lcall   B3_BS_1_B0_F320
B3:EA0F EF          mov     A, R7
B3:EA10 30 E3 03    jnb     ACC.3, B3_EA16        ; Accumulator
B3:EA13 20 1E F2    jb      RAM_23.6, B3_EA08
B3:EA16
B3:EA16             B3_EA16:                      ; CODE XREF: OSD_SetFont+7j
B3:EA16                                           ; OSD_SetFont+12j
B3:EA16 E4          clr     A
B3:EA17 FD          mov     R5, A
B3:EA18 7F E0       mov     R7, #0xE0 ; 'Ó'
B3:EA1A FE          mov     R6, A
B3:EA1B 12 19 50    lcall   B3_BS_4_B0_F32C
B3:EA1E 7D 37       mov     R5, #0x37 ; '7'
B3:EA20 7F E1       mov     R7, #0xE1 ; 'ß'
B3:EA22 7E 00       mov     R6, #0
B3:EA24 12 19 50    lcall   B3_BS_4_B0_F32C
B3:EA27 90 FB B6    mov     DPTR, #XRAM_FBB6
B3:EA2A E0          movx    A, @DPTR
B3:EA2B FD          mov     R5, A
B3:EA2C 7F E2       mov     R7, #0xE2 ; 'Ô'
B3:EA2E 7E 00       mov     R6, #0
B3:EA30 12 19 50    lcall   B3_BS_4_B0_F32C
B3:EA33 30 1E 14    jnb     RAM_23.6, B3_EA4A
B3:EA36
B3:EA36             B3_EA36:                      ; CODE XREF: OSD_SetFont+40j
B3:EA36 7F 60       mov     R7, #0x60 ; '`'
B3:EA38 7E 00       mov     R6, #0
B3:EA3A 12 19 3E    lcall   B3_BS_1_B0_F320
B3:EA3D EF          mov     A, R7
B3:EA3E 20 E5 F5    jb      ACC.5, B3_EA36        ; Accumulator
B3:EA41 7D 08       mov     R5, #8
B3:EA43 7F 86       mov     R7, #0x86 ; 'å'
B3:EA45 7E 00       mov     R6, #0
B3:EA47 12 19 50    lcall   B3_BS_4_B0_F32C
B3:EA4A
B3:EA4A             B3_EA4A:                      ; CODE XREF: OSD_SetFont+35j
B3:EA4A D2 AF       setb    IEN0.7                ; Interrupt Enable Register 0
B3:EA4C 22          ret
B3:EA4C             ; End of function OSD_SetFont


Localizar OSD_SetFont foi essencial para que eu pudesse localizar Sub_style no DVP3040K, no Pet725 e no DVP5140.