### NAGI Legal Notes

### By Nick Sonneveld and others

NAGI was created with the purpose to help fan-game developers so they had something to release along with their game. The reason why they couldn't package it with the original Sierra interpreter was because Sierra owns the copyright to it and legal issues could arise.
As some people know, NAGI was created by disassembling the AGI executable and recoding it in C to act the same as the ASM source. This wasn't as easy as it sounds. I had to implement a lot of my own code to interact with Windows, converge v2 and v3 code, implement a crc system and other bits 'n pieces. The original sierra code also had to be debugged and the variable names had to be determined.
The issue here is that it's not exactly legal to do that with any code. It's still Sierra's copyright, although in smaller pieces, throughout the NAGI code. This, along with other reasons, is why I'm not releasing the source just yet.
However, many fan games use Sierra's sprites or other logic code and Sarien uses specs that were mostly derived from Russians who disassembled an old v2.440 interpreter. There are many examples of programs uses little bits and pieces of Sierra's intellectual property.

### Digger

When I started, I was under the assumption that this was semi-legal because another programmer used the exact same technique to re-create Digger which is an old game, just like AGI. However, this is an excerpt from the Digger FAQ
(http://www.digger.org)
Q: Is this legal?
A:Strictly speaking, no. According to intellectual property law, a work copyrighted by a company continues to be copyrighted for 75 years.
I have no moral objections to violating Windmill software's copyright by re-releasing the game, and I feel you should have no moral objections to playing it (unless you're doing it when you should be doing something else). Copyright exists to protect intellectual rights, not to prevent people from having access to software. I can think of two reasons why Windmill software would want to protect their intellectual rights:

- To ensure that they are recognized as the true authors of Digger.
- To ensure that they make as much money as possible.

I have retained the original copyright messages in the game and I take pains to ensure that Windmill are credited properly whereever possible so the first of these concerns is taken care of. As for the second - Windmill hasn't made any money from Digger for a long time, and if they insist I will relinquish all rights to Digger to them to do with as they wish. Having Digger restored and working on modern computers, they would be in a much better position to make money from it than they would if I hadn't remastered it.
In conclusion, therefore, I think that Digger Remastered follows the spirit of the law, if not the letter. And since laws, being so rigid, can never be perfect, the world works much better this way (as any Digger fan must concur.)
For more information about abandonwarez and the associated legal problems, have a look at this essay.

### #SDL

