Back to writing

Night Light (1995)

    Table of contents
  1. Introduction
  2. Extracting the assets
  3. A second copy
  4. Turn on your night light
  5. The missing menu files
  6. Conclusion

Introduction (§)

When I was a kid, one of the computer games I played was Night Light, by GTE Entertainment. It's about Pandora the cat and Pixel the dog exploring the house in the dark after all the people have gone out for the night.

This game stuck in my memory in the way that only a formative childhood game can. There is something about the game mechanic of using the mouse as a flashlight that's very appealing to me, though of course I don't know if this is cause or effect.

For the past several years, I have occasionally been reminded of the game and tried to search for it online, only to come up empty handed. Finally, in 2018, a youtuber named Vulnerose Plays did a playthrough and also uploaded the ISO to the Internet Archive. The majority of comments on that video are from other people saying they'd been searching high and low for the game, too [1].

At the time of this writing, I have not actually played the game using the provided iso, as it would require me to emulate an older version of Windows and I haven't gotten around to doing it yet. But, I recently had the inspiration to reproduce the basic mechanic using javascript canvas, and that brings us to today.

[1] spoiler alert, but there's a better copy here: https://archive.org/details/night-light_202208

Extracting the assets (§)

I think some readers might be interested to know how I got the images out of the game without playing it, so I'll walk you through a bit of that here.

I used 7-zip to open the .iso file and browse the contents. Sometimes, you'll find that a game's assets are embedded into the .exe itself, and that makes things more difficult. Graciously, this game has the majority of its assets laid out in folders as separate files, which is great. It's not too hard to find a LIGHT.BMP and DARK.BMP for each level.

These images are 512x344, and they've got a hardcoded shadow underneath the game's HUD. But what are those megabyte-sized .mov files?

These video files contain 80 frames, each a tile of a larger image. I used ffmpeg to take the video frames apart, with ffmpeg -i DARK.MOV %03d.png.

The first 16 frames can be stitched together in a 4x4 grid to produce a 1024x688 image, and the last 64 frames can be stitched 8x8 to produce a 2048x1376 image. It's quite astonishing to see these levels in such high resolution after all these years.

I deleted 01-16 from each folder, then updated my stitch.py to take a --grid argument, and stitched the remaining 64 images together for each level.

I also extracted the audio clues and converted them to flac. Unfortunately, lots of the source files were corrupted, with an excess of zero bytes making them impossible to decode.

I wrote ffdecodetest.py to help me with this sort of task. The backyard and living room levels got particularly rekt, with only three and one clue passing the test, respectively.

A second copy (§)

When I originally published this article in April, the next sentence was:

If by some very lucky chance you have a copy of this CD, perhaps you could try re-ripping it for us.

And that's what happened!

I got an email from Josh Henderson who also has a CD of the game. He kindly extracted the ISO and uploaded it to archive.org: https://archive.org/details/night-light_202208

Thank you again Josh!

I popped this one open with 7-zip and got all 471 clues in mint condition.

So, all I had to do next was copy the canvas code I wrote last time and start shedding some light on things.

Turn on your night light (§)

Double-click on each game to go fullscreen. Just to be clear, I haven't recreated any of the actual puzzle gameplay, I'm just demoing the flashlight mechanic.

Your browser might prevent the clue audios from playing if you haven't clicked on anything in the document yet. Now's a good time to click something. How about this:

The missing menu files (§)

I'm glad that the level images were easy to extract, since those were the most important parts for me. I'm also glad we recovered all of the clues. However, I really would like to get the main menu images and the staff credit portraits out as well.

I looked through all the files with 7z, expecting to find a .bmp or a tiled .mov representing the menu, and I'm simply stumped. I don't see them anywhere. The closest thing I could find was MMCHOICE.MOV, where Pixel and Pandora discuss the level options, but it's cropped in on them.

The game uses this kind of video file as an overlay whenever it needs to put the talking characters in front of the game. If you look through the QTPUZZLE folder you'll find many more of these.

So, it's not like mmchoice.mov is damaged, or cropped accidentally. But, like the puzzles, I expect to find the loading screen, the main menu art, and the credits photos in their own files. I just don't see any more tiled movs or bitmaps. There are 18 .pic files, but those are just BACKMASK.PIC, FOREMASK.PIC, and a set of LIGHT.PIC and DARK.PIC for each of the eight levels.

Perhaps I simply missed something, or perhaps they are embedded somewhere else, though I don't know why that would be. The game's NIGHTMPC.EXE is 7.7 MB, which seems big enough to hold some secrets. I searched through the binary for BMP and MOV headers but didn't have any luck, and 7-zip doesn't open it the way it does with some executables.

My understanding is that the game is supposed to work on both Windows and Mac: many of the game resources are provided in duplicate (BMP/PIC, WAV/AIF), but as far as binaries go I only see exe. What's up with that?

If you discover anything, send me an email!

Along the way, I also found these image masks which give a hint as to how some of the click detection was done, which I think is very clever. Each of these cells has a unique RGB color — so the programmers could make each color represent a choice for the user to click on.

Conclusion (§)

If you watch Tom Scott, you may have seen his video about Need for Speed, a sentimental visit to the real life location after which a level from the game was modeled.

All the things that we create, whether you have a big audience or whether you're just making stuff for the folks close to you, sure, maybe those things you make will be forgotten. Or maybe those things you create will get laid down as someone's long term memory, and affect them a lot later in their life. So, make nice things. Try to give people something they'll be nostalgic about. You never know what impressions you might be making for the future.

A kind thank you to all of these people:

Have fun!


View this document's history

Contact me: writing@voussoir.net

If you would like to subscribe for more, add this to your RSS reader: https://voussoir.net/writing/writing.atom