-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Memórias #2
Comments
O chip8 endereça 4096 bytes, então de cara não seria possível alocar tudo na pequena ram do atmega328. A As ROMs são carregadas em 0x200 (512) e o esses 512 bytes inicias são reservados para o sistema. Talvez onde partes do emulador ficariam em antigas implementações de hardware (?). Foi escolhida para testes a ROM BRIX. Ela tem 280 bytes e não utiliza mais que 20 bytes de ram, então aquele vetor de 300 bytes foi alocado na ram do atmega328. Quando é necessário testar outra ROM esse vetor era aumentado. No entatanto a parte que corresponde a ROM nesse vetor, poderia ir para flash do atmega328, liberando assim uma boa ram. Tal otimização ainda não era prioridade e nem necessária. Também é necessário alocar a pilha na RAM, por isso o outro vetor. Porém ele deveria ter o dobro de tamanho já que são 16 de 16 bit. Lá está errado, não havia percebido. Valeu. Desta maneira não é necessário alocar todo o resto da memória para execução da BRIX, de outras ROMs e da maioria do chip8, acredito. A principal dificuldade do projeto não foi a limitação do atmega328 e sim a velocidade de comunição do display que eu tenho disponível. E claro, roda Crysis. |
Sabendo que o Arduino Uno possúi:
Por que das seguintes escolhas de tamanho?
Outra: segundo a documentação, a stack é um pilha de valores de 16bit, e não 8bit. Isso tem a ver com o atmega328 também?
The text was updated successfully, but these errors were encountered: