Autor Tópico: Como remover as tags de itálico - Firmware jmaraujo v1.3  (Lida 30759 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 #50 Online: Outubro 09, 2009, 07:06:05 pm »
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.
Claro, era a parte que achei mais complicada. Por isso tinha sugerido escrever direto na eeprom.

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.
Sei sim; foi um método que descobri por acaso, he-he! ;D

Aquela parte no começo do patch das legendas fui eu que mudei; se olhar o documento do patch do "Load org. then all" do Hej456 (ou mesmo o da sincronia do audio) você vai ver que ele usa endereços da Shared Memory. Mas eu estava tendo problemas para achar endereços de shared memory livres. Cada vez que eu tentava fazer um memory dump com o meu cabo USB o meu computador travava e eu tinha que fazer um reset. Ficava impossível.

Daí peguei a ideia de um post do grupo MT13x9 do Y! e sem muitas esperanças tentei escrever direto na EEPROM, e para a minha surpresa... deu certo!

Você tem de calcular deste jeito:
Shared Memory + Offset + Endereço EEPROM a usar

No meu player fica assim:
0376CC00 + 19E3 + EEPROM

No caso do carregamento das legendas, a EEPROM usada é a 53:
0376CC00 + 19E3 + 53 = 0376E636, daí que usei R3, =unk_376E636

O offset é achado na rotina PREF_GetChar (bEepromReadByte). No meu player o offset 0x19E3 esta ali:

Citar
ROM:E0AE             ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
ROM:E0AE
ROM:E0AE             ; PREF_GetChar
ROM:E0AE
ROM:E0AE             bEepromReadByte:
ROM:E0AE CD                    xch   A, R5                   ; Read Shared memory
ROM:E0AF EF                    mov   A, R7
ROM:E0B0 CD                    xch   A, R5
ROM:E0B1 CC                    xch   A, R4
ROM:E0B2 EE                    mov   A, R6
ROM:E0B3 CC                    xch   A, R4
ROM:E0B4 BC FF 06              cjne  R4, #0xFF, ROM_E0BD
ROM:E0B4
ROM:E0B7 BD FF 03              cjne  R5, #0xFF, ROM_E0BD
ROM:E0B7
ROM:E0BA 7F 00                 mov   R7, #0
ROM:E0BC 22                    ret
ROM:E0BC
ROM:E0BD             ; ---------------------------------------------------------------------------
ROM:E0BD
ROM:E0BD             ROM_E0BD:
ROM:E0BD C3                    clr   C
ROM:E0BE ED                    mov   A, R5
ROM:E0BF 94 CC                 subb  A, #0xCC ; '¦'
ROM:E0C1 EC                    mov   A, R4
ROM:E0C2 94 00                 subb  A, #0
ROM:E0C4 40 09                 jc    ROM_E0CF
ROM:E0C4
ROM:E0C6 90 FC 03              mov   DPTR, #0xFC03
ROM:E0C9 74 24                 mov   A, #0x24 ; '$'
ROM:E0CB F0                    movx  @DPTR, A
ROM:E0CC 7F 00                 mov   R7, #0
ROM:E0CE 22                    ret
ROM:E0CE
ROM:E0CF             ; ---------------------------------------------------------------------------
ROM:E0CF
ROM:E0CF             ROM_E0CF:
ROM:E0CF ED                    mov   A, R5
ROM:E0D0 24 E3                 add   A, #0xE3 ; 'Ò'
ROM:E0D2 FF                    mov   R7, A
ROM:E0D3 EC                    mov   A, R4
ROM:E0D4 34 19                 addc  A, #0x19
ROM:E0D6 FE                    mov   R6, A
ROM:E0D7 12 04 7B              lcall bReadSInfo              ; Arm_GetChar
ROM:E0D7
ROM:E0DA 22                    ret
ROM:E0DA
ROM:E0DA             ; End of function bEepromReadByte

Espero que sirva de ajuda. ;)

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 #51 Online: Outubro 09, 2009, 11:28:13 pm »
Espero que sirva de ajuda. ;)

Mas é claro!! Foi uma ajuda e tanto (uma descoberta). Obrigado!

O offset é achado na rotina PREF_GetChar (bEepromReadByte). No meu player o offset 0x19E3 esta ali:

Bem observado. Já tinha notado que a rotina PREF_GetChar chama a rotina Arm_GetChar (assim como a PREF_SetChar usa a Arm_PutChar). Mas nunca tinha pensado sobre a importância dessa relação. Parabéns!

Isso quer dizer que o hardware é desenhado para que a EEPROM funcione como uma página de endereços da RAM compartilhada. Com esse tipo de paginação, o código não faz distinção entre os dispositivos físicos reais de armazenamento. Para o programa, é como se tudo fosse a RAM.
« Última modificação: Outubro 10, 2009, 01:38:07 am por rictad »

FORUM.RYAN.COM.BR

Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #51 Online: Outubro 09, 2009, 11:28:13 pm »

Offline Jefferson

  • Zelador
  • Hero Member
  • *****
  • Mensagens: 1854
  • Aprovação: +0/-0
    • Ver Perfil
    • http://ryan.com.br
Re: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #52 Online: Outubro 11, 2009, 03:24:40 pm »
Espero que sirva de ajuda. ;)

Mas é claro!! Foi uma ajuda e tanto (uma descoberta). Obrigado!

Concordo. Eu estava há muito tempo querendo saber como se chegava a esse offset da EEPROM na Shared Memory.
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: Como remover as tags de itálico - Firmware jmaraujo v1.3
« Responder #52 Online: Outubro 11, 2009, 03:24:40 pm »