# # Configuration file for JoelTris IX # # Copyright (C) 1992,97 Joel Yliluoma - Bisqwit!ircnet # You can email me at bisqwit@iki.fi # This program is freeware. # Specify COM port setting in range of 1..3 for external player. Port=1 # Initial settings for player 1 Field1X=0 # Value range is 0 to 79-((Field1XSize+2)*2) Field1Y=2 # Value range is 0 to 25 Field1XSize=12 # Value range is 6 to 38 Field1YSize=21 # Value range is 6 to 24 # EvilBlocks setting varies in range -255..255. # Setting it to 255 makes your game as easy as possible. # Setting it to -255 gives you always the block you don't want. # For fair game, set it to zero, for both players. # One more note for EvilBlocks setting: When positive, it tries # to find best possible block for game of SINGLE lines. # Negative setting works fine, I have tested. # I am not so sure about positive. # Viel„ yksi huomautus. Kun k„yt„t suuria arvoja EvilBlocks- # kohdassa, esimerkiksi 255, niin JOS peli ei anna haluamaasi # palikkaa seuraavan kolmen sis„ll„, niin ei ole odotettavaa # ett„ saisit sen muuten kuin sattumalta joskus monen minuutin # kuluttua. # Lis„t„„n t„h„n viel„ se, ett„ jos peli p„„tt„„ antaa sinulle # jonkin palikan etk„ laita sit„ siihen mihin se sen on suunnitellut, # se antaa saman palikan uudelleen niin kauan kunnes "vihdoinkin # ymm„rr„t mit„ se tahtoo". :) EvilBlocks1=0 # Initial settings for player 2 Field2X=52 Field2Y=2 Field2XSize=12 Field2YSize=21 EvilBlocks2=0 # Initial settings for the background fractal # Huomaa, fraktaalin y-koordinaatit liikkuvat # aluella 0..49, vaikka n„yt”n korkeus onkin vain 25 rivi„. # DisableFractalin arvo FALSE poistaa taustan kokonaan, TRUE # asentaa fraktaalin k„ytt””n, muu asetus avaa kyseisen nimisen # ANSI-kuvan taustaksi. Jos k„yt„t ANSI-kuvaa, pit„„ # DisableFractal -asetus tulla Fract koordinaattien j„lkeen. FractX1=0 FractY1=0 FractX2=79 FractY2=49 #DisableFractal=jt9b.ans DisableFractal=TRUE # Set CoolWipeLines to TRUE for TETRIS 2 compatibility, # FALSE for faster game. # Do not add comments to the end of CoolWipeLines setting line. CoolWipeLines=TRUE # Block removal names BlockRemoval=SINGLE,DOUBLE,TRIPLE,TETRIS,PENTA,MIRACLE # Set this to TRUE if you want to prevent accidental # block drops at top line OopsShield=FALSE # Taustan attribuutti. # Kaksi suositeltavinta on $0020 ja $04FA. # Ylempi tavu kertoo v„rin, alempi kertoo k„ytett„v„n merkin. # Žl„ k„yt„ attribuuttina 8:aa! # Aseta $7FFF jos haluat l„pin„kyv„n. # Vilkkuvia taustoja ei sallita, joten suurin sallittu arvo on $7FFF. # Ei ole suositeltavampaa pist„„ taustav„ri„ muuksi kuin 0:ksi, # jos t„ytemerkki on tyhj„ (0,$20 tai $FF). T„m„ siit„ syyst„ ett„ # palikoiden n„kyvyyden suhteen voi tulla ongelmia. #Blank=$7FFF Blank=$04FA # InitialBlockSize is 4 for normally. # Samples of blocks for different sizes (font codepage 850): # 4 ÜÛß ÛÜÜ ÜÛÜ # Ü Ü # 5 ÛÛÜ ÜÜÛ ßÛß # ÜÜ ÜÜ # 6 ÜÛß ÛÛ # For comformtable game, don't set values outside ranges 4..5. # The biggest value accepted by game is 36. InitialBlockSize=4 # InitialSpeed value specifies, as you can't guess, the delay # of the game. This means, bigger value causes slower game. # Setting value 0 or 1 here is not a good idea. # Good value for Pentium 90MHz is 50 to 100. InitialSpeed=100 # BlockColour specifies colours of blocks. # 0 = Normal. Colour is random of 1,2,3,4,6,7,9,10,11,12 and 14. # 8 = Causes cash bug. Don't use! (Known bug, I'm not going to fix.) # 16= It's ugly; you probably test this only once. # Every piece of block is random of the colours of BlockColour=0. # 0,1,2,3,4,5,6,7,9,10= The color. BlockColour=0 # BlockDetail specifies detail level of blocks. # 0 = Normal. Just simple blocks. # 1 = Horizontal detail, looks quite nice. # 2 = Vertical detail, doesn't look so nice. # 3 = Both details, ugly indeed. BlockDetail=0 # The rest settings are flow code. # Don't modify if you don't know what are you doing. # All flow code procedures begin with colon (':') # IMPORTANT NOTE: TAB IS NOT THE SAME AS SPACE. # Another note for programmers, ELSE is not implemented. # Third note: All errors and unexcepted words are omitted without warning. # # Parameters of some functions # # TRAP # TRAP=Start timer # # LETt # LET=Put value to integer variable # # I = # Put value to integer variable # # I = RAND # Put a random value between min and max to integer variable # # IFxTRAP # IFTRAP=If time limit has not been reached # IFNTRAP=If time limit has been reached # # IFx ... # IFE=If equal to any of these # IFA=If var is above than value # IFB=If var is below than value # IFNA=If var is not above than value # IFNB=If var is not below than value # # IF # IF=If nonzero # # GET # GET reads character from terminal. # If no character in buffer, then # this will wait until there is. # # RETVAL # RETVAL Sets the return value of function. # It does not exit the function. # value can be any number in range 0..65535 # value can also be a KB_constant # value can also be 'I' + number of intvarnum to return # for example I5 to return contents of integer variable 5. # the following KB_constants are defined in JOELTRI9.PAS: # KB_NOKEY = $0000 # KB_UP = $4800 # KB_DOWN = $5000 # KB_LEFT = $4B00 # KB_RIGHT = $4D00 # KB_DROP = $3920 # KB_ESC = $011B # # IFxHIT # IFNHIT=If no key has been pressed since last GET # IFHIT=If there is something to GET # # KeyProc routine is the keyboard handler routine. # If you have any ideas, you can add on more # terminal emulations. :KeyProc RetVal KB_NOKEY ;If no key pressed, then ;check some timeouts IFNHIT IF 1 IFNTrap 1 250 I1 = 0 IFA 2 0 IFNTrap 1 250 I2 = 0 RetVal KB_ESC Exit ;Read key from keyboard Get 3 ;Second byte of ansi code starting with esc. IFE 2 1 IFE 3 '[' I2 = 2 Trap 1 Exit ;The third byte of ansi code. IFE 2 2 IFTrap 1 500 IFE 3 '0' Exit IFE 3 'A' RetVal KB_UP IFE 3 'B' RetVal KB_DOWN IFE 3 'C' RetVal KB_RIGHT IFE 4 'D' RetVal KB_LEFT I2 = 0 Exit ;Scan code part 2 maybe? IF 1 IFTrap 1 250 IFE 3 'H' RetVal KB_UP IFE 3 'P' RetVal KB_DOWN IFE 3 'K' RetVal KB_LEFT IFE 3 'M' RetVal KB_RIGHT IFE 3 '-' RetVal KB_ESC I1 = 0 Exit ;Start of scan code IFE 3 0 I1 = 1 Trap 1 Exit ;ESC has special meaning. ;It starts ansi codes. But it is ;also the Exit key. IFE 3 27 I2 = 1 Trap 1 Exit ;This can also be a simple key. IFE 3 ' ' 13 10 RetVal KB_DROP IFE 3 ^P ^E '8' RetVal KB_UP IFE 3 ^N ^X '2' RetVal KB_DOWN IFE 3 ^F ^D '6' RetVal KB_RIGHT IFE 3 ^B ^S '4' RetVal KB_LEFT END # Score routine calculates your score. # Incoming to this routine, int variable 0 contains the # amount of cleared lines. # Return value will be tell how much will score be increased. :Score IFE 0 0 I4 = RAND 1 50 IFE 0 1 I4 = 100 IFE 0 2 I4 = 300 IFE 0 3 I4 = 500 IFE 0 4 I4 = 700 IFE 0 5 I4 = 900 IFE 0 6 I4 = 10000 RetVal I4 END