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  2.5  **

 

This file describes the new features, changes, and bug fixes in Daedalus 2.5, that weren’t in the previous version. It is only useful if you’re already familiar with Daedalus 2.4 or before and want to know what the newest version offers.

 

For a quick demonstration of some things Daedalus 2.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 2.5, i.e. new commands and settings that weren’t present in the previous version:

 

1. Gamma Mazes: The Gamma (Square) command on the Shapes submenu of the Create menu will create a square Maze in the bitmap. It differs little from the standard Perfect command, except the Maze dimensions are taken from the Omega Shapes Dimensions in Create Settings, and passages will be as wide as possible that fits within the current bitmap. However this provides a simple square Maze to contrast with the triangular, hexagonal, and other shaped Mazes.

 

2. 1024x768 bitmaps: The 1024x768 command on the Common Sizes submenu of the Bitmap menu will resize the active bitmap to those dimensions. That is a relatively uninteresting command by itself, except that it can be invoked with its own hotkey like the other resize commands on that submenu.

 

3. Crack sectors: The Line Sectors field in the Create Settings dialog will modify Crack Mazes so that all random lines are restricted to certain angles. A value of 1 forces all lines to be in the horizontal plane, a value of 2 forces all lines to be horizontal or vertical, 3 forces all lines to be in a triangular grid, and so on. Negative numbers rotate the angles by half a sector, e.g. a value of 1 forces all lines to be in the vertical plane, 2 forces all lines to be diagonal, and so on. The default value of zero allows all angles.

 

4. Tabbed text: The Save Text Bitmaps Tabbed field in the File Settings dialog adjusts plain text format bitmap file saves and clipboard copies to have a tab in between each character. That allows text bitmaps to be more easily opened or pasted into Microsoft Excel, with one cell per bitmap pixel.

 

5. Event dialog fields: The Macro Events dialog contains five new fields: “On Redraw Inside”, “On Previous Mouse Click”, “On Middle Mouse Click”, “On Next Mouse Click”, and “On Mouse Move”. These settings existed in the program before, but only as macro variables.

 

EXTENDED & IMPROVED FEATURES

 

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

 

1. Shaped Binary Tree Mazes: Mazes created using the Omega Shapes submenu of the Create menu can be generated using the Binary Tree algorithm. If the Use Eller’s Algorithm flag in File Settings is set, then each Maze will be created using an appropriate variation of the Binary Tree algorithm. For example, hexagonal Mazes will feature each hexagon cell have a passage leading left, up and to the left, or up and to the right, resulting in a ternary tree.

 

2. 3D block drawing: The Draw Block command on the 2nd Dot submenu of the Dot menu now works on 3D bitmaps, and will draw a solid 3D block between opposite corners of a cube.

 

3. Larger bitmaps: Daedalus supports larger bitmaps, potentially up to 2^31-1 or 2147483647 pixels in each dimension. Before all bitmaps were limited to 32767 or less than 32K pixels in both dimensions. Now monochrome and color bitmaps can be as large as memory supports. Some features and commands still require bitmaps smaller than a certain size (such as 64K by 64K pixels, or the limitations of the Windows bitmap file format) but in that case the command itself will check for an appropriate size before proceeding.

 

4. Custom Labyrinth specification extended: The Custom Paths field in the Labyrinth Settings dialog allows specifying sequences of circuits (which are effectively different Labyrinths) separated by commas. For example, “=@5,1,-3” translates to a 5 circuit spiral (“@5” or “52341”), followed by a single circuit (“1”) in normal order, followed by three circuits in reverse order (“-3” or “321”). Subsequent tokens will have their numbers adjusted by the current offset in the Labyrinth, resulting in “523416987” for the whole Labyrinth above. The new token prefix “'” (single quote) will treat the numbers following it as a standard Labyrinth circuit sequence, although offset appropriately if in a comma separated list.

 

5. Labyrinth autoiterate faster: Automatically generating Labyrinths with the Custom Autoiterate field in the Labyrinth Settings dialog is faster, especially for larger Labyrinth circuit sizes. For example, iterating through all 17 circuit Labyrinths is about 39 times faster than before.

 

