«

»

jan 26 2012

Programando no Apple //e: Início do jogo LOWREZIUS

Desde que comprei meu Apple //e, fiquei fascinado pela sua arquitetura, e creio que isso não foi novidade para meus amigos leitores.

Sempre deixo claro que não sou uma pessoa que apenas coleciona e guarda os micros, pelo contrário, me considero um entusiasta, gosto de usar e abusar das máquinas, estudando e me aprimorando na experiência com a plataforma, e se possível, usá-las como elas realmente merecem: PROGRAMANDO.

Como nunca havia programado antes em uma plataforma Apple II, desejei começar com uma linguagem mais fácil. Não me arrisquei com o Applesoft Basic,  que apesar de ter o seu charme, é interpretado e lento, então procurei por alternativas que pudessem ser tão fáceis quanto mas que pudessem prover um pouco mais de performance. Nesta busca por uma linguagem que cumprisse este objetivo, deparei com uma grata surpresa…

 

Saindo do escuro

Se você deseja começar a programar em uma plataforma que lhe é totalmente desconhecida, e ainda por cima possui um hardware severamente obsoleto e limitado, você deve pensar bem para que o susto não seja grande logo de cara.

Nos microcomputadores antigos, para se atingir o potencial máximo do hardware é necessário programar em Assembly, para que seja possível atingir um alto grau de otimização e uma comunicação quase que direta com os processadores da máquina.

Infelizmente todo este poder tem um preço: DIFICULDADE. Para quem não conhece uma plataforma, entrar de cabeça no Assembly pode ser uma opção relativamente desanimadora, além de exigir uma certa dose de tempo e paciência.

No meu caso, mesmo com meus medianos conhecimentos em Assembly, eu queria começar a programar algumas coisas o mais rápido possível sem me preocupar tanto com as peculiaridades do acesso direto ao hardware, e para isso decidi testar várias linguagens.

Apesar da quantidade vasta de linguagens disponíveis para a plataforma Apple II, e mesmo que eu desde o início quisesse fugir do Basic, no final das contas acabei caindo exatamente em cima desta mesma linguagem, porém ganhei alguns pontos extras que fizeram valer a escolha.

No meio de minhas experiências de salada de linguagens, acabei testando um compilador que eu nunca ouvi falar: o MICOL BASIC. Achei o nome bem esquisito logo de cada, mas ao usá-lo em alguns poucos minutos fiquei satisfeito com os resultados, principalmente graças ao expressivo ganho de velocidade em relação ao Applesoft Basic e presença de um poderoso e rápido editor. O Micol Basic foi capaz de superar até mesmo outros compiladores Basic conhecidos para o Apple II, como o ZBasic.

Se eu pudesse apontar um único problema que incomoda no Micol Basic seria a sua velocidade de compilação. Por exemplo, se for compilar um programa modesto de 500 linhas em um Apple //e real, prepare-se para testar sua sanidade, pode levar mais de 2 minutos, dependendo da complexidade do código. Infelizmente neste caso estou sendo obrigado a usar um emulador no PC e pressionar uma tecla para desligar o limite de velocidade no ato da compilação, então só rodo no hardware real o resultado final. Não gosto muito desta abordagem, mas em todo caso, a vantagem da linguagem como um todo faz este sacrifício valer a pena.

Quem sabe no futuro eu consiga adquirir uma aceleradora para meu Apple //e por um preço justo, e então poderei voltar a programar diretamente na máquina.

 

LOWREZIUS?

Como a plataforma do Apple //e não possui processadores dedicados para vídeo e áudio, e para prover gráficos em alta definição com boa velocidade se faz necessário um conhecimento mais profundo da arquitetura e uso de linguagem Assembly, acabei por optar em desenvolver um primeiro teste no formato de um jogo em baixa resolução, então desta escolha surgiu o nome LOWREZIUS, que vem de LOW RESolution (Baixa Resolução).

Para conceber as imagens da abertura, fiz um editor que acabei também por chamar de LOWREZ EDITOR, cuja tela de edição se encontra no começo deste post.

Abaixo seguem algumas imagens do projeto em fase inicial, na versão 0.3 alpha:

Lowrezius é um jogo de nave apresentado em uma história genérica logo em seu início. Na verdade a criação desta história é só para exercitar o conceito retrô do jogo. A ideia é futuramente incorporar uma música nesta abertura, algo que não é muito fácil criar em um Apple II sem placa de som.

