Autor Tópico: Como remover as tags de itálico - Firmware jmaraujo v1.3  (Lida 30484 vezes)

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

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #40 Online: Outubro 05, 2009, 06:14:26 pm »
Rictad, tenho algumas (muitas) dúvidas... Agora eu entendi o processo, mas fiquei confuso com o fato do alinhamento e o itálico compartirem a mesma eeprom. Mudar uma opção no menu não vai afetar a outra? O fato do alinhamento não ser dinâmico, vai fazer com que a escolha do itálico também não seja dinâmico? Você explicou essa parte, mas não entendi como é que fica:

Citação de: Rictad
Mas lembre-se, o valor deve ser mesclado, utilizando a operação OR, com o valor da opção de alinhamento horizontal!. Isso quer dizer que você deve modificar, no 8032, o trecho que lê a opção de alinhamento horizontal para que também leia a opção de tags. Aí você faria um OR entre os 2 valores e enviaria o resultado como se fosse o valor de alinhamento. Porém, como eu ainda não tenho certeza se a posição de memória que usei no ARM realmente corresponde ao alinhamento horizontal, deixe essa parte do OR para depois de eu realizar mais alguns testes.

Você já viu como e que funciona o patch do carregamento de legendas com nome distinto?



O menu tem tres opções: 00, 01 e 02. O patch lé o endereço da eeprom, se o byte guardado for 00 carrega primeiro a original e depois todas legendas, se for 01 carrega todas as legendas, e se for 02 carrega somente as legendas originais (mesmo nome)...

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #41 Online: Outubro 05, 2009, 08:06:52 pm »
Rictad, tenho algumas (muitas) dúvidas... Agora eu entendi o processo, mas fiquei confuso com o fato do alinhamento e o itálico compartirem a mesma eeprom. Mudar uma opção no menu não vai afetar a outra? O fato do alinhamento não ser dinâmico, vai fazer com que a escolha do itálico também não seja dinâmico?

Não é bem assim. Os endereços de EEPROM devem ser diferentes, senão uma opção irá realmente afetar a outra. Mas na hora que o endereço de EEPROM do alinhamento for carregado no 8032, você deve também carregar o endereço de EEPROM do itálico e fazer um OR entre os dois valores. O resultado do OR entre os dois valores (dos dois endereços de EEPROM) é que deve ser enviado ao ARM, no lugar de apenas o valor do alinhamento. Aí sim, no ARM, o endereço de memória, e não o de EEPROM, é compartilhado. O endereço no ARM que eu usei foi o unk_7A380 + 9 (#7A389), que provavelmente é o endereço do alinhamento horizontal.

Sim, o fato do alinhamento não ser dinâmico vai fazer com que a opção de itálico também não seja dinâmica. Mas, de repente, a gente pode mudar isso também 8).

A rotina do itálico é do mesmo estilo dessa rotina dos nomes de arquivos de legenda. Verifica as opções e toma as decisões. Só é preciso filtrar antes as opções do alinhamento para sobrar só as opções de itálico, pois estão ambas em unk_7A380 + 9. Veja o trecho:

Inibe tags ou habilita itálico na rotina principal:
Código: [Selecionar]
ROM:000755F0             sub_755F0                               ; CODE XREF: sub_E64C+A8_p
ROM:000755F0                                                     ; sub_75670+6_p
ROM:000755F0 2A 4A                       LDR     R2, =unk_7A380
ROM:000755F2
ROM:000755F2             loc_755F2                               ; CODE XREF: sub_755F0+20_j
ROM:000755F2 53 7A                       LDRB    R3, [R2,#9]      ; posição do alinhamento horizontal (unk_7A380 + 9)
ROM:000755F4 60 20                       MOVS    R0, #0x60 ; '`'
ROM:000755F6 03 40                       ANDS    R3, R0            ; filtra alinhamento
ROM:000755F8 40 2B                       CMP     R3, #0x40 ; '@'   ; verifica se opção itálico está desligada
ROM:000755FA 2E D0                       BEQ     loc_7565A  ; se sim, vai embora

No firmware 1.4 que você me mandou, com as opções de alinhamento de volta ao menu, o itálico não está funcionando corretamente. Provavelmente é devido aos valores do alinhamento horizontal. Eu terei que mudar os valores das rotinas do itálico ou terei que mudar o endereço "emprestado" do alinhamento horizontal para o alinhamento vertical. Seja como for, eu preciso ver a sua estrutura de menus, com os valores das opções e os endereços EERPOM, dos dois alinhamentos. Eu tentei localizar o seu menu no MTKRemaker, mas ele não aparece (não sei porque). Como você faz para visualizar as opções, strings e ícones do menu?  ;D

O menu do alinhamento vertical você já me passou. Ele continua o mesmo?

Código: [Selecionar]
  5. No Pic. | Vertical alignment | Set the vertical alignment
     0008 FFFF 056C 058E 0063 0000 0001 0001 FFF989 0000 - ROM:F920
    1. Top | Top | [00]
       0590 0590 0561 00 - ROM:F974
 => 2. Bottom | Bottom | [00]
       058F 058F 0561 01 - ROM:F97B

Se continua o mesmo, basta mostrar agora como é o menu do alinhamento horizontal que eu vou verificar a rotina do itálico de novo. :)

