/jc_reborn

An open-source engine for the classic "Johnny Castaway" screensaver, written in C and libSDL2

Primary LanguageCGNU General Public License v3.0GPL-3.0

Hunter's Notes on Johnny Reborn

This is a forked version of jc_reborn from https://github.com/jno6809/jc_reborn

I've finished porting to the following systems (each generally has their own branch in this repository)

  • Low Memory and SDL1 Systems
  • Sega Dreamcast
  • RetroFW based devices
  • InkPlate and microcontroller based boards
  • Bash and text only systems

If you're looking to get Johnny onto a photo frame or embedded display device, I recommend checking out the inkplate port. As part of that, I pre-rendered every frame from every scene and a minimal ordering of walk paths from scene to scene. Roughly 20K files, fits on a 1GB SD card, in the rawframes directory.

I've half-finished ports to the following systems, I'll fully finish these one day (again, generally they all have their own branch in this repository)

  • Xbox
  • emscripten (ugh the need for a message passing interface between engine and screen render)

I've most recently worked on:

  • Closed Captions - Adding descriptive text output for all actions and scenes, support closed captioning and screen readers for the visually impaired. You can find the script files in the closed_captions branch

Next up:

  • Adding voice samples for the closed captioning and scene descriptions
  • Fixing spelling and grammatical mistakes in captions, adding more dramatic flair

Here are systems that I'll target in the future

  • Switch
  • Serenity OS
  • Oculus Go era VR hardware
  • Dos (allegro backend?)
  • Have any suggestions? Let me know!

Johnny Reborn

Johnny Reborn is an open source engine for the classic Johnny Castaway screen saver, developed by Dynamix for Windows 3.x and published by Sierra, back in 1992.

It is written in C using the SDL2 library, and was successfully compiled and tested on Linux as well as Windows (MinGW), both 32 and 64 bits.

How to install

For the screen saver to work, you'll need the two data files from the original software: RESOURCE.MAP and RESOURCE.001.

Optionnaly, if you want sounds, you'll need some extra files as well. You can get them here, from the github repository of the "JCOS" project - another port of the scrantics engine.

As a result, here is what your directory should look like:

File name size (bytes) md5
RESOURCE.MAP 1461 8bb6c99e9129806b5089a39d24228a36
RESOURCE.001 1175645 374e6d05c5e0acd88fb5af748948c899
sound0.wav 10768 53695b0df262c2a8772f69b95fd89463
sound1.wav 11264 35d08fdf2b29fc784cbec78b1fe9a7f2
sound2.wav 1536 f93710cc6f70633393423a8a152a2c85
sound3.wav 7680 05a08cd60579e3ebcf26d650a185df25
sound4.wav 5120 be4dff1a2a8e0fc612993280df721e0d
sound5.wav 3072 24deaef44c8b5bb84678978564818103
sound6.wav 15872 eb1055b6cf3d6d7361e9a00e8b088036
sound7.wav 15360 cab94bace3ef401238daded2e2acec34
sound8.wav 2560 39515446ceb703084d446bd3c64bfbb0
sound9.wav 3584 f86d5ce3a43cbe56a8af996427d5c173
sound10.wav 20480 5b8535f625094aa491bf8e6246342c77
sound12.wav 5632 8c173a95da644082e573a0a67ee6d6a3
sound14.wav 11776 e064634cfb9125889ce06314ca01a1ea
sound15.wav 3072 b3db873332dda51e925533c009352c90
sound16.wav 7680 2eabfe83958db0cad77a3a9492d65fe7
sound17.wav 4608 2497d51f0e1da6b000dae82090531008
sound18.wav 14336 994a5d06f9ff416215f1874bc330e769
sound19.wav 3584 5e9cb5a08f39cf555c9662d921a0fed7
sound20.wav 7680 80e7eb0e0c384a51e642e982446fcf1d
sound21.wav 5120 1a3ab0c7cec89d7d1cd620abdd161d91
sound22.wav 1536 a0f4179f4877cf49122cd87ac7908a1e
sound23.wav 2048 52fc04e523af3b28c4c6758cdbcafb84
sound24.wav 9728 5a6696cda2a07969522ac62db3e66757

All files must be copied in the same directory as the jc_reborn executable.

How to run

By default, the engine runs full screen and plays the life of Johnny on his island, as the original did.

But, if you're curious about how the engine works, you may type jc_reborn help and see the different options available. Feel free to try them and explore the inner workings of Screen Antics !

Current status

Short version

Currently, Johnny reborn is in "work in progress" state. Even so, as of January 2020, every scene works with only some inaccuracies here and there.

That means that the engine globally works in an acceptable way, but more needs to be done to fully understand a number of details and faithfully reproduce the behaviour of the original engine.

Long version

Some great work was already made by Hans Milling for "Johnny Castaway Open Source" (JCOS), back in 2015. This includes:

  • the parsing and decoding of all the data files
  • the understanding of many instructions which constitute TTM and ADS scripts

What Johnny Reborn brings is:

  • the understanding of nearly every TTM and ADS instruction, and their parameters
  • the algorithm for Johnny to transitionnaly walk from scene to scene was implemented. Accuracy is not bad though not perfect.
  • the same can be said about the algorithm which randomly chooses scenes to be played.
  • as well as the algorithm which draws the island at a random place, clouds, etc.
  • all the work was made by observing the behaviour of the original software and trying to reproduce it as accurately as possible. For a better result, a complete disassembly of the original exe may be necessary - but wasn't done to this point.

Thanks

I never would have been able to write Johnny Reborn without, directly or indirectly, all the people listed below. Many thanks to them.

Hans Milling thanks a number of people for giving him (or helping him find) some info about the original engine. They should not be forgotten, and I thank them - indirectly - as well:

  • Jeff Tunnel - For helping getting in contact with some of the original developers
  • Kevin and Liam Ryan - Assisting with information about the resource files
  • Jaap - Helping in finding the format of the resource files
  • Gregori - Assisting with the Lempel-Ziv decompression
  • Guido - The author of the xBaK project that led to understanding the TTM and ADS commands.