If you just want to see what I’ve done:
I don’t know if it is legal for me to give this out with the roms so I took the game roms out but left the test roms in.
To run a game: add the rom to the included files, go to obj_rom -> create event -> code named “rom file info”, and look at the commented out code to see what to do.
Also I think this should really go without saying but in order for it to run at a decent FPS it needs to be compiled.
A bit of history:
After I wrote a chip 8 emulator, I made a Gameboy emulator and used it for my AI class by having a neural network play tetras over the internet. That went really well but there were some really big problems with how I actually coded it.
So at the start of this semester I tried again but this time making it a Gameboy color because they really are not different. It was a lot easier this time around because of how much I've learned from my first try. But sadly I did not know enough. Timing, sound, and a few miner errors are forcing me to start again from scratch. But before I start programming I would like to know more about how sound works.
Sound confuses the hell out of me.
Gameboy has 2 sound channels. Just what is a sound channel? How I see it is that there are two sound buffers that are written to by the programmer, is that correct?
The Gameboy allows producing sound in four different ways:
Quadrangular wave patterns with sweep and envelope functions. Quadrangular wave patterns with envelope functions. Voluntary wave patterns from wave RAM. White noise with an envelope function.
So what I think this means is that I'm going to have to make those waves myself and read the Gameboy memory on how to change the waves, I really don't know.
How does all of this work with game maker? I’m pretty sure there has to be an audio buffer that is constantly being written to and constantly being read but what values will I be putting in it? Can game maker even do what I want?
I’ve tried looking at some open source emulators to see how they do it but they are always the most complicated part. I know this is a complex problem but if you have any idea on how any of this stuff works can you please give me some idea on where to start because I’m at a complete loss.