domingo, 19 de fevereiro de 2017

Por dentro do Sega Game Gear

0 comentários
Sega Game Gear

E para concluir os posts (e vídeos) sobre videogames da Tectoy, vamos dar uma olhada no Game Gear. Já falei dele lá em 2009, mais especificamente sobre os problemas com os capacitores eletrolíticos. Este post seria então apenas um complemento do que já falei lá.

Primeiro segue o vídeo:


No vídeo eu não mostrei o Game Gear onde foi feita a troca dos capacitores. É o mesmo do post de 2009, mas segue a foto com maior resolução:

Sega Game Gear PCB

O VDP é o CI 315-5377 e ele vai ligado a uma memória RAM externa de 32k x 8 bits. Já o processador Z80 está dentro do CI 315-5378A que inclui também o controlador de I/Os e o do LCD. Ele usa uma memória externa de 8k x 8 bits. A placa do áudio, com saída para alto falante ou fone de ouvido é esta aqui, com um CI TBA2822:

Sega Game Gear audio PCB

E a placa da fonte, de onde saem o +5V para a parte lógica e o 34V para o LCD, com um CI MB3775:
Sega Game Gear placa da fonte

Agora as placas dos dos cartuchos. A primeira foto é do cartucho Sonic original da Sega. A segunda foto é do cartucho "genérico" Rei Leão (Lion King):

Sega Game Gear Cartridge PCB

Cartucho de Game Gear Genérico

terça-feira, 14 de fevereiro de 2017

Por dentro de um osciloscópio Engro ORC-10 ou "Quer ganhar um osciloscópio velho? Leia aqui!

2 comentários
Osciloscópio Engro ORC-10
Este osciloscópio (Engro ORC-10) já foi assunto de um post lá em 2012 e faltava um vídeo pra ele. A foto acima, do post antigo, é de como ele estava em 2012. Ele ficou na casa da minha mãe e só o trouxe pra casa quando me mudei. No apartamento onde morava não tinha lugar pra ele...

Pois então, depois desses anos lá na casa da minha mãe, ele agora está assim:

Osciloscópio Engro ORC-10
Os plugs bananas foram para na fonte de bancada que meu sobrinho montou enquanto fazia o curso técnico. Os dois knobs brancos que faltam eu nem sei o que aconteceu. Por dentro ele não foi tocado, até a gravação do vídeo abaixo:


E é isso mesmo pessoal, eu tenho muita coisa acumulada aqui que era pra um dia consertar ou fazer algo de útil, mas que não tenho tempo pra mexer. Está na hora de esvaziar um pouco o quarto de bagunça laboratório. O osciloscópio será de quem me mandar um e-mail pedindo para marcar um dia para vir pegar aqui em casa e sem me perguntar onde eu moro... ;-)

segunda-feira, 13 de fevereiro de 2017

Conversor de arquivos binários para headers em C (arquivos .h)

0 comentários
Conversor Binario para header (.h)

Algumas vezes quando preciso fazer algo mais rápido ou automatizado escrevo umas linhas de código e gero um programinha para resolver o problema. Nada muito elaborado e só para problemas pontuais. Geralmente o código é usado só uma vez e fica esquecido em alguma pasta. E acaba que preciso novamente do mesmo código anos depois e não lembro onde deixei ou, pela ação de Murphy, apaguei o programinha numa limpeza ou formatação.

Para evitar que isso aconteça vou ver se salvo estas pequenas ferramentas no Github. Assim terei uma cópia de segurança fora dos meu PC e backups, além de (quem sabe) poder ser útil para alguém. Um outro beneficio é que terei que ter mais cuidado com o código e comentários, afinal estará a vista de outras pessoas.

Para começar coloquei o programa "bintoh" que foi feito para um projetinho que estou desenvolvendo. Minha necessidade era a de converter um arquivo binário que antes era gravado em uma EPROM (.bin) em um arquivo header em C (.h), para ser incluído no código de um projeto com microcontrolador (ARM Cortex M3). Funciona por linha de comando (veja imagem acima, rodando no PowerShell), bastando informar o nome da tabela, arquivo de entrada e arquivo de saída. Ele gera também um define com o tamanho da tabela.

Antigamente eu criava a maioria destas ferramentas de software em VB6 e depois passei a usar (e ainda uso) o VB.NET 10. Mas eu tento variar de vez em quando com Python, Javascript ou o bom e velho C puro. O bintoh era pra ter sido feito em VB.Net também, mas acabei fazendo em C já que não precisa de uma UI cheia de flu-flus...

Como é uma ferramenta para uso pessoal ele tem suas limitações (e falta delas). Ele não checa as extensões dos arquivos, que só precisa existir para ser convertido. Isso acabou transformando o programa em um conversor "universal" de arquivos para headers C. Para mim isso é uma vantagem até e devo usar em breve para outra coisa aqui.

Aproveitando a oportunidade deixa eu testar aqui o formatador de código hilite.me (Vou precisar formatar outros códigos pra postar aqui, num futuro post). O código abaixo é do bintoh e até que ficou bonito:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
    Bintoh - Binary to c header file converter
    Rodrigo Feliciano - 08/02/2017
