Text Adventure game - help me finish it

slomacuser

Tinkerer
Nov 1, 2021
151
140
43
Hello!

I want to finish text adventure game for Mac OS. The game should look like Zork for Macintosh 128/512k. Simple window, font, font size, maybe save/load game option.

Github files of the original game. I am not a programmer so I got help from cheesestraw from 68KMLA who does not have time for further development but he said I can use the code (See attachment kontra-2025-08b.sit). The game si playable but it needs Mac GUI tweaks. So I made resources in AppMaker for MENUs, WINDOWs and ALERTS (See attachment Kontra APP.sit).

What it needs to be done is to combine this with the game. Can anybody help here finish the game? Thanks!
 

Attachments

  • kontra-2025-08b.sit
    503.4 KB · Views: 31
  • KontraAPP.sit
    18.6 KB · Views: 37

thecloud

Tinkerer
Oct 2, 2025
50
54
18
I think the reason that you're not seeing any replies is that you're asking for a lot more work than you realize. Porting a standard I/O console application to be an event-driven Mac GUI application is a non-trivial task.

AppMaker has generated a set of template source files for you (.c and .h) but almost all of them contain empty function implementations and would need to have that code written. The approach that cheesestraws seems to have taken was to use the SIOUX console library, which accepts the fact that standard I/O console applications are not structured as Mac applications and just runs them in a window, handling all the text drawing and keyboard input. If you don't use SIOUX then you have to write your own code to insert text in the window, handle key and menu events, process window updates, and so on. Also, I don't think a lot of folks here read Slovenian, which adds an extra challenge to understanding the game.

Sorry, this is not a project I have time to take on, but hopefully this comment sparks some discussion and maybe someone who can help more will see the thread. Best of luck!
 

thecloud

Tinkerer
Oct 2, 2025
50
54
18
The app contains several large hardcoded arrays of strings, which you could copy into string list resources ('STR#') using ResEdit as a starting point for localization. There could be a STR# ID=1 "Locations-sl" resource that contained all the strings from locations.c, a STR# ID=2 "Messages-sl" resource for all the strings from messages.c, and so on. To add a translation in another language, you would create another set of STR# resources with different IDs containing the translated strings (say, STR# ID=11 "Locations-en", ID=12 "Messages-en", etc.) Then the code to get a string by index would need to change so it calls the Mac's GetIndString function, passing it the ID of the string list to use. That's the tricky part, because the game engine does it like this:

Code:
platform_write(AREA_LOCATION,locations[engine()->location],true);

Code like that would have to change so it passes a string list ID and index instead of a string, e.g.:

Code:
platform_write(AREA_LOCATION,1,engine()->location,true); // get from STR# ID=1 with index specified by engine()->location

Then you'd modify platform_write() to do something along these lines:

Code:
// listID and index are inputs to this function
Str255 str; // temporary storage for string
int strListID = listID + currentLocaleBase; // say you want a string from STR# ID=1, but in English which we define as +10, so 1+10 = 11
GetIndString(str, strListID, index+1); // string resource index is 1-based
p2cstr(str); // convert Pascal string in place to a C string
// write out the C string as before...
 
Last edited:

Nycturne

Tinkerer
Dec 18, 2024
104
1
64
28
I first learned C using SIOUX back in the 90s, and can confirm everything @thecloud is saying here. Looking at the ask list:

* "Simple window": Not sure what this means? I see the original project supports TTY to be able to layout different parts of the game to different parts of the terminal screen. SIOUX doesn't support TTY, and so it would be a fair project to do so. One reason I installed MkLinux back in the day was that CLI apps on Linux was just easier. Classic Mac last I checked, still lacks a good TTY library that wasn't embedded in apps like Z-Term.
* Font + Size: SIOUX hardcodes these. It's possible to change them in code, but making a GUI option for this (and then persisting the user's preferences) is likely a fair bit of work. It means updating SIOUX to itself be able to handle font changes and recalculate/redraw the window when they change. SIOUX also assumes (rightly so) a monospaced font. So depending on the fonts, it might not be wise to even go down this particular rabbit hole.
* Save/Load: The original project doesn't even implement this, so I'm not sure where someone would even begin here. It's not a given that the game itself is written in such a way that serializing the game state to disk isn't itself a giant PITA.

Honestly, it's generally easier to find someone interested in the _project_ itself, than simply asking someone to do a bunch of work as a favor. To be blunt, if I'm not getting compensated, it's hard to want to take on a project that I'm not invested in, and to put aside my own projects for it.