[Day 3] - 100 days of code em C
Hoje busquei entender melhor como estão funcionando os registradores de 16 bits que são feitos a partir da junção de dois registradores de 8 bits do gameboy, é bem maneiro eles nao podem ser usados qualquer combinação que quiser podendo apenas ser AF,BC,DE,HL certamente eles aparentemente possuem responsabilidades bem definidas e essa limitação em não poder usar quaquer certamente é mais física mesmo em como é projetado o hardware e isso valerá um estudo depois, dito isso tenho achado extremamente interessante essa speculiaridades dessa CPU no mais tentei entender como funcionava em C para eu juntar os dois bytes e fazer um de 16 e basicamente não muda muita coisa no processo de efetuar o bitwise, cheguei a fazer uma implementaçãozinha rápida para ver como vai ficar e ficou basicamente assim:
#include <stdint.h>
#include <stdio.h>
int main() {
uint8_t b = 0xAA;
uint8_t c = 0x1B;
uint16_t d = ((uint16_t)b) << 8;
d = d | c;
printf("0x%04X \n", d);
return 0;
}
no mais eu gosto bastante de desenvolver com TDD porém ainda não sei exatamente como fazer testes em C, eu cheguei a eu mesmo implementar a minha abordagem e talvez eu coloque isso pra rolar e ir aprimorando só pelo roleplay de aprender mais sobre C durante o processo, no mais me indicaram uma talk(The Ultimate Game Boy Talk - Michael Steil) que parece bem completinha sobre o gameboy porém ainda não consegui assistir completamente, mas até onde vi realmente traz muita coisa de modelos diferentes entre outras coisas assim que na documentação não encontrei, além disso encontrei uma documentação bem maneira de uma galera fazendo emuladores bem diversos, provavelmente vou dar uma lida por que eles falam bastante de como foi o processo e tals e isso me interessa mais do que necessariamente só ir e implementar. Acho que pra hoje foi legal pra lembrar algumas coisas sobre manipulação de bits que acabo não usando a todo momento.