From ZCWiki
Jump to: navigation, search
A ZQuest screen of a quest in progress.

ZQuest is a graphical editor used for the creation and modification of Zelda Classic Quest files which can be played using the Zelda Classic program.


ZQuest began development in 1999 in conjunction with Zelda Classic as an editor capable of producing a clone of Nintendo's The Legend of Zelda for play on a personal computer. Since then, it has been continuously modified and infused with new features allowing the creation of games that bear little resemblance to the Zelda series.

Major Releases

(Note to the reader: Please provide more detail and correct any mistakes below. I'm not entirely sure on the details myself as I did not use the program prior to version 1.92.)


This was the first release of the editor, released on December 29, 1999. At this time, the program was quite inflexible as it was designed only to create an emulation of the original Legend of Zelda game.


Version 1.84, released on July 21, 2000, made progress with the editor, implementing a number of popular quest rules, introducing new items, expanding quests' DMap- and combo-holding capabilities, and presenting GUI updates that made the program easier to use than before.


Version 1.90 was released on April 3, 2001. Further items, flags, and enemies were added to the program which combined made it much more flexible than its older counterparts.


While technically a beta version, the ZQuest version 1.92b182 and its counterpart, Zelda Classic version 1.92b183, released on January 23, 2003, became the questmaking and questplaying standards for the next few years. Memory limits were further increased along with an onslaught of new flags and options, making the program more versatile than ever before.


Released January 1, 2005, Version 2.10 symbolized the first new full version of ZQuest and Zelda Classic in nearly four years. While sometimes criticized for its periodic bugginess, the program introduced an attractive new interface and further features that invited new-comers and veterans alike to begin questmaking again.


Currently unreleased, Version 2.50 will bring the eternally demanded enemy, item, and subscreen editors into existence for the first time and introduce further changes such as multiple warps, advanced drawing modes, and increased tile color capabilities. This will arguably be the most ambitious update to the program it has ever seen, and promises to spur a whole new generation of user-created quests.


Im just going to dump this here for now. I started to write a "specification" for ZQuest and I got a little done. Hopefully this information can be useful. Feel free to edit it, chop it up, or delete it entirely. Dan Furst 14:47, 24 February 2008 (PST)

Terminology - Pixel: A single point of color. - Tile: A group of pixels, 16 wide, 16 tall. - CSet: A group of 16 specific colors. - Combo: An entity consisting of a tile of a specific CSet, a walkability definition, and an action, among other things. - Screen: One viewable area of gameplay that is 16 combos wide and 11 tall. The bottom half of the bottom row of combos is not viewable per screen. - Flags: Markers placed on the screen (combos) that have actions associated with them. - Map: A group of screens 16 wide and 8 tall, with 8 extra screens in a row at the bottom right. - DMap: A specific collections of screens within a map. - Guy: A non-playable character (NPC) that appears in the center of the screen and generally talks to you or gives you something.

Main Screen - Combo Table: A collection of all the game's combos. Use the mouse's scroll wheel to move through this area, or the two up and down arrow keys located in the bottom of the gui, just to the left of this area. You can also use Shift+Arrow keys. Click on a combo to select it. It appears in the top right corner, above the combo table. It also appears with a light blue border in the combo table. Right click on a combo to edit it.

- Screen Area: 16x11 grid used for placement of combos. Use the arrow keys to view screens on the same map. Use the "<" and ">" keys to change maps. Clicking here places the currently selected combo on the currently selected layer. Layer 0 is the standard layer.

Shortcut keys: F1 Displays ZQuest help. F2 Saves quest. F3 Brings up the Load File dialog. F4 Brings up the Palette selector. F5 Brings up the Dungeon Template dialog. F6 Brings up the Door selector dialog. F7 Brings up the CSet Fix dialog. F8 Brings up the Flag selector. F9 Brings up the Screen Data dialog. F10 Brings up the Tile Warp dialog. F11 Brings up the Side Warp dialog. F12 Brings up the Enemy Flags dialog. Q Press once, the bottom right shows the CSet. Press again, the bottom left shows the combo type number. (Refer to the CT_ constants in std.zh) W Toggles the walkability mask of each combo onm the screen, shown in pink. E Brings up the Enemy selector. R Brings up the Room Type selector. T - Y - U Undo (redo). I Brings up the Item selector. O Toggles among normal, relational, dungeon carving, and alias drawing modes. P Brings up the View Image dialog. A Brings up the "Catch All" dialog, if the Room Type requires it. S Brings up the String selector. D Toggles whether the room is dark or not, denoted with a darkened top left corner. F Toggles display of placed (top) and inherent (bottom) flags. G Brings up the Guy selector. H - J - K - L Locks the program until pressed again. Z Takes snapshot. Indexed as zelda001.bmp, etc. X Enters Preview Mode. Follow the instructions in the taskbar area. C Copies entire screen. V Pastes entire screen. B Rebuilds translucency table. N - M - 1-9 Displays the current dmap colored like Levels 1-9 in NES Zelda. 0 Resets to normal display color (from 1-9). ` Toggles a grid on the screen. ' Brings up the Combos Used dialog. !@#$ ?? ?? Esc Asks to save or quit.

Right clicking on any placed combo will bring up this menu: - Draw 1x2 block: will draw the selected combo on the square that was right-clicked on, and will draw the combo below the selected combo on the square below the right-clicked combo. - Draw 2x1 block: will draw the selected combo on the square that was right-clicked on, and will draw the combo to the right of the selected combo on the square to the right of the right-clicked combo. - Draw 2x2 block: will draw a square of four combos on the clicked square, the square to the right, the square below, and the square right and below. - Draw 4x2 block: like 2x2 block, but will be 4 wide and 2 tall - Set Brush Width: will draw (1 to 16) combos, in order from the combo table, horizontally. 1 is the standard. - Set Brush Height: will draw (1 to 11) combos, in order from the combo table USING EVERY 16th COMBO, vertically. 1 is the standard. - Set Fill type: - Flood: ? - Fill (4-way): ?? - Fill (8-way): ?? - Flood2 (4-way): ?? - Flood2 (8-way): ?? - Replace: Replace all of the combo that was right clicked on with the selected combo (on this screen only). - Properties: Displays detailed combo data. - Pos: Position, counted from the top left at 0, going right before down. - Combo: The combo's position in the combo table. - CSet: The CSet used by this particular combo's instance. - Flags: Inherent and ?? - Combo type: The action of the combo. - Select Combo: Makes this combo the selected one. - Scroll to Combo: Will move the Combo Table to display the combo clicked on. - Edit combo: Brings up the combo editor.

- Map Area: The lower left hand area shows the screens on this map. Static represents an empty screen. Click on this area to select a screen to edit. Note that the number next to M shows that map number (in decimal) and S shows the screen number (in hexadecimal).

- Taskbars: Pressing Page Up or Page Dn will cycle through the twelve task bars at the bottom of the screen. The scroll wheel can also be used.

1) Shows the filename, the number of the cureently selected combo, and it's type. The combo is then shown, along with its walkability mask, and what combo this combo might cycle to. Also shown are the CSet number of the selected combo, and the layer that combos will be placed on.

2) Shows placement boxes and their data. Click here to bring up the placement square, and click on the screen to place the box. The first box looks like a rupee. The box is light blue. It determines where an item will appear. The next box looks like a set of stairs or escalator. It determines where Link is placed after returning from an item cellar, passageway, or cave.. The box is yellow. The third box looks like a spreading pattern, or a warp. It determines where Link will be placed at startup, or after warping from screen to screen. It is green. The last box looks like a flag. It changes the cursor to place flags instead of combos. The scroll wheel can now be used to cycle through the flag numbers. Pressing Esc will release the cursor from flag placement to combo placement.

3) Displays a quick numerical description of the state of screen elements. ESWSLEDHETGSOMLWRDIB: E - 1 if enemies always return, 0 if not S - 1 if there are no secret sounds allowed on this screen, 0 if are allowed W - 1 if full-screen warp is used, 0 if not S - 1 if subcrceen is not used, 0 if is used L - 1 if Link is invisible, 0 if not E - 1 if enemies are invisible, 0 if not D - 1 if the Dodongo Roar is used, 0 if not H - 1 if Hold Up Item is checked, 0 if not E - 1 if Enemies->Secret is checked, 0 if not T - 1 if Floating Traps is checked, 0 if not G - 1 if Gasp Roar is used, 0 if not S - 1 if secret SFX is checked, 0 if not O - 1 if Ocean Surf SFX is checked, 0 if not M - 1 if Use Maze Path is checked, 0 if not L - 1 if Use Ladder is checked, 0 if not W - 1 is Whistle->Stairs is checked, 0 if not R - 1 if Boss Roar sound effects are used, 0 if not D - 1 if the room is a dark room, 0 if not I - 1 if Enemies->Item is checked, 0 if not B - 1 if Block->Shutters is checked, 0 if not

BILFR24Z B - 1 if this screen contains the dungeon boss, 0 if not I - 1 if enemy 0 carries the item, 0 if not L - 1 if there is an enemy ring leader, 0 if not F - 1 if statues shoot fire, 0 if not R - 1 if there are falling rocks, 0 if not 2 - 1 if there are center traps, 0 if not 4 - 1 if there are corner traps, 0 if not Z - 1 if Zora appears in water, 0 if not

Pattern shows how the enemies enter the screen: Random - Enemies appear randomly on the screen but generally away from Link. Sides - Enemies appear at the sides of the screen. Sides (Random) - ?? Ceiling - Enemies fall from the ceiling.

4) Shows the name of the "guy" on this screen, the number of the string (text) that appears on the screen, and the room type.

5) Tile warp shows what DMap:Screen (decimal:hexadecimal) tile warp A will take Link to, and the type of the warp. Side warp shows what DMap:Screen (decimal:hexadecimal) side warp A will take Link to, and the type of the warp.

6) Triggers (TBLR) are 1 if the Top, Bottom, Left, Right sides of the screen trigger a side warp. If Use Maze Path is checked, the correct path will be displayed, as well as the exit direction (how Link "gives up" trying).

7) Layer data. Layer 0 is the base of the screen. Squares are checked if they are currently displaying that layer. (???) If a circle appears below each layer's respective square, that layer is used.

8) Shows the tile warp boxes. Four tile warps (A,B,C,D) canm be used on each screen. The blue square marks Links return point for each tile warp. (Similar to the boxes on taskbar #1.)

File Menu Quest Menu Edit Menu Tools Menu - Templates - Doors - Color set fix - Flags - List Combos Used - Preview Mode - Drawing Mode - Normal - Relational - Dungeon Carving - Combo Alias - View Palette - Re-apply Template - Scripts - Import ASM FFC Script - Import ASM Item Script - Import ASM Global Script - Compile ZScript: Allows for users to create advanced scenarios with simple commands. - Edit: ZQuest internally stores a "script file" or buffer. This is where your scripts are stored. Clicking edit will display what is in this buffer. It is initially blank (0 bytes). You can write a script directly in here if you like. Correct syntax (like spelling and grammer) is required. See the ZScript Appendix for more information. - Import - Export - Compile! - Quest Reports Data Menu Etc. Menu



Overview: ZScript is a way of creating almost anything you'd like to have that is not already part of ZQuest. This section is a first step for those who are not familiar with the C programming language.

First thing's first: although you can certainly use the edit button to bring up a space to write your script, it nicer to use a text program like notepad or wordpad. When you write outside of the editor, the file extension of your script should be ".z" - this is what file type ZQuest uses when importing and exporting scripts.

Think of computer scripts like scripts for plays. First it lists the setting, and who the actors are. Then the "action" starts at the top. Maybe there are some comments. ZScript is pretty similar.

Global variables

These are the actors. We need to know what names we are going to use to define our variables. If you want to count something, say, the number of enemies on the screen, you might have a variable named num_enemies. To properly declare this in ZScript, you would say: int num_enemies = 0; Lets dissect this. Notice "int", short for integer. This is something that the ZQuest already knows. It defines what kind of data this is. There are others, like float and bool, but I'll get to those in a second. After the type "int", we have the name of the variable. Any uppercase of lowercase characters A..Z, numbers 0...9, and the underscore ( _ ) can be used, although the first character must be a letter. After the variable name, there is an equals sign. That means we are going to assign a value to the integer variable num_enemies. Initially, we'll have this be 0. Finally, we end with a semicolon ( ; ). this is like the period at the end of a sentence. It means we are ready to move on to the next line.

Data Types

Previosly we saw int. There are many data types: here they are, in order of popularity.

int (integer) - Contains numbers without decimal points, like 0, 1, 48000, -100000. Ints can range from -214748 to 214748. float (floating point) Numbers with decimal points. Floats can range from -214748.3648 to 214748.3647. bool (boolean) - Either 0 or 1. You can also use the words "true" and "false." Generally, false = 0 and true = "not 0". void (a special, empty type) - This is not used for variables, but functions might use this. ffc (free-form combo) - Contains a reference to a freeform combo. Instead of editing this directly, you would edit other parameters associated with it. npc (non-playable character) - Contains a reference to a npc. Instead of editing this directly, you would edit other parameters associated with it. item (an item) - Contains a reference to an item. Instead of editing this directly, you would edit other parameters associated with it. itemclass (an item class) - Contains a reference to an item class. Instead of editing this directly, you would edit other parameters associated with it.