Here it is
First alpha release of my gamebook engine.
It supports both French gamebooks (livres dont vous êtes le héros, de la série Défis Fantastiques pour l'instant):
...and of course English gamebooks:
The switch between languages (in the menus) is done at compilation time by changing the line #define LNG FRA // Language of this Gamebook to #define LNG ENG.
The app is mute by default (no sound). In the intro screen, the B button allows to switch between the 3 different font sizes (tiny, normal, big). The font size is the one used only when displaying the book, the menus keep their own respective font sizes.
To navigate in most of the screens (book and menus): DOWN goes down 1-line, RIGHT goes down 1-page, UP goes up 1-line and LEFT up 1-page. A validates and B cancels. C comes back to the title. Use B to switch between book and menu.
There is a demo mode of the engine, cutting the access to SD-Card and using a "dummy" book, thus allowing the app to run in simulators such as gbsim (you can also run this demo mode on your real Gamebuino by transferring the HEX if you want).
The demo mode is activated thanks to the very first line of DF01.ino: #define debug. Just comment it if you don't want demo mode (but please read below first).
In this demo mode, there is only 1 paragraph (defaulting at all the numbers). All the features are there: stats editting, test your luck, roll dice, etc. all but the fight with ennemies. Read below why it's not there (yet).
I am also proud to have implemented my own numeric keyboard, much easier to enter numbers with it than with the regular gb.keyboard:
In the live mode (unavailable, see below), access to SD-Card is correctly implemented, I was able to scroll through a digital copy Steve Jackson's first gamebook "The Warlock Of Firetop Mountain", turn to different paragraphs, etc. The digital gamebook must be in a specific format and copied to SD-Card as a .LDV file, I made an utility for that purpose: Gamebookuino, I will release it on http://mougino.free.fr when I'm 100% done with the engine and I'm sure there is no change needed anymore in the format...
Important: why it's only an alpha release, and why there is no live mode:
The engine is too big
If you comment the //#define debug you'll see the sketch is 31,352 bytes, of a 30,592 byte maximum.
The engine is not complete yet, I need to implement the fights (should take a couple more dozens of KB) and in the ideal world I'd love to support bitmap streaming from inside the .LDV gamebook on SD-Card.
The 31.3 KB size is after many passes to get the best compromise between SRAM use and flash memory use (BTW: SRAM is used at 1,979 bytes of a 2048 limit)... This is even after falling back the numeric keyboard to a native (less memory consuming) gb.keyboard (have a look at the #define SIMPLIFIED_NUMKEYBOARD in "numKeyboard.ino"...)
I have been studying a lot of ways to solve this problem, but I think I'll eventually have to rewrite most of the engine, at least the menus parts that are too specific and give a great user experience at the expense of the memory involved.
This will mean getting rid of (a big part of) what's been done so far That's why I wanted to share it with the community (and have a hard copy somewhere) before rewriting it all...
Enough chit-chat, a zip of the source can be downloaded here: http://mougino.free.fr/tmp/DF01_v0.1.zip
Have fun trying it and don't forget to give feedback!
Nicolas