A resolução utilizada foi a chamada “dupla baixa resolução”, que originalmente dispõe de 80×48 pontos com 16 cores disponíveis (na realidade são 15 cores, pois há dois tons de cinza idênticos quando exibidos no hardware real).

Na verdade em quase todo o jogo usei a resolução de 80×40 pontos que parte da “dupla baixa resolução”. A diferença é que 8 linhas na parte inferior são sacrificadas no modo de vídeo híbrido com texto e gráfico. Como este modo é provido diretamente pelo hardware, a velocidade do texto não fica comprometida e dá para trabalhar com duas resoluções distintas, sendo que na parte de baixo ficam disponíveis 4 linhas de texto com 80 colunas.

Apesar dos emuladores apresentarem uma eficiência muito satisfatória, percebi que no hardware real a imagem tem algumas diferenças de cor. O texto em uma TV fica com a nitidez comprometida, porém os gráficos em baixa definição ganham uma nova vida em um tubo CRT.

Repare no nome da nave “AP2-8B”, que significa “Apple II – 8 bits”.

A todo momento me preocupo em manter um visual retrô aproveitando as características da resolução peculiar, sem abrir mão de uma arte que remete aos jogos da década de 80:

Tudo bem, tenho que confessar, no estilo da arte e no nome há uma pequena homenagem a série “Gradius“.

O mais curioso é que comecei este jogo de “trás para frente”. Estou fazendo primeiro o “boss” para depois conceber as fases e demais detalhes:

Sempre gostei de naves em guerra com seres orgânicos, e pelo jeito deverei manter esta características neste jogo.

 

Objetivo principal

Desde o início de minha empreitada mantenho contato com os amigos da comunidade AppleII_br, que sempre procuram me incentivar de todas as formas. Gostei muito das ideias e comentários de todos os membros, e graças a eles este joguinho que começou como uma brincadeira se tornou um projeto que pretendo expandir e através dele criar ferramentas para incentivar a programação aos membros da comunidade.

Dos desafios que pretendo encarar, farei força para manter a maior parte do código em BASIC, para que após a conclusão do jogo seja possível abrir o código em posts seguidos aqui no site, explicando LINHA A LINHA para servir de base aos usuários que desejem aprender algoritmos para jogos.

Outro ponto chave é que graças a este projeto mais dois aplicativos foram criados, o já citado editor de imagens em DGR (Double Graphics Resolution) chamado LOWREZ EDITOR, e o reprodutor e compositor musical LOWREZ TRACKER. Ambos estão em fase de desenvolvimento, mas já demonstram resultados positivos, prova esta através das imagens deste post.

 

Apple II Forever !

Apesar de parecer pretensão de minha parte, através deste pequeno e tímido projeto pretendo reativar a cena de desenvolvimento de softwares para Apple II no Brasil, mas para isso creio que alguns pontos precisam ser bem expostos:

  • Não deve haver espaço para nenhum sentimento egoísta ou egocêntrico;
  • O conhecimento deve estar disponível a todos;
  • Todos os softwares precisam ter o código fonte aberto, seja em GPL ou domínio público;
  • A amizade, respeito e parceria são indispensáveis a todos os membros que desejarem ingressar nesta iniciativa.

Daqui em diante, todo e qualquer programa que eu finalizar para a plataforma Apple II deverá conter uma tela que criei para esta finalidade:

E quem sabe um dia se conseguir desenvolver um jogo em alta resolução no Apple II, eu refaça esta tela em uma definição mais alta… Até lá acabo criando um HIREZ EDITOR  😉

 

Posso testar?

Não apenas pode como deve!

Basta clicar nos nomes para baixar as imagens de disco e testar diretamente em um emulador (recomendo o AppleWin), ou pode usar o ADTPro para passar para disquetes reais. Elas também funcionam perfeitamente no SDiskII e CFFA 3000.

  • LOWREZIUS – Basta inserir o disco e jogar.
  • LOWREZ EDITOR – Pressione L para carregar. Os seguintes nomes de arquivos de tela estão disponíveis para visualização: CDN, APPLE, APPLE, OPEN1, OPEN2, OPEN3, OPEN4, OPEN5, TITLE
  • LOWREZ TRACKER – Pressione L para carregar e Y para tocar. O arquivo de nome TESTE está disponível para ser reproduzido

Requerimentos mínimos para execução no hardware real:
Apple //e ou compatível – 128Kb de RAM

