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

0 Membros e 3 Visitantes 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 #50 Online: Julho 26, 2007, 12:26:26 am »
Eneris,

Eu ainda não procurei essa informação, porque ainda não precisei trabalhar com nenhum firmware sem suporte a acentuação no browser. O único de que me lembro agora é o do DVP642, que nem é Mediatek.

Que aparelho está com esse 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 eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #51 Online: Julho 26, 2007, 12:28:16 am »
O Philips 5965K tem este problema.
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

FORUM.RYAN.COM.BR

Re: Firmware: log de descobertas
« Responder #51 Online: Julho 26, 2007, 12:28:16 am »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #52 Online: Julho 26, 2007, 03:28:41 am »
Tem razão!

Eu tenho até um item a respeito na Tabela Comparativa: "Suporta Acentuação em nomes de pastas" e tinha me esquecido dele.

Vou colocar isso na lista de coisas para descobrir.
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 #53 Online: Julho 26, 2007, 06:11:11 am »
Proview DVP-858 v20.07

  • Como definir a fonte usada na linha de diretório
  • Como definir a fonte usada no browser
  • Como aumentar o número de caracteres exibíveis na linha de diretório


Esta é a rotina que o grupo MT13x9 chama de Dir_DispDirline:

B1:78FB             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:78FB
B1:78FB
B1:78FB             Dir_Disp_Dirline:             ; CODE XREF: B1_A481+70p
B1:78FB                                           ; B1_A481+77p ...
B1:78FB
B1:78FB 20 45 03    jb      RAM_28.5, B1_7901
B1:78FE 02 7A 26    ljmp    B1_7A26
B1:7901             ; ---------------------------------------------------------------------------
B1:7901
B1:7901             B1_7901:                      ; CODE XREF: Dir_Disp_Dirlinej
B1:7901 7F 2B       mov     R7, #0x2B ; '+'
B1:7903 7E 02       mov     R6, #2
B1:7905 12 1E 16    lcall   B1_BS_201_B3_DBEF
B1:7908 90 FB 9B    mov     DPTR, #XRAM_FB9B
B1:790B 12 0A 38    lcall   B1_?C?LSTXDATA
B1:790E 90 FB 9B    mov     DPTR, #XRAM_FB9B
B1:7911 E0          movx    A, @DPTR
B1:7912 FC          mov     R4, A
B1:7913 A3          inc     DPTR
B1:7914 E0          movx    A, @DPTR
B1:7915 FD          mov     R5, A
B1:7916 A3          inc     DPTR
B1:7917 E0          movx    A, @DPTR
B1:7918 FE          mov     R6, A
B1:7919 A3          inc     DPTR
B1:791A E0          movx    A, @DPTR
B1:791B 24 02       add     A, #2
B1:791D FF          mov     R7, A
B1:791E E4          clr     A
B1:791F 3E          addc    A, R6
B1:7920 FE          mov     R6, A
B1:7921 E4          clr     A
B1:7922 3D          addc    A, R5
B1:7923 FD          mov     R5, A
B1:7924 E4          clr     A
B1:7925 3C          addc    A, R4
B1:7926 FC          mov     R4, A
B1:7927 90 FB 9B    mov     DPTR, #XRAM_FB9B
B1:792A 12 0A 38    lcall   B1_?C?LSTXDATA
B1:792D 90 FB 9C    mov     DPTR, #XRAM_FB9C
B1:7930 E0          movx    A, @DPTR
B1:7931 FF          mov     R7, A
B1:7932 A3          inc     DPTR
B1:7933 E0          movx    A, @DPTR
B1:7934 FC          mov     R4, A
B1:7935 A3          inc     DPTR
B1:7936 E0          movx    A, @DPTR
B1:7937 FD          mov     R5, A
B1:7938 12 1E 1C    lcall   B1_BS_202_B0_E77B
B1:793B 90 FB 99    mov     DPTR, #XRAM_FB99
B1:793E EF          mov     A, R7
B1:793F F0          movx    @DPTR, A
B1:7940 90 FC 44    mov     DPTR, #XRAM_FC44      ; Coordenada horizontal (HI)
B1:7943 E4          clr     A
B1:7944 F0          movx    @DPTR, A
B1:7945 A3          inc     DPTR
B1:7946 74 22       mov     A, #0x22 ; '"'
B1:7948 F0          movx    @DPTR, A
B1:7949 90 FC 46    mov     DPTR, #XRAM_FC46      ; Coordenada vertical (HI)
B1:794C E4          clr     A
B1:794D F0          movx    @DPTR, A
B1:794E A3          inc     DPTR
B1:794F 74 06       mov     A, #6
B1:7951 F0          movx    @DPTR, A
B1:7952 7D 07       mov     R5, #7
B1:7954 7F 10       mov     R7, #0x10
B1:7956 12 1E 22    lcall   B1_BS_203_B5_CE44
B1:7959 90 FC 46    mov     DPTR, #XRAM_FC46      ; Coordenada vertical (HI)
B1:795C E4          clr     A
B1:795D F0          movx    @DPTR, A
B1:795E A3          inc     DPTR
B1:795F 74 04       mov     A, #4
B1:7961 F0          movx    @DPTR, A
B1:7962 90 FC 45    mov     DPTR, #XRAM_FC45      ; Coordenada horizontal (LO)
B1:7965 E0          movx    A, @DPTR
B1:7966 24 32       add     A, #0x32 ; '2'
B1:7968 F0          movx    @DPTR, A
B1:7969 90 FC 44    mov     DPTR, #XRAM_FC44      ; Coordenada horizontal (HI)
B1:796C E0          movx    A, @DPTR
B1:796D 34 00       addc    A, #0
B1:796F F0          movx    @DPTR, A
B1:7970 74 04       mov     A, #4
B1:7972 24 1E       add     A, #0x1E         
B1:7974 90 FC 4E    mov     DPTR, #XRAM_FC4E
B1:7977 F0          movx    @DPTR, A
B1:7978 E4          clr     A
B1:7979 33          rlc     A
B1:797A 90 FC 4D    mov     DPTR, #XRAM_FC4D
B1:797D F0          movx    @DPTR, A
B1:797E 90 FC 49    mov     DPTR, #XRAM_FC49
B1:7981 74 02       mov     A, #2
B1:7983 F0          movx    @DPTR, A
B1:7984 A3          inc     DPTR
B1:7985 74 56       mov     A, #0x56 ; 'V'
B1:7987 F0          movx    @DPTR, A
B1:7988 D2 46       setb    RAM_28.6
B1:798A E4          clr     A
B1:798B 90 FB EA    mov     DPTR, #XRAM_FBEA
B1:798E F0          movx    @DPTR, A
B1:798F FB          mov     R3, A
B1:7990 FD          mov     R5, A
B1:7991 7F 10       mov     R7, #0x10
B1:7993 12 1E 46    lcall   B1_BS_209_B5_CF3D
B1:7996 E4          clr     A                     ; Define a fonte usada na linha de diretório (0x0)
B1:7997 FF          mov     R7, A

B1:7998 12 1E 70    lcall   OSD_SetFont_B1_BS
B1:799B 90 FC 07    mov     DPTR, #XRAM_FC07      ; OSD_Colors
B1:799E 74 03       mov     A, #3
B1:79A0 F0          movx    @DPTR, A
B1:79A1 A3          inc     DPTR
B1:79A2 14          dec     A
B1:79A3 F0          movx    @DPTR, A
B1:79A4 E4          clr     A
B1:79A5 FB          mov     R3, A
B1:79A6 FD          mov     R5, A
B1:79A7 7F 10       mov     R7, #0x10
B1:79A9 12 1D E0    lcall   OSD_TextColor_B1_BS
B1:79AC 90 FB 99    mov     DPTR, #XRAM_FB99
B1:79AF E0          movx    A, @DPTR
B1:79B0 FF          mov     R7, A
B1:79B1 D3          setb    C
B1:79B2 94 36       subb    A, #0x36 ; '6'        ; 1o ponto a mudar para aumentar o número
B1:79B2                                           ; de caracteres na linha de diretório

