Como localizar Sub_StyleEste método é experimental.
Existem duas maneiras. Uma relativamente rápida, fácil de implementar em um script (já implementei na nova versão do mtk ModTooolbox) e outra tortuosa, que ainda requer julgamento humano.
Método 1Para este método, precisamos de duas coisas:
- O número da janela de exibição das legendas (verifique no mtkWindows)
- O offset de OSD_textColor na BTT
Se você não sabe o offset de OSD_textColor, procure a seguinte string:
EF 70 ? D2 ? 12
Esta string ocorre uma vez e leva a um código semelhante a este:
(o propósito original desta string é localizar Dir_DispDirline)
B1:A4EC EF mov A, R7
B1:A4ED 70 07 jnz DIR_FB_HasParent?
B1:A4EF D2 45 setb RAM_28.5
B1:A4F1 12 78 FB lcall Dir_Disp_Dirline
B1:A4F4 80 05 sjmp DIR_FB_SetColor
B1:A4F6 ; ---------------------------------------------------------------------------
B1:A4F6
B1:A4F6 DIR_FB_HasParent?: ; CODE XREF: DIR_FileBrowser+6Cj
B1:A4F6 C2 45 clr RAM_28.5
B1:A4F8 12 78 FB lcall Dir_Disp_Dirline
B1:A4FB
B1:A4FB DIR_FB_SetColor: ; CODE XREF: DIR_FileBrowser+55j
B1:A4FB ; DIR_FileBrowser+73j
B1:A4FB 90 FD 86 mov DPTR, #XRAM_FD86
B1:A4FE E0 movx A, @DPTR
B1:A4FF 54 F7 anl A, #0xF7
B1:A501 F0 movx @DPTR, A
B1:A502 90 FC 07 mov DPTR, #XRAM_FC07 ; OSD_Colors
B1:A505 74 02 mov A, #2
B1:A507 F0 movx @DPTR, A
B1:A508 A3 inc DPTR
B1:A509 04 inc A
B1:A50A F0 movx @DPTR, A
B1:A50B E4 clr A
B1:A50C FB mov R3, A
B1:A50D FD mov R5, A
B1:A50E 7F 10 mov R7, #0x10
B1:A510 12 1D E0 lcall OSD_TextColor_B1BS
B1:A513 E4 clr A
B1:A514 90 FB 98 mov DPTR, #XRAM_FB98
B1:A517 F0 movx @DPTR, A
O endereço destacado em vermelho é o que queremos.
Agora procure por:
'7F' + <Número da janela de legenda> + '12' +<offset OSD_textColor>
Se o número da janela de legendas for 12 e o offset for '1D E0' teremos a seguinte string:
7F 12 12 1D E0
Que equivale a:
mov R7, #0x12
lcall OSD_TextColor
As ocorrências desta string no firmware estão nas rotinas SubStyle primária e secundária apenas.
Este método localiza a SubStyle de
Proview DVP-858 (ambas)
Lenoxx DV-406
Philips DVP5960 (apenas primária)
Philips DVP5965 (apenas primária)
Mas não funciona com
Philips DVP5980
Philips DVP5100
Philips DVP5140
Philips DVP3040
Problema: Alguns firmwares Philips não chamam OSD_TextColor carregando R7 com o número da janela de legendas explicitamente. O número é carregado, mas indiretamente, vindo de um endereço XRAM.
Existe um método tortuoso, que envolve localizar a rotina OSD_textInit, mas falarei sobre isso depois