Atualização 27/01/12: Todos os softwares agora incluem a compatibilidade com as teclas do cursor para quem quer testar no hardware real e não possui um joystick. Se o controle estiver agindo de modo estranho, basta pressionar a tecla “J” para escolher se deseja utilizar o joystick e teclado ou SOMENTE O TECLADO. No jogo LOWREZIUS não recomendo ainda a utilização exclusiva do teclado pois a rotina está vinculada ao buffer e isso dificulta o controle da nave, em todo caso, é suficiente apenas para testes.

Lembre-se, os arquivos expostos aqui podem ser atualizados sem nenhum tipo de aviso, mas sempre representarão a última versão disponível. Eles podem conter bugs e podem ser versões incompletas de teste. Use-os sob sua conta e risco.

As imagens de disco que já contiverem um ou mais arquivos com a palavra “SOURCE”, se refere ao código fonte do respectivo programa. Este código pode ser utilizado para qualquer finalidade, sem restrições, considere-o de domínio público. Peço apenas que se qualquer software apresentar créditos, mantenha-os para respeitar o trabalho dos envolvidos.

Ao testar, se possível, comente neste post o que desejar, receberei de braços abertos qualquer sugestão, elogio ou crítica.

 

Conclusão

Apesar deste post ter sido bem superficial, deixo claro que ele marca apenas o início de novos projetos e o passo inicial de uma empreitada que pretendo que seja longa e possa render bons frutos a toda comunidade de retrocomputação no Brasil.

Com o tempo pretendo ampliar estes esforços a todas as plataformas que eu conseguir possuir fisicamente, mas sem pressa, afinal, na retrocomputação obsolência não é um problema, é a solução.

17 comentários

