move generation is nearly done the same way as archimedes chess (with some optimalisation changes), because it doesn't care how you code it and i liked this interface. i made the engine myself, wins against archimedes chess. It has a depht of 5 instead of the original 3 and way better evaluation. It is too slow for scratch, instead use turbowarp: https://turbowarp.org/1090070249?stuck