B1:79B4 40 31       jc      B1_79E7
B1:79B6 90 FB 9B    mov     DPTR, #XRAM_FB9B
B1:79B9 E0          movx    A, @DPTR
B1:79BA F8          mov     R0, A
B1:79BB A3          inc     DPTR
B1:79BC E0          movx    A, @DPTR
B1:79BD F9          mov     R1, A
B1:79BE A3          inc     DPTR
B1:79BF E0          movx    A, @DPTR
B1:79C0 FA          mov     R2, A
B1:79C1 A3          inc     DPTR
B1:79C2 E0          movx    A, @DPTR
B1:79C3 FB          mov     R3, A
B1:79C4 EF          mov     A, R7
B1:79C5 24 CA       add     A, #0xCA ; '-'
B1:79C7 FF          mov     R7, A
B1:79C8 E4          clr     A
B1:79C9 34 FF       addc    A, #0xFF
B1:79CB FE          mov     R6, A
B1:79CC E4          clr     A
B1:79CD FC          mov     R4, A
B1:79CE FD          mov     R5, A
B1:79CF EB          mov     A, R3
B1:79D0 2F          add     A, R7
B1:79D1 FF          mov     R7, A
B1:79D2 EA          mov     A, R2
B1:79D3 3E          addc    A, R6
B1:79D4 FE          mov     R6, A
B1:79D5 ED          mov     A, R5
B1:79D6 39          addc    A, R1
B1:79D7 FD          mov     R5, A
B1:79D8 EC          mov     A, R4
B1:79D9 38          addc    A, R0
B1:79DA FC          mov     R4, A
B1:79DB 90 FB 9B    mov     DPTR, #XRAM_FB9B
B1:79DE 12 0A 38    lcall   B1_?C?LSTXDATA
B1:79E1 90 FB 99    mov     DPTR, #XRAM_FB99
B1:79E4 74 36       mov     A, #0x36 ; '6'        ; 2o ponto a mudar para aumentar o número
B1:79E4                                           ; de caracteres na linha de diretório

B1:79E6 F0          movx    @DPTR, A
B1:79E7
B1:79E7             B1_79E7:                      ; CODE XREF: Dir_Disp_Dirline+B9j
B1:79E7 7F 28       mov     R7, #0x28 ; '('
B1:79E9 7E 02       mov     R6, #2
B1:79EB 12 19 C6    lcall   B1_BS_17_B0_E87A
B1:79EE 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:79F1 EF          mov     A, R7
B1:79F2 F0          movx    @DPTR, A
B1:79F3 90 FB 9B    mov     DPTR, #XRAM_FB9B
B1:79F6 E0          movx    A, @DPTR
B1:79F7 FC          mov     R4, A
B1:79F8 A3          inc     DPTR
B1:79F9 E0          movx    A, @DPTR
B1:79FA FD          mov     R5, A
B1:79FB A3          inc     DPTR
B1:79FC E0          movx    A, @DPTR
B1:79FD FE          mov     R6, A
B1:79FE A3          inc     DPTR
B1:79FF E0          movx    A, @DPTR
B1:7A00 24 01       add     A, #1
B1:7A02 FF          mov     R7, A
B1:7A03 E4          clr     A
B1:7A04 3E          addc    A, R6
B1:7A05 FE          mov     R6, A
B1:7A06 E4          clr     A
B1:7A07 3D          addc    A, R5
B1:7A08 FD          mov     R5, A
B1:7A09 E4          clr     A
B1:7A0A 3C          addc    A, R4
B1:7A0B FC          mov     R4, A
B1:7A0C 90 FB AC    mov     DPTR, #XRAM_FBAC
B1:7A0F 12 0A 38    lcall   B1_?C?LSTXDATA
B1:7A12 E4          clr     A
B1:7A13 90 FB B0    mov     DPTR, #XRAM_FBB0
B1:7A16 F0          movx    @DPTR, A
B1:7A17 90 FB 99    mov     DPTR, #XRAM_FB99
B1:7A1A E0          movx    A, @DPTR
B1:7A1B FD          mov     R5, A
B1:7A1C 7F 10       mov     R7, #0x10
B1:7A1E 12 1E 2E    lcall   B1_BS_205_B3_9509
B1:7A21 E4          clr     A                     ; Define a fonte usada no filebrowser (0x0)
B1:7A22 FF          mov     R7, A

B1:7A23 02 1E 70    ljmp    OSD_SetFont_B1_BS
B1:7A26             ; ---------------------------------------------------------------------------
B1:7A26
B1:7A26             B1_7A26:                      ; CODE XREF: Dir_Disp_Dirline+3j
B1:7A26 90 FC 44    mov     DPTR, #XRAM_FC44
B1:7A29 E4          clr     A
B1:7A2A F0          movx    @DPTR, A
B1:7A2B A3          inc     DPTR
B1:7A2C 74 22       mov     A, #0x22 ; '"'
B1:7A2E F0          movx    @DPTR, A
B1:7A2F 90 FC 46    mov     DPTR, #XRAM_FC46
B1:7A32 E4          clr     A
B1:7A33 F0          movx    @DPTR, A
B1:7A34 A3          inc     DPTR
B1:7A35 74 06       mov     A, #6
B1:7A37 F0          movx    @DPTR, A
B1:7A38 7B 1E       mov     R3, #0x1E
B1:7A3A 7A 00       mov     R2, #0
B1:7A3C 7D 68       mov     R5, #0x68 ; 'h'
B1:7A3E 7C 02       mov     R4, #2
B1:7A40 7F 10       mov     R7, #0x10
B1:7A42 12 1E 58    lcall   B1_BS_212_B5_BF1A
B1:7A45 22          ret
B1:7A45             ; End of function Dir_Disp_Dirline


Fontes:

Em vermelho eu destaquei os pontos para a troca de fontes. O modo "básico" de definir fontes específicas é trocar:

E4     CLR A
FF     MOV R7,A


por

7F xx       MOV R7,xx


Onde xx é o número da fonte que você quer usar

Nota: Tenha em mente que isso só funciona sem efeitos colaterais porque o valor de R7 não é diretamente reutilizado em seguida.

A utilidade principal disso é poder "desamarrar" a fonte do diretório da fonte do resto do browser. Mas você pode usar as mesmas técnicas que expliquei para selecionar fontes de legendas pelo setup para também selecionar fontes de browser pelo setup.


Número de caracteres na linha de diretório:


mov     A, #0x36

Se você contar o número de caracteres que o firmware original exibe, verá que são apenas 27. Mas 27 em hexadecimal é "0x1B" e não "0x36". O detalhe importante é lembrar que a seção ARM do Proview passa os nomes de diretório em Unicode, com dois bytes por caractere.

0x36 = 54d
54/2 = 27

Faz sentido agora, não é?

O número máximo real de caracteres depende da fonte escolhida (e é variável, porque a largura dos caracteres não é fixa). Com a fonte Impact que usei no meu firmware experimental cabem cerca de 40 caracteres. Multiplicando por dois, temos 80d = 0x50


Então, basta mudar as duas linhas para:
mov     A, #0x50 

Com a modificação:


Com a limitação do firmware oficial:


Referência: Grupo MT13x9
« Última modificação: Julho 27, 2007, 01:38: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 #54 Online: Julho 26, 2007, 11:30:05 pm »
Philips DVP5960/37
Philips DVP5965/55
Philips DVP5965/93
Punktal PK-DV246

  • Como definir a fonte usada na linha de diretório
  • Como definir a fonte usada no browser
  • Como aumentar o número de caracteres exibíveis na linha de diretório

O exemplo abaixo foi copiado da minha listagem do DVP5960, mas eu conferi os endereços com o DVP5965 e excetuado os endereços XRAM e de rotinas, tudo é exatamente igual. O caso do Punktal é quase idêntico.

