projeto massa pra aprender. uma dica antes de ir muito longe na geração de lances: o 8x8 obriga a checar se saiu do tabuleiro em toda direção, e isso enche o código de if. Muita engine começa com mailbox 10x12 (uma borda de casas inválidas em volta) ou com 0x88, onde um & 0x88 já diz se a casa existe. Os dois estão na própria Chess Programming Wiki.
E quando chegar nos lances, monta o teste de perft cedo. Comparar a contagem de nós com os números conhecidos da posição inicial e da Kiwipete pega roque, en passant e promoção errados bem antes de você chegar na busca.