If someone wants to add the snes9x core to bizhawk, I'd be down to use that. If you want to craft a neural net bot in c++ for max performance, you'll need a C/C++ based Open Source emulator. There's:
higan, which is GPLv3, my cmd prompt isn't (ugh) reading the PATH variable to run make, so it's being a pain in general. If you get higan to build let me know if you had to do anything special.
Askye:
I think we can get by using C# instead of Lua by using the C# interface of the scripts. It would probably also make bizhawk more extensible if we could use .NET languages to create scripts instead of Lua by making our own plugin interface. This way, we could write a .dll in C++ or C# that uses functions we expose. It gives us way more control and better debugging if we can debug our plugins and scripts using Visual Studio. C# will be faster than LUA, but it also could be used to create an API that C++ implementations of any of these languages. If we go with C# there's a library that allows us to program like we're using CUDA but build to OpenCL or CUDA depending on the targeted gfx card called
cudafy. That would be nice for me because i'm running AMD in my PC, which obviously doesn't support CUDA.
Also, using Visual Studio to create these allows us to navigate other's code so much faster and easier.
I'm also thinking that we create a more abstract set of functions for getting the neural net's inputs so we can train the network using different mario games easier, by pre-defining the memory space in the inputs we use. On another note, if there's a NEAT/Neural network where someone's done the legwork for us, we should use it. There's
es-hyperneat in c#,
website, based on:
sharpneat. These places kind of just throw software to the wild without documentation, however.(lol)
I'm going to take a look at these different NEAT implementations. My real question is: what does it mean to train a network on static inputs/outputs, and how is that different from a standard network?