I also had a nice chat to the SDL people in #SDL at irc.openprojects.net. I was asking about SDL licenses and the discussion shifted to how I programmed NAGI. They're not as nice as other coders but they managed to answer some questions:
<Note: bits and pieces not relevent to disassembling were removed>
[05:21] <EvilIdler> J5:What license is your own program under?
[05:22] <J5> none atm.. i wanted to make it closed source until it was finished
[05:23] <J5> i know some other people go release early, release often but I subscribe to the "release it when it looks good"
[05:23] <Frapazoid> same here
[05:23] <akawaka> haha
[05:23] <Frapazoid> it's bad to give people a really bad impression before it's done..
[05:23] <akawaka> "release when it looks good"
[05:23] <akawaka> how about "release when it works"?
[05:23] <akawaka> hmm, yes
[05:23] <J5> plus, I wrote a lot of the code by disassembling an old game.. so I don't know the legalities of that and..
[05:24] <Frapazoid> they may not understand the pre-release concept, as I know many people don't, and then never check back
[05:24] <J5> there's a few goto replacing the mess of jmp's
[05:24] <hofi> who wants working stuff ? it has to look good....
[05:24] <Frapazoid> whoa!
[05:24] <Frapazoid> disassembling?
[05:24] <Frapazoid> J5: what about dissambling?
[05:24] <Frapazoid> what game?
[05:25] <J5> I'm disassembling an old game interpreter (agi) and recoding it all in C
[05:25] <J5> like Sarien except it works kinda better atm
[05:25] <Frapazoid> how old is it
[05:25] <Frapazoid> ?
[05:25] <J5> doesn't support as many os's atm
[05:25] <Frapazoid> (Thats like cheating!)
[05:25] <EvilIdler> J5:*How* did you go about using what you disassembled? Did you rewrite from the way assembly looked?
[05:25] <J5> umm.. late 1980's
[05:26] <Frapazoid> to me that just doesn't seem right, still..
[05:26] <J5> evil: yeh.. some of the code yes.. others I had to guess and others I wrote from scratch (like sdl's)
[05:26] <Frapazoid> well, whatever
[05:26] <EvilIdler> J5:Well, the way Norwegian reverse-engineering laws work, you're safe. Check your own country ;)
[05:26] <J5> frap: well.. i couldn't think of any way of getting my version to work the same as the original
[05:27] <EvilIdler> If you disassemble to see "how it works", then code something that works the same way, especially in another language, it's usually in the clear. Local laws apply ;)
[05:27] <Yorick> I doubt norwegian laws are safe about reverse-engineering
[05:28] <EvilIdler> Yorick:They work. Like I said before, Norwegians are nuts!
[05:28] <J5> evil: i guess i'll have to..
<Note: discussion moved to different editors so I decided to wrap things up>
[05:30] <J5> anyway.. thanks for the help
[05:30] <J5> I'll put up the appropriate notices for sdl
[05:30] <Diablo-D3> heh
[05:30] <Diablo-D3> Vi!!!
[05:30] <J5> and work on making my disassembled code more legal
[05:30] <J5> (if it's not already)
[05:31] <EvilIdler> J5:Do that, and let us know if any games work completely ;)
[05:31] <J5> evil: they do already
[05:31] <Frapazoid> J5: the developers may have to file a lawsuit
[05:31] <J5> i don't think sierra cares anymore
[05:31] <EvilIdler> J5:Are there any Spacequest based on agi?
[05:31] <J5> http://members.dingoblue.net.au/~sonneveld/nagi
[05:31] <J5> sq1 and 2
[05:31] <EvilIdler> Sierra *died* when they laid off their adventure-making people.
[05:32] <Diablo-D3> heh
[05:32] <Diablo-D3> sierra is dead anyhow
[05:32] <Frapazoid> it's knot only stupids, it's real
[05:32] <J5> i only have builds for win32 atm though..
[05:33] <Frapazoid> hmm.. i have to go now..
[05:33] <Frapazoid> bye
[05:33] <EvilIdler> J5:Get some SDL-based ones, and you can cross-compile from Linux.
[05:35] <J5> it's sdl based atm.. i've only compiled under mingw atm though
[05:35] <Diablo-D3> heh
[05:35] <Diablo-D3> and any other gcc clone
[05:35] <Diablo-D3> like
[05:35] * aoiushi looks up. no, sierra died when they let roberta williams make adventure games. ;)
[05:35] <Diablo-D3> cygwin
[05:35] <Diablo-D3> or...
[05:35] <Diablo-D3> xming
[05:35] <Diablo-D3> or... gcc ...
[05:36] <Diablo-D3> heheh
[05:36] <J5> diablo: I know.. but the only working version on my website is a windows executable
[05:36] <Diablo-D3> heh
[05:36] <Diablo-D3> suckz0rs to be j00
[05:37] <J5> cheers diablo
[05:38] <J5> anyway.. thanks again
[05:38] <J5> cyas
Session Close: Tue Jul 10 05:38:36 2001
I just wanted to point out that I don't think it was "like cheating". If it was it would be a lot easier to do. Depends on your coding experience I guess.

### #Sarien

