Mudanças entre as edições de "Pioneer CDJ-200"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
m
 
(8 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
  +
== Fontes de Informacoes ==
*[http://forums.pioneerdj.com/entries/21224117--SOLVED-Firmware-update-CDJ-200 Firmware Update]
 
 
*[http://www.manualslib.com/download/699716/Pioneer-Cdj-200.html Service Manual]
 
*[http://www.manualslib.com/download/699716/Pioneer-Cdj-200.html Service Manual]
*[http://www.pioneer-latin.com/downloads/firmware_27_CDJ-200_RLTXJ.zip Latest firmware]
+
*[https://web.archive.org/web/20170209183610/https://pioneer-latin.com/downloads/firmware_27_CDJ-200_RLTXJ.zip Latest firmware]
  +
*[https://www.nxp.com/docs/en/reference-manual/M68000PRM.pdf MOTOROLA M68000 FAMILY Programmer’s Reference Manual] (Includes CPU32 Instructions)
  +
*[https://www.rockbox.org/wiki/ColdFire Documentacao sobre CPU ColdFire] (variante do m68k)
  +
*[https://www.nxp.com/docs/en/reference-manual/MCF5249UM.pdf MCF5249 User's Manual] Contem documentacao dos registradores de config de hardware
   
 
==Ideias==
 
==Ideias==
Linha 7: Linha 10:
 
*Alterar strings no firmware
 
*Alterar strings no firmware
 
*Desassemblar firmware
 
*Desassemblar firmware
  +
  +
== Emulacão no MAME ==
  +
=== Extracao do firmware ===
  +
* Download do update disponível na [https://web.archive.org/web/20170209183610/https://pioneer-latin.com/downloads/firmware_27_CDJ-200_RLTXJ.zip Wayback Machine] do Internet Archive.
  +
* Extrair o ZIP
  +
* Executar o CDJ_200.EXE no wine
  +
* Apesar de mostrar uma janela meio estranha sem texto nenhum e uns pontos de interrogacao, pressionar OK fecha o programa e temos como resultado um arquivo CDJ_200.HEX em formato Intel iHex.
  +
* Usando '''objcopy --input-target=ihex --output-target=binary CDJ_200.HEX cdj200.bin''' temos como resultado um arquivo binario do firmware que é supostamente identico ao conteúdo da memória flash do aparelho. É esse arquivo que usamos para a emulacao no MAME.
  +
* '''sha1sum:''' d3534c43d5faa0891827393bb85e7c56c74c23ad
  +
* '''crc32:''' 9db83be7
  +
  +
=== Rascunho de driver de emulacao ===
  +
  +
* Branch com versao preliminar de um driver pro MAME: https://github.com/felipesanches/mame/tree/cdj200
  +
* O código do driver fica no arquivo '''src/mame/drivers/cdj200.cpp'''
  +
  +
=== Como compilar ===
  +
  +
* '''git clone https://github.com/felipesanches/mame.git'''
  +
* '''cd mame'''
  +
* '''git checkout cdj200'''
  +
* Salve em um shell script '''build_cdj200.sh''' o seguinte comando: <pre>QT_SELECT=5 make SUBTARGET=pioneer_ SOURCES=src/mame/drivers/cdj200.cpp REGENIE=1</pre>
  +
* Execute '''sh build_cdj200.sh'''
  +
  +
=== Como executar ===
  +
  +
* coloque o firmware em '''~/ROM_DUMPS/cdj200/cdj200.bin'''
  +
* execute o comando <pre>./pioneer_64 -rp ~/ROM_DUMPS -window -debug cdj200</pre>
  +
* isso abrirá o debugger e mostrará a primeira instrucao a ser executada durante o boot.
  +
* para executar passo-a-passo, vá pressionando F11
  +
* se quiser soltar a emulacao pra valer, pressione F5 (entretanto, nada está emulado corretamente ainda por enquanto)
   
 
[[Categoria:Projetos]]
 
[[Categoria:Projetos]]

Edição atual tal como às 02h50min de 17 de setembro de 2020

Fontes de Informacoes

Ideias

  • Emular
  • Alterar strings no firmware
  • Desassemblar firmware

Emulacão no MAME

Extracao do firmware

  • Download do update disponível na Wayback Machine do Internet Archive.
  • Extrair o ZIP
  • Executar o CDJ_200.EXE no wine
  • Apesar de mostrar uma janela meio estranha sem texto nenhum e uns pontos de interrogacao, pressionar OK fecha o programa e temos como resultado um arquivo CDJ_200.HEX em formato Intel iHex.
  • Usando objcopy --input-target=ihex --output-target=binary CDJ_200.HEX cdj200.bin temos como resultado um arquivo binario do firmware que é supostamente identico ao conteúdo da memória flash do aparelho. É esse arquivo que usamos para a emulacao no MAME.
  • sha1sum: d3534c43d5faa0891827393bb85e7c56c74c23ad
  • crc32: 9db83be7

Rascunho de driver de emulacao

Como compilar

  • git clone https://github.com/felipesanches/mame.git
  • cd mame
  • git checkout cdj200
  • Salve em um shell script build_cdj200.sh o seguinte comando:
    QT_SELECT=5 make SUBTARGET=pioneer_ SOURCES=src/mame/drivers/cdj200.cpp REGENIE=1
  • Execute sh build_cdj200.sh

Como executar

  • coloque o firmware em ~/ROM_DUMPS/cdj200/cdj200.bin
  • execute o comando
    ./pioneer_64 -rp ~/ROM_DUMPS -window -debug cdj200
  • isso abrirá o debugger e mostrará a primeira instrucao a ser executada durante o boot.
  • para executar passo-a-passo, vá pressionando F11
  • se quiser soltar a emulacao pra valer, pressione F5 (entretanto, nada está emulado corretamente ainda por enquanto)