DDDDD     AAAAA   EEEEEEE  DDDDD     AAAAA   L        U     U   SSSSS

D    D   A     A  E        D    D   A     A  L        U     U  S     S

D     D  A     A  E        D     D  A     A  L        U     U  S

D     D  AAAAAAA  EEEEEE   D     D  AAAAAAA  L        U     U   SSSSS

D     D  A     A  E        D     D  A     A  L        U     U        S

D    D   A     A  E        D    D   A     A  L        U     U  S     S

DDDDD    A     A  EEEEEEE  DDDDD    A     A  LLLLLLL   UUUUU    SSSSS

 

                         **  VERSION  3.5  **

 

This file describes the new features, changes, and bug fixes in Daedalus 3.4 and 3.5, that weren’t in the previous two versions. It is only useful if you’re already familiar with Daedalus 3.3 or before and want to know what the newest versions offer. The file is divided into four sections:

·         1) New Features: A list of new features.

·         2) Extended & Improved Features: A list of improvements or changes to existing features.

·         3) Bug Fixes: Bugs and other problems that have been fixed.

·         4) Scripting Additions: New keywords added to the Daedalus scripting language.

For a quick demonstration of some things Daedalus 3.5 can do, start the program, press Alt+1 to start the “Daedalus demos” script, then press F2 to animate yourself running through a Maze.

 

NEW FEATURES

A list of new features in Daedalus 3.4 and 3.5, which means new commands and settings that weren’t present in previous versions:

1. Sphere Mazes: The new “Create / Omega (Shapes) / Omicron (Sphere)” menu command will create a Maze on the surface of a sphere. They are most similar to the existing “Theta (Circle)” Mazes that are disk shaped, except here the Maze is by default drawn flattened. That means passages at the top and bottom which map to the top and bottom of the sphere are wider, because they map to the smaller radius polar areas. To actually see the Maze in sphere form, turn on “Create / Create Settings / Omega (Shapes) / Make Wireframe Also”, which will also create a 3D spherical wireframe in memory of the Maze.

2. CubeFlip transpose: The “Bitmap / Flip and Rotate / 3D Bitmap” dialog has been extended with a “Transpose” option. That will apply a transpose operation along the axis specified.

3. Grippy Socks script: Daedalus comes with a new script called “Grippy Socks”, which is a mental health psych ward simulation. You experience a hospital environment, in which your objective is to find the right medication and other treatments, and then use them so that you can get released. The new “File / Run Script / Grippy Socks” menu command will run it. For more details about this script see http://www.astrolog.org/labyrnth/daedalus/gripsox.htm.

4. Jareth’s Labyrinth script: Daedalus comes with a new script called “Jareth’s Labyrinth”, in which you have 13 hours to solve a giant Maze, and face Jareth at its center. The random Maze contains brick, hedge, and forest sections, and various creatures. This is the second most extensive script that comes with Daedalus, in which only the Hunger Games script is larger. The new “File / Run Script / Jareth's Labyrinth” menu command will run it. For more details about this script see http://www.astrolog.org/labyrnth/daedalus/jareth.htm.

5. Makefiles: Compiling Daedalus’ source code is easier, since the downloads now come with Visual Studio project/solution files for Windows, and a Makefile file for Unix systems.

 

EXTENDED & IMPROVED FEATURES

A list of improvements to existing features, which means new things you can now do with old features that you couldn’t do before, or ways existing features work better than before. Note that some change existing behavior in ways users of previous versions should be aware of:

1. Stereoscopic perspective renderings: The wireframe and patch perspective renderings now support stereoscopic 3D graphics. The “Stereo Width” field in the Dot / Inside Settings dialog will when non-zero cause the bitmap to be split into two displays, showing the scene from slightly different viewpoints. When the two images are looked at together, with one image for each eye, the result is a true 3D effect. Classic 3D glasses, modern 3D movies, Google Cardboard, and random dot stereograms work the same way. The value indicates the distance in coordinate units that the two views are from each other. If the value is negative, the leftmost image will be on the right half instead of on the left.

