### NAGI History

18th February 2002 (Version 2.06)

- Workaround for Gold Rush. It reads the free memory variable but it's never set. Now deliberately sets it to 10 during new games, rooms and restores.
- New sound engine! Supports noise channel (both types of noise with different frequencies), volume control, uses square wave, various options supported in the config file and notes will dissolve to silence if played for too long (just like Sierra's implementation). Various changes have gone on underneath to make it easier to add other sound support.
- Application icon by Charles Irwin added. I had to reduce the colours because I didn't want NAGI to get too big yet.
- Non-console version of NAGI is default, there is now a separate console version. If you don't like the console, you can run NAGI without having to worry about it. If you're a developer and you appreciate the debug messages, the console version is still there.
- NAGI doesn't crash if you restore in Serguei's Destiny too many times in the same place. Will fix any other game that calls restore from a logic other than logic.0
- Logging has been added. You can now log all the unknown words in games you're developing.

14th January 2002 (Version 2.05)

- no more external sample - NAGI generates it's own sine wave.
- Mothergoose crash fixed by checking size for updated rectangles.
- Manhunter disk error fixed, not properly clearing errno.
- fixed background for Mothergoose name entry and Kings Quest 3 spell entry.
- more CRC's thanks to Charles Irwin, Chris Cromer and I.
- other internal details tidied up

2nd January 2002 (Version 2.04)

- toggle.monitor support (ie, you can toggle between the CGA/EGA modes with ctrl-R in games that support it)
- pgup/dn in the startup menu
- along with it being sorted alphabetically
- progress window at startup
- CRC's for more games added thanks to Charles Irwin
- hugely updated docs!
- fixed small bugs
- text mode uses correct palette when in cga mode
- moved dir_list to nagi.ini
- lots of warnings added to help developers

22nd December 2001 (Version 2.03)

- After you give the unicorn to that lotta witch and are flown back to the ground, the game crashes. This is because a "previous cel frame" for an object is set to a view object that was discarded!! This caused NAGI to crash.. the original doesn't because it's still lying in memory.. but it's not meant to be. so instead of storing a pointer to the previous cel like sierra did, I changed it to "cel's previous height and width" which is all sierra needed the pointer for. so I replaced a 32bit pointer with two 8bit numbers. However, it does break the savegames :( which sucks for me too.
- Added palettes from Apple ][gs and Apple][.. they were from emulators though. I might make it a bit more customisable from an ini file
- tidying up animated obj code
- more tidying.. whee
- fixed a bug I introduced in SQ:TLC and others probably in the swirly spaceship around planet scene. force.update wasn't "reading" the parameter. In actual truth.. the later agi's just updated them all and ignored the parameter but I forgot to read the parameter anyway in the code cleanup
- fixed up the change loop cmd so it checks the bounds properly. it didn't check it if the loop number was just one over the maximum.. this is a BUG in the ORIGINAL agi too! sqtlc earlier versions will not run the intro though
- urgh.. never do: state.var[*(c++)] = objtable[*(c++)].loop_total; and expect reliable results
- profiling and trying to optimise lengthy code.. like lzw, picfill and umm.. video scaling.. it's lotsa fun!
- replaced picfill's dynamic "stack" (ie a bunch of free's 'n mallocs) with a fixed buffer.. 3k but agi had 2.5k and that was to share with the um.. function stack :)
- fixed so donald duck has sound
- disassmbled CGA driver with dithering.. just have to code it up in C
- added CGA support to NAGI.. looks alright.. need to fix some bugs though.. and make it less hard-coded
- BIG GAP.. DIDN'T WORK ON NAGI FOR A WHILE.. MOVED TO LOCAL CVS
- lazy font update.. it will draw fonts but not show them on screen until necessary.
- new gfx engine, easier to add support to other graphics apis later on
- new renderer engine, cga emulation (SEE DOCS!)
- lots of little fixes
- ini/config has been fixed and better optimisedamiga support through objects/command names/file names
- doesn't bother with a maximum number of commands/strings
- new versioning core.. supports amiga/faster and a menu!
- when reading the object file, it now has sanity checks.. tries other methods if it fails
- searches for games in predefined dir's in standard.ini
- can print out the crc for games so you can easily add them to standard.ini
- added more fan game crc's and some amiga crc's
- fixed mouse support for brian buff's mouse and normal auto mouse due to new gfx syste
- added assertions everywhere to try and track bugs
- changed nagi to give a warning when that "just one above" loop set error occurs instead of exit
- mothergoose save works
- input now is a LOT MORE responsive.. no more missing characters, no matter what speed it's set
- cleanup of shutdown code.. so later on i can implement jumping back to the menu after a game is finished (not implemented yet)
- external fonts
- new docs

16th July 2001 (Version 2.02)

- Changed name of Justin's Quest to Justin Quest
- disassembling savegame stuff
- fixed keys so you can use the keypad now
- fixed the keypad 5 when numlock is off.. or was it on? thanks to Justin
- try saving a game when the total path size is longer than 32 chars in the original agi.. urgh
- fixed a parsing bug thanks to justin. In justin quest typing 'ie' gets parsed as 'e'. the problem was that it was incorrectly detecting single letter words like 'a' and 'i' (which sierra-agi skips by default) "a " and "i " was being detected right but "a<eol>" wasn't
- if sound cannot be init'd (ie, if sound is already in use) then it disables it (Justin suggested this)
- fixed cmd_log entry in cmd table.. i hadn't specified the 1 parameter so kq3 crashed when it tried to log bad parsed cmds in debug mode because cmd.log didn't exist but nagi didn't skip it's 1 parameter either
- tidied up some priority code (misc_graf.c)
- fixed up flags code so it only used bits for each flag.. not a whole byte. reduces save games a bit (256 down to 32 bytes for flags) (so 224 bytes)
- replaced all hardcoded animated object flags with #defines
- described all #defined animated flags :)
- fixed save games so they recognise "c:" or "c:\" or "a:" or whatever
- added 'where to get games' and 'funny larry bug' to docs
- organised docs a bit

note: save games are incompatible with older versions now due to several changes (in viewtable and state structure)

28th June 2001 (Version 2.01)

- fixed update.screen so SDL wouldn't ignore it if it went slightly offscreen
- played around with adding buffbri mouse support.. works but I want to make it more generic
- changed video mode to use 8bit colour depth. does it fix anybody's colour probs?
- added proper buff bri support.. access it through standard.ini
- added sliding puzzle game and Shifty demo to crc list
- changed some mouse support games in list
- automouse works! had to play around with sierra's implementation to make it work but it works well now.
- shifted some bugs to games issues (not really bugs)

26th June 2001 (Version 2.00)

- finally implemented all v3 differences.. this doesn't include saving yet
- v1.04 was actually feature complete when it came to graphics
- cmd177, 173 and 181 are done
- some variables are set and unset.. but nothing actually checks it
- ** some sort of mouse driver maybe checks it?? never actually released?
- cleaned up command table structure a bit
- implemented tracing ('+' actually skips to the next logic call)
- implemented text scrolling (for the tracing)
- sound fixed (stupid scaling bug).. still going for a rewrite one day
- trace.init() fixed.. calculating height incorrectly
- tracing fixed up (reading 16bit said numbers was askew and could have caused a crash
- fixed sierra's tracing so it doesn't try and read a null pointer if command name does not exist.
- added all the different tracing "hooks" throughout the code that I commented out
- added Schiller Demo to crc list
- display game title in window

19th June 2001 (Version 1.04)

- compared other v2 and v3 functions (mostly just hgc removal)
- implemented v3 priority table
- mysterious movement type 4 which I suspect is for mouse support?
- kq4 works better now.. no weird priority errors now
- Set some milestones and gave previous snapshots a version number
- added Disco Nights and Donald Duck 1.0c to crc list

17th June 2001 (Version 1.03)

- fixed a bunch o' warnings
- fixed pic fill in kq4

12th June 2001 (Version 1.02)

- Can detect v2 and v3 resource types (not v3 with 4 dir's though)
- for defaults.. do not need standard.ini
- found bugs in SQ-Lost Chapter..thought they were in nagi..
- added a whole bunch of games to crc list
- touched up and cleaned up the version stuff.

8th June 2001 (Version 1.01)

- version 3 support added!
- lzw compression
- don't decrypt logic msg if lzw compressed
- added a nice new section that detects game present
- crc checking
- update loop direction stuff depending on flag 20
- bunch o' stuff (i think)
- cmd.version() added :).. might work on this a tiny bit more
- rearranged initialisation code so it's a tad cleaner and works for the new version detection code
- all games in my crc list work.. if you have a game version that isn't on the list (which is a few) could you please show me a way I could obtain it?
- BUGS... if the screen is updated on the far right.. it may not properly
- update. (evident in demo packs and a window in the MH demo in demo4)
- quick fix.. swap out of window and go back.. sdl should automatically update
- initial beginnings of a game select menu (hence the NAGI status bar) haven't finished it yet because i was working on version detection
- added some small utils (crc and bitz) that might be useful
- BUGS.. no default for agi atm.
- read the standard.ini and standard_doc.rtf to see the new changes for version recognition in NAGI.

29th May 2001 (Version 1.00)

- add.to.pic is complete. there should not be any graphics bugs now (i hope)
- compare strings (needed for larry phone numbers)
- show.obj (needed for larry time/wallet amount)
- inventory the same as the original now (maybe an option for dodgy quick version?)
- follow.ego works (rewrote the function.. no idea what the prob was)
- priority bug in add.to.pic fixed :)
- LEISURE SUIT LARRY CAN NOW BE COMPLETED (finished on a dodgy slow 486 33mhz laptop since I had nothing better to do)

24th May 2001 (Version 0.04)

- savegames (one game) work
- restart works
- text mode properly works (no palette support yet)
- special config file (no windows dll's used)
- video scaling (see config)
- select drivers through ini file.. no batch file needed now
- bug in saving the logic scan lists (reporting wrong size)
- can optionally select the decryption of object file (for older games)
- dodgy quick inventory to see what you've got (and test decrypted obj)

11th May 2001 (Version 0.03)

- menus done.. text display fixed up a bit (help and pq newspaper looks alright)
- clock should be working properly now too (wizard/pq meeting)
- n.exe is unoptimised... n-o2.exe is optimised.

9th May 2001 (Version 0.02)

- stupid bug removed.. working on menus (not complete yet)

6th May 2001 (Version 0.01)

- a couple o' comments.. compiled with optimisations on.
- just had birthday.. so no proper work on it yet.

4th May 2001 (Version 0.00)

- first "release"