sexta-feira, dezembro 08, 2006

Rompendo a barreira dos 4 MB

Pelo que consegui ler na internet, é 4 MBytes mesmo (32Mbits). Essa é a memória RAM do DS. Teoricamente, nenhum jogo poderia ter mais que essa memória; mas, na verdade, eles podem ter até 1GBit (128MB). A solução é criar um sistema de arquivos (file system). Isso a gente consegue usando as rotinas PAFS da PAlib.

Como funciona: Programa normal, usando as rotinas (depois eu falo um pouco delas); depois compila o programa normalmente; copia o PAFS.exe para a mesma pasta do arquivo compilado; cria uma pasta Files e copia os arquivos que vão ser usados no programa ali; abre uma janela dos e vai para a mesma pasta do arquivo compilado; roda:
PAFS nome_do_arquivo_compilado_com_extensao
Ele vai gerar um novo arquivo contendo o arquivo compilado somado aos arquivos da pasta Files.

Vamos ao fonte:
narq = PA_FSInit(); Inicia o File System, dizendo quantos arquivos existem (neste caso eu armazeno na variável narq). Além disso, esse comando cria um array PA_FSFile indexado pelo número do arquivo e contendo diversos dados, tipo nome, extensão, tamanho.

Para carregar um arquivo para a memória, depende das funções de aplicação, assim podemos carregar um arquivo mod, um arquivo raw e uma imagem e termos os três simultaneamente na memória. Quando carrega o segundo arquivo para a mesma aplicação, o primeiro é removido da memória.

Assim, podemos quebrar a barreira dos 4MB. Mas temos que tomar cuidado, pois nesses 4 MB tem que ter espaço para o programa e para os arquivos que forem carregados (e isso é muito fácil de ultrapassar quando a gente começa a gostar de colocar imagens e sons no programa.

O programa que eu criei para testar é um jukebox de músicas MOD. Eu coloquei um fundo parallax para não ficar tudo parado. O programa não começa a música seguinte após terminar a primeira, pois não pretendo gastar tempo de aprendizado otimizando um programa simplório. As setas para cima e para baixo movem a seleção, e o botão A inicia a reprodução do mod escolhido. Eu coloquei 8 mods para não ficar muito grande o arquivo para download (os mods não foram junto com o fonte, quem quiser, peguei esses mods no site http://www.modarchive.com

Link para o programa e os fontes no rapidshare

3 comentários:

Leonardo Zimbres disse...

me lembro de ter lido sobre essa coisa dos 4 megas, que impediriam o desenvolvimento de um sistema linux gráfico para o ds... Muito bom saber mais sobre esse sistema de arquivos, crucial para planejar novos aplicativos.

As imagens que ele carrega, são em algum formato específico? jpeg, bmp?

Guilherme - Homebrew Maker disse...

pode ser gif, png ou jpg, mas jpg e png consomem muita memória por causa das true-colors. Tem opção para colocar qualquer tipo de arquivo, aí cabem os tiles do ds que são muito mais otimizados mas requerem um software adaptador para gerar o arquivo via pc.

Anônimo disse...

Ist Einverstanden, das sehr nГјtzliche StГјck cialis bestellen paypal cialis generika aus deutschland [url=http//t7-isis.org]viagra f?r die frau erfahrungsberichte[/url]