domingo, 3 de maio de 2015

MSX como um OS ou Virtual Machine

Nós que curtimos o MSX e retro computação não podemos negar que o padrão morreu mas muitas vezes pensamos em como ressuscita-lo.

Creio que a nível de HW seria muito difícil algum fabricante pensar em um conceito MSX visto que até os fabricantes de consoles de videogames da ultima geração estão usando arquiteturas parecidas com a do PC.

Em sua época de lançamento o MSX fazia concorrência aos videogames de seu período e era uma boa alternativa aos caros PCs  que nem placa de video ou monitor coloridos tinham em suas versões mais baratas. O MSX servia além de jogos, como ferramenta para fazer trabalhos escolares, da faculdade, pesquisadores, aprender programação e computação.

Então pensei, e se tivéssemos uma plataforma de software que fosse mais que um simples emulador, mas uma máquina virtual que além de compatível com o MSX original estendesse suas capacidades?

Poderíamos estender o BASIC (Eca! Ok, ou criar ou usar outra linguagem) para trabalhar facilmente com desenhos 3D e programar jogos da mesma maneira divertida que era em BASIC.

Esta MSX VM ou OS, seria instalada em um PC de forma a resgatar as caracteríssticas que faziam do MSX um computador divertido para programar além de poder se otimizada para fazer frente aos videgames de última geração.

Bom, esta lançada a ideia. Se alguém ver este artigo, por favor comente, pode ser em Inglês ou Espanhol mesmo.

Abraços,
O Editor





terça-feira, 21 de abril de 2015

Conversão de joystick de Master System / Megadrive para o MSX

Podemos encontrar ótimos artigos para conversão de joysticks padrão Master System / Megadrive para o MSX. Porém, apresento aqui também, minha experiência neste tipo de modificação.

Para esta conversão usei um joystick com 8 botões (A, B, C, X, Y, Z, START, MODE). Porém o procedimento é o mesmo para joysticks de 2 botões (A, B) ou de 3 botões (A, B, C) dada a compatibilidade destes joysticks entre o SMS e SMG.

Nota: Após a conversão o joystick irá funcionar no MSX, com os botões B (como botão 1 do MSX) e C (como botão 2 do MSX) , mas no SMS, SMD, somente o botão B irá funcionar.

Abaixo uma tabela comparando o padrão de pinagem:
Pino
MSX
SMS/SMD
Cor
1
Amarelo
2
Laranja
3
Vermelho
4
Marrom
5
+5V
+5V
Preto
6
Botão 1
A/B
Verde
7
Botão 2
Seletor
Azul
8
OUT
GND
Cinza
9
GND
Start/C
Branco


Para converter o joystick, basta abri-lo e realizar as seguintes resoldagens:
1) Solte o fio branco da placa do joystick (pino 9) e solde o no mesmo lugar do fio Cinza (pino 8).
2) Solte o fio Azul (pino 7) e solde o no lugar onde estava antes o fio Branco (pino 9)


Nota: No meu caso não foi necessário reconectar nada onde estava o fio Azul (pino 7 no SMD), que é o seletor que controla a leitora do pino 6 para os botões A/B e do pino 9 para botões Start/C. Isto se deve ao fato  de que o pino 7 da placa do joystick ficou em nível 1, fazendo com que os pinos 6 e 7 do MSX consigam ler os botões B e C respectivamente.

Nota: Também não foi necessário realocar o fio Cinza (OUT do MSX, GND no SMS/SMD) e ao soldar o fio Branco no mesmo lugar, visto que, o OUT do MSX normalmente tem valor zero vindo do MSX.

Pronto, agora é só remontar o joystick e estará funcionando com os botões B(1) e C(2) no MSX.

Abraços,
O Editor

domingo, 1 de março de 2015

Movimentação de sprites em BASIC

Quando tive meu primeiro Hotbit, nos anos 1990, tentei por muito tempo criar joguinhos em BASIC. Meu problema era que quando conseguia movimentar o sprite do jogado não conseguia movimentar o cenário, ou os sprites do jogo.

A solução é estudar o loop básico de jogos:
  1) Ler movimento dos controles
  2) Atualizar posição do jogador
  3) Atualizar posição do cenário e sprites do jogo
  4) Checar colisões
  5) Desenhar tudo

Assim, 25 anos depois consegui faze-lo!
Abaixo, temos o exemplo em BASIC do lançamento de um sprite de foguete vinha no manual do Hotbit. A diferença é que as nuvens se movimentam ao mesmo tempo que é possível mover a base do foguete e durante seu lançamento.