2. Dragon curve Mazes: Daedalus can generate deterministic fractal pattern Mazes, whose solution path is similar to a Dragon curve fractal. The “Create / Pattern / Hilbert Curve” menu command will (instead of a standard unicursal Hilbert curve) produce a fractal Maze pattern if “Allow Isolations in Fractal” is set. This Maze will be perfect with no loops or isolations. The “World’s Largest Maze” script supports these Mazes, such that this setting will affect the virtual Hilbert curve Labyrinth (F10 option #5) and make it a Dragon curve Maze instead.

3. Zeta wireframe: The “Create / Omega Shapes / Zeta (8 Way)” Maze creation command will now also create a wireframe of the Maze’s passages in memory, if “Create / Create Settings / Omega (Shapes) / Make Wireframe Also” is set.

4. Cube wireframe: The “Create / 3D / Planair” Maze creation command will now create a wireframe of the Maze’s walls in memory, if “Create / Create Settings / Omega (Shapes) / Make Wireframe Also” is set, and also if the Planair creation string is set to generate a Maze on the surface of a cube (specifically set to “e2d3f0b1 e7a3f3c1 e4b3f6d1 e1c3f5a1 c4d0a0b4 a2d6c6b2”). This wireframe will depict a cube, in which each face is a different color, and with arrows pointing to the middle of opposite faces to indicate entrance and exit points.

5. Wilson/Aldous start: The Wilson’s and Aldous-Broder Maze creation commands will pick a specific point to start creating the Maze from, when “Create Settings / Value Is Random Chance” is off. Normally these Maze creation commands start creating from a randomly chosen location.

6. Larger font: Daedalus has a new fixed width internal bitmap font, containing 9x15 pixel characters. (This is 1.5x the size of the existing 6x10 pixel font.) The Turtle scripting operation can draw in this new font by specifying "T3".

7. Hunger Games improved: The Hunger Games simulation script has been updated in several ways. Arena selection character "9" will produce a stadium similar to as seen in the 10th Hunger Games. Hill option “H9” will produce just a rectangular stadium effect within the arena. Naming setting “s5” will give tributes the names from the 10th Hunger Games (e.g. “Lucy Gray”).

 

BUG FIXES

A list of bugs and other problems in Daedalus 3.3, all of which have been fixed in Daedalus 3.5:

1. Inside ceiling display: In the perspective inside view, tall variable height walls in the distance would be drawn on top of nearer ceiling markings. The ceiling will now act as an opaque barrier no different from other blocks.

2. Stereo display: The stereoscopic view would sometimes display garbage pixels in the rightmost column.

3. X11 bitmap error: Saving to X11 bitmap format would leave off the filename within the file produced, which could produce an invalid file that the Unix xsetroot command wouldn’t understand.

4. Unix editing bugs: When compiling Daedalus on some Unix systems (e.g. with the g++ compiler) some bitmap operations would only operate on the first part of the bitmap, such as inverting the bitmap. Also on some Unix systems, bitmaps with an odd vertical dimension would sometimes cause illegal memory accesses off the bottom of the bitmap.

5. Scrollbar omission: Scrollbars wouldn’t scroll when selecting the dial and dragging it to another location. Also, right clicking on a scrollbar and selecting “Scroll Here”, “Left Edge”, “Right Edge”, “Top”, or “Bottom” wouldn’t do anything.

6. Script text display: Some Daedalus scripts would display bad line breaks in text, i.e. would show multiple line breaks close to each other, which looked bad. In old versions of Windows, displaying message boxes would require programmers to insert line breaks at appropriate points, to avoid message boxes as wide as the screen. In newer versions of Windows, message boxes are kept to a certain width, and line breaks are automatically inserted. The manually inserted line breaks would sometimes be placed right after an automatic line break, resulting in a line with just a few words in it.

 

SCRIPTING ADDITIONS

A list of new operations, variables, and functions added to the Daedalus scripting language. This only affects those who write their own macros or scripts, and should be ignored by everybody else:

********************  Operations  ********************

OpenScript2 <file>: Opens and runs the Daedalus script in the string <file>, and stops executing any command lines in progress. This accesses the functionality of the “Open Script...” command without bringing up a dialog, but allows opening a new script that may replace macros within an existing script, in a way that prevents the state of the old script interfering.

DlgOpenDB: Brings up a dialog allowing one to select a file, and then loads that file as a Daedalus bitmap.

SaveVector <file>: Saves the wireframe data in memory to a Scalable Vector Graphics (SVG) format file in the string <file>. This accesses the functionality of the “Draw / Wireframe File / Save Vector...” command without bringing up a dialog.

SetY <x> <y> <dir> <num>: Set texture. Sets the texture on the block at the given coordinates facing the given direction, in a manner that assumes fTextureDual is set. This means setting the appropriate bits of a pixel on the custom color bitmap indicated by nTextureWall to <num>. If <dir> is -1, both texture pairs (i.e. all four sides) are set to the texture number. If <dir> is -2, all four sides are set to the texture number, in a manner that assumes fTextureDual is off.

Set3Y <x> <y> <z> <dir> <num>: Set 3D texture. Like SetY but for 3D bitmaps. Sets the texture on the block at the given coordinates facing the given direction. This means setting the appropriate bits of a pixel on the 3D custom color bitmap indicated by nTextureWall to <num>.

BlendN: Sets the color bitmap to an equal blending together of N other color bitmaps. The other bitmaps are assumed to be stacked vertically within the temporary color bitmap, in which N is determined by the bitmap’s overall height. Black pixels in any bitmap are skipped, and make that subbitmap not contribute to the result.

ZoomBiasPic: Zooms the monochrome bitmap, such that each 2x2 pixel area becomes a 3x3 pixel area. The middle column areas of each cell will be set based on the brightness of the color bitmap’s corresponding pixels. This is used to zoom a Maze such that its passage and wall thicknesses look similar to a background picture.

GetStar <num1> <num2> <num3>: Fetches the horizontal and vertical coordinates, along with the RGB color, of star number <num2> displayed in the perspective view. If <num1> is 0, gets the star from the perspective inside view, otherwise gets the star from the wireframe or patch view. The three values are stored in custom variables starting with index <num3>.

SetStar <num1> <num2> <numx> <numy> <string>: Sets the horizontal and vertical coordinates, along with the color, of star number <num2> displayed in the perspective view. If <num1> is 0, sets the star in the perspective inside view, otherwise sets the star in the wireframe or patch view.

GroundVar2: Like the Ground Variable command, but also allows for areas to be based on a particular height, and areas to be forced to be a particular height. If the main color bitmap exists, then pixels in it are base heights to add random values to. If the temporary color bitmap exists, then non-zero pixels in it are heights that will be guaranteed within the result (and nearby pixels will gradually fade to those heights). This is used by the “Jareth’s Labyrinth” script, to make the overall Labyrinth have higher heights in the middle areas, and also to make certain areas like the floor of the castle be a particular height.

********************  Variables  ********************

nStarSize: Determines the maximum brightness of stars in the background of the perspective views, before they’re displayed larger than one pixel. Standard values can range between 0 and 765 (the latter of which is 255x3, or the maximum RGB brightness). If less than 0, then every other star is large (regardless of its brightness).

fTextureDual2: This only plays a role when fTextureDual is set. This causes the two textures to be duplicated on the north/west and south/east faces of blocks. Normally the two textures are duplicated on the north/south and west/east faces.

fStereo3D: This only plays a role when nStereo is non-zero, and stereoscopic graphics are being displayed. When this is set, the stereoscopic image will be made for classic 3D glasses, with red and cyan monochrome images for each eye overlapping. (This is in contrast to the completely separate left eye and right eye images drawn side by side as is normal.)

********************  Functions  ********************

&& <num1> <num2>: Logical and. Returns whether both <num1> and <num2> are non-zero. This function does not do short circuit evaluation, in that both arguments are always evaluated even if the first is false. Like the “&&” operator in C.

|| <num1> <num2>: Logical or. Returns whether either <num1> or <num2> are non-zero. This function does not do short circuit evaluation, in that both arguments are always evaluated even if the first is true. Like the “||” operator in C.

Tween <num> <num1> <num2>: Between. Returns whether Num lies within the range of Num1 to Num2. This is basically a shorthand version of “And Gte <Num> <Num1> Lte <Num> <Num2>”.

Ln <num1> <num2>: Logarithm. Returns <num1> times the natural or base “e” logarithm of <num2>.

 

LICENSE

IMPORTANT NOTICE: Daedalus and all Maze generation and general graphics routines used in this program are Copyright (C) 1998-2024 by Walter D. Pullen. Permission is granted to freely use, modify, and distribute these routines provided these credits and notices remain unmodified with any altered or distributed versions of the program. The user does have all rights to Mazes and other graphic output they make in Daedalus, like a novel created in a word processor.

More formally: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful and inspiring, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details, a copy of which is in the LICENSE.HTM included with Daedalus, and at http://www.gnu.org

O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O

*       Walter D. "Cruiser1" Pullen :)       !       Astara@msn.com       *

O Find your way through life's Maze: http://www.astrolog.org/labyrnth.htm O

* "Who am I, What am I?  As I am, I am not.  But as we are, I AM.  And to *

O you my creation, My Perfect Love is your Perfect Freedom. And I will be O

* with you forever and ever, until the End, and then forever more." - GOD *

O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O*O