A teoria é a mesma dada na explicação anterior, para o Proview, com uma única diferença, que vou explicar adiante:



B1:7EED             Dir_DispDirline:              ; CODE XREF: B1_89A3+84p
B1:7EED                                           ; B1_89A3+8Bp
B1:7EED 20 74 03    jb      RAM_2E.4, B1_7EF3
B1:7EF0 02 80 0D    ljmp    B1_800D
B1:7EF3             ; ---------------------------------------------------------------------------
B1:7EF3
B1:7EF3             B1_7EF3:                      ; CODE XREF: Dir_DispDirlinej
B1:7EF3 7F 2B       mov     R7, #0x2B ; '+'
B1:7EF5 7E 02       mov     R6, #2
B1:7EF7 12 1E B4    lcall   B1_BS_234_B4_CAD9
B1:7EFA 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:7EFD 12 08 F5    lcall   B1_?C?LSTXDATA
B1:7F00 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:7F03 E0          movx    A, @DPTR
B1:7F04 FC          mov     R4, A
B1:7F05 A3          inc     DPTR
B1:7F06 E0          movx    A, @DPTR
B1:7F07 FD          mov     R5, A
B1:7F08 A3          inc     DPTR
B1:7F09 E0          movx    A, @DPTR
B1:7F0A FE          mov     R6, A
B1:7F0B A3          inc     DPTR
B1:7F0C E0          movx    A, @DPTR
B1:7F0D 24 02       add     A, #2
B1:7F0F FF          mov     R7, A
B1:7F10 E4          clr     A
B1:7F11 3E          addc    A, R6
B1:7F12 FE          mov     R6, A
B1:7F13 E4          clr     A
B1:7F14 3D          addc    A, R5
B1:7F15 FD          mov     R5, A
B1:7F16 E4          clr     A
B1:7F17 3C          addc    A, R4
B1:7F18 FC          mov     R4, A
B1:7F19 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:7F1C 12 08 F5    lcall   B1_?C?LSTXDATA
B1:7F1F 90 FB B2    mov     DPTR, #XRAM_FBB2
B1:7F22 E0          movx    A, @DPTR
B1:7F23 FF          mov     R7, A
B1:7F24 A3          inc     DPTR
B1:7F25 E0          movx    A, @DPTR
B1:7F26 FC          mov     R4, A
B1:7F27 A3          inc     DPTR
B1:7F28 E0          movx    A, @DPTR
B1:7F29 FD          mov     R5, A
B1:7F2A 12 1E A8    lcall   B1_BS_232_B0_E599
B1:7F2D 90 FB AF    mov     DPTR, #XRAM_FBAF
B1:7F30 EF          mov     A, R7
B1:7F31 F0          movx    @DPTR, A
B1:7F32 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:7F35 E4          clr     A
B1:7F36 F0          movx    @DPTR, A
B1:7F37 A3          inc     DPTR
B1:7F38 74 22       mov     A, #0x22 ; '"'
B1:7F3A F0          movx    @DPTR, A
B1:7F3B 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:7F3E E4          clr     A
B1:7F3F F0          movx    @DPTR, A
B1:7F40 A3          inc     DPTR
B1:7F41 74 06       mov     A, #6
B1:7F43 F0          movx    @DPTR, A
B1:7F44 7D 08       mov     R5, #8
B1:7F46 7F 0F       mov     R7, #0xF
B1:7F48 12 1E BA    lcall   B1_BS_235_B3_2D12
B1:7F4B 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:7F4E E4          clr     A
B1:7F4F F0          movx    @DPTR, A
B1:7F50 A3          inc     DPTR
B1:7F51 74 04       mov     A, #4
B1:7F53 F0          movx    @DPTR, A
B1:7F54 90 FC 77    mov     DPTR, #XRAM_FC77      ; Coordenada horizontal (LO)
B1:7F57 E0          movx    A, @DPTR
B1:7F58 24 32       add     A, #0x32 ; '2'
B1:7F5A F0          movx    @DPTR, A
B1:7F5B 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:7F5E E0          movx    A, @DPTR
B1:7F5F 34 00       addc    A, #0
B1:7F61 F0          movx    @DPTR, A
B1:7F62 74 04       mov     A, #4
B1:7F64 24 1E       add     A, #0x1E
B1:7F66 90 FC 81    mov     DPTR, #XRAM_FC81
B1:7F69 F0          movx    @DPTR, A
B1:7F6A E4          clr     A
B1:7F6B 33          rlc     A
B1:7F6C 90 FC 80    mov     DPTR, #XRAM_FC80
B1:7F6F F0          movx    @DPTR, A
B1:7F70 90 FC 7C    mov     DPTR, #XRAM_FC7C
B1:7F73 74 02       mov     A, #2
B1:7F75 F0          movx    @DPTR, A
B1:7F76 A3          inc     DPTR
B1:7F77 74 56       mov     A, #0x56 ; 'V'
B1:7F79 F0          movx    @DPTR, A
B1:7F7A D2 75       setb    RAM_2E.5
B1:7F7C E4          clr     A
B1:7F7D 90 FB FD    mov     DPTR, #XRAM_FBFD
B1:7F80 F0          movx    @DPTR, A
B1:7F81 FB          mov     R3, A
B1:7F82 FD          mov     R5, A
B1:7F83 7F 0F       mov     R7, #0xF
B1:7F85 12 1D 52    lcall   B1_BS_175_B3_B8B4
B1:7F88 E4          clr     A                     ; Define a fonte usada na linha de diretório (0x0)
B1:7F89 FF          mov     R7, A

B1:7F8A 12 1E EA    lcall   OSD_SetFont_B1_BS
B1:7F8D 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B1:7F90 74 02       mov     A, #2                 ; Cor de contorno = 2
B1:7F92 F0          movx    @DPTR, A
B1:7F93 A3          inc     DPTR
B1:7F94 04          inc     A                     ; Cor de preenchimento = 3
B1:7F95 F0          movx    @DPTR, A
B1:7F96 E4          clr     A
B1:7F97 FB          mov     R3, A
B1:7F98 FD          mov     R5, A
B1:7F99 7F 0F       mov     R7, #0xF
B1:7F9B 12 1D 76    lcall   OSD_TextColor_B1_BS
B1:7F9E 90 FB AF    mov     DPTR, #XRAM_FBAF
B1:7FA1 E0          movx    A, @DPTR
B1:7FA2 FF          mov     R7, A
B1:7FA3 D3          setb    C
B1:7FA4 94 1E       subb    A, #0x1E              ; 1o ponto a mudar para aumentar o número
B1:7FA4                                           ; de caracteres na linha de diretório

B1:7FA6 40 31       jc      B1_7FD9
B1:7FA8 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:7FAB E0          movx    A, @DPTR
B1:7FAC F8          mov     R0, A
B1:7FAD A3          inc     DPTR
B1:7FAE E0          movx    A, @DPTR
B1:7FAF F9          mov     R1, A
B1:7FB0 A3          inc     DPTR
B1:7FB1 E0          movx    A, @DPTR
B1:7FB2 FA          mov     R2, A
B1:7FB3 A3          inc     DPTR
B1:7FB4 E0          movx    A, @DPTR
B1:7FB5 FB          mov     R3, A
B1:7FB6 EF          mov     A, R7
B1:7FB7 24 E2       add     A, #0xE2 ; 'Ô'        ; 0x100-(número de caracteres a exibir)
B1:7FB7                                           ; No caso: 0x100-0x1E = 0xE2