FORUM.RYAN.COM.BR

Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #41 Online: Outubro 05, 2009, 08:06:52 pm »

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #42 Online: Outubro 06, 2009, 06:56:25 am »
Jmaraujo,

Consegui fazer o itálico funcionar junto com as opções de alinhamento e consegui fazer com que as opções se tornem dinâmicas! :yahoo!:


Vamos às modificações:

Em primeiro lugar, as opções de alinhamento vertical e horizontal no firmware 1.4 estão trocadas (verifica isso lá) e bugando a legenda. Troquei os endereços no menu e tudo ficou certo.

Em segundo lugar, não sei o porquê, os valores para o alinhamento vertical, 00 e 01, não deixavam o itálico funcionar, mesmo que eu usasse o endereços do alinhamento horizontal emprestado para o itálico (não o vertical :-[). Tive que alterar para os padrões dos firmwares mediatek, que são 08 e 09. Veja como ficou os menus dos alinhamentos. Tudo que está em vermelho foi alterado:

4. No Pic. | Horizontal alignment | Set the horizontal alignment
   0008 FFFF 056D 058D 0063 0000 0002 0001 FFF9A7 0000 - ROM:F935
     1. Left | Left | [00]
     0578 0578 0561 00 - ROM:F992
  => 2. Center | Center | [00]
     0579 0579 0561 01 - ROM:F999
     3. Right | Right | [00]
     057A 057A 0561 02 - ROM:F9A0

5. No Pic. | Vertical alignment | Set the vertical alignment
   0008 FFFF 056C 058E 0062 0000 0009 0001 FFF989 0000 - ROM:F920
     1. Top | Top | [00]
     0590 0590 0561 08 - ROM:F974
  => 2. Bottom | Bottom | [00]
     058F 058F 0561 09 - ROM:F97B


Aí o itálico passou a funcionar.

Agora, vamos ao alinhamento dinâmico. Eu vi que você usou a seguinte rotina para interceptar os valores do alinhamento:

Código: [Selecionar]
B1:FF54             ; aplica alinhamentos legenda
B1:FF54
B1:FF54             B1_FF54:                                ; CODE XREF: B1_EE21+25_p
B1:FF54 7F 57                       mov     R7, #0x57 ; 'W'
B1:FF56 7E 00                       mov     R6, #0
B1:FF58 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF5B 74 28                       mov     A, #0x28 ; '('
B1:FF5D C3                          clr     C
B1:FF5E 9F                          subb    A, R7
B1:FF5F 90 FB F0                    mov     DPTR, #XRAM_FBF0
B1:FF62 F0                          movx    @DPTR, A
B1:FF63 C3                          clr     C
B1:FF64 24 82                       add     A, #0x82 ; 'é'
B1:FF66 90 FB F8                    mov     DPTR, #XRAM_FBF8
B1:FF69 F0                          movx    @DPTR, A
B1:FF6A 7F 62                       mov     R7, #0x62 ; 'b'
B1:FF6C 7E 00                       mov     R6, #0
B1:FF6E 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF71 EF                          mov     A, R7
B1:FF72 FB                          mov     R3, A
B1:FF73 7F 63                       mov     R7, #0x63 ; 'c'
B1:FF75 7E 00                       mov     R6, #0
B1:FF77 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF7A EF                          mov     A, R7
B1:FF7B 22                          ret

Pelo visto, essa rotina só é chamada 1 vez, ao iniciar um CD.

Mas a rotina que você criou para tratar as opções de cor da legenda é chamada várias vezes (possivelmente por todas as Sub_Style, secundárias e primária). Daí, foi só fazer como eu fiz no meu firmware: um salto (com bank switch) da rotina que aplica as cores para a rotina que aplica os alinhamentos. Ela era assim:

Código: [Selecionar]
B3:FAC2             ; aplica cores legenda
B3:FAC2
B3:FAC2             B3_FAC2:                                ; CODE XREF: BankSw_223_B3_519C+2CE_p
B3:FAC2 7F 4E                       mov     R7, #0x4E ; 'N'
B3:FAC4 7E 00                       mov     R6, #0
B3:FAC6 12 05 D7                    lcall   B3_BS_125_B4_E0AE
B3:FAC9 EF                          mov     A, R7
B3:FACA FB                          mov     R3, A
B3:FACB 7F 7B                       mov     R7, #0x7B ; '{'
B3:FACD 7E 00                       mov     R6, #0
B3:FACF 12 05 D7                    lcall   B3_BS_125_B4_E0AE
B3:FAD2 EF                          mov     A, R7
B3:FAD3 FA                          mov     R2, A
B3:FAD4 7F 2E                       mov     R7, #0x2E ; '.'
B3:FAD6 7E 00                       mov     R6, #0
B3:FAD8 12 05 D7                    lcall   B3_BS_125_B4_E0AE
B3:FADB EF                          mov     A, R7
B3:FADC F9                          mov     R1, A
B3:FADD 7D 00                       mov     R5, #0
B3:FADF 7F 11                       mov     R7, #0x11
B3:FAE1 90 FB A4                    mov     DPTR, #XRAM_FBA4
B3:FAE4 EA                          mov     A, R2
B3:FAE5 F0                          movx    @DPTR, A
B3:FAE6 A3                          inc     DPTR
B3:FAE7 E9                          mov     A, R1
B3:FAE8 F0                          movx    @DPTR, A
B3:FAE9 22                          ret

Ficou assim:

Citar
B3:FAC2             ; aplica cores legenda
B3:FAC2
B3:FAC2             B3_FAC2:                                ; CODE XREF: BankSw_223_B3_519C+2CE_p
B3:FAC2 90 EE 21                    mov     DPTR, #0xEE21            ; primeiro, chama rotina que aplica alinhamento
B3:FAC5 12 02 40                    lcall   B3_Bank_1

B3:FAC8 7F 4E                       mov     R7, #0x4E ; 'N'
B3:FACA 7E 00                       mov     R6, #0
B3:FACC 12 05 D7                    lcall   B3_BS_125_B4_E0AE
B3:FACF EF                          mov     A, R7
B3:FAD0 FB                          mov     R3, A
B3:FAD1 7F 7B                       mov     R7, #0x7B ; '{'
B3:FAD3 7E 00                       mov     R6, #0
B3:FAD5 12 05 D7                    lcall   B3_BS_125_B4_E0AE
B3:FAD8 EF                          mov     A, R7
B3:FAD9 FA                          mov     R2, A
B3:FADA 7F 2E                       mov     R7, #0x2E ; '.'
B3:FADC 7E 00                       mov     R6, #0
B3:FADE 12 05 D7                    lcall   B3_BS_125_B4_E0AE
B3:FAE1 EF                          mov     A, R7
B3:FAE2 F9                          mov     R1, A
B3:FAE3 7D 00                       mov     R5, #0
B3:FAE5 7F 11                       mov     R7, #0x11
B3:FAE7 90 FB A4                    mov     DPTR, #XRAM_FBA4
B3:FAEA EA                          mov     A, R2
B3:FAEB F0                          movx    @DPTR, A
B3:FAEC A3                          inc     DPTR
B3:FAED E9                          mov     A, R1
B3:FAEE F0                          movx    @DPTR, A
B3:FAEF 22                          ret

Pronto, alinhamentos dinâmicos!  8).

