Huge wall decorations

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.
Post Reply
User avatar
Toni Y
Adept
Posts: 221
Joined: Sat Feb 07, 2004 8:54 am
Location: Finland

Huge wall decorations

Post by Toni Y »

Does CSBwin handle wall decorations differently than PCDM? Before I went away I was doing some tests to simulate multistory buildings by using wallitems that extended well past the face of the wall it was on and PCDM handled those fine, but when I tried to use the same wallitems in CSBwin it just shows a garbled thing that doesn't extend beyond the confines of the wall square.

Here's what it looked like in PCDM: http://viila.lethalcode.net/~tylisirn/dm/dm_walls2.png

The wall item: http://viila.lethalcode.net/~tylisirn/huge_wall.png

And in CSBwin: http://viila.lethalcode.net/~tylisirn/W ... CSBwin.png

So, what's the limits in CSBwin? I guess using the alternate skins would be better idea for this anyway?
Toni Ylisirniö
Author of Grave of King Millias, Return of Chaos, and DM2 dungeons.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

differently than PCDM?
No idea what PCDM does.

I think if you change the 'graphics.dat'
in all the required places that you can
display pretty much whatever you like.
I don't think very much is wired into
the engine itself. All the graphics sizes
and offsets are in the 'graphics.dat' and
they must agree with the sizes of the
bitmaps themselves or you will get
garbled results.

Using the 'skins' capability and writing
your own code (by modifying the standard
code) would certainly be the surest way
to get it exactly as you want it. Because
there are no restrictions on size, order,
or placement of anything. And you can
make minor or major modifications for
each different skin.

On the other hand, if you want to use the
standard engine and are having troubles then
forward a very simple test case to me and
I will see why it does not do what you think
it should do. And, perhaps, how to change it.
User avatar
Toni Y
Adept
Posts: 221
Joined: Sat Feb 07, 2004 8:54 am
Location: Finland

Post by Toni Y »

Ah, PCDM doesn't care about the sizes and offsets then I guess. I only compiled the graphics.dat with DMextract, and looking at it in ADGE shows that the coordinates and sizes are not exactly right. I'll see if I can get it fixed by playing with those. I guess that also explains why one of my other wallitems looks garbled in certain views...
Toni Ylisirniö
Author of Grave of King Millias, Return of Chaos, and DM2 dungeons.
User avatar
beowuuf
Archmastiff
Posts: 20687
Joined: Sat Sep 16, 2000 2:00 pm
Location: Basingstoke, UK

Post by beowuuf »

I think that the RTC debate centred around how none of the engines - DM, CSB nor DM2, actualyl shared a perspective! There are subtle differences so that wall sets ofr one will look out for another

Pits were the worst and highlighted the problem first of all when I think gambit was playing around with them a few years ago
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

hi.
Using the 'skins' capability and writing
your own code (by modifying the standard
code) would certainly be the surest way
to get it exactly as you want it. Because
there are no restrictions on size, order,
or placement of anything. And you can
make minor or major modifications for
each different skin.
IMO it is quite true. but it will be applied for only wall set. there can be a lot of tasks if i am willing to inject decorations thing code into exist skinning code.
hopefully both wallset and decoration customization should walk each other way. current wallset customization is at very excellent stage. but decoration customization may need improve.

and a reckless suggestion: custom wall/floor decoration feature like DMPC style.

i remember that wall/floor decoration feature in CustomGraphicsEngine is undefined yet (but is spec almost decided?). utilize it to define new decoration objects.
how to select them in dungeon: reuse current UI, wall/floor decoration selector in CSBuild. allocate index 0x80 or more to select their objects. they should be unused in CSBwin. e.g. 0x80 is CustomWall#1, 0x81 is CustomWall#2, 0x82 is CustomWall#3 and so on. the custom index can be mapped into the index of array of "floor/wall decoration graphic ID" directly defined in each skin.
picture format: 2 pictures are required for one wall decoration, 6 pictures are for a one floor decoration. it will be convenient if A DECORATION GRAPHIC bin file can contains 2 or 6 pictures in it because it won't break current skin def rule "one id for one decoration".
about DMPC style: it is suggestive that decoration picture is displayed centered in each wall/floor position (also stretched if need). i can fight with DMPC, and suggest a set of center positions and stretching factors if need.


