Entao pessoal, fico muito contente que o projeto JavaSNes esteja
sendo bem aceito dessa forma. Acho até que é hora de dar uma
visão melhor sobre o projeto.
Pra começar, escrevi o tópico tão rápido que cometi alguns erros
de digitação importante.
O projeto na verdade se chama JavaSNes e não JavaNes como eu havia
escrito. Eu achei engraçado também quando o Mike, que sabe um pouco
de espanhol, foi ler o tópico, e me perguntou o que era “Sohn” em
portugues, pois eu havia escrito Mike Sohn. o “Sohn” era o começo
de uma outra frase que eu iria escrever… mas como estava com
tanta pressa, viajei no número de Backspace e nao apaguei tudo.
Se fosse uma aplicação java e eu estivesse dentro do Eclipse, sendo
mimado como só o Eclipse me mima, esse erro nao aconteceria kkkkk.
Enfim, retificando, a outra parte do projeto é feita pelo
Mike, que na verdade se chama Michael Bazzinotti. Ele é o responsável
pela parte do Assembler do processador SNES. É um cara bem
acessível e não tem problemas em tirar as dúvidas de ninguem,
claro, desde que as dúvidas sejam escritas na língua inglesa.
Seguindo uma das premissas do java, que é o fato de ser multiplata-
forma, a ideia inicial, era escrever uma VM que fosse multi-console.
Ou seja, que pudesse rodar no Mega Drive, no SNES, Game Boy, etc…
Mas o que me deixou intrigado, foi as gritantes diferenças ténicas
entre os consoles. Eu realmente queria poder fazer com que o programador
usasse o mesmo codigo fonte, tanto para Mega Drive qto para SNES,
mas devido a problemas tecnicos, com certeza fica dificil, como
por exemplo, o fato do mega poder mostrar somente 65 cores simulta-
neamente na tela, eqto o SNES consegue uma gama bem maior.
Enfim, a sintaxe será java para todos, mas quanto o programadar
for tentar fazer coisas no Mega Drive, que soh é possivel se fazer
no SNES, vai ter problemas… assim como quem faz jogos para celular
tem problemas com os diferentes modelos e fabricantes, que variam
desde o tamanho da tela, qde de cores, sintetizadores, etc…
Resolvi começar pelo SNes por que ele é mais bem documentado
que o Mega Drive, embora, extra-oficialmente, um ex-engenheiro da
Sega, morando na alemanha, se interessou em ajudar na versao pra
Mega Drive, a qual se chamaria JavaDrive ou Javenesis.
Um ponto importante a se esclarecer: nao estamos fazendo uma
VM para o SNES. Mas sim, um compilador que gera código nativo
para ele. E tenho q confessar que quando conseguimos o primeiro
"Hello World", foi realmente emocionante. Eu fiquei executando
umas 30 vezes, ate que minha namorada perguntou o que eu tanto
via no mesmo programa sendo executado varias vezes. Eu sei que
vcs me entendem, mas com certeza, ela nunca entenderá. kkkkk
Para se entender um pouco da dificuldade ténica, hoje mesmo,
tivemos a maior dificuldade em lidar com um situação:
Os registradores limitados do SNES. Por exemplo, soh podemos
representar numeros inteiros com 1 byte, 2 ou 3. Isso mesmo, 3!
Hoje foi um dia difícil, e ainda não chegamos a uma solucao.
Pq fazer um inteiro com 4 bytes, como é o padrao oficial Java,
é facil, dificil é fazer operacoes aritméticas se o processador
nao te da esse suporte.
Entao, sao esses tipos de opções q estamos tendo que tomar agora.
Se colocar inteiro de 4 bytes, fica Java mesmo
mas tem umas
18 instrucoes assembler a mais soh para soma. Se colocar 3 bytes
fica rapidao e certeiro, mas, fica diferente do Java.
Uma coisa é certa. Na primeira versao, até agora, nao vemos
como dar suporte a classe String. Pois é realmente complicado
fazer realoção de memória no SNES, no caso do programador
querer alocar um String maior do que a que ele ja tinha.
Provavelmente, trabalharemos com array de chars, mais ou menos
como em C.
Mas nao se preocupem, nao é nada difícil.
Toda ajuda é bem vinda; Assim como toda crítica também.
Qualquer duvida, entrem em contato. Vou tentar responder
o mais rápido possível.