Para mudar Address3 acho que é preciso ajustar os endereços em INI_ARM, e INI_MoveArmCode.
O jeito implícito típico do Assembly, complicou um pouco as coisas para mim... Mas já tinha consciência que isso não é fácil mesmo, tem que por a cabeça para funcionar... Todo caso, sua sugestão foi super útil e foi a partir dela que resolvi a Primeira parte da charada do Address3.
Recomendo que faça uma busca por "risc replacement" no grupo MT13x9.
Achei, obrigado (encontrei fórum do hej456)!
Link normal
http://www.hej456.com/forum/viewtopic.php?t=222&sid=0f9ee97d23d5a436d89d70f4b7b39de4Link - Versão para impressão:
http://www.hej456.com/forum/viewtopic_print.php?t=222&start=0&sid=8472513b8e6dc07dd05c29682a594291A segunda parte da charada deve ser resolvida a partir deste mesmo link acima (acho que foi daqui que saiu sua recomendação)...
Você pode comparar os firmwares B7 e B8 do Ferguson D780. São exatamente iguais. A única diferença foi que em um deles o NewAge usou um RISC diferente e fez um patch (não sei o que faz o patch, mas é para o RISC). Você tem que mudar os bytes diferentes e copiar o patch que o NewAge adicionou.
Vou analisar isso na semana que vem... A parte boa - ou ruim - é que isso deve ser a última coisa que preciso descobrir para aplicar o RISC Replacement!!! Primeira parte da charada - ResolvidoSegue desabafo e a solução:
Se a rotina INI_MoveArmCode estivesse escrita assim...
B0:768F 75 43 00 mov RAM_43, #0 ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7692 75 42 00 mov RAM_42, #0 ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7695 75 41 00 mov RAM_41, #0x77 ; 'w' ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7698 75 40 00 mov RAM_40, #0 ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:769B 7E 00 mov R6, #0 ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:769C 12 F3 20 lcall B0_F320 ; RISC Replacement -> ADDRESS_3 -> 0x03770000... em vez de...
B0:768F E4 clr A ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7690 F5 43 mov RAM_43, A ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7692 F5 42 mov RAM_42, A ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7694 75 41 77 mov RAM_41, #0x77 ; 'w' ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7697 F5 40 mov RAM_40, A ; RISC Replacement -> ADDRESS_3 -> 0x03770000
B0:7699 7F 60 mov R7, #0x60 ; '`'
B0:769B FE mov R6, A
B0:769C 12 F3 20 lcall B0_F320... teria resolvido isso bem antes!
Só após ler este post de alguém com o problema parecido com o meu (no fórum hej456), que cheguei nesta conclusão.
Então, se usar o candidato "a", tenho que alterar os opcodes de INI_MoveArmCode para
B0:768F 75 43 00 mov RAM_43, #0
B0:7692 75 42 00 mov RAM_42, #0xF0
B0:7695 75 41 00 mov RAM_41, #0x76
B0:7698 75 40 00 mov RAM_40, #0
B0:769B 7E 00 mov R6, #0Se usar o candidato "b", tenho que alterar os opcodes de INI_MoveArmCode para
B0:768F 75 43 00 mov RAM_43, #0
B0:7692 75 42 00 mov RAM_42, #0xD0
B0:7695 75 41 00 mov RAM_41, #0x76
B0:7698 75 40 00 mov RAM_40, #0
B0:769B 7E 00 mov R6, #0 Note que tenho que alterar TODOS estes bytes, devido a forma implícia com que estava escrito antes (zerava o acumulador e atrbuía o mesmo zero para RAM_43, RAM_42, RAM_40 e até para R6)!
Não sei se no seu firmware é distinto
Para o meu azar, é distinto
Constatei que o script "MT1389_Misc.idc" encontra automaticamente as seguintes rotinas por aparelho:
- Philips DVP5100 -> ARM_GetChar, ARM_PutChar, ARM_Unk1, ARM_Unk2, ARM_Unk3, ARM_Unk5, ARM_Unk6 e ARM_CDTEXT
- Philips DVP5965K/55 -> ARM_Unk1, ARM_Unk2 e ARM_CDTEXT.
Para encontrar no Philips DVP5965K/55 as rotinas ARM_GetChar e ARM_PutChar só alterando um pouco a string de pesquisa informada pelo Ryan/você no log de Descobertas;
já ARM_Unk3, ARM_Unk5 e ARM_Unk6 não encontrei. Mas ao que tudo indica, as rotinas B0:E168, B0:E776 e B0:E7CB sejam algo parecido com elas.
.
, mas até onde eu sei ArmUnk1 e ArmUnk2 não corresponden com Address1 e Address 2...
A relação entre estes rotinas ARM "desconhecidas" (Arm_Unk...) e o número do endereçamento (Adress...) só será igual em firmware que correspondam a todos
os padrões de busca relacionados no "MT1389_Misc.idc"; este procura e quando os encontra rotula rotinas e insere comentários nas mesmas.
Estes comentários dão a entender que uma Rotina ARM_UnkX deveria endereçar o AddressY, mas como foram lançados firmwares depois deste script,
então o mesmo pode estar desatualizado (o "MT1389_Misc.idc" que possuo é datado de 28.10.2006). É a melhor conclusão que cheguei.
.
Posso estar enganado, mas acho que é assim:
ArmUnk1 -> CD_Text
ArmUnk2 -> Address 2
ArmUnk3 -> Address 1
ArmUnk5 -> Address 1
ArmUnk6 -> Address 2
INI_ARM -> Address 3
INI_MoveArmCode -> Address 3
São dois rotinas para cada endereço (exceto CD_Text).
A conclusão que cheguei
, é que no Philips DVP5965K/55 a correspondência é:
ArmUnk1 -> Address 1
B0:E168 -> Address 1
B0:E776 -> Address 1
ArmUnk2 -> Address 2
B0:E7CB -> Address 2
Arm_GetChar -> Shared Memory
Arm_PutChar -> Shared Memory
Arm_CDTEXT -> CD_Text
INI_ARM -> Address 3 (Segunda parte da charada - TRABALHO EM ANDAMENTO!)
INI_MoveArmCode -> Address 3 (Primeira parte da charada - Resolvido!)
Relação Atualizada de Endereços, Rotinas, Bloco e End.8032 com de/para, Seqüência de busca de bytes e tudo mais... ADDRESS_1 = 0x0376C400
**ADDRESS_2 = 0x0376C800
**ADDRESS_2 = 0x0376C700
SHARED MEMORY = 0x0376CC00
*CDTEXT BUFFER = 0x0376EC00
*ADDRESS_3 = 0x03770000
ArmAddressInfo Rotina relacionada Bloco e End. De P/"a" P/"b" Seqüência de busca de bytes
-------------- ------------------ ------------ -- ----- ----- ---------------------------
ADDRESS_1 -> 0x0376C400 Arm_Unk1 B0:C3C0 C4 B4 94 "F5 ? EE 34 ? F5 ? E4 34 ? F5 ? E4 33 F5"
ADDRESS_1 -> 0x0376C400 Script IDA não atribui nome B0:E168 C4 B4 94 "F5 ? EE 34 ? F5 ? E4 34 ? F5 ? E4 33 F5"
ADDRESS_1 -> 0x0376C400 Script IDA não atribui nome B0:E776 C4 B4 94 "F5 ? EE 34 ? F5 ? E4 34 ? F5 ? E4 33 F5"
**ADDRESS_2 -> 0x0376C700 Arm_Unk2 B0:C47A C7 B7 97 "F5 ? EE 34 ? F5 ? E4 34 ? F5 ? E4 33 F5"
**ADDRESS_2 -> 0x0376C700 Script IDA não atribui nome B0:E7CB C7 B7 97 "F5 ? EE 34 ? F5 ? E4 34 ? F5 ? E4 33 F5"
SHARED MEMORY -> 0x0376CC00 Arm_GetChar B0:E8DD CC BC 9C "E5 ? 24 ? FD 7F ? 7E"
SHARED MEMORY -> 0x0376CC00 Arm_PutChar B0:EC13 CC BC 9C "E5 ? 24 ? FD 7F ? 7E"
*CDTEXT BUFFER -> 0x0376EC00 Arm_CDTEXT B0:D1BF EC DC BC "F5 ? EE 34 ? F5 ? E4 34 ? F5 ? E4 33 F5"
**ADDRESS_3 -> 0x03770000 INI_MoveArmCode Vide "Primeira parte da charada" "E4 F5 ? F5 ? 75 ? ? F5 ? 7F 60 FE 12 F3 20"
**ADDRESS_3 -> 0x03770000 INI_ARM (A CONFIRMAR) TRABALHO EM ANDAMENTO - TRABALHO EM ANDAMENTO - TRABALHO EM ANDAMENTO