10 SCREEN 2,3:COLOR 1,4,1
20 DATA 0,0,0,0,3,7,15,63
30 DATA 63,127,127,63,31,1,0,0
40 DATA 0,0,0,0,192,252,255,255
50 DATA 255,255,255,255,255,255,28,0
60 DATA 0,0,0,1,15,31,255,255
70 DATA 255,255,255,255,255,255,30,0
80 DATA 0,0,0,128,224,248,248,252
90 DATA 252,248,248,240,240,224,0,0
100 DATA 0,0,0,28,126,127,255,127
110 DATA 31,15,7,3,0,0,0,0
120 DATA 0,0,0,0,96,240,248,252
130 DATA 254,254,252,252,248,0,0,0
140 DATA 0,0,0,0,0,0,3,15
150 DATA 63,255,255,127,63,31,0,0
160 DATA 0,0,0,0,0,248,252,254
170 DATA 254,252,252,252,252,248,248,0
180 DATA 0,0,0,0,0,0,0,0
190 DATA 0,0,0,0,0,0,0,0
200 DATA 3,3,7,7,7,7,7,15
210 DATA 15,15,15,31,31,31,31,31
220 DATA 0,0,0,0,0,0,0,0
230 DATA 0,0,0,0,0,0,0,0
240 DATA 255,255,255,16,40,16,0,0
250 DATA 0,0,0,0,0,0,0,0
260 DATA 255,255,255,0,1,0,0,0
270 DATA 0,0,0,0,0,0,0,0
280 DATA 240,240,240,128,64,128,0,0
290 DATA 0,0,0,0,0,0,0,0
300 DATA 8,28,28,62,62,62,127,255
310 DATA 62,62,62,62,127,255,201,128
320 DATA 0,0,0,0,0,0,0,128
330 DATA 0,0,0,0,0,128,128,128
340 DATA 8,28,28,62,62,62,62,28
350 DATA 28,20,0,0,0,0,0,0
360 DATA 0,0,0,0,0,0,0,0
370 DATA 0,0,0,0,0,0,0,0
380 FOR J=1 TO 9:A$=""
390 FOR I=1 TO 32:READ A:A$=A$+CHR$(A):NEXT I
400 SPRITE$(J)=A$:NEXT J
410 CIRCLE(88,120),16,6,-1E-04,-3.415,.5
420 PAINT(88,118),6
430 LINE(0,192)-(255,120),12,BF
440 I=120:J=144:FG=0:SP9=0
450 ONKEY GOSUB 790
460 KEY(1)ON
470 '
480 IF FG=1 THEN GOTO 520
490  IF STRIG(0)=-1 THEN FG=1
500  IF STICK(0)=3 THEN GOSUB 750
510  IF STICK(0)=7 THEN GOSUB 770
520 IF FG=1 THEN GOSUB 670
530 D=D+1
540 GOSUB 570
550 GOTO 480
560 '
570 PUT SPRITE 5,(I,J),1,5
580 PUT SPRITE 6,(I,J+32),1,6
590 PUT SPRITE 7,(I+32,J+32),1,7
600 PUT SPRITE 8,(I+32,J+K),7,8
610 PUT SPRITE1,(80+D,16),15,1
620 PUT SPRITE2,(112+D,16),15,1
630 PUT SPRITE 10,(160+D,80),15,3
640 PUT SPRITE 11,(16+D,48),15,3
650 RETURN
660 '
670 K=K-1
680 M=K+32
690 IF SP9=1 THEN GOTO 710
700 PUT SPRITE 9,(I+32,J+M),9,9:SP9=1
710 PUT SPRITE 9,(I+32,209),9,9:SP9=0
720 IF K=-177 THEN GOSUB 790
730 RETURN
740 '
750 I=I+1:IF I>200 THEN I=200
760 RETURN
770 I=I-1:IF I<0 THEN I=0
780 RETURN
790 COLOR 15,4,4:END


Abraços,
O Editor

segunda-feira, 2 de fevereiro de 2015

História do Hotbit - Part-1


                                                          O Hotbit Branco 1.1

Modelo: Hotbit MSX 1
Fabricante: Epcom/Sharp, Brasil
Anos de fabricação: 1985-1988
Nota do Editor: *****
Provavelmente baseado no:  Canon V-20

O Hotbit foi um MSX 1 lançado pela Sharp/Epcom no Brasil no de 1985 a 1988. Tenho tentado procurar mais informações sobre seu projeto na web, porém sem muitas informações. Então aqui vão algumas observações:

O design do Hotbit parece ter sido inspirado levemente no Canon V-20, notoriamente, o formato e tamanho das teclas de setas, a disposição das teclas do teclado e, o formato geral do console. Mas o Hotbit está longe de ser uma mera copia, ele tem um design próprio que até hoje parece moderno.

