Onyx Ring library v1.3C (2004.06.08)?

Does anyone happen to have a copy of the Onyx Ring library/extension’s version 1.3C dated Jun 08 2004? The latest version I have found at IF Archive is version 1.3B released circa Mar 12 2004.

According to the Wayback Machine link at OnyxRing:Inform Programming & Development, the filename was “orlib_complete.zip”, but the ZIP file was unfortunately not captured. Individual files can still be downloaded from captures, but at least one link (orentrypoints.h) seems to have an incorrect file at the other end – though in that case it is listed as unchanged since the previous version.

4 Likes

For anyone coming across this thread: I put together a pseudo-1.3C+ release, which includes the latest version of every file that I could hunt down with the Wayback Machine. The dates match those listed for the Jun 08 2004 1.3C release, except for the two files listed as changed or new since the last release in the link above – in these cases the post-1.3C version is included. As far as I can tell, this is the final published version of everything in the library, including the documentation PDF.

I’ve uploaded it to the IF Archive, and it’s been added to the unprocessed list at: https://ifarchive.org/if-archive/unprocessed/ORLibrary1.3c.zip. It should keep the same filename even after it reaches its final home. When that happens, I will update the listing on the I6 resources page to include the permanent link.

EDIT: The ZIP file has been processed at IF Archive, and its final location is https://ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/ORLibrary1.3c.zip.

6 Likes

kudos, Otis, for this good restoration & preservation work !

Best regards from Italy,
dott. Piergiorgio.

Thank God for the wayback machine.

First, sorry to bump an old thread. I’m not super active (or even just active) in my IF hobby these days, but I do occasionally Google my handle and so ran across this post. A quick search of my drive ran across the actual 1.0c zip file. I’m sure you recreated it fine; however, if you are interested I can send it to you.

Additionally, of possible interest is a folder I found on my drive named “2006.01.08 - Support for 6.32” which appears to have a couple of files newer than the last release date. For example, the last comment in ORAction.h reads:

! 2005.02.20 Expanded to include all possible verbs from the library

I really enjoyed putting work into the ORLib back then. Truthfully, I don’t know the state of the files in this newer-but-never-released-folder, nor do I know if it would be of interest to anyone, but let me know if it is and I can send it to you.

7 Likes

Thanks for signing up to let us know, and to offer to share the final revisions of the library!

If you post them here or send them to me via direct message, I will be happy to compare the individual files with the “1.3C+” version and collate the result. It definitely sounds like you have a few updates that I wasn’t able to recover from the web archive.

1 Like

I just DM’d you with the files.

Thanks for digging in to this; let me know if I can help in any way.

Jim (OnyxRing)

1 Like

I’ve had a chance to review the files provided by @onyxring. There are a few differences between the 1.3C version provided from his records and the pseudo-1.3C+ release that I uploaded to IF Archive. They are:

Differences between 1.3C and 1.3C+:

or_blankgame.inf	[2004.02.27 -> 2004.02.27 / changes to capitalization of constants]
oraction.h			[2004.03.07 -> 2004.03.07 / insignificant difference; newline at end of file]
oractionmenu.h		[2004.04.28 -> 2004.04.28 / files compare differently but only changes to white space?]
oractionqueue.h		[2004.03.05 -> 2004.03.05 / insignificant difference; newline at end of file]
ordynastring.h		[2004.02.11 -> 2005.01.08]
orentrypoints.h		[2004.01.24 -> 2004.01.24 / insignificant difference; newline at end of file]
orknowledgetopic.h	[2004.02.28 -> 2006.01.16 / two revisions since 1.3C per notes]
ORLib_complete.nfo	[1.3C+ version has additional notes from me regarding Oct 2022 reconstruction]

