Shrink Blit

Discuss Chaos Strikes Back for Windows and Linux, an unofficial port of Chaos Strikes Back to PC by Paul Stevens, as well as CSBuild, an associated dungeon editor.

Moderator: Zyx

Forum rules
Please read the Forum rules and policies before posting. You may Image to help finance the hosting costs of this forum.
Post Reply
User avatar
ChristopherReeves
Neophyte
Posts: 6
Joined: Tue Jul 06, 2004 5:13 pm
Location: Sweden
Contact:

Shrink Blit

Post by ChristopherReeves »

Hi,
I'm new to this forum but old in "the" game, been playing both DM and CSB since day one.

At the moment I'm fiddling about with a dungeon of my own and I've got a question on how the game handles the shrinking of the graphical objects. I noticed there is only a big version of each object in graphics.dat (except for the walls and floortiles and such things) and only one sideview of things that can be seen from the side (wall hooks, inscriptions, etc). So I guess there must be some kind of mirror and shrink-routine in the game to save diskmemory.

I've been looking around in the CSBwin-sources but it's not that easy to read if you're not acustomed to atari 68000-code. :-) So my question is, is there a certain shrinking-percent that is applied to all objects or are there static sizes for all 3 levels of all objects? And how does the shrinking routine work?

Are these shrink/mirror-images calculated during gameplay or precalculated and saved in memory somehow?

Brilliant site this is, and a brilliant CSB-port, thanks a million!
/chris
User avatar
Gambit37
Should eat more pies
Posts: 13769
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

Post by Gambit37 »

Hello, and welcome to the forums! I refuse to make any superman jokes.

The scaling information is held in the graphics dat. Every item has coordinates specified for where it should be drawn and how large. This is all stored in structure 558 of the graphics dat, which can be hex edited and new coordinates and sizes specified. I'm doing just that for my new dungeon...

You need to read Charlatan75's notes that go through this in detail. Check out this thread:

http://www.dungeon-master.com/forum/vie ... hp?t=23191
User avatar
Paul Stevens
CSBwin Guru
Posts: 4322
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

Notice that 558 == 0x22e which is the name used in the code.
"Graphic number 22e"
And how does the shrinking routine work?
Nobody knows. Tag0088b2 does all the work. I doubt that the
person who wrote it could figure it out a week later.
User avatar
ChristopherReeves
Neophyte
Posts: 6
Joined: Tue Jul 06, 2004 5:13 pm
Location: Sweden
Contact:

Post by ChristopherReeves »

Thanks for the quick responses and the help!

I've just had a look at the "Charlatan75"-notes and realized this is really complex. :-)

Sorry for being unclear, I'm not making a new dungeon for an existing game. I've begun a humble attempt at programming something that might turn into a new game using the feel and graphics from DM, not sure I'll go all the way though. But as long as it's funny...

So I'll leave the shrink-routine to it's own fate and extract the different sizes from the charlatan-files and just do my own stretch-routine. It won't look exactly the same but I don't intend to make a perfect clone. That market is flooded with quality already, and probably out of my league by far.
:-)

Now, I wish I knew french...
User avatar
ChristopherReeves
Neophyte
Posts: 6
Joined: Tue Jul 06, 2004 5:13 pm
Location: Sweden
Contact:

Post by ChristopherReeves »

Hello again,
having looked closer at the docs I've noticed that the size definitions for each image object just leaves an index to a table of the objects sizes for distances > 1. Has anyone extracted those values, if not, do you know to what bytes in the graphics file the index points to?

The index from one object to another increases with 2. It seems to me it would require 4 bytes to store info on the remaining two sizes of the objects (2 bytes for width and 2 for height). Any clues?

I've extracted the floor-positioning data for all objects, but the Charlatan notes mention something about a "random-add" or something like that to handle when objects are piled up on each other. Any info on that?

Thanks in advance!
/superman
Post Reply

Return to “Chaos Strikes Back for Windows & Linux (CSBWin) / CSBuild”