Agora, vou explicar como você deverá fazer com as opções de itálico, já que tenho os pontos de alteração do seu firmware:

Como dito antes, você deve criar um menu com as seguintes opções (só podem ser esses valores, pois são os esperados na rotina do itálico no ARM):

Código: [Selecionar]
"mostrar todas as tags"   --> valor #40
"esconder todas as tags"  --> valor #20
"habilitar o itálico"     --> valor #00

Você pode usar o endeço de EEPROM que quiser (que estiver disponível). Vamos considerar que você use o endereço XX. Após criar o menu, você deverá fazer a seguinte modificação na rotina que aplica o alinhamento:

Citar
B1:FF54             ; aplica alinhamentos legenda
B1:FF54
B1:FF54             B1_FF54:                                ; CODE XREF: B1_EE21+25_p
B1:FF54 7F 57                       mov     R7, #0x57 ; 'W'
B1:FF56 7E 00                       mov     R6, #0
B1:FF58 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF5B 74 28                       mov     A, #0x28 ; '('
B1:FF5D C3                          clr     C
B1:FF5E 9F                          subb    A, R7
B1:FF5F 90 FB F0                    mov     DPTR, #XRAM_FBF0
B1:FF62 F0                          movx    @DPTR, A
B1:FF63 C3                          clr     C
B1:FF64 24 82                       add     A, #0x82 ; 'é'
B1:FF66 90 FB F8                    mov     DPTR, #XRAM_FBF8
B1:FF69 F0                          movx    @DPTR, A
B1:FF6A 7F 62                       mov     R7, #0x62 ; 'b'
B1:FF6C 7E 00                       mov     R6, #0
B1:FF6E 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF71 EF                          mov     A, R7
B1:FF72 FB                          mov     R3, A
B1:FF73 7F 63                       mov     R7, #0x63 ; 'c'            ; alinhamento horizontal agora é em 63!
B1:FF75 7E 00                       mov     R6, #0
B1:FF77 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF7A EF                          mov     A, R7
B1:FF7B FA                          mov     R2, A                        ; alinhamento horizontal guardado temporariamente em R2
B1:FF7C 7F XX                       mov     R7, #0xXX ; 'c'          ; valor da nova opção de itálico, endereço XX da eeprom
B1:FF7E 7E 00                       mov     R6, #0
B1:FF80 12 05 D7                    lcall   B1_BS_125_B4_E0AE
B1:FF83 EF                          mov     A, R7
B1:FF85 4A                          orl     A, R2                       ; OR entre opção de itálico e alinhamento horizontal
B1:FF7B 22                          ret

