#exult@irc.freenode.net logs for 21 Mar 2002 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage

[00:07:36] <-- wjp has left IRC ("Zzzz....")
[00:40:06] --> Kirben has joined #exult
[00:40:06] --- ChanServ gives channel operator status to Kirben
[00:41:56] <Kirben> Any decision on next version number for cvs ?
[00:56:27] --> Darke has joined #exult
[00:56:27] --- ChanServ gives channel operator status to Darke
[00:56:45] * Darke hops in rather earlier today. <grin> "Hi."
[00:57:06] <Kirben> Hi Darke
[00:57:23] <Darke> Kirben: Wasn't there a discussion about calling it 0.99cvs?
[00:57:37] <-- exultbot has left IRC (signing off...)
[00:58:40] --> exultbot has joined #exult
[01:28:25] <-- exultbot has left IRC (signing off...)
[01:29:28] --> exultbot has joined #exult
[01:29:28] --- Topic for #exult is: Exult v0.98 RC1 Now Available! Download it NOW! http://exult.sf.net
[01:29:28] --- Topic for #exult set by Colourless at Wed Mar 13 20:23:47 2002
[02:55:08] --> sb-x has joined #exult
[02:57:04] <sb-x> hi
[03:09:31] <Darke> Hi!
[03:13:05] <sb-x> Darke: Do you know all about gtk-gnutella?
[03:19:10] <kefka> sb-x: i use it.. i don't know too much about it though
[03:20:04] <kefka> sb-x: there are some really annoying bugs in it too..
[03:20:38] <sb-x> oh ok, yeah it certainly isn't finished in areas
[03:20:51] <sb-x> i was going to ask what "File size mismatch" meant but i figured it out from the source
[03:21:20] <kefka> when i click to download a file, the screen changes to the wrong spot.. it SHOULD change to the transfers screen
[03:21:27] <kefka> sb-x: oh ok
[03:22:17] <kefka> sb-x: have you noticed that many, if not all, of the connections that gtk-gnutella maintains are Gnucleus 1.6.x.x?
[03:22:31] <sb-x> some of them are BearShare
[03:23:05] <sb-x> if you mean in the gnutellaNet window
[03:23:20] <kefka> yeah..
[03:23:29] <kefka> i dunno.. with me, almost all are Gnucleus
[03:24:03] <kefka> i heard there is conflicts brewing between gnutella apps
[03:24:13] <kefka> and people are trying to segment the network
[03:24:18] <kefka> to shut out others
[03:25:05] <kefka> i restarted gtk-gnutella just now, and ALL 5 connections are Gnucleus
[03:25:20] <kefka> heh
[03:25:31] <sb-x> heh maybe... i don't use it much
[03:25:41] <sb-x> i just use it enough to know that I want to change the program a little
[03:26:52] <sb-x> if i figure out how and I have the time I will change the download queue to a tree
[03:29:04] <-- exultbot has left IRC (signing off...)
[03:30:04] --> exultbot has joined #exult
[03:30:04] --- Topic for #exult is: Exult v0.98 RC1 Now Available! Download it NOW! http://exult.sf.net
[03:30:04] --- Topic for #exult set by Colourless at Wed Mar 13 20:23:47 2002
[03:33:18] <Darke> sb-x: Sorry, I don't know much more about gtk-gnutella, other then that it works nicely for me. <grin>
[03:35:23] <sb-x> i did make one change already to get rid of the "urn:sha1:2SD4..." tags in some of the info strings
[03:36:17] <sb-x> now i have a completely unrelated question, anyone know what the best way to code a anything-goes-here stack?
[03:36:31] <sb-x> is the way exult does it the best (speed)?
[03:37:41] <kefka> not me :)
[03:45:55] <Darke> sb-x: A 'anything goes here stack'? Just a stack you can push an int/string/vector or whatever onto, then pop it off whilst retaining type information? Or one that's the equilivant of (void *)s? OTOP, you could have a stack of (void *)s, then just have an enum which stores the type.
[03:47:43] <sb-x> Is that the fastest method?
[03:51:34] <Darke> (void * + enum) I would think so.
[03:53:06] <sb-x> exult uses a Usecode_val that contains the enum?
[03:54:36] <sb-x> hmm I have to go actually
[03:54:42] <sb-x> I'll be back and we can discuss :)
[03:54:44] * sb-x waves
[03:54:44] <-- sb-x has left IRC ("X-Chat [1.6.4]")
[04:49:54] --> ShadwChsr has joined #Exult
[05:21:41] <-- ShadwChsr has left IRC ()
[06:38:00] --> sb-x has joined #exult
[06:38:16] <sb-x> The Exultant one has returned.
[06:38:28] * sb-x greets everyone.
[06:39:21] <Darke> Hello again your sb-xness.
[06:40:56] * sb-x bows to "Baron von Usecode"(Darke).
[06:46:51] * Darke thinks that's probably a better title for wjp or DrCode then himself. <grin>
[06:47:57] --> ShadwChsr has joined #Exult
[06:48:09] <ShadwChsr> hi
[06:48:35] <sb-x> hi
[06:48:41] <ShadwChsr> whats new? :)
[06:48:50] <-- ShadwChsr has left IRC (Client Quit)
[06:49:07] --> ShadwChsr has joined #Exult
[06:49:12] <ShadwChsr> whoops
[06:49:14] <ShadwChsr> :)
[06:50:58] <sb-x> :)
[06:51:21] <ShadwChsr> Doin good? Still thinkin about creating your own game?
[06:53:11] <sb-x> more than thinking yes :)
[06:53:30] <sb-x> the only reason I don't have much yet is because my time is limited and I always have something else to work on
[06:54:27] <sb-x> are you?
[06:54:42] <sb-x> (still working on your game)
[06:55:24] <ShadwChsr> Yeah
[06:55:30] <ShadwChsr> Though.. its difficult with just me
[06:55:39] <ShadwChsr> considering I've never written a game before.. this is unreal ;-)
[06:55:57] <ShadwChsr> I'm building quite the framework
[06:56:08] <ShadwChsr> Reading is a powerfull thing ;)
[06:56:52] <sb-x> What is the rendering difficulty you had?
[06:56:59] <sb-x> i was not follow the ml discussion
[06:57:05] <sb-x> s/follow/following/
[06:57:16] <ShadwChsr> Well - integrating characters into the rendering
[06:57:29] <ShadwChsr> walls & ground tiles are all the same size and exist on one "grid" location
[06:57:44] <ShadwChsr> characters can be between grid cells/locations.. which causes rendering problems
[06:57:55] <ShadwChsr> However I solved walls... I'll deal with characters later
[06:58:13] <sb-x> you just draw walls after drawing player?
[06:58:18] <ShadwChsr> No
[06:58:28] <ShadwChsr> I looked carefully at the UO source media
[06:58:30] <ShadwChsr> they cut up their walls
[06:58:58] <ShadwChsr> I had assumed the entire object layer could be between tiles - a bad assumption. So now I'm only assuming that for players, which makes it alot easier.
[06:59:10] <ShadwChsr> The players are rendered using clipping
[06:59:21] <ShadwChsr> you render them more than once, clipping for each cell
[07:00:49] <sb-x> what is a cell? the diamond shaped areas where tiles go?
[07:01:25] <ShadwChsr> Yeah
[07:01:37] <ShadwChsr> In fact, I just did a test with a player and a wall, and it works 90% well
[07:01:41] <ShadwChsr> Enough for an alpha release, for sure
[07:01:42] <ShadwChsr> :)
[07:02:07] <ShadwChsr> He can't even walk through it ;)
[07:02:27] <sb-x> wow
[07:02:33] <sb-x> ;)
[07:02:40] <ShadwChsr> are you being sarcastic? :)
[07:02:51] <ShadwChsr> disappears once and awhile when walking in front, but this is alot better than I expected :)
[07:02:55] <sb-x> heh
[07:03:00] <sb-x> he has to go up steps now
[07:03:06] <ShadwChsr> Bah that's easy
[07:03:20] <ShadwChsr> Well, will be
[07:03:52] <ShadwChsr> Right now i'm doing simple collision detection. I'm going to expand it to use bounding boxes instead of cells, which will improve things alot.
[07:03:55] <sb-x> last time i tried worked on a 2d engine like this (well it wasnt isometric), i drew all things in the same pass, but i rendered tile by tile from top to bottom and it Just Worked iirc
[07:04:21] <ShadwChsr> Isometric is trickier
[07:04:38] <ShadwChsr> with smooth animations, anyways
[07:05:09] <sb-x> in the one i worked with i hadnt got to secondary characters yet, just the player
[07:05:17] <sb-x> and he was always in the middle
[07:05:24] <sb-x> so it was the map that scrolled
[07:05:42] <sb-x> I'm sure it would have gotten trickier if I had kept working on it. :)
[07:05:46] <ShadwChsr> :)
[07:05:59] <ShadwChsr> Want to see more screens?
[07:06:10] <sb-x> yeah
[07:06:28] <sb-x> especially ones with rendering errors :)
[07:07:53] <ShadwChsr> Theres one ;)
[07:08:40] <sb-x> when you add bounding boxes, have an option to show a glowing 3D outline of the box
[07:08:40] <sb-x> it looked really cool in U8
[07:08:56] <ShadwChsr> mine has a red outline ;)
[07:09:02] <ShadwChsr> but not glowing ;)
[07:09:07] <ShadwChsr> not going to accept?
[07:09:20] <sb-x> im lagged
[07:11:05] <ShadwChsr> That is, by far, the worst screenshot of the game ;)
[07:11:06] <sb-x> O_o
[07:11:14] <sb-x> that looks like it hurts
[07:11:15] <ShadwChsr> *ever*
[07:11:16] <ShadwChsr> ;)
[07:11:39] <ShadwChsr> here have a better one. Still crappy media used, but hey, its a test ;)
[07:11:55] <ShadwChsr> I rewrote the fileformat for tiles so all my "good" ones are broken lol
[07:12:07] <sb-x> what is the file format?
[07:12:50] <sb-x> what is your site? can i download a working demo there?
[07:13:05] <sb-x> i know you gave me the url before but i forgot
[07:14:39] <ShadwChsr> Want one?
[07:14:50] <ShadwChsr> www.sourceforge.net/projects/lupercalia
[07:14:58] <sb-x> I was hoping to play
[07:14:59] <ShadwChsr> I dont have a working demo there.. but I can send one
[07:15:08] <ShadwChsr> theres not much to play, im working on the engine not the world
[07:15:17] <ShadwChsr> I'll give you a patch of grass to walk around on hehehehe
[07:15:42] --> Kirben2 has joined #exult
[07:15:42] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[07:16:05] <sb-x> how can I edit maps?
[07:16:22] <ShadwChsr> Theres a map editor
[07:16:25] <ShadwChsr> and resource editor
[07:16:27] <ShadwChsr> I'll send those too
[07:17:02] <sb-x> that says you have 7 developers
[07:17:09] <ShadwChsr> All wannabies that do nothing
[07:17:13] <ShadwChsr> Except I signed up a webmaster today
[07:17:16] <sb-x> would I be able to turn the patch of grass to a castle? :)
[07:17:17] <ShadwChsr> mabye he will help ;)
[07:17:18] <sb-x> ooh
[07:17:57] <ShadwChsr> I'm not kicking the loosers out yet since it makes the game look more popular and I hope to get real help that way :)
[07:18:37] <sb-x> how long do you think it will be until it is multi-platform?
[07:19:12] <ShadwChsr> long
[07:19:20] <ShadwChsr> Gotta be working damn good in windows first
[07:19:29] <ShadwChsr> But delphi compiles in linux
[07:19:35] <ShadwChsr> so if someone does an SDL port, we're all set.
[07:20:10] <sb-x> theres a client and devtools on the site? what are those?
[07:20:24] <ShadwChsr> BTW - don't scream bloat - #1 - debug compile, #2 - theres a LOT of framework code even if the game itself looks simple
[07:20:30] <ShadwChsr> Older versions
[07:20:38] <ShadwChsr> however you cant do much since there's no media (graphics)
[07:20:39] <ShadwChsr> :)
[07:20:52] <ShadwChsr> you're on modem?
[07:21:02] <sb-x> oh, does this exe contain the graphics?
[07:21:06] <ShadwChsr> no
[07:21:10] <ShadwChsr> GRFs do
[07:21:10] <sb-x> yeah im connected at 26.4kbps
[07:21:14] <ShadwChsr> GRF = Game Resource Format
[07:21:29] <ShadwChsr> Sort of a little database hierarchy expandable format thing I wrote ;)
[07:21:31] <sb-x> do you have a description of the format?
[07:21:33] <ShadwChsr> Yes
[07:21:46] <ShadwChsr> and a pascal header & source for it, easily portable
[07:21:51] <ShadwChsr> Two parts to it
[07:21:57] <ShadwChsr> the generic format
[07:22:37] <ShadwChsr> the format has entries with string IDs. The string IDs tell the parser how to read the data for that item, thats the second part, the game GRF headers.. for things like tiles, characters, animations, etc
[07:22:51] <sb-x> for my binary data packaging i have decided to use a simple enumerated format, but with the option of putting the element size before each element, and also the option of having an index as the second element
[07:22:55] <ShadwChsr> All media & files are GRF in the game right now. Maps, animations, sprites, tiles
[07:23:20] <ShadwChsr> This one has child elements
[07:23:29] <ShadwChsr> Header sizes and data sizes
[07:23:52] <ShadwChsr> * 0GRF0 (FileIdent)
[07:23:53] <ShadwChsr> * -------------------------------------- ------------
[07:23:53] <ShadwChsr> * GameID (16 single-byte chars) (GRF Header)
[07:23:53] <ShadwChsr> * Description (100 single-byte chars)
[07:23:53] <ShadwChsr> * Version (8bit Unsigned Integer)
[07:23:53] <ShadwChsr> * Build (8bit Unsigned Integer)
[07:23:58] <ShadwChsr> * -------------------------------------- ------------
[07:23:59] <ShadwChsr> * ItemID (8 single-byte chars) (GRF Item)
[07:23:59] <ShadwChsr> * Name (100 single-byte chars)
[07:24:01] <ShadwChsr> * Size (32bit Unsigned Integer)
[07:24:03] <ShadwChsr> * NextItemPos (32bit Unsigned Integer)
[07:24:05] <ShadwChsr> * FirstChildPos (32bit Unsigned Integer)
[07:24:07] <ShadwChsr> * -------------------------------------- ------------
[07:24:09] <ShadwChsr> * ???????? (Item Data)
[07:24:11] <ShadwChsr> * -------------------------------------- ------------
[07:24:35] <ShadwChsr> that's a little out of date, there's also a header size now so it can do things like compact the file
[07:24:44] <ShadwChsr> without understanding the structure of the data
[07:25:48] <sb-x> how will you compact it?
[07:26:09] <ShadwChsr> Well it allows for items to be deleted.. just changes the "nextItemPos" and "firstchildpos"
[07:26:48] <ShadwChsr> I haven't 100% worked that out yet, but basically will chart start & end positions of the records, sort them, then look for gaps
[07:26:55] <sb-x> will there be compression?
[07:26:59] <ShadwChsr> No
[07:27:24] <ShadwChsr> Compression is handled in the item data if the programmer wants, but the headers aren't compressed
[07:27:40] <ShadwChsr> I've considered having a ZIP wrapper or something for the GRF file.. GRZ or whatnot
[07:27:53] <ShadwChsr> I can always add that easily later.
[07:28:06] <sb-x> i plan to compress the entire package file except the main header
[07:28:09] <ShadwChsr> the media is stored in PNG which is compressed natively using zippish compression ;)
[07:28:35] <sb-x> PNG is great
[07:28:39] <ShadwChsr> The GRF files are dynamically loaded throughout the game, so speed is a major issue. I dont want to decompress a 20meg file every few minutes :)
[07:29:21] <ShadwChsr> What version of windows are you running?
[07:29:37] <sb-x> you could put a compressed index and key in an uncompressed portion of the file, and maybe use that to implement faster decompression of segments
[07:29:50] <sb-x> 95
[07:29:50] <sb-x> hehe
[07:29:57] <ShadwChsr> Direct-X 7?
[07:30:11] <sb-x> 8
[07:30:14] <ShadwChsr> good
[07:30:16] <ShadwChsr> it requires 7
[07:30:34] <ShadwChsr> Well one bonus of the fileformat is that it doesn't need indexes
[07:30:35] <sb-x> i got it to play Jumpgate
[07:31:16] --- Kirben2 is now known as Kirben
[07:31:18] <ShadwChsr> I want small files to be VERY small (no pre-allocated index wasting space), but I want the ability to add large numbers of records without constantly having to expand the index size and move it around because of that
[07:31:27] <ShadwChsr> ok heres how you set this sucker up
[07:31:31] <ShadwChsr> throw all the stuff in a dir
[07:31:41] <ShadwChsr> make a subdirectory called "Resources" and put the two GRFs in there
[07:31:43] <sb-x> yeah but each item needs a header/descriptor
[07:32:05] <sb-x> hmm i cant do it now
[07:32:16] <ShadwChsr> then run "game -map grassland.map -char Werewolf_Male
[07:32:17] <ShadwChsr> or
[07:32:21] <ShadwChsr> then run "game -map grassland.map -char Warrior_Male
[07:32:23] <ShadwChsr> etc
[07:32:26] <sb-x> im not in window
[07:32:26] <sb-x> s
[07:32:26] <sb-x> actually i can, since the directory is mounted
[07:32:45] <ShadwChsr> You're not going to try it out now? bah
[07:32:46] <ShadwChsr> ;)
[07:33:09] <sb-x> what is the game called again? :)
[07:33:09] * sb-x needs to make a Software directory.
[07:33:47] <ShadwChsr> Oh BTW theres a nasty PNG issue in one of the "walk north" frames for warrior_male, so expect it to crash if you walk north
[07:33:55] <ShadwChsr> I should fix that frame one day ;)
[07:35:02] <ShadwChsr> This isn't a really nice planned demo ;)
[07:35:19] <ShadwChsr> Oh and the character disappears when you run because there are no animations for running in the GRF
[07:35:43] <ShadwChsr> It all works, its just that I don't want to spend alot of time setting up all sorts of fancy animations if I decide to change the fileformat in a week ;)
[07:35:56] <sb-x> i think i have the directories set up now
[07:35:58] <ShadwChsr> well, item header that is
[07:36:17] <ShadwChsr> Want the map editor and/or resource editor?
[07:36:29] <sb-x> yes
[07:36:35] <sb-x> and source code if possible :D
[07:36:53] <ShadwChsr> lol
[07:36:59] <ShadwChsr> Why? You dont even know delphi ;)
[07:37:11] <sb-x> if i figure it out(Delphi), maybe i can port it to SDL
[07:37:25] <sb-x> unless you've already started an API conversion
[07:37:40] <ShadwChsr> no, but its way to early for porting
[07:37:50] <ShadwChsr> But if you're going to help then I might let you :)
[07:38:16] <sb-x> you can make your own wrappers for rendering/input
[07:38:25] <ShadwChsr> Its not a good time to port - source code is nasty and halfway through a rework (walls). Wait until thats completed a little more
[07:38:27] <sb-x> and then port those to SDL or directx or whatever
[07:38:36] <sb-x> the rest of the app is untouched
[07:38:42] <sb-x> ok
[07:39:01] <ShadwChsr> Yeah, that's what I've been trying to do - theres a source file called "directx.pas"
[07:39:23] <ShadwChsr> I tried to put all the directx stuff into there. I think theres a few other places it "escaped" though.
[07:39:38] <sb-x> heh
[07:39:56] <sb-x> in the card game i was working on recently, I put the rendering stuff into draw-sdl.c,draw-sdl.h
[07:40:16] <ShadwChsr> Still need a wrapper for it though, right now its kind of spread out... although most of it will be in the sprite.draw parameter
[07:40:38] <sb-x> parameter?
[07:40:46] <ShadwChsr> function procedure whatever ;)
[07:41:05] <sb-x> method? :)
[07:41:06] <ShadwChsr> procedure - sorry almost midnight here, brain slowing down :)
[07:41:17] <ShadwChsr> procedure = delphi terminology for a method
[07:41:24] <ShadwChsr> function with no result
[07:42:05] <sb-x> is this pascal+delphi or does delphi use .pas extension, or does delphi consider itself a superset of pascal?
[07:42:52] <ShadwChsr> delphi uses the .pas extension
[07:43:04] <ShadwChsr> delphi is based on pascal.. I guess you could call it "Object Pascal"
[07:43:10] <sb-x> in my bytecode interpreter i've called everything like that a 'program', if it doesnt return a result it is an 'action' and if it does its a 'function'
[07:43:18] <sb-x> oh
[07:44:14] <ShadwChsr> syntax is almost exactially the same except you have Object1.Object2, and "type TGame = class(TObject)"
[07:44:25] <ShadwChsr> stuff like that
[07:45:21] <sb-x> do the delphi tutorials/manuals/guides on the internet explain it in a way someone unfamiliar with pascal would understand?
[07:45:36] <ShadwChsr> nO
[07:45:38] <ShadwChsr> :)
[07:45:51] <ShadwChsr> Delphi's help sucks
[07:45:55] <ShadwChsr> Once you learn it it kicks ass
[07:46:01] <ShadwChsr> You don't know pascal?
[07:46:20] <sb-x> no
[07:46:28] <ShadwChsr> It's pretty easy to learn, delphi's internal types are trickier, but I dont use them
[07:46:48] <ShadwChsr> function SomeProcedure(Param1: String; Param2,Param3: Integer): Boolean;
[07:46:50] <ShadwChsr> var
[07:46:53] <ShadwChsr> i: Integer;
[07:46:54] <ShadwChsr> begin
[07:46:58] <ShadwChsr> Result := False;
[07:47:00] <ShadwChsr> end;
[07:47:02] <ShadwChsr> ;-)
[07:47:25] <ShadwChsr> If Param2=Param3 Then
[07:47:26] <ShadwChsr> begin
[07:47:34] <ShadwChsr> Param1 := 'Same!';
[07:47:41] <ShadwChsr> end else begin
[07:47:42] <sb-x> do you have a CVS repository?
[07:47:48] <ShadwChsr> Param1 := 'Not same!';
[07:47:50] <ShadwChsr> end;
[07:47:58] <ShadwChsr> ;-) there's your pascal tutorial LOL
[07:48:04] <ShadwChsr> no, I don't know how to use CVS
[07:48:17] <ShadwChsr> one of my "developers" was supposed to help me set it up, but he hasn't been around lately
[07:48:23] <sb-x> i dont understand begin, :=, end
[07:48:25] <ShadwChsr> And there hasnt bee much need with just me working on it
[07:48:34] <ShadwChsr> := is assignment. Like = in C
[07:48:44] <ShadwChsr> = is a condition test, like == in C
[07:48:52] <ShadwChsr> begin and end; is like { and }
[07:49:08] <ShadwChsr> ; signifies the end of a command
[07:49:15] <sb-x> i showed Darke a link to a really good book on CVS
[07:49:16] <sb-x> maybe he has it bookmarked
[07:49:41] <sb-x> of course, i have the CVS info page installed :)
[07:49:43] <ShadwChsr> Its alot easier to read than C.. You'll pick it up fast
[07:49:49] <sb-x> hmm
[07:50:30] <sb-x> since Pascal has different assignment and condition symbols, i assume you can use assignment anywhere within a statement?
[07:50:30] <sb-x> like C
[07:50:51] <ShadwChsr> yes
[07:51:04] <ShadwChsr> actually no
[07:51:10] <sb-x> if(!(my_stream = fopen("my_file", "r")));
[07:51:21] <ShadwChsr> Well you could do this
[07:51:40] <ShadwChsr> Oh I know what you mean, no you can't do that
[07:51:45] <sb-x> if(!my_stream = fopen("my_file", "r")) { return(FALSE); } else { return(TRUE); }
[07:51:45] <sb-x> :D
[07:52:36] <ShadwChsr> You'd need two lines for that
[07:52:39] <ShadwChsr> But much more readable ;)
[07:53:03] <ShadwChsr> my_stream := TFileStream.Create("myfile",FSReadOnly);
[07:53:20] <ShadwChsr> If assigned(my_stream) then result := true else result := false;
[07:53:43] <ShadwChsr> I don't know much C, I have trouble reading the chickenscratch :)
[07:54:23] --> es_bee-ex has joined #exult
[07:54:33] <es_bee-ex> beh
[07:54:39] <-- sb-x has left IRC (Killed (NickServ (Ghost: es_bee-ex!~sbx@
[07:54:41] --- es_bee-ex is now known as sb-x
[07:54:45] <ShadwChsr> <ShadwChsr> You'd need two lines for that
[07:54:45] <ShadwChsr> <ShadwChsr> But much more readable ;)
[07:54:45] <ShadwChsr> <ShadwChsr> my_stream := TFileStream.Create("myfile",FSReadOnly);
[07:54:45] <ShadwChsr> <ShadwChsr> If assigned(my_stream) then result := true else result := false;
[07:54:45] <ShadwChsr> <ShadwChsr> I don't know much C, I have trouble reading the chickenscratch :)
[07:54:58] <sb-x> [01:50:29] <sb-x> if(!my_stream = fopen("my_file", "r")) { return(FALSE); } else { return(TRUE); }
[07:54:59] <sb-x> [01:50:32] <sb-x> :D
[07:54:59] <sb-x> [01:51:25] <sb-x> although I guess it doesn't necessarily have to do that, having different assignment and condition symbols makes sense even if its just to add readability
[07:55:25] <sb-x> hmm i see
[07:55:37] <sb-x> assigned returns?
[07:55:43] <ShadwChsr> Yes
[07:55:51] <sb-x> what does it test?
[07:55:58] <ShadwChsr> hmm?
[07:56:07] <sb-x> what does assigned(my_stream) mean?
[07:56:17] <ShadwChsr> If my_stream is null or not
[07:56:21] <ShadwChsr> if theres a pointer assigned to it
[07:56:30] <sb-x> oh
[07:56:45] <sb-x> so if my_stream points to some memory location it returns true?
[07:57:07] <sb-x> like a C pointer
[07:57:11] <ShadwChsr> no my_stream would point to a typed varaible.. a typed pointer
[07:57:16] <ShadwChsr> var
[07:57:20] <ShadwChsr> my_stream: TFileStream;
[07:57:21] <ShadwChsr> begin
[07:57:28] <ShadwChsr> my_stream := SomePointer;
[07:57:34] <sb-x> but the stream is in memory somewhere
[07:57:34] <ShadwChsr> my_stream := SomeTFileStreamObject;
[07:57:36] <ShadwChsr> both would work
[07:57:37] <ShadwChsr> yes
[07:57:59] <sb-x> and my_stream being "assigned" would mean it contains that memory location?
[07:58:07] <ShadwChsr> yes
[07:58:11] <ShadwChsr> For instance
[07:58:21] <ShadwChsr> object := GetObject;
[07:58:48] <ShadwChsr> if the function "GetObject" failed and didn't return a pointer (nothing or what delphi calls 'nil'), then you couldn't use it
[07:58:52] <ShadwChsr> object.Run;
[07:58:56] <ShadwChsr> would return an error
[07:59:01] <sb-x> you can call a function without parenthesis?
[07:59:01] <ShadwChsr> so you test to make sure something exists in there
[07:59:06] <ShadwChsr> yes
[07:59:07] <ShadwChsr> or with
[07:59:21] <sb-x> nil == null?
[07:59:23] <ShadwChsr> You cannot call one with parameters without parenthesis like basic however
[07:59:27] <ShadwChsr> nil <> null
[07:59:30] <ShadwChsr> err i should way
[07:59:36] <ShadwChsr> nil <> ASCII Character 0
[07:59:36] <sb-x> heh
[07:59:46] <ShadwChsr> Nil is a way of identifying an "empty" pointer
[07:59:53] <ShadwChsr> a pointer with a numeric value of 0
[07:59:54] <sb-x> Delphi Nil == C Null?
[08:00:01] <ShadwChsr> typecast Pointer(0) = Nil
[08:00:02] <ShadwChsr> :)
[08:00:10] <sb-x> what does typecast do?
[08:00:17] <ShadwChsr> Typecasts a variable
[08:00:26] <ShadwChsr> typecast isn't a command
[08:00:28] <ShadwChsr> thats me writing
[08:00:33] <sb-x> oh
[08:00:38] <sb-x> how would you cast in Delphi?
[08:00:39] <ShadwChsr> 12Pointer(0)1 is the typecast
[08:00:54] <ShadwChsr> to typecast you just wrap the type name around the variable or constant
[08:01:07] <ShadwChsr> TDecendant(TObject(SomePointer))
[08:01:41] <sb-x> ah
[08:01:42] <ShadwChsr> or Pointer(1000) or LongInt(SomePointer)
[08:01:48] <sb-x> that is like a cast macro in GTK+
[08:01:54] <ShadwChsr> to work with memory addresses as integers
[08:02:25] <sb-x> what about Int(SomePointer) ?
[08:02:31] <ShadwChsr> there is no int
[08:02:41] <ShadwChsr> Integer = Signed 32bit
[08:02:50] <ShadwChsr> sorry it wasnt longint, i mean longword
[08:02:54] <sb-x> Oooh
[08:02:55] <ShadwChsr> LongWord = Unsigned 32bit
[08:03:19] <ShadwChsr> Word = unsigned 16bit
[08:03:25] <ShadwChsr> smallint = signed 16bit
[08:03:29] <sb-x> heh
[08:03:34] <ShadwChsr> byte = 8bit
[08:03:40] <ShadwChsr> shortint = signed 8bit
[08:03:52] <sb-x> that is one thing that will confuse me
[08:03:58] <ShadwChsr> There's also an int64
[08:04:03] <ShadwChsr> signed 64bit
[08:04:09] <sb-x> i never thought of integers as being signed and words as being unsigned :)
[08:04:29] <sb-x> and my mind is stuck on short being 16 bit
[08:04:32] <ShadwChsr> Most people (99%) writing delphi make that mistake
[08:04:58] <ShadwChsr> They pass windows API parameters and pointers (memory addresses) as signed integers.. pisses me off!! Theres no such thing as a negative memory address ;)
[08:05:10] <ShadwChsr> If you're doing memory address math then it fucks up and the program crashes ;)
[08:05:24] <ShadwChsr> Integer(SomePointer) + SizeOf(DataSet) would fuck up to hell and back
[08:05:33] <sb-x> i guess i could make some Uint8 Uint16 Sint32 etc types to shield myself from the harsh realities of Delphi :)
[08:05:42] <ShadwChsr> since it Integer(SomePointer) could return -1 when you really want 2billion or something ;)
[08:05:49] <sb-x> actually if you port to SDL it already has those new types
[08:05:55] <sb-x> heh
[08:06:56] <ShadwChsr> C strings are called "PChar" in delphi
[08:07:06] <ShadwChsr> you want to use "String" though, it has garbage collection :)
[08:07:09] <sb-x> are they character arrays?
[08:07:11] <ShadwChsr> ie/ no buffer overruns
[08:07:13] <ShadwChsr> Yes
[08:07:36] <ShadwChsr> Pointer to "an array" of chars.. or pointer to a memory reference of a null terminated string of chars
[08:07:37] <ShadwChsr> same thing
[08:07:57] <ShadwChsr> all delphi strings can be arrays
[08:08:40] <ShadwChsr> i := i + 1;
[08:08:46] <ShadwChsr> i := inc(i);
[08:08:49] <ShadwChsr> do the same thing
[08:09:34] <sb-x> what is i in that example?
[08:11:18] <ShadwChsr> operators: 12@, not, ^, *, /, div, mod, and, shl, shr, as, +, , or, xor, =, >, <, <>, <=, >=, in, and is.
[08:11:27] <ShadwChsr> i is a variable, an integer
[08:11:31] <ShadwChsr> var i: integer;
[08:11:42] <sb-x> oh
[08:11:42] <ShadwChsr> @ - special one, not used much
[08:11:47] <ShadwChsr> "not" is the same as "!"
[08:11:50] <sb-x> what is @?
[08:12:08] <ShadwChsr> ^ is to declare a pointer to a variable ie/ an integer, etc. Not a class object
[08:12:28] <ShadwChsr> returns the address of a variable
[08:12:39] <ShadwChsr> SomePointer := @SomeInteger
[08:12:48] <sb-x> why isnt it used much?
[08:13:01] <sb-x> in C i use &SomeVariable all the time
[08:13:06] <ShadwChsr> There are two types of variables.. the pointer/object kind, and the classic kind (integer, string, etc). The classic kind need @ in front to get a pointer to it
[08:13:08] <sb-x> well, somewhat frequently
[08:13:09] <ShadwChsr> the others already are pointers
[08:13:14] <ShadwChsr> i was wrong.. @ is used twice
[08:13:23] <ShadwChsr> one is an assembly directive, the other is get the address :)
[08:13:26] <ShadwChsr> I forgot, duh
[08:13:42] <ShadwChsr> ^ is to declare or dereference a pointer
[08:13:49] <ShadwChsr> var pi: ^Integer;
[08:13:54] <ShadwChsr> would be a pointer to an integer
[08:13:58] <ShadwChsr> var
[08:14:04] <ShadwChsr> pi : ^Integer;
[08:14:08] <ShadwChsr> i: Integer;
[08:14:10] <ShadwChsr> begin
[08:14:16] <ShadwChsr> i := 10;
[08:14:20] <ShadwChsr> pi := @i;
[08:14:27] <ShadwChsr> i := pi^;
[08:14:29] <ShadwChsr> :)
[08:14:50] <ShadwChsr> div is integer division
[08:15:21] <ShadwChsr> and is for two things - "if A=1 and B=2" and also "c := A and B"
[08:15:32] <ShadwChsr> shl and shr is to shift bits
[08:15:44] <ShadwChsr> i := 4 shl 4
[08:15:59] <ShadwChsr> would make "i" equal.. 1000000
[08:16:14] <ShadwChsr> 100 binary = 4, and we're moving it left 4 bits
[08:16:36] <ShadwChsr> >, <, >=, <=, all obvious
[08:16:40] <sb-x> << >> are shifts in C
[08:17:05] <ShadwChsr> 12is1 operator is used for things like.. 12if variable is TObject
[08:17:20] <ShadwChsr> to check classes when doing things like typecasting
[08:17:32] <ShadwChsr> or to see if something is a decendant of a certain class
[08:17:35] <ShadwChsr> var
[08:17:41] <ShadwChsr> o: TDescendant;
[08:17:41] <ShadwChsr> begin
[08:17:51] <ShadwChsr> o := TDescendant.Create;
[08:18:07] <ShadwChsr> if o is TObject then oObject := TObject(o);
[08:18:16] <ShadwChsr> well, you could assign it anyways, but thats just an example ;)
[08:18:25] <ShadwChsr> more like
[08:18:41] <ShadwChsr> If o is TDescandant then o := TDescendant(o);
[08:19:04] <sb-x> what is in and <> ?
[08:19:42] <ShadwChsr> <> is the same as !=
[08:20:02] <ShadwChsr> If i <> 0 then print 'i doesn't equal 0!!!';
[08:20:27] <sb-x> 'string constant' ?
[08:20:35] <ShadwChsr> in.. i don't think i've ever used
[08:20:45] <ShadwChsr> yes, ' is the string delimeter
[08:20:52] <ShadwChsr> '' is the ' character
[08:20:58] <ShadwChsr> 'Eric''s Computer'
[08:21:24] <sb-x> it doesnt use \ escapes?
[08:21:30] <ShadwChsr> "in" is used when specifying "uses"
[08:21:31] <ShadwChsr> no
[08:21:40] <ShadwChsr> Use
[08:21:59] <ShadwChsr> SomeOtherFile in 'C:\otherfile.pas'
[08:22:02] <ShadwChsr> :)
[08:22:11] <ShadwChsr> err i mean "uses" not "use"
[08:22:32] <ShadwChsr> There are no headers and classes... its all one file. Which is a pain in the ass but oh well :)
[08:22:43] <ShadwChsr> instead of headers & class files you have
[08:22:53] <ShadwChsr> interface
[08:23:03] <ShadwChsr> { .H type stuff goes here... classes, types, etc }
[08:23:07] <ShadwChsr> implementation
[08:23:17] <ShadwChsr> { .CPP type stuff goes here, actual code }
[08:23:19] <ShadwChsr> end.
[08:23:27] <sb-x> do you use the { }?
[08:23:35] <ShadwChsr> { } is a block commend
[08:23:36] <ShadwChsr> comment
[08:23:43] <ShadwChsr> so is (* *) and //
[08:23:48] <-- kefka has left IRC ("[x]chat 1.8.8")
[08:23:50] <ShadwChsr> { } is a block comment, multiline
[08:23:58] <ShadwChsr> - // is a single line comment
[08:24:07] <sb-x> / is a non block comment?
[08:24:12] <sb-x> //
[08:24:20] <ShadwChsr> and (* *) is the same as { }, except its usually used to block out masses of code, that includes { } comments
[08:24:32] <ShadwChsr> i := 0; // Set integer to be 0!
[08:24:33] <sb-x> why is (* *) used?
[08:24:42] <ShadwChsr> It is, but not as much
[08:24:44] <ShadwChsr> for example
[08:24:46] <sb-x> is either (* *) or { } nestable?
[08:24:53] <ShadwChsr> No
[08:24:57] <ShadwChsr> thats why you have (* *)
[08:25:06] <ShadwChsr> watch
[08:25:11] <ShadwChsr> { My code }
[08:25:13] <ShadwChsr> i := 0;
[08:25:17] <ShadwChsr> { More Code }
[08:25:19] <ShadwChsr> i2 := 0;
[08:25:21] <ShadwChsr> ---
[08:25:23] <sb-x> so you can nest a single { } in a (* *)
[08:25:28] <ShadwChsr> lets say I decide fuck it, i want to comment it all out
[08:25:29] <ShadwChsr> then i do
[08:25:31] <ShadwChsr> (*
[08:25:35] <ShadwChsr> { My code }
[08:25:36] <ShadwChsr> i := 0;
[08:25:40] <ShadwChsr> { More Code }
[08:25:42] <ShadwChsr> i2 := 0;
[08:25:44] <ShadwChsr> *)
[08:25:46] <ShadwChsr> ---
[08:25:47] <ShadwChsr> get it? :)
[08:25:51] <sb-x> in C i would do #if 0 ... #endif :)
[08:26:01] <ShadwChsr> you can do those too, I think :)
[08:26:04] <ShadwChsr> Compiler directives
[08:26:11] <sb-x> yeah i already understood :)
[08:26:20] <ShadwChsr> but lets say im hacking away at code, i want to temporarially block it out for one compile or something
[08:26:24] <sb-x> can { } surround (* *) ?
[08:26:28] <ShadwChsr> yes
[08:26:39] <ShadwChsr> but you can't do { { } }
[08:26:53] <ShadwChsr> the first } would end the entire comment and the second } would return an error
[08:26:54] --> kefka has joined #exult
[08:27:00] <ShadwChsr> pisses me off i wish they'd fix that. Oh well :P
[08:27:03] <sb-x> or (* (* *) *)
[08:27:14] <ShadwChsr> yeah, cant do that (i think)
[08:27:16] <ShadwChsr> never tried :)
[08:27:56] <sb-x> For porting to SDL i think: http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME:80850
[08:28:22] <ShadwChsr> {$IFDEF LinuxVersion}SDL Linux Code Here{$IFEND}
[08:28:40] <-- kefka has left IRC (Client Quit)
[08:28:41] <ShadwChsr> Yeah, thats what you want to use :)
[08:28:51] <ShadwChsr> you can also have inline assembly
[08:28:52] <ShadwChsr> asm {
[08:28:52] <ShadwChsr> }
[08:28:54] <ShadwChsr> :)
[08:29:03] <sb-x> __asm__ (" "); :)
[08:29:22] <sb-x> in C
[08:29:25] --> kefka has joined #exult
[08:29:27] * ShadwChsr nods
[08:29:28] <sb-x> i think
[08:29:28] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[08:29:32] <ShadwChsr> Go try the game out now
[08:29:32] <sb-x> i havnt actually done inline asm
[08:29:35] <ShadwChsr> Im going to bed in a second
[08:29:37] <ShadwChsr> :)
[08:29:42] <sb-x> can you send me the source?
[08:29:50] <ShadwChsr> Ughh... its not ready
[08:29:52] <sb-x> i want to study it to help figure out delphi
[08:30:04] <ShadwChsr> theres some older source on the website
[08:30:08] <ShadwChsr> sourceforge
[08:30:14] <ShadwChsr> did you download delphi?
[08:30:20] <sb-x> no
[08:30:25] <sb-x> i could do that when i reboot
[08:30:27] <ShadwChsr> its for windows, btw
[08:30:31] <ShadwChsr> <lemme check>
[08:30:41] <ShadwChsr> "Delphi 6 Personal" is free
[08:30:50] <sb-x> will Lupercalia compile in kylix?
[08:30:59] <sb-x> or, would it if it didnt use directx
[08:31:01] <ShadwChsr> I think "Lylix Open" is free too
[08:31:08] <ShadwChsr> hmmm.. no
[08:31:14] <ShadwChsr> I think theres one line of code that won't compile
[08:31:16] <ShadwChsr> but thats it :)
[08:31:23] <ShadwChsr> and mabye some windows path stuff
[08:31:46] <ShadwChsr> All the code that wont work has to do with accessing listings of files
[08:31:53] <ShadwChsr> I might use some win32 api also in places
[08:31:58] <ShadwChsr> but i'm not sure
[08:32:01] <ShadwChsr> :)
[08:32:05] <sb-x> we could make a pathname conversion function :)
[08:32:20] <sb-x> ooh im getting ahead of myself,... i should say you could make a conversion function when your ready to port :P
[08:32:23] <ShadwChsr> I don't think even that is needed
[08:32:35] <ShadwChsr> It basically does everything from the current dir
[08:32:55] <ShadwChsr> so C:\Game\Resources would map perfectly to /whateverthatdamnlinuxpathis/game/resources ;-)
[08:33:10] <ShadwChsr> I guess that would be /usr/game/resources
[08:33:29] <sb-x> i would put it in /opt
[08:33:33] <ShadwChsr> I *might* have something that switches the slashes to be \, so that might need to be fixed
[08:33:35] <ShadwChsr> :P :P
[08:33:40] <sb-x> or /usr/local/games
[08:33:47] <ShadwChsr> I've only ever seen one thing in /opt, which is lotus notes
[08:33:49] <ShadwChsr> :)
[08:34:12] <sb-x> ive got RealPlayer8, compupic, gnome, kde, and wine
[08:34:31] <sb-x> oh and www for htdig
[08:34:50] <ShadwChsr> All I user use is domino, linuxconf, and openssh ;-)
[08:34:56] <ShadwChsr> i mean ever use
[08:35:04] <ShadwChsr> LOL brain shutting down, please wait
[08:35:05] <ShadwChsr> :)
[08:35:06] <sb-x> is linuxconf from mandrake?
[08:35:12] <ShadwChsr> who knows
[08:35:23] <sb-x> i have no idea what it is
[08:35:24] <ShadwChsr> I couldn't live without it :)
[08:35:30] <ShadwChsr> linuxconf and netconf
[08:35:42] <sb-x> no netconf here either :)
[08:35:49] <ShadwChsr> lets you add/remove users, groups, configure networking, routing, devices - everything
[08:35:57] <ShadwChsr> What version are you using?
[08:36:03] <ShadwChsr> distro?
[08:36:10] <sb-x> Slackware Linux 8
[08:36:22] <ShadwChsr> Huh that should have it
[08:36:33] <ShadwChsr> RedHat 7.2 took it out of the default install and hid it on the second CD
[08:36:51] <ShadwChsr> they moved all their management tools to Gnome, which sucks because A) I use KDE, and B) i dont install X on my servers ;-)
[08:37:18] <sb-x> maybe they are just redhat programs?
[08:37:20] <sb-x> heh
[08:37:21] <ShadwChsr> no
[08:37:29] <ShadwChsr> I've used it with slackware before
[08:37:31] <sb-x> slackware puts a lot of programs under kde/gnome even though they arent kde/gnome apps
[08:37:37] <ShadwChsr> http://www.solucorp.qc.ca/linuxconf/
[08:37:47] <ShadwChsr> its a command line app
[08:37:57] <ShadwChsr> err i mean console
[08:37:58] <ShadwChsr> ;)
[08:37:59] <sb-x> maybe its in the contrib dir and i just never noticed it
[08:38:29] <ShadwChsr> Slackware is based on RedHat so it will work fine
[08:38:33] <ShadwChsr> oh wait
[08:38:35] <sb-x> Slackware isn't based on redhat
[08:38:36] <ShadwChsr> I mean mandrake
[08:38:37] <ShadwChsr> ahah
[08:38:40] <ShadwChsr> Theres my mistake ;)
[08:39:00] <sb-x> hmm
[08:39:04] <sb-x> OOh i get it
[08:39:12] <ShadwChsr> RedHat's the only usable one. How you can live without "up2date" is a mistery :)
[08:39:21] <sb-x> what does that do?
[08:39:45] <ShadwChsr> I mean mystery :P <sigh>
[08:39:53] <ShadwChsr> think "windows update" for linux
[08:40:00] <sb-x> When do you plan on uploading the newest binaries/source to sf?
[08:40:06] <ShadwChsr> you type "up2date -u" and it downloads ALL out of date packages
[08:40:17] <ShadwChsr> you can also use it to download and install new ones that are up to date
[08:40:24] <sb-x> i dont think i could stand that
[08:40:29] <ShadwChsr> when I get walls done
[08:41:05] <ShadwChsr> Why? You have any idea how many bugs/fixes are for linux on a weekly basis? I cant keep track of 10,000 4gigs of packages, thank you very much ;)
[08:41:41] <ShadwChsr> Hell all I do is go to redhat.com, type in my server's IPs, and I'm done, forever ;-)
[08:41:46] <sb-x> I update a package if i notice it is buggy :)
[08:42:02] <ShadwChsr> Yeah but the hackers might notice more than you ;)
[08:42:16] <ShadwChsr> Workstations yeah I can see, but not servers
[08:42:21] <sb-x> nobody cares about my box i gather
[08:42:31] <sb-x> yeah i would classify it more as a workstation
[08:42:45] <ShadwChsr> the best command on linux is.... "rpm -e --allmatches sendmail".. DIE DIE DIE DIE DIE!!!!
[08:42:54] <ShadwChsr> Buggiest program on the planet.. EVIL!!
[08:43:01] <sb-x> i dont even have rpm :)
[08:43:02] <ShadwChsr> I swear they find 10 exploits in sendmail every week :)
[08:43:21] <sb-x> oh
[08:43:28] <ShadwChsr> yet EVERY (almost every?) linux distibution installs it by default
[08:43:30] <ShadwChsr> its like a virus ;)
[08:43:40] <sb-x> i dont have sendmail
[08:43:43] <ShadwChsr> Thank got
[08:43:44] <ShadwChsr> god
[08:43:45] <ShadwChsr> ;)
[08:43:56] <ShadwChsr> vi is evil too
[08:43:57] <ShadwChsr> :)
[08:44:01] <sb-x> i use vim
[08:44:01] <ShadwChsr> but not /as/ evil
[08:44:03] <sb-x> i mean elvis
[08:44:24] <ShadwChsr> I swear vi probably has a command to format the hard-drive
[08:44:31] <ShadwChsr> I want a text editor, not a nasa control center
[08:44:32] <ShadwChsr> :)
[08:44:46] <sb-x> actually i edit text files with cool/smalledit but at the console i use elvis
[08:45:12] <ShadwChsr> I like "pico"
[08:45:33] <ShadwChsr> unfortinately I need to install pine to get it,for some reason. The pico standalone package is buggy and won't install
[08:45:42] <sb-x> what about mcedit?
[08:45:48] <ShadwChsr> <shrug> whats that?
[08:45:58] <sb-x> its the editor used in mc
[08:46:16] <ShadwChsr> never heard of it
[08:46:22] <ShadwChsr> I'm a linux level 3 newbie
[08:46:33] <sb-x> its actually a symbolic link to mc, if you call it as mcedit it starts the internal editor
[08:46:34] <sb-x> oh hehehe
[08:46:42] <ShadwChsr> I can run a domino server that doesn't crash and is secure on it, and setup openssh
[08:46:46] <ShadwChsr> so I'm happy ;-)
[08:46:56] <sb-x> youve got me there
[08:47:04] <ShadwChsr> A few days ago I figured out how to have the "root" paths work for all users, so I was real happy about that too ;)
[08:47:06] <sb-x> i don't know what domino is and i havn't setup openssh
[08:47:08] <ShadwChsr> since i "su" to root
[08:47:16] <ShadwChsr> domino=notes server
[08:47:28] <ShadwChsr> openssh rocks ;) I can sit on my butt and manage all the servers
[08:47:36] <sb-x> i've got ssh
[08:47:45] <sb-x> but the only setup i did was to uncomment a line in my identd
[08:47:47] <sb-x> inetd
[08:47:57] <ShadwChsr> swapping PS/2 cables on linux sucks. Linux likes to "forget" the ps/2 ports exist after about a day, and I cant access the servers directly anymore! :P
[08:48:07] <sb-x> and chmod +x /etc/rc.d/rc.sshd
[08:48:20] <sb-x> PS/2?
[08:48:26] <sb-x> my mouse is PS/2 :)
[08:48:28] <ShadwChsr> keyboard & mouse
[08:48:34] <sb-x> yeah mouse keyboard
[08:48:40] <sb-x> but i havnt used anything else in the ports
[08:48:48] <sb-x> or noticed them disappearing
[08:48:59] <ShadwChsr> Well you leave them plugged in
[08:49:04] <ShadwChsr> I unplug them to swap them to other servers
[08:49:10] <ShadwChsr> 2.4 seems better though
[08:49:14] <sb-x> oh i get it
[08:49:15] <ShadwChsr> the old kernel was nasty with that
[08:49:17] <sb-x> heh
[08:49:28] <sb-x> telnet/rlogin/ssh wouldve been my first choice
[08:49:35] <sb-x> i wouldnt have even thought of swapping keyboards :)
[08:49:44] <ShadwChsr> Yeah but I didn't know how to set them up at that point ;)
[08:49:57] <ShadwChsr> or how to make a key pair
[08:50:06] <sb-x> my monitor/keyboard/mouse are a single terminal unit... i cant swap them between servers :)
[08:50:10] <sb-x> oh
[08:50:17] <sb-x> since i only have one box its no prob
[08:50:42] <ShadwChsr> I have a KVM switch, but the cables aren't long enough (new ones ordered soon I hope!)
[08:50:51] <sb-x> "my monitor/keyboard/mouse are a single terminal unit" meaning thats how i think of them, not literally ;)
[08:50:54] <ShadwChsr> I keep begging for an LCD to fit in the nice LCD rackmount case I have ;)
[08:51:10] <ShadwChsr> That way I can lock the entire console away in the rack
[08:51:10] <sb-x> what do you use the LCD's for?
[08:51:24] <ShadwChsr> well you use an LCD so it can fold down and slide into the rack
[08:51:36] <sb-x> i mean what are you showing on it
[08:51:44] <ShadwChsr> server consoles
[08:52:06] <sb-x> ooh
[08:52:07] <sb-x> heh
[08:52:10] <sb-x> i thought you meant little LCDs
[08:52:14] <sb-x> not the LCD monitors
[08:52:14] <ShadwChsr> :)
[08:52:42] <sb-x> i want some little programmable LCD screens
[08:52:55] <ShadwChsr> $$$$$
[08:52:56] <ShadwChsr> :)
[08:53:17] <ShadwChsr> Last I checked, tiny ones costed a LOT
[08:53:23] <ShadwChsr> better off buying the full monitor ;)
[08:53:34] <ShadwChsr> but that was 3 years ago
[08:53:35] <sb-x> i mean monochrome
[08:53:47] <ShadwChsr> I meant monochrome too
[08:53:56] <sb-x> i mean with preset matrix
[08:53:59] <sb-x> like whats on a clock or calculator
[08:54:01] <ShadwChsr> I TINY monochrome LCD that was like 75x100 was like $100 :)
[08:54:35] <ShadwChsr> for electronics projects. The only way you can/could get them at a good price was if you're a manufacturer, I imagine
[08:54:44] * sb-x ponders which one of his electronics he should rip open to get the screen out of.
[08:54:55] <ShadwChsr> lol like I said this was years ago
[08:55:00] <ShadwChsr> and I might be remembering wrong
[08:55:14] <ShadwChsr> So you're really interested in the game?
[08:55:38] <sb-x> yes
[08:55:40] <sb-x> my interest is modest
[08:56:01] <sb-x> i have to play it/mess with the code to be more interested
[08:56:39] <ShadwChsr> oh btw Delphi is a VERY fast compiler
[08:56:43] <ShadwChsr> basically compiles instantly
[08:57:05] <ShadwChsr> I dont write bug free code before I compile, I just keep hitting F9 until it compiles and I get to test it for real ;)
[08:57:12] <ShadwChsr> a little bit different from c development
[08:58:02] <sb-x> AAAH
[08:58:04] <sb-x> trees!
[08:58:08] <ShadwChsr> what? :)
[08:58:14] * sb-x drools.
[08:58:16] <ShadwChsr> hehehehe
[08:58:20] <sb-x> and he seems to be rendered properly
[08:58:20] <ShadwChsr> Ugly trees though
[08:58:30] <sb-x> well they are ok
[08:59:21] <sb-x> trees are objects?
[08:59:46] <ShadwChsr> Yes, statics
[08:59:52] <ShadwChsr> Static = object stored in the map
[08:59:59] <ShadwChsr> UO/U8 terminology :)
[09:00:02] <ShadwChsr> U7 too i think
[09:00:07] <sb-x> in my engine, static = no running bytecode
[09:00:33] <sb-x> actually, the client doesnt run any bytecode, that is the terminology for the server
[09:00:49] <ShadwChsr> yep
[09:00:56] <ShadwChsr> Dont want the screenshot?
[09:01:07] <ShadwChsr> There's the latest source
[09:01:09] <ShadwChsr> have fun
[09:01:09] <ShadwChsr> :)
[09:01:24] <sb-x> w00t
[09:01:27] <sb-x> thanks :)
[09:01:51] <ShadwChsr> That's a character animation test I did for the game :)
[09:01:51] <sb-x> how do you make the dialog in the character editor?
[09:01:53] <sb-x> is it MFC?
[09:01:56] <ShadwChsr> Might have her in there as an easter egg
[09:01:57] <ShadwChsr> No
[09:02:00] <ShadwChsr> Delphi VCL
[09:02:08] <ShadwChsr> (which is portable to Kylix, btw)
[09:02:20] <ShadwChsr> Load the gif in a program that supports animation
[09:03:33] <sb-x> you made the xena model?
[09:03:39] <ShadwChsr> No
[09:03:47] <ShadwChsr> I have free poser models
[09:03:49] <ShadwChsr> LOTS of them
[09:03:57] <ShadwChsr> I can use them all for the game
[09:03:57] <ShadwChsr> :)
[09:04:37] <ShadwChsr> Like the screenshots?
[09:04:59] <sb-x> yes it doesnt look "incomplete"
[09:05:09] <sb-x> the screenshots look like they are from a final
[09:05:19] <sb-x> Lupercalia has gone gold!
[09:05:25] <sb-x> is what you could announce at the site :)
[09:05:41] <sb-x> of course people would be confused when they actually download it
[09:07:15] <ShadwChsr> lol
[09:07:17] <ShadwChsr> ;)
[09:07:22] <ShadwChsr> Well you can walk around a field
[09:07:26] <ShadwChsr> Isn't that enough? :)
[09:07:31] <ShadwChsr> I guess you can run too
[09:07:43] <ShadwChsr> :)
[09:07:54] <sb-x> what type of game will it be? as far as features go
[09:07:54] <sb-x> can i chop down trees?
[09:08:12] <ShadwChsr> No... since the world would turn into a desert real fast ;)
[09:08:23] <ShadwChsr> Features.. I could talk for hours
[09:08:42] <ShadwChsr> I hate to sound like everyone else, but I'll be blunt
[09:08:44] <sb-x> and go fishing
[09:08:44] <sb-x> or is it mainly hack n slash
[09:08:45] <sb-x> in my game i'll have the trees replicate themselves
[09:08:45] <sb-x> like the animals
[09:08:45] <sb-x> brb
[09:09:06] <ShadwChsr> I'm cloning U7's engine's features into an isometric engine and making it multiplayer ;)
[09:09:21] <ShadwChsr> But it will be a LOT different
[09:09:24] <ShadwChsr> very unique
[09:09:54] <ShadwChsr> It will be a very wild, tribal type world. Yes there will be towns and that, but no empires. The world will still be mostly wilderness
[09:10:02] <ShadwChsr> there will be lots and lots of animals
[09:10:30] <ShadwChsr> I'm going to make a "side world"/game where you just play animals :)
[09:10:41] <ShadwChsr> Like that old game "wolf", but multiplayer :)
[09:11:06] <ShadwChsr> That's my goal - have your standard MMORPG game (a unique one), and with the same engine have that animal sim
[09:11:14] <ShadwChsr> Once I get to that stage, It'll be "gold" :)
[09:12:14] <sb-x> im back
[09:12:14] <ShadwChsr> talk to you tomorrow
[09:12:17] <sb-x> sounds interesting
[09:12:19] <ShadwChsr> oh ill wait a second then
[09:12:20] <ShadwChsr> :)
[09:12:31] <sb-x> we can make a u7chunk to lupercalia map converter
[09:12:38] <ShadwChsr> good luck!! :)
[09:12:40] <sb-x> and make a Britannia for lupercalia
[09:12:41] <sb-x> heh
[09:12:52] <sb-x> maybe that would quell the Multiplayer Exult requests
[09:12:53] <ShadwChsr> uo -> lupercalia might be easier :)
[09:13:01] <sb-x> i havnt played UO
[09:13:02] <ShadwChsr> Yeah :)
[09:13:09] <ShadwChsr> I'm going to release all the editors for it
[09:13:15] <sb-x> but i know a lot of people who want multiplayer exult ONLY want to play in the britannia from u7
[09:13:19] <sb-x> not the britannia in uo
[09:13:25] <ShadwChsr> u7 was awesome
[09:13:37] <ShadwChsr> serpent isle was just as good, if not better
[09:13:46] <sb-x> i still have to play!
[09:13:47] <sb-x> lol
[09:13:48] <sb-x> :P
[09:13:52] <ShadwChsr> !?!?!?
[09:13:55] <sb-x> i got only out of monitor
[09:14:01] <sb-x> and i havnt really played the game yet
[09:14:10] <sb-x> i keep meaning to :)
[09:14:10] <ShadwChsr> To be honest, I never beat it ;)
[09:14:12] <ShadwChsr> I own it
[09:14:25] <ShadwChsr> That game is awesome, one of my all time favorites
[09:14:35] <sb-x> I've teleported around with exult
[09:14:38] <sb-x> it looks nice
[09:14:38] <ShadwChsr> the last part of the game is long and tedious though
[09:14:42] <ShadwChsr> I keep getting lost in the damn tundra
[09:14:43] <ShadwChsr> :)
[09:15:07] <ShadwChsr> theres two dungeons up north... really cool part of the game. Spinebreaker and skullcrusher, fortresses of order and chaos :)
[09:15:26] <ShadwChsr> I wish they would have shown the ophidians though
[09:15:40] <sb-x> ophidians are original inhabitants of SI?
[09:15:44] <ShadwChsr> Yes
[09:15:48] <ShadwChsr> The snake worshippers
[09:15:50] <sb-x> sometime around U3-U5?
[09:16:03] <ShadwChsr> In UO 2nd age they have an "ophidian" in the lost world that are half snake people, but I think in U7:SI they're meant to be human
[09:16:11] <ShadwChsr> Not sure... Before U3
[09:16:26] <ShadwChsr> In fact, Serpent Isle relates VERY close to something that happens in U3 ;-)
[09:16:34] <ShadwChsr> The whole game relates around U1 and U3
[09:17:32] <sb-x> i thought SI disappeared around U3
[09:17:34] <-- ShadwChsr has left IRC (Read error: 104 (Connection reset by peer))
[09:17:37] --> ShadwChsr has joined #Exult
[09:17:41] <sb-x> <sb-x> i thought SI disappeared around U3
[09:17:51] <ShadwChsr> The ophidians probably were around in U2
[09:18:10] <ShadwChsr> No, SI disappeared when the gem was shattered (as well as all of UO)
[09:18:12] <ShadwChsr> thats why It's called UO: Shattered Legacy, btw ;)
[09:18:17] <sb-x> gem?
[09:18:17] <sb-x> bah
[09:18:21] <sb-x> i dont accept UO storyline
[09:18:42] <ShadwChsr> If you knew the UO storyline you wouldn't need to accept it
[09:18:44] <ShadwChsr> :)
[09:19:07] <ShadwChsr> When the gem in U1 was shattered all the worlds were split (including serpent isle)... and made mirror images of sosaria
[09:19:08] <sb-x> i know that it says mondains gem shattered
[09:19:16] <ShadwChsr> hence the "Shards" in ultima online
[09:19:40] <ShadwChsr> They aren't real britannia, just seperate universes with different histories from the real one... places where the avatar never visited
[09:20:01] <ShadwChsr> Do you want the SI spoilers? :)
[09:20:04] <sb-x> i know about the shards
[09:20:08] <sb-x> thats what i said i didnt accept
[09:20:09] <sb-x> no
[09:20:11] <sb-x> ill play soon
[09:20:13] <ShadwChsr> ok :)
[09:20:17] <ShadwChsr> Play damn you play! :)
[09:20:24] <sb-x> im going to play lupercalia
[09:20:25] <ShadwChsr> Once you get to the northern forest the storyline gets real damn good!
[09:20:29] <ShadwChsr> hehehehe
[09:21:25] <ShadwChsr> The sex scenes were cool too ;)
[09:21:33] <sb-x> :O
[09:21:37] <sb-x> heh :P
[09:21:45] <sb-x> thanks for telling me about pascal/delphi
[09:21:47] <sb-x> are you leaving?
[09:21:49] <ShadwChsr> n/p
[09:21:50] <sb-x> im going to reboot
[09:21:53] <ShadwChsr> its 1am here
[09:21:58] <ShadwChsr> I'll wait.. if you do this right now
[09:22:04] <ShadwChsr> actually 1:20 am
[09:22:07] <ShadwChsr> no I'm not waiting
[09:22:09] <sb-x> ok
[09:22:11] <sb-x> hgeh
[09:22:11] <ShadwChsr> ;-) Tell me about it tomorrow
[09:22:12] <ShadwChsr> night!
[09:22:13] <sb-x> heh*
[09:22:14] <sb-x> night
[09:22:39] <-- ShadwChsr has left IRC (Client Quit)
[09:22:39] <sb-x> brb
[09:22:39] <-- sb-x has left IRC ("X-Chat [1.6.4]")
[09:35:01] --> sb-x has joined #exult
[09:35:19] <sb-x> his demo doesn't work for me
[09:37:30] <sb-x> Darke: are you working on ucxt?
[09:37:52] --> Kirben has joined #exult
[09:37:52] --- ChanServ gives channel operator status to Kirben
[09:38:10] <Darke> sb-x: Intermittently yes. <grin>
[09:38:13] <Darke> Hi Kirben.
[09:38:19] <Kirben> Hi
[09:38:58] <sb-x> Darke: what have you been adding to it tonight?
[09:45:12] <Darke> sb-x: Nothing much. I've actually been trying to sort through the large amount of scribbles I have to see if I can get some useful documentation out of them.
[09:46:18] <sb-x> :)
[09:46:22] <sb-x> i know what thats like
[09:47:03] <Kirben> another compile error:
[09:47:05] <Kirben> g++ -O2 -fnative-struct -fvtable-thunks -include mingw_kludges.h -DSIZEOF_SHORT=
[09:47:05] <Kirben> VE_PNG_H -I. -I./shapes -I./mapedit -I./imagewin -I./files -I./headers -I./serve
[09:47:05] <Kirben> r -I./objs -I./conf `pkg-config --cflags gtk+-1.3-win32-production` `pkg-config
[09:47:05] <Kirben> --cflags libglade-0.17` -c -o studio.o ./mapedit/studio.cc
[09:47:06] <Kirben> ./mapedit/studio.cc: In method `bool ExultStudio::has_focus()':
[09:47:09] <Kirben> ./mapedit/studio.cc:430: `struct _GtkWindow' has no member named `window_has_foc
[09:47:10] <Kirben> us'
[09:47:12] <Kirben> ./mapedit/studio.cc:435: `struct _GtkWindow' has no member n
[09:47:14] <Kirben> ./mapedit/studio.cc:435: `struct _GtkWindow' has no member named `window_has_foc
[09:47:16] <Kirben> us'
[09:48:52] * Darke must afk for food. I'll see if I can reproduce it when I return.
[09:55:58] <sb-x> I must afk for sleep.
[09:56:02] <sb-x> Good morning.
[09:56:04] <-- sb-x has left IRC ("...")
[10:27:40] --> Nadir has joined #exult
[10:27:41] --- ChanServ gives channel operator status to Nadir
[10:28:28] <Nadir> hi
[10:28:57] <Nadir> Kirben: are the nightlies scripted or manual ?
[10:29:27] <Kirben> If you mean the snapshots they are still manual.
[10:42:29] <Darke> Hi Nadir.
[10:44:03] <Darke> Kirben: I can't seem to reproduce that problem of yours under linux. Nor does the code 'obviously' look wrong.
[10:46:00] <Kirben> hmm window_has_focus doesn't exist in gtk+ headers for win32
[10:52:38] <Darke> Hmm... after some searching I appear to have libglade-0.16. So it may be possible they've been removed for 0.17? Maybe?
[10:55:36] <Kirben> ?? isn't it accessing gtk+ directly in that line ?
[10:57:00] <Darke> Hmm... umm... yeah. <blinkblink> Remind me again, what was I thinking? <grin>
[11:24:02] <-- Nadir has left IRC ("Client Exiting")
[11:40:26] --> Rado has joined #exult
[11:54:09] --> Nadir has joined #exult
[11:54:09] --- ChanServ gives channel operator status to Nadir
[11:54:45] <Darke> Welcome back.
[11:54:51] <Nadir> thx
[11:57:23] --> Fingolfin has joined #exult
[11:57:37] <Fingolfin> hiya
[11:57:47] --- ChanServ gives channel operator status to Fingolfin
[12:03:03] <Darke> Hi.
[12:13:32] <Nadir> hi
[12:39:55] <Nadir> low signal today
[12:41:19] <Nadir> gotta go
[12:41:21] <-- Nadir has left IRC ("Client Exiting")
[12:47:01] <-- Darke has left IRC (capek.openprojects.net irc.openprojects.net)
[12:47:01] <-- Fingolfin has left IRC (capek.openprojects.net irc.openprojects.net)
[12:47:01] <-- Kirben has left IRC (capek.openprojects.net irc.openprojects.net)
[12:47:01] <-- kefka has left IRC (capek.openprojects.net irc.openprojects.net)
[12:47:01] <-- matto has left IRC (capek.openprojects.net irc.openprojects.net)
[12:47:01] <-- Soul|SERV has left IRC (capek.openprojects.net irc.openprojects.net)
[12:47:01] <-- Rado has left IRC (capek.openprojects.net irc.openprojects.net)
[12:48:10] --> Fingolfin has joined #exult
[12:48:10] --> Rado has joined #exult
[12:48:10] --> Kirben has joined #exult
[12:48:10] --> kefka has joined #exult
[12:48:10] --> Darke has joined #exult
[12:48:10] --> matto has joined #exult
[12:48:10] --> Soul|SERV has joined #exult
[12:48:48] --> Colourless has joined #Exult
[12:48:49] --> Cless has joined #Exult
[12:48:49] <-- Cless has left IRC (Remote closed the connection)
[12:48:51] --- ChanServ gives channel operator status to Colourless
[12:50:53] <-- Darke has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- Kirben has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- Fingolfin has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- kefka has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- Soul|SERV has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- matto has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- Colourless has left IRC (capek.openprojects.net irc.openprojects.net)
[12:53:08] <-- Rado has left IRC (capek.openprojects.net irc.openprojects.net)
[12:54:57] --> matto has joined #exult
[12:54:57] --> Soul|SERV has joined #exult
[12:54:57] --> Fingolfin has joined #exult
[12:54:57] --> Kirben has joined #exult
[12:54:57] --> kefka has joined #exult
[12:55:55] <-- Kirben has left IRC (capek.openprojects.net irc.openprojects.net)
[12:55:55] <-- Fingolfin has left IRC (capek.openprojects.net irc.openprojects.net)
[12:55:55] <-- kefka has left IRC (capek.openprojects.net irc.openprojects.net)
[12:55:55] <-- Soul|SERV has left IRC (capek.openprojects.net irc.openprojects.net)
[12:55:55] <-- matto has left IRC (capek.openprojects.net irc.openprojects.net)
[12:56:36] --> Kirben has joined #exult
[12:56:36] --> Fingolfin has joined #exult
[12:56:36] --> Soul|SERV has joined #exult
[12:56:36] --> matto has joined #exult
[12:57:40] --> kefka has joined #exult
[12:58:13] --> Colourless has joined #Exult
[12:58:59] <-- Colourless has left IRC (capek.openprojects.net irc.openprojects.net)
[12:58:59] <-- Fingolfin has left IRC (capek.openprojects.net irc.openprojects.net)
[12:58:59] <-- Kirben has left IRC (capek.openprojects.net irc.openprojects.net)
[12:58:59] <-- kefka has left IRC (capek.openprojects.net irc.openprojects.net)
[12:58:59] <-- Soul|SERV has left IRC (capek.openprojects.net irc.openprojects.net)
[12:58:59] <-- matto has left IRC (capek.openprojects.net irc.openprojects.net)
[13:00:14] --> Kirben has joined #exult
[13:00:14] --> Rado has joined #exult
[13:00:14] --> Colourless has joined #exult
[13:00:14] --> kefka has joined #exult
[13:00:14] --> Fingolfin has joined #exult
[13:00:14] --> Soul|SERV has joined #exult
[13:00:14] --> matto has joined #exult
[13:00:58] <-- Soul|SERV has left IRC (capek.openprojects.net irc.openprojects.net)
[13:00:58] <-- kefka has left IRC (capek.openprojects.net irc.openprojects.net)
[13:00:58] <-- matto has left IRC (capek.openprojects.net irc.openprojects.net)
[13:01:24] <-- Colourless has left IRC (capek.openprojects.net irc.openprojects.net)
[13:01:24] <-- Fingolfin has left IRC (capek.openprojects.net irc.openprojects.net)
[13:01:24] <-- Kirben has left IRC (capek.openprojects.net irc.openprojects.net)
[13:01:24] <-- Rado has left IRC (capek.openprojects.net irc.openprojects.net)
[13:02:29] --> Kirben has joined #exult
[13:02:29] --> Soul|SERV has joined #exult
[13:02:29] --> matto has joined #exult
[13:02:29] --> kefka has joined #exult
[13:02:29] --> Rado has joined #exult
[13:02:29] --> Colourless has joined #exult
[13:02:29] --> Fingolfin has joined #exult
[13:03:10] <-- Soul|SERV has left IRC (capek.openprojects.net irc.openprojects.net)
[13:03:10] <-- kefka has left IRC (capek.openprojects.net irc.openprojects.net)
[13:03:10] <-- matto has left IRC (capek.openprojects.net irc.openprojects.net)
[13:03:10] <-- Colourless has left IRC (capek.openprojects.net irc.openprojects.net)
[13:03:10] <-- Fingolfin has left IRC (capek.openprojects.net irc.openprojects.net)
[13:03:10] <-- Kirben has left IRC (capek.openprojects.net irc.openprojects.net)
[13:03:10] <-- Rado has left IRC (capek.openprojects.net irc.openprojects.net)
[13:04:19] --> Kirben has joined #exult
[13:04:19] --> Colourless has joined #exult
[13:04:19] --> Darke has joined #exult
[13:04:19] --> Soul|SERV has joined #exult
[13:04:19] --> matto has joined #exult
[13:04:19] --> kefka has joined #exult
[13:04:19] --> Rado has joined #exult
[13:04:19] --> Fingolfin has joined #exult
[13:14:42] <Darke> Kirben: I've got no idea about what might be the problem, unfortunately.
[13:21:30] <Colourless> Kirben: i take it you are talking about the has focus problem?
[13:22:18] --- ChanServ gives channel operator status to Colourless
[13:22:20] <Kirben> Colourless: Yes
[13:22:21] <Darke> Colourless: There's a compile problem with ES under win32 (gcc?), which looks like a GTK+ problem. Lines 430 and 435 in mapedit/studio.cc from memory, it's detailed further back in the logs.
[13:22:21] <Colourless> looks like a gtk problem to me
[13:24:12] --- ChanServ gives channel operator status to Darke
[13:28:44] <-- Rado has left IRC ("brb")
[13:29:08] --> Rado has joined #exult
[13:31:11] <Kirben> I'm using latest glib/gtk+ for win32
[13:53:09] <-- matto has left IRC ("Play Dragon's Lair in linux - http://www.daphne-emu.com - Developers welcome :)")
[14:04:37] --> matto has joined #exult
[14:18:03] <-- Kirben has left IRC ("System Meltdown")
[16:15:50] --- Colourless is now known as Cless|Away
[16:31:29] --> wjp has joined #exult
[16:31:29] --- ChanServ gives channel operator status to wjp
[16:31:31] <wjp> hi
[16:33:44] <Fingolfin> yo
[16:45:17] * wjp has been thinking about a usecode debugger again the last few days
[16:46:04] <wjp> I think I'd have to rewrite the usecode interpreter to handle calls non-recursively to be able to do it properly
[16:46:39] <Cless|Away> hi
[16:47:03] --- Cless|Away is now known as Colourless
[16:50:33] <wjp> oh, another thing, I've been staring at a disassembly of U8.exe for a while
[16:50:44] <wjp> I think I've pretty much located the audio decompression part
[16:51:23] <wjp> it looks like it's pretty isolated, with very few external calls. (only some memory allocation and error handling stuff, as far as I could tell)
[16:52:11] <Colourless> i'm 99% sure it's just the sonarc lib
[16:52:58] <Colourless> the sonarc lib itself has something like 2 function calls
[16:53:04] <wjp> it did look slightly customized, though, particularly the error handling
[16:53:11] <wjp> it uses dcmp8()
[16:53:54] <Colourless> The "C" declarations for the 8- and 16-bit decompression routines are:
[16:53:54] <Colourless> extern int far pascal dcmp8(p_bytary p_input,
[16:53:54] <Colourless> p_bytary p_output);
[16:53:54] <Colourless> extern int far pascal dcmp16(p_intary p_input,
[16:53:54] <Colourless> p_intary p_output);
[16:54:13] <wjp> what type is that p_bytary? just a char*?
[16:54:35] <Colourless> typedef unsigned char[max_buf_len]* p_bytary;
[16:56:27] <Fingolfin> is sonarc free or commercial?
[16:56:27] <wjp> could we somehow use that code? I'm not really at home in assembly / .exe formats
[16:56:30] <wjp> commercial
[16:56:44] <wjp> although there's also a free commandline tool
[16:57:31] <Colourless> the command line tool could be used to decompress the sounds, if we knew what the header of the sounds were, and how to convert them to one of the formats supported by the tool
[16:58:05] <wjp> yeah, I've looked at it for a while, but couldn't really figure anything out
[16:58:10] <Colourless> it would be a eula violation to use disassembled code, wouldn't it?
[16:58:24] <wjp> well, yes :-)
[16:58:48] <wjp> what about loading part of the u8.exe binary into memory and running it? :-)
[16:58:52] <wjp> (only on x86, of course)
[16:59:00] <Colourless> :-)
[17:01:23] <Fingolfin> well, we could then write an x86 emulator for the other platofrms =)
[17:01:40] <wjp> hehe :-)
[17:01:44] <Colourless> i would imagine it would be rather .... slow :-)
[17:01:49] <Fingolfin> bah
[17:01:53] <wjp> so? we just need to run it once...
[17:01:58] <Fingolfin> just tell ppl to upgrade to faster machines
[17:01:59] <Colourless> that's a lot of mb of sounds to decompress :-)
[17:02:02] <Fingolfin> also true
[17:02:04] <Fingolfin> he
[17:02:21] <Fingolfin> could we contact the company that makes sonarc? maybe they would help us...
[17:02:33] <wjp> they seem to have zero online presence
[17:02:36] <Colourless> it was made by an individual
[17:03:01] <wjp> Richard P. Sprague
[17:03:09] <Colourless> indeed
[17:03:24] <Fingolfin> hm
[17:04:14] <wjp> what's the license on that sonarcx.exe?
[17:04:47] <Colourless> free for non commercial use was about it
[17:05:35] <Colourless> it was shareware
[17:05:42] <wjp> Individuals: "You may use Sonarc in any way you want for as long as you want, as long as it's not-for-profit."
[17:05:59] <wjp> does that include hacking it apart and re-implementing it? ;-)
[17:06:15] <Fingolfin> hehe
[17:06:16] <Colourless> well, legally i would assume yes :-)
[17:06:22] <Fingolfin> no address given at all?
[17:06:26] <Colourless> Speech Compression, 1910 W. Pawnee Lane, Colbert, WA 99005
[17:06:40] <wjp> but this document is dated 1994
[17:06:48] <Colourless> there is a compuserv email address, but that's long gone
[17:07:11] <Colourless> and a phone number too
[17:07:15] <Colourless> 509-466-2925
[17:07:18] <Fingolfin> yeah
[17:07:26] <Fingolfin> did you see http://www.speech.cs.cmu.edu/comp.speech/Section3/Software/sonarc.html ?
[17:07:59] <Colourless> well that's 2 years newer :-)
[17:08:03] <Fingolfin> =)
[17:08:40] <wjp> looking at google it would seem he totally disappeared from anything to do with audio compression
[17:09:20] <Colourless> which you think would be strange when this is true:
[17:09:20] <Colourless> Sonarc is now being used as an installation utility in PC titles published by
[17:09:20] <Colourless> Interplay, Origin, and The Software Toolworks, among others.
[17:12:03] <wjp> hm, this document refers to a "File and Frame Formats" section, which seems to be missing from what I have :-(
[17:12:14] <Colourless> yeah
[17:12:33] <Colourless> i think they are part of the sonarclib docs
[17:15:52] <-- Rado has left IRC ("home")
[17:21:49] <Colourless> there is a really obvious header in the u8 sound files. don't know what it means though
[17:22:06] <wjp> which file are you looking at?
[17:22:52] <Colourless> the contents of sound.flx (1 through 23)
[17:23:33] <Colourless> first 32 bytes are fairly similar in all files. pretty much only the first 2 bytes ever change
[17:24:03] <Colourless> in file 16, the 4th and 5th bytes are different
[17:25:01] <Colourless> that number appears to be the sounds frequency
[17:25:10] <Colourless> most of them have 11111 there
[17:25:21] <wjp> ah, indeed
[17:26:37] <Colourless> i think the compressed data 'may' start at byte 32. bytes 0x23 and 0x27 have been the same in all files i've checked
[17:26:58] <Colourless> this would tend to suggest it's part of the frame header info
[17:27:26] <Colourless> hmmm, some of the files are 'really' different
[17:27:51] <wjp> the 7th byte might be the "order" according to sonarc.doc
[17:28:01] <Colourless> 202 for examlpe.
[17:28:17] <wjp> hm, yes
[17:28:37] <wjp> 11025 is still a normal frequency, though
[17:29:07] <Colourless> yeah i know
[17:30:13] <Colourless> default order is 10, and default frame size of 2048 samples
[17:30:37] <wjp> at 0x285 in 202.u8o is another 04 xx xx xx 0A sequence
[17:31:25] <wjp> 0x3AD in 1.u8o
[17:32:03] <Colourless> lots of 04 xx xx xx 0A's everywhere
[17:32:05] <wjp> which makes the first two bytes of the frame the frame size
[17:32:20] <wjp> (compressed frame, that is)
[17:32:49] <wjp> could the 00 04 be the uncompressed frame size?
[17:32:51] <Colourless> iteresting
[17:33:20] <Colourless> well that;s 1024
[17:33:36] <Colourless> it might be
[17:33:58] <wjp> I think it is
[17:34:00] <Colourless> that would then suggest the frame size was 1024 samples
[17:34:10] <wjp> in a file I compressed with sonarc.exe there's 00 08 there
[17:34:21] <wjp> (with default frame size)
[17:34:37] <Colourless> yep sounds right
[17:35:11] <wjp> I'll experiment with some options...
[17:36:36] <wjp> yes, that 0A is the order
[17:37:04] <Colourless> cool
[17:38:40] <wjp> so, could we take a wave file with the same samplerate, bitrate, number of channels as the u8 sfx, and just replace the frames?
[17:38:52] <Colourless> i would 'guess' so
[17:39:11] <Colourless> the wav headers would need to be updated
[17:40:50] <Colourless> The decompression routine gets
[17:40:50] <Colourless> the order datum from the byte at offset 7 in the input v2.1 compressed frame
[17:40:57] <wjp> yeah
[17:41:09] <Colourless> of course is that 0 or 1 based... i'm guessing 0
[17:41:22] <wjp> yeah, didn't we already figure that out? :-)
[17:41:46] <Colourless> not about 'this' afaik
[17:41:56] <wjp> 'this'?
[17:42:12] <Colourless> this being the sonarc format
[17:42:50] <wjp> anyway, do we know the specifics of the audio quality U8 uses?
[17:42:59] <wjp> 11111Hz, I guess
[17:43:05] <wjp> 8 bit
[17:43:18] <Colourless> yeah that's a standard sb format
[17:43:25] <wjp> mono/stereo?
[17:43:29] <Colourless> mono
[17:43:36] <Colourless> as far as I know
[17:43:42] <Colourless> can't ever remember stereo
[17:44:07] <wjp> so, if we have a wave file of that type, compress it with sonarc, and replace bytes 0x40 and up with bytes 0x20 and up from a u8 file, it might just work...
[17:45:34] <Colourless> riff headers :-)
[17:45:49] <Colourless> they have the size of the expected data
[17:47:31] <wjp> ERROR: internal error: bad frame checksum.
[17:47:40] <wjp> (without modifying the riff headers, that is)
[17:48:53] <Colourless> might be easier to modify a raw file
[17:48:58] * wjp updates what looks vaguely like file length
[17:49:05] <wjp> hm, true
[17:49:15] <wjp> ok, how do I get one of those? :-)
[17:49:46] <Colourless> well if the file isn't a .wav or .voc it will assume it's raw pcm
[17:50:24] <wjp> we can even make it have the right length, I guess
[17:54:18] * wjp pulls some audio out of /dev/urandom
[17:56:22] <wjp> still complains about checksums
[17:59:47] --- wjp is now known as wjp|dinner
[18:02:29] <Colourless> information about the raw header
[18:02:50] <Colourless> 0x22 bytes contant between files (appears somewhat useless for us)
[18:03:23] <Colourless> s/contant/constant/
[18:03:47] <Colourless> next 4 bytes (0x22-0x26) is the size of the decompressed data
[18:05:36] <Colourless> next byte (0x26) is number of channels
[18:05:57] <Colourless> next byte (0x27) is bits per sample size
[18:06:14] <Colourless> 0x28 onwards is first frame
[18:07:09] <Colourless> first 4 bytes of U8 sound files 'might' be the size of the decompressed data
[18:07:39] <Colourless> it would make sense as it's about 2x the size of the file
[18:11:43] --> Dark-Star has joined #exult
[18:12:44] <Dark-Star> hi
[18:12:47] <Colourless> hi
[18:14:10] <Dark-Star> I thought about that intro font stuff -- if you're going to remove it anyway, why not create a separate screen that shows just after the LB screen?
[18:14:30] <Dark-Star> just like in movies
[18:15:00] <Dark-Star> because that would IMHO look better than a shape overlaid over the LB screen
[18:16:18] --- wjp|dinner is now known as wjp
[18:16:52] <wjp> Dark-Star: because that would mean we'd have to draw more art? ;-)
[18:18:01] <Dark-Star> well, OK, but that's not *really* a problem, is it? You would just need a fancy version of the exult logo and a nice background..
[18:21:27] <Colourless> ok, lets see if this works
[18:22:04] <wjp> Colourless: changes I make in the compressed raw file don't seem to be caught by any checksumming...
[18:22:15] <wjp> maybe there's a checksum flag or something?
[18:22:21] <Colourless> grrr
[18:22:21] <Colourless> ERROR: internal error: bad frame checksum.
[18:22:49] <wjp> yes, that's what I keep getting too...
[18:23:04] <wjp> errors in file length (bytes 0x22-0x25) cause different errors
[18:24:04] <wjp> ok, I messed up dozens of bytes and it still decompresses without an error
[18:24:48] <wjp> (but the output file is different from the original noise, obviously)
[18:26:50] --> Dominus has joined #exult
[18:27:01] --- ChanServ gives channel operator status to Dominus
[18:27:05] <Dominus> hi
[18:27:19] <Colourless> ok, byte 0x1e of the files seems to be the length of the extention, bytes 1f, 20, 21 are extension of the oriignal file
[18:27:21] <Dominus> I see you are hacking away at the U8 sfx :-)
[18:27:57] <Colourless> byte 1b is a 'version' number
[18:28:05] <wjp> Colourless: yes, that's consistent with what I see here. (extension)
[18:28:46] <Colourless> hmm 1b might not be a version number... but there is one there somewhere
[18:28:56] <Colourless> i got a version mismatch error before
[18:29:26] <Colourless> but i might have done the wrong thing
[18:30:46] <Colourless> omg, it worked....
[18:31:02] <Colourless> YES IT DID!!!!!!!!
[18:31:10] <Dominus> totally OT right now, but I am trying the Demo of Geneforge (Spiderweb Soft) and it looks a lot like U8 (directions and one of the characters)
[18:31:19] <Dominus> hooray
[18:31:25] <Colourless> i changed byte 1c to 3
[18:31:35] <wjp> wow, it decompressed
[18:31:49] <wjp> oh, for you too, it seems :-)
[18:32:17] <Colourless> it appears that's the version number :-)
[18:32:20] <Dominus> I'm glad you both managed it at the same time :-)
[18:32:27] * wjp changed all bytes in the frame headers between the decompressed framesize and the order to the corresponding bytes in the .raw
[18:32:31] <Colourless> and the sfx are version 3, not 4 :-)
[18:33:43] <wjp> I had 0x05 there, btw
[18:34:14] <Colourless> ah, yeah me too actually
[18:34:33] <Colourless> so, what do we do now?
[18:34:51] <wjp> write a script do decompress the lot?
[18:34:58] <Dominus> a sfx-expack?
[18:35:13] <Colourless> it would only work in dos/windows though wouldn't it?
[18:35:17] <Dominus> store the information for further use?
[18:35:20] <wjp> wine handles it
[18:35:25] <wjp> dosemu should be able to, too
[18:36:35] <wjp> sheesh, what is 1.u8o supposed to sound like?
[18:38:57] <wjp> oh, wait, descriptions are in 0.u8o...
[18:38:57] <Colourless> it appears that not everything is quite decompressing properly
[18:39:30] <Colourless> every so often there's some spikes in the wave form
[18:40:49] <wjp> I hear some ticking and a beep behind 87.u8o
[18:41:30] <Dominus> probably beep is wrong
[18:42:04] <wjp> I think so, yes :-)
[18:42:15] <wjp> maybe I'm converting it to .wav the wrong way
[18:43:20] <wjp> signed linear? unsigned linear? U-law? A-law? ADPCM? IMA_ADPCM? GSM?
[18:43:45] <Dominus> try out which gives the best output :-)
[18:44:04] <wjp> unsigned linear... (which was what I tried first)
[18:44:11] <Colourless> unsigned linear
[18:44:17] <wjp> tick tick tick BEEP! tick tick tick...
[18:44:33] <Dominus> aehm, so what do I have to do to decompress them?
[18:44:44] <wjp> hexedit and merge some files together :-)
[18:45:00] <wjp> do you have sonarcx.exe?
[18:45:07] <Dominus> yep
[18:45:42] <wjp> no 'dd', I guess?
[18:46:00] <Dominus> 'dd'?
[18:46:21] <wjp> a unix tool for reading/writing data from/to anything
[18:46:41] <Dominus> nope
[18:50:17] <Colourless> ow, 87 sound really quite bad
[18:50:20] * Dominus still would like to have u8extract to assign the names in 0.u8o if present (but he doesn't volunteer and it would only be a nice feature not an important one)
[18:51:17] * wjp writes tiny script to automate extracting files
[18:51:21] <Dominus> how much bigger do the files get?
[18:51:41] * Colourless does the same as wjp
[18:52:08] * Dominus wonders if those two will coordinate their efforts :-)
[18:52:09] <Colourless> converts the u8o into a snc, and then decompresses it
[18:52:23] <Colourless> don't be foolish Dominus, of course we wont
[18:52:25] <wjp> OS's are too different, I think
[18:52:31] <wjp> cp -f u8header sfx.SNC
[18:52:31] <wjp> dd if=$1 of=sfx.SNC bs=1 seek=34 count=2
[18:52:31] <wjp> dd if=$1 of=sfx.SNC bs=1 skip=32 seek=40 count=1000000
[18:52:31] <wjp> wine -- SONARCX.EXE -Q sfx.SNC
[18:52:31] <wjp> sox -r 11025 -c 1 -b -u SFX.RAW $1.wav
[18:52:32] * Dominus is gratefull
[18:52:33] <wjp> if you want it :-)
[18:52:44] <wjp> oh, that should be 11111, I guess
[18:52:56] <Dominus> I think I wait for Colourless to come up with something :-)
[18:53:03] <Colourless> i wrote a c program :-)
[18:53:05] <wjp> or actually I should grab it from the u8o
[18:54:12] <wjp> hm, I think I screwed up on one of the offsets
[18:54:39] <Colourless> which one?
[18:54:55] <wjp> not sure
[18:55:19] <wjp> somehow it gets decompressed to an empty file
[18:56:22] <wjp> ah, I forgot to set sample size and number of channels it seems
[18:58:05] <Colourless> ok, the voice decompresses, but still sounds really bad
[18:58:42] <Dominus> as worse as the Vdms emulation :-)
[18:58:45] <Dominus> ?
[18:59:00] <Colourless> it's 'different' not better or worse really :-)
[18:59:15] <Colourless> actually it would be better
[19:00:07] <wjp> I should really copy the _entire_ header next time :-)
[19:00:38] <wjp> quality is kind of poor, yes
[19:00:45] <wjp> lots of ticking and beeping everywhere
[19:01:19] <wjp> maybe it was version nr. 5 anyway? It did decompress for me after changing frame headers a bit, with version 5
[19:01:26] <Colourless> dominus: i'm sending you something stratos says
[19:02:06] <Dominus> ph, that sounds bad
[19:02:07] <Colourless> wjp: perhaps. what we are getting now isn't quite right :-)
[19:02:21] <Dominus> a lot of distortion
[19:02:23] <Dominus> ugh
[19:03:27] <Colourless> so, wjp, do you by any chance want to do that 'secret' reverse disassembling of u8 to get to the decoder they used :-)
[19:03:51] <Colourless> uh, remove the word reverse
[19:04:14] <Dominus> disassembling is bad, reverse disassembling is worse :-)
[19:04:35] <wjp> nah, it's really quite easy :-)
[19:04:37] <Colourless> reverse disassembling would be assembling :-)
[19:04:44] <Dominus> true
[19:04:46] <Dominus> :-)
[19:05:13] * Dominus is glad you both took a look at the sfx
[19:05:46] <wjp> ok, it decompresses if I change all the bytes before the order to 0x08
[19:06:00] <Colourless> and what does it sound like?
[19:06:01] * wjp listens
[19:06:19] * wjp converts to .wav first...
[19:06:25] <wjp> ouch
[19:06:33] <wjp> not good :-)
[19:07:23] <wjp> pure distortion, in fact.
[19:07:29] <Colourless> hehe
[19:07:35] <wjp> although it does still seem to 'tick' at the same frequency
[19:08:13] <Colourless> i think it's ticking after every frame
[19:08:30] <Colourless> the more complex the sound, the more it ticks
[19:08:50] <wjp> could be a checksum at the end of each frame
[19:09:20] <Colourless> actually that doesn't make sense
[19:09:43] <Colourless> the reason is each frame is of variable size, but always has the same amount of samples
[19:10:13] <wjp> oh, by "the more it ticks" you mean the frequency increases too?
[19:10:19] <wjp> s/too//
[19:10:31] <Colourless> yeah
[19:15:06] <Dominus> if anyone ever asks for a mirror to our files you can point him to http://reconstruction.voyd.net
[19:16:32] <kefka> holy absolute font sizes batman!
[19:25:27] <-- Dark-Star has left IRC ("using sirc version 2.211+KSIRC/1.1")
[19:29:43] <Dominus> http://www.mozilla.org/MPL/missing.html funny
[19:39:55] <Dominus> got to go
[19:39:57] <Dominus> bye
[19:39:59] <wjp> bye
[19:40:01] <-- Dominus has left IRC ("Exult! Exult! Exult!")
[19:42:12] <Colourless> hmmm, it appears that the reason the clicks and other distortions occurs is because some frames aren't decompressing
[19:42:37] <wjp> hm, how long (time) is a frame?
[19:42:58] <wjp> 1024 samples, so about 100ms?
[19:43:02] <Colourless> yeah
[19:43:22] <Colourless> i extracted individual frames and converted them
[19:43:34] <Colourless> some just decompress completely wrong
[19:43:35] <wjp> the clicks don't really sound that long, though
[19:43:40] <Colourless> usually those are the beeps
[19:43:53] <Colourless> click occur between frames
[19:45:57] <Colourless> http://www.users.on.net/triforce/cooledit.png
[19:46:12] <wjp> which one is this?
[19:46:17] <Colourless> the blue markers are the various different files
[19:46:33] <wjp> about 100ms, indeed
[19:46:38] <Colourless> 24 in E385.FLX
[19:46:57] <Colourless> if you look between the blue marks there is always a spike. these are the clicks
[19:47:04] * wjp nods
[19:47:10] <Colourless> the third from the end is a beep
[19:47:12] <wjp> and that around 1:00 is noise?
[19:47:16] <wjp> k
[19:47:55] <Colourless> the last one is a high pitch noise.
[19:48:39] <Colourless> but that might be part of the sound...
[19:48:49] <Colourless> no it's not
[19:49:36] <wjp> hm, that 22.u8o seems to be an archile itself?
[19:49:59] <wjp> archive, ugh
[19:50:46] <Colourless> most strange
[19:52:13] <Colourless> no it's not
[19:52:52] <Colourless> it's 'bad' though
[19:53:14] <Colourless> the first frame is kind of odd
[19:53:38] <wjp> the one starting at 0x120, you mean?
[19:53:51] <Colourless> well what's between 0x20 and 0x120
[19:53:55] <wjp> ah, ok
[19:54:02] <wjp> yes, kin of weird
[19:54:14] <wjp> s/kin/kind/
[19:54:28] <Colourless> 23 produces an interesting waveform
[19:55:09] <wjp> another beep at the end, it seems
[19:55:15] <Colourless> one of the frames gets a large dc bias so the wave separates
[19:55:24] <wjp> ?
[19:55:28] <wjp> translation please :-)
[19:56:20] <Colourless> http://www.users.on.net/triforce/cool2.png
[19:56:33] * wjp blinks
[19:56:56] <wjp> now that's strange
[19:57:21] <wjp> what is stratos saying there, btw?
[19:57:32] <wjp> all ... my children?
[19:57:40] <Colourless> my children
[19:58:05] <Colourless> it's the end of my
[19:59:15] <wjp> can you see a clear difference in the headers of the failling frames?
[19:59:27] <wjp> s/failling/failing/.. sheesh, I really can't type straight tonight
[19:59:28] <Colourless> i haven't looked
[20:05:07] <Colourless> doesn't appear to be any obvious differences
[20:06:49] <Colourless> really, i can't tell anything
[20:07:48] <wjp> for the last screenshot you posted it looks like the error can be undone, right?
[20:07:53] <wjp> (shift the waveform down)
[20:08:02] <Colourless> well yes
[20:08:18] <wjp> any obvious transformation that would do that for some of the other broken frames?
[20:09:28] <Colourless> no, not really
[20:09:42] <Colourless> most of it is entierly too random
[20:13:01] <wjp> you said you seperated the frames, right?
[20:13:13] <wjp> could you send me a (still compressed) broken frame?
[20:13:19] <Colourless> yeah
[20:13:49] <Colourless> it will be in a .snc file
[20:13:54] <Colourless> just a single frame
[20:14:00] <wjp> ok
[20:14:14] <Colourless> actually i'll send you a few
[20:14:36] * wjp should get some decent audio-editing tools sometime
[20:14:36] <Colourless> some will be ok, others broken
[20:15:29] <Colourless> opps, that is not what i wanted to do :-)
[20:16:37] * wjp that seems to have thoroughly confused xchat :-)
[20:16:50] --> Cless has joined #Exult
[20:16:51] <-- Colourless has left IRC (Read error: 104 (Connection reset by peer))
[20:16:57] --- Cless is now known as Colourless
[20:17:04] --- ChanServ gives channel operator status to Colourless
[20:17:08] <Colourless> sorry :-)
[20:17:21] <wjp> np :-)
[20:17:22] <Colourless> tell me when you want me send again
[20:17:34] <-- wjp has left IRC ("[x]chat")
[20:17:40] --> wjp has joined #exult
[20:17:40] --- ChanServ gives channel operator status to wjp
[20:17:49] <wjp> now?
[20:17:51] <wjp> :-)
[20:18:27] <wjp> strange, it isn't registering
[20:18:49] <wjp> it is showing a local IP for you, though (192.168.x.y)
[20:19:28] --> Cless has joined #Exult
[20:20:49] <Colourless> what ip does it show for the other me?
[20:21:20] <wjp>
[20:21:33] <Colourless> hmm, and still not working
[20:21:58] <-- Cless has left IRC (Client Quit)
[20:22:00] <wjp> I do get a dcc message from you, but it doesn't trigger, or something
[20:22:22] <Colourless> it keeps saying here, waiting to respond
[20:22:36] <Colourless> i'm now uploading it
[20:22:48] * wjp checks dcc settings
[20:23:06] <wjp> seems ok
[20:23:31] <Colourless> sometimes firewalls cause issues
[20:23:59] <wjp> I am behind a MASQing firewall, but DCC receive never caused problems before
[20:24:01] <Colourless> and nat routing
[20:24:25] <Colourless> http://www.users.on.net/triforce/24.zip :-)
[20:24:41] <Colourless> normally i don't have problems either... but with some people i do
[20:24:42] <wjp> thx
[20:25:05] <Colourless> that should be all the files that were part of the first wave i showed you
[20:25:41] <Colourless> wave 5 is quite bad, 10 is terrible, and 12 is bad
[20:26:47] <Colourless> 6 isn't too good either
[20:29:45] <Colourless> Dungeon Siege Gone Gold... looks like all those ultima remakes may soon actually have some real done :-)
[20:35:09] <wjp> :-)
[20:36:04] <Colourless> hmm, missed out a word there somewhere... add in a 'work' between real and done
[20:36:20] <wjp> hehe, I completely missed that :-)
[20:38:08] <Colourless> so how did you find the sound decompressor code in the u8 exe?
[20:39:18] <wjp> well, after I found it I found an easier way to find it: there's a "copyright speech compression" string in the code segment over there
[20:39:59] <wjp> I actually found it by tracing back references to the "sound/sonarc.c" string near the end
[20:40:12] <Colourless> cause if there is an easy way to determine the offset of the dcmp8 function.... a really really nasty hack could be done
[20:40:49] <wjp> it's code segment 75 by IDA's numbering. There's only one function in there that's called from outside the segment
[20:41:27] <Colourless> what is it?
[20:41:35] <Colourless> any idea?
[20:42:01] <Colourless> the reason i bring this up is, we 'could' load the u8.exe file into memory and then pass the offset of the function to a 'call' opcode to use the function. it *should* work... i think...
[20:42:55] <wjp> u8.exe also contains a list of function names near the end of the binary, btw. It contains dcmp8
[20:43:23] <Colourless> yeah I know that
[20:49:00] --> Valliant has joined #Exult
[20:49:08] <Valliant> Hi all.
[20:49:09] <wjp> hi
[20:49:16] <Colourless> hi
[20:49:24] <Valliant> Having fun?
[20:49:41] <Colourless> no, not at all
[20:49:45] <Valliant> Oh?
[20:51:04] <Valliant> I've been wondering how to use GTK+ :-/
[20:51:23] <Colourless> i can't help you with that
[20:51:59] * Valliant feels inclined to point out his new posts on the forum on thread "Usecoding..."
[20:52:07] <Valliant> :-)
[20:52:21] * wjp feels the sudden urge to read the forum
[20:52:46] * Colourless agress. it's oddly magnetic
[20:53:10] * Valliant raises an eyebrow
[20:53:47] <wjp> what exactly are you planning to write in the near future?
[20:54:34] <Valliant> The IPack front is largely done .. just need to implement the event handling for clicks etc...
[20:54:45] <Valliant> The Uscode developer is my next big plan.
[20:55:37] * Valliant notices he typoed all over one of his posts
[20:55:50] <wjp> I've been planning to do a usecode debugger part of exult studio for a while, now. I have two weeks of vacation now, so I might actually start working on it this weekend :-)
[20:56:06] <wjp> scratch that first ", now"...
[20:56:08] <Colourless> us forum moderators can hide our typos :-)
[20:56:17] * wjp 's typing isn't all that great tonight, either
[20:56:44] <wjp> stepping through usecode should be fun :-)
[20:57:52] <Colourless> should?? what's this should??? haven't you done such things countless times before and you *know* that it IS the the pinnacle of entertainment
[20:58:03] <wjp> well, yes :-)
[20:58:26] * Valliant quirks a brow
[20:58:26] <wjp> but that was using gdb, not our own special usecode debugger ;-)
[20:58:40] * Valliant has his own debugger going
[20:58:56] <Valliant> Not that such matters :-)
[20:59:10] <wjp> well, from what you mentioned on the forum it's a different kind of debugger
[20:59:44] * Valliant starts reading up on GTK+
[20:59:51] <wjp> what's a "mem register check" ?
[21:00:18] <Valliant> The concept of the whole thing is to be like the dev studio for usecode
[21:00:32] <Colourless> wjp: in regards to what?
[21:00:44] <wjp> Colourless: Valliant used that term in one of his posts
[21:00:52] <wjp> eek, dev studio? isn't that overdoing things?
[21:00:59] * Valliant chuckles
[21:01:11] <Valliant> Not for me. I have a tenancy to aim high.
[21:01:23] <wjp> there's really no need for an actual editing environment, IMHO
[21:01:45] <wjp> just something to watch the current state of the interpreter and step through it should be plenty
[21:01:57] * Valliant shrugs
[21:02:09] <Colourless> maybe he want edit and continue ;-)
[21:02:22] <Valliant> I have the core code for a code intepreter
[21:03:08] <wjp> "code interpreter"? what do you mean exactly?
[21:03:30] <Valliant> Design time correction/syntax highlighting/that kind of stuff
[21:03:38] <wjp> neat
[21:04:02] <wjp> not too dependent on actual current syntax/semantics, I hope?
[21:04:23] <Valliant> No, I'm making it for the core usecoding as of now
[21:04:54] <Valliant> Until UCC is at the point it's syntax and sematics are at the point they wont be monkeyed with much
[21:05:55] * Valliant mulls over the possiblities of developing his own schematics
[21:07:30] <Valliant> Hmm
[21:07:57] <wjp> well, if you feel like hacking up the .yy, .ll files... :-)
[21:08:21] <Valliant> If I provided the developer in DLL format, could someone implement that into ExultStudio?
[21:08:39] <Valliant> Im not too familiar with how you've coded ExultStudio.
[21:08:44] <Colourless> well, dll is only going to work in windiws wright
[21:08:46] <wjp> .dll is kind of windowsy...
[21:08:50] <Valliant> That, and I'm programming Pascal :-)
[21:10:03] * Valliant knows Pascal is portable, but isn't sure how he'd integrate that with C++ on other platforms
[21:10:21] * Valliant would prefer to use Pascal unless he absolutely can't
[21:10:56] <wjp> hm
[21:11:08] <wjp> not sure how to integrate it either
[21:11:31] <wjp> I guess you should just be able to link the object files together, if the pascal compiler produces "normal" object files
[21:11:48] <wjp> and of course you'd need some qualifier in your C function headers
[21:11:49] <Colourless> integrating a dll in windows is 'easy' but that wont work for everyone else
[21:12:00] <Valliant> .obj? It should, im using Delphi.
[21:12:14] <Colourless> they need to be coff objects afaik
[21:12:18] <wjp> that's the windows case :-)
[21:12:32] * wjp wonders if kylix can compile it
[21:12:52] <Valliant> SHould be able to .. its (quote enquote) "pure" Pascal
[21:13:05] <wjp> didn't you mention a GUI?
[21:13:43] <wjp> I'm not sure if Kylix supports the Delphi VCL directly
[21:14:00] <Valliant> By "pure" I meant im supplying my own functions
[21:14:33] <wjp> hm?
[21:14:36] <wjp> what functions?
[21:14:47] <Valliant> Not relying on the Delphi functions.
[21:14:59] <wjp> but you do have a gui?
[21:15:13] <Valliant> Until some enlightened soul tells me how to use glade :-/
[21:15:20] <wjp> or did I misunderstand about that?
[21:15:46] <Valliant> I plan to use Glade, but I've no idea *how*
[21:15:50] <Colourless> i would imagine that it might be better to use c/c++... but that is just me
[21:16:17] * wjp switched over from Delphi to C++ after switching to Linux
[21:16:48] * Valliant has about a five year gap in experience between C++ and Pascal
[21:17:49] <wjp> adding pascal to the exult source tree is going to add a lot of build dependencies :-(
[21:19:02] * Valliant searches Borland site for a crossplatform Delphi library
[21:19:07] * Valliant drowns in links
[21:19:12] <wjp> :-)
[21:20:53] <Valliant> Build dependancies shouldn't be too bad in Win32 .. Im not sure about Linux though
[21:21:40] <Colourless> you are foiling jeffs master plan
[21:21:49] <wjp> possibly worse on windows. You can't expect people to have delphi, so you'll need a different pascal compiler there too
[21:21:50] <Valliant> Lookit the links here: http://www.borland.com/delphi/resources/deltools.html
[21:21:54] <Valliant> Try not to drown
[21:22:30] * Valliant thinks Linux should be fine, but has no basis for this conclusion but his intuition
[21:24:01] <Valliant> Well,
[21:24:10] <Valliant> If I really had to, I could asm code it
[21:24:23] * Valliant would really prefer to maintain his sanity, though
[21:24:31] <wjp> hehe, I don't think that would be quite necessary :-)
[21:24:39] <Colourless> fingolfin would hate you :-)
[21:25:26] <wjp> unless you want to write x86, PPC, SPARC, MIPS, and who knows what simultaneously? ;-)
[21:25:28] <Fingolfin> I already do, no worries
[21:25:38] <wjp> Fingolfin: hi :-)
[21:25:40] <Fingolfin> <g>
[21:25:41] * Valliant probably wouldn't use that as a last resort
[21:25:52] * Fingolfin only heard his name, and now drops back to his meeting
[21:26:29] <Valliant> Wjp: Theres free pascal compiles for Win32
[21:26:45] * wjp is going to make some people hate him too, by committing a one letter fix to exceptions.h... *evil grin*
[21:26:50] <wjp> Valliant: I know
[21:27:23] <Colourless> wjp: i don't hate you. such a change will only take up about 2 minutes of my time :-)
[21:27:36] <Valliant> Borland made their personal edition available on their site, too
[21:27:41] <wjp> bah, shot myself in the foot again :-)
[21:28:45] <Valliant> Kylix should compile mine though. I'll test that though
[21:31:39] * Valliant wonders where he could find info on Glade
[21:31:48] <Fingolfin> you guys stay cool, or *I* will update our legal headers... one by one... with my broken OS 9 CVS tools...
[21:32:39] <wjp> hmm, good point
[21:32:46] * wjp updates legal header on exceptions.h too
[21:34:37] --> ShadwChsr has joined #Exult
[21:34:45] * Valliant ponders on the interesting life programmers lead
[21:36:05] --> Dark-Star has joined #exult
[21:36:12] <Colourless> hi
[21:36:13] <wjp> hi, and hi
[21:36:16] <Colourless> and hi
[21:36:24] <Dark-Star> hi and hi back ;-)
[21:36:32] <Colourless> Valliant don't mock us
[21:36:56] <wjp> indeed; we're perfectly capable of mocking us ourselves ;-)
[21:37:15] <Colourless> intentionally, or unintentionally
[21:38:05] <wjp> hm, how would you call an element of a call stack?
[21:38:19] <wjp> something like a stack frame?
[21:38:32] <wjp> although it isn't really a stack frame, in the usecode case...
[21:39:29] <Dark-Star> How about CallEntry? CallStackEntry? ;-)
[21:39:43] <Colourless> frame is the correct term that's used for functions
[21:40:44] <wjp> I guess it would be the clearest term to use, even if it may not technically be correct. (we don't store return address or locals on the stack or anything)
[21:41:01] <Valliant> ...
[21:41:24] <wjp> ...?
[21:41:34] * Valliant gets lost somewheres in the conversation
[21:41:39] <Colourless> ??
[21:41:40] <-- ShadwChsr has left IRC (Read error: 104 (Connection reset by peer))
[21:41:49] <wjp> happens to me all the time :-), that's quite normal here ;-)
[21:42:19] <wjp> some/most of us can have strange senses of humour at times :-)
[21:42:25] * Valliant grins feebly
[21:42:34] <Colourless> you see, normally there aren't any conversations at all. so a conversation existing is just likely to confuse onlookers
[21:42:47] <Dark-Star> I've found another "localization" issue...
[21:43:08] <Colourless> why do you only give us 'bad' news
[21:43:28] <Colourless> :-)
[21:43:37] <Dark-Star> sorry about that ;-) but how should strings in the source code be handled? There are some hardcoded strings in schedules.cc for example...
[21:44:04] <Dark-Star> for example in the "serve meal" schedule
[21:44:19] <Valliant> Hmm
[21:44:25] <wjp> hm, are those in text.flx?
[21:44:26] <Valliant> Hardcoding is bad.
[21:44:30] <Colourless> there is probably text in text.flx
[21:44:35] <Colourless> which we aren't using
[21:44:57] <wjp> most of the schedules do use text from text.flx, right?
[21:45:15] <wjp> if they use text at all, that is
[21:45:32] <Valliant> Where are the book strings contained?
[21:45:40] <wjp> usecode
[21:45:46] * Valliant grunts
[21:45:50] <Valliant> I knew that much ...
[21:45:52] <Valliant> I mean
[21:45:55] <Valliant> Where in Usecode
[21:46:09] <wjp> in the data segments of the usecode functions for books?
[21:46:12] <Colourless> they are in various usecode functions
[21:46:23] <Colourless> all over the place :-)
[21:46:42] <wjp> in SI: 0x282, 0x2C1, 0x62A, 0x638, 0x63B
[21:46:55] <wjp> in BG: 0x282, 0x2C1, 0x638
[21:46:59] <wjp> or something like that, anyway
[21:50:12] <wjp> brb
[21:50:38] * Valliant tries to look as if he has a chance of editing books
[21:50:51] <Valliant> Can I just add a new book anywheres?
[21:51:27] <Colourless> no. the way book are handled is very odd
[21:52:01] <Dark-Star> for the eat_at_inn_schedule the strings "gulp" etc. are in text.flx (number 1061-1063)
[21:52:35] <Dark-Star> so there should be no need for hardcoding these
[21:52:47] * Valliant wonders if he can use usecode/text.flx to specify specific strings for differenct characters
[21:53:37] <Colourless> Dark-Star: yeah
[21:54:45] <wjp> b
[21:55:28] <Colourless> time for me to go
[21:55:39] <Dark-Star> bye
[21:56:05] <wjp> g'night
[21:56:18] <Valliant> See yeah
[21:56:25] <-- Colourless has left IRC ("it's not night anymore wjp")
[21:56:34] <wjp> hehe :-)
[21:56:35] <Dark-Star> The strings 1170-1172 seem to have something to do with eating too
[21:56:44] <Valliant> Mail me at fugitiveofthelaw@hotmail.com regarding the Usecode dev. project
[21:56:48] <Valliant> If you have ideas
[21:56:56] <wjp> are you subscribed to the ML?
[21:57:06] <Valliant> No
[21:57:22] * Valliant will do that
[21:59:48] <Valliant> One question: Anyone possibly want a search for usecode functions?\
[22:00:03] <wjp> text search?
[22:00:17] <Valliant> That could work.
[22:00:31] <wjp> what kind of search do you mean, btw?
[22:00:50] <Valliant> As in, for a specific funtion, instead of memorizing numbers.
[22:00:51] <wjp> I usually open the full disassembly in emacs if I want to look at it
[22:00:52] * Valliant grins
[22:01:26] <Valliant> Searching for a function that does a specific thing is a wish-list thing though. :-)
[22:01:38] <wjp> anything which would make it easier to navigate through the hundreds of functions would be nice, I guess
[22:02:02] <Valliant> Of course, that would be no replacement for the ability to name functions.
[22:02:13] <wjp> pity the english U7 usecode wasn't compiled with debugging info :-(
[22:02:36] <wjp> (the usecode of the spanish SI _is_ compiled with debug info :-) )
[22:02:44] * Valliant adds a new item to wish-list: ability to compile with debug info
[22:02:51] <wjp> (ie. there's function names, variable names and line numbers in there)
[22:02:58] <Valliant> !!!
[22:03:11] <wjp> only problem is is that it's without Silver Seed, and Silver Seed really overhauls the usecode
[22:03:18] * Valliant found a crossplatform library for Pascal/Kylix
[22:03:33] <Valliant> http://sourceforge.net/projects/jedi-sdl/
[22:03:42] <wjp> ah, that one sounds familiar
[22:03:54] <wjp> must've read an announce on the SDL ML about it sometime
[22:04:41] * Valliant 's little life is that much better now
[22:04:44] <Dark-Star> btw should I submit a bug report because of these hardcoded strings?
[22:04:53] * Valliant ponders
[22:04:55] <wjp> Dark-Star: yeah, I think that would be best
[22:05:07] * Valliant nods in agreement
[22:05:34] <wjp> Dark-Star: if you've already found some strings in text.flx to replace them with, could you also list the numbers in the bug report?
[22:06:15] <Valliant> It would help
[22:06:20] <Dark-Star> ok I'll see what I can find
[22:06:46] <Valliant> wjp: who would I look to for possibly implementing with ExultStudio?
[22:07:15] <wjp> Jeff is doing practically all the work on ExultStudio these days
[22:07:37] * Valliant will contact jeff then
[22:07:50] <wjp> if you mail it to the ML, someone else might have an idea too
[22:09:26] * Valliant will do
[22:12:16] <Valliant> Any ideas on how to pass strings directly to UCC for compile?
[22:12:44] <wjp> it should listen on stdin if you run it without arguments, I think
[22:13:31] * wjp checks
[22:13:40] <wjp> yes, you can just pipe things into it
[22:13:47] <Valliant> stdin ...
[22:13:56] * Valliant wonders how to implement that in Pascal
[22:14:02] * Valliant has an idea, jots down
[22:15:14] * Valliant curses, realizes he won't be able to use his encryption between the two
[22:15:26] <wjp> encryption?
[22:16:15] <Valliant> I use encryption to protect my data withing app/in saved files.
[22:16:26] <Valliant> Almost always.
[22:17:01] <Valliant> So ...
[22:17:04] * Valliant ponders
[22:17:23] <Valliant> What do you think the priority should be in developing my Usecode bit?
[22:17:49] <wjp> that's really your own decision
[22:18:33] <wjp> if you like working on it, work on it. If you don't, don't. One of the benifits of being a volunteer on something :-)
[22:18:44] <wjp> s/benifits/benefits/
[22:19:18] * Valliant aims to please
[22:21:26] <wjp> how were you planning to handle the actual debugging, btw?
[22:21:47] <wjp> s/were/are/
[22:21:55] <Valliant> :-)
[22:22:03] <wjp> ugh... I should get some sleep... my english is going downhill fast :-)
[22:22:41] <Fingolfin> lol
[22:22:54] <wjp> (it's still a bit too early for bed, though :-) )
[22:23:35] <Valliant> Where you from, btw?
[22:23:40] <Valliant> Im Canadian :-)
[22:23:41] <wjp> the Netherlands
[22:24:13] <Valliant> Cool
[22:24:41] * Valliant thinks he'll do the program-UCC interfacing first
[22:25:07] <Valliant> Anyone have ideas how to do stdin with Pascal? Ive never had to do that before. :-)
[22:25:29] <wjp> I'll probably rewrite part of the usecode interpreter to be able to propely handle breakpoints and inspecting the call stack and all that
[22:25:40] <wjp> s/propely/properly/... *sigh*
[22:25:54] * Valliant knows what you meant
[22:26:06] <wjp> I've never done much with pipes, I'm afraid
[22:26:18] <Valliant> Inspecting the call stack would be the debugger(?)
[22:26:30] <wjp> I'd be spending 90% of my time in manpages if I had to do it in C, let alone Pascal :-(
[22:26:38] * wjp nods
[22:27:01] <wjp> currently the call stack is hidden by recursive calls to Usecode_machine::run()
[22:27:07] <Fingolfin> wjp: usecode debugge sounds pretty cool, btw =)
[22:27:40] <wjp> pity it's too late to be really useful for the reverse engineering part :-)
[22:27:57] <Valliant> I'll do the debugger *AFTER* I get the interface to the UCC going
[22:28:03] <Valliant> :-)
[22:28:31] <Fingolfin> http://www.communityseed.org/html/untitled.html
[22:28:32] <wjp> I'm working on the behind-the-scenes part of the debugger for now, so we shouldn't be doing duplicate work for a while
[22:28:34] <Dark-Star> Valliant: Under DOS you had to write "Program (input,output)" to be able to use piping... maybe that helps...
[22:29:08] <Dark-Star> and I think you had to do a "assign(input,"CON:"); reset(input);" but I'm not sure
[22:29:24] <Valliant> WJP: Im only going insofar as debugging the script as we send it.
[22:29:48] <wjp> Valliant: ah, ok. I misunderstood, then
[22:30:00] <Valliant> So we don't send invalid data.
[22:30:04] * wjp nods
[22:30:14] <Valliant> Runttime debugging would be nice though.
[22:30:16] <wjp> always useful. Exult tends to crash on invalid usecode, at the moment :-(
[22:31:20] <wjp> ...which is another thing we should clean up when we/you/someone start(s) producing custom usecode
[22:31:59] <Valliant> Well, if this takes off with me programming like the IPACK front end did, we'll be seeing lots of custom usecode
[22:32:17] <wjp> *grin*; good :-)
[22:32:26] <Valliant> Giridion will be using it, if nothing else
[22:34:42] <wjp> hmm, weird. Why are the Usecode_function*'s stored in 16 vectors? For speed? Shouldn't a std::map be faster, then?
[22:36:30] * wjp wonders what the complexity of std::vector operations is
[22:36:44] <Valliant> https://sourceforge.net/projects/u7giridion/ <-- Giridion page
[22:36:56] * wjp bookmarks that
[22:37:48] * Valliant oopses on the programming language category; fixes
[22:37:51] * wjp wonders where you'd find complexities of STL methods in the first place
[22:38:05] <wjp> Programming Language: usecode
[22:38:06] <wjp> ;-)
[22:40:27] * Valliant wonders why SSH keeps saying the project cvs shell doesn't exist
[22:41:29] <wjp> what's the exact error message?
[22:41:57] <Valliant> Says directory doesn't exist
[22:42:36] <wjp> what are you trying to do, exactly?
[22:42:59] <Valliant> Reach the cvs directory
[22:43:10] <wjp> you don't have any CVS modules currently, btw
[22:43:11] <Dark-Star> I'll be leaving now, trying to install NetBSD on my server...
[22:43:13] <Dark-Star> bye
[22:43:16] <wjp> bye
[22:43:33] <Valliant> cya
[22:43:35] <-- Dark-Star has left IRC ("using sirc version 2.211+KSIRC/1.1")
[22:43:48] <wjp> oh, and SF doesn't let you have shell access on the CVS server, if that's what you mean
[22:43:58] * Valliant begins wondering how to add a module when he cant get to the cvs
[22:44:33] <wjp> you need the "import" command for that
[22:44:46] * Valliant starts getting confused
[22:45:09] <Fingolfin> "cvs import" is usually used to create CVS modules, aye, even in a local repository
[22:46:23] <wjp> "import" creates a new module from a directory on your local harddisk
[22:46:41] <wjp> this directory can be empty of already filled with project files
[22:46:46] <wjp> s/of/or/
[22:46:46] <Valliant> Whats the syntax?
[22:46:50] <wjp> command line?
[22:47:02] <wjp> cvs -d:ext:...... import ... uhh...
[22:47:07] * wjp checks infopages
[22:47:13] <wjp> (I always forget that one)
[22:47:32] <Fingolfin> http://cvsbook.red-bean.com/
[22:47:44] <Fingolfin> -> read that, it has a good tutorial, and good explanations of everyrhing
[22:47:47] <Fingolfin> everything even
[22:48:58] <wjp> go to the directory you want to import into CVS, and use: cvs -d:ext:..... -m "initial import" modulename vendortag releasetag
[22:49:29] <wjp> modulename would probably be 'giridion', releasetag something like 'start'
[22:49:43] <wjp> I never figured out what vendortag should do/mean/be
[22:53:36] <Valliant> brb
[23:13:35] * wjp is getting gtk-related compile errors
[23:14:22] * Valliant yawns and blinks
[23:14:47] * Valliant goes back to usign his Code Complete "handbook" as a pillow
[23:38:00] <-- Valliant has left IRC ("riding off into the sunset")
[23:39:44] --> Dominus has joined #exult
[23:39:57] --- ChanServ gives channel operator status to Dominus
[23:39:57] <wjp> hi
[23:40:00] <Dominus> hi again
[23:40:22] <Dominus> seems you haven't figured the sfx issues out yet :-(
[23:40:40] <wjp> we gave up for now :/
[23:40:51] <Dominus> *sniff
[23:40:59] <wjp> kind of frustrating, though, being so close...
[23:41:12] <Dominus> yeah
[23:53:14] * Darke blinkblinks and realises that he's managed to fall asleep with his irc client still logged in. "Umm... 'morning'? <grin>"
[23:53:29] <wjp> morning :-)
[23:53:52] <Dominus> it's close to the time where exultbot starts a new page aka late at night
[23:53:55] <Dominus> :-9
[23:54:46] <Darke> wjp: The 'complexities of stl methods' tend to be found in either the specs or C++ programming texts. <grin> What exactly do you want to know? I should have a theoretical list of them at paw.
[23:55:29] <wjp> well, I was basically wondering why we store the Usecode_function*'s in 16 separate std::vector's, instead of a single container
[23:56:11] <wjp> (the first 256 are in funs[0], 256-511 in funs[1], etc...)
[23:56:19] <wjp> kind of pointless, IMHO
[23:56:50] <wjp> the only operation you perform on it is lookups
[23:59:31] <Darke> <nod> Does funs[0][0x9f] the point to usecode function 0x9f? Or is there a 'find' function that runs through with a linear search or something?
[23:59:51] <wjp> the former, as far as I can tell