AGIL

From Sierra Wiki
Jump to navigationJump to search
AGIL
Version 0.1.5

Author: RaDIaT1oN

2002/01/28
AGIL

AGIL Screenshot
Latest Version:  0.1.5
Release Date:  2002/01/28
Company: N/A
Publication Status:  Published
Developer(s): RaDIaT1oN
Interface: N/A
Language: C
Open Source: Open
Source Availability: 
License: GPL2
Type: Third Party Interpreter
Platform: DOS, Windows, Linux
Localization: English
Website: www.elite.za.net/ (archive.org)





Description

RaDIaT1oN's AGIL is a fan made 3rd party AGI replacement.

stub page. You can help the Sierra Wiki by expanding it.


 
 



Features

  •  


Version History

Since 0.1.4: Ego's priority 2 and 3 checks moved to object_update(). Fixes various problems.

ignore.objs() and observe.objs() have been implemented.

VO_MOTION View object flag now has an effect (Perhaps not correct.)

Logic setting VAR[6] to change ego direction now works. (Possibly not in all cases.)

Logic decompiler added (Pressing Pause decompile logic of current room, and dumps to file.) On SDL pressing DELETE also works, because some 'doze boxen ignored the PAUSE key.

Some horizon handling stuff improved. (Works with SQ:TLC)

Added NAGI style console on 'doze.


Since 0.1.3: Padded variable display in messages implemented : "%v|2", etc. May not work properly in all cases.

Negative jump now calls update_clock(). Fixes crash in Manhunter.

SDL driver now handles SDL_QUIT events.

F11 toggles SDL driver's full screen mode. (This may be bad code. SDL people, help me out.)

Allegro driver keyboard buffer fixed. (Now FIFO queue, was FILO.)

SDL driver keyboard code fixed. Yeah! This one had me confused.

-fshort_enums removed from Makefiles. This is what broke the keys on the SDL version. (because SDL is not compiled with -fshort_enums.)

Multi-Slot saved games implemented! Uses ~/.agil/<gameid> in unix, and game directory in Windoze/DOS.

Special keys aren't eaten if text_special_input is set.

message_erasebox() added to pic_draw(). Fixes some graphical errors resulting from message boxen on the screen when a picture is drawn.

vm_parsemessage() and view_parsedisc() now fixed to eat backslashes.

clear.text.rect() implemented.

object_update_cycle() reorganized to fix end.of.loop() and reverse.loop(), used to set the flag one cycle too early.

Inventory screen item selection implemented. This also clears FLAG[13] (Sierra's AGI didn't.) Fixes bugs in some games.

Restart game implemented.

follow.ego() now resets "object touched ego" flag.

Removed view_erase() from ao_erase(). Fixes some graphical problems, but creates some new ones. I think it looks better.

Random number code fixed. Would never choose highest possible number. ZZ Top now appear in the bar in Space Quest.

Global variables in lzw.c made static.

Picture drawing and decompression code is now limited to res->size. Stops drawing garbage when there is no terminating 0xFF.


Since 0.1.2: Changed resource.c to decode all but compressed AGI 3 logic messages. Before assumed all AGI 3 logic messages weren't encoded (with "Avis Durgan".)

Inventory screen implemented (copied from LAGII). No select item available yet.

Added keytable flushes to print() and print.at().

Added view_parsedisc() copy of vm_parsemessage() for parsing view discriptions. Fixes "look notebook" in Police Quest.

Made keyboard buffer stuff volatile in the Allegro driver.

Updated copyright notices in modified files.

  1. define'd TITLE and VERSION, and used them where applicable.

Time delay code changed to track time used by the vm, and subtract this from the delay time. Uses usleep() and clock(), POSIX and ANSI C respectively. The SDL version uses SDL_Delay() because 'doze is not POSIX compliant.

SDL driver written by LollypopMan. Works with 'doze and Linux.

Preliminary sound code added (Thanks to LollypopMan.)

types.h renamed to general.h, and general.c written to contain fake snprintf for DJGPP, will be used in future for other workarounds for bad platforms.

Comments af arg types in actionop.c and testop.c removed, they were from the spec, and to all correct.

All comments changed to C style: /* comment */

GNUmakefile renamed back to Makefile for DOS.

set.view no longer resets the loop and cel to 0, and set.loop no longer sets cel to 0. Fixes cars in Police Quest (and some other stuff.)

KEY_* defines changed to AGIL_KEY_* because allegro uses KEY_*.

DOS port (with Allegro) done. Not perfect, infact far from it, but working. Does DJGPP really not have snprintf?