B1:7FB9 FF          mov     R7, A
B1:7FBA E4          clr     A
B1:7FBB 34 FF       addc    A, #0xFF
B1:7FBD FE          mov     R6, A
B1:7FBE E4          clr     A
B1:7FBF FC          mov     R4, A
B1:7FC0 FD          mov     R5, A
B1:7FC1 EB          mov     A, R3
B1:7FC2 2F          add     A, R7
B1:7FC3 FF          mov     R7, A
B1:7FC4 EA          mov     A, R2
B1:7FC5 3E          addc    A, R6
B1:7FC6 FE          mov     R6, A
B1:7FC7 ED          mov     A, R5
B1:7FC8 39          addc    A, R1
B1:7FC9 FD          mov     R5, A
B1:7FCA EC          mov     A, R4
B1:7FCB 38          addc    A, R0
B1:7FCC FC          mov     R4, A
B1:7FCD 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:7FD0 12 08 F5    lcall   B1_?C?LSTXDATA
B1:7FD3 90 FB AF    mov     DPTR, #XRAM_FBAF
B1:7FD6 74 1E       mov     A, #0x1E              ; 2o ponto a mudar para aumentar o número
B1:7FD6                                           ; de caracteres na linha de diretório

B1:7FD8 F0          movx    @DPTR, A
B1:7FD9
B1:7FD9             B1_7FD9:                      ; CODE XREF: Dir_DispDirline+B9j
B1:7FD9 90 FB B1    mov     DPTR, #XRAM_FBB1
B1:7FDC E0          movx    A, @DPTR
B1:7FDD FC          mov     R4, A
B1:7FDE A3          inc     DPTR
B1:7FDF E0          movx    A, @DPTR
B1:7FE0 FD          mov     R5, A
B1:7FE1 A3          inc     DPTR
B1:7FE2 E0          movx    A, @DPTR
B1:7FE3 FE          mov     R6, A
B1:7FE4 A3          inc     DPTR
B1:7FE5 E0          movx    A, @DPTR
B1:7FE6 24 01       add     A, #1
B1:7FE8 FF          mov     R7, A
B1:7FE9 E4          clr     A
B1:7FEA 3E          addc    A, R6
B1:7FEB FE          mov     R6, A
B1:7FEC E4          clr     A
B1:7FED 3D          addc    A, R5
B1:7FEE FD          mov     R5, A
B1:7FEF E4          clr     A
B1:7FF0 3C          addc    A, R4
B1:7FF1 FC          mov     R4, A
B1:7FF2 90 FB C2    mov     DPTR, #XRAM_FBC2
B1:7FF5 12 08 F5    lcall   B1_?C?LSTXDATA
B1:7FF8 90 FB C6    mov     DPTR, #XRAM_FBC6      ; Posição do último "."
B1:7FFB 74 5F       mov     A, #0x5F ; '_'
B1:7FFD F0          movx    @DPTR, A
B1:7FFE 90 FB AF    mov     DPTR, #XRAM_FBAF
B1:8001 E0          movx    A, @DPTR
B1:8002 FD          mov     R5, A
B1:8003 7F 0F       mov     R7, #0xF
B1:8005 12 1E C6    lcall   B1_BS_237_B4_8A43
B1:8008 E4          clr     A                     ; Define a fonte do browser (0x0)
B1:8009 FF          mov     R7, A

B1:800A 02 1E EA    ljmp    OSD_SetFont_B1_BS
B1:800D             ; ---------------------------------------------------------------------------
B1:800D
B1:800D             B1_800D:                      ; CODE XREF: Dir_DispDirline+3j
B1:800D 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:8010 E4          clr     A
B1:8011 F0          movx    @DPTR, A
B1:8012 A3          inc     DPTR
B1:8013 74 22       mov     A, #0x22 ; '"'
B1:8015 F0          movx    @DPTR, A
B1:8016 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:8019 E4          clr     A
B1:801A F0          movx    @DPTR, A
B1:801B A3          inc     DPTR
B1:801C 74 06       mov     A, #6
B1:801E F0          movx    @DPTR, A
B1:801F 7B 1E       mov     R3, #0x1E
B1:8021 7A 00       mov     R2, #0
B1:8023 7D 68       mov     R5, #0x68 ; 'h'
B1:8025 7C 02       mov     R4, #2
B1:8027 7F 0F       mov     R7, #0xF
B1:8029 12 1E 54    lcall   ClearRect?
B1:802C 22          ret
B1:802C             ; End of function Dir_DispDirline
B1:802C


O DVP5960 tem um ponto a mais que precisa ser mudado:

B1:7FB7 24 E2       add     A, #0xE2 ; 'Ô'      

Exemplo: se você quiser aumentar o número de caracteres para 40 caracteres (0x28), esta linha intermediária precisa ser mudada para: 0x100 - 0x28 = 0xD8

B1:7FB7 24 D8       add     A, #0xD8

Note que o DVP5960, não tem o "problema" com unicode, assim não é preciso nem dobrar nem dividir ao fazer as contas.
« Última modificação: Agosto 27, 2007, 08:47:41 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 #55 Online: Julho 27, 2007, 12:03:22 am »
Como localizar a rotina Disp_DirLine no seu firmware

Conte exatamente quantos caracteres no máximo aparecem na linha de diretório, converta para hexa e substitua aqui:

FF D3 94 xx

onde xx é o número que você conseguiu

Esta sequencia de bytes só aparece uma vez no código 8032, na rotina Disp_dirLine.

Se não funcionar, o seu firmware pode usar Unicode, então dobre o valor e procure de novo.

Por exemplo, se você contar 30 caracteres, vai procurar pela seguinte seqüência:

FF D3 94 1E

e se não funcionar, pela seguinte:

FF D3 94 3C


Tendo localizado Dir_DispDirline, como essa rotina chama tanto OSD_SetFont quanto OSD_textColors, se você não tiver ainda localizado essas rotinas vai poder achá-las. Além da utilidade óbvia de se localizar e identificar rotinas, lembre-se de que Sub_textStyle, que é bem difiícil de achar, também chama essas rotinas, logo você fica um pouco mais perto de encontrá-la.
« Última modificação: Julho 28, 2007, 05:18:47 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 #56 Online: Julho 27, 2007, 09:38:46 am »

Philips DVP5960/37

Philips DVP5965/55
Philips DVP5965/93


TAGS MP3

Isto foi testado em um DVP5960, mas deve funcionar em um DVP5965 com mínimas alterações


  • Como definir uma fonte separada da usada no browser
  • Como aumentar o número de caracteres exibidos de 14 para 30
  • Como mover o local de exibição para a parte inferior da tela

Quase 100% das mudanças no assembly são feitas dentro da rotina MP3_tagDisplay, que é uma rotina bem longa que transcrevo na íntegra no próximo post. Eu só localizei esta rotina graças a este post do Vladimir Boroda. A partir daí, tudo saiu por investigação própria. Eu ainda não decifrei todos os segredos da rotina, mas já tenho o suficiente para fazer muita coisa interessante.

Abaixo, como é no firmware original. Perceba o limite de 14 caracteres para cada tag.



A primeira mudança é na fonte. A fonte original do browser do DVP5960 além de desnecessariamente grande para isso, tem serifa, o que torna o espaço requerido entre linhas grande demais. Eu criei uma fonte nova com o mtkFontCreator, inseri no firmware como fonte 02 e fiz a seguinte modificação:

B1:56C0 74 02      mov A, 02                ; Fonte 0x02
B1:56C2 12 1E EA   lcall OSD_setFont      ;Faço uma chamada à rotina que seta a fonte
B1:56C5 12 FA 32   lcall rotina_movida     ;Chamo a rotina antiga
B1:56C8 00 nop
B1:56C9 00 nop
B1:56CA 00 nop
B1:56CB 00 nop
B1:56CC 00 nop
B1:56CD 00 nop


Atenção: A rotina OSD_SetFont do DVP5965 fica em 1ED8

Depois acrescentei a partir de 1FA32 o que eu precisei mover para liberar espaço:

B1:FA32 74 00      mov A, 0                     ; Cor de Outine
B1:FA34 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B1:FA37 F0          movx    @DPTR, A
B1:FA38 A3          inc     DPTR
B1:FA39 74 0E       mov     A, #0xE               ; Cor de Preenchimento
B1:FA3B F0          movx    @DPTR, A
B1:FA3C E4          clr     A
B1:FA3D FB          mov     R3, A
B1:FA3E FD          mov     R5, A
B1:FA3F 7F 0F       mov     R7, #0xF
B1:FA41 22           ret


