Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Oitavo ano › Emulação do Technics KN5000
Durante o ano, Felipe "Juca" Sanches avançou o driver do teclado Technics KN5000 no MAME. Patches na ROM fizeram a sequência de boot avançar. Um dump, ainda incompleto, da ROM de boot da subCPU foi obtido pela porta serial. A variante TMP94C241 do TLCS-900 foi aceita; em seguida, Felipe começou a implementar o micro DMA, abriu um PR de rascunho da porta serial e teve aceito o barramento de expansão com a placa HD-AE5000. Também se discutiram compiladores para a CPU do teclado.
Oitavo ano: novembro de 2024 a outubro de 2025
Patches na program ROM enganaram o self-test do painel e forçaram a exibição de telas internas pelo ID, e dezenas delas foram registradas. Depois, o script de patching do repositório kn5000_homebrew foi refatorado. Felipe disse que a VM do Another World rodando no KN5000 emulado já era quase realidade, ainda "extremamente bugada".
Felipe "Juca" Sanches avançou a sequência de boot do emulador do KN5000 no MAME com patches na program ROM. Um deles engana o self-test dos LEDs e botões do painel e elimina o erro de comunicação com os MCUs do painel. Outro força telas internas pelo ID gravado no endereço FB7863. Ele registrou dezenas de telas: demonstrações, equalizador, testes de drive de disquete, de LCD e de varredura de teclas. O objetivo declarado é entender o boot para dispensar esses hacks no emulador.
Felipe "Juca" Sanches comentou seus projetos recorrentes e disse que a VM do Another World rodando no KN5000 emulado no MAME já é quase realidade, ainda "extremamente bugada". Perguntado por Shideravan, explicou que o teclado é um computador com controlador VGA.
Felipe "Juca" Sanches refatorou o script de patching das ROMs do Technics KN5000 no repositório kn5000_homebrew.
Felipe trocou um plano complexo de dump pela ideia de fazer a subCPU enviar sua mask ROM pela porta serial do teclado. Documentou o disassembly do payload e, em 20/01, obteve um dump que parecia bom. Nas sessões no Calango Hacker Clube, trabalhou nos handlers de interrupção da serial para que o payload recebesse comandos e fizesse dumps da bootrom.
Felipe "Juca" Sanches trocou um plano complexo de dump por uma ideia mais direta: fazer a subCPU enviar sua mask ROM pela porta RS-422 "computer interface" do teclado. Para isso, encomendou um conversor e conectores. Constatou que a carga do payload e a comunicação entre as CPUs dependem do micro DMA, ainda não emulado no core TLCS-900 do MAME. Documentou o disassembly do payload da subCPU e, em 20/01, obteve um dump que parecia bom.
Felipe "Juca" Sanches se reuniu no Calango Hacker Clube, em Brasília, para continuar o trabalho de emulação no MAME. Iniciou o rebase do PR do KN5000 e passou a resolver os conflitos. Numa sessão, trabalhou no patch dos handlers de interrupção TX/RX da serial #1 da subCPU, para que o payload receba comandos do laptop e faça dumps da bootrom. Em seguida compartilhou o link do PR #13386.
Felipe dividiu o código do KN5000 em PRs menores, e o da variante TMP94C241, implementada a partir do datasheet, foi aceito após várias revisões. Depois ele começou a implementar o micro DMA, que deu os primeiros sinais de funcionamento, e passou a unificá-lo com o da variante do NeoGeo Pocket. Também abriu um PR de rascunho com a porta serial usada pelo painel e pelo MIDI.
Felipe "Juca" Sanches relatou a dificuldade de fazer o PR do KN5000 ser aceito no MAME e passou a dividir o código em PRs menores. O PR de melhorias no layout interno foi aceito, e ele apontou o da variante TMP94C241 como o mais importante.
Após várias revisões e rebases, o PR com a variante TMP94C241 do TLCS-900, implementada a partir do datasheet, foi aceito no MAME. Com isso, o driver do KN5000 avança mais no boot. Felipe "Juca" Sanches explicou que ainda tem commits pendentes, entre eles a declaração da ROM da subCPU. O dump, ainda incompleto, foi obtido com um patch no payload que envia os dados pela serial da própria subCPU.
Felipe "Juca" Sanches começou a implementar o micro DMA no core TMP94C241, que deu os primeiros sinais de funcionamento. Passou então a unificá-lo com a implementação existente da variante usada no NeoGeo Pocket.
Felipe abre um PR de rascunho com a implementação da porta serial do TMP94C241, usada pelo painel de controle e pelo MIDI do Technics KN5000.
Felipe escaneou o guia de instalação da HD-AE5000, placa opcional de disco rígido para o KN5000, e encontrou um desenho do teclado num CD-ROM de 1997. O PR #14068, com o barramento de expansão e a placa, foi aceito em 4 de setembro.
Felipe "Juca" Sanches escaneou e compartilhou o guia de instalação da HD-AE5000, placa opcional de disco rígido de terceiros para o Technics KN5000. Informou que tem mais três ou quatro documentos sobre o tema para escanear.
Felipe "Juca" Sanches encontrou um desenho do Technics KN5000 num CD-ROM de 1997 do Internet Archive, acessível pelo discmaster.
Felipe abre o PR #14068, que adiciona ao MAME o barramento de expansão do Technics KN5000 e a placa opcional HD-AE5000. O PR é aceito em 4 de setembro.
Felipe compilou o LLVM pela primeira vez e disse que o próximo passo seria tentar escrever um backend para o TLCS-900. Mais tarde perguntou se seria mais simples portar o compilador C do RetrOS-32, e L. lembrou que o SDCC parece suportar o TLCS-90.
Felipe "Juca" Sanches compilou o LLVM pela primeira vez, com os backends x86 e M68k, e disse que o próximo passo seria tentar escrever um backend para a CPU TLCS-900 do KN5000. Encontrou instruções 68000 que o llvm-objdump marcava como unknown, mas que o debugger do MAME decodificava, e disse ter identificado a causa. L. recomendou usar Ninja em vez de make.
A partir do RetrOS-32, compartilhado por Pedro, Felipe pergunta se seria mais fácil portar o compilador C desse sistema para TLCS-900 e rodar um SO no Technics KN5000 do que portar o LLVM ou o GCC. L. lembra que o SDCC parece já suportar o TLCS-90 (não o 900), como possível ponto de partida.