All filenames reduced to 8.3 DOS style for port to DOS.

Message boxes fixed, or at least improved. graph_messagebox() is now message_mbox(), and lives in message.c.

Bug preventing input fixed. (I hope, that was a bad one.)

"-Werror" removed from Makefile, I had reports that this caused problems on some systems.


Since 0.1.1: add.to.pic() gets automatic priority if an illegal value is given. in 0.1.1 this used priority 4. In 0.1.0 the view did not get drawn.

wander() handling code written, sometimes does strange things though. This may be a bug in some other code.

X11 driver written (or copied from LAGII and modified).

Makefile modified to allow for driver selection. Also other added some optimization stuff, and -I/usr/local/include -L/usr/local/lib for svgalib on some systems. This also changes savegame files.

Now runs gameid before initializing the console driver, because the X driver uses id->name for the window title text.

Priority fill now ignores boundries on priority screen when visible screen drawing is enabled.

Objects following ego now handle boundries by moving in a random direction for a random number of steps.

Strange bug that crept in with Sarien check_fix_position() code fixed (hopefully), by first moving horizon observing objects to below the horizon, then following the Sarien algorithm for correcting positions. This bug has been in both public releases so far, and I never noticed it.

The internal timer is still garbage, but checking if timecount >= (20/VAR[10]) fixed a lot of "random" bugs resulting from changes in VAR[10].

Input line now redrawn on each cycle (if accept.input() is issued.)


Since 0.1.0: The boundry drawing code for add.to.pic sometimes would not draw one pixel high boxes. Fixed.

set.priority will use priority 4 if parameter < 4.

compare.strings was written, but still NULL in opcode table. Fixes telephone in Larry.


Development Status

 


Usage

  1.  


Options

 


Download

Download from here:


Known issues

Known bugs so far:

With SDL driver: sound, and full screen mode don't work on all systems.

Game "V" crashes Windows and DOS ports.

If driver's sound init fails, or driver has no sound code, the the "sound played" flag is set immediately.

Handling of priorities and water. (Assumes water to be pri 4)

View object handling code is mostly guessed. Specification is very vague, this results in many graphic problems.

View objects other than ego sometimes fail to see the left side of the screen, I mean set VAR[4] and VAR[5]. This causes many problems.

Picture drawing code (or decompression code) doesn't work properly. Very obvious in Gold Rush!, and Kings Quest 4.

print() does not timeout when VAR[21] is set.

print.at() and print.at.v() take four args for all versions. This defies the spec, but taking three args crashed the interpreter running KQ3 1.01 and SQ 1.1A (AGI 2.272 versions).

Interpreter cycle time limited if CYCLE_TIME_LIMIT is defined. This is deliberate, it saved me many reboots. This is excluded on SDL version because mingw32 has no signal handling.

move.obj() doesn't handle boundries properly. object.on.* commands don't appear to work properly. Sometimes wander code does bad things. Status of menu items is not saved in savegames. (Disables items are not re-enabled.) Also current sound status is not saved.

I'm sure there were more...


Unexplainable known bugs:


Space Quest: Ego's step size is large when leaving the elevator on Kerona: The stonehenge thing. Sometimes a second spider droid arrives. GAME FINISHED (With full score).

Space Quest 2: This time I didn't notice any problems with this game! GAME FINISHED (With full score).

Police Quest: Random crashing in driving sequence. People don't leave the locker room. Exit from jail puts you in illegal position. Game gets stuck in court getting no bail warrant.

Manhunter: Can't close MAD. Cursor (EGO) continues to move after key release.

Manhunter 2: Can't close MAD. Cursor (EGO) continues to move after key release.

Gold Rush: The objects not leaving off the sides of the screen. Lots of picture drawing bugs. Have trouble getting in your house. Can't see the bank statement. And probably many more. Some pictures are plain garbage. Some strange things happened to the menus in the DOS port.

King's Quest 2: Magic carpet drops you off before the mountain. Going in and out of water doesn't work properly. After falling in water motion continues as it was.

King's Quest 4: Seems to use a different priority table to other games. When unicorn leaves screen it leaves a strange high priority block, which is not visible on the priority screen. Beats me! Can backspace past the beginning of the word in the copyprotection. Dolphin doesn't swim away from desert island.


Leisure Suit Larry: The apple guy and the knife guy don't leave the screen. accept.input does not seem to happen after buying the lubber. I added to new.room(), works around this problem. The death sequence doesn't work correctly. GAME FINISHED.


Other games haven't really been tested.


Credits


References


Also See