Note que eu aproveitei para fazer uma pequena modificação que me permite mudar a cor do contorno, se necessário.

O resultado imediato foi este:


Agora temos espaço sobrando, mas faltam caracteres. A limitação de 14 caracteres por tag é artificial, porque a seção ARM entrega 30. Então vamos aumentar isso.

Três bytes precisam ser mudados, em dois pontos diferentes:

B1:5785 94 FF       subb    A, #0xFF              
B1:5787 40 03       jc      B1_578C
B1:5789 74 FF       mov     A, #0xFF   

e

B1:57CA 94 FF       subb    A, #0xFF              ; Número máximo de caracteres a exibir por TAG

Eu poderia ter colocado apenas 30 e não 255, mas pode ser que algum firmware passe mais que 30 caracteres, por isso é melhor não impormos nossa própria limitação.

O resultado é esse. Note que os caracteres que não cabem aparecem do lado esquerdo da tela:



O espaço entre linhas é grande demais. Por sorte, isso é definido por um único byte na rotina:

B1:57A1 75 F0 14    mov     B, #0x14              ; Altura presumida de cada linha

O resultado é esse. Note que eu também movi ligeiramente as tags para a esquerda, mas só explico como isso é efeito mais adiante:



Agora sim, vamos mover as tags. São três bytes que determinam a coordenada do canto superior esquerdo do retângulo onde as tags começam a ser impressas:


B1:5796 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:5799 74 00       mov     A, #0
B1:579B F0          movx    @DPTR, A
B1:579C A3          inc     DPTR
B1:579D 74 25       mov     A, #0x25 ;
B1:579F F0          movx    @DPTR, A              ; FC76 e FC77 = 0x25
B1:579F                                           ; offset horizontal. Quanto menor, mais à esquerda a linha começa.
B1:57A0 EF          mov     A, R7                 ; R7 contém o número da TAG (linha) sendo exibida?
B1:57A1 75 F0 14    mov     B, #0x14              ; Altura presumida de cada linha
B1:57A1                                           ; 0x10 fará com que cada linha cubra a metade da anterior
B1:57A1                                           ; 0x16 funciona OK com a fonte original
B1:57A4 A4          mul     AB
B1:57A5 AE F0       mov     R6, B                 ; R6 contém agora a coordenada vertical de impressão da linha?
B1:57A7 24 F0       add     A, #0xF0 ;


Abaixo, o resultado com um novo background que fiz rapidamente só para testar como fica. Está bem mal-feito, mas serve para ter uma idéia. Também é preciso aumentar o tamanho da janela 0xF no mtkWindows.


É possível colocar as tags lado a lado em duas linhas, mas isso requer uma mudança mais drástica na rotina.

Nota: Neste texto eu ainda não explico como fazer para apagar o retângulo de exibição das tags, porque isso é feito em outro ponto do firmware. Depois eu explico, porque estou cansado agora.

E ainda é preciso fazer um ajuste, porque são cinco as tags que o DVP5960 pode exibir e o meu exemplo só previu quatro.



MP3_TagDisplay - ClearRect inicial


Logo no início de MP3_TagDisplay existe um procedimento ClearRect cuja função é remover as tags deixadas por uma música anterior. O procedimento, claro, é chamado antes das tags serem impressas.

B1:56A0 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:56A3 74 01       mov     A, #1
B1:56A5 F0          movx    @DPTR, A
B1:56A6 A3          inc     DPTR
B1:56A7 74 79       mov     A, #0x79 ; 'y'        ; Coordenada Horizontal: 0x179
B1:56A9 F0          movx    @DPTR, A
B1:56AA 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:56AD E4          clr     A
B1:56AE F0          movx    @DPTR, A
B1:56AF A3          inc     DPTR
B1:56B0 74 37       mov     A, #0x37 ; '7'        ; Coordenada Vertical: 0x37
B1:56B2 F0          movx    @DPTR, A
B1:56B3 7B DC       mov     R3, #0xDC ; '_'       ; 0xDC = altura
B1:56B5 7A 00       mov     R2, #0
B1:56B7 7D DC       mov     R5, #0xDC ; '_'       ; 0xDC = Largura
B1:56B9 7C 00       mov     R4, #0
B1:56BB 7F 0F       mov     R7, #0xF
B1:56BD 12 1E 54    lcall   ClearRect             ; Limpa o retângulo



Como nós movemos o local de exibição das tags, é preciso mover e redimensionar o retângulo criado por essa rotina que já corrigida fica assim:

B1:56A0 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:56A3 74 00       mov     A, #0
B1:56A5 F0          movx    @DPTR, A
B1:56A6 A3          inc     DPTR
B1:56A7 74 25       mov     A, #0x25 ; 'y'        ; Coordenada Horizontal: 0x25
B1:56A9 F0          movx    @DPTR, A
B1:56AA 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:56AD E4          clr     A
B1:56AE F0          movx    @DPTR, A
B1:56AF A3          inc     DPTR
B1:56B0 74 EF       mov     A, #0xEF ;       ; Coordenada Vertical: 0xEF
B1:56B2 F0          movx    @DPTR, A
B1:56B3 7B 6C       mov     R3, #0x6C            ; 0x6C = altura
B1:56B5 7A 00       mov     R2, #0
B1:56B7 7D 50       mov     R5, #0x50           ; 0x150 = Largura
B1:56B9 7C 01       mov     R4, #0x1
B1:56BB 7F 0F       mov     R7, #0xF
B1:56BD 12 1E 54    lcall   ClearRect             ; Limpa o retângulo
« Última modificação: Julho 31, 2007, 05:55:13 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 #57 Online: Julho 27, 2007, 09:53:19 am »
DVP5960/37 - MP3_TagDisplay

Esta rotina é a mesma para o DVP5965/55 e DVP5965/93. Mudam apenas endereços XRAM e de subrotinas, mas o resto é idêntico.

Para localizar no seu firmware, procure por "EF F0 7F 4B". Só ocorre no topo de MP3_TagDisplay e todo o firmware onde eu não achei isso não tinha mesmo suporte a tags.


Esta rotina está em um post separado porque estoura o limite de 20000 caracteres por post.

[size=08pt]