6. Glancing Blows improvement: When Glancing Blows and Walls Impassable in Dot Settings are active, in the perspective inside view the dot will more readily flow around obstacles of on pixels. When encountering the corner of a block which allows flowing along either its left or right hand faces, the dot will choose the one that results in the most forward motion.

 

7. HTML license: The Open License command will bring up an HTML version of the Daedalus license, instead of it being a plain text file as before.

 

8. Hunger Games improved: The Hunger Games simulation script has been updated in several ways. In addition to forest there are now mountain, desert, plains, swamp, and giant Maze arena types. Tributes can climb things such as trees and mountains, dig up things from the ground or chip them off mountains, and swim in water. New items include picks, nets, fish, and landmines. There are also aggressive “muttation” creatures roaming the arena.

 

BUG FIXES

 

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

 

1. Classical Labyrinth crash: Creating a Classical style Labyrinth with 4000 or more circuits would give error messages and then crash. In other words to reproduce it, in Labyrinth Settings have the Classical Size setting set to 4000 or more and the flag Classical Size Is Circuits on, or have Classical Size set to 1000 or more and Classical Size Is Circuits off.

 

2. Circle limitation: The Draw Disk and Draw Circle commands would only produce ellipses an odd number of pixels across and down, rounding the size down if an even size was specified by the coordinates of the dots.

 

3. Save Text bugs: The Save Blocks command would give a dot fault error if the vertical bitmap dimension was odd. Similarly the Save Text command when the bitmap is 3D would leave off the bottom and/or right edges of each level if the horizontal and/or vertical dimensions of the 3D bitmap were odd.

 

4. Tweak Passage bug: Resizing the bitmap while Redraw When Bitmap Edited is off wouldn’t update certain internal settings. That would result in for example a dot fault error if resizing the bitmap smaller and then running the Tweak Passages command.

 

5. Blind Alley limitation: The Fill Blind Alleys command wouldn’t consider the Solve Fillers Check Every Pixel setting, so could only solve Mazes with junctions at odd numbered pixel coordinates.

 

6. Resize bug: Resizing a bitmap to one taking up the same number of bytes internally would allow a pixel dimension to exceed the normal limit of 32767. For example, a bitmap could be resized from 32767 x 100 to 327670 by 10. Afterward the bitmap wouldn’t display right and would show up in size dialogs as having a negative dimension.

 

7. Display bug: Failure to display a bitmap in the window for any reason (such as out of memory because the bitmap is too large), would not update the screen at all. That would result in for example garbage left behind when dragging another window across Daedalus. Now this situation will still result in a “failed to create display bitmap” error, however the window will be blanked with the Border color like when the bitmap is zero sized.

 

 

An additional list of bugs in the 3D perspective inside view feature of Daedalus 2.4, all of which have been fixed in Daedalus 2.5:

 

8. Block texture crash: Texture maps on top of blocks, such as created with the (Color) Overlay Blocks command, would overwrite memory. That could crash, but would frequently overwrite the mountain heights area of memory, resulting in a few mountains in the direction due north having random heights.

 

9. Ground texture crash: Ground textures, such as created with the (Color) Overlay Ground command, would cause a crash if the window is resized to have zero height.

 

10. Block texture bug: Textures would never be displayed on the bottom face of blocks. This could be seen by running the (Color) Overlay Blocks command, and setting Viewing Height to below -50.

 

11. Block texture bug: Textures wouldn’t be displayed on the top face of semitransparent blocks when the Semitransparent Walls setting was set to Very Thorough.

 

12. Block texture bug: Block textures wouldn’t display right on the cell directly under the viewing point (showing the wrong parts of the texture), but only if no ground textures were being displayed anywhere.

 

13. Ground bug: Ground markings and ground textures would disappear if the Viewing Height setting was less than 0. They shouldn’t have disappeared until eye level falls below the ground plane (which usually happens once Viewing Height is below -50).

 

14. Ground bug: If the temporary bitmap was larger than the main bitmap, ground markings would irregularly appear in the cells of their intersection. Now the size of the main bitmap limits both blocks and ground markings.

 

