Welcome to 2024 Dr. Sbaitso. We've been waiting for you.
An unofficial, fan-made modern recreation for retro-computing enthusiasts.
HELLO <GITHUB-USER>
, MY NAME IS DOCTOR SBAITSO.
I AM HERE TO HELP YOU.
SAY WHATEVER IS IN YOUR MIND FREELY,
OUR CONVERSATION WILL BE KEPT IN STRICT CONFIDENCE.
MEMORY CONTENTS WILL BE WIPED OFF AFTER YOU LEAVE,
SO, TELL ME ABOUT YOUR PROBLEMS.
A front-end for Dr. Sbaitso created in Zig
and Raylib 5.5
: For modern Desktops as a standalone application.
For historical context on what Dr. Sbaitso is read the wikipedia article.
This will not run without the backend-system which I have not made public yet as it needs more work. This version of Dr. Sbaitso is intended to build just enough of this version that it is nearly indistinguishable from the original however it will never be an exact clone.
Additionally, I will eventually build a plugin system for swapping out the voice synthesis with other systems. And furthermore a plugin system for having a true AI powered backend (such as ChatGPT) to control the good Dr.'s mind.
While I don't antcipate this project to be terribly complex it should offer a good example of how to use true native OS threading in a GUI-based application such as Raylib. All cross-thread communication happens via the use of thread-safe queues. Anything that potentially blocks the Raylib event loop will occur in an auxillary thread. Additionally, should an auxillary thread need to communicate back to the main Raylib thread there is a "main thread" dispatcher to handle this.
- The Dr.'s original voice
- A native app: No DosBox, DosBox-X, DosBox-Staging, FreeDOS, VirtualBox or x86-Box required!
- Faithful recreation of the Dr.'s Turbo C DOS environment
- All of the Dr's original text-to-speech responses
- Ability to change background color, font, forground color
- More to come...
- When running in default mode, the game loads up a
.json
definition file of responses - These responses were harvested from the original's binary and should be nearly accurate.
- Like the original, the app announces the
Creative Labs
banner, asks for the user's name and greets the user with the canonical introduction. - At this point, the user can type any questions or statements to kick off the conversation.
- Upon submitting a statement or question, the app will attempt to match the user's input with an appropriate response. Responses are not random but round-robin like the original. This simple idea mitigates the end-user from having to hear too many repeated responses.
- If the user repeats what they typed in, a special response category is used taunting the user about saying the same thing twice. There are actually two categories for this.
- If the user enters garbage like:
@als398$#$#%
, a response category for garbage input is used. Detecting garbage is not as straightforward as you would think, so this isn't done yet. - If the user curses; (bad words), the app will chastise the user or potentially go into
parity
error mode like the original Dr. Sbaitso app did. Parity mode is what happens when the Dr. refuses to process your disgusting filth! - If still no response is found, a category of generic responses will be used to move the conversation forward and encourage dialog between the user and the good Doctor.
- Finally, when a valid response is selected the app will dispatch the text to the speech-synthesis engine in a dedicated thread where it will immediately be heard by the end user and rendered to the screen.
- Modernized, newer canned responses to make Dr. Sbaitso aware of current times. He will know about new things like: Tik-Tok, Harry Styles and Domingo
- Ability to change background color, font color, font style
- Ability to enable/disable CRT shader, or enable/disable CRT monitor border
- Ability to swap speech-synthesis backends
- Ability to adjust prosody and or tone, volume, pitch, speed of speech engine
- Ability to plugin in an AI brain like ChatGPT, or other systems
- Various easter-eggs, retro-computing references, etc
- The Dr. may become impatient if you don't say anything after awhile.
- Ask him to tell you a joke!
- If he asks for an age: "ARE YOU SERIOUS? HOW OLD ARE YOU?", any user repsponse will be followed up with something like: "WAIT A FEW MORE YEARS, KID" even you type a non integer response. If you type an age: 77 you'll get "I PREFER SOMEONE YOUNGER".
- In the strings dump of sbaitso.exe some responses are pre-quoted like: "`2TOO LITTLE DATA, SO I MAKE BIG" this causes
them to follow up with something special like:
- 1 => Give user ability to ontinue ew patient
uit ....
- 2 => Adjust screen to 40 characters per line instead of the normal 80
- 3 => Change the color
- 4 => Do an age challenge
- Parity is not included in this list, but that's the only other easter egg.
- 1 => Give user ability to ontinue ew patient