B1:565C             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
B1:565C
B1:565C
B1:565C             MP3_TagDisplay:               ; CODE XREF: B1_6AC0:B1_6BF4j
B1:565C                                           ; B1_AB8D+B1p
B1:565C                                           ; DATA XREF: ...
B1:565C E4          clr     A
B1:565D 90 FB B3    mov     DPTR, #XRAM_FBB3
B1:5660 F0          movx    @DPTR, A
B1:5661 90 FB AC    mov     DPTR, #XRAM_FBAC
B1:5664 74 06       mov     A, #6                 ; Mudei para 0x5 mas nada pareceu mudar
B1:5666 F0          movx    @DPTR, A
B1:5667 7D 02       mov     R5, #2
B1:5669 7C 00       mov     R4, #0
B1:566B 7F 01       mov     R7, #1
B1:566D 12 1D 04    lcall   B1_BS_162_B3_BE2E
B1:5670 7F 4A       mov     R7, #0x4A ; 'J'       ; As quatro chamadas a ARM_Getchar seguintes obtem o endereço
B1:5670                                           ; inicial do bloco de tags (4 bytes) na shared memory
B1:5672 7E 02       mov     R6, #2
B1:5674 12 1B 96    lcall   ARM_GetChar_B1_BS
B1:5677 90 FB A3    mov     DPTR, #XRAM_FBA3
B1:567A EF          mov     A, R7
B1:567B F0          movx    @DPTR, A
B1:567C 7F 4B       mov     R7, #0x4B ; 'K'
B1:567E 7E 02       mov     R6, #2
B1:5680 12 1B 96    lcall   ARM_GetChar_B1_BS
B1:5683 90 FB A2    mov     DPTR, #XRAM_FBA2
B1:5686 EF          mov     A, R7
B1:5687 F0          movx    @DPTR, A
B1:5688 7F 4C       mov     R7, #0x4C ; 'L'
B1:568A 7E 02       mov     R6, #2
B1:568C 12 1B 96    lcall   ARM_GetChar_B1_BS
B1:568F 90 FB A1    mov     DPTR, #XRAM_FBA1
B1:5692 EF          mov     A, R7
B1:5693 F0          movx    @DPTR, A
B1:5694 7F 4D       mov     R7, #0x4D ; 'M'
B1:5696 7E 02       mov     R6, #2
B1:5698 12 1B 96    lcall   ARM_GetChar_B1_BS
B1:569B 90 FB A0    mov     DPTR, #XRAM_FBA0
B1:569E EF          mov     A, R7
B1:569F F0          movx    @DPTR, A
B1:56A0 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:56A3 74 01       mov     A, #1
B1:56A5 F0          movx    @DPTR, A
B1:56A6 A3          inc     DPTR
B1:56A7 74 79       mov     A, #0x79 ; 'y'        ; Coordenada Horizontal: 0x179
B1:56A9 F0          movx    @DPTR, A
B1:56AA 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:56AD E4          clr     A
B1:56AE F0          movx    @DPTR, A
B1:56AF A3          inc     DPTR
B1:56B0 74 37       mov     A, #0x37 ; '7'        ; Coordenada Vertical: 0x37
B1:56B2 F0          movx    @DPTR, A
B1:56B3 7B DC       mov     R3, #0xDC ; '_'       ; R2R3 = altura
B1:56B5 7A 00       mov     R2, #0
B1:56B7 7D DC       mov     R5, #0xDC ; '_'       ; R4R5 = Largura
B1:56B9 7C 00       mov     R4, #0
B1:56BB 7F 0F       mov     R7, #0xF
B1:56BD 12 1E 54    lcall   ClearRect             ; Limpa o retângulo
B1:56C0 E4          clr     A                     ; Cor de Outine (0x0)
B1:56C1 90 FC 1E    mov     DPTR, #XRAM_FC1E      ; OSD_colors
B1:56C4 F0          movx    @DPTR, A
B1:56C5 A3          inc     DPTR
B1:56C6 74 0E       mov     A, #0xE               ; Cor de Preenchimento
B1:56C8 F0          movx    @DPTR, A
B1:56C9 E4          clr     A
B1:56CA FB          mov     R3, A
B1:56CB FD          mov     R5, A
B1:56CC 7F 0F       mov     R7, #0xF
B1:56CE 12 1D 76    lcall   OSD_TextColor_B1_BS
B1:56D1 74 FF       mov     A, #0xFF
B1:56D3 FF          mov     R7, A
B1:56D4 FE          mov     R6, A
B1:56D5 FD          mov     R5, A
B1:56D6 FC          mov     R4, A
B1:56D7 90 FB A0    mov     DPTR, #XRAM_FBA0
B1:56DA E0          movx    A, @DPTR
B1:56DB F8          mov     R0, A
B1:56DC A3          inc     DPTR
B1:56DD E0          movx    A, @DPTR
B1:56DE F9          mov     R1, A
B1:56DF A3          inc     DPTR
B1:56E0 E0          movx    A, @DPTR
B1:56E1 FA          mov     R2, A
B1:56E2 A3          inc     DPTR
B1:56E3 E0          movx    A, @DPTR
B1:56E4 FB          mov     R3, A
B1:56E5 C3          clr     C
B1:56E6 12 08 59    lcall   B1_?C?ULCMP
B1:56E9 70 03       jnz     B1_56EE
B1:56EB 02 58 AA    ljmp    B1_58AA
B1:56EE             ; ---------------------------------------------------------------------------
B1:56EE
B1:56EE             B1_56EE:                      ; CODE XREF: MP3_TagDisplay+8Dj
B1:56EE E4          clr     A
B1:56EF 90 FB A8    mov     DPTR, #XRAM_FBA8      ; Número sequencial da TAG?
B1:56F2 F0          movx    @DPTR, A
B1:56F3
B1:56F3             B1_56F3:                      ; CODE XREF: MP3_TagDisplay+24Bj
B1:56F3 90 FB A0    mov     DPTR, #XRAM_FBA0
B1:56F6 E0          movx    A, @DPTR
B1:56F7 FC          mov     R4, A
B1:56F8 A3          inc     DPTR
B1:56F9 E0          movx    A, @DPTR
B1:56FA FD          mov     R5, A
B1:56FB A3          inc     DPTR
B1:56FC E0          movx    A, @DPTR
B1:56FD FE          mov     R6, A
B1:56FE A3          inc     DPTR
B1:56FF E0          movx    A, @DPTR
B1:5700 FF          mov     R7, A
B1:5701 A3          inc     DPTR
B1:5702 12 08 F5    lcall   B1_?C?LSTXDATA
B1:5705 E4          clr     A
B1:5706 90 FB A9    mov     DPTR, #XRAM_FBA9
B1:5709 F0          movx    @DPTR, A
B1:570A
B1:570A             B1_570A:                      ; CODE XREF: MP3_TagDisplay+122j
B1:570A 90 FB A8    mov     DPTR, #XRAM_FBA8      ; Número sequencial da TAG?
B1:570D E0          movx    A, @DPTR
B1:570E 90 2F DB    mov     DPTR, #B1_2FDB
B1:5711 93          movc    A, @A+DPTR
B1:5712 FF          mov     R7, A
B1:5713 90 FB A9    mov     DPTR, #XRAM_FBA9
B1:5716 E0          movx    A, @DPTR
B1:5717 C3          clr     C
B1:5718 9F          subb    A, R7
B1:5719 50 65       jnc     B1_5780
B1:571B 90 FB A5    mov     DPTR, #XRAM_FBA5
B1:571E E0          movx    A, @DPTR
B1:571F FF          mov     R7, A
B1:5720 A3          inc     DPTR
B1:5721 E0          movx    A, @DPTR
B1:5722 FC          mov     R4, A
B1:5723 A3          inc     DPTR
B1:5724 E0          movx    A, @DPTR
B1:5725 FD          mov     R5, A
B1:5726 12 1E A8    lcall   B1_BS_232_B0_E599
B1:5729 90 FB A8    mov     DPTR, #XRAM_FBA8      ; Número sequencial da TAG?
B1:572C E0          movx    A, @DPTR
B1:572D FE          mov     R6, A
B1:572E 70 0C       jnz     B1_573C
B1:5730 A3          inc     DPTR
B1:5731 E0          movx    A, @DPTR
B1:5732 90 2F D8    mov     DPTR, #B1_2FD8
B1:5735 93          movc    A, @A+DPTR
B1:5736 6F          xrl     A, R7
B1:5737 60 03       jz      B1_573C
B1:5739 02 58 AA    ljmp    B1_58AA
B1:573C             ; ---------------------------------------------------------------------------
B1:573C
B1:573C             B1_573C:                      ; CODE XREF: MP3_TagDisplay+D2j
B1:573C                                           ; MP3_TagDisplay+DBj
B1:573C EF          mov     A, R7
B1:573D 70 08       jnz     B1_5747
B1:573F 90 FB A9    mov     DPTR, #XRAM_FBA9
B1:5742 E0          movx    A, @DPTR
B1:5743 A3          inc     DPTR
B1:5744 F0          movx    @DPTR, A
B1:5745 80 39       sjmp    B1_5780
B1:5747             ; ---------------------------------------------------------------------------
B1:5747
B1:5747             B1_5747:                      ; CODE XREF: MP3_TagDisplay+E1j
B1:5747 EE          mov     A, R6
B1:5748 90 2F DB    mov     DPTR, #B1_2FDB
B1:574B 93          movc    A, @A+DPTR
B1:574C FF          mov     R7, A
B1:574D 14          dec     A
B1:574E FE          mov     R6, A
B1:574F 90 FB A9    mov     DPTR, #XRAM_FBA9
B1:5752 E0          movx    A, @DPTR
B1:5753 6E          xrl     A, R6
B1:5754 70 03       jnz     B1_5759
B1:5756 A3          inc     DPTR
B1:5757 EF          mov     A, R7
B1:5758 F0          movx    @DPTR, A
B1:5759
B1:5759             B1_5759:                      ; CODE XREF: MP3_TagDisplay+F8j
B1:5759 90 FB A4    mov     DPTR, #XRAM_FBA4
B1:575C E0          movx    A, @DPTR
B1:575D FC          mov     R4, A
B1:575E A3          inc     DPTR
B1:575F E0          movx    A, @DPTR
B1:5760 FD          mov     R5, A
B1:5761 A3          inc     DPTR
B1:5762 E0          movx    A, @DPTR
B1:5763 FE          mov     R6, A
B1:5764 A3          inc     DPTR
B1:5765 E0          movx    A, @DPTR
B1:5766 24 01       add     A, #1
B1:5768 FF          mov     R7, A
B1:5769 E4          clr     A
B1:576A 3E          addc    A, R6
B1:576B FE          mov     R6, A
B1:576C E4          clr     A
B1:576D 3D          addc    A, R5
B1:576E FD          mov     R5, A
B1:576F E4          clr     A
B1:5770 3C          addc    A, R4
B1:5771 FC          mov     R4, A
B1:5772 90 FB A4    mov     DPTR, #XRAM_FBA4
B1:5775 12 08 F5    lcall   B1_?C?LSTXDATA
B1:5778 90 FB A9    mov     DPTR, #XRAM_FBA9
B1:577B E0          movx    A, @DPTR
B1:577C 04          inc     A
B1:577D F0          movx    @DPTR, A
B1:577E 80 8A       sjmp    B1_570A
B1:5780             ; ---------------------------------------------------------------------------
B1:5780
B1:5780             B1_5780:                      ; CODE XREF: MP3_TagDisplay+BDj
B1:5780                                           ; MP3_TagDisplay+E9j
B1:5780 90 FB AA    mov     DPTR, #XRAM_FBAA      ; Número de caracteres na TAG ID3?
B1:5783 E0          movx    A, @DPTR
B1:5784 C3          clr     C
B1:5785 94 0E       subb    A, #0xE               ; Se o número de caracteres for 14 ou menos, continua
B1:5787 40 03       jc      B1_578C
B1:5789 74 0E       mov     A, #0xE               ; Se for maior que 14, limitar a 14
B1:578B F0          movx    @DPTR, A
B1:578C
B1:578C             B1_578C:                      ; CODE XREF: MP3_TagDisplay+12Bj
B1:578C 90 FB A8    mov     DPTR, #XRAM_FBA8      ; Número sequencial da TAG?
B1:578F E0          movx    A, @DPTR
B1:5790 FF          mov     R7, A
B1:5791 70 03       jnz     B1_5796
B1:5793 02 58 6E    ljmp    B1_586E
B1:5796             ; ---------------------------------------------------------------------------
B1:5796
B1:5796             B1_5796:                      ; CODE XREF: MP3_TagDisplay+135j
B1:5796 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:5799 74 01       mov     A, #1
B1:579B F0          movx    @DPTR, A
B1:579C A3          inc     DPTR
B1:579D 74 79       mov     A, #0x79 ; 'y'
B1:579F F0          movx    @DPTR, A              ; FC76 e FC77 = 0x179
B1:579F                                           ; offset horizontal. Quanto menor, mais à esquerda a linha começa.
B1:57A0 EF          mov     A, R7                 ; R7 contém o número da TAG (linha) sendo exibida?
B1:57A1 75 F0 1E    mov     B, #0x1E              ; Altura presumida de cada linha
B1:57A1                                           ; 0x10 fará com que cada linha cubra a metade da anterior
B1:57A1                                           ; 0x16 funciona OK com a fonte original
B1:57A4 A4          mul     AB
B1:57A5 AE F0       mov     R6, B                 ; R6 contém agora a coordenada vertical de impressão da linha?
B1:57A7 24 37       add     A, #0x37 ; '7'        ; Offset vertical. Quanto menor, mais próxima do topo da janela
B1:57A7                                           ; a primeira linha das TAGs vai ser impressa.
B1:57A9 90 FC 7A    mov     DPTR, #XRAM_FC7A      ; Coordenada vertical (LO)
B1:57AC F0          movx    @DPTR, A
B1:57AD E4          clr     A
B1:57AE 3E          addc    A, R6
B1:57AF 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:57B2 F0          movx    @DPTR, A
B1:57B3 90 FB A0    mov     DPTR, #XRAM_FBA0
B1:57B6 E0          movx    A, @DPTR
B1:57B7 FC          mov     R4, A
B1:57B8 A3          inc     DPTR
B1:57B9 E0          movx    A, @DPTR
B1:57BA FD          mov     R5, A
B1:57BB A3          inc     DPTR
B1:57BC E0          movx    A, @DPTR
B1:57BD FE          mov     R6, A
B1:57BE A3          inc     DPTR
B1:57BF E0          movx    A, @DPTR
B1:57C0 FF          mov     R7, A
B1:57C1 A3          inc     DPTR
B1:57C2 12 08 F5    lcall   B1_?C?LSTXDATA
B1:57C5 90 FB AA    mov     DPTR, #XRAM_FBAA      ; Número de caracteres na TAG ID3?
B1:57C8 E0          movx    A, @DPTR
B1:57C9 D3          setb    C
B1:57CA 94 10       subb    A, #0x10              ; Número máximo de caracteres a exibir por TAG
B1:57CC 40 6B       jc      B1_5839
B1:57CE 90 FB B3    mov     DPTR, #XRAM_FBB3
B1:57D1 E0          movx    A, @DPTR
B1:57D2 94 07       subb    A, #7
B1:57D4 50 1B       jnc     B1_57F1
B1:57D6 90 FB A4    mov     DPTR, #XRAM_FBA4
B1:57D9 E0          movx    A, @DPTR
B1:57DA FC          mov     R4, A
B1:57DB A3          inc     DPTR
B1:57DC E0          movx    A, @DPTR
B1:57DD FD          mov     R5, A
B1:57DE A3          inc     DPTR
B1:57DF E0          movx    A, @DPTR
B1:57E0 FE          mov     R6, A
B1:57E1 A3          inc     DPTR
B1:57E2 E0          movx    A, @DPTR
B1:57E3 FF          mov     R7, A
B1:57E4 90 FB B6    mov     DPTR, #XRAM_FBB6
B1:57E7 12 08 F5    lcall   B1_?C?LSTXDATA
B1:57EA 7D 10       mov     R5, #0x10
B1:57EC 7F 0F       mov     R7, #0xF
B1:57EE 12 1E AE    lcall   B1_BS_233_B3_A227
B1:57F1
B1:57F1             B1_57F1:                      ; CODE XREF: MP3_TagDisplay+178j
B1:57F1 90 FB B3    mov     DPTR, #XRAM_FBB3
B1:57F4 E0          movx    A, @DPTR
B1:57F5 04          inc     A
B1:57F6 F0          movx    @DPTR, A
B1:57F7 90 FB A4    mov     DPTR, #XRAM_FBA4
B1:57FA E0          movx    A, @DPTR
B1:57FB FC          mov     R4, A
B1:57FC A3          inc     DPTR
B1:57FD E0          movx    A, @DPTR
B1:57FE FD          mov     R5, A
B1:57FF A3          inc     DPTR
B1:5800 E0          movx    A, @DPTR
B1:5801 FE          mov     R6, A
B1:5802 A3          inc     DPTR
B1:5803 E0          movx    A, @DPTR
B1:5804 24 10       add     A, #0x10
B1:5806 FF          mov     R7, A
B1:5807 E4          clr     A
B1:5808 3E          addc    A, R6
B1:5809 FE          mov     R6, A
B1:580A E4          clr     A
B1:580B 3D          addc    A, R5
B1:580C FD          mov     R5, A
B1:580D E4          clr     A
B1:580E 3C          addc    A, R4
B1:580F FC          mov     R4, A
B1:5810 90 FB A4    mov     DPTR, #XRAM_FBA4
B1:5813 12 08 F5    lcall   B1_?C?LSTXDATA
B1:5816 90 FB AA    mov     DPTR, #XRAM_FBAA      ; Número de caracteres na TAG ID3?
B1:5819 E0          movx    A, @DPTR
B1:581A 24 F0       add     A, #0xF0 ; '­'
B1:581C F0          movx    @DPTR, A
B1:581D 90 FC 7A    mov     DPTR, #XRAM_FC7A      ; Coordenada vertical (LO)
B1:5820 E0          movx    A, @DPTR
B1:5821 24 1A       add     A, #0x1A
B1:5823 F0          movx    @DPTR, A
B1:5824 90 FC 79    mov     DPTR, #XRAM_FC79      ; Coordenada vertical (HI)
B1:5827 E0          movx    A, @DPTR
B1:5828 34 00       addc    A, #0
B1:582A F0          movx    @DPTR, A
B1:582B 90 FC 77    mov     DPTR, #XRAM_FC77      ; Coordenada horizontal (LO)
B1:582E E0          movx    A, @DPTR
B1:582F 24 0A       add     A, #0xA
B1:5831 F0          movx    @DPTR, A
B1:5832 90 FC 76    mov     DPTR, #XRAM_FC76      ; Coordenada horizontal (HI)
B1:5835 E0          movx    A, @DPTR
B1:5836 34 00       addc    A, #0
B1:5838 F0          movx    @DPTR, A
B1:5839
B1:5839             B1_5839:                      ; CODE XREF: MP3_TagDisplay+170j
B1:5839 90 FB AA    mov     DPTR, #XRAM_FBAA      ; Número de caracteres na TAG ID3?
B1:583C E0          movx    A, @DPTR
B1:583D FD          mov     R5, A
B1:583E 60 2E       jz      B1_586E
B1:5840 90 FB B3    mov     DPTR, #XRAM_FBB3
B1:5843 E0          movx    A, @DPTR
B1:5844 C3          clr     C
B1:5845 94 07       subb    A, #7
B1:5847 50 1F       jnc     B1_5868
B1:5849 ED          mov     A, R5
B1:584A C0 E0       push    ACC                   ; Accumulator
B1:584C 90 FB A4    mov     DPTR, #XRAM_FBA4
B1:584F E0          movx    A, @DPTR
B1:5850 FC          mov     R4, A
B1:5851 A3          inc     DPTR
B1:5852 E0          movx    A, @DPTR
B1:5853 FD          mov     R5, A
B1:5854 A3          inc     DPTR
B1:5855 E0          movx    A, @DPTR
B1:5856 FE          mov     R6, A
B1:5857 A3          inc     DPTR
B1:5858 E0          movx    A, @DPTR
B1:5859 FF          mov     R7, A
B1:585A 90 FB B6    mov     DPTR, #XRAM_FBB6
B1:585D 12 08 F5    lcall   B1_?C?LSTXDATA
B1:5860 D0 E0       pop     ACC                   ; Accumulator
B1:5862 FD          mov     R5, A
B1:5863 7F 0F       mov     R7, #0xF
B1:5865 12 1E AE    lcall   B1_BS_233_B3_A227
B1:5868
B1:5868             B1_5868:                      ; CODE XREF: MP3_TagDisplay+1EBj
B1:5868 90 FB B3    mov     DPTR, #XRAM_FBB3
B1:586B E0          movx    A, @DPTR
B1:586C 04          inc     A
B1:586D F0          movx    @DPTR, A
B1:586E
B1:586E             B1_586E:                      ; CODE XREF: MP3_TagDisplay+137j
B1:586E                                           ; MP3_TagDisplay+1E2j
B1:586E 90 FB A0    mov     DPTR, #XRAM_FBA0
B1:5871 E0          movx    A, @DPTR
B1:5872 F8          mov     R0, A
B1:5873 A3          inc     DPTR
B1:5874 E0          movx    A, @DPTR
B1:5875 F9          mov     R1, A
B1:5876 A3          inc     DPTR
B1:5877 E0          movx    A, @DPTR
B1:5878 FA          mov     R2, A
B1:5879 A3          inc     DPTR
B1:587A E0          movx    A, @DPTR
B1:587B FB          mov     R3, A
B1:587C 90 FB A8    mov     DPTR, #XRAM_FBA8      ; Número sequencial da TAG?
B1:587F E0          movx    A, @DPTR
B1:5880 90 2F DB    mov     DPTR, #B1_2FDB
B1:5883 93          movc    A, @A+DPTR
B1:5884 FF          mov     R7, A
B1:5885 E4          clr     A
B1:5886 FC          mov     R4, A
B1:5887 FD          mov     R5, A
B1:5888 FE          mov     R6, A
B1:5889 EB          mov     A, R3
B1:588A 2F          add     A, R7
B1:588B FF          mov     R7, A
B1:588C EE          mov     A, R6
B1:588D 3A          addc    A, R2
B1:588E FE          mov     R6, A
B1:588F ED          mov     A, R5
B1:5890 39          addc    A, R1
B1:5891 FD          mov     R5, A
B1:5892 EC          mov     A, R4
B1:5893 38          addc    A, R0
B1:5894 FC          mov     R4, A
B1:5895 90 FB A0    mov     DPTR, #XRAM_FBA0
B1:5898 12 08 F5    lcall   B1_?C?LSTXDATA
B1:589B 90 FB A8    mov     DPTR, #XRAM_FBA8      ; Número sequencial da TAG?
B1:589E E0          movx    A, @DPTR
B1:589F 04          inc     A
B1:58A0 F0          movx    @DPTR, A
B1:58A1 E0          movx    A, @DPTR
B1:58A2 C3          clr     C
B1:58A3 94 06       subb    A, #6
B1:58A5 50 03       jnc     B1_58AA
B1:58A7 02 56 F3    ljmp    B1_56F3
B1:58AA             ; ---------------------------------------------------------------------------
B1:58AA
B1:58AA             B1_58AA:                      ; CODE XREF: MP3_TagDisplay+8Fj
B1:58AA                                           ; MP3_TagDisplay+DDj ...
B1:58AA 22          ret
B1:58AA             ; End of function MP3_TagDisplay
[/size]

