|
|
|
| O espaço deste site foi gentilmente cedido pela MSXALL |
|
HOME | Artigos | Contato | Entrevistas | Etiquetas | Jornais | Livros | Manuais Mundo MSX | Música | Programação | Revistas | Vídeos |
|
ENTREVISTA Daniel Caetano (entrevista completa) |
Como foi seu primeiro contato com o MSX ?
Foi na casa de um amigo, chamado Gustavo, em São José do
Rio Preto. Se não me engano isso foi em meados de 1986.
O MSX foi o seu primeiro microcomputador ?
Oficialmente sim, em 1988, embora tenha passado um TK-82 pelas minhas
mãos antes... mas não era meu, era emprestado. E confesso:
eu fazia bem pouco com ele. (^=
Você considera que o MSX foi de fato um computador que iniciou várias
pessoas no ramo da informática ?
Sim, embora não seja exatamente o meu caso. Meu interesse por computadores
era anterior (meu pai trabalhava com isso) e o equipamento que realmente
me despertou interesse para essa "tranqueira" toda foi o Atari 2600. Claro,
ele não era programável, mas foi então que eu me admirei
com o negócio e comecei a falar no assunto de "fazer jogo". Antes
disso eu só me divertia desmontando carrinho de controle remoto
e afins. (^= Mas eu acredito que o MSX tenha cumprido este papel para muitas
pessoas, visto que foi nele que a experiência de programar realmente
se tornou agradável (para mim) e eu comecei a me interessar por
fazer mais coisas.
Que tipo de software é possível de ser realizado hoje com
um MSX1 ?
O MSX1 permite muitas coisas... ainda mais se tiver periféricos
"pendurados" nele. É claro, tem limitações sérias
- em especial gráficas - mas muito pode ser produzido. Em especial,
eu acredito que para software educacional ele pode ter um papel excepcional.
Outro usos bastante legais são controle de dispositivos e demonstrações
- os MSX, de forma geral, permitem muitos truques de programação!
Ah, claro... jogos! Quantos jogos ótimos não existem para
MSX1? (^=
Qual linguagem de programação você recomenda para programação
de jogos ?
Depende do jogo e depende do equipamento para o qual você programa.
(^= Há jogos que é possível programar, mesmo no MSX,
em C ou Pascal. Outros já precisam de um pouco mais de anabolizantes,
como a mistura de código Assembly e C ou Pascal... Ou mesmo assembly
puro, nos casos mais radicais. Pessoalmente, pela minha experiência,
eu prefiro fazer tudo em assembly puro, porque não gosto de lidar
com "frescuras" dos compiladores, ao misturar seu código com assembly.
Entretanto, isso é uma questão de gosto pessoal. Basta olhar
o trabalho do José Lúcio Gama (SLotman) para ver que ótimos
jogos são possíveis em Pascal, mistura de Pascal e Assembly
e mesmo em BASIC com um pouco de assembly.
A programação de jogos pode ser feita parte no PC e parte
no MSX ? Há alguma vantagem neste aspecto ?
Não só pode, como eu seria um pouco taxativo e diria que
deve. (^= O MSX é uma ótima máquina pra usar software
e para ser programada, mas infelizmente o desempenho dele para programação
em si é lastimável, comparado com os recursos que temos hoje
no PC. A programação para MSX, quando feita no PC, permite
inúmeros recursos indisponíveis na máquina MSX real,
tornando o desenvolvimento muito mais prazeiroso. Ao invés de passar
horas "tentando saber porque o micro reseta", no PC você pode rodar
um debugger e olhar. No PC também é mais simples a criação
de aplicativos em alguma outra linguagem (C, por exemplo) para processar
dados que você possa precisar no seu programa. No MSX também
seria possível, mas um tanto desajeitado (visto que até mesmo
o processo de compilação no MSX é muito lento).
O Spectrum utiliza o processador Z80 e tem uma vasta biblioteca de sofware.
Como é o grau de complexidade de uma conversão de softwares
do Spectrum para o MSX ? Pode-se generalizar ou cada caso é
um caso ?
O grau de complexidade é alto... em especial porque cada caso é
um caso. E, em jogos de Spectrum, cada fase do jogo pode ser um caso. Há
muitos jogos - muitos mesmo - em que cada fase tem um programa completamente
diferente da outra. Aí, adaptar um jogo se torna, na realidade,
adaptar vários jogos. Entretanto, é importante compreender
aqui o que significa "alto grau de complexidade": como o hardware do MSX
é similar ao do Spectrum (melhor em alguns pontos e, infelizmente,
pior em outros, mas bem similar na maioria), a maior complexidade fica
em contornar as diferenças, sem que isso prejudique o jogo... porque
os jogos de Spectrum, em especial os mais interessantes, usam o hardware
"no talo", deixando pouca margem para mexer. Além disso, a maioria
dos jogos de Spectrum adaptados para MSX são aqueles do Spectrum
48k - e por isso muitos deles são "sem música" - pois o hardware
é mais similar. Para adaptar jogos de Spectrum 128k é preciso
um pouco mais de rebolado... tanto que eu não conheço nenhum
que tenha sido adaptado. (^=
A Konami criou vários jogos de qualidade para o MSX, para todos
os modelos. No caso específico do MSX1, a Konami tem obras de ótima
qualidade como Knightmare, The Goonies, King´s Valley e etc. Jogos
deste nível são complicados de se criar ?
Sim. Desenvolver jogos de "ação" requer mais do que boa história,
gráficos e música. É claro que essas coisas ajudam,
mas elas representam um problema sério na hora de programar, no
MSX. Muitas vezes, ao colocar tudo operando junto, nota-se que o jogo dá
umas travadas, fica com o fluxo descontínuo, etc. É onde
entra a necessidade de otimizações malucas para tornar a
coisa mais rápida, e onde muitas vezes o programador tem dificuldades.
Mas esse não é o maior dos problemas... coisas bem piores
como "tentar fazer o jogo para o 'menor hardware possível'", para
que todos possam usá-lo, ou ainda "contornar deficiências
do hardware" são dores de cabeça bem maiores... só
superada por algo que eu considero ser o grande mal de grande parte dos
"jogos feitos em casa": lógica de jogo equivocada. Isso pode se
refletir em jogo muito rápido ou muito lento, personagem com movimento
"jerky" ou "the flash", inimigos impossíveis de serem contornados,
etc. O jogo pode ser lindo, ter uma história maravilhosa, contornar
todos os limites do hardware e usar recursos incríveis... se a movimentação
e o controle do jogo forem ruins, o jogo será ruim. E, infelizmente,
muitos dos autores "caseiros" não olham para este aspecto, desperdiçando
enormes esforços em todas as outras áreas do jogo ao implementar
uma jogabilidade ruim... talvez por não existir um "controle de
qualidade". Neste aspecto fico feliz pelo desenvolvimento do Brasil. Tirando
ZORAX, acho que a maioria do que foi produzido aqui - em termos de jogos
- tanto pelo José (SLotman) quanto pelo Ricardo (RicBit), bem como
alguns autores antigos de Adventures, são muito bem balanceados.
É pena que a produção de jogos nacional seja pequena.
Ainda comentando sobre o assunto acima, pode-se criar jogos com este nível
de qualidade apenas usando a linguagem Basic, nativa nos MSX, ou se não,
somente o Assembly seria o ideal ou poderia ser considerado também
Pascal ou C ?
Como disse antes, depende do jogo. Eu diria que, em termos de jogos, apenas
Assembly é "panacéia", ou seja, é o único que
"resolve todos os problemas"... embora isso muitas vezes signifique que
o programador é quem terá de resolver 100% dos problemas.
Entretanto, em assembly você dificilmente esbarra com dificuldades
insuperáveis (como travamentos inexplicáveis por causa de
uma rotina de interrupção "que não faz nada de errado").
Ainda assim, para muitos tipos de jogos, C, Pascal ou BASIC também
resolvem. Hoje em dia eu diria que, das linguagens de alto nível,
o Pascal é o mais indicado, não só pelo resultado
que já vi sair das mãos do José (SLotman), mas também
pelas bibliotecas disponíveis.
Imaginamos também que grandes empresas como Konami, Namco, Taito,
deviam fazer uso de alguma ferramenta de desenvolvimento, para facilitar
o trabalho de criação de software, talvez até mesmo
como um editor de fases, trabalhando em conjunto com um editor de gráficos,
editor de sons, ou seja uma espécie de 'kit de ferramentas' para
o desenvolvedor. E, pensando ainda neste 'kit', talvez, esta não
seria uma solução prática para facilitar o desenvolvimento
de novos softwares, pensando até mesmo em desenvolver fases, gráficos
e sons fazendo uso de uma ferramenta no PC e juntando todas estas peças
utilizando programação no MSX. O que você pensa a respeito
?
De certa forma, sempre que desenvolvemos algo pra MSX - seja algo 'do zero'
ou alguma alteração - desenvolvemos ferramentas que auxiliem
no desenvolvimento. Entretanto, embora algumas destas ferramentas sejam
genéricas e sirvam para outros jogos, a maioria é muito específica.
Isso ocorre porque os jogos de MSX, em geral, exigem uma otimização
tal que tornam "soluções genéricas" inapropriadas.
No desenvolvimento da tradução do Snatcher, do Shinobi, do
Knightmare Gold e mesmo em outros projetos que não viram a luz do
dia (ao menos ainda) eu desenvolvi diversas ferramentas, como o MSXDASM,
o BIN2MAC, o PAT2ASM, o TOSKRLE, dentre outros. Quando sobra um tempo,
eu dou um tapa neles, faço um pequeno help explicando como usa,
compilo pra diversos SOs e libero. Entretanto, muitos outros utilitários
(como o SNATCHPATCH) é muito específico e não faz
sentido ser liberado. Há um tempo atrás eu perdi um tempo
numa versão um pouco mais genérica do SNATCHPATCH, uma espécie
de Disk Patcher, voltado à tradução de jogos, mas
ainda não tive tempo de terminar. Resumindo: é interessante,
SIM, ter kit de desenvolvimento... mas é difícil dizer o
que colocar nele. De uma forma geral, nós que desenvolvemos e nos
mantemos em contato um com o outro, comentamos uma necessidade sempre que
precisamos de algo. Se alguém já tiver feito algo parecido,
passa o fonte e a gente faz as alterações necessárias.
Ademais, temos editores de programação como o MSXPad do SLotman,
o conversor de imagens do Marcelo Silveira, o emulador do Ricaro Bittencourt...
enfim, ferramentas para programação não faltam. Só
que programar não é aquilo que se faz hoje em dia com Delphi
e VB, "colando blocos". (^=
Quais vantagens você vê de um MSX2 sobre um MSX1 ?
Muitas, é verdade. O V9938, com os screens 4 a 8, sprites multicoloridos
e blitter, somados à definição do padrão Memory
Mapper como expansão de memória tornaram o padrão
MSX muito mais poderoso e capaz de software (em especial: jogos) muito
mais bonitos, tornando a máquina muito mais atraente. O ponto chave
foi a ampliação dos recursos, mantendo a simplicidade da
máquina. As coisas que mais faziam falta ao MSX2, no meu entender,
eram o scroll suave horizontal (e sua máscara de tela), bem como
a possibilidade de utilização do blitter nos modos "baixos"
(do MSX1) e controle de velocidade de escrita no VDP, para que os programas
já no MSX2 não precisassem se preocupar (tanto) com o timing
de escrita no VDP. Ah, e claro, desde essa época, a manutenção
da velocidade do Z80 a 3.57MHz foi um erro, por três razões:
1) já existiam Z80s mais rápidos, não precisava nem
"inventar" algo novo. 2) Deixou os programadores mal-acostumados, sincronizando
jogo por timing de CPU, bem como desenvolvedores de hardware, que faziam
hardware sempre pensando em clock de 3.57MHz, o que causou sérios
problemas no futuro (obrigando-nos a usar slot externo de 3.57MHz até
hoje, por exemplo). 3) O Z80 começou a ficar em descompasso de velocidade
com as grandes massas de dados que eram necessárias transferir para
o VDP, ao mesmo tempo em que ainda precisava fazer todo o resto...! É
claro que, ao trocar o Z80 por um mais rápido, seria interessante
ter adicionado um timer especial para sincronia de software, talvez até
ligado na NMI (que nunca foi usada no MSX). Tal timer não seria
um grande custo adicional e teria sido um recurso muito importante.
E sobre o MSX2+, qual sua opinião sobre este hardware ?
É um hardware um tanto tosco para ser considerado uma nova geração...
tanto que os japoneses só colocaram um "+" no nome. (^= Na minha
opinião, o MSX2+ é apenas algo mais próximo do que
o MSX2 deveria ter sido, já que o único feature realmente
"killer" que ele apresenta é o scroll fino horizontal, algo que
teria possibilitado que jogos como Contra e Vampire Killer, da Konami,
tivessem scroll horizontal, ao invés de telas estáticas toscas.
Tirando isso, Screen 10, 11 e 12 tornaram-se quase que meras curiosidades
(existem algumas gratas excessões). A Screen 10 ainda serve para
brincar um pouco, em especial para Adventures e RPGs. Infelizmente a maioria
destes recursos foi usada por um número muito pequeno de jogos e,
mais infelizmente ainda, um número muito reduzido de pessoas tem
MSX2+ no mundo... o que nos faz pensar 200x antes de programar um jogo
específico para MSX2+. O padrão MSX2+ teria sido muito mais
interessante se adicionasse alguns modos tiled com cor pixel a pixel, bem
como sprites coloridos pixel a pixel (ao invés de linha a linha).
Tivessem sido adicionadas essas "features", além daquelas já
citadas para o MSX2, o MSX2+ certamente teria sido muito mais atraente
do que foi... e poderia até ter se chamado "MSX3". (^=
Turbo R, é o melhor modelo para você ?
(rs) Melhor para quê? Ele é praticamente um MSX2+ com uma
CPU rápida. Sim, o R800 é muito legal. Sim, eu gostaria de
ter um Turbo R - até programaria específico pra ele, se tivesse
- mas não tenho condições financeiras de gastar em
um o que pedem por ele. Acho que talvez existissem outros investimentos
mais interessantes, como uma GFX9000 ou um HBI-V1, dois periféricos
que eu gostaria de ter e não tenho. Então, sim, é
o melhor MSX já fabricado... mas, infelizmente, não com grande
estilo.
Há vantagens e melhorias quanto a desenvolver softwares com um Turbo
R, isto é, o que pode ser feito a mais com um modelo destes ?
Bem, sem dúvida é possível desenvolver algumas coisas
mais interessantes no Turbo R, mas a grande parte das possibilidades são
abertas pela maior velocidade, ou seja, nada que um MSX2+ mais rápido
não seria capaz. Falando um pouco de features interessantes dele,
é possível fazer jogos mais elaborados, com áudio
digital nos efeitos e coisas do tipo... Mas fica meio por aí. O
mesmo VDP tosco do MSX2+, falta do DMA (de RAM e, talvez, VRAM), falta
de um PCM inteligente (similar ao da Music Module), a não possibilidade
de usar as duas CPUs ao mesmo tempo (paralelamente), dentre outros problemas,
comprometem muito "o que poderia ser feito com um Turbo R", ao meu ver...
e comprometeram seu sucesso (tanto que a linha morreu nele: ele não
conseguiu concorrer com outras linhas da época). É importante
ressaltar que eu certamente o considero o melhor MSX feito, mas ele não
é tão bom quanto poderia ter sido... com o mesmo hardware
que já tem ali dentro da caixinha, e isso é lamentável.
Memória de vídeo do MSX parece sempre ser um impecilho no
desenvolvimento de novos softwares no MSX, você concorda ?
SIM! Em especial para os modos de vídeo Screen 7 para cima. A ausência
de espaço pra framebuffer *e* armazenagem de shapes torna o Blitter
- uma das grandes vantagens do 9938 e superiores - bastante limitado nestes
modos, fazendo com que o próprio uso destes modos seja limitado.
É por isso que eu quero ter 192K de VRAM no meu MSX. Não
é tudo que eu poderia desejar (alguém por aí falou
ADVRAM? =^), mas já quebrava um bom galho para brincar nos "screens
mais altos".
Há como desenvolver jogos para a MegaRAM (a MegaRAM é um
periférico desenvolvido por Ademir Carchano, no Brasil e é
uma alternativa a Memory Mapper) ?
Certamente que sim. Aliás, existe até um boato que o cartucho
SCC+ (que não deixa de ser uma mini-megaram, também) era
o equipamento de desenvolvimento da Konami... Se eles usavam algo assim
há 20 anos - e certamente usavam, não fazia sentido ficar
gravando EPROM o tempo todo pra testar jogo - qualquer um pode usar. (^=
A MegaRAM, não seria uma boa alternativa para criar jogos no formato
MegaROM, pergunto isto pois tem se cogitado criar MegaRAMs com até
2MB ou 4MB de memória através de chips SIMM. Pode-se fazer
uso real desta alternativa ?
Sim, eu diria que sim. A questão que fica aqui é: porque
criar jogos MegaROM hoje, se a maioria dos usuários possui pelo
menos uma unidade de disco? Sim, MegaROM permite algumas "firulas" que
em um jogo de disco ficariam meios desajeitadas, mas há de se lembrar
que a confecção de um jogo MegaROM - ou mesmo um cartucho
MegaRAM - não é "de graça", e poderia limitar a quantidade
de usuários do produto.
Não existe 'uma API' para desenvolvimento fazendo uso dos recursos
da MegaRAM. Você considera que este esforço valeria a pena,
considerando o aspecto da questão anterior ?
Não sei. MegaRAM é algo que é difícil usar
em C ou Pascal (e também em BASIC) puro... Mesmo com uma API, não
seria a coisa mais prática do mundo para se programar (serviria,
primariamente, para guardar dados). Já em assembly, onde é
possível usar todo o potencial da MegaRAM sem muita dor de cabeça,
a programação é trivial o suficiente para não
exigir uma API. Entretanto, a história de adaptar o MEMMAN para
operar também com a MegaRAM tem rondado por aí já
a algum tempo... nunca se sabe o que pode surgir amanhã... (^=
Você prefere para desenvolvimento: Memory Mapper ou MegaRAM ? Há
alguma razão específica ?
Memory Mapper. Além de ser um periférico mais difundido -
até por ser o padronizado, a Memory Mapper é mais fácil
de programar (na minha opinião).
Você prefere para jogos: Memory Mapper ou MegaRAM ?
Depende do jogo. (^= Jogos de MegaROM ficam BEM melhores em MegaRAM. Jogos
de mapper... bem, não conheço nenhum programa que os façam
rodar em megaram. (^=
É possível emular o SCC através do MSXMusic ou FM-PAC
? Ou seja, ouvir os sons dos jogos SCC fazendo uso do hardware do MSXMusic
e de um software capaz de utilizar os recursos de hardware do MSXMusic
para simular sons do SCC ?
Bem, OPLL e SCC não são bem a minha área - meu conhecimento
em programação de som é bem limitado - mas, dado que
o MSX Musica (OPLL) tem o "dom" de reproduzir sons digitais, embora de
baixa resolução, sim, seria possível emular o SCC
através dele. Com alguns truques talvez também fosse possível
simulá-lo com a própria síntese FM, mas o resultado
não seria lá muito bonito. Em ambos os casos, o custo de
processamento pode inviabilizar a brincadeira - a menos que o áudio
seja convertido a priori, mas aí ... basta transformá-lo
em WAV e até o PSG o reproduzirá. (^=
Com o suporte a periféricos como CD-ROM, DVD-ROM, através
da IDE, acreditamos que muito software bom pode ser desenvolvido para MSX1,
2, 2+ e Turbo R, inclusive com músicas cantadas, trechos de filmes,
podendo fazer um bom uso desta tecnologia. O que você pensa a respeito
desta possibilidade ?
Eu acredito que é uma grande área que ainda foi muito mal
explorada no MSX... talvez até pelo baixo índice de pessoas
com IDE no MSX. Entretanto, ainda é possível comprar IDEs
para MSX por preços relativamente aceitáveis, então
eu acho que vale a pena investir nisso. O Adriano Cunha (UZIXman) e o José
Gama (SLotman) foram pioneiros no uso deste tipo de recurso no MSX, e acredito
que é uma ótima via a ser seguida... em especial por programadores
que, como eu, possuem dificuldade com a produção de músicas
- ainda mais com as limitações do MSX - pois se as músicas
estão no CD, não só a programação é
mais simples, como também é possível usar qualquer
música em seus programas/jogos.
Conversando um pouco a respeito dos trabalhos que você criou, o Breeze,
qual o objetivo deste software ? Hardware é a principal carência
para que este sistema se torne uma realidade ?
O objetivo do Breeze era criar uma interface gráfica de verdade
para MSX. É importante lembrar aqui que uma GUI não é
um "file browser". Uma GUI é um subsistema inteiro que fornece uma
API com o objetivo de executar programas que usem esta API, permitindo
inclusive que eles interajam... ou seja, é um conceito mais amplo,
que visa facilitar o desenvolvimento de aplicações com interface
gráfica - incluindo aí um file manager. Sobre a principal
carência, sim... a principal carência é hardware, ao
menos para que ele pudesse ser executado numa Screen 6, com uma resolução
de 512x212, que eu considero a resolução minimamente aceitável
para uma GUI genérica. O hardware é o limite, neste caso,
porque uma GUI não tem que ser apenas "fácil de usar e bonitinha",
mas também tem que ser minimamente ágil. E é nessa
hora que, mesmo com programação totalmente em ASM e usando
todos os recursos de aceleração do V9938 ou 58, a coisa fica
inviável: fica lento demais para ser considerado útil. Quando
ví que a coisa ia ficar realmente lerda - e que ia me tomar anos
de uma programação que não ia me agradar o resultado
- eu abandonei o projeto. Hoje penso que alguém poderia fazer uma
"GUI" baseada em texto, como o Like do Giovanni Nunes. Não é
a solução mais bonita do mundo, mas é preciso reconhecer
que talvez seja o melhor que o MSX sabe fazer, com o hardware atual.
O que é o Fudeba Image Sound Demo ? Reproduz a músicas de
arquivos WAV no MSX ? Precisa de FM-PAC ou SCC ?
O Image Sound Demo é um dos muitos programas que eu desenvolvi como
teste e base para outros projetos e não... ele não precisa
nem de FM ou SCC: usa PSG apenas. Na época em que o desenvolvi,
eu estava criando rotinas prórpias que transferissem imagem do disco
para a VRAM, em assembly, e também entendendo como funcionava o
READWAV do Ricardo Bittencourt. Aí, surgiu a idéia de fazer
um pequeno utilitariozinho que unisse as duas funções e liberar
seu código fonte, para que outras pessoas pudessem ver como aquele
tipo de coisa poderia ser feito. Eu sempre tenho interesse em passar o
pouco conhecimento que eu tiver para quem quer que se interesse em produzir
algo. E isso não é diferente com relação ao
conhecimento de MSX.
Você está, ao longo do tempo,
desenvolvendo o Curso Prático de ASM. Como surgiu a idéia de escrevê-lo ?
Bem, de uma certa forma eu sempre tive
vontade de escrever tutoriais de linguagens de programação. A idéia não surgiu
com Assembly, mas com a linguagem C. Entretanto, eu sempre esbarrei em uma
dificuldade: definir o público alvo. Quem quer aprender C hoje em dia? Ora,
tem um monte de gente, mas também existe uma infinidade de materiais para
ensinar isso. Foi assim que pensei no público alvo do MSX... mas, pensando em
MSX, C não é a melhor solução do mundo - sequer eu tenho prática com C no MSX.
Foi assim que eu migrei pra idéia de um tutorial de assembly, pois sempre
ouvia as pessoas dizerem que tinham tentado aprender assembly mas não tinha
conseguido. Bem, é normal isso. Os livros e tutoriais que existem são muito
pouco práticos. Para quem já tem "manha" de programar, são ótimos, mas para
quem está começando, acaba sendo um pouco árido. Por exemplo, ficar falando de
lógica booleana e álgebra binária logo nas primeiras aulas não é o que eu
chamaria de "didático", quando o curso pretende quem tem pouca experiência com
programação. Com base nisso e na lembrança de como aprendi C pelo livro do
Schildt, resolvi escrever um curso de ASM nos moldes de um curso prático de C.
E o resultado é este que está saindo... aos poucos, mas está.
A quem é destinado o Curso Prático de
ASM ?
A quem quer aprender a fazer de tudo com o
MSX, seja ele experiente em programação ou não. O curso tem uma dinâmica um
pouco difícil, algumas aulas são bem mais complexas que outras... mas isso é
um pouco inerente à linguagem assembly: a curva de aprendizado é alto.
Entretanto, nunca pretendi tornar assembly uma linguagem fácil - não tem como
- mas sim tornar o aprendizado menos teórico, menos "matemático" e mais
"prático". Isso porque acredito que nenhuma linguagem de programação se
aprende lendo, mas sim exercitando. Um curso prático contribui para isso: o
exercício. Uma das maiores dificuldades que tive, quando eu aprendi assembly...
há
muitos anos, foi exatamente de partir da teoria que tinha aprendido... para a
prática. Com o tempo me adaptei, claro... mas não consegui deixar de pensar
que tinha aprendido do jeito errado... porque depois que peguei prática,
fiquei pensando: "Poxa, mas isso não é tão diferente do Basic...porque raios
tive tanta dificuldade?"... E a resposta, depois de anos pensando no assunto,
foi ... "eu aprendi do jeito errado". Não se deve aprender as primeiras
linguagens de programação pela especificação - como a maioria dos livros de
assembly faz - mas sim pelo uso. Depois que você souber fazer alguma coisa com
aquilo, você aprende a especificação... para se aprofundar. Isso pode parecer
um absurdo para alguns, mas a verdade é que, para a maioria das pessoas,
aprender a programar já é algo árido o suficiente por si só... e a forma usual
de explicar "loooooooonga teoria" + "prática rapidinho" só contribui para
piorar as coisas.
Qual leitura adicional ao curso você
recomendaria ?
Para quem chegar até uma aula como a 6 ou 7
- compreendendo o conteúdo - basta pegar um livro como o "Linguagem de Máquina
MSX", do Rossini e Figueredo, e aprender mais instruções, mais operações. Com
alguma prática nisso, pode-se pegar o MSX Top Secret do Edison Pires e
aprender mais sobre o MSX... E aí ninguém mais segura (rs). O livro do Rossini
é mais "arcano", parte pro lado mais tradicional do ensino. Entretanto, depois
de já ter visto um pouco de como se usa a linguagem de máquina para fazer um
programa, ele se torna mais "digerível", mesmo para os iniciantes.
Além do brMSX há algum outro emulador
que se possa utilizar para depuração de códigos ASM ?
Vários. Até os fMSX mais novos possuem essa
opção. Eu só não os cito no curso porque não tenho prática com eles, uma vez
que uso apenas o BrMSX.
Pode nos dizer se os jogos da Konami
foram todos escritos em ASM ?
A impressão que passa... é que sim. A
aparência é de que eles usavam alguma macro-linguagem para facilitar o
desenvolvimento e tudo o mais, *mas* muitas das estruturas são
inconfundivelmente feitas à mão. Nenhum compilador (ao menos daquela época e
pra um processador CISC) gera código tão "limpo", digamos assim. :)
Pudemos observar que através da
depuração de um código ASM, pode-se encontrar literais dentro do código.
Pensando assim, seria possível, através do conhecimento de ASM, efetuar a
tradução de softwares ?
Sem dúvida. A tradução de softwares antigos,
quando feita por quem não entende a linguagem em que o software foi
programado, tende a ser mais pobre. Isso ocorre porque muitas vezes é
necessário corrigir o comportamento do software para a outra língua, coisa que
só pode ser realizada com alteração do código. Caso contrário o tradutor pode
ficar atado a limitações bestas, como não ter acentos para as palavras, exigir
seqüências malucas para a entrada de dados, etc.
Quanto tempo tem levado em média para
escrever uma aula, levando em consideração a complexidade do assunto, extensão,
etc ?
Depende muito da aula. As aulas mais curtas
eu acho que dá pra escrever numas 5 ou 6 horas. A aula 7, a mais longa até
então,
eu levei umas 15 horas escrevendo (e reescrevendo). Umas 5 no primeiro dia que
a peguei para escrever (há uns 6 meses... rs), 5 horas na véspera de eu
liberá-la e mais 5 horas no dia em que a liberei. O trabalho de escrever a
aula não é apenas de escrever um algoritmo
(até agora, não aproveitei nada que já tivesse nas aulas, é tudo reescrito do
zero), mas também em pensar uma forma didática de
explicar o que está sendo feito, introduzir os erros (comuns) propositalmente
para ajudar a explicar como depurar - e familiarizar
o leitor com as correções de erros comuns... às vezes envolve reescrever
partes inteiras, para melhorar a didática, introduzir
comentários no meio para detalhar algum truque... e claro, testar tudo para
que os códigos não dêem problema quando o leitor for
executá-lo.
Pode-se juntar ASM com outras linguagens
para desenvolver um software, isto é, pode-se desenvolver usando C, Pascal, e
até mesmo Basic, fazendo uso também do ASM ?
Sim. Você pode ter trechos em ASM dentro de
outra linguagem e até pode usar coisas de Basic, por exemplo, dentro do ASM. E
isso
é mais comum do que se pensa. A maioria dos bons programas BASIC possuem
trechos em Assembly... e muitos programas em C e Pascal possuem grandes
trechos de código "assembly inline". Na aula 8 eu devo tratar um pouco sobre
este tipo de integração,
entre assembly e BASIC. Vamos ver quando eu vou ter algum tempo para
escrevê-la. :)
O curso atualmente está na aula 7, que
trata de cálculos matemáticos, mais especificamente em relação as divisões em
ASM. Quais são os temas das próximas aulas ?
Eu tenho um guia aqui, mas eventualmente eu
terei de "expandir" algumas aulas em mais aulas (isso já aconteceu com a 5, 6
e 7, que originalmente eram um único tópico, e eu transformei em 3 aulas). Os
tópicos que planejei inicialmente para as aulas seguintes são:
Aula 8: Ingrando Basic com ASM I (Passagem de variaveis)
Aula 9: Programando o VDP I (Conhecendo o bichinho e mostrando desenhos)
Aula 10: Programando o PSG I (Conhecendo o bichinho e tocando musiquinha
exclusiva)
Aula 11: Trabalhando com arquivos no MSX-DOS (Abrir, fechar, fudebar)
Aula 12: Truques de Programacao I (Diversos, DJNZs pra frente, Jump Tables e
coisas do genero)
Aula 13: Programando o VDP II (Animacao e modos especiais)
Aula 14: Integrando Basic com ASM II (Funcoes do usuario)
Aula 15: Expansoes de Memoria I (Trabalhando com Memory Mapper)
Aula 16: Truques Matematicos IV (Operacoes logicas para imagens)
Aula 17: Programando o VDP III (Comandos do VDP)
Aula 18: Expansoes de Memoria II (Trabalhando com a MegaRAM)
Aula 19: Interfaces de Comunicacao I (Joysticks/Joynet)
Aula 20: Programando o FM I (Audio exclusivo)
Aula 21: Truques de Programacao II (Interrupcao e Hooks)
Aula 22: Programando o PSG II (Audio sincronizado)
Aula 23: Programando o FM II (Audio sincronizado)
Aula 24: Programando o VDP IV (Screen Split)
Aula 25: Trabalhando com arquivos no MSX-DOS 2 (Abrir, fechar, fudebar)
Aula 26: Trabalhando com o Mouse
Aula 27: Interfaces de Comunicacao II (Impressora)
Aula 28: Acesso direto ao Disco
Aula 29: Truques Matematicos V (Compressao de dados)
Aula 30: Modificando um Programa I (Desassemblagem)
Aula 31: Modificando um Programa II (Estruturacao do Ambiente de Trabalho)
Aula 32: Modificando um Programa III (Reassemblagem e Patching)
Qual o escopo que pretende atingir com o
Curso Prático de ASM ?
Eu pretendo que as pessoas que o lerem com
atenção, fizerem os exercícios e tirarem suas dúvidas... sejam capazes de
fazer aquilo que elas bem entenderem com seus MSX... e até que tenham caminho
tranquilo para a linguagem de máquina de outras plataformas. Se vou
conseguir... aí já é uma história totalmente diferente... :)
Vamos falar um pouco a respeito do movimento MSX Revival. O que você
pensa a respeito do que foi feito até agora ?
Olha, é complicado falar disso. Eu ainda não vi até
onde eles estão dispostos a ir, mas tudo que eu poderia dizer é
que, com relação ao que eles têm feito até agora,
minha impressão é das piores. Eu sei que há pessoas
com real interesse em que a coisa dê certo, que realmente têm
boa vontade e tal, mas a coisa toda está sendo muito mal conduzida
e, como resultado, ficou apenas esta aparência de "caça-níqueis"
para o projeto todo.
Qual a sua expectativa com relação ao MSX Revival ?
Eu realmente espero que dê certo e transformem algo parecido com
um MSX (que siga pelo menos sua mesma filosofia) em algo comercialmente
rentável. Infelizmente não tenho muita confidência
que esse objetivo será atingido.
O que você gostaria de ver no novo MSX ?
A mesma filosofia do MSX original: uma máquina relativamente barata,
fácil de programar para os usos e interesses do dia-a-dia, incluindo
aí entretenimento. Isso tudo em um hardware mais atual, obviamente.
Falando francamente, não seria melhor para todos nós usuários
da comunidade MSX ver um MSX3 de uma vez, um hardware novo, compatível
com o antigo, e com características novas ?
Eu não tenho a menor dúvida. Aliás, essa era a proposta
do CIEL3++. Infelizmente a coisa não andou no passo que era desejável
e hoje estamos à mercê de sei lá quais interesses da
MSX Association. Entretanto, ainda resta a esperança no equipamento
do DalPoz. Ainda é um MSX1, mas depois pode vir a ser um MSX2, 2+
e eventualmente ter extensões bastante interessantes. Não
deve se tornar um produto comercial como um MSX, mas eu não acharia
nem um pouco estranho ter um "MSX" like dentro de um DVD-Player, como seu
controlador. Como efeito colateral, poderíamos usá-lo para
"brincar" em casa.
O MSX tem bastante público, isto, se somarmos toda a base de usuários
pelo mundo todo. Você acredita (se a ASCII levar este projeto MSX
Revival adiante, levando em consideração a opinião
dos usuários e não somente a visão deles), que este
projeto possa a vir ter sucesso ?
Eu acho que sim, mas o direcionamento tem que ser outro. Eles corretamente
não posicionaram o produto como um concorrente do PC, entretanto,
na minha opinião, erraram feio ao voltá-lo somente ao mercado
japonês e, em especial, em não ouvir a comunidade. E aqui
não se trata de opinião do tipo "como vocês querem
seu MSX", mas sim coisas mais técnicas, mesmo. A comunidade passou
mais tempo programando pra MSX do que qualquer um da MSX Association e,
certamente, conhece melhor quais limitações e dificuldades
da plataforma que precisam ser superadas, para que possam ser produzidos
software de maior qualidade. Um outro ponto é que, acredito, a decisão
do hardware também foi equivocada. Eu acredito que o hardware de
um novo MSX precisaria ser "custom", mesmo a CPU, para fornecer um módulo
de compatibilidade e, ao mesmo tempo, um modo extendido... talvez até
num esquema "Virtual MSX" - não emulado, mas baseado na mesma idéia
das seções V86 dos processadores i386 e superiores.
Você acha também que o material (seja lá este material
de hardware, software e revistas) vindo da ASCII e do Japão devem
vir em duas línguas (japonês e inglês), facilitando
e incentivando e muito a aquisição por parte de todos interessados
ao redor do globo ?
Certamente! E diante de uma eventual não possibilidade em produzir
em duas línguas, que fosse feito apenas em inglês! Pode parecer
absurdo, mas se é pretendido ter sucesso comercial com um produto
cuja maior base de usuários está fora do Japão, eles
não podem se basear apenas no consumismo japonês para sustentar
este produto.
O que você pensa do Cart Reader da ASCII ?
Mera curiosidade.