Assim, as duas opções serão mescladas e chegarão no mesmo byte ao endereço #7A380 + 9 da RAM para o ARM. Como as rotinas que processam o alinhamento horizontal apenas consideram os bits finais, não fará diferença no alinhamento. Já as rotinas do itálico vão filtrar apenas os bits 6 e 5 para processarem a opção.

Vou enviar um email para você com o firmware 1.4 modificado e com 1 fonte com itálicos. Você precisará fazer a nova opção de menu, com os valores que falei, e a modificação acima (senão o itálico sempre ficará habilitado e as demais tags serão filtradas), além de mais algumas fontes com itálicos para ficar tudo em 100%.
« Última modificação: Outubro 06, 2009, 07:09:44 am por rictad »

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #43 Online: Outubro 06, 2009, 11:36:00 am »
Obrigadão mesmo, Rictad! ;D Vou fazer os testes agora mesmo. ;)

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #44 Online: Outubro 06, 2009, 03:21:50 pm »
Fiz um video pra mostrar o funcionamento do firmware v1.5. ;D

Subtítulos en firmware jmaraujo 1.5

Somente notei um probleminha bem menor por culpa da quebra de linhas. Quando a quebra de linhas é feita perde-se o itálico da última linha. Por exemplo se o texto for:
Código: [Selecionar]
<i>Exemplo de uma legenda comprida com
quebra de linha automática.</i>

Em vez de aparecer assim:
Exemplo de uma legenda comprida
com quebra de linha automática.


Fica assim:
Exemplo de uma legenda comprida
com quebra de linha automática.


Mas, como eu disse, é um probleminha bem menor e sem importância...

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #45 Online: Outubro 06, 2009, 03:50:55 pm »
É, possivelmente ocorre quando a linha é dividida pelo patch que corrige a quebra de linhas. Vou dar uma olhada nisso. E no teste rápido que fiz, o alinhamento horizontal parece não estar 100% (parece que às vezes muda com o itálico). Vou verificar isso também. Deve ser fácil de corrigir. EDIT: Acabei de verificar de novo e o alinhamento horizontal está certo. :) Agora falta dar uma olhada na quebra de linhas para ver como funciona e tentar manter o itálico após a quebra.
« Última modificação: Outubro 06, 2009, 06:21:41 pm por rictad »

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #46 Online: Outubro 07, 2009, 07:10:39 am »
Pronto! O problema era o mesmo que acontecia no LG DV39H. A rotina que calcula a largura da linha (SUB_CalcTextLineWidth), que faz parte da rotina responsável pelo alinhamento horizontal (centraliza), também faz uma varredura pelos caracteres do quadro de legenda (pois precisa calcular a largura da linha levando em consideração a largura dos caracteres em itálico, senão o alinhamento fica deslocado). Quando isso é feito, o itálico é acionado ou desativado conforme as tags são encontradas. Se uma tag </i> era encontrada ao final de uma linha quebrada, a rotina deixava o itálico desativado. Quando a rotina que exibe a legenda (Display_subtitle) fosse exibir a linha, exibia sem itálico, pois a tag <i> fica na linha anterior (antes da quebra), que já foi processada. Assim, foi só incluir uma rotina para fazer uma cópia do estado do itálico, que deve ser chamada no início da SUB_CalcTextLineWidth, e uma outra para restaurar o estado ao sair da SUB_CalcTextLineWidth. Dessa forma, o estado do itálico deixou de ser alterado quando se calcula a largura da linha.