« Última modificação: Julho 28, 2007, 08:02:03 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 eneris

  • Novato Prolixo
  • **
  • Mensagens: 85
  • Aprovação: +2/-0
  • The Cranberries em Recife Outubro/2010 Eu Vou!
    • Ver Perfil
    • ENERIS Online :: No Need To Argue
Re: Firmware: log de descobertas
« Responder #58 Online: Julho 27, 2007, 12:12:23 pm »
Eu fiz a mudança seguindo o tutorial do Vladmir mas sempre a TAG descia pra parte de baixo da tela e overscan acabava "comendo" pois eu nao estava conseguindo fazer que o caractere ficassem mais proximo, mas graças a seu tutorial acima agora ficou perfeito.

Valeu Ryan.

PS. Como fazer modificação diretamente usando o IDA? Tem como? Eu uso aqui uma versão de teste e nao conseguir, nao sei se é por ser TRIAL ou porque ele nao faz mesmo, como por exemplo inserir novas linhas como você fez acima.
The Cranberries - em Recife Outubro/2010
Estarei la colado! Ta perto.

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Firmware: log de descobertas
« Responder #59 Online: Julho 27, 2007, 12:20:16 pm »
Não tem como modificar usando o IDA, infelizmente. Isso pouparia um trabalho danado.

As linhas modificadas acima foram redigidas manualmente por mim, para ajudar na compreensão do texto
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 #59 Online: Julho 27, 2007, 12:20:16 pm »