Here's another chat I had in #sarien. These guys are friendlier at least. :) It's a bit lengthy but there's a lot of interesting information. I was tired and bummed out through most of this conversation because I was working night shift before it and hadn't had any sleep. But that's another story...
[08:57] <DopefishJustin> on the plus side, you'll have more time for nagi now ;)
[08:58] <JayFive> heh.. true
[08:59] <JayFive> I went on #sdl to ask about sdl packaging 'n stuff
[08:59] <JayFive> and one person thought that the way i was making nagi was cheating :)
[08:59] <JayFive> then you've got the legalities of it as well
[08:59] <JayFive> is it worth it?
[09:00] <DopefishJustin> i like the sarien approach more, but nagi is currently much more functional
[09:00] <JayFive> currently.. what about when sarien is more functional? is everybody going to forget about nagi?
[09:00] <syke> JayFive: if sierra ever decides to go after you, you will definitely have quite a few problems
[09:01] * syke shrugs
[09:01] <syke> I never looked at NAGI or the source
[09:01] <syke> sarien seems to be portable to the extreme
[09:01] <DopefishJustin> some of the nagi-original modifications may find a home in sarien someday
[09:02] <JayFive> nagi gets to be a sarien patch
[09:02] <DopefishJustin> i'm not sure about the legality of using spec information gleaned from it
[09:03] <JayFive> but spec information from russian disassemblers is ok
[09:04] <syke> JayFive: it can be very tricky.
[09:05] <syke> For instance, someone can reverse engineer/disassemble directly from the code
[09:05] <syke> and write documentation
[09:05] <syke> and then someone can implement from that documentation
[09:06] <syke> and there is precedent in the US for that being considered "clean room"
[09:06] <syke> however
[09:06] <syke> reverse engineering to source code
[09:06] <syke> and then copying or reimplenting that code into new code
[09:06] <syke> is highly suspect
[09:07] <JayFive> so i've written something that no agi coder wants to touch basically
[09:07] <syke> mm
[09:07] <syke> well
[09:07] <syke> I wouldn't recommend anyone copy the code directly
[09:08] <JayFive> nice...
[09:08] <syke> but
[09:08] <syke> if you re-implemented what you learned from the disassembly
[09:08] <syke> without directly copying that disassembly
[09:08] <syke> that might be excusable
[09:08] <syke> are you in teh US?
[09:09] <JayFive> aus
[09:09] <syke> ok
[09:09] <syke> the laws there may be more lax
[09:09] <syke> but yes, you've done a big no-no as far as free software is concerned
[09:09] <syke> have you contacted sierra in any way?
[09:10] <syke> to ger permission, or to make them aware of the project, or to request information?
[09:10] <JayFive> no, i was under the assumption that they never replied to any such thing
[09:12] <syke> ask christoph from freesci about his experiences
[09:12] <syke> he asked a number of hte original programmers, who all refused to give infromation fo course :)
[09:12] <syke> (mostly fearing sierra's wrath)
[09:12] <syke> on a side note
[09:12] <syke> I think it would be awesome to unite the two projects, tho
[09:13] <syke> I'm all for pooling efforts :)
[09:13] <JayFive> i dunno if you'd want to touch the bits *i* actually wrote
[09:13] <syke> in the same way I would love it if FreeSCI and Sarien shared video driver code and graphics effects code
[09:13] <JayFive> the rest would be untouchable
[09:13] <syke> well, yea
[09:13] <syke> but you could apply your knowledge to sarien
[09:13] <syke> and not necessarily copy code
[09:13] <DopefishJustin> nagi has some cool stuff, like the click-to-move code
[09:14] <DopefishJustin> and fullscreen under Win32
[09:14] <syke> DopefishJustin: if you want fullscreen under win32, I can do that pretty quickly :)
[09:14] <syke> f***
[09:14] <syke> i need to do some checkins for sarien and freesci
[09:14] <JayFive> 1) move.obj without setting a flag and ignore player.control
[09:14] <JayFive> 2) like syke said
[09:15] * JayFive doesn't like the idea of just being some agi tour-guide
[09:15] <DopefishJustin> ummm...nagi' sample based sound mixer?
[09:15] <JayFive> whee
[09:15] <syke> JayFive: Maybe you misunderstand --
[09:15] <syke> you can re-code things, that is probably safe
[09:16] <syke> but directly copying code from the reverse engineered binary isn't, I don't tihnk
[09:16] <JayFive> yes but how far do I go until the re-coded stuff is legal?
[09:17] <JayFive> and in going through these hoops I have to make it work with the original agi
<Note: stuff on watcom and graphics libraries.. not nagi/legal related>
[09:45] <JayFive> i think i might drop nagi and start up another project
[09:45] <JayFive> too much wasted time already
[09:45] <DopefishJustin> the agi studio thing?
[09:45] <JayFive> maybe something totally unrelated to agi
[09:46] <JayFive> this whole thing is getting me down.. i just wasted my time
[09:46] <DopefishJustin> hey now
[09:46] <DopefishJustin> if nothing else, you got programming experience
[09:47] <JayFive> whee
[09:47] <DopefishJustin> i've programmed all kinds of stuff that doesn't work
[09:47] <DopefishJustin> i don't care
[09:47] <DopefishJustin> it's the fun of programming it that counts
[09:48] <JayFive> all this other stuff doesn't make it fun
[09:48] <syke> JayFive: not at all
[09:48] <syke> you definitely learned things about AGI no one else could have figued out
[09:49] <syke> like the mouse support stuff
[09:49] <syke> and i'll bet you learned a lot of about how to disassemble and rever engineer thinggs :)
[09:49] <DopefishJustin> and it gets the award of the first fully functional fan-made agi interpreter
[09:50] <JayFive> yeh, but what's the use of knowing how to do that if all you're going to do is write specs so somebody else can code the thing?
[09:50] <JayFive> if i try and re-code it.. i'll always be accused of using the original code
[09:51] <JayFive> i spent a long time on this and it's just one big bummer
[09:52] <syke> JayFive: like I said, check out the laws in your country
[09:52] <syke> also
[09:52] <JayFive> i did.. it's legal for certain things
[09:52] <syke> you may end up getting permission from sierra
[09:52] <syke> there are still many options here, should you choose to take them
[09:53] <syke> JayFive: the wonder of open source is that re-use of proprietary IP can be easily disproven
[09:53] <syke> since the source is public
[09:53] <DopefishJustin> and what about that standard.ini idea you had? that's something unique
[09:53] <syke> all you have to watch out for is patented algorithms
[09:53] <syke> (I don't think ther eare any in AGI)
[09:53] <DopefishJustin> LZW
[09:53] <JayFive> nothing to do with patents.. it's copyright law
[09:54] <JayFive> despite the fact it's object code.. copyright law still applies
[09:54] <JayFive> and apparently reverseengineering is only "legal" enough if it's for interoperability issues
[09:54] <syke> yes
[09:54] <JayFive> http://www.dcita.gov.au/cgi-bin/trap.pl?path=4189
[09:54] <DopefishJustin> and sierra had a patent on "3-d graphical adventure games" but i think that got shot down in court
[09:56] <syke> JayFive: before you get too discouraged, I would talk to a lawyer perhaps
[09:56] <syke> or contact Sierra
[09:56] <syke> but
[09:56] <syke> there is precendent in the US that should be looked at, since Sierra is a US company
[09:57] <syke> I am somehat farmiliar with this stuff because I follow IP law caes
[09:57] <syke> cases, rather
[09:57] <JayFive> i'll try the sierra route but then i'll give up the nagi project
[09:57] <JayFive> it's basically a rebadged sierra interpreter with extra bits put in
[09:58] <syke> I'm sorry you're down :/
[09:58] <syke> I think there is still neat stuff that can be done
[09:58] <DopefishJustin> think of it as a port, not a rehash
[09:59] <syke> bringing some of the best games ever made to open platforms is a great accomplishment
[09:59] <JayFive> i think that's sarien.. nagi was only built for windows (despite the sdl)
[10:00] <syke> hm
[10:00] <syke> are you just feeling you've taken it as far as it can go?
[10:00] <syke> are you bored with it?
[10:00] <syke> you seem to just be down, in general
[10:01] <JayFive> no, I'm feeling it's not worth it if people aren't going to want to use it
[10:01] <JayFive> people want a legal interpreter they can bundle with their games or they want an interpreter for another system
[10:01] <syke> why not join forces with claudio and work on Sarien, to help accelerate the development
[10:02] <syke> (or even freesci ;>)
[10:02] <JayFive> it's the same with nagi.. any recoding could be considered using the original code
[10:02] <syke> I don't think that's tru under US precedent
[10:03] <syke> is australian law says that, then asking sierra for permission might be your only option
[10:03] <JayFive> dunno exactly about aus law
[10:04] <syke> btw, writing documentation is *very* helpful
[10:04] <syke> has been for FreeSCI, anyways
[10:04] <JayFive> but i don't know how i feel about working for sarien and just giving up on nagi
[10:04] * syke shrugs
[10:04] <DopefishJustin> you said you were going to do that anyway
[10:04] <DopefishJustin> give up nagi
[10:05] <syke> if you're tired of AGI in general and just want to move onto something else, then go for it
[10:05] <syke> if you still fidn it interesting, there are options
[10:05] <DopefishJustin> and besides, AGI needs to be documented for future generations when the systems it ran on originally aren't available anymore
[10:06] <DopefishJustin> gotta go, bbl
[10:06] *** DopefishJustin is now known as JustinGone
[10:06] <JayFive> cya later justin
[10:06] <syke> JustinGone: documentation has been helpful in figuring out algorithms. when you try to explain something in english instead of code, sometimes inconsistencies jump out at you :)
[10:07] <JayFive> i'm going to get some sleep and think about it
[10:07] <JayFive> thanks for the suggestions
[10:07] <syke> ok
[10:07] <syke> uit would be cool to have you keep coding, you seem like a very bright guy :)
[10:07] <syke> nite :)
[10:07] <JayFive> cheers :)
[10:07] <JayFive> cya!
Session Close: Wed Jul 11 10:08:01 2001
Session Start: Thu Jul 12 08:28:30 2001
[08:32] <DopefishJustin> so, decided what to do with nagi?
[08:32] <JayFive> I'm thinking about sending a letter to sierra
[08:32] <JayFive> but I don't know what to do in the meantime
[08:33] <DopefishJustin> move zig for great justice? ;)
[08:33] <JayFive> I could give up on nagi.. work on sarien or something like that.. but I always think of cool things to add to nagi
[08:33] <JayFive> like df said, he's just in it for it to work
[08:33] <JayFive> I wanted to make nagi a free interpreter to help people make their own new games as well as play the old ones
[08:34] <JayFive> i think, like i said on the website, I mentioned that this guy rewrote digger and he was my inspiration
[08:34] <JayFive> I go to the site, read the faq and read the question "is this legal?"
[08:34] <JayFive> http://www.digger.org/faq.html
[08:34] <JayFive> so until i get sierra's blessing.. i guess not
[08:34] <DopefishJustin> i was just about to ask that
[08:35] <JayFive> but this guy is willing to give up any copyright to the original authors.. i could be willing to do the same.. but I wouldn't be able to make nagi opensource then
[08:35] <DopefishJustin> you start running into abandonware / emulation type issues with this kinda stuff
[08:36] <JayFive> yer, abandonware is cool.. but it's not legal unless it's authorised
[08:37] <JayFive> I mean, I could ignore the legal issues but then that gets rid of one of the reasons why i wrote nagi
[08:37] <DopefishJustin> right, if you wanna be illegal just use sierra
[08:37] <DopefishJustin> although i seem to recall them giving permission for that
[08:38] <JayFive> did they? if you could find mention of that somewhere, that would be interesting
[08:38] <JayFive> on the sierra website they have a snail mail address for general enquires
[08:38] <JayFive> and a crappy feedback web interface
[08:38] <DopefishJustin> i think it was only for one AGI site though, not blanket
[08:38] <JayFive> I think the snail mail is the way to go though
[08:38] <DopefishJustin> yeah
[08:39] <DopefishJustin> copyright laws are just fscked for computer software
[08:40] <JayFive> well no, they're fine
[08:40] <DopefishJustin> they're way too long
[08:40] <JayFive> but software companies have to clearly define what's going on with software that's 15 years old
[08:41] <JayFive> the gpl *needs* the copyright law for it to work
[08:41] <JayFive> software patents.. that's another kettle of fish
[08:41] <DopefishJustin> by the time it's legal to copy anything it'll have physically rotted
[08:48] <JayFive> well yer.. it depends ont he
[08:48] <JayFive> the copyright holder to back it up
[08:48] <DopefishJustin> fat chance
[08:53] <JayFive> basically, you need a fair enough time for large corporations to look after their copyright
[08:53] <JayFive> a way for them to extend it if they wish
[08:53] <JayFive> and some public backup system so that when the copyright does expire, people can access the information
[08:54] <DopefishJustin> yeah, renewal is good because that lets the stuff they care about get protected while letting the old stuff expire and get distributed
[08:54] <DopefishJustin> if they've forgotten it exists, they can't renew the copyright
[08:54] <JayFive> perhaps if it's owned by one person, let the copyright exist until they die
[08:54] <JayFive> if it's a corporation.. 10 years or more if they renew it
[08:55] <DopefishJustin> but no, Disney's gotta increase the copyright for EVERYTHING, just so mickey mouse won't expire
[08:55] <JayFive> eventually, the copyright for mickey will last until the sun blows up
[08:55] <DopefishJustin> but what about the human colonies on alpha centauri?
[08:55] <DopefishJustin> they must pay to see mickey too!!!!
[08:56] <JayFive> i think they'd be more worried about killing aliens
[08:57] <JayFive> I'd only move to alpha centauri if i could fight aliens
[08:57] <JayFive> bugger this whole population crisis thingy.. give me death of aliens!
[08:58] <DopefishJustin> plus, copyright is now nonenforceable in practice
[08:58] <JayFive> oh, they'd find a way to get somebody over to alpha centauri
[08:59] <JayFive> the law cases might take a while though
[09:00] <JayFive> heh, i love saying "they
[09:01] <JayFive> they'll find a way" even if i don't know if they can :)
[09:02] <JayFive> if QT's gpl
[09:02] <JayFive> why doesn't somebody port the linux version to windows?
[09:02] <JayFive> qt's linux port is qpl I mean
[09:02] <DopefishJustin> that's a darn good question
[09:02] <JayFive> arrgh.. gpl
[09:02] <DopefishJustin> i dunno if it's gpl, it might be some other license
[09:03] <JayFive> i heard the words trolltech, gpl and qt in the same sentence I'm sure!
[09:05] <DopefishJustin> from their web page, it looks like it's free but commercial
[09:07] <JayFive> http://www.trolltech.com/products/download/freelicense/qtfree-dl.html
[09:08] <DopefishJustin> hmm
[09:08] <DopefishJustin> maybe it's a lot of work and there are already other free widget sets to use
[09:09] <JayFive> i love how the free version for windows only supports a non-free ide/compiler (visual c)
[09:10] <DopefishJustin> I don't know whether to laugh or be angered at the IDSA FAQ on their web page. They answer all the questions but completely miss the point.
[09:12] <JayFive> i think the correct emotion is frustrated.. anger gets you nowhere apparently
[09:12] <DopefishJustin> frustration is good
[09:13] <DopefishJustin> unfortunately, it looks like Sierra is an IDSA member
[09:15] <JayFive> if they've got contact info on the idsa site. .that could be good
[09:15] <DopefishJustin> it only mentions Havas Interactive, their parent company
[09:22] <JayFive> oh no.. the original agi-studio is in pascal! :)
[09:34] <syke|gone> hi
[09:35] *** syke|gone is now known as syke
[09:36] <syke> QT is dual-licensed. GPL and Commercial licenses
[09:36] <syke> the win32 QT has an odd free license
[09:36] <syke> but is still free
[09:36] <DopefishJustin> free beer?
[09:36] <syke> someone has a KDE on windows project that uses cygwin
------
Heh, I'm talking about copyright issues and here I am, copying and pasting information without asking for permission.
I'm in the process of writing letters to Sierra and other peoples if I can get around to it. The good news is that I'll be working on NAGI until I get a reply (if any). I'm not as depressed about the situation as I was before. (i've had time to sleep and think about it)
The ideas:

- write letters to Sierra
- release the source or specs for the disassmbled functions and let other people "rewrite them"
- ignore Sierra. (not a good idea.. they could bite me on the ass later on)
- trash NAGI and just release docs for Sarien to work on.
- contribute my original code and specs to Sarien.
- contribute to AGI Studio instead.

I don't really want to trash NAGI and I like the idea of working in a project where I wrote most of the code. So I'm going with the writing letters and working on NAGI at the moment.
Thanks for reading all this if you actually did. :) If you have any ideas or suggestions, they would be VERY welcome!
- Nick
--> sonneveld@hotmail.com
--> #AGI channel on dalnet
--> #Sarien channel on irc.openprojects.net
--> Megatokyo Messageboard too (http://www.mega-tokyo.com/cgi-bin/yabb/YaBB.pl)