Hi there,
I'm Gumpy Function, an indie developer creating Game Boy and Game Boy Color homebrew games. I am new to the forum but thought I might see if there were any C programmers interested in helping me finalize a chess puzzle engine as part of a larger project to produce a homebrew game for the Game Boy.
The engine is partially built already. It's a plugin written in C designed to track the pieces on an array and render the board on screen. This plugin works in tandem with GB Studio, an open-source software used to create Game Boy games and handles basically all other functions outside of the chess puzzle engine plugin itself.
Specifically, I'd like to find someone experienced in C to help create additional code that can check for and display legal moves depending on piece selected. Put simply, I am seeking to create a polished chess puzzle engine compatible with GB Studio. It's very likely you may not be familiar with GB Studio or the details in regards to building custom plugins using C but I can help fill in the gaps and connect the dots. A lot of the set up has already been completed, so I hope the unknowns don't scare any of you away.
Currently functional code:
- Chess board renders on screen in full using a stored board array which can be edited using GBVM events in GB Studio.
- Player can move a cursor, pick up a piece and place that piece anywhere on the board. The engine tracks/stores the moved piece, updates the board array accordingly and renders the new positions according to the board array.
- Player can deselect the piece by pressing the 'B' input, the piece is automatically placed back on its previous square, the board array updates and the board renders accordingly.
Code required:
- Create additional code that checks what the currently selected piece is and determines its legal moves based on board positions.
- Update the current render board plugin to display those legal moves on the board.
- Create additional code that returns whether a move is legal or not, preventing illegal moves.
- Create additional code that will allow for a move to be checked against a pre-determined position (checking against a sequence of moves in chess puzzles of variable lengths).
All in all, I am not looking to code in an AI for playing games against a computer (that seems to be too much of stretch for the Game Boy's processing power to be honest), but I do think a game focused on puzzles is a good way to go.
I would be happy to negotiate payment for any assistance.
Please PM if you're interested.
Thanks,
Gumpy.
Looking For A C Programmer To Help Finalize A Chess Puzzle Engine For Nintendo Game Boy
Moderator: Ras
-
- Posts: 1
- Joined: Fri May 02, 2025 2:16 am
- Full name: Tom Lockwood
-
- Posts: 28331
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Looking For A C Programmer To Help Finalize A Chess Puzzle Engine For Nintendo Game Boy
The following points might be helpful for understanding what exactly is required:
* An indication of the limitations of the hardware this is going to run on. Are there tight size restrictions on code or working memory? I remember someone who wanted a chess AI on a microcontroller with only 256 bytes RAM...
* How would the legal moves (presumably of the selected piece only) be indicated on the screen? E.g. by drawing marker symbols in the reachable empty squares or over the pieces that can be captured, or by changing the background color of the reachable squares, or by a (possibly partial) border around the square?
* How should the move indicators be removed? Just by redrawing the entire board position without them? Or is that too slow?
* The part on 'checking moves against a predetermined position' is very vague. What should be checked here? Whether the move is legal? Whether it is part of a stored solution? Note that the solution to a puzzle (say a mate in 3) is not just a single sequence of moves (5 in that case), but is in general a tree, which contains a winning move for every possible method of defense of the losing side. And perhaps also contains refutations of attacking moves that do not lead to (fast enough) checkmate. Without any AI capability all that would have to be stored.
Is it for this machine? That has 32KB RAM. My chess program 'Usurpator' was running in only 8KB RAM (for code + data!) built into a matchbox together with a 6502-compatible CPU, in the late eighties.So 32KB seems huge, even for an AI that non-club-players would have a hard time beating. Something similar in strength to this:
* An indication of the limitations of the hardware this is going to run on. Are there tight size restrictions on code or working memory? I remember someone who wanted a chess AI on a microcontroller with only 256 bytes RAM...
* How would the legal moves (presumably of the selected piece only) be indicated on the screen? E.g. by drawing marker symbols in the reachable empty squares or over the pieces that can be captured, or by changing the background color of the reachable squares, or by a (possibly partial) border around the square?
* How should the move indicators be removed? Just by redrawing the entire board position without them? Or is that too slow?
* The part on 'checking moves against a predetermined position' is very vague. What should be checked here? Whether the move is legal? Whether it is part of a stored solution? Note that the solution to a puzzle (say a mate in 3) is not just a single sequence of moves (5 in that case), but is in general a tree, which contains a winning move for every possible method of defense of the losing side. And perhaps also contains refutations of attacking moves that do not lead to (fast enough) checkmate. Without any AI capability all that would have to be stored.
Is it for this machine? That has 32KB RAM. My chess program 'Usurpator' was running in only 8KB RAM (for code + data!) built into a matchbox together with a 6502-compatible CPU, in the late eighties.So 32KB seems huge, even for an AI that non-club-players would have a hard time beating. Something similar in strength to this:
theme=MV
firstRank=1
symmetry=mirror
Pawn::::a2-h2
Knight:N:::b1,g1
Bishop::::c1,f1
Rook::::a1,h1
Queen::::d1
King::KisO2::e1
Pawn::::a2-h2
Knight:N:::b1,g1
Bishop::::c1,f1
Rook::::a1,h1
Queen::::d1
King::KisO2::e1
-
- Posts: 181
- Joined: Sun Dec 08, 2019 8:16 pm
- Full name: Dmitry Shechtman
Re: Looking For A C Programmer To Help Finalize A Chess Puzzle Engine For Nintendo Game Boy
The Game Boy indeed presents some unique challenges. The working memory of the DMG (the original Game Boy) is only 8 KiB, so Usurpator would have felt right at home there.
I answered Tom's call, albeit a few days too late. Another programmer had already started working on a move generator for the project, and despite all efforts we (Tom and I) couldn't reach a resolution that would satisfy all involved parties. I must say that Tom's design (I cannot divulge any details for obvious reasons) is quite unique and has high chances to succeed.
Game Boy chess, however, is by no means a new concept. I have now started work on a version of LeanChess for Game Boy (after all, the CPU shares much of its instruction set with the 8080). I am especially interested in seeing what can be achieved within the limitations of the DMG.
Wish me luck!
I answered Tom's call, albeit a few days too late. Another programmer had already started working on a move generator for the project, and despite all efforts we (Tom and I) couldn't reach a resolution that would satisfy all involved parties. I must say that Tom's design (I cannot divulge any details for obvious reasons) is quite unique and has high chances to succeed.
Game Boy chess, however, is by no means a new concept. I have now started work on a version of LeanChess for Game Boy (after all, the CPU shares much of its instruction set with the 8080). I am especially interested in seeing what can be achieved within the limitations of the DMG.
Wish me luck!
-
- Posts: 28331
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Looking For A C Programmer To Help Finalize A Chess Puzzle Engine For Nintendo Game Boy
It was not clear to me why the requested programming would be more than an hour of work anyway.