Making a Game Boy Game. Part 1: Getting Started
invisibleup.neocities.org
invisibleup.neocities.org
Allegedly, if you didn't do this, Nintendo would reject your game outright.
[1]: https://en.wikipedia.org/wiki/HLT_(x86_instruction)#History_...
For embedded software without an os it is not uncommon when not explicitly doing something to enter a spin table.
So there's not much difference between a Game Boy and a modern computer in that particular regard, other than the many thick abstraction layers between the system call invocation and the halt instruction.
Just type "ps ax" into your shell, most processes will be in state "S", sleeping because of a system call.
My point is, you kind of have to go out of your way to spin CPU without actually having any work in front of you.
So it's normal to just enter a little loop in your code, often one that waits for a flag that's set by an interrupt routine that runs in response to vertical blank or a timer or something. So your loop is literally just waiting for time to pass. Load flag, is flag zero, repeat loop if zero, that sort of thing, over and over again.
But with the gameboy's halt functionality, you can add a halt in there, I guess: halt, load flag, is flag zero, repeat loop if zero. Then the CPU can go dormant until the next interrupt, rather than spending its time running that loop. (It might wake up needlessly, if some other interrupt occurs, but it'll still be no more expensive than the loop.)
* Part 1 - https://invisibleup.neocities.org/articles/18/
* Part 2 - https://invisibleup.neocities.org/articles/19/
* Part 3 - https://invisibleup.neocities.org/articles/20/
It was cool at first, but I ended up too deep in the weeds with platform idiosyncrasies to really get much actual C knowledge.
Of course, there are more intricacies the deeper you dig below the surface, but for the original Game Boy, that is more of a concern for emulators that aim at going towards 100% compatibility. As a game developer, you can probably stay at the surprisingly small apparent surface for quite some time (and at least the earlier Game Boy games often did).
Things like converting a png to a bitmap array for storage were always fun, but tooling mostly handled that for you.
The apis like dma and io? Or something else?
Neocities' description truly resonates with me:
> Neocities is a social network of 216,300 web sites that are
> bringing back the lost individual creativity of the web. We
> offer free static web hosting and tools that allow you to
> create your own web site. Join us!IMHO, it's mostly just that "you can freely host a static website on the same services programmers use to freely host source code" isn't a well-known thing outside of the programming community. GitHub/GitLab/etc. should do some outreach at the digital-art/interactive-media departments of universities.
https://web.archive.org/web/19981212025222/http://www.geocit...
2. Create the game! Sprites, animations, sounds, game code for all parts.
Then I test play, and iterate until it’s ready to share.
Starting from scratch like this website is like starting from step zero, not step one.