Des Cavernes dans le poquette (1982)   9 comments

For those anticipating the second Impact Softwear game, my apologies. It turned out The Quest was quite solidly RPG rather than adventure. I added a note to my last post with some screenshots.

But that leaves us room for an entirely different oddball game! Allow me to first discuss the French computer industry.

The early 80s were chaos; no particular manufacturer was dominant, and the French had their own standards that gave difficulty to importers. Instead of video signals in NTSC (US, Japan) and PAL (most of Europe), France had SECAM. An adapter was required, and it caused (for example) the VIC-20 to only work in black and white. Also, all keyboards in France (as had been standard for a long time) used AZERTY standard instead of QWERTY.

Amidst this chaos, the publication Hebdogiciel was founded by Gérard Ceccaldi in late 1983. It was a weekly that printed software listings for the entire menagerie of French computers. In the 6 January 1984 issue it printed the top 15 computers by number of listings sent in. Leading the pack were Texas Instruments with the TI-99/4A, Oric with the Oric-1, and Sinclair with the ZX81. (If you’re wondering why not the ZX Spectrum, the ZX81 came in France early, but the ZX Spectrum came out late. By the time it arrived the Oric had eaten up a chunk of the same market.)

A 1986 issue via eBay.

Noteworthy for today is that 4 of the systems in the top 15 — added together, 15% of listings sent in — were pocket computers. Specifically: the Hewlett-Packard HP-41, Casio FX-702P, Sharp PC-1500, and Sharp PC-1211. These are essentially beefed-up programmable calculators. Sharp had one out in 1977 that used assembly language, and by 1980 companies were coming out with programmable calculators that used BASIC.

The Sharp 1211, first out in 1980, was also released by Tandy as the TRS-80 Pocket Computer. I’ve seen many US and UK source code publications now, some of them system-agnostic, and the level of pocket computer coverage was not nearly as high as it was in France.

Here’s a video cued up to where someone plays a Lunar Lander game on a TRS-80 Pocket Computer:

This is all meant to lead to the fact it wasn’t odd for Charles Feydy’s game Des Cavernes dans le poquette (“The Caverns in My Pocket”) to appear as a type-in an a French computer magazine. Specifically, the code was for TRS-80 Pocket Computer, and appeared in the Tandy-focused magazine Trace in their October 1982 issue.

What is unusual is that it manages to squeeze an entire adventure game (kind of) in 4K.

I wanted badly to run the original.

There is such a thing as pocket computer emulation (see: PockEmul) and I tested it out a bit, but I found I really needed the original model for compatibility (either the Tandy PC-1 or the Sharp 1211) and it isn’t supported. I did find an old beta copy of PockEmul that has the 1211 but it gets listed as “experimental” and it broke in my attempts to use it.

I was able to run the PC-2 (that’s the next Tandy machine, also just a Sharp PC-1500) but was running into cryptic issues involving slight changes in the BASIC syntax and the system itself. For example, in the PC-1 version you can write F=4F meaning “the variable F is 4 times F”; that is, 4F with no symbol between the 4 and F assumes a multiplication. This no longer works in the PC-2 version. You need to write 4*F instead. The character limit is tight enough that if you try to add a multiplication sign there, you’ll bust the limit of memory, so you need to remove characters elsewhere to compensate.

The biggest issue is that the original game uses arrays in a way where memory-bleed is nearly a feature. Essentially, before the game starts, you’re supposed to set A$(22) all the way up to A$(65) to a series of text lines, like A$(22)=”E PORTE”. This uses a different part of memory to squeeze even more out of the PC-1. However, on the PC-2 the array memory gets reset on starting a new program, so any reference to A$(22) will be an out-of-array bug rather than the text it is supposed to have.

This error means “Array specified without first DIMensioning it.”

Fortunately, there’s a way to play without the calculator, because Jim Gerrie has ported the game to TRS-80 MC-10. In the process he translated it to English.

The text of the magazine talks about exploring dark and dangerous caves. There are apparently 10 “keys” that can be applied to monsters and get points, but it is unclear the author even intended for it to be possible to get 10 keys. I have gotten, out of all the maps I have tested, 0 of them.