but i'm curious to still challenge with skincode words "HasDecoration", "FloorDecorationGraphicOrdinal<rr>", and so on.
i could find their words in CSBwin documentation site.
but i cannot find just "WallDecorationGraphicOrdinal<rr>" yet.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

Good morning.

We have a language barrior.
and a reckless suggestion: custom wall/floor decoration feature
I think you are suggesting major changes to CSBwin.
Development of CSBwin is terminated. I have fixed
some bugs and will continue to do so but I am not
going to add any new features that require more than
a couple lines of code.

Have you tried large Wall Decorations using the
standard engine? I think it might work. I am wlling
to help if you want to try harder.

The Skin code is going to be complex and will require
a lot of work. I have never done it myself except
for 'Proof of Principle'. I have never used the
tools to create the bitmaps or the Graphics.dat
file. If you want to try this, I am willing to help.
=================================
From memory.....I did not look at the code.
I hope I am not misleading you.

"WallDecorationGraphicOrdinal" simply fetches
the wall decoration integer associated with a
particualar wall. It is an 'ordinal' rather than an
'index' because zero is used to mean 'no decoration'.
The first one is numbered 'one'. Remember that
these numbers are relative to the level. 'One' on
level 3 means something different than 'one' on
level 4. There is a table for each level which is
used to convert these 'ordinals' to 'wall decoration
numbers'.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

hi.
thanks for clear answer of development stance for CSBwin 10. i see it.
Have you tried large Wall Decorations using the
standard engine? I think it might work. I am wlling
to help if you want to try harder.
i will try that way when i feel my first plan is difficult to accomplish.

before publishing my optimistic plan i need to invest latest CSBwin if i can realize following thing with it: coexistance of both wallset and custom decoration objects by skinning feature.

i'll work on it, and i may post help request if i get stucked.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

The 'Skin Code' can draw ANYTHING. ANYWHERE
in the viewport.

If you want to draw tall walls then you can do that
directly without any trickery such as tall Decorations.
All you need is for someone to provide the
images and the x-y locations and sizes.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

hi.
The 'Skin Code' can draw ANYTHING. ANYWHERE
in the viewport.
yes, it is quite true. but it needs so much practical skills gained by daily trial and error before you can do so.
what i want to do is to supply the easier way to utilize great technology created by developer for users who need it.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

hi.

just suggestion even if it is rejected in some reasons: how about secondary skin?

allocate 2 skin selection per one dungeon cell.
primary skin: it is for rendering wall set.
secondary skin: for rendering decoration objects as overlay.

it will be able to reuse exist wallset skin codes even if the code is not mine, when custom decoration is needed.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

probably i am searching wrong places. can i test latest viewport compiler?
any of the words WallDecorationGraphicOrdinal, WallDecorationGraphicOrdinalF0 and WallDecorationGraphicOrdinalF1 won't be recognized by ViewportCompiler in CustomGraphicsDemo21 package.

Code: Select all

Viewport Compiler Version 1.2

Error during compile at line 8
Undefined word WallDecorationGraphicOrdinal
Press ENTER

Code: Select all

Viewport Compiler Version 1.2

Error during compile at line 8
Undefined word WallDecorationGraphicOrdinalF0
Press ENTER

Code: Select all

Viewport Compiler Version 1.2

Error during compile at line 8
Undefined word WallDecorationGraphicOrdinalF1
Press ENTER
here is head part of skin code to compile

Code: Select all

// ****************************************************************
//              Do nothing
// ****************************************************************
: NOP
;

: TEST
WallDecorationGraphicOrdinalF1
;
i found alternative way to do equivalent working of WallDecorationGraphicOrdinal by doing trial and errors yesterday.
i could get the following codes by analyzing viewport source code in CSBwin100Src.

Code: Select all

: D3L1p0    F3L1 GetDecoration0 ;
: D3p0      F3 GetDecoration0 ;
: D3R1p0    F3R1 GetDecoration0 ;
: D2L1p0    F2L1 GetDecoration0 ;
: D2p0      F2 GetDecoration0 ;
: D2R1p0    F2R1 GetDecoration0 ;
: D1L1p0    F1L1 GetDecoration0 ;
: D1p0      F1 GetDecoration0 ;
: D1R1p0    F1R1 GetDecoration0 ;
: D0p0      F0 GetDecoration0 ;