Novas rotinas:

Código: [Selecionar]
ROM:00075662     Copia estado do itálico de 7A380 + 9 para 7A380 + #F
ROM:00075662 10 4B                       LDR     R3, =unk_7A380
ROM:00075664 5A 7A                       LDRB    R2, [R3,#9]
ROM:00075666 DA 73                       STRB    R2, [R3,#0xF]
ROM:00075668 07 1C                       ADDS    R7, R0, #0          ; esse trecho restante é o que estava na
ROM:0007566A 00 25                       MOVS    R5, #0              ; rotina SUB_CalcTextLineWidth e foi substituído pelo BL
ROM:0007566C 70 47                       BX      LR

Código: [Selecionar]
ROM:00075696        Restaura estado do itálico de 7A380 + #F para 7A380 + 9
ROM:00075696 03 4B                       LDR     R3, =unk_7A380
ROM:00075698 DA 7B                       LDRB    R2, [R3,#0xF]
ROM:0007569A 5A 72                       STRB    R2, [R3,#9]
ROM:0007569C 28 1C                       ADDS    R0, R5, #0       ; esse trecho restante é o que estava na
ROM:0007569E FC BC                       POP     {R2-R7}          ; rotina SUB_CalcTextLineWidth e foi substituído pelo BL
ROM:000756A0 70 47                       BX      LR

Nova posição da palavra que define o endereço das opções da legenda (as novas rotinas precisaram de espaço):

Código: [Selecionar]
ROM:000756A4 80 A3 07 00 off_756A4       DCD unk_7A380

Como a posição da palavra mudou, as instruções que dependem de sua posição tiveram que ser corrigidas:

ROM:000755F0 2C 4A                 LDR     R2, =unk_7A380
................
................
ROM:00075686 07 4A                 LDR     R2, =unk_7A380


Pontos alterados na SUB_CalcTextLineWidth para chamar as novas rotinas:

ROM:0000E38C FC B5                 PUSH    {R2-R7,LR}
ROM:0000E38E 67 F0 68 F9           BL      sub_75662
ROM:0000E392 3C 48                 LDR     R0, =unk_7A00C
...........................
...........................
...........................
ROM:0000E434 B2 D3                 BCC     loc_E39C
ROM:0000E436
ROM:0000E436          loc_E436              ; CODE XREF: sub_E38C+1E_j
ROM:0000E436                                ; sub_E38C+32_j
ROM:0000E436 67 F0 2E F9           BL      sub_75696
ROM:0000E43A 08 BC                 POP     {R3}


Eu fiz a cópia do estado do itálico no endereço 7A380 + #F do mesmo modo que no LG DV397H. Na rotina SUB_ClearMpeg4SubtitleParams vemos que os endereços de 7A38C a 7A38F são zerados:

Código: [Selecionar]
ROM:0000E328             sub_E328                                ; CODE XREF: sub_9992+1A_p
ROM:0000E328 5C 48                       LDR     R0, =unk_7A380
ROM:0000E32A FF 21                       MOVS    R1, #0xFF
ROM:0000E32C 01 72                       STRB    R1, [R0,#8]
ROM:0000E32E 00 22                       MOVS    R2, #0
ROM:0000E330 C2 60                       STR     R2, [R0,#0xC]
ROM:0000E332 02 80                       STRH    R2, [R0]

Em #E32E, R2 é zerado e todo seu conteúdo, ou seja, a palavra 00 00 00 00, é colocado a partir de 7A380 + #C (STR guarda a palavra e STRB guarda somente 1 byte). E na rotina SUB_FillMpeg4SubtitleParamsRecord vemos que esses endereços não são utilizados.

Código: [Selecionar]
ROM:0000E350             sub_E350                                ; CODE XREF: sub_AA2A+47_p
ROM:0000E350 02 78                       LDRB    R2, [R0]
ROM:0000E352 52 49                       LDR     R1, =unk_7A380
ROM:0000E354 0A 72                       STRB    R2, [R1,#8]
ROM:0000E356 83 78                       LDRB    R3, [R0,#2]
ROM:0000E358 42 78                       LDRB    R2, [R0,#1]
ROM:0000E35A 1B 02                       LSLS    R3, R3, #8
ROM:0000E35C 1A 43                       ORRS    R2, R3
ROM:0000E35E 0A 80                       STRH    R2, [R1]
ROM:0000E360 03 79                       LDRB    R3, [R0,#4]
ROM:0000E362 C2 78                       LDRB    R2, [R0,#3]
ROM:0000E364 1B 02                       LSLS    R3, R3, #8
ROM:0000E366 1A 43                       ORRS    R2, R3
ROM:0000E368 4A 80                       STRH    R2, [R1,#2]
ROM:0000E36A 83 79                       LDRB    R3, [R0,#6]
ROM:0000E36C 42 79                       LDRB    R2, [R0,#5]
ROM:0000E36E 1B 02                       LSLS    R3, R3, #8
ROM:0000E370 1A 43                       ORRS    R2, R3
ROM:0000E372 8A 80                       STRH    R2, [R1,#4]
ROM:0000E374 03 7A                       LDRB    R3, [R0,#8]
ROM:0000E376 C2 79                       LDRB    R2, [R0,#7]
ROM:0000E378 1B 02                       LSLS    R3, R3, #8
ROM:0000E37A 1A 43                       ORRS    R2, R3
ROM:0000E37C CA 80                       STRH    R2, [R1,#6]
ROM:0000E37E 42 7A                       LDRB    R2, [R0,#9]
ROM:0000E380 4A 72                       STRB    R2, [R1,#9]
ROM:0000E382 82 7A                       LDRB    R2, [R0,#0xA]
ROM:0000E384 8A 72                       STRB    R2, [R1,#0xA]
ROM:0000E386 C0 7A                       LDRB    R0, [R0,#0xB]
ROM:0000E388 C8 72                       STRB    R0, [R1,#0xB]
ROM:0000E38A 70 47                       BX      LR

Assim, achei seguro usar 7A380 + #F.

Jmaraujo, vou enviar essas modificações na versão 1.5beta2 para você testar. Acho que agora sim, é só fazer as fontes. :)

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #47 Online: Outubro 07, 2009, 09:08:39 pm »
Obrigado, rictad. ;Dfiz as mudanças recebi o email é vou testar o firmware esta noite. ;)

Um abraço.
Juan M.

Offline jmaraujo

  • Seeder
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 409
  • Aprovação: +41/-0
  • Saudações desde Rivera, Uruguay!!! ;)
    • Ver Perfil
    • Fórum DVP5100K
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #48 Online: Outubro 09, 2009, 09:57:14 am »
Ate agora está perfeito, Rictad. ;)  Não achei nenhum bug ou comportamento extranho. ;D

Offline rictad

  • Hacker Honorário
  • Colaboradores
  • Papagaio
  • *
  • Mensagens: 285
  • Aprovação: +59/-0
    • Ver Perfil
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #49 Online: Outubro 09, 2009, 05:40:48 pm »
 ;D Legal!

Na verdade, todo o trabalho inicial de ler a EEPROM, mesclar com valor do alinhamento e repassar ao ARM poderia ser evitado se eu soubesse exatamente como ler um endereço de EEPROM diretamente no ARM. Já li alguns documentos do mtk Group mas ainda não entendi. Para ler a memória, por exemplo, tem um offset, que pode ser #CC00 ou #C400 (ou outro, no caso dos players mais recentes). Mas para ler a EEPROM ainda não achei.. Na rotina dos nomes das legendas, que você passou acima, está escrito bem no começo:

Código: [Selecionar]
LDR     R3, =EEPROM_LOAD_SUBS
Olhando no código, temos:

Código: [Selecionar]
ROM:000752CA 0F 4B                       LDR     R3, =unk_376E636
Você sabe como calcular esse endereço? Não precisamos mudar isso agora, pois não trará diferenças para o usuário, mas seria interessante descobrir para outras mudanças futuras.

FORUM.RYAN.COM.BR

Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #49 Online: Outubro 09, 2009, 05:40:48 pm »