< 1132012809 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic.. I guess I < 1132012839 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic.. I guess I need a universal turing machine - minus the udeciable part, don't I :) < 1132012853 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :just because the halting problem says that, in general, you can't decide whether a TM halts or not, doesn't mean that you can't work it out for a specific TM... < 1132012856 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :udeciable -> undecidable < 1132012901 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I think I'm still grappling for the correct term < 1132012905 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :for example: < 1132012929 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I can create a language that computes for all finite state machines and never halts < 1132012951 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I can create a language that computes for all pushdown automata and never halts < 1132012970 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Can I create a language that computes for all deciders and never halts? < 1132012996 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :the answer should be yes, if I understand correctly < 1132013003 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :i don't know what you mean by "a language that computes for all Xs" < 1132013017 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh < 1132013038 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I mean that I can create a programming language where any possible finite state machine is understood and computed < 1132013057 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so given the syntax, I can type in my fsm and run it < 1132013067 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ok. < 1132013078 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :so a language for fsm's, easy enough < 1132013098 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :but < 1132013104 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so the next step is a language for pda's.. no problem either < 1132013105 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean by "and never halts"? < 1132013137 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :or did you mean "and always halts"? < 1132013148 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so there is a lnaguage for turing complete languages, for exampel bf.. but it can halt.. so I want to back up one step < 1132013181 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ok, i think i can guess at what you're asking < 1132013196 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so a program run in this language would never halt.. but it would be a decider and not just a pda < 1132013218 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :but first i'm pretty sure you're typing "never halt" when you mean "always halt" :) < 1132013227 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :deciders always halt. < 1132013242 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :fsm's alwyays halt. (for finite input strings, anyway) < 1132013318 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :you're right.. I want the language to always halt < 1132013394 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :it just seems like there is a missing machine between the universal pda and universal tm, I'd call it the universal decider < 1132013399 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ok, so... say you have a language for describing deciders... will it always halt? yes, because deciders always halt. HOWEVER - the problem is - how is it that your language only describes deciders? how do you know that you can't accidentally describe a Turing machine in your language? that's the hard part. < 1132013418 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah hehe < 1132013424 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :it's probably not impossible though < 1132013426 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :and yeah < 1132013434 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :there are several "missing" languages < 1132013458 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :it disturbs me slightly that deterministic and non-deterministic PDA's accept different languages < 1132013488 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :right, the deterministic pda is also glossed over .. but still more powerful than a fsm < 1132013546 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so I guess the question is, is it possible to construct a universal decider? < 1132013651 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Machines_that_always_halt < 1132013656 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :well... what exactly do you mean by "universal" in this context? i wasn't aware that there was a "universal" PDA < 1132013685 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's my fault < 1132013751 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :It should be possible to make a programming language that takes any arbitrary pda and computes it.. < 1132013755 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :well... ok, i guess there sort of is, in the weak sense that all context-free languages are equivalent to balanced parentheses... if you ignore the details... but that's sort of unsatisfying < 1132013770 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :yeah, ok < 1132013777 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :a language-for-describing-pda's < 1132013782 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :right < 1132013782 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :sort of a meta-language < 1132013795 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so I need a language-for-describing-deciders < 1132013802 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :but, could that meta-language be processed by a PDA, itself? < 1132013803 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well want, not need :) < 1132013827 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic.. universal doesn't work there :) < 1132013845 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1132013849 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i don't think it does < 1132013863 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :easier to think about for fsm's though < 1132013879 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that wiki page I think answers it < 1132013881 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :would be hard to imagine a language-for-describing-fsm's that could itself be described by an fsm < 1132013888 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :In practice, a machine that always halts can be implemented as a programming language with restricted flow control instructions, so that no program (i.e. description) will ever cause the machine to enter an infinite loop. Note that this does not imply that the language is free of looping capabilities ? all we require is that such loops be finite < 1132013907 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :right < 1132013928 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so basically my if statement language is right.. because that's just a loop unrolling < 1132013930 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :calamari: check out the book that's referenced on that wiki article, if you can < 1132013957 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :which < 1132013989 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I have the Sipser book < 1132014011 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I don't have Brainerd, W.S., Landweber, L.H. (1974), Theory of Computation < 1132014020 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if that's what you mean < 1132014060 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :what i mean is: check your local math library :) it's not actually a very good book, but they explain what they mean by PL-{GOTO} better than the wiki article does < 1132014111 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I guess you don't mean the Sipser book, because it doesn't mention PL-GOTO :) < 1132014125 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :oh, sorry < 1132014139 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :i guess more references were added to that page since i last looked at at < 1132014149 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's okay, I whittled it down :) < 1132014149 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i meant brainerd & landweber. < 1132014176 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :do you own the book? < 1132014197 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :no, i just have it on loan < 1132014208 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :indefinate loan, so long as i keep remembering to renew it online :) < 1132014211 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh.. does it describe lambda calculus? < 1132014220 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :hm, not sure. one sec < 1132014288 0 :puzzlet!n=puzzlet@61.247.146.9 JOIN :#esoteric < 1132014307 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :cool, university has it < 1132014431 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ok.... looks like the last chapter talks a little about lambda calc, but, the chapter is really about combinatory logic (SKI calculus) so it looks mostly incidental < 1132014452 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1132014478 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :looks like I can buy it from amazon.com for 55 cents :) < 1132014485 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :thanks for looking that up < 1132014513 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :55 cents?!?? < 1132014517 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :no problem :) < 1132014570 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I don't think I can go wrong for that price.. snagging it < 1132014678 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :yup, 55 cents... wild. < 1132015451 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :calamari: btw, you might be interested in this: for one of my classes we get to do a project where we do some static analysis of Java code... I was thinking of doing some sort of halting analysis... basically, for each method of an object, determine if it is guaranteed to always halt :) < 1132015784 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :which class? they mentioned static analysis in my computer engineering class < 1132015804 0 :zerozero!n=a@60-234-144-135.bitstream.orcon.net.nz JOIN :#esoteric < 1132015939 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :"definition of programming languages" < 1132015974 0 :zerozero!unknown@unknown.invalid QUIT :Client Quit < 1132016016 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :which is actually a pretty cool course overall. i thought it would be easy, but i've actually learned quite a bit < 1132016074 0 :CXI!unknown@unknown.invalid QUIT :Connection timed out < 1132017539 0 :CXI!i=Sanity@dialup-199.89.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1132018573 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :heh, i'm taking a course called that < 1132018645 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :you're not in my university are you? < 1132018662 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :static analysis of java code is the project we're doing as well... < 1132018865 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :you better not turn out to be fromD my uni, cause then i'd have to buy you a beer or something. < 1132020348 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :heh. < 1132020368 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :lament: does the name "Spotty Dotty" mean anything to you? < 1132020375 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :cpressey: jesus christ < 1132020381 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :hahahaha < 1132020388 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i never suspected! < 1132020390 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :you must not read the names of the posters on webct :) < 1132020402 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i never went there < 1132020410 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i can't say i particularly care about that course < 1132020429 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :anyway, i'm the guy who sits in the front row and showed up in a mask for hallDoween < 1132020516 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i suspected - since your name isn't exactly common < 1132020663 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :anyway, i must go now - see you tomorrow i guess... bizarre < 1132020748 0 :cpressey!unknown@unknown.invalid PRIVMSG #esoteric :ok, cya tomorrow :) bizarre, indeed. < 1132027100 0 :Robdgreat!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1132027713 0 :Sgep!unknown@unknown.invalid QUIT : < 1132029928 0 :Arrogant!n=chatzill@217.orlando-06-08rs.fl.dial-access.att.net JOIN :#esoteric < 1132029971 0 :Arrogant!unknown@unknown.invalid QUIT :Client Quit < 1132030050 0 :Arrogant!n=chatzill@217.orlando-06-08rs.fl.dial-access.att.net JOIN :#esoteric < 1132030341 0 :madbrain!unknown@unknown.invalid QUIT :"Christians believe Jesus can save your soul; atheists believe Hungry Man TV dinners are a quick and easy dinner solution for < 1132031385 0 :kipple!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1132031709 0 :Arrogant!unknown@unknown.invalid QUIT :"Chatzilla 0.9.68.5.1 [Firefox 1.5/undefined]" < 1132031741 0 :Arrogant!i=Arrogant@217.orlando-06-08rs.fl.dial-access.att.net JOIN :#esoteric < 1132032767 0 :Keymaker!n=nobody@wire74.adsl.netsonic.fi JOIN :#esoteric < 1132032860 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :whoaly sh!t.. does this mean lament and cpressey are in the same university?! < 1132032873 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :and the same class < 1132032881 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :woah! < 1132032892 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :what are the odds for that happening? < 1132032929 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well, I dunno.. maybe people in candaa are crazier than the rest of the world.. might skew the stats ;) < 1132032938 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :`:) < 1132032943 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :awesome < 1132033142 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :"Maybe"? < 1132033150 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Don't you mean "It is a statistically proven fact that" < 1132033233 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION suggests that GregorR read the book "How to lie with statistics" < 1132033282 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1132033346 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: http://www.jhuapl.edu/newscenter/pressreleases/2005/051109.asp < 1132033356 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yes, I've heard of the book. < 1132033361 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :(Don't know if that's what that link is though :P) < 1132033372 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1132033389 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Oooh, cool. < 1132033634 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm, back to the skyroads :) < 1132033994 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :*yawn* < 1132035292 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1132035928 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :dum dum dum < 1132036010 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah you are HAHAHAHAHAH < 1132036013 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1132036021 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1132036154 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :You walked into that brick wall ;) < 1132036168 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1132036178 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :I'm not stupid! I'm neuron challenged! < 1132036282 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ha! discovered some new things from roads.lzs! :D gotta go to skool now. :/ < 1132036285 0 :Keymaker!unknown@unknown.invalid PART #esoteric :? < 1132040368 0 :Arrogant!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1132041599 0 :clog!unknown@unknown.invalid QUIT :ended < 1132041600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1132041997 0 :Keymaker!n=nobody@wire74.adsl.netsonic.fi JOIN :#esoteric < 1132042299 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(back for four hours.. :)) < 1132050566 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :gotta go, need food. < 1132050567 0 :Keymaker!unknown@unknown.invalid PART #esoteric :? < 1132062150 0 :Keymaker!n=nobody@wire74.adsl.netsonic.fi JOIN :#esoteric < 1132062581 0 :kipple!n=kipple@168.80-202-98.nextgentel.com JOIN :#esoteric < 1132062585 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :kipple! < 1132062590 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1132062613 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :ho < 1132062634 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :now i know where in the file the level data is read from < 1132062660 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :good question... < 1132062667 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i said i know :) < 1132062669 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :what have you found out so far? < 1132062672 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :aha < 1132062674 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1132062678 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :sorry. I misread < 1132062681 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132062701 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :now != how ;) < 1132062735 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) in every level data piece there's the variables for how fast o2 goes down etc.. < 1132062743 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but the actual level format is still bizarre < 1132062750 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i've tried changing things but it's just crazy < 1132062764 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i've managed to change colours < 1132062783 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i have no idea how the level pieces are formed, and how the coordinates are set < 1132062822 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :once i changed only two bytes a bit, and the whole level got very strange < 1132062832 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :so i have no idea how the blocks are placed < 1132063072 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :well, I guess you just have to try more... < 1132063100 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i will < 1132063122 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :actually at the moment i'm in hex editor.. < 1132063216 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm, it crashed.. < 1132063270 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1132063312 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i suppose the format needs to be correct.. x) < 1132063734 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :trekdat sounds like trackdata, so i suppose there's something vital inside, but i'd assume it's the 3d models < 1132063814 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :seen this: http://skystreets.kaosfusion.com/ ? < 1132063848 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah. the "clone" sucks, and the author hasn't discovered any files except sounds < 1132063859 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and iirc he doesn't tell the format on the page either < 1132063871 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :too bad < 1132063887 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1132063977 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :well the source code is available, so if you need to mod the sounds you could look at those < 1132064000 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah, although iirc the clone had own sounds, not the original ones < 1132064036 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :by the way, just discovered muzax.lzs is really the music file, and not any game related < 1132064059 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i renamed the file and started the game, and when toggled the music on it crashed, since couldn't find the music file < 1132064087 0 :jix!i=jix@F30d5.f.strato-dslnet.de JOIN :#esoteric < 1132064339 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i really hope they don't have any bizarre compression of their own.. < 1132064865 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :trekdat seems to be exactly same in the different versions < 1132064870 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks heaven < 1132064893 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :that means that the level data should be entirely in roads.lzs < 1132065129 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :.lzs lz is often lempel-ziv (compression (but there are different lz variants) < 1132065130 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :) < 1132065181 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1132065185 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :cheers < 1132065230 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :could you send me the roads.lzs file? < 1132065294 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :http://www.bluemoon.ee/history/skyroads/skyroads.zip < 1132065397 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm, this is interesting -- it says on some page that Lempel-Ziv(-Welch) is a popular data compression often used in images < 1132065417 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :it could make sense that the level data would be pictures, instead < 1132065423 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :or dunno < 1132065455 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :yeah lzw is used in gif < 1132065462 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132065465 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :lz77 is used in zip and gzip (in combination with huffman) < 1132065471 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and in png < 1132065486 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :lzw was patented until april05 lz77 was always patent-free < 1132065496 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :that's why png uses lz77 instead of lzw < 1132065514 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok :) i don't know much about compression.. < 1132065543 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :a lot of the lzs files share the same header CMAPr, but some don't so there is at least two different file formats I think < 1132065566 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah, all that have those are images in the game < 1132065596 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :too all the files use the same extension for some reason < 1132065609 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :anyway, it was pretty common to use the same extension on all data files regardless of format in the old days (perhaps now too) < 1132065610 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :maybe they are all compressed with lzs, whatever it is < 1132065617 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1132065624 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i know, but it's annoying :) < 1132065633 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :I doubt the extension says anything at all, but it's worth checking out I guess < 1132065650 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah, but why would they use lzs? < 1132065653 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't make any sense < 1132065659 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :the game is called skyroads < 1132065682 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :maybe 0x10 0x00 0x00 0x00 is a little-endian adress (byte 13) < 1132065701 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :in which file? < 1132065706 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :HELPMENU.LZS < 1132065719 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :no idea < 1132065722 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :idea! cmap == color map it contains the pallette data... PICT == picture data, contains the picture < 1132065723 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :I doubt they use 32bit ints < 1132065735 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm! < 1132065753 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :good idea < 1132065756 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :really good < 1132065765 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :let's see.. < 1132065779 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and the space between CMAP and PICT are 51 bytes thats 17 3 byte pairs < 1132065786 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :whoops < 1132065788 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1132065793 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132065822 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :there's only ten ways to find that out, and i'll try the first: hex editoring the file < 1132065830 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :I think you're on to something there. but it doesn't help for the levels < 1132065843 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :nope, but i want to change graphics too :D < 1132065910 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :jix is right! yes! < 1132065955 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i changed the first 3F 3F 3F of helpmenu to 3F 00 00 (red), and texts that were white show up red now < 1132066276 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :cool :) < 1132066339 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i don't know what format it is, or how to conver it to some other format, but i know one thing: one image file can have more than one image. the helpfile has the two help screens inside it < 1132066885 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :it's very probable the roads.lzs uses that lzw (or something) compression < 1132066943 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :there probably are track pieces that are just connected to each other < 1132067077 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :I think it's a bit unlikely that they've compressed the level data. the levels are so simple that compressing wouldn't save that much space. And decompressing is expensive on old computers < 1132067089 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1132067110 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but there's some compression in almost every game < 1132067115 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :including the old ones < 1132067319 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and there got to be something in this, too. for example, each row can have stuff on 3 level, on 7 places. that's 21 per row. and if one level has for example 100 rows, and three bytes for rgb value, that'd make 6300 bytes. even more if the stuff would be represented as integers. and the demo roads.lzs is 4k and has six tracks :) < 1132067455 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :that is only if they're stored as "tiles". they could be areas < 1132067475 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1132067501 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :and they don't need 3 bytes for color. only one < 1132067506 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but that'd probably mean trekdat is filled with different areas, that all of the versions use < 1132067534 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :but there are colours that use three bytes, in the roads < 1132067546 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean? < 1132067547 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :for example, i just today changed couple of them to pink, white etc.. < 1132067573 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :there definitely is colours in rgb form, in roads.lzs < 1132067640 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :the video mode is MCGA I think, which only handles 256 colors (at teh same time) < 1132067652 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :so there is probably a palette defined somewhere < 1132067664 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :but maybe I'm wrong < 1132067678 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmmm, the colours can be from 0 0 0 to 63 63 63 in this one < 1132067698 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and i have no idea how it works.. :\ < 1132067722 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :if one sets values larger than 3F (63) the colours go strange < 1132067738 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :perhaps the palette has only defined 63 colors... < 1132067745 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :64 I mean :) < 1132067748 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1132067796 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :if that is the case, then color info could possibly be stored in 6 bit integers < 1132067831 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yes, but i think they wouldn't try to save space that much :) < 1132067841 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :don't be too sure of that < 1132067865 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Standard VGA only has 6 bits of color for each channel. < 1132067872 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1132067894 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :we might be on to something... :) < 1132067898 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1132067999 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :IIRC the palette control registers take values between 0x00 - 0x3f, too, although can't be sure of that - it's been ages since I last wrote anything that accessed hardware directly. :p < 1132068017 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1132068065 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :grrh. i wish this format can be discovered some day.. < 1132068104 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :naturally we could read the exe in assembler.. and try to find out what it does.. :) < 1132068109 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :*disassembler < 1132068148 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :..but it's not that easy job.. < 1132069044 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i wish i'd get the original level editor they used.. < 1132072208 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I've been disassembling it with ida-pro a bit, but it's still a.. mess: http://gehennom.org/~fis/skyroads-graph.png But at least I've located the fopen/fread-like functions. Next I should figure out what the routines that use those do. < 1132072247 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'd like to get a linux version of that thing, though - using wine is a pain. < 1132072376 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Although I think the linux version lacks the rather usable GUI. < 1132072468 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :cool! < 1132072493 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Now I need to go grocery-shopping. -> < 1132072495 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :try dosbox < 1132072503 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :when you're back < 1132072510 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :dosbox.sourceforge.net < 1132072530 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :or did you mean linux version of that program? probably.. :\ < 1132072822 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :anyways, hopefuly you'll discover something, every piece of info is required! :) < 1132073055 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I have an unverified guess that the first 128 bytes of ROADS.LZS is a header of some sort. It's too symmetric to be anything else: < 1132073058 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :fis@colin:~/tmp/skyroads$ hexdump -n 128 -x ROADS.LZS < 1132073060 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000000 007c 08c0 02cb 0302 0432 064a 064c 0348 < 1132073063 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000010 07af 0524 096b 06e4 0b42 02a0 0c9e 0348 < 1132073066 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000020 0e10 05cc 101a 03d4 117c 046e 1332 0ae2 < 1132073068 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000030 15b9 08f8 17aa 0620 1a02 0cf6 1dc2 0afe < 1132073076 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000040 21b4 077e 23d2 085e 25f9 08ea 282c 080a < 1132073076 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000050 29ef 0a2c 2c6a 071c 2e86 08c0 30d5 0c40 < 1132073076 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000060 342a 048a 35ea 0834 37c0 0a72 3a91 0914 < 1132073080 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :0000070 3c66 0ccc 3ea7 0770 40c4 0af0 0008 0082 < 1132073144 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Note that for even columns, the higher byte seems to always be <0x10, and in odd columns it's ~0x00-0x40 and the numbers are monotonically increasing. < 1132073168 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Right, the shop. -> < 1132073185 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it's a header < 1132073194 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :re < 1132073194 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :i've discovered that, i'll upload my notes soon < 1132073365 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i'm going to reverse engineer the picture files < 1132073371 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :cool! < 1132073379 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :that'd be awesome < 1132073392 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :and that without a x86 cpu! < 1132073397 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :(or emulator) < 1132073401 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1132073441 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :jix: if you can, document everything! :) < 1132073455 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :i'm going to do that < 1132073460 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132073724 0 :calamari!n=calamari@ip68-105-130-108.tc.ph.cox.net JOIN :#esoteric < 1132075377 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: here's my notes about the header http://koti.mbnet.fi/yiap/skyroads/roads.txt < 1132075387 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :here's an ugly site for this project: http://koti.mbnet.fi/yiap/skyroads/ < 1132075479 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notes, INT 10h, AX=1010h, Set Individual DAC Register..  < 1132075496 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's what sets rgb 0-63 < 1132075521 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :where? < 1132075528 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :(in which file, i mean) < 1132075532 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I should also note that quickbasic had the same 0-63 limitations.. so that's mildly scary ;) < 1132075549 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: that's in my book, pc interrupts < 1132075560 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132075575 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Keymaker: you can also look it up online, http://www.ctyme.com/rbrown.htm < 1132075687 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :the executable doesn't appear to be compressed < 1132075782 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :uses pupses and pops for function calls < 1132075792 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :pupses -> pushes < 1132075812 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1132075844 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :definitely not compiled quickbasic < 1132075860 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I know what that looks like < 1132075885 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ok.. time for class < 1132075887 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1132075888 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132075911 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :and, it's most probably done in c or pascal, i'd guess.. may be assembler too < 1132076120 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is so glad he has long hair. < 1132076129 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION never needs to buy a scarf. < 1132076149 0 :mtve2!i=mtve@mtve.vm.jvds.com JOIN :#esoteric < 1132076188 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hah :) < 1132076215 0 :mtve!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1132076591 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Or earmuffs for that matter. < 1132076870 0 :marcan_!n=marcanso@160.10.7.147 JOIN :#esoteric < 1132077373 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't much look like compiled C either. A lot of functions pass parameters in registers, although some do use the stack too. < 1132077391 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, noticed that link about the header? < 1132077402 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1132077406 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :o-k < 1132077429 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'll continue digging around the disassembled exe when I have some free time. Must eat, and then there's some work to do. < 1132077450 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1132077452 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It could very well have been written in ASM ... I mean, this is DOS ... < 1132077457 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :thanks for the help! < 1132077472 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :yes, could be < 1132077484 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :the game is quite old, and it's 3d < 1132078131 0 :marcan!unknown@unknown.invalid QUIT :Connection timed out < 1132080777 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :well, gotta go. < 1132080809 0 :Keymaker!unknown@unknown.invalid PART #esoteric :? < 1132082506 0 :calamari!n=jeffryj@lilly.csoft.net JOIN :#esoteric < 1132082509 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1132082618 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :after I logged off I realized I said it wrong.. the function is the one pushing and popping, to protect the registers at call < 1132082636 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :anyhow.. next class in a few mins ;) < 1132082639 0 :calamari!unknown@unknown.invalid QUIT :Client Quit < 1132083852 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1132084145 0 :Aardwolf!n=neusring@kotnet-145.kulnet.kuleuven.be JOIN :#esoteric < 1132084687 0 :jix!i=jix@F30d5.f.strato-dslnet.de JOIN :#esoteric < 1132085164 0 :GregorR-L!n=chatzill@host-202-8.pubnet.pdx.edu JOIN :#esoteric < 1132087480 0 :GregorR-L!unknown@unknown.invalid QUIT :"Chatzilla 0.9.68.5 [Firefox 1.0.6/20050716]" < 1132087723 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1132089812 0 :Sgep!n=sgeo@ool-182e9882.dyn.optonline.net JOIN :#esoteric < 1132096181 0 :madbrain!n=madbrain@modemcable211.193-200-24.mc.videotron.ca JOIN :#esoteric