PDA

View Full Version : Zelda Classic & ZQuest SPEC



Dan Furst
06-25-2007, 12:06 PM
The purpose of this thread is to outline a super detailed specification for all of the components of Zelda Classic and ZQuest. This documentation will be used to define what features will be included in the new version. (And it could serve as real documentation.) I'll start.

ZELDA CLASSIC

Intro

- Startup Armageddon Games screen. Press any key to advance.
- New revision of ZC start screen. Press any key to advance.

Main Menu

Game
- Continue: Closes the main menu.
- Quit: Asks confirmation to quit/continue/retry current quest.
- Reset: Asks confirmation to reset system
- Exit: Asks confirmation to exit program.

Settings
- Key Buttons The button, key number, and name are displayed.
-- A: General selection; swings the sword (or, for some files, is selectable like 'B')
-- B: Cancel; use selected item.
-- Start: Start game, bring up subscreen.
-- L: Toggle B items to the left.
-- R: Toggle B items to the right.
-- Map: In some quests, display the overworld map.
- Key Directions
-- Choose what keyboard keys to use for Up, Down, Left, Right. Used for movement and menu selection. The key number and name are displayed.
- Joystick...
- Sound
- Title Screen
-- Original, Zelda Classic, Zelda Classic 2.5
- Throttle FPS
- Show FPS
- Show Transparent Layers
- Fast Quit
- Volume Keys
- Continuous Heat Beep
- Snapshot Format
-- BMP, GIF, JPG, PNG, PCX, TGA

Cheat
- Enter code...
- Refill
- Bombs
- Rupees
- Clock
- Max Bombs
- H. Containers...
- M. Containers
- Link Data...
- No Walls
- Quick Movement
- Goto Location

Misc
- About...
- Credits...
- MIDI Info...
- Video Mode...
- Quest Info...
- Take Snapshot
- Screen Saver...

Main Screen

Quest Slots - Display game icon, 8 character name, # deaths, # hearts.
REGISTER FILE
COPY FILE
DELETE FILE

Loading custom quests:
- Press A for more information
-- A to load custom quest (Browse, etc.)
-- B to cancel
-- START to start

General Play
- Arrow keys
- A and B buttons
- L and R buttons
- Start, Select, Map, etc.



ZQUEST

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


Appendix

ZScript

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.

Functions

Feel free to add to this outline.

DarkDragon
06-25-2007, 12:31 PM
I wonder if there's any chance War Lord could wikify this?

ShadowTiger
06-25-2007, 12:55 PM
Wikis have the amazing tendency to be destroyed pretty easily. Even Pure's wiki got vandalized all to hell, and the ZC Article on the real Wikipedia got bashed to pieces for its own reasons.

I think a forum-based tutorial structure could be pretty interesting. It's much more easy to control, staff-wise.

Dan Furst
06-25-2007, 01:22 PM
Nothing personal against WarLord, but I don't know if asking even more involvement from him is the best idea. I would rather he spend time on the Database.

Everyone, feel free to document portions that you feel comfortable with. I'll add whatever anyone comes up with.

Also, areas marked with ?? above are things I'm not sure about.