choice4genesis - a ChoiceScript clone for the Sega Genesis
A downloadable tool
Github repo: https://github.com/haroldo-ok/choice4genesis
This is a ChoiceScript clone that generates Sega Genesis ROMs. If can be used for visual novels or simple multimedia presentations.
It takes a bunch of scripts and images and, from that, it generates SGDK-compatible .c and .res files. Those are then compiled into a Sega Genesis compatible ROM, which can be run on an emulator or even on real hardware.
The syntax of the scripts is somewhat based on ChoiceScript, but it is not exactly the same.
Please note that this is an early work and progress, and it is not as stable or user-friendly as it is planned to become.
Example script:
* font "damieng.com - Hourglass font.png"
* background "Blue Hedgehog.png"
* create intVar, 1
* create boolVar, true
* temp localInt, 2
* set localInt, intVar + 3
* create playingMusic, false
* choice
* if playingMusic
# Stop the music
* stop music, sound
OK, music is stopped.
* set playingMusic, false
* elseif FALSE
This should not appear
This should not play
* music "Actraiser - Fillmore.vgm"
* else
# Play some music
* music "Actraiser - Fillmore.vgm"
OK, playing Fillmore, from Actraiser.
* set playingMusic, true
# Play a voice
* sound "ready.wav"
OK, playing a digital voice.
# Show a smiley
* image "Smiley.png", at(30, 3)
OK... showing a smiley!
# Fourth choice
This is a test.
Second line.
Third line.
* choice
# Yet another choice
You chose this.
# One more choice
You chose that.
# Increment a number
* set intVar, intVar + 1
The value is now ${intVar}!
# More options...
* choice
# Test window
* window from(1, 1), to(10, 4)
Window 1
* flush nowait
* window from(29, 1), size(10, 6)
Window 2
* flush nowait
* window default
Returning to the default window
* flush
* clear background, foreground
Clearing everything
# Go to another scene
* goto_scene test
Full documentation of the commands
Available at: https://github.com/haroldo-ok/choice4genesis/blob/main/README.md
Commands implemented so far
font
Loads a .png file containing the 8x8 font. Note that the image must be paletized, with 16 colors. Future versions of this tool will probably convert the image automagically.
background
Loads a .png file as a background image. Note that the image must be paletized, with 16 colors. Future versions of this tool will probably convert the image automagically.
choice
Presents a menu to the user, allowing to choose between multiple options.
music
Starts playing a .vgm/.xgm music in the background.
sound
Plays a digitized sound.
stop
Stops the music and/or sound.
image
Allows drawing a small image in .png format somewhere in the background. Note that the image must be paletized, with 16 colors. Future versions of this tool will probably convert the image automagically.
wait
Waits for a few seconds.
create
Creates a global variable.
temp
Creates a local variable. temp variables are only visible inside the scene file that created them.
set
Changes the current value of an existing variable.
if/elseif/else
Allows a certain block of code to only be executed on a given condition.
goto_scene
Jumps to a different scene. The scene files are located on the script directory, and have the .choice extension.
window
Allows to configure the region of the screen that will be used for the text popups and menus.
flush
Immediately shows the contents of the current text buffer on the text window; if passed the flag nowait, does not wait for a button press.
clear
Allows to clear regions of the screen.
Planned commands
The tool accepts those commands, but, at the moment, they don't do anything.
label
Will allow to mark a place where the goto command can jump to.
goto
Will jump to a given label from anywhere on the same scene.
scene_list
Will configure the default sequence in which the scenes will be played.
finish
Will jump to the next scene in the game.
video
Will play a full screen video.
| Updated | 5 days ago |
| Status | In development |
| Category | Tool |
| Author | haroldo-ok |
| Genre | Visual Novel |
| Tags | 16-bit, choicescript, multimedia, Retro, Sega Genesis, sgdk, transpiler |
Download
Click download now to get access to the following files:
Development log
- Version 0.9.1 is now available!5 days ago
- Version 0.9.0 is now available!6 days ago
- Improved documentation18 days ago
- Version 0.8.0 is now available!22 days ago
- Version 0.7.0 is now available!26 days ago
- Version 0.6.0 is now available!29 days ago
- Version 0.5.0 is now available!33 days ago
- Version 0.4.0 is now available!35 days ago


Comments
Log in with itch.io to leave a comment.
Will this work or is it possible to make this work for Game Gear games?
Regardless of the answer, it's nice to see a VM creation tool for the Genesis. Will try this soon. :)
Thanks for the review! For now, it won't work for GG games, but it should be possible to adapt it, since it is mostly generating C code. Maybe in the future..
Until then, one possible alternative would be to use twee2sam, since the Game Gear can run Master System games.
Thanks for the response!
Yeah, I haven't actually worked out how to use twee2sam. Then again, a lot of basic coding eludes me since I overthink a lot of simple stuff. My biggest hurdle is trying to figure out where to put certain coding lines.
For example: where do I put the code for making a character move and where do I out the coding for how to interact? Does it matter? If so, how much?
Stuff like that.
Wow! Just what I've been dreaming of. Can't wait to test it out.
Thanks! I hope it proves useful. 😀