inmates  crazy stuff  images  links  info
 ------- =========== ------ ----- ----


pieces of the universe

Technical problem with Starship Titanic
Posted to %afda by pieceoftheuniverse on 11th December 2000

Tommi came up with this one:

> First sorry, this message isn't so very related to this forum, but as most
> of the DNA fans are played the startship titanic I guess I might found some
> help here.
> I got this error everytime I try to play ST.


> I have reported to the bug report, but I don't think they will help me
> because this is so "old" game.

Well, they'll be sure to let you know one way or another -- if nothing else, you'll get an automated response reading "We are sorry this game does not perform up to your needs. However, it works just fine for us, so it must be all your fault, in which case you've voided the warrantee. Happy service!"

Apologies in advance. Although I had nothing to do with it. No, really.

> And again sorry if I offended someone by posting this message to this forum.

I'm secretly very offended, but I won't tell anyone.

Actually, I'm surprised at how this looks very much like a creation story. Let's take a closer look (and you'll excuse the added comments, I'm sure).

> ----------------------------------------
> ST start up log file
> ----------------------------------------

The introduction, something similar to "This is the way things were."

In the beginning, there was the Program, and the Program spake the Code, which inputted into an easily manufactured text document for reference later. And the Program did say:
> Constructed OSScreenManager()

And there was an OSScreenManager, and the Program saw it, and saw it was passable.

And the Program went back to work, this time saying:
> Constructing CMainGameWindow
> CMainGameWindow::Create()
> Enter CMainGameWindow::ApplicationStarting
> CMainGameWindow::LoadGame
> Game loaded

And the game was loaded, and the Program looked down at what he had done and thought it was up to spec, or at least close enough so that no one would notice the difference.

The Program then went back to work, and started simply by
> Creating Window

And then
> Setting mode

But it was not enough. So the Program specified what kind of mode to set.
> Setting video mode (640 x 480), 16 bpp

And the Program looked, and saw his stuff was pretty neat-o.

The Program took a peek at stuff running in the background, and figured it didn't need any of that stuff anymore. So he sent out the Code to do his dirty work for him:
> At DestroyFrontAndBackBuffers
> After DestroyFrontAndBackBuffers

There. Now there was enough memory to do the things he wanted. It warned the system it was about to begin:
> About to create DirectDrawManager

And all took heed and cowered before its might.
> Creating DirectDraw driver
> Calling DirectDrawCreate
> Atfer DirectDrawCreate
> Connecting to DirectDraw2 interface
> Creating DirectDraw driver
> Constructing DirectDrawManager
> Created DirectDrawManager

And the DirectDraw was created; the Program looked at the DirectDraw, and saw it would work properly. Well, maybe.

But it was not quite ready to perform what it wanted it to do, and so the Program began customizing:
> Initialising video surfaces
> Creating full screen surface
> Setting cooperative level
> Setting DD display mode
> DirectDraw::SetDisplayMode (640 x 480), 16 bpp

And the customization was complete. Just to be sure everything was in order, the Program requested a check of systems.
> Running DirectDraw Diagnostic...
> Device supports colour fill
> Total video memory = 31559680 bytes = 30820K
> Can do Src colourkey in hardware
> Can do Dest colourkey in hardware
> Finished DirectDraw Diagnostic

And all was well and good. Now for the nitty-gritty:
> Creating simple primary none flipping surface
> Creating SystemMem back surface
> Created full screen surface
> Creating the front render surface
> Creating the back render surfaces
> Loading fonts

So that was done. But the Program was not yet finished. It said unto the hosts of the Code "Come, let us create something slightly less than our own image, or some derivation thereof. And so the Program
> Initialising cursors

And then it began to set to work
> Constructing mouse cursor

When it was finished, the Program
> Loading mouse cursor images
> Starting LoadCursorImages
> Exit LoadCursorImages
> Loaded mouse cursor images
> Constructed mouse cursor
> Turning main cursor on
> Showing main cursor

And the Program said to the mouse cursor "All this memory allocation I give to you for you to roam free and do what you wont. But do not so much as touch the video decompressor in the middle of this allocation, for that lies the way to fallacy and error messages; to take that is to welcome the land of dev/null, where there is much termination and gnashing of C."

So the mouse cursor hung around for a bit, but the Program could tell it was bored. So the Program created a companion:
> Creating text cursor
> Constructing text cursor
> Constructed text cursor

And the mouse cursor and the text cursor were happy together, roaming as they were wont around the memory allocation. The Program decided to go around and take care of some other things, leaving them to their own devices.

The Program began preparing the afterworld for all of the cursor's progeny
> Clearing surfaces
> Building game view

But who would watch over them in the afterworld? The Program had enough to do running the system as it was. Hmmmm...
> Building game manager
> Constructing CGameManager
> Creating Input handler
> Creating OS input translator
> Creating Game State
> Creating SoundManager
> Constructing QSoundManager
> QSoundManager::Create
> Creating MusicRoom helper
> Creating TrueTalk manager
> Finished constructing CGameManager

There! That should do it. Now just to link the real world to the hereafter...
> Binding Game (0)
> Ready to run...

And the Program looked over it all, and saw it was decent enough to go public with. So the Program got ready to announce to the User that all was prepared for him.
> Init current view
> GetLastError = 0x0 - Toiminto on suoritettu.

What was this? Trouble!

The Program descended upon the memory allocation he had created for the mouse and text cursors, and saw that they had partaken of the forbidden video decompressor. The Program then said: "Mouse Cursor, I know that you took of the video decompressor."

The mouse cursor quailed and pointed towards the text cursor. "It made me!" it cried pitifully.

"Is this true?" asked the Program, and the text cursor concurred.

"But," typed the text cursor, "it wasn't my fault! The user put it in the instructions!"

The Program was mollified, and set about the Unmaking.

> Unable to create video decompressor!

The Program accepted the message, and put that aside.
> Init current node

The memory allocation was wiped, and the cursors met their fate in dev/null
> Init current room

The afterlife was wiped, killing all of the Game Managers.

> Force refresh

The Program did it all over, thinking that maybe it was something it had done.

> Exit CMainGameWindow::ApplicationStarting

[repeat sequence]

> ------------------
> STStartUp complete

Okay. So now all was as before. Now...

...And the Program looked over it all, and saw it was decent enough to go public with. So the Program got ready to announce to the User that all was prepared for him.
> GetLastError = 0x0 - Toiminto on suoritettu.
> Unable to create video decompressor!

Damn. Well, time to call it quits for today, anyway. Maybe it would work better in the next rotation. He would have to tell the bitshift operator in the morning.
> --------------------------------
> ST close down log file
> --------------------------------

"So shall it be written, so shall it be done."

> Destroying window
> Destroying Screen manager
> Destroying DirectDrawManager
> Destroying DirectDraw driver
> ------------------
> ST close down complete

And the Program wiped itself from existence, much to the chagrin of the User.


back  up