A construção da placa interna do Hotbit é boa, do ponto de vista de montagem, e conta com bons componentes, não sendo um projeto eletrônico perfeito, ainda acho-a melhor resolvida esteticamente que a do Expert. Muitos Hotbits estão funcionando até hoje depois de 30 anos, e as teclas não perderam o desenho das letras como no caso de algumas versões dos Experts. Porém, as teclas de função e de setas poderiam ser melhores, sua ventilação poderia ser melhor e a fonte poderia ter mais potência para acessórios, como o Expert que era muito melhor nestes quesitos. Há relatos de que a fonte original  do Hotbit esquentava muito quando transformado para versão 2.0 e alguns trocaram a fonte original por uma de PC. De qualquer modo é sempre recomendado usar um estabilizador de computador e não liga-lo direto a rede elétrica.

MSX Hotbit por dentro
                                  Placa mãe, a esquerda e centro, conversor de RF, no meio, e fonte a direita.

As versões do Hotbit foram:

  • 1985 -1.0, Branco e cinza esta nunca vi uma versão comercial, pode ter sido o protótipo apresentado em feiras. Algumas fotos em antigas revistas apresentam a tecla shift esquerda na cor branca.
  • 1985- 1.1, Branco e cinza, sem o logo MSX em relevo a cima das teclas Home, Insert e Del (dificil achar um nos sites de usados).
  • 1985 -1987, 1.1 Branco e cinza, com o logo MSX em relevo a cima das teclas Home, Insert e Del. Tenho um modelo  Branco de 1987 em versão 1.2, pode ter tido a BIOS ou até mesma a placa interna substituída por uma assistência técnica quando as placas de reposição já estavam esgotadas. Mas parece que os últimos brancos saíram de fabricas com ROM 1.2.
  • 1987,1.1 ou 1.2 Branco e cinza, série especial. Há noticias e fotos de um Hotbit branco e cinza com grafismos diferentes no gabinete e logo da EPCOM. 
  • 1987 - 1988, Preto, com o logo MSX em relevo a cima das teclas Home, Insert e Del. e com um adesivo prateado com a indicação de 64kBytes de RAM (este é o tipo de adesivo de coleção, se for retirado o micro perde o valor para colecionadores!). A tampa do slot lateral tem a inscrição slot 2 e a traseira do micro onde tem as conexões tem uma tampa plástica que foi usada para esconder a inscrição RGB que foi cancelada de ultima hora. Esta versão apresenta também um conversor de RF mais eficiente garantindo melhor imagem tanto no sinal de vídeo  quanto na saída para TV (eu pude comprovar isso comparando a imagem dos meus Hotbit brancos. Há uma história de que esta versão poderia ter sido prepara para ser um MSX2 (ver revista jogos 80 #16) porém por decisões empresarias continuou sendo um MSX1.
  • Todas versões do Hotbit, são de boa qualidade, contam com teclado com acentuação em língua portuguesa, 32k bytes de ROM, 64kbytes de RAM e 16kbytes de vídeo, 16 cores na tela, dois conectores para joystick, 2 slots (Sendo um no topo e um lateral, porta de impressora padrão Centronix, saídas de TV (canais 3 ou 4), áudio e vídeo.
  • Principais problemas ao comprar um usado (só tem usado mesmo): teclados com a barra de espaço e setas quebradas ou afundadas, devido a usuários que jogavam muito no teclado, CI-s de memória com defeito fazendo o micro resetar frequentemente, conversor de RF com defeito fazendo as letras ficarem achatadas na tela, chave do slot 1, com mal contato, fazendo o micro desligar, teclado com mal contato ou curto.
  • Quanto a comparações com seu colega de MSX o Expert da Gradiente, não posso comentar muito além do já mencionado acima., pois não o tive (por em quanto), vi somente o de amigos e sei que é uma questão de gosto, mas é tido pela comunidade como muito melhor que o Hotbit. São raros os Hotbits transformados para 2.0 ou 2.0+ devido a falta de espaço no gabinete e as limitações da fonte. Se você procura um MSX 2.0+ fique com os Experts ou importados, mas provavelmente quem vai comprar um, hoje em dia, é porque teve um dos dois na época e vai comprar o seu preferido.
MSX Hotbit HB8000 Preto Sharp
                                                           
Meu Hotbit 1.2 Preto.

Hoje, ainda é possível comprar Hotbits na internet de todas as sérias em bom estado. Eu particularmente recomendo os fabricados a partir de 1986 que tem o logo do MSX no gabinete, pois foi a versão do segundo ano e sua fabricação parecia melhorada. Porém os da seria de 1985 são mais raros de achar para vender e podem até valer mais. Lembre-se de perguntar ao vendedor se ele está completo e com a tampa do slot lateral. Quanto a cor é questão de gosto, com o preto apresentando leve melhora na qualidade do conversor de RF.

Abraços e até a próxima,
O Editor

domingo, 16 de novembro de 2014

A Origem dos Tiles em jogos 2D

Os tiles, ou ladrilhos, são pequenos quadradinhos com caracteres ou desenhos usados para montar as telas dos jogos 2D desde a geração 8 bits. Os tiles são usados até hoje para criar jogos 2D devido sua facilidade de reuso nas telas dos jogos.

OS tiles se originam do fato de no modo texto básico , SCREEN 0 ou texto avançado SCREEN 1, os caracteres (sim, as letras de texto) são desenhados em quadradinhos na memória do computador. Assim, quando se quer desenhar uma letra, o computador pega o desenho correspondente daquela área de memória e o desenha na tela quantas vezes forem necessárias.

Muitos jogos de MSX, como Zanac e outros, usam a SCREEN 1 com os desenho dos tiles definidos na memoria de padrões mais, a facilidade de sprites provida pela SCREEN1. Assim o efeito de movimento da tela é feito como os tiles sendo redesenhados uma linha para baixo para baixo.

Assim ao criar, jogos 2D a dica é desenhar a tela do jogo em um papel quadriculado, reusando o máximo de padrões de tiles repetidos para economizar memória. Lembres-se que na screen 1 podemos usar uma área visível de até 32 x 24 tiles com até 2kbytes para desenhar os tiles na tabela de padrões da VDP (TMS9918).

Infelizmente a VDP do MSX 1 , a TMS9918, não possui scroll de tela por HW, assim, para simular o efeito de movimento da tela temos que redesenhar os caracteres que serão visíveis na área tela por SW. Lembrando que a área de memória da VDP que define a posição dos tiles é de 768 bytes que vai de 6144 a 6911.

Por hoje é só pessoal,
Abraço forte,
O Editor

sexta-feira, 18 de abril de 2014

Melhor tipo de Fita Cassete para Dados

Olá Pessoal,

Recentemente, depois de muitos anos, descobri que o melhor tipo de fita cassete para dados é a Type I bias normal feita de Óxido Metal.

Não a toa o manual do gravador do Hotbit, da Sharp, o HB-2400 continha uma nota informando para usar somente fitas Type I bias normal e, evitar as de Cromo e ferro extra. Estas últimas, são boas para gravações de áudio, mas não para dados , devidos a melhor gravação em determinadas frequências.

Infelizmente, devido a pouco informação na época se pensava que era melhor usar uma fita de "melhor qualidade" do que a Type I. Um equívoco que custava muitos erros de leitura no MSX, dada a maior dificuldade do micro "escutar" uma onde de áudio não otimizada.

Após a reparação do meu HB-2400 pude constatar que a gravação e leitura de dados foi mais bem sucedida com as fitas Type I bias normal, mesmo as com mais de 20 anos de uso.

Hoje o uso do gravador é mais nostálgico do que eficiente devido a facilidade de usar notebooks e players com carga rápida, vide outro post neste blog. Mas se quiser gravar dados com um gravador cassete, fica a dica de usar a Type I. 

Abraços,
O editor

domingo, 14 de julho de 2013

Carregamento Rápido de Software no MSX via porta Cassete

Complementando o último poste, sobre usar um netbook para carregar programas via porta cassete do MSX, fiz alguns teste com carregamento rápido usando o carregador otla.

Os programas de MSX gravados em cassete usavam as velocidades de 1200 ou 2400 bauds. Essa limitação era devido a qualidade de áudio provida pelas fitas e gravadores cassete. Porém, a porta de leitura cassete do MSX e o Z80 conseguem ler o stream de áudio em velocidades superiores a essas.

Seguem se os passos e parametros que usei com sucesso para carregamento rápido em um Hotbit. Programas que demoravam 5 min agora demoram apenas alguns segundos para carregar:

1) Baixe o Otla 
2) Descompacte o Otla em uma pasta de sua preferencia
3) Execute o programa e selecione MSX na opção header
4) Clique em "add blocks" e escolha um arquivo no formato .cas ou .rom
5) Selecione o valor 4 (11025 bps) na opção sample/bit 
6) Digite o comando BLOAD ou CLOAD correspondente no MSX
7) Clique em Play no Otla.
8) O programa deve carregar com sucesso

Se a placa de som do PC e o cabo cassete do MSX forem de boa qualidade pode-se tentar velocidades mais rápidas no passo 5). Porém a velocidade 11025 bps já e quase 10x mais rápida que os 1200 bps que eram padrão das gravações cassete originais do MSX.

Até a próxima,
O Editor