Unfortunately, the game is very broken in terms of generating a level that can be beaten, even moreso than Orb. Jim Gerrie is still worried there might be a bug in his code, but the original is so hard to run I haven’t been able to compare.

You start by picking a “number” which is a random seed, followed by a “difficulty level” (no idea what that does, I didn’t see any difference) and then you’re off to the races:

In this room, you can go all four directions; the PATH, TUNNEL, and LARGE are all just for color. If there’s a monster they will be blocking at least one exit.

In this randomly generated level, there are exits to the north and the south, and one TROLL blocking the north and south. Since there is nowhere to go, the only command that works here is RESTART.

Sometimes it felt like I could actually explore a bit, and get the vibe of an environment:

However, this invariably always got shut down a few turns later when I get stuck again.

Seriously, where are the keys? Would this game have been printed in a magazine if it was so impossible or is it just leveraging some obscure aspects of the PC-1 hardware that would make the experience quite different than it is now?

So this post is maybe just a placeholder for if some expert on pocket computers can come along and tell us what’s really going on. The thread here is where the game was first unearthed and it includes a text file of the source code.

(Shoutout to Strident and Jim Gerrie who helped me get the files for this all this way back in this thread.)

Posted June 28, 2024 by Jason Dyer in Interactive Fiction, Video Games

Tagged with

9 responses to “Des Cavernes dans le poquette (1982)