: D3L1p1    F3L1DoorRecordIndex ;
: D3p1      F3DoorRecordIndex ;
: D3R1p1    F3R1DoorRecordIndex ;
: D2L1p1    F2L1DoorRecordIndex ;
: D2p1      F2DoorRecordIndex ;
: D2R1p1    F2R1DoorRecordIndex ;
: D1L1p1    F1L1DoorRecordIndex ;
: D1p1      F1DoorRecordIndex ;
: D1R1p1    F1R1DoorRecordIndex ;
: D0p1      F0DoorRecordIndex ;

: D4L1p2    FloorDecorationGraphicOrdinalF4L1 ;
: D4p2      FloorDecorationGraphicOrdinalF4 ;
: D4R1p2    FloorDecorationGraphicOrdinalF4R1 ;
: D3L1p2    FloorDecorationGraphicOrdinalF3L1 ;
: D3p2      FloorDecorationGraphicOrdinalF3 ;
: D3R1p2    FloorDecorationGraphicOrdinalF3R1 ;
: D2L1p2    FloorDecorationGraphicOrdinalF2L1 ;
: D2p2      FloorDecorationGraphicOrdinalF2 ;
: D2R1p2    FloorDecorationGraphicOrdinalF2R1 ;
: D1L1p2    FloorDecorationGraphicOrdinalF1L1 ;
: D1p2      FloorDecorationGraphicOrdinalF1 ;
: D1R1p2    FloorDecorationGraphicOrdinalF1R1 ;
: D0L1p2    FloorDecorationGraphicOrdinalF0L1 ;
: D0p2      FloorDecorationGraphicOrdinalF0 ;
: D0R1p2    FloorDecorationGraphicOrdinalF0R1 ;
i'm testing if their function helps enough to replace StdDrawWallDecoration codes used in default skin code.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

The 'Viewport.cpp' source code is certainly
useful. But the 'Skin0Code.txt' that comes with
the custom graphics demo is actual 'Skin'
code (rather than C++ code) and is probably
a better place to start.

The 'Skin0Code.txt' should display the dungeon
in exactly the same way as the C++ code does.
It used to, anyway. I built it as a test case
as Proof of Completeness.

So if you start with the Skin0Code.txt and then
modify it as necessary, that should be the easy way
to get everything in the proper place.

It has been a long time since I did any of this
and it all appears rather foreign to me now. It
will take a lot of study to become proficient.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

ok.
my trial continues until i knock into any technical difficulty to get over.



help plz! :cry:
my copy of ViewportCompiler.exe cannot recognize 2 words CreateVirtualAffineMask and BitmapInfo. but i confirmed that their words are surely defined in Viewport.cpp of CSBwin100Src. so i believe latest viewport compiler already equips it. would you release latest version of viewport compiler?
i just wanna try both CreateVirtualAffineMask and BitmapInfo.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

Help is on the way.


But I cannot locate the source code for
ViewportCompiler. I am going back
through all my old backups.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

I cannot find the source code.

The latest ViewportCompiler I can find is
version 1.3 24Aug2005

http://www.dianneandpaul.net/CSBwin/Vie ... mpiler.rar

What version are you using?

If necessary, I will rewrite the thing. But I don't
look forward to doing it.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

hi.
i confirmed your new version 1.3 24Aug2005 could resolve the 2 words CreateVirtualAffineMask and BitmapInfo. it would be the latest version i wanted. thank you for finding it!
plz give me some while to examine detail working of their functions.

p.s.
i'm using Version 1.2 included in CustomGraphicsDemo21. time stamp is 2005/08/14 09:57.
User avatar
Paul Stevens
CSBwin Guru
Posts: 4318
Joined: Sun Apr 08, 2001 6:00 pm
Location: Madison, Wisconsin, USA

Post by Paul Stevens »

your new version 1.3 24Aug2005 could resolve the 2 words
It should be the latest that Zyx used when
creating ConfluxIII.

The source code MUST be somewhere. I'll
keep it in back of my head and perhaps locate
it someday.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

hi.
it took a while. here is an example for custom wall decoration stuff by CustomGraphicsEngine.

http://kkdf2.sakura.ne.jp/dmfiles/cgeSa ... .Rev.0.rar

this sample uses normal custom graphics graphics drawing also used by custom wallset stuff. there is no technical advance other than custom wallset stuff.
the most time was spent for writing compiler. that compiler helps to write complex skincode in a procedural language like C. but it doesn't accept strict C programming. it needs to know compiler's habit on usual use. anyway it has no document, i'll write document if anyone try to use it. thanks.
Post Reply

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