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). 

  








   

BASIC 10-Liners Contest 2020