Subscribe to comments with RSS.

  1. Wow, what an obscurity! These pocket computer games actually had a period of (relative) popularity in Japan, with whole magazines dedicated to them.

    Anyway, I can speak French, so I read the original magazine article, and maybe this info would help:

    There are 10 magical rings (not keys), that can kill certain monsters (by pressing K) that they correspond to. You’re actually supposed to start the game with the first one, with the main purpose being to find the other 9. If you press J, it’s supposed to give you an inventory of the rings that you currently have. So maybe you were missing that? It makes it sound like the rooms are generated on the fly during the game, so maybe the other rings won’t show up until you use the first one or something? In any case, if you see a ring in a room, you press SHFT H to get it.

    I don’t know about the original, but it does seem there may be some issues with the recent port. For instance: “There is a large” (clearly missing the room name that describes), and “a big washed out tavern” (maybe just a mistranslation, but unless I’m missing something, there are no French equivalents for any of those words except ‘a big’ in the game’s vocabulary).

    This reminds me… Do you have “Le Vampire Fou” coming up soon? Online sources are contradictory about it being from ’82 or ’83.

    • From the text block on p. 63-5, lines 22 to 65 which were supposed to get put in using the memory trick, it looks to me like the game is supposed to produce adjective-noun descriptions; so 29 “grand” could be followed by 22 “chemin” or 23 “e porte” to make “grand chemin” or “grande porte.” I don’t know if there’s any way of handling adjectives that don’t work like that, like “vieux” or “large,” or if the code produces “vieuxe porte” and “largee trappe.” Or would produce, if it worked. (“Large” means “wide” rather than “large,” correct?)

      This reminds me a bit of the Inform standard for printing text descriptions, where “a door (open)” and “a sack (empty)” save the program from having to worry about whether to change the article for an open door or an empty sack. Though I’m not sure that’s the motivation, since last I checked Inform looked ahead at the string it was about to print and changed the indefinite article depending on whether it started with a vowel. (Back in the day I spent some time working on a way to let you tell it how to handle things like “one” and “yttrium,” and I made some progress, but it definitely involved messing with forces that I did not comprehend.)

      Also it seems from the commentary that it’s so memory-optimized that it includes “GOTO E2” rather than “GOTO 100”–which I think means that E2 is being used as the scientific notation representation of 100, that is, 1e2? Yow.

      • Oh hey, last October otistdog fixed my indefinite article code and awarded me a mad science trophy for it! I’m touched.

      • Yeah, large means wide. I’m not sure how the code works, but that method would produce non-grammatical stuff, as you noted, because you would need to have “vielle porte”, since that’s the correct feminine form, and it doesn’t seem to be in the vocabulary. So maybe only certain adjectives are allowed to be paired with certain nouns so that doesn’t happen? Looking at the screenshots again made me realize how bad the translation is, though. Like, I think he was taking “trappe” to just mean trap (which would generally be embûche or piège), but in this case it would actually mean trapdoor or hatch, etc. I know these are translation rather than coding errors, but it just makes me wonder if he may have messed the whole thing up somehow and rendered it unplayable. I’m far from a coding expert, though.

        One thing that struck me, however, is that there are supposed to be ten rings, but there only seem to be five monsters listed in the vocabulary. If each ring is supposed to match up with an individual monster type to (K)ill it, then what does that really mean? Also, how is the program numbering them and determining which is the right one to use? The instructions in the article say that if you don’t have the right ring for the right monster blocking you, then the (K) just won’t work, but I don’t even see anything described in the code other than a generic “anneau”, which wouldn’t differentiate any of them, so I’m confused as to what it would actually list when you hit (J) to take your ring inventory? I’m probably just missing stuff here due to my distinct lack of coding expertise, though…

    • the key commands are in the trs-80 mc-10 version, but since no keys appear, they don’t help (taking inventory just gets NO!)

      I assume the translation is very one-to-one and I’m not worried if it is messy but I suspect that something is still getting dropped in wrong (it should never have just be a “LARGE” but a “LARGE DOOR” or whatnot)

      Le Vampire Fou I have as 83. Where is 82 coming from?

      • Well, it seems like the whole port might just be broken, aside from the bad/weird translation. Although, as noted in my last comment, I can’t even figure out how some of the mechanics in the original would work, so I’m probably in way over my head here.

        As for Le Vampire Fou, it’s listed as ’82 on one or two French sites, but in poking around a bit, I think that probably comes from Le Breton’s origin story as found in a couple of interviews. It seems like he might have originally written it in ’82 and then shopped it around, until Ciel Bleu published it in the autumn of ’83. One other thing to watch out for with him is “Le Virus Cosmique”, from ’83, which seems to be the very obscure original version of “Épidemie” from before Froggy was founded. It’s barely listed anywhere, but the disk images are out there.

  2. just to share a couple technical things for reference:

    First off, I have uploaded my 1.1 beta version of the emulator which has the older calculator in it. The newest (2.0 and later) versions of the emulator don’t have it, but those versions also requires a $3 a month subscription to use the “paste text” function anyway. https://drive.google.com/file/d/16ogfTVLsaC70ZD-5Pj70zOVxiN09Tbfh/view?usp=sharing

    When you have a calculator open, the way to “zoom” the size is to double click. It will fill whatever window size you have open. You can double click again to shrink to normal.

    If you right click on the calculator itself, you’ll get a special menu, one of them is keyboard simulator. That’s where you can put in texts and then have it type them in for you without being unbearably tedious. Unfortunately even with the built in delay function I think it can sometime miss a little, but you can always retype a line if you have to.

    To use any of these calculators, there’s always at the very least RUN and PRO mode. PRO is programming and where your lines need to be typed.

    If you look at the text file, the lines have “:” marks after the lines just like the magazine source code, but those get automatically when you enter them in, so you can remove all of them. In addition, the lines like “A” that start lines need to have “:” marks after. So the first line starts 10 “A”:

    I still wondering if I’m missing some major trick. It’s clear the way it is using the data entry is super hacky and an unintended method of working. I dropped my edited file at the Github here. It includes changing the first two prompts to just N and L (number and level) to save character space, and I changed when it was asking for an order to an asterisk character. I also changed the multiplication to be written out. Theoretically it means it doesn’t exceed character limit, and the addition of the “:” marks doesn’t matter because they were previously spaces. Could probably abbreviate some of the other text lines if you had to.

    https://github.com/jasonbdyer/classic-basic/blob/master/Des-Cavernes.txt

    I’ve also put one way I tried to input the data, but since I haven’t gotten it to ever work, this way is probably wrong

    https://github.com/jasonbdyer/classic-basic/blob/master/Des-Cavernes-Data

    the article has a one-line source code way of entering the data but I tried it and it didn’t work either. The main thing that is mystifying is that the article never once uses a DIM command.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.