Making blorbs from GIF files

Continuing the discussion from Building Blorbs for Infocom's V6 games:

There’s lots about converting blorbs and co to .GIFs, but what about the other way round? Is there anything on that?

(NOTE: I want to create a game in the future using blorbs, so I have at least a year! :sweat_smile:)

1 Like

What do you mean by “from GIFs”? The pix2gif program is an intermediate step to making PNG files for use in blorb files.

1 Like

But how do I then create those blorb files? I’ve looked all around and tried everything, nothing seems to work.

A blorb file is a container for other files. It contains a manifest and all your other files. You need some tools to do the packaging. Here are a few links that may be helpful:
Andrew Plotkin’s Blorb page
David Griffith’s blorb tools
Graham Nelson’s Blorb page

3 Likes

I expanded on things that Graham did to create my blorbtools package. These include Graham’s original Perl-based scripts for creating and manipulating Blorb files.

Once you have some sound files, you then need to make a blurb file. This is the manifest @Warrigal speaks of. It maps the sound files to meaningful constants that can be used in an Inform6 program and indicates what executable you wish to include. This is what I used for Uninvited (David Griffith / uninvited · GitLab):

storyfile "uninvited.z5" include
sound Bark		"sound/dogbark.aiff"
sound Cathedral		"sound/cathedral.aiff"
sound DoorClose		"sound/doorclose.aiff"
sound CellDoor		"sound/celldoor.aiff"
sound Explosion		"sound/explode.aiff"
sound Faucet 		"sound/faucet.aiff"
!sound Fire		"sound/fire.aiff"
sound Spray		"sound/spray.aiff"
sound Match1		"sound/match1.aiff"
sound Match2		"sound/match2.aiff"
sound MatchFumble	"sound/fumble.aiff"
sound Thunder1		"sound/thunder1.aiff"
sound Thunder2		"sound/thunder2.aiff"
sound Thunder3		"sound/thunder3.aiff"
sound ZombieAttack	"sound/zombiegroan.aiff"
sound ZombieRun		"sound/zombiehiss.aiff"

Then you need to call pblorb to get Inform6 code implementing these constants. I modified pblorb to emit ZIL constants if that’s what you want.

pblorb -i foo.blurb -o blurb.inf

Here’s what the output for Uninvited:

!  Reading from sound/uninvited.blurb
!  pblorb 3.1 [executing on Monday 17 April 2023 at 04:29:13]
!  The blorb spell (safely protect a small object as though in a strong box)
!  Creating Inform6 manifest from sound/uninvited.blurb
Constant SOUND_Bark = 3;
Constant SOUND_Cathedral = 4;
Constant SOUND_DoorClose = 5;
Constant SOUND_CellDoor = 6;
Constant SOUND_Explosion = 7;
Constant SOUND_Faucet = 8;
Constant SOUND_Spray = 9;
Constant SOUND_Match1 = 10;
Constant SOUND_Match2 = 11;
Constant SOUND_MatchFumble = 12;
Constant SOUND_Thunder1 = 13;
Constant SOUND_Thunder2 = 14;
Constant SOUND_Thunder3 = 15;
Constant SOUND_ZombieAttack = 16;
Constant SOUND_ZombieRun = 17;
!  Manifest complete.

To play a sound with Inform6, you can either use Z-machine assembly directly or use L. Ross Raszewski’s sound.h library. It’s very basic, but it does work. I’ve been meaning to expand it to, among other things, make it cross-compatible with Glulx output as much as is possible.

PlaySound(SOUND_Explosion);

Include blurb.inf somewhere near the beginning of the your program. Now you can compile the program. Then call pblorb again, without the -i or -z options to indicate that pblorb should generate a Blorb file:

pblorb foo.blurb -o foo.zblorb

It’ll read the manifest again and build the Blorb.

I have a soundtestpackage that I used in figuring out sound programming and getting Frotz to do sound and graphics which I’ll upload to the IF Archive in a couple days.

4 Likes

I have cleaned up my demonstration program and made it available at https://gitlab.com/DavidGriffith/soundtest. Please check it out, make suggestions, and point out stuff I may have missed.

As-is, I have this set up to build using GNU Make under Linux or some other flavor of Unix. It should work unchanged under macOS. I don’t know what Windows wants to see here.

2 Likes

(Slightly silly question): How can you run perl on windows without spending 45 minutes waiting for perl to download?

1 Like

As far as I know, you can’t. You’ll need to download Python. You’ll also need this if you decide to make a Parchment-compatible game in the future.

I forgot to include a link to the tools that I use. There’s a folder of blorb-related tools at the IF Archive, specifically: Index: if-archive/programming/blorb

I think the one I use is IBlorb (third from bottom at the time of writing), described as “a Blorb 2.0 packager and resource manager, by L. Ross Raszewski”. These are MS-DOS executables, but they work with Windows 7 (not sure about later versions of Windows). These do not require Python, but I’m not sure if they will do the ZIL/z6-specific stuff that you need. I’m sure they will, as you’re essentially just packaging files based on what’s in the manifest. If my presumption is wrong, then someone will no doubt correct me.

1 Like

Great, thanks! I’ll need some more specifications on how to use it (the python ones didn’t accept anything for me, I use python). Once I get into making them, I’ll ask for some more advice :grin:

1 Like

I’m told that Strawberry Perl is good, up-to-date, and doesn’t take that long to download: https://strawberryperl.com/

1 Like

I’ll try it. I was looking into using Perl Blorb because iBlorb doesn’t run on my computer. Thanks!

(But does StrawberryPerl work with it??..)

I’ve never used it on anything other than Linux or FreeBSD.

1 Like