I also learned:

  1. The filenames in the official 1.3C version are all in camel case instead of the lower case seen in my pseudo package. The lower case filenames are actually a problem on case-sensitive file systems, so the community is not very well-served by the version currently at IFArchive. (I may have changed the filenames; I vaguely recall having to run them through a CRLF converter, so maybe I was working in Windows at the time and didn’t realize this was creating an issue.)

  2. Within the in the OR_BlankGame.inf template file (provided to make it as easy as possible to use the library), there were changes to capitalizations in some constants between version 1.3B and 1.3C. There was no record in the revision history about these changes, so I used the out-of-date 1.3B version in the pseudo-1.3C+ release. These shouldn’t have a deleterious effect since the compiler ignores the case of identifiers.

I think it might be desirable to submit the official 1.3C release as provided by onyxring to the IFArchive, with an extra folder in the ZIP archive holding the updated ORDynastring.h and ORKnowledgeTopic.h files plus an explanatory note that these represent the last known versions for 1.3. The intent would be to replace the existing uploaded version (to be discarded without going into the /old directory) due to the filename issue. Does anyone have an objection to that plan?

3 Likes

indeed, with 80 files containing 399 #include, is hard to find a solution to the CasEsENsivEnESs… aside the macros (?) like

#ifndef <REPLACEWITHINCLUDENAME>_DONEREPLACE

whose complicates the matter; definitivamente isn’t a thing whose can be solved with an handful of ln-s…

Best regards from Italy,
dott. Piergiorgio.

In the future, I hope there will be scripting languages which can read a text file and look for specific patterns. That would make it a lot easier to find this sort of problem.

*nix environment have these tools since 1970s/early 80s; sed, awk, perl are the three best known.

Best regards from Italy,
dott. Piergiorgio.

2 Likes

Regarding the library in general: Although I swept this up during my collection of all the I6-related material I could find, I’ve only just started to look at this library in any detail.

It’s an impressive piece of work, with high ease-of-use. Documentation is thin, and there are some small bugs affecting text output here and there (especially regarding line spacing), but the handful of experiments I’ve tried to date have been generally positive.

The implementation of doors in ORDoor.h is especially useful, but there seems to be an issue introduced into GoSub() by ORCantGoOdd.h that prevents doors of the ORDoor class from being moved to the correct location by MoveFloatingObjects(). The specific lines in question seem to be:

[ GoSub i j k df movewith thedir old_loc x;
	...
	actors_location=j;		! in StdLib 6/11, this line is: location = j
	MoveFloatingObjects();
	...
];

I haven’t reviewed the whole replacement routine, but it seems pretty straightforward to set up a local workaround:

[ GoSub i j k df movewith thedir old_loc x;
	...
	actors_location=j;
	@push location;			! stash current value of location
	location = j;			! set value of location for use by MoveFloatingObjects()
	MoveFloatingObjects();
	@pull location;			! retrieve stashed value
	...
];

which handles the issue but may not be the best long-term fix.

Then maybe the large number of includes and files isn’t much of a problem after all?

FYI, I’ve submitted the “official” version of 1.3C to the IF Archive, and will post back as it winds its way through to its final destination. The uploaded version contains the two files that were updated after the 1.3C release, but in a separate folder for optional use.

I’ve asked for the current “pseudo-1.3C” version (from my previous upload) to be replaced, to prevent any confusion.

In the materials that he sent, Jim Fisher was kind enough to include a very partial version of what was slated to be the 1.3D release. This was being written to work in conjunction with Inform 6.32. As he put it:

Additionally, for a period of time I was working with several people who were putting in work on a new version of the std library and compiler (which at the time I referred to together as 6.32). As I recall, there were some new features which I intended to take advantage of in the next iteration of ORLib; however, I don’t know if that revision of the library/compiler ever saw the light of day, nor do I know if the features made it into the final branch.

I’ve attached a collection of changes I made to the library since then, which I don’t think ever made it to the site, in case someone finds them useful…

I’ve looked through it a bit, and it seems like a lot more work would be necessary to convert the entire library. Much of the work done was converting the #ifdef logic put in place to ensure proper use of the library’s code. Does anyone want to weigh in as to whether this fractional library should be submitted to the IF Archive?

1 Like

This file was processed pretty quickly and is now available at https://ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/ORLib_Complete.1.3c-incl-updates.zip.

1 Like