Pular para o formulário de comentário

  1. PopolonY2k

    Vc é….

    …o cara.

    Muito bom. A arte é toda sua ?

    []’s
    PopolonY2k

    1. Mauro Xavier

      Sim, sempre fiz as artes pixel a pixel de todos os meus softwares, sejam jogos ou aplicativos.

      Sinceramente eu adoro pixel art, tanto quanto programar em micros antigos… Só gostaria de me tornar um compositor musical…

      Na hora de “compor” músicas com a boca estilo “beatbox dubstep” vai na boa, mas quando quero passar isso para o micro é uma choradeira. Ainda faço um detector de frequências no PC para reconhecer meu beatbox vocal e transformar em música, aí acabou o problema 😉

  2. Wesley Camargo

    Parabens pelo trabalho, belos graficos e grande variedade de cores. trabalho de artista. Programar de forma geral requer conhecimento do sistema e ferramentas de software disponiveis para o sistema do hardware escolhido.
    no caso do apple II requer mais conhecimento ainda, por ser um sistema com processador e recursos diferentes da maioria dos 8 bits que possuem z80.

    1. Mauro Xavier

      Acho a arquitetura do Apple II fascinante, ainda mais por toda sua limitação. Espero ainda conseguir criar ao menos pequenas rotinas em Assembly para poder desfrutar de efeitos mais interessantes, mas por enquanto vou me apegar no foco de ser didático para que em breve isso possa servir a outros entusiastas.

  3. Alexandre

    Mano, parabéns!! Que legal! Haha.
    Os desenhos estão ótimos! :)
    Muito boa sua iniciativa. Eu estou estudando Assembly Z80 pra programar no Spectrum, e espero esse ano ainda fazer um jogo também.
    Legal seria aqui no Brasil criarmos software para esses micros de 8-bits.
    Lá fora a cena é grande, mas aqui…
    Abs!!

    1. Mauro Xavier

      Concordo plenamente, a cena lá fora é bem promissora, em contrapartida aqui no Brasil temos mais jogadores e colecionadores, e é exatamente esta realidade que podemos mudar.

      Creio que no meio de tantos amantes de retrocomputação, existam aqueles que DESEJAM MUITO aprender a programar. Como o Assembly pode assustar pessoas no começo da empreitada, tentarei tirar “leite de pedra” com o Basic para que sirva de introdução aos talentos latentes que existem por aí.

      Deverei meter a mão no Assembly sim, mas somente para rotinas pequenas que exijam velocidade (scroll, animação etc), e de repente estas pequenas rotinas já sirvam também para a composição de algum material didático.

      Boa sorte em seus estudos!

  4. Ritcho

    Grande Mauro! Xará, você está de parabéns! Simplesmente excelente. Ainda não testei o jogo, mas já fiquei impressionado com a arte, o trabalho e a dedicação. Pode ter certeza que eu tenho noção do trabalho que teve e o admiro muito. Também estou trabalhando no desenvolvimento de dois games, sendo um deles com o pessoal da AMXProject e que deverá ter uma versão pra AppleII, MSX e Amiga. Vamos ver no que vai dar… O código que você gerou e disponibilizou com certeza vai ajudar muito na minha empreitada também.
    Parabéns mais uma vez!
    Um grande abraço!
    Ritcho.

    1. Mauro Xavier

      Parece estranho dizer isso, mas a minha fascinação com relação ao Apple II é exatamente sua limitação. Com o tempo quero ver se consigo prover coisas diferentes para ele, como efeitos visuais pouco convencionais para a plataforma, mas aí entrará o Assembly nas rotinas principais. Querer prover gráficos ou scroll rápido em Basic puro é utopia, ainda mais em 1Mhz.

      O MSX é uma alegria para programar, foi a casa onde nasci. Quando programei em um MSX2, mesmo em Basic (ou Turbo Basic), já dava para obter ótimos resultados graças a comodidade oferecida pelo VDP. Um método que pode ser fácil sem abrir mão da velocidade seria optar em usar o Turbo Pascal com bibliotecas para MSX2, isso torna o desenvolvimento prático, didático, e dá pra programar no próprio MSX com boa velocidade de compilação (ao contrário do Micol Basic). Os que dizem que o MSX2 é lento (o que eu também achava), não tentaram criar gráficos em um Apple II ainda 😉

      Já o Amiga não tem comparações, ele praticamente é feito para jogos. Se pegar um AMOS (Basic) para ele dá pra criar programas rapidamente sem dificuldade. A facilidade e flexibilidade do hardware para scroll e sprites o torna um verdadeiro Arcade, basta ser criativo.

      Mas em todos eles, se não tiver um HD, só mesmo programando usando um emulador. Usar somente disquetes é um risco (e lentidão) que ninguém merece, além de testar sua sanidade.

      1. Ritcho

        Finalmente testei o joguinho e gostei muito!

        Gostei mais ainda do editor de imagens, excelente. Com certeza vou utilizá-lo!

        Parabéns mais uma vez.

        Grande abraço!

        1. Mauro Xavier

          Vou melhorar bem este editor, pretendo que ele dê suporte a todos os modos de vídeo e passe a ter recursos importantes, como copia de regiões da tela e patterns para o dither dos pixels em dupla alta resolução.

  5. Merlin3d

    Publica uma parte ou todo o codigo fonte, fiquei curioso para ver esse Basic, mas não tenho como testar os arquivos.

    1. Mauro Xavier

      O código ainda está meio “sujo” e incompleto, preciso otimizar e melhorar muito para publicá-lo por aqui e conseguir manter um esquema didático. Deverei me preocupar em diagramá-lo de um modo mais eficiente quando for mostrá-lo linha a linha em posts futuros. Pode ter certeza de que você verá o código de todos os meus programas por aqui, e deverei explicar tudo.

      Enquanto isso, se quiser vê-lo ou desejar compilar para alterá-lo à vontade, você pode baixar o emulador AppleWin, ele é bem fácil de mexer. Se estiver usando Linux (meu caso), ele roda tranquilamente via Wine.

      Se quiser apenas ver o código fonte em texto aberto, baixe o software chamado “CiderPress”, ele é gratuito. Assim você poderá pegar a imagem DSK que hospedei e então verá os arquivos do disco.

      O código fonte é em padrão texto aberto, o próprio CiderPress exibe o arquivo ou pode exportá-lo para que possa visualizar pelo editor que desejar.

      Caso encontre qualquer dificuldade em qualquer etapa, me avise.

      Abraços.

  6. Pulselooper

    Sensacional! 😛

  7. Menon

    Fabuloso!

    1. Mauro Xavier

      Nossa… Que ilustre visita de meu grande amigo 😉

      Abraços!

  8. Mazza

    Que coisa mais tosca, quadrada e oldscholl *-*, preciso jogar isso!

    1. Mauro Xavier

      O jogo em breve estará pronto…

      O tracker, que se tornou na verdade um sequenciador (pois agora faz composição e ganhou mais recursos), acabou se tornando um projeto maior que o próprio jogo, e isso é bom! E ainda graças ao talento do Pulselooper (um membro conhecido e reconhecido pelo seu talendo com músicas 1 e 8 bits), as músicas e temas do Lowrezius irão ganhar vida nova.

      Se tudo der certo, em breve teremos um novo post sobre o Lowrezius, mas desta vez, para apresentar o jogo na íntegra… E o sequenciador ganhará um review e post só dele também.

      PS.: Comentário típico seu, né Mazza? Oldschool corre no sangue, não adianta fugir.

Deixe uma resposta