*/
#include "stdio.h"

#define MAX_FILE_SIZE   524288  /* bytes */

int main(int argc, char *argv[]) {
    FILE *infile;   /* Binary file - input */
    FILE *outfile;  /* Header file - output */
    int chrin = 0;  /* Temp char input */
    int bytecount = 0;
    int i = 0;
    
    if(argc == 4)
    {
        infile = fopen(argv[2],"rb");   /* open input file for binary read */
    
        if(infile == 0)
        {
            printf("\n\nInput file error...\n\n");    /* No file... */
        }else
        {
            fseek(infile, 0L, SEEK_END);
            bytecount = ftell(infile);      /* Get the number of bytes in the file */
            rewind(infile);
            
            if(bytecount <= MAX_FILE_SIZE)
            {
                outfile = fopen(argv[3],"w");   /* Open the output file for write */
                
                if(outfile == 0)
                {
                    printf("Output file error...");
                }else
                {
                    fprintf(outfile,"/* Bintoh - Bin to Header file converter */\n");
                    fprintf(outfile,"\n#ifndef %s_H_",argv[1]);
                    fprintf(outfile,"\n#define %s_H_\n",argv[1]);
                    fprintf(outfile,"\n#define    FTABLE_SIZE    %i",bytecount);
                
                    fprintf(outfile,"\n\nconst unsigned char %s[%i] = \n{\n",argv[1],bytecount);
                
                    while((chrin = fgetc(infile)) != EOF)
                    {
                        if(i >= 7)  /* Number of items in a row - 1 */
                        {
                            fprintf(outfile,"0x%02x,\n",chrin); /* Last item in a row */
                            i=0;
                        }else if(i == 0)
                        {
                            fprintf(outfile,"    0x%02x,",chrin);   /* first item in a row */
                            i++;
                        }else
                        {
                            fprintf(outfile,"0x%02x,",chrin);   /* item in a row */
                            i++;
                        }
                    }
                
                    fprintf(outfile,"};\n\n\n#endif /* %s_H_ */",argv[1]);
                    fclose(outfile);
                }
            }else
            {
                printf("\nInput file too big!");
                printf("\nMaximum file size: %i bytes",MAX_FILE_SIZE);
                printf("\nInput file size: %i bytes\n\n",bytecount);
            }
            fclose(infile);
        }
    }else
    {
        printf("\nCreate a C Header file from a binary file\n");
        printf("\nusage: bintoh [table_name] [input_filename] [output_filename]\n\n");
    }
    
    return 0;
}

domingo, 12 de fevereiro de 2017

Por dentro do Master System da TecToy

2 comentários
Master System TecToy

Continuando os posts sobre videogames, desta vez trago pra vocês o Master System da TecToy. Na foto acima vemos o Master System e o Master System II. O II pode confundir um pouco, pois a TecToy chamou ele de 2, mas só muda a ROM interna.

Mas vamos lá, primeiro o vídeo e depois as fotos e comentários, como sempre:



A foto da placa do videogame (PCB):

PCB do Master System TecToy

O CI grandão no centro em cima, é um Z80 e os dois CIs de baixo são as memorias ligadas a seu barramento. A RAM é uma D4168C da NEC (8k x 8) e a ROM é a que fica entre o Z80 e a RAM:
CPU do Master System TecToy

O CI 315-5216 é o controlador de IOs. Os joysticks vão ligados diretamente nele:
315-5216 Master System TecToy

O encoder RGB é o manjado MC1377P:
MC1377 na placa do Master System TecToy

E o VDP 315-5124 com duas memórias iguais a RAM do Z80. Isso dá 16k x 8 para o vídeo:
VDP 315-5124 na placa do Master System TecToy

terça-feira, 7 de fevereiro de 2017

Por dentro de um Sega Power Base (conversor de Master System para Mega Drive)

0 comentários
Aproveitando o post (e o vídeo) anterior trago pra vocês uma vista interna do adaptador de cartuchos de Master System para Mega Drive da TecToy (conhecido lá fora como Sega Power  Base). Ele não tem nada demais, sendo só um conector para cartuchos de Master System na parte de cima e uma placa com as conexões para a entrada de cartucho do Mega Drive. Por fora ele é assim:


E segue o "por dentro" em vídeo:



A vista por baixo do aparelho:

Existe uma versão dele no formato de um cartucho, que não é tão estilosa mas é mais prática. E também existe a versão feita em casa. Existe um tópico clássico sobre como montar um (com o esquema) lá no AtariAge. Não funciona com todos os jogos, mas já quebra um galho. A diferença para estes jogos parece ser o problema de o Mega Drive não ter um ROM de inicialização, como o Master System. No adaptador original isso é contornado com uma CK2605 (PAL?  GAL?) ali no canto da placa:
O código para este CI e mais informações estão disponíveis lá no SMSPower.
Related Posts Plugin for WordPress, Blogger...