00:43:47 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
01:29:33 -!- puzzlet_ has quit (Remote closed the connection).
01:29:35 -!- puzzlet has joined.
01:50:47 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
01:52:57 -!- Sgep has quit (Remote closed the connection).
01:53:32 -!- puzzlet has joined.
02:18:22 -!- Arrogant has joined.
02:45:20 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
02:49:16 -!- calamari has joined.
02:50:10 -!- hamako has joined.
03:01:52 -!- kikko has joined.
03:02:18 -!- kikko has changed nick to MadBrain.
03:04:06 -!- MadBrain has quit (Client Quit).
03:04:42 -!- mad has joined.
03:07:01 <mad> uh, -> http://esoteric.voxelperfect.net/wiki/Object_disoriented
03:07:38 <kipple> hi mad, and welcome :)
03:07:51 <kipple> I just saw your lang on the wiki
03:08:00 <kipple> in fact I just edited the article a bit :)
03:08:29 <mad> It probably needs a bit polishing, no?
03:08:51 <kipple> some simple code examples would be nice
03:09:19 <kipple> it's a bit hard to understand now (or maybe I'm dense)
03:09:54 <mad> hmm, there's an untested brainfuck interpreter linked at the bottom... but you're right, it could definitely use something like a hello world
03:10:18 <kipple> I've seen the bf-interpreter, but it is not exactly easy to comprehend :P
03:10:50 <calamari> "untested" and "bf interpreter" usually don't go well together :)
03:11:16 <calamari> bf is simple but there are many oppotunities for error
03:11:21 <mad> basically, the lang's main selling point is that everything is encapsulated, so you can only access at most 5 variables at the same time
03:12:05 <mad> calmari: Right, I bet it probably has some bugs and doesn't work... but it's always a good test to know if your lang is turing complete, no?
03:13:52 <kipple> mad: I don't see how you can do even simple arithmetics with this language...
03:14:08 <mad> An important data structure it uses is a stack
03:14:16 <mad> And a pair
03:14:45 <mad> A pair is an object that successively returns object A, then object B, then object A, etc...
03:15:43 <mad> It uses the mpair. class to make a pair with two objects, using currying to read the two parameters
03:16:28 <mad> The stack returns A, then returns B, then returns C, etc... until it runs out and just turns into z (null object)
03:17:23 <mad> For numbers, it uses 8 bit stacks... but you can implement them in many ways :)
03:18:31 <mad> As bits, it uses either z (null object), or an object with a function that just activates the parameter's function
03:19:50 <mad> So if you go fab (use a's function on object b), and a is either '0' or '1', and b is a pair, then, if a is 0, the pair stays the same, but if a is 1, the pair is switched.
03:20:40 <mad> Crazy functional programming :)
03:21:51 <mad> But it would be better with, uh, more OOP parody stuff
03:24:17 <mad> The result is that, since there's so few member data, you have to write interfaces for more or less everything, and that there's many different ways to write those interfaces... which possibly comes not that far from actual OOP
03:26:10 <mad> I think it's halfway between unlambda and other similar really insane languages, and standard imperative stuff... it's actually vaguely usable :)
03:26:58 <kipple> It looks interesting. hopefully the article will become easier to understand :)
03:29:26 <mad> yeah, I have to work on that
03:37:43 <mad> hmm, this hello world isn't very neat...
03:39:46 -!- calamari has quit ("Leaving").
03:48:21 <mad> well... um... that's it :)
03:50:48 <mad> well, about the language
03:55:43 <mad> I wonder if I should add some other stuff to the wiki
03:56:13 <kipple> what do you mean? what other stuff?
03:56:30 <mad> oh, another vaguely similar lang
03:56:47 <kipple> if it's esoteric then go ahead :)
03:57:02 <mad> functional too, more low level
03:57:07 <Robdgreat> pardon my ignorance; I just got back
03:57:38 -!- puzzlet has joined.
03:58:11 <mad> the one I've just talked about? Something I've just posted to the wiki, "Object disoriented" ( http://esoteric.voxelperfect.net/wiki/Object_disoriented )
03:58:39 <mad> It's a new lang, I guess
04:01:05 <mad> nasty stuff, yeah
04:07:48 -!- Arrogant has quit ("Chatzilla 0.9.68.5.1 [Firefox 1.5/undefined]").
04:12:19 -!- GregorR[notHome] has changed nick to GregorR.
04:14:45 <mad> It possibly has a member variable too much, but I think it's nasty enough.
04:17:06 * GregorR is glad nobody can ever claim his prize of /first/ object oriented esolang :)
04:21:24 <GregorR> What program for GNU/Linux should I package with OBLISK next ...?
04:23:12 <mad> Ah, no, I can't claim that... but can I claim the first functional object oriented esolang? :)
04:23:53 <GregorR> Hmmm, I guess so, if that phrase can be proven to me not completely meaningless ;)
04:25:46 <mad> Well, I'm not sure, but the esolang I've come up with does seem to have a pretty important functional flavour.
04:26:17 <mad> You have to do stuff like currying and recursion
04:27:05 <GregorR> "Since there's no looping statement, recursion must be used." < Hahah, same with ORK :)
04:27:47 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
04:33:40 -!- puzzlet has joined.
04:38:56 <GregorR> Mmmmmm, flesh of the innocent.
04:40:00 <mad> gregor: Any suggestions you'd make?
04:41:11 <GregorR> I haven't taken a detailed look, but as LORD OF OO ESOLANGS I will.
04:41:19 <GregorR> And will get back to you ;)
04:53:38 <mad> data encapsulation is the best feature of oop to use in tarpits :)
04:54:05 <mad> imho, of course
05:00:31 -!- hamako has quit.
05:17:52 -!- kipple has quit (Read error: 110 (Connection timed out)).
05:39:17 -!- mad has quit ("Christians believe Jesus can save your soul; atheists believe Hungry Man TV dinners are a quick and easy dinner solution for ).
07:26:17 -!- CXI has joined.
07:39:04 -!- puzzlet_ has joined.
07:41:00 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:46:14 -!- cmeme has quit ("Client terminated by server").
11:11:52 -!- Gs30ng has quit (Read error: 104 (Connection reset by peer)).
12:21:32 -!- puzzlet_ has quit (Remote closed the connection).
12:21:38 -!- puzzlet has joined.
12:37:16 -!- jix has joined.
12:50:12 -!- kipple has joined.
13:38:04 -!- puzzlet has quit (Remote closed the connection).
13:38:06 -!- puzzlet has joined.
16:57:02 -!- cmeme has joined.
16:57:29 -!- cmeme has quit (Remote closed the connection).
16:58:03 -!- cmeme has joined.
16:58:10 -!- cmeme has quit (Remote closed the connection).
16:58:44 -!- cmeme has joined.
16:58:51 -!- cmeme has quit (Remote closed the connection).
16:59:25 -!- cmeme has joined.
16:59:32 -!- cmeme has quit (Remote closed the connection).
17:00:07 -!- cmeme has joined.
17:00:13 -!- cmeme has quit (Remote closed the connection).
17:00:48 -!- cmeme has joined.
17:00:55 -!- cmeme has quit (Remote closed the connection).
17:01:29 -!- cmeme has joined.
17:01:35 -!- cmeme has quit (Remote closed the connection).
17:02:18 -!- cmeme has joined.
17:02:18 -!- cmeme has quit (Remote closed the connection).
17:02:51 -!- cmeme has joined.
17:02:57 -!- cmeme has quit (Remote closed the connection).
17:03:32 -!- cmeme has joined.
17:03:38 -!- cmeme has quit (Remote closed the connection).
17:04:13 -!- cmeme has joined.
17:04:20 -!- cmeme has quit (Remote closed the connection).
17:04:54 -!- cmeme has joined.
17:05:00 -!- cmeme has quit (Remote closed the connection).
17:05:35 -!- cmeme has joined.
17:05:42 -!- cmeme has quit (Remote closed the connection).
17:06:16 -!- cmeme has joined.
17:06:23 -!- cmeme has quit (Remote closed the connection).
17:06:57 -!- cmeme has joined.
17:07:04 -!- cmeme has quit (Remote closed the connection).
17:07:39 -!- cmeme has joined.
17:07:45 -!- cmeme has quit (Remote closed the connection).
17:08:20 -!- cmeme has joined.
17:08:26 -!- cmeme has quit (Remote closed the connection).
17:09:01 -!- cmeme has joined.
17:09:09 -!- cmeme has quit (Broken pipe).
17:09:42 -!- cmeme has joined.
17:09:48 -!- cmeme has quit (Remote closed the connection).
17:10:23 -!- cmeme has joined.
17:10:29 -!- cmeme has quit (Remote closed the connection).
17:11:04 -!- cmeme has joined.
17:11:11 -!- cmeme has quit (Remote closed the connection).
17:11:45 -!- cmeme has joined.
17:11:52 -!- cmeme has quit (Remote closed the connection).
17:12:27 -!- cmeme has joined.
17:12:33 -!- cmeme has quit (Remote closed the connection).
17:13:08 -!- cmeme has joined.
17:13:14 -!- cmeme has quit (Remote closed the connection).
17:13:49 -!- cmeme has joined.
17:13:56 -!- cmeme has quit (Remote closed the connection).
17:14:30 -!- cmeme has joined.
17:14:37 -!- cmeme has quit (Remote closed the connection).
17:15:11 -!- cmeme has joined.
17:15:18 -!- cmeme has quit (Remote closed the connection).
17:15:37 <kipple> can't someone kick cmeme?
17:15:53 -!- cmeme has joined.
17:15:59 -!- cmeme has quit (Remote closed the connection).
17:16:34 -!- cmeme has joined.
17:16:40 -!- cmeme has quit (Remote closed the connection).
17:17:15 -!- cmeme has joined.
17:17:21 -!- cmeme has quit (Remote closed the connection).
17:17:56 -!- cmeme has joined.
17:18:02 -!- cmeme has quit (Remote closed the connection).
17:18:37 -!- cmeme has joined.
17:18:43 -!- cmeme has quit (Remote closed the connection).
17:19:03 -!- MadBrain2 has joined.
17:19:10 <jix> ban not kick
17:19:18 -!- cmeme has joined.
17:19:25 -!- cmeme has quit (Remote closed the connection).
17:19:59 -!- cmeme has joined.
17:20:07 -!- cmeme has quit (Remote closed the connection).
17:20:41 -!- cmeme has joined.
17:20:48 -!- cmeme has quit (Remote closed the connection).
17:24:31 -!- cmeme has joined.
17:24:58 -!- cmeme has quit (Remote closed the connection).
17:25:32 -!- cmeme has joined.
18:16:11 -!- MadBrain2 has quit ("Christians believe Jesus can save your soul; atheists believe Hungry Man TV dinners are a quick and easy dinner solution for ).
18:29:44 -!- Keymaker has joined.
18:36:13 <Keymaker> anyways; anyone good with unknown file formats? i mean, there's one old game i'd like to modify, but there are no modding tools for it.. :)
18:36:26 <Keymaker> anyone good inspecting and realizing file formats?
18:36:48 <Keymaker> http://www.bluemoon.ee/history/skyroads/
19:02:54 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
19:22:35 -!- CXII has joined.
19:22:35 * GregorR hasn't had a Moxie in weeks.
19:23:19 -!- CXI has quit (Connection timed out).
19:24:17 <kipple> keymaker: I've almost no experience with figuring out file formats, but I guess it's a bit like esoteric programming ;)
19:24:39 <Keymaker> yeah, although a lot more difficult :)
19:25:10 <Keymaker> perhaps i'll try to figure the format out on my own, someday..
19:25:32 <kipple> what kind of files do you want to mod?
19:25:50 <kipple> are they very complex?
19:26:05 <Keymaker> so the format should be discoverable
19:26:38 <Keymaker> the full version is free and legal to download
19:26:39 <Keymaker> http://www.bluemoon.ee/history/skyroads/
19:26:53 <Keymaker> (that is the site of the team that made the game)
19:27:06 <kipple> looks old. does it require dosbox or something?
19:27:21 <Keymaker> it does if you don't have windows or dos :)
19:27:38 <Keymaker> it's pretty good game, i think
19:28:01 <Keymaker> as well, there is some demo version of it (that i haven't tried), and some x-mas version with new levels and graphics
19:28:06 <Keymaker> so that means i can compare the files
19:28:25 <Keymaker> and that might help to discover the formats
19:31:31 <kipple> yeah the levels look simple enough
19:31:44 <kipple> there seem to be 3 levels per file
19:32:34 <Keymaker> at least i remember so, because i switched some once
19:32:56 <kipple> trekdat.lzs might be the file (?)
19:33:23 <Keymaker> or in the worst case both combined in some bizarre way
19:37:19 <Keymaker> it's annoying how every old game has the files packed in some strange format
19:38:47 <kipple> both the worldN.lzs files and cars.lzs has the same header: "CMAPR". trekdat.lzs and roads.lzs does not
19:39:19 <kipple> guess you just have to try and change some bytes and see what happens
19:39:25 <Keymaker> cars.lzs is probably the graphics
19:39:36 <Keymaker> oh, i think i know where the tracks are, now
19:39:44 <Keymaker> i compared the full and the demo;
19:39:58 <Keymaker> trekdat is equally sized in both of them
19:40:05 <Keymaker> so that probably means there is some other stuff than tracks
19:40:36 * kipple thinks it's probably easier to rewrite entire game than to reverse engineer the track files...
19:41:06 <kipple> well, then it's probably only a 17k file to decipher :) not too bad
19:41:32 <Keymaker> you see, rewriting would be pointless
19:41:38 <Keymaker> the point is to modify the ORIGINAL game!
19:42:18 <Keymaker> as well, the muzax.lzs is equally sized in both versions
19:42:19 <kipple> with 30 tracks that means only about 560 bytes of data per track.
19:42:46 <Keymaker> could it be a music file or something?
19:43:04 <Keymaker> in the best case the game uses some big array, and every level data is equal size
19:43:13 <Keymaker> but i have a bad feeling it won't get that easy
19:43:40 <kipple> there are hardly any 0s in roads.lzs
19:43:56 <Keymaker> and the full x-mas version has the same amount of levels, but the file size is different
19:44:50 * kipple lacks a decent hex editor for windows
19:45:07 <Keymaker> it's pretty decent, and totally free
19:45:26 -!- calamari has joined.
19:47:08 <Keymaker> only thing in this game that sucks is the sounds
19:47:13 <Keymaker> but i hope those can be changed later, too :D
19:47:51 <kipple> the sound didn't work for me
19:48:33 <Keymaker> the music i haven't heard, since that doesn't work normally and haven't tried dosbox
19:49:00 <Keymaker> anyways, i'd say we are almost done, only thing we need to is decipher the level format, we at least know where the data is located!
19:49:32 <Keymaker> when that's done i'll make a level editor and small site for it..
19:50:50 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
19:51:33 <kipple> a theory: the first word in the file tells how many bytes of level data the first has.
19:52:28 <kipple> that is perhaps not much, but the first level is rather simple
19:52:30 <Keymaker> it's most probably 2 byte integer
19:53:05 <kipple> after the first word and another 124 bytes the next word is 130
19:54:28 <kipple> could be a pattern, but maybe not....
19:54:35 <Keymaker> but after that, it doesn't make sense anymore
19:55:08 <Keymaker> it can be for example amount of "objects" in the level
19:55:54 <Keymaker> as well, probably in this file there is also stored some level settings;
19:56:07 <Keymaker> like how fast the fuel burns in the level
19:56:12 <Keymaker> or what kind of gravity there is
19:56:34 <Keymaker> (if you play it long enough, you'll see)
19:58:34 <kipple> have you tried changing it?
20:05:45 <calamari> nice game.. was just playing it in qemu :)
20:06:16 <Keymaker> nice that you like it :) and, hmmm, i changed data quite randomly in the beginning of the file, but see no difference in game..
20:09:11 <Keymaker> but i don't think so, still :)
20:09:46 <Keymaker> the colour changed to black and the game crashed when i opened the level!
20:09:57 <Keymaker> the terrain looked black, and then it crashed
20:12:59 <Keymaker> another good news is that the size of tracks isn't hard coded anywhere in the exe or something
20:13:38 <Keymaker> oh, and it's now 100% sure roads.lzs is the right file; i replaced it with the x-mas edition track file and it worked just perfectly
20:13:58 <Keymaker> so, it seems the level sizes and stuff are defined in the track file itself
20:15:58 <Keymaker> and when i switched the x-mas version demo tracks to the original full, it still works!
20:16:32 <Keymaker> and if you try to load the levels that don't exist in the demo (levels > 6), it reads null to the level and acts strange
20:17:10 -!- Sgep has joined.
20:19:42 <Keymaker> when it loads the null level, the gravity-o-meter (or something) shows 2100, so that must be some constant in the game
20:48:20 -!- CXII has changed nick to CXI.
20:55:05 -!- Keymaker has left (?).
21:30:03 -!- jix has joined.
22:04:44 -!- madbrain has joined.
22:20:59 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:41:05 <madbrain> http://esoteric.voxelperfect.net/wiki/Object_disoriented#Examples <- Wrote a couple of easy examples for object disoriented
22:54:31 <kipple> ha! is that the easiest way to do Hello World? :D
22:56:25 <madbrain> The easiest way is just to do a bunch of oz and o(equivalent to 1) statements
22:57:32 <kipple> well congratulations on making a truly low-level OO-language :)
22:59:28 <kipple> I'm struggling to understand the cat example....
23:00:48 <madbrain> Yeah, haven't written an implementation yet
23:01:27 <GregorR> Ah, well then I guess EgoBot isn't going to support it any time soon :P
23:03:16 <madbrain> I'll possibly need help on the recursion-optimisation-so-that-the-stack-doesn't-explode.. from those functional programming gurus
23:04:20 <kipple> OK, I think I get the cat example :)
23:06:21 <madbrain> mostly I wonder if there's some more or less automatic of doing it, or if that would require solving some impossible problems and it's better just to optimise all the "usable"
23:47:28 <calamari> if I understand correctly, the halting problem only applies to undecidable languages, right? because all decidable languages either accept or reject
23:49:21 <calamari> are there any languages that by their syntax allow any decidable program to be written, but not undecidable? or is that impossible to enforce for the halting problem?
23:50:22 <calamari> I can imagine a string of if statements with no loops.. but I'm not sure that can handle every decidable language
23:51:57 <madbrain> The halting problem is more complex than that... basically, you have a program, which might terminate or have an infinite loop. There is no program that can differentiate for any program ever whether it terminates or not, without either going into an infinite loop for some programs, or simply don't decide for some programs
23:52:36 <calamari> well, that's a function of the language syntax
23:52:47 <calamari> if there are no loops, the program WILL terminate
23:53:19 <calamari> well, I'm consdidering the case where there aren't loops
23:53:21 <madbrain> How do you determine whether these will terminate or not?
23:53:32 <calamari> can that handle all decidable languages?
23:54:19 <madbrain> I'm not sure what were decidable languages...
23:54:33 <madbrain> They're a subclass of turing complete languages?
23:54:33 <calamari> perhaps I need to review the definition.. afk to look it up
23:56:55 <cpressey_> calamari: yes, the halting problem only applies to undecidable languages... in fact, that's what the word "undecidable" basically means: that you can't construct a program that can decide if another program will halt or not
23:57:14 -!- cpressey_ has changed nick to cpressey.
23:57:51 <madbrain> So the problem is to know whether recursive function stack optimisation is decidable or not?
23:58:14 <calamari> Chris: so I'm curious what a language that accepts only deciders would look like
23:58:43 <calamari> Chris: or does that no make sense? hehe it's hard for me to put this in the correct wording
23:59:26 <calamari> basically a language that doesn't have the halting problem and I can write deciders in
23:59:55 <cpressey> take a turing machine and prove that it always halts.