sábado, 4 de abril de 2020

BASIC 10-Liners Contest 2020





       
      
             Mantendo como premissa que o mais importante é competir (principalmente quando você não vai tão bem quanto gostaria rs), mostro aqui os resultados do "BASIC 10-Liners Contest 2020". Se você não faz ideia ou nunca ouviu falar sobre este concurso, recomendo a leitura deste post aqui.

     Este ano houveram alguns recordes. Um deles foi do MSX. Nestes 10 anos de concurso nunca ocorreram tantas entradas para o nosso querido micro, num total de 34! Nada menos que 31 a mais que o ano passado! Como explicar um salto desses? Não tenho certeza, mas acredito que não houve uma divulgação adequada do evento anterior e muitos dos MSXzeiros nem ficaram sabendo. Sem dúvidas este ano os meios especializados capricharam mais e assim houve uma maior adesão. 

       Aliás, falando em adesões, a quantidade de participações neste ano foi também algo incrível: um total de 174 entradas! Com certeza uma marca também inédita. 

     E houve mais um recorde, mas este foi de cunho pessoal. Consegui enviar um programa pra cada uma das três categorias. Aproveito a deixa pra mostrar-lhes meus 10-Liners deste ano.


   Para categoria  "PUR-80", enviei o "BOWLING 80".  Um boliche bem simples, onde a "bola" não derruba os "pinos", mas os faz desaparecer assim que encosta neles. É possível "sumir" com todos os pinos com apenas 6 arremessos, mas isso é bem difícil de conseguir, será que você consegue? Ao final do post há o link pra jogá-lo online. 



"Bowling", na categoria PUR-80.


                                                                          
    Na categoria "PUR-120":   "Maze Run 2020", uma corrida no labirinto para dois jogadores. O objetivo é atravessar o labirinto e chegar na parede da sua própria cor, no lado oposto da tela. Quem chegar primeiro ganha o ponto. Evite encostar nas paredes do labirinto ou será obrigado a voltar para o começo! 



 "Maze Run 2020", categoria PUR-120


    Uma curiosidade sobre esse jogo: a cada fase é gerado (randomicamente) um novo labirinto, nunca se repetindo ao longo do jogo.  Mas sempre prevalece uma mesma sequência, isto é, se você reiniciar o jogo verá os mesmos labirintos sendo gerados em uma única ordem. Um bom exemplo de pseudoaleatoriedade


  E finalmente minha terceira entrada: "TENacious Maze", na categoria "EXTREM-256". Este é uma variação do "Maze Run", porém utilizando a SCREEN 3 (tela gráfica de menor resolução) e com uma maior liberdade de movimentos. Ficou também mais rápido e na minha opinião, mais divertido. Mas acabou obtendo um resultado inferior no concurso. 



"TENacious Maze Race", na EXTREM-256



   Segue a tabela com os resultado:


     
Reconheço que ainda tenho muito o que aprender e melhorar na arte dos 10-Liners!
  
    
     Pra finalizar gostaria também de mencionar "o cara" que está por trás da realização e organização anual do concurso: Gunnar Kanold.  Só o conheço através dos e-mails que trocamos, mas pude notar  que além de muito atencioso, paciente e bem-humorado, também possui muita boa vontade. E esta é sem dúvidas uma qualidade mais que necessária pra organizar tal evento.  Por isso o Gunnar merece nossos parabéns e nosso muito obrigado por organizar este evento tão divertido e interessante. Esperamos para os próximos anos, que o concurso continue acumulando êxitos iguais ou ainda superiores ao desta edição!
  
   Segue o link onde você encontra pra baixar códigos, manuais e as DSKs (imagens de disquetes) dos jogos:

     https://github.com/rodrivas78/MSX/tree/master/BASIC_10_Liners

E aqui os link para poder jogá-los online agora mesmo (clique sobre o nome do jogo):


  •    Bowling 80 (utilize as setas do teclado para controlar a bola).
  •    Maze Run 2020  (para dois jogadores: um joga no teclado outro no joystick).
  •    TENacious Maze Race  (para dois jogadores, idem ao anteior).



  Todos os 10-Liners para MSX, deste e dos anos anteriores,  também estão disponíveis neste arquivo no site File-Hunter: 

    https://homebrew.file-hunter.com/index.php?id=basic10linercontest
    

 Aqui o link para o site do concurso com todas as entradas deste ano:

https://gkanold.wixsite.com/homeputerium


        Até a próxima 😊




segunda-feira, 15 de julho de 2019

Realce de sintaxe no BASIC MSX / Syntax highlighting on MSX-BASIC




            Este aqui é um pequeno truque que descobri para gerar um "pseudo" realce de sintaxe na SCREEN 1 (modo de texto) do MSX. 


        O resultado fica como visto abaixo:


O código para gerar esse efeito é exatamente o da imagem.

       Para modificar a cor basta alterar o valor após a vírgula:







Alguns valores alteram também a cor de fundo:




       Já deu pra ver que o "pulo do gato" está nesses "VPOKEs", que alteram apenas a cor das letras maiúsculas, deixando o restante (números e símbolos) em branco (cor padrão). Acredito que agora ficou claro porque chamei de "falso" realce de sintaxe. Apesar disso, pode-se dizer que tal macete não é de todo irrelevante (!), pois de fato melhora a legibilidade do código. 


      No meu caso, achei particularmente útil no momento em que achatava meu "ten liner". Veja abaixo como pode realmente facilita um pouco a vida do espremedor de código programador:

     


Trecho do meu "10 Liner"  ("Ballistic Challenge").


Agora o mesmo trecho porém sem o realce:

É mais fácil encontrar genro com a foto da sogra na carteira do que bugs nesse código! 

         
  E mais outro fragmento, com outra cor:




           Agora mais alguns exemplos com códigos mais "normais" (não comprimidos):






       
         É possível adicionar outra cor no lugar do branco, para isso basta chamar o comando COLOR escolhendo a cor do primeiro plano (por exemplo.: color 7, 1, 1) antes dos VPOKEs:

  
Estas duas linhas já fazem a mágica acontecer















 Como escolher as cores (da tinta e do fundo)

    Há 16 cores e para cada uma é dado um código, entre 0 e 15, como abaixo:

Código das cores do MSX em SCREEN 1


     O código a ser VPOKEado na VRAM (ou seja, o valor após a vírgula), pode ser calculado da seguinte maneira:

Pegue o código da cor de tinta selecionada. Multiplique por 16 e adicione o código para a cor do fundo. 

   Suponhamos que queremos cor de tinta branca com fundo azul escuro. Basta multiplicar 15, que é o código da cor branca, por 16 e somarmos com o código da cor azul escuro, que é 4:


15 x 16 = 240 + 4 = 244





   
     Este recurso só é possível nas SCREEN 1 e 2. Se você precisar ou quiser alterar as cores dos caracteres na SCREEN 2 (modo gráfico), os endereços da VRAM para os VPOKES ficam entre 8192 e 14335. 
      
         

           Até a próxima!
       

       

quinta-feira, 18 de abril de 2019

Resultado do "BASIC 10-Liner Contest 2019"



       Conforme falei no post anterior, vou comentar algo sobre o resultado do concurso, que saiu no dia 14 passado.

        Descobri que o MSX foi um dos computadores menos representados: houveram apenas três jogos para a plataforma, por outro lado dois ficaram entre os "top 10" na colocação de uma das categorias.
         Abaixo a colocação do "Ballistic Challenge":
   
Resultado do BASIC 10Liners 2019

       
     Alguns jogos surpreenderam pela qualidade. Veja este, campeão dos Extrem-256 deste ano: 
       


  Vitória mais que merecida para o "Mini Bros" (by Vitoco) 


      Pra concluir vou colar abaixo alguns dados interessantes sobre o concurso deste ano, que peguei (aqui) no forum da AtariAge:


  - 83 entries, only 20 of them are for Atari XL / XE, less than for Commodore 64 which are 21, plus 9 for VIC-20. There are 12 entries for Sinclair ZX Spectrum and 6 for Amstrad CPC. There are 3 or less entries for MSX, Apple IIe, Tandy TRS-80, BBC Micro, Mattel Aquarius, Thomson MO6 and Atari 2600. 

- PUR-80 category has 35 entries, both PUR-120 and EXTREM-256 have 18, and WILD has 12. 

-  There are 43 authors, and the "most" are: Kevin with 8 entries, Matteo "Toolkitman" Trevisan has entries for 3 different platforms. Nobody sent entries for all 4 categories, have two entries for WILD entry. 

-  16 different BASIC flavors were used in total (including different version numbers on some of them).


     Porcetagens de participação (por plataforma) ao longo dos anos:


2015: 56% Atari XL / XE, 31% C64, 8% Amstrad CPC, 5% other formats 

2016: 26% Laser VZ-200, 23% Atari XL / XE, 20% C64, 13% MSX, 7% Tandy MC-10, 11% other 

2017: 39% Atari XL / XE, 26% C64, 15% Amstrad CPC, 5% Tandy MC-10, 15% other formats 

2018: 33% C64, 26% Atari XL / XE, 13% Amstrad CPC, 7% Tandy MC-10, 21% other formats 

2019: 25% C64, 24% Atari XL / XE, 14% ZX Spectrum, 11% VIC-20, 7% Amstrad CPC, 19% other channels


    E o número de entradas por país:

22 entries from USA 
11 entries from Italy 
10 entries from Germany 
5 entries from Chile 
5 entries from France 
4 entries from Hungary 
3 entries from Spain 
3 entries from Switzerland 
3 entries from Sweden 
3 entries from Ukraine 
2 entries from Netherlands 
1 entry from Australia 
1 entry from Belgium 
1 entry from Brazil   <--- só uma este ano...
1 entry from UK 
1 entry from Austria 
1 entry from Poland 
1 entry from Columbia 
5 anonymous entries


 

  Até a próxima!






quarta-feira, 3 de abril de 2019

Meu jogo no "BASIC 10-Liner Contest" 2019


     
     Para quem não conhece, o BASIC 10-Liner Contest é um concurso de programação onde são aceitos jogos escritos em linguagem BASIC, para qualquer sistema (computador ou video-game) de 8 bits. A principal regra da competição é que o código não pode conter mais que 10 linhas.

      Ano passado, quando descobri a existência do concurso, não pude participar pois já havia passado a data limite de entrada... Mas neste ano estamos no pário! :)  


São 3 categorias:

  • "PUR-80":  Máximo de 80 caracteres por linha.
  • "PUR-120": Máximo de 120 caracteres por linha.
  • "EXTREM-256": Máx. de 256 caracteres por linha.

  É nesta última que se enquadra o jogo que enviei: "Ballistic Challenge" (entrada #69) p/ MSX 1.



Ballistic Challenge

     O objetivo é fazer o projétil bater nas duas paredes, à direita e à esquerda da tela, evitando acertar os obstáculos que ficam pelo caminho. 

Controles:
SETAS: para controlar a mira e o alcance do projétil.
BARRA DE ESPAÇOS: dispara o tiro.



    Caso queira aceitar o "desafio" (concluir as 10 fases antes de ficar sem munição) clique aqui para jogá-lo online.

      O jogo, como pode-se esperar, é muito simples. Talvez a única característica digna de nota, é que possui um "mini" motor de física. Isto é o que proporciona o efeito balístico do projétil, tornando possível, inclusive, alguns experimentos. Se quiser saber mais a respeito, explorar o código ou baixar os arquivos para jogar no seu MSX ou em um emulador, veja aqui


   Voltando ao concurso, o resultado será anunciado daqui a dez dias. Assim que possível postarei algo a respeito

Para maiores informações sobre a "10Liner Contest" recomendo a leitura do site.

Aqui a lista dos jogos participantes desta edição:

https://gkanold.wixsite.com/homeputerium/kopie-von-games-list-2019-2







terça-feira, 12 de março de 2019

MSXPen - Programe e rode MSX-BASIC no browser



                              Compilador / Interpretador online de MSX-BASIC 


  Faço este post para reforçar a divulgação desta mais nova ferramenta para programar o MSX. 

   Na verdade faz-se tudo online, aqui neste site chamado MSXPen, que tem como aliado o ótimo emulador WebMSX.
                       
   O funcionamento é extremamente simples: basta digitar o código na parte esquerda da tela, pressionar o botão "Run" e ver seu programa rodar no emulador (à direita).

     Há ainda, na parte inferior da tela, um assembler. Que me parece ter grande potencial pra quem está aprendendo ou pretende aprender a programar Assembly do Z80. 

     Também é possível criar um link para o seu programa, salvar o estado ou  a imagem do disquete (.DSK), o que facilita muita a vida na hora de compartilhar o código. 

   Termino o post dizendo, com muito orgulho, que tanto o MSXPen quanto o WebMSX foram desenvolvidos por brasileiros. O primeiro por Rafael Jannone e o segundo por Paulo A. Peccin (que também é o autor do Javatari). 

  








   

quinta-feira, 18 de outubro de 2018

Midi2PLAY - Convert MIDI files to BASIC language




   I made this post to tell about "Midi2PLAY" (for Windows 32/64, binaries source code available here), a program I developed that assists in the process of converting MIDI files (.mid) to the syntax accepted by the PLAY command of MSX-BASIC

As I will explain below, Midi2PLAY does not do the conversion alone, it depends on another program (3ML Editor) to intermediate the process. But it's all very simple and in the end you will have a BASIC music program practically ready to run on MSX.

About Midi2PLAY

The main purpose was to develop a converter parser that generates code compatible with all versions of MSX (from MSX1), without the need for additional hardware such as MSX-Audio, MSX-Music or FM-Pac. That is, the syntax generated by "Midi2PLAY" can be executed on any MSX.
The program is still in development but I already offer the executable and the code (in C++) for those who want to use it. Follow the download link:

https://github.com/rodrivas78/Midi2PLAY


 I will now make a quick summary of how the program works:

 Following up on what I said earlier, Midi2PLAY does not directly convert MIDI files (.mid). For this it depends on another program: the 3ML Editor.

The 3ML Editor is free and can be downloaded at: http://3ml.jp/download.html

See below how the conversion process works and what the function of each application is:

 MIDI file -> 3ML Editor -> MML file (.txt) -> Midi2PLAY -> .BAS file

Step by step:

  • Import the MIDI file into the 3ML Editor.
  • Still in the 3ML Editor: export the MML file. (Save as "mml.txt")
  • Run the "Midi2PLAY" (with the "mml.txt" properly formatted in your folder)
  • The "play.txt" file will be generated. Just save it as ".BAS" and use it in MSX.


What we see above is a summary, for the correct use of the program it is necessary to read the Midi2PLAY manual, since there are some non-automated processes. In the program folder, along with the manual, there are images and sample files that will help you to quickly understand what should be done to make everything work correctly.

 Addendum

   It is understood that Midi2PLAY could (or should!) be called mml2play, but as the "MML" format is not so well known and for the program function to become self explanatory, I chose the current name.

  As I mentioned earlier, the program still needs some improvement. For example: the user needs to perform a few steps manually, so that the document (mml) is properly formatted so that the conversion is correct. I intend to automate some of these steps in future releases.
    
  If you used the program I will be happy to hear your feedback.

 I have not had time to perform all the necessary tests, so if possible help by reporting any bug. Reviews and suggestions are also welcomed!


keywords: Midi2Basic, MIDI to BASIC


quarta-feira, 17 de outubro de 2018

Midi2PLAY - Converta arquivos MIDI para o MSX-BASIC




   


  Faço este post falar do "Midi2PLAY" (p/ Windows 32/64), programa que desenvolvi que auxilia no processo de conversão de arquivos MIDI (.mid) para a sintaxe aceita pelo comando PLAY do MSX-BASIC.

Conforme explicarei abaixo o Midi2PLAY não faz a conversão sozinho, depende de outro programa (3ML Editor) para intermediar o processo. Mas é tudo bem simples e ao final você terá um programa musical em BASIC praticamente pronto para rodar no MSX.

Sobre o Midi2PLAY

O intuito principal foi desenvolver um parser conversor que gere código compatível com todas as versões de MSX (desde o MSX1), sem a necessidade de harware adicional como MSX-Audio, MSX-Music ou FM-Pac. Isto é, a sintaxe gerada pelo "Midi2PLAY" pode ser executada em qualquer MSX. 

O programa ainda está em desenvolvimento porém já disponibilizo os binários para quem queira ir utilizando-o. 

Segue o link para download:
https://github.com/rodrivas78/Midi2PLAY

 Farei agora um rápido resumo de como o programa funciona: 

 Dando seguimento ao que eu disse anteriormente, o Midi2PLAY não converte diretamente os arquivos MIDI (.mid). Para isso ele depende de outro programa: o 3ML Editor. 

O 3ML Editor é gratuito e pode ser baixado no link:  http://3ml.jp/download.html     

Veja abaixo como funciona o processo de conversão e qual a função de cada aplicação:

 Arquivo MIDI --> 3ML Editor --> Arquivo MML(.txt) --> Midi2PLAY -->  Arquivo .BAS  

Passo a passo:

  • Importar o arquivo MIDI no 3ML Editor. 
  • Ainda no 3ML Editor: exportar o arquivo MML. (Salvar como "mml.txt")
  • Executar o "Midi2PLAY" (com o "mml.txt" devidamente formatado, em sua pasta)
  • Será gerado o aquivo "play.txt". Basta salvá-lo como ".BAS" e utilizá-lo no MSX. 


O que vemos acima é um resumo, para a correta utilização do programa faz-se necessária a leitura do manual do Midi2PLAY, visto que há alguns processos não automatizados. Na pasta do programa, juntamente com o manual, há imagens e arquivos de exemplo que o ajudarão a entender rapidamente o que deve ser feito para tudo funcionar corretamente.

  Adendo

   Fica-se compreendido que o Midi2PLAY poderia (ou deveria!) se chamar "mml2play, mas como o formato "mml" não é tão conhecido e para que a função do programa torne-se auto-explicativa, optei pelo nome atual. 

  Conforme mencionei anteriormente, o programa ainda precisa de algumas melhorias. Por exemplo: o usuário precisa efetuar alguns passos manualmente (não automáticos) para que o documento (mml) fique devidamente formatado e assim haja uma correta conversão. Pretendo automatizar alguns destes passos nas próximas versões. 
    
   Sobre a publicação do código, assim que possível, ou melhor, após uma devida "limpada", vou disponibilizá-lo no GitHub.

Se utilizar o programa ficarei feliz em ouvir o seu feedback.


Até a próxima!

keywords: MIDI para BASIC


BASIC 10-Liners Contest 2020