15. Variable height wall bug: Viewing over a large scene with over 1000 different walls in a line, and the Clipping Plane set to something significantly over 1000 to show them all, would result in the final wall drawn in the far distance being much taller than it should (being proportional to your viewing height instead of its actual height).

 

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  ********************

 

DefineConst <string>: This operation defines a sequence of named numeric constants. Parameter <string> is a space separated list of names. Each name will be assigned to the next number in sequence, starting with 0. For example, “DefineConst ‘Cat Dog Horse’” will set Cat to 0, Dog to 1, and Horse to 2. If a token is a number, it will instead set the constant to assign to the next name. If a number is prefixed with “+” or “-”, the number instead of being incremented by one will be adjusted by the specified offset. For example, “DefineConst ‘Cat 10 Dog +5 Horse’” will set Cat to 0, Dog to 10, and Horse to 15.

 

Afterward macros can reference these constants by name with the “%” prefix. For example, after the above the parameter “%Dog” will be the constant value 10. Similarly, “@Dog” will contain the value within custom variable number 10, and “$Dog” will contain the value within custom string 10, which allows named numeric and string variables. Finally “*Dog” as an action will call macro 10, which allows named functions. Having “*Dog” in a parameter context is the same as “%Dog” or the constant 10. After DefineConst is invoked, @z will contain whether the operation failed for any reason, such as having duplicate names anywhere in the list. A script can call DefineConst at the beginning to name macros and variables, and then halt if there were any errors.

 

AppendString <var> <string>: Appends <string> to custom string <var>. If <var> is a number it indicates the index of the custom string, else if <var> is a string (e.g. “a”) it indicates the custom string directly.

 

DoWait <string>: Executes <string> as a command line once. The mouse pointer will be set to the wait or hourglass icon until the command line finishes. This is useful for indicating slow operations within a script.

 

ResetInside: Randomly regenerates the positions of stars, mountains, and clouds in the perspective inside view.

 

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

 

fRainbow: Sets whether a rainbow is drawn in the perspective inside view, which will be positioned opposite the sun. The rainbow will be generated once and placed in custom bitmap -5, and regenerated whenever the window is resized.

 

nRainbow: Defines how the rainbow is drawn in the perspective inside view. The 1000000’s place and above indicate the height of the rainbow or its diameter in proportion to the window height, ranging from 0 (miniscule) to 99 (touching the top of the screen) and beyond. The 100000’s and 10000’s place indicate the vertical offset of the rainbow, ranging from 0 (as high as possible) to 99 (completely submerged below the horizon). The 1000’s and 100’s place indicate the width of the rainbow arc as a proportion of its radius, ranging from 0 (hairline) to 99 (a solid semicircle). The 10’s and 1’s place indicate the transparency of the rainbow, ranging from 0 (completely opaque) to 99 (completely invisible).

 

nGround: Sets the bottom limit for Viewing Height that one can descend to via the Lower command in the perspective inside view. Usually this is 0, but may be lower if one wants to allow worm’s eye views barely above the ground plane, or even a large negative number to allow descending underground.

 

nMazeCellMax: Sets the number of cells to allow generating in a Maze before stopping the command. If negative, commands will never stop prematurely. Commands will automatically decrement this variable, so subsequent Maze generations won’t halt unless the variable is reset. This allows freezing a command part way through for saving or other purposes. For example, the “Hunger Games” script uses this in combination with Prim’s Algorithm to create random inkblot shapes to use for lakes, mountains, and meadows.

 

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

 

InChar <string> <num>: Returns the position of the first instance of character <num> within <string>. Returns -1 if the character isn’t anywhere in the string.

 

UdU <color>: Extract wall up. Returns the high 12 bits of <color>. This can be used to access the elevation or texture of the top face of blocks, given a pixel from the relevant bitmap.

 

UdD <color>: Extract wall down. Returns the low 12 bits of <color>. This can be used to access the elevation or texture of the bottom face of blocks, given a pixel from the relevant bitmap.

 

 

IMPORTANT NOTICE: Daedalus and all Maze generation and general graphics routines used